@wedgekit/relative-date
v1.0.0
Published
The relative-date module provides a curried function that returns the relative ISO 8601 date string (YYYY-MM-DD) based on either the calendar date or the fiscal period provided. This is to be used whenever relative-date is to be used. Within Agility, rela
Downloads
8
Maintainers
Keywords
Readme
@wedgekit/relative-date
The relative-date module provides a curried function that returns the relative ISO 8601 date string (YYYY-MM-DD) based on either the calendar date or the fiscal period provided. This is to be used whenever relative-date is to be used. Within Agility, relative date is meant as a convenience function for the user to quickly pick a certain date for the date picker.
initializeRelativeDate
initializeRelativeDate
is a curried function takes the current and previous fiscal year information (FiscalYear type) as a tuple and returns a function that returns the relative date based on the mode (RelativeDateModes specifies the modes available) passed in. This function will return a date string in the ISO 8601 format.
type InitializeRelativeDate = ([
currentFiscalYear: FiscalYear,
previousFiscalYear: FiscalYear,
]
) => (mode: RelativeDateModes) => string;
type FiscalYear = {
currentPeriod: number;
glYear: number;
periodOpen: boolean[];
periodStartDate: string | undefined[];
yearEndDate: string;
};
Relative date modes
enum relativeDateModes = {
RunDate = 'Run date'
OneDayPriorToRunDate = 'One day prior to run date',
CurrentCalendarMonthFirstDay = 'Current calendar month - first day'
CurrentCalendarMonthLastDay = 'Current calendar month - last day'
CurrentCalendarYearFirstDay = 'Current calendar year - first day'
CurrentCalendarYearLastDay = 'Current calendar year - last day'
PreviousCalendarMonthFirstDay = 'Previous calendar month - first day',
PreviousCalendarMonthLastDay = 'Previous calendar month - last day',
PreviousCalendarYearFirstDay = 'Previous calendar year - first day',
PreviousCalendarYearLastDay = 'Previous calendar year - last day',
CurrentFiscalPeriodFirstDay = 'Current fiscal period - first day'
CurrentFiscalPeriodLastDay = 'Current fiscal period - last day'
CurrentFiscalYearFirstDay = 'Current fiscal year - first day'
CurrentFiscalYearLastDay = 'Current fiscal year - last day'
PreviousFiscalPeriodFirstDay = 'Previous fiscal period - first day',
PreviousFiscalPeriodLastDay = 'Previous fiscal period - last day',
PreviousFiscalYearFirstDay = 'Previous fiscal year - first day',
PreviousFiscalYearLastDay = 'Previous fiscal year - last day',
}
Example
import React, {useState, useMemo} from 'react';
import {useQuery, gql} from '@apollo/client';
import {initializeRelativeDate, relativeDateModes} from '@wedgekit/relative-date'
const RelativeDateExample = () => {
const [relativeDateMode, setRelativeDateMode] = useState(relativeDateModes.RunDate)
const [data] = useQuery(gql`
query GL(
generalLedger {
currentYear {
currentPeriod
glYear
periodOpen
periodStartDate
yearEndDate
}
previousYear {
currentPeriod
glYear
periodOpen
periodStartDate
yearEndDate
}
}
)
`);
const getRelativeDate = initializeRelativeDate([data.generalLedger.currentYear, data.generalLedger.previousYear])
cosnt relativeDateOptions = useMemo(() => {
Object.keys(relativeDateModes).map((mode: string) => (
{
label: mode,
id: mode,
}
))
}, [])
return (
<div>
<WedgekitDate
label="Relative Date"
pattern="00/00/0000"
onChange={() => {}}
value={getRelativedate(relativeDateMode)}
/>
<BasisSelect
label="Relative Date"
value={relativeDateMode}
onChange={setRelativeDateMode}
options={relativeDateOptions}
/>
</div>
)
}