feat: date-fns

This commit is contained in:
2023-09-27 16:24:38 +02:00
parent d2d577c012
commit b33beeb669
38 changed files with 77 additions and 79 deletions

View File

@@ -35,7 +35,7 @@ import {ProtectedRoutes} from '../auth/protected.routes';
import {AssessmentsTreeListComponent} from './list/assessments-tree-list.component'; import {AssessmentsTreeListComponent} from './list/assessments-tree-list.component';
import {IonIconModule} from '../../util/ion-icon/ion-icon.module'; import {IonIconModule} from '../../util/ion-icon/ion-icon.module';
import {UtilModule} from '../../util/util.module'; import {UtilModule} from '../../util/util.module';
import {FormatPipeModule, ParseIsoPipeModule} from 'ngx-date-fns'; import {FormatPurePipeModule, ParseIsoPipeModule} from 'ngx-date-fns';
const routes: ProtectedRoutes = [ const routes: ProtectedRoutes = [
{ {
@@ -76,7 +76,7 @@ const routes: ProtectedRoutes = [
ThingTranslateModule, ThingTranslateModule,
UtilModule, UtilModule,
ParseIsoPipeModule, ParseIsoPipeModule,
FormatPipeModule, FormatPurePipeModule,
], ],
providers: [AssessmentsProvider], providers: [AssessmentsProvider],
exports: [], exports: [],

View File

@@ -15,7 +15,8 @@
<div class="container"> <div class="container">
<h2 class="name"> <h2 class="name">
{{ 'name' | thingTranslate : item }} {{ item.date ? (item.date | dfnsParseIso | dfnsFormat : 'Pp') : '' }} {{ 'name' | thingTranslate : item }} {{ item.date ? (item.date | dfnsParseIso | dfnsFormatPure : 'Pp') :
'' }}
</h2> </h2>
<assessment-base-info [item]="item"></assessment-base-info> <assessment-base-info [item]="item"></assessment-base-info>
</div> </div>

View File

@@ -34,7 +34,7 @@
<s *ngIf="iCalEvent.cancelled; else date" <s *ngIf="iCalEvent.cancelled; else date"
><ng-container [ngTemplateOutlet]="date"></ng-container> ><ng-container [ngTemplateOutlet]="date"></ng-container>
</s> </s>
<ng-template #date> {{ iCalEvent.start | dfnsParseIso | dfnsFormat : 'PPPp' }} </ng-template> <ng-template #date> {{ iCalEvent.start | dfnsParseIso | dfnsFormatPure : 'PPPp' }} </ng-template>
</ion-label> </ion-label>
<ion-note *ngIf="iCalEvent.rrule"> <ion-note *ngIf="iCalEvent.rrule">
{{ iCalEvent.rrule.interval }} {{ iCalEvent.rrule.freq | sentencecase }} {{ iCalEvent.rrule.interval }} {{ iCalEvent.rrule.freq | sentencecase }}

View File

@@ -24,7 +24,7 @@ import {FormsModule} from '@angular/forms';
import {CommonModule} from '@angular/common'; import {CommonModule} from '@angular/common';
import {UtilModule} from '../../util/util.module'; import {UtilModule} from '../../util/util.module';
import {IonIconModule} from '../../util/ion-icon/ion-icon.module'; import {IonIconModule} from '../../util/ion-icon/ion-icon.module';
import {FormatPipeModule, ParseIsoPipeModule} from 'ngx-date-fns'; import {FormatPurePipeModule, ParseIsoPipeModule} from 'ngx-date-fns';
@NgModule({ @NgModule({
declarations: [AddEventReviewModalComponent], declarations: [AddEventReviewModalComponent],
@@ -37,7 +37,7 @@ import {FormatPipeModule, ParseIsoPipeModule} from 'ngx-date-fns';
CommonModule, CommonModule,
UtilModule, UtilModule,
ParseIsoPipeModule, ParseIsoPipeModule,
FormatPipeModule, FormatPurePipeModule,
], ],
exports: [], exports: [],
providers: [Calendar, CalendarService, ScheduleProvider], providers: [Calendar, CalendarService, ScheduleProvider],

View File

@@ -33,7 +33,7 @@
<ion-label> <ion-label>
{{ {{
nextEvent nextEvent
? (nextEvent!.dates.sort().at(-1) | dfnsParseIso | dfnsFormatRelative : (now | async)) ? (nextEvent!.dates.sort().at(-1) | dfnsParseIso | dfnsFormatRelativePure : (now | async))
: ('dashboard.schedule.noEvent' | translate) : ('dashboard.schedule.noEvent' | translate)
}} }}
</ion-label> </ion-label>

View File

@@ -31,7 +31,7 @@ import {ThingTranslateModule} from '../../translation/thing-translate.module';
import {UtilModule} from '../../util/util.module'; import {UtilModule} from '../../util/util.module';
import {IonIconModule} from '../../util/ion-icon/ion-icon.module'; import {IonIconModule} from '../../util/ion-icon/ion-icon.module';
import {NewsModule} from '../news/news.module'; import {NewsModule} from '../news/news.module';
import {FormatRelativePipeModule, ParseIsoPipeModule} from 'ngx-date-fns'; import {FormatRelativePurePipeModule, ParseIsoPipeModule} from 'ngx-date-fns';
const catalogRoutes: Routes = [ const catalogRoutes: Routes = [
{ {
@@ -65,7 +65,7 @@ const catalogRoutes: Routes = [
UtilModule, UtilModule,
NewsModule, NewsModule,
ParseIsoPipeModule, ParseIsoPipeModule,
FormatRelativePipeModule, FormatRelativePurePipeModule,
], ],
providers: [SettingsProvider, TranslatePipe], providers: [SettingsProvider, TranslatePipe],
}) })

View File

@@ -44,19 +44,19 @@
> >
<ng-container *ngIf="date.item.dates.length > 1; else single_event"> <ng-container *ngIf="date.item.dates.length > 1; else single_event">
<ion-text> <ion-text>
<b>{{ date.item.duration | dfnsParseDuration | dfnsFormatDuration }}</b> <b>{{ date.item.duration | dfnsParseDuration | dfnsFormatDurationPure }}</b>
{{ date.item.dates[0] | dfnsParseIso | dfnsFormat: 'EEEE, p' }} {{ date.item.dates[0] | dfnsParseIso | dfnsFormatPure: 'EEEE, p' }}
</ion-text> </ion-text>
<br /> <br />
<ion-text> <ion-text>
{{ date.item.dates[0] | dfnsParseIso | dfnsFormat: 'PPP' }} - {{ {{ date.item.dates[0] | dfnsParseIso | dfnsFormatPure: 'PPP' }} - {{
date.item.dates[date.item.dates.length - 1] | dfnsParseIso | dfnsFormat: 'PPP' }} date.item.dates[date.item.dates.length - 1] | dfnsParseIso | dfnsFormatPure: 'PPP' }}
</ion-text> </ion-text>
</ng-container> </ng-container>
<ng-template #single_event> <ng-template #single_event>
<ion-text *ngIf="date.item.dates[0] as time; else noDates"> <ion-text *ngIf="date.item.dates[0] as time; else noDates">
<b>{{ date.item.duration |dfnsParseDuration | dfnsFormatDuration}}</b> <b>{{ date.item.duration |dfnsParseDuration | dfnsFormatDurationPure}}</b>
{{ time | dfnsParseIso | dfnsFormat: 'PPPPp' }} {{ time | dfnsParseIso | dfnsFormatPure: 'PPPPp' }}
</ion-text> </ion-text>
<ng-template #noDates> <ng-template #noDates>
<ion-text color="danger">{{ 'data.chips.add_events.popover.DATA_ERROR' | translate }}</ion-text> <ion-text color="danger">{{ 'data.chips.add_events.popover.DATA_ERROR' | translate }}</ion-text>

View File

@@ -104,10 +104,9 @@ import {CertificationsInDetailComponent} from './elements/certifications-in-deta
import {GeoNavigationDirective} from '../map/geo-navigation.directive'; import {GeoNavigationDirective} from '../map/geo-navigation.directive';
import {NavigateActionChipComponent} from './chips/data/navigate-action-chip.component'; import {NavigateActionChipComponent} from './chips/data/navigate-action-chip.component';
import { import {
FormatDistanceToNowPipeModule, FormatDurationPurePipeModule,
FormatDurationPipeModule, FormatPurePipeModule,
FormatPipeModule, FormatRelativeToNowPurePipeModule,
FormatRelativeToNowPipeModule,
ParseIsoPipeModule, ParseIsoPipeModule,
} from 'ngx-date-fns'; } from 'ngx-date-fns';
import {ParseDurationPipe} from '../../translation/date-time/parse-duration.pipe'; import {ParseDurationPipe} from '../../translation/date-time/parse-duration.pipe';
@@ -203,13 +202,12 @@ import {DfnsFormatRelativeDatePurePipe} from '../../translation/date-time/format
UtilModule, UtilModule,
GeoNavigationDirective, GeoNavigationDirective,
ParseIsoPipeModule, ParseIsoPipeModule,
FormatPipeModule,
ParseDurationPipe, ParseDurationPipe,
FormatDurationPipeModule,
FormatRelativeToNowPipeModule,
DfnsFormatFrequencyPurePipe, DfnsFormatFrequencyPurePipe,
FormatDistanceToNowPipeModule,
DfnsFormatRelativeDatePurePipe, DfnsFormatRelativeDatePurePipe,
FormatPurePipeModule,
FormatDurationPurePipeModule,
FormatRelativeToNowPurePipeModule,
], ],
providers: [ providers: [
CoordinatedSearchProvider, CoordinatedSearchProvider,

View File

@@ -30,7 +30,7 @@
*ngIf="offer.availabilityRange.gt ? offer.availabilityRange.gt : offer.availabilityRange.gte" *ngIf="offer.availabilityRange.gt ? offer.availabilityRange.gt : offer.availabilityRange.gte"
> >
{{ (offer.availabilityRange.gt ? offer.availabilityRange.gt : offer.availabilityRange.gte) | {{ (offer.availabilityRange.gt ? offer.availabilityRange.gt : offer.availabilityRange.gte) |
dfnsParseIso | dfnsFormat : 'PPP' }} dfnsParseIso | dfnsFormatPure : 'PPP' }}
</span> </span>
</ion-col> </ion-col>
</ion-row> </ion-row>

View File

@@ -21,15 +21,15 @@
<ion-card-content> <ion-card-content>
<p> <p>
{{ 'data.types.origin.detail.CREATED' | translate | titlecase }}: {{ origin.created | dfnsParseIso | {{ 'data.types.origin.detail.CREATED' | translate | titlecase }}: {{ origin.created | dfnsParseIso |
dfnsFormat : 'PPP' }} dfnsFormatPure : 'PPP' }}
</p> </p>
<p *ngIf="origin.updated"> <p *ngIf="origin.updated">
{{ 'data.types.origin.detail.UPDATED' | translate | titlecase }}: {{ origin.updated | dfnsParseIso | {{ 'data.types.origin.detail.UPDATED' | translate | titlecase }}: {{ origin.updated | dfnsParseIso |
dfnsFormat : 'PPP' }} dfnsFormatPure : 'PPP' }}
</p> </p>
<p *ngIf="origin.modified"> <p *ngIf="origin.modified">
{{ 'data.types.origin.detail.MODIFIED' | translate | titlecase }}: {{ origin.modified | dfnsParseIso | {{ 'data.types.origin.detail.MODIFIED' | translate | titlecase }}: {{ origin.modified | dfnsParseIso |
dfnsFormat : 'PPP' }} dfnsFormatPure : 'PPP' }}
</p> </p>
<p *ngIf="origin.name">{{ 'data.types.origin.detail.MAINTAINER' | translate }}: {{ origin.name }}</p> <p *ngIf="origin.name">{{ 'data.types.origin.detail.MAINTAINER' | translate }}: {{ origin.name }}</p>
<p *ngIf="origin.maintainer"> <p *ngIf="origin.maintainer">
@@ -47,11 +47,11 @@
<ion-card-content> <ion-card-content>
<p> <p>
{{ 'data.types.origin.detail.INDEXED' | translate | titlecase }}: {{ origin.indexed | dfnsParseIso | {{ 'data.types.origin.detail.INDEXED' | translate | titlecase }}: {{ origin.indexed | dfnsParseIso |
dfnsFormat : 'PPP'}} dfnsFormatPure : 'PPP'}}
</p> </p>
<p *ngIf="origin.modified"> <p *ngIf="origin.modified">
{{ 'data.types.origin.detail.MODIFIED' | translate | titlecase }}: {{ origin.modified | dfnsParseIso | {{ 'data.types.origin.detail.MODIFIED' | translate | titlecase }}: {{ origin.modified | dfnsParseIso |
dfnsFormat : 'PPP' }} dfnsFormatPure : 'PPP' }}
</p> </p>
<p *ngIf="origin.name">{{ 'data.types.origin.detail.MAINTAINER' | translate }}: {{ origin.name }}</p> <p *ngIf="origin.name">{{ 'data.types.origin.detail.MAINTAINER' | translate }}: {{ origin.name }}</p>
<p *ngIf="origin.maintainer"> <p *ngIf="origin.maintainer">

View File

@@ -26,22 +26,22 @@
</ng-template> </ng-template>
<stapps-simple-card <stapps-simple-card
title="{{ 'duration' | propertyNameTranslate : item | titlecase }}" title="{{ 'duration' | propertyNameTranslate : item | titlecase }}"
[content]="[item.duration | dfnsParseDuration | dfnsFormatDuration: {format: ['minutes']}]" [content]="[item.duration | dfnsParseDuration | dfnsFormatDurationPure: {format: ['minutes']}]"
></stapps-simple-card> ></stapps-simple-card>
<stapps-simple-card <stapps-simple-card
*ngIf="item.dates.length > 1; else single_event" *ngIf="item.dates.length > 1; else single_event"
title="{{ 'dates' | propertyNameTranslate : item | titlecase }}" title="{{ 'dates' | propertyNameTranslate : item | titlecase }}"
content="{{ 'data.chips.add_events.popover.AT' | translate | titlecase }} {{ content="{{ 'data.chips.add_events.popover.AT' | translate | titlecase }} {{
item.dates[0] | dfnsParseIso | dfnsFormat: 'pp, eee' item.dates[0] | dfnsParseIso | dfnsFormatPure: 'pp, eee'
}} {{ 'data.chips.add_events.popover.UNTIL' | translate }} {{ }} {{ 'data.chips.add_events.popover.UNTIL' | translate }} {{
item.dates[item.dates.length - 1] | dfnsParseIso | dfnsFormat : 'PP' item.dates[item.dates.length - 1] | dfnsParseIso | dfnsFormatPure : 'PP'
}}" }}"
></stapps-simple-card> ></stapps-simple-card>
<ng-template #single_event> <ng-template #single_event>
<stapps-simple-card <stapps-simple-card
title="{{ 'dates' | propertyNameTranslate : item | titlecase }}" title="{{ 'dates' | propertyNameTranslate : item | titlecase }}"
content="{{ 'data.chips.add_events.popover.AT' | translate | titlecase }} {{ content="{{ 'data.chips.add_events.popover.AT' | translate | titlecase }} {{
item.dates[item.dates.length - 1] | dfnsParseIso | dfnsFormat : 'PPpp' item.dates[item.dates.length - 1] | dfnsParseIso | dfnsFormatPure : 'PPpp'
}}" }}"
></stapps-simple-card> ></stapps-simple-card>
</ng-template> </ng-template>

View File

@@ -22,12 +22,12 @@
<ion-icon name="calendar_today"></ion-icon> <ion-icon name="calendar_today"></ion-icon>
<span *ngIf="item.dates[0] && item.dates[item.dates.length - 1]"> <span *ngIf="item.dates[0] && item.dates[item.dates.length - 1]">
<span *ngIf="item.repeatFrequency"> <span *ngIf="item.repeatFrequency">
{{ item.repeatFrequency | dfnsParseDuration | dfnsFormatDuration | sentencecase }}, {{ {{ item.repeatFrequency | dfnsParseDuration | dfnsFormatDurationPure | sentencecase }}, {{
item.dates[0] | dfnsParseIso | dfnsFormat : 'PPPP' }} item.dates[0] | dfnsParseIso | dfnsFormatPure : 'PPPP' }}
</span> </span>
<span> <span>
({{ item.dates[0] | dfnsParseIso | dfnsFormat: 'PPP' }} - {{ item.dates[item.dates.length - 1] | ({{ item.dates[0] | dfnsParseIso | dfnsFormatPure: 'PPP' }} - {{ item.dates[item.dates.length -
dfnsParseIso | dfnsFormat: 'PPP' }}) 1] | dfnsParseIso | dfnsFormatPure: 'PPP' }})
</span> </span>
</span> </span>
</p> </p>

View File

@@ -25,7 +25,7 @@
<stapps-simple-card <stapps-simple-card
*ngIf="item.datePublished" *ngIf="item.datePublished"
[title]="'datePublished' | propertyNameTranslate : item | titlecase" [title]="'datePublished' | propertyNameTranslate : item | titlecase"
[content]="item.datePublished | dfnsParseIso | dfnsFormat : 'PPP'" [content]="item.datePublished | dfnsParseIso | dfnsFormatPure : 'PPP'"
></stapps-simple-card> ></stapps-simple-card>
<stapps-simple-card <stapps-simple-card
*ngIf="item.authors" *ngIf="item.authors"
@@ -50,7 +50,7 @@
<stapps-simple-card <stapps-simple-card
*ngIf="item.datePublished" *ngIf="item.datePublished"
class="date-published" class="date-published"
content="{{ item.datePublished | dfnsParseIso | dfnsFormatRelativeToNow | sentencecase }}" content="{{ item.datePublished | dfnsParseIso | dfnsFormatRelativeToNowPure | sentencecase }}"
></stapps-simple-card> ></stapps-simple-card>
<stapps-simple-card content="{{ item.messageBody }}"></stapps-simple-card> <stapps-simple-card content="{{ item.messageBody }}"></stapps-simple-card>
<ion-card *ngIf="item.sameAs"> <ion-card *ngIf="item.sameAs">

View File

@@ -21,6 +21,6 @@
('eventsEndDate' | propertyNameTranslate : item | titlecase) ('eventsEndDate' | propertyNameTranslate : item | titlecase)
" "
[content]=" [content]="
(item.eventsStartDate | dfnsParseIso | dfnsFormat : 'PPP') + ' - ' + (item.eventsEndDate | dfnsParseIso | dfnsFormat : 'PPP') (item.eventsStartDate | dfnsParseIso | dfnsFormatPure : 'PPP') + ' - ' + (item.eventsEndDate | dfnsParseIso | dfnsFormat : 'PPP')
" "
></stapps-simple-card> ></stapps-simple-card>

View File

@@ -21,8 +21,8 @@
<p class="title-sub"> <p class="title-sub">
<ion-icon name="calendar_today"></ion-icon> <ion-icon name="calendar_today"></ion-icon>
<span <span
>{{ item.startDate | dfnsParseIso | dfnsFormat: 'PPP' }} - {{ item.endDate | dfnsParseIso | >{{ item.startDate | dfnsParseIso | dfnsFormatPure: 'PPP' }} - {{ item.endDate | dfnsParseIso |
dfnsFormat: 'PPP' }}</span dfnsFormatPure: 'PPP' }}</span
> >
</p> </p>
<ion-note>{{ 'type' | thingTranslate : item }}</ion-note> <ion-note>{{ 'type' | thingTranslate : item }}</ion-note>

View File

@@ -26,7 +26,7 @@
<stapps-simple-card <stapps-simple-card
*ngIf="item.datePublished" *ngIf="item.datePublished"
[title]="'datePublished' | propertyNameTranslate : item | titlecase" [title]="'datePublished' | propertyNameTranslate : item | titlecase"
[content]="item.datePublished | dfnsParseIso | dfnsFormat : 'PPP'" [content]="item.datePublished | dfnsParseIso | dfnsFormatPure : 'PPP'"
> >
</stapps-simple-card> </stapps-simple-card>
<stapps-offers-detail *ngIf="item.offers" [offers]="item.offers"></stapps-offers-detail> <stapps-offers-detail *ngIf="item.offers" [offers]="item.offers"></stapps-offers-detail>

View File

@@ -11,7 +11,7 @@
</p> </p>
<p *ngIf="item.duration"> <p *ngIf="item.duration">
{{ 'duration' | propertyNameTranslate : item | titlecase }}: {{ item.duration | dfnsParseDuration | {{ 'duration' | propertyNameTranslate : item | titlecase }}: {{ item.duration | dfnsParseDuration |
dfnsFormatDuration : {format: ['seconds']} }} dfnsFormatDurationPure : {format: ['seconds']} }}
</p> </p>
<ion-note>{{ 'type' | thingTranslate : item }}</ion-note> <ion-note>{{ 'type' | thingTranslate : item }}</ion-note>
</div> </div>

View File

@@ -67,6 +67,6 @@
</ion-row> </ion-row>
<ion-row *ngIf="holding.dueDate"> <ion-row *ngIf="holding.dueDate">
<ion-col size="3">{{ 'hebisSearch.daia.dueDate' | translate }}</ion-col> <ion-col size="3">{{ 'hebisSearch.daia.dueDate' | translate }}</ion-col>
<ion-col size="9">{{ holding.dueDate | dfnsParseIso | dfnsFormat : 'PPP' }}</ion-col> <ion-col size="9">{{ holding.dueDate | dfnsParseIso | dfnsFormatPure : 'PPP' }}</ion-col>
</ion-row> </ion-row>
</ion-grid> </ion-grid>

View File

@@ -35,7 +35,7 @@ import {DaiaAvailabilityComponent} from './daia-availability/daia-availability.c
import {UtilModule} from '../../util/util.module'; import {UtilModule} from '../../util/util.module';
import {IonIconModule} from '../../util/ion-icon/ion-icon.module'; import {IonIconModule} from '../../util/ion-icon/ion-icon.module';
import {DaiaHoldingComponent} from './daia-availability/daia-holding.component'; import {DaiaHoldingComponent} from './daia-availability/daia-holding.component';
import {FormatPipeModule, ParseIsoPipeModule} from 'ngx-date-fns'; import {FormatPurePipeModule, ParseIsoPipeModule} from 'ngx-date-fns';
/** /**
* Module for handling data * Module for handling data
@@ -64,7 +64,7 @@ import {FormatPipeModule, ParseIsoPipeModule} from 'ngx-date-fns';
ThingTranslateModule.forChild(), ThingTranslateModule.forChild(),
UtilModule, UtilModule,
ParseIsoPipeModule, ParseIsoPipeModule,
FormatPipeModule, FormatPurePipeModule,
], ],
providers: [HebisDataProvider, DaiaDataProvider, StAppsWebHttpClient], providers: [HebisDataProvider, DaiaDataProvider, StAppsWebHttpClient],
}) })

View File

@@ -28,7 +28,7 @@
<p *ngIf="fee[property]"> <p *ngIf="fee[property]">
{{ 'library.account.pages.fines.labels' + '.' + property | translate }}: {{ 'library.account.pages.fines.labels' + '.' + property | translate }}:
<ng-container *ngIf="!['date'].includes(property); else date"> {{ fee[property] }} </ng-container> <ng-container *ngIf="!['date'].includes(property); else date"> {{ fee[property] }} </ng-container>
<ng-template #date> {{ $any(fee[property]) | dfnsParseIso | dfnsFormat : 'PPP' }} </ng-template> <ng-template #date> {{ $any(fee[property]) | dfnsParseIso | dfnsFormatPure : 'PPP' }} </ng-template>
</p></ng-container </p></ng-container
> >
</ion-label> </ion-label>

View File

@@ -23,7 +23,7 @@
<ng-container *ngIf="!['endtime', 'duedate'].includes(property); else date"> <ng-container *ngIf="!['endtime', 'duedate'].includes(property); else date">
{{ item[property] }} {{ item[property] }}
</ng-container> </ng-container>
<ng-template #date> {{ $any(item[property]) | dfnsParseIso | dfnsFormat : 'PPP' }} </ng-template> <ng-template #date> {{ $any(item[property]) | dfnsParseIso | dfnsFormatPure : 'PPP' }} </ng-template>
</p> </p>
</ng-container> </ng-container>
<span class="ion-float-right"> <span class="ion-float-right">

View File

@@ -38,7 +38,7 @@
</ng-container> </ng-container>
<ng-template #exactDate> <ng-template #exactDate>
{{ 'library.account.pages.profile.values.expires' | translate }}:&nbsp;{{ {{ 'library.account.pages.profile.values.expires' | translate }}:&nbsp;{{
$any(patron[property]) | dfnsParseIso | dfnsFormat : 'PPP' }} $any(patron[property]) | dfnsParseIso | dfnsFormatPure : 'PPP' }}
</ng-template> </ng-template>
</ng-template> </ng-template>
</ion-col> </ion-col>

View File

@@ -31,7 +31,7 @@ import {FeeItemComponent} from './account/elements/fee-item/fee-item.component';
import {DataModule} from '../data/data.module'; import {DataModule} from '../data/data.module';
import {UtilModule} from '../../util/util.module'; import {UtilModule} from '../../util/util.module';
import {IonIconModule} from '../../util/ion-icon/ion-icon.module'; import {IonIconModule} from '../../util/ion-icon/ion-icon.module';
import {FormatPipeModule, ParseIsoPipeModule} from 'ngx-date-fns'; import {FormatPurePipeModule, ParseIsoPipeModule} from 'ngx-date-fns';
const routes: ProtectedRoutes | Routes = [ const routes: ProtectedRoutes | Routes = [
{ {
@@ -77,7 +77,7 @@ const routes: ProtectedRoutes | Routes = [
DataModule, DataModule,
UtilModule, UtilModule,
ParseIsoPipeModule, ParseIsoPipeModule,
FormatPipeModule, FormatPurePipeModule,
], ],
declarations: [ declarations: [
LibraryAccountPageComponent, LibraryAccountPageComponent,

View File

@@ -21,7 +21,7 @@
> >
<ion-card-header> <ion-card-header>
<ion-card-subtitle *ngIf="item.datePublished" <ion-card-subtitle *ngIf="item.datePublished"
>{{ item.datePublished | dfnsParseIso | dfnsFormatRelativeToNow | sentencecase }}</ion-card-subtitle >{{ item.datePublished | dfnsParseIso | dfnsFormatRelativeToNowPure | sentencecase }}</ion-card-subtitle
> >
<ion-card-title> {{ item.name }} </ion-card-title> <ion-card-title> {{ item.name }} </ion-card-title>
</ion-card-header> </ion-card-header>

View File

@@ -28,7 +28,7 @@ import {SettingsModule} from '../settings/settings.module';
import {NewsSettingsFilterComponent} from './elements/news-filter-settings/news-settings-filter.component'; import {NewsSettingsFilterComponent} from './elements/news-filter-settings/news-settings-filter.component';
import {UtilModule} from '../../util/util.module'; import {UtilModule} from '../../util/util.module';
import {IonIconModule} from '../../util/ion-icon/ion-icon.module'; import {IonIconModule} from '../../util/ion-icon/ion-icon.module';
import {FormatRelativeToNowPipeModule, ParseIsoPipeModule} from 'ngx-date-fns'; import {FormatRelativeToNowPurePipeModule, ParseIsoPipeModule} from 'ngx-date-fns';
const newsRoutes: Routes = [{path: 'news', component: NewsPageComponent}]; const newsRoutes: Routes = [{path: 'news', component: NewsPageComponent}];
@@ -55,7 +55,7 @@ const newsRoutes: Routes = [{path: 'news', component: NewsPageComponent}];
SettingsModule, SettingsModule,
UtilModule, UtilModule,
ParseIsoPipeModule, ParseIsoPipeModule,
FormatRelativeToNowPipeModule, FormatRelativeToNowPurePipeModule,
], ],
providers: [SettingsProvider], providers: [SettingsProvider],
exports: [NewsItemComponent], exports: [NewsItemComponent],

View File

@@ -20,8 +20,8 @@
<ng-container *ngFor="let myCourse of myCoursesDay[1]"> <ng-container *ngFor="let myCourse of myCoursesDay[1]">
<ion-item-group> <ion-item-group>
<ion-item-divider <ion-item-divider
>{{myCourse.startTime | dfnsParseIso | dfnsFormat: 'p'}} - {{myCourse.endTime | dfnsParseIso | >{{myCourse.startTime | dfnsParseIso | dfnsFormatPure: 'p'}} - {{myCourse.endTime | dfnsParseIso |
dfnsFormat: 'p'}}</ion-item-divider dfnsFormatPure: 'p'}}</ion-item-divider
> >
<stapps-data-list-item <stapps-data-list-item
[listItemChipInteraction]="false" [listItemChipInteraction]="false"

View File

@@ -26,7 +26,7 @@ import {ProfilePageSectionComponent} from './page/profile-page-section.component
import {ThingTranslateModule} from '../../translation/thing-translate.module'; import {ThingTranslateModule} from '../../translation/thing-translate.module';
import {DataModule} from '../data/data.module'; import {DataModule} from '../data/data.module';
import {MyCoursesComponent} from './page/my-courses.component'; import {MyCoursesComponent} from './page/my-courses.component';
import {FormatPipeModule, ParseIsoPipeModule} from 'ngx-date-fns'; import {ParseIsoPipeModule} from 'ngx-date-fns';
import {DfnsFormatRelativeDatePurePipe} from '../../translation/date-time/format-relative-date.pipe'; import {DfnsFormatRelativeDatePurePipe} from '../../translation/date-time/format-relative-date.pipe';
const routes: Routes = [ const routes: Routes = [
@@ -49,7 +49,6 @@ const routes: Routes = [
UtilModule, UtilModule,
ThingTranslateModule, ThingTranslateModule,
DataModule, DataModule,
FormatPipeModule,
DfnsFormatRelativeDatePurePipe, DfnsFormatRelativeDatePurePipe,
ParseIsoPipeModule, ParseIsoPipeModule,
], ],

View File

@@ -21,7 +21,7 @@
</ion-button> </ion-button>
<div class="day-labels"> <div class="day-labels">
<ion-button expand="block" fill="clear" (click)="popover.present($event)"> <ion-button expand="block" fill="clear" (click)="popover.present($event)">
{{ dateRange.startDate | dfnsFormat : 'P' }} - {{ dateRange.endDate | dfnsFormat : 'P' }} {{ dateRange.startDate | dfnsFormatPure : 'P' }} - {{ dateRange.endDate | dfnsFormatPure : 'P' }}
</ion-button> </ion-button>
<ion-popover #popover> <ion-popover #popover>

View File

@@ -13,7 +13,7 @@
~ this program. If not, see <https://www.gnu.org/licenses/>. ~ this program. If not, see <https://www.gnu.org/licenses/>.
--> -->
<div class="day-wrapper" [class.leftmost]="isLeftmost"> <div class="day-wrapper" [class.leftmost]="isLeftmost">
<div class="day-header" [class.leftmost]="isLeftmost">{{ day | dfnsFormat : dateFormat }}</div> <div class="day-header" [class.leftmost]="isLeftmost">{{ day | dfnsFormatPure : dateFormat }}</div>
<div *ngIf="dateSeriesGroups as groups"> <div *ngIf="dateSeriesGroups as groups">
<div *ngFor="let group of groups" class="horizontal-group"> <div *ngFor="let group of groups" class="horizontal-group">
<stapps-schedule-card <stapps-schedule-card

View File

@@ -16,7 +16,7 @@
<ion-content @materialFade> <ion-content @materialFade>
<ion-list lines="none"> <ion-list lines="none">
<ion-item-group *ngFor="let day of events | async" @materialFade> <ion-item-group *ngFor="let day of events | async" @materialFade>
<ion-label class="day-label" color="medium"> {{ day[0].day | dfnsFormat : 'PPP' }} </ion-label> <ion-label class="day-label" color="medium"> {{ day[0].day | dfnsFormatPure : 'PPP' }} </ion-label>
<ion-item *ngFor="let event of day" lines="none"> <ion-item *ngFor="let event of day" lines="none">
<div class="hour-wrapper"> <div class="hour-wrapper">
<ion-text class="hour-label"> {{ event.event.time.startAsString }} </ion-text> <ion-text class="hour-label"> {{ event.event.time.startAsString }} </ion-text>

View File

@@ -25,7 +25,7 @@
<div class="schedule-wrapper" [style.height.px]="scale * (hoursRange.to - hoursRange.from + 1) + scale"> <div class="schedule-wrapper" [style.height.px]="scale * (hoursRange.to - hoursRange.from + 1) + scale">
<div class="hours-wrapper"> <div class="hours-wrapper">
<!-- add margin top +45 to start below the date header --> <!-- add margin top +45 to start below the date header -->
<div class="hour-lines" *ngFor="let i of hours" [style.marginTop.px]="i * scale + 45"> <div class="hour-lines" *ngFor="let i of hours" [style.margin-top.px]="i * scale + 45">
{{ i + hoursRange.from }} {{ i + hoursRange.from }}
</div> </div>
</div> </div>

View File

@@ -35,7 +35,7 @@ import {InfiniteSwiperComponent} from './page/grid/infinite-swiper.component';
import {CalendarComponent} from './page/components/calendar.component'; import {CalendarComponent} from './page/components/calendar.component';
import {IonIconModule} from '../../util/ion-icon/ion-icon.module'; import {IonIconModule} from '../../util/ion-icon/ion-icon.module';
import {ChooseEventsPageComponent} from './page/choose-events-page.component'; import {ChooseEventsPageComponent} from './page/choose-events-page.component';
import {AddDaysPipeModule, DateFnsModule, FormatPipeModule, IsSameDayPipeModule} from 'ngx-date-fns'; import {AddDaysPipeModule, FormatPurePipeModule, IsSameDayPipeModule, IsTodayPipeModule} from 'ngx-date-fns';
const settingsRoutes: Routes = [ const settingsRoutes: Routes = [
{path: 'schedule', redirectTo: 'schedule/calendar/now'}, {path: 'schedule', redirectTo: 'schedule/calendar/now'},
@@ -76,9 +76,9 @@ const settingsRoutes: Routes = [
UtilModule, UtilModule,
ThingTranslateModule, ThingTranslateModule,
AddDaysPipeModule, AddDaysPipeModule,
FormatPipeModule,
IsSameDayPipeModule, IsSameDayPipeModule,
DateFnsModule, FormatPurePipeModule,
IsTodayPipeModule,
], ],
providers: [ScheduleProvider, DataProvider], providers: [ScheduleProvider, DataProvider],
}) })

View File

@@ -15,6 +15,7 @@
import {SCLanguageCode} from '@openstapps/core'; import {SCLanguageCode} from '@openstapps/core';
import type {Locale} from 'date-fns'; import type {Locale} from 'date-fns';
import {TranslateService} from '@ngx-translate/core'; import {TranslateService} from '@ngx-translate/core';
import {firstValueFrom} from 'rxjs';
export interface LocaleExtension extends Locale { export interface LocaleExtension extends Locale {
formatFrequencyOptions: Partial<Record<Intl.LDMLPluralRule, string>>; formatFrequencyOptions: Partial<Record<Intl.LDMLPluralRule, string>>;
@@ -46,9 +47,8 @@ export async function getDateFnsLocale(
console.warn(`Unknown Locale "${code}" for Date Fns. Falling back to English.`); console.warn(`Unknown Locale "${code}" for Date Fns. Falling back to English.`);
} }
const key = code in LOCALES ? (code as keyof typeof LOCALES) : 'en'; const key = code in LOCALES ? (code as keyof typeof LOCALES) : 'en';
const translations = translator.translations[translator.currentLang]; const frequencyExtension = await firstValueFrom(translator.get('dateFns.FORMAT_FREQUENCY'));
const frequencyExtension = translations['dateFns']['FORMAT_FREQUENCY']; const relativeDateExtension = await firstValueFrom(translator.get('dateFns.FORMAT_RELATIVE_DATE'));
const relativeDateExtension = translations['dateFns']['FORMAT_RELATIVE_DATE'];
return LOCALES[key]().then(it => { return LOCALES[key]().then(it => {
const locale = it.default as LocaleExtension; const locale = it.default as LocaleExtension;

View File

@@ -41,9 +41,9 @@ export class PropertyNameTranslatePipe implements PipeTransform, OnDestroy {
this.value = this.thingTranslate.getPropertyName(type as SCThingType, key); this.value = this.thingTranslate.getPropertyName(type as SCThingType, key);
} }
transform(query: unknown, thingOrType: SCThings | string | unknown): unknown { transform(query: unknown, thingOrType: SCThings | string | unknown): string {
if (typeof query !== 'string' || query.length <= 0) { if (typeof query !== 'string' || query.length <= 0) {
return query; return query as string;
} }
if (!isThing(thingOrType) && typeof thingOrType !== 'string') { if (!isThing(thingOrType) && typeof thingOrType !== 'string') {
@@ -70,7 +70,7 @@ export class PropertyNameTranslatePipe implements PipeTransform, OnDestroy {
}); });
} }
return this.value; return this.value as string;
} }
/** /**

View File

@@ -22,11 +22,11 @@
<ng-template #nextChange> <ng-template #nextChange>
<ng-container *ngIf="showNextChange && openingHours.nextChangeSoon"> <ng-container *ngIf="showNextChange && openingHours.nextChangeSoon">
{{ ('common.openingHours.' + openingHours.nextChangeAction + '_soon') | translate: {duration: {{ ('common.openingHours.' + openingHours.nextChangeAction + '_soon') | translate: {duration:
(openingHours.nextChangeSoon | async | dfnsFormatDistanceToNowStrict: {unit: 'minute'})} }} (openingHours.nextChangeSoon | async | dfnsFormatDistanceToNowStrictPure: {unit: 'minute'})} }}
</ng-container> </ng-container>
<ng-container *ngIf="showNextChange && !openingHours.nextChangeSoon"> <ng-container *ngIf="showNextChange && !openingHours.nextChangeSoon">
{{ ('common.openingHours.' + openingHours.nextChangeAction) | translate: {date: openingHours.nextChange {{ ('common.openingHours.' + openingHours.nextChangeAction) | translate: {date: openingHours.nextChange
| dfnsFormatRelativeToNow} }} | dfnsFormatRelativeToNowPure} }}
</ng-container> </ng-container>
</ng-template> </ng-template>
</div> </div>

View File

@@ -27,7 +27,7 @@ import {SearchbarAutofocusDirective} from './searchbar-autofocus.directive';
import {SectionComponent} from './section.component'; import {SectionComponent} from './section.component';
import {RouterModule} from '@angular/router'; import {RouterModule} from '@angular/router';
import {IonContentParallaxDirective} from './ion-content-parallax.directive'; import {IonContentParallaxDirective} from './ion-content-parallax.directive';
import {FormatDistanceToNowStrictPipeModule, FormatRelativeToNowPipeModule} from 'ngx-date-fns'; import {FormatDistanceToNowStrictPurePipeModule, FormatRelativeToNowPurePipeModule} from 'ngx-date-fns';
@NgModule({ @NgModule({
imports: [ imports: [
@@ -36,8 +36,8 @@ import {FormatDistanceToNowStrictPipeModule, FormatRelativeToNowPipeModule} from
TranslateModule, TranslateModule,
ThingTranslateModule.forChild(), ThingTranslateModule.forChild(),
RouterModule, RouterModule,
FormatRelativeToNowPipeModule, FormatRelativeToNowPurePipeModule,
FormatDistanceToNowStrictPipeModule, FormatDistanceToNowStrictPurePipeModule,
], ],
declarations: [ declarations: [
IonContentParallaxDirective, IonContentParallaxDirective,

View File

@@ -18,7 +18,7 @@
"yesterday": "'gestern'", "yesterday": "'gestern'",
"today": "'heute'", "today": "'heute'",
"tomorrow": "'morgen'", "tomorrow": "'morgen'",
"nextWeek": "'nächsten' eeee", "nextWeek": "eeee",
"other": "pp" "other": "pp"
} }
}, },

View File

@@ -18,7 +18,7 @@
"yesterday": "'yesterday'", "yesterday": "'yesterday'",
"today": "'today'", "today": "'today'",
"tomorrow": "'tomorrow'", "tomorrow": "'tomorrow'",
"nextWeek": "'next' eeee", "nextWeek": "eeee",
"other": "pp" "other": "pp"
} }
}, },