Skip to content

Commit

Permalink
feat: add time part
Browse files Browse the repository at this point in the history
  • Loading branch information
thorkellmani committed Dec 4, 2024
1 parent b9bdb0e commit 1507cab
Show file tree
Hide file tree
Showing 3 changed files with 43 additions and 9 deletions.
8 changes: 8 additions & 0 deletions apps/web/screens/Grants/messages.ts
Original file line number Diff line number Diff line change
Expand Up @@ -64,10 +64,18 @@ export const m = {
id: 'web.grants:search.applicationOpensTo',
defaultMessage: 'Frestur til {arg}',
},
applicationOpensToWithDay: {
id: 'web.grants:search.applicationOpensToWithDay',
defaultMessage: 'Frestur til og með {arg}',
},
applicationWasOpenTo: {
id: 'web.grants:search.applicationWasOpenTo',
defaultMessage: 'Frestur var til {arg}',
},
applicationWasOpenToAndWith: {
id: 'web.grants:search.applicationWasOpenTo',
defaultMessage: 'Frestur var til og með {arg}',
},
applicationAlwaysOpen: {
id: 'web.grants:search.applicationAlwaysOpen',
defaultMessage: 'Opið er allt árið',
Expand Down
27 changes: 20 additions & 7 deletions apps/web/screens/Grants/utils.ts
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@ import localeIS from 'date-fns/locale/is'
import { FormatMessage } from '@island.is/localization'
import { Locale } from '@island.is/shared/types'
import { Grant, GrantStatus } from '@island.is/web/graphql/schema'
import getHours from 'date-fns/getHours'

import { m } from './messages'

Expand All @@ -23,6 +24,8 @@ const formatDate = (
locale: locale === 'is' ? localeIS : localeEn,
})

export const containsTimePart = (date: string) => date.includes('T')

export const parseStatus = (
grant: Grant,
formatMessage: FormatMessage,
Expand All @@ -33,9 +36,14 @@ export const parseStatus = (
return {
applicationStatus: 'closed',
deadlineStatus: grant.dateTo
? formatMessage(m.search.applicationWasOpenTo, {
arg: formatDate(new Date(grant.dateTo), locale),
})
? formatMessage(
containsTimePart(grant.dateTo)
? m.search.applicationWasOpenToAndWith
: m.search.applicationWasOpenTo,
{
arg: formatDate(new Date(grant.dateTo), locale),
},
)
: formatMessage(m.search.applicationClosed),
note: grant.statusText ?? undefined,
}
Expand Down Expand Up @@ -79,10 +87,15 @@ export const parseStatus = (
case GrantStatus.Open: {
return {
applicationStatus: 'open',
deadlineStatus: grant.dateFrom
? formatMessage(m.search.applicationOpensTo, {
arg: formatDate(new Date(grant.dateFrom), locale, 'dd.MMMM.'),
})
deadlineStatus: grant.dateTo
? formatMessage(
containsTimePart(grant.dateTo)
? m.search.applicationOpensToWithDay
: m.search.applicationOpensTo,
{
arg: formatDate(new Date(grant.dateTo), locale, 'dd.MMMM.'),
},
)
: formatMessage(m.search.applicationOpen),
note: grant.statusText ?? undefined,
}
Expand Down
17 changes: 15 additions & 2 deletions libs/cms/src/lib/models/grant.model.ts
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,8 @@ import { Asset, mapAsset } from './asset.model'
import { ReferenceLink, mapReferenceLink } from './referenceLink.model'
import { Fund, mapFund } from './fund.model'
import { isValidDate } from '@island.is/shared/utils'
import addHours from 'date-fns/addHours'
import format from 'date-fns/format'

export enum GrantStatus {
CLOSED,
Expand Down Expand Up @@ -115,8 +117,8 @@ export const mapGrant = ({ fields, sys }: IGrant): Grant => {
applicationHints: fields.grantApplicationHints
? mapDocument(fields.grantApplicationHints, sys.id + ':application-hints')
: [],
dateFrom: fields.grantDateFrom,
dateTo: fields.grantDateTo,
dateFrom: parseDate(fields.grantDateFrom, fields.grantOpenFromHour),
dateTo: parseDate(fields.grantDateTo, fields.grantOpenToHour),
status: parseStatus(fields),
statusText:
GrantStatus.CLOSED_WITH_NOTE || GrantStatus.OPEN_WITH_NOTE
Expand Down Expand Up @@ -169,3 +171,14 @@ const parseStatus = (fields: IGrantFields): GrantStatus => {
return GrantStatus.UNKNOWN
}
}

const parseDate = (date?: string, time?: number): string | undefined => {
if (!date) {
return
}
const parsedDate = new Date(date)
if (!time) {
return format(parsedDate, 'yyyy-MM-dd')
}
return addHours(new Date(date), time).toISOString()
}

0 comments on commit 1507cab

Please sign in to comment.