1.0.0 • Published 2 years ago

@wedgekit/relative-date v1.0.0

Weekly downloads
-
License
MIT
Repository
-
Last release
2 years ago

@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>
  )
}