From 13ae57e5cf4ea04f12e43a8df247cd5fd8e8721c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Adina=20=C8=9Aeudan?= Date: Tue, 22 Mar 2022 00:33:56 +0200 Subject: [PATCH] Replace moment with dayjs --- .../downloads-list-screen.component.html | 2 +- .../src/app/i18n/language.initializer.ts | 5 --- apps/red-ui/src/app/i18n/language.service.ts | 30 +++++++++++++--- ...-edit-dossier-template-dialog.component.ts | 19 +++++----- .../screens/audit/audit-screen.component.html | 2 +- .../screens/audit/audit-screen.component.ts | 6 ++-- .../table-item/table-item.component.html | 8 ++--- ...ossier-template-info-screen.component.html | 8 ++--- .../license-information-screen.component.ts | 25 +++++++------ .../table-item/table-item.component.html | 2 +- .../dossier-details-stats.component.html | 6 ++-- .../dossier-overview/config.service.ts | 8 ++--- .../add-dossier-dialog.component.html | 4 +-- .../add-dossier-dialog.component.ts | 6 ++-- .../edit-dossier-attributes.component.ts | 6 ++-- .../edit-dossier-general-info.component.html | 2 +- .../edit-dossier-general-info.component.ts | 8 ++--- .../date-column/date-column.component.html | 2 +- .../services/file-data.service.ts | 10 +++--- .../modules/mat-config/mat-config.module.ts | 2 ++ .../dossier-name-column.component.ts | 4 +-- .../simple-doughnut-chart.component.html | 4 +-- .../src/app/modules/shared/pipes/date.pipe.ts | 36 ++++++------------- .../src/app/modules/shared/shared.module.ts | 4 +-- .../src/app/services/notifications.service.ts | 5 ++- .../app/utils/configuration.initializer.ts | 2 +- .../red-ui/src/app/utils/date-inputs-utils.ts | 6 ++-- apps/red-ui/src/assets/config/config.json | 8 ++--- apps/red-ui/src/assets/i18n/de.json | 5 ++- apps/red-ui/src/assets/i18n/en.json | 5 ++- libs/red-domain/src/lib/trash/trash.item.ts | 4 +-- package.json | 4 +-- yarn.lock | 22 ++++++------ 33 files changed, 136 insertions(+), 134 deletions(-) delete mode 100644 apps/red-ui/src/app/i18n/language.initializer.ts diff --git a/apps/red-ui/src/app/components/downloads-list-screen/downloads-list-screen.component.html b/apps/red-ui/src/app/components/downloads-list-screen/downloads-list-screen.component.html index 3249bd3fa..d5b732a30 100644 --- a/apps/red-ui/src/app/components/downloads-list-screen/downloads-list-screen.component.html +++ b/apps/red-ui/src/app/components/downloads-list-screen/downloads-list-screen.component.html @@ -41,7 +41,7 @@
- {{ download.creationDate | date: 'd MMM. yyyy, hh:mm a' }} + {{ download.creationDate | date: 'd MMM yyyy, hh:mm a' }}
diff --git a/apps/red-ui/src/app/i18n/language.initializer.ts b/apps/red-ui/src/app/i18n/language.initializer.ts deleted file mode 100644 index 3fe418b84..000000000 --- a/apps/red-ui/src/app/i18n/language.initializer.ts +++ /dev/null @@ -1,5 +0,0 @@ -import { LanguageService } from './language.service'; - -export function languageInitializer(languageService: LanguageService) { - return () => languageService.chooseAndSetInitialLanguage(); -} diff --git a/apps/red-ui/src/app/i18n/language.service.ts b/apps/red-ui/src/app/i18n/language.service.ts index 6a89894a6..a22a83286 100644 --- a/apps/red-ui/src/app/i18n/language.service.ts +++ b/apps/red-ui/src/app/i18n/language.service.ts @@ -2,12 +2,28 @@ import { Injectable } from '@angular/core'; import { TranslateService } from '@ngx-translate/core'; import { UserPreferenceService } from '@services/user-preference.service'; import { firstValueFrom } from 'rxjs'; +import 'dayjs/locale/en'; +import 'dayjs/locale/de'; +import dayjs, { Dayjs } from 'dayjs'; +import { DateAdapter } from '@angular/material/core'; +import arraySupport from 'dayjs/plugin/arraySupport'; +import localeData from 'dayjs/plugin/localeData'; +import { registerLocaleData } from '@angular/common'; +import localeDe from '@angular/common/locales/de'; + +dayjs.extend(arraySupport); +dayjs.extend(localeData); @Injectable({ providedIn: 'root', }) export class LanguageService { - constructor(private readonly _translateService: TranslateService, private readonly _userPreferenceService: UserPreferenceService) { + constructor( + private readonly _translateService: TranslateService, + private readonly _userPreferenceService: UserPreferenceService, + private readonly _dateAdapter: DateAdapter, + ) { + registerLocaleData(localeDe); _translateService.addLangs(['en', 'de']); _translateService.setDefaultLang('en'); } @@ -16,11 +32,17 @@ export class LanguageService { return this._translateService.currentLang; } + async setLanguage(locale: string): Promise { + dayjs.locale(locale); + this._dateAdapter.setLocale(locale); + await firstValueFrom(this._translateService.use(locale)); + } + languageAvailable(language: string): boolean { return this._translateService.getLangs().includes(language); } - chooseAndSetInitialLanguage() { + async chooseAndSetInitialLanguage(): Promise { let defaultLang = 'en'; const userPreferenceLang = this._userPreferenceService.getLanguage(); if (this.languageAvailable(userPreferenceLang)) { @@ -28,12 +50,12 @@ export class LanguageService { } document.documentElement.lang = defaultLang; this._translateService.setDefaultLang(defaultLang); - firstValueFrom(this._translateService.use(defaultLang)).then(); + await this.setLanguage(defaultLang); } async changeLanguage(language: string) { await this._userPreferenceService.saveLanguage(language); document.documentElement.lang = language; - await firstValueFrom(this._translateService.use(language)); + await this.setLanguage(language); } } diff --git a/apps/red-ui/src/app/modules/admin/dialogs/add-edit-dossier-template-dialog/add-edit-dossier-template-dialog.component.ts b/apps/red-ui/src/app/modules/admin/dialogs/add-edit-dossier-template-dialog/add-edit-dossier-template-dialog.component.ts index 9a09588d6..0c043682c 100644 --- a/apps/red-ui/src/app/modules/admin/dialogs/add-edit-dossier-template-dialog/add-edit-dossier-template-dialog.component.ts +++ b/apps/red-ui/src/app/modules/admin/dialogs/add-edit-dossier-template-dialog/add-edit-dossier-template-dialog.component.ts @@ -1,8 +1,6 @@ import { Component, Inject, Injector } from '@angular/core'; import { AbstractControl, FormBuilder, FormGroup, Validators } from '@angular/forms'; import { MAT_DIALOG_DATA, MatDialogRef } from '@angular/material/dialog'; -import * as moment from 'moment'; -import { Moment } from 'moment'; import { applyIntervalConstraints } from '@utils/date-inputs-utils'; import { downloadTypesTranslations } from '../../../../translations/download-types-translations'; import { DossierTemplatesService } from '@services/entity-services/dossier-templates.service'; @@ -12,6 +10,7 @@ import { DossierTemplate, DownloadFileType, IDossierTemplate } from '@red/domain import { HttpStatusCode } from '@angular/common/http'; import { DictionaryService } from '@shared/services/dictionary.service'; import { firstValueFrom } from 'rxjs'; +import dayjs, { Dayjs } from 'dayjs'; @Component({ templateUrl: './add-edit-dossier-template-dialog.component.html', @@ -26,10 +25,10 @@ export class AddEditDossierTemplateDialogComponent extends BaseDialogComponent { label: downloadTypesTranslations[type], })); readonly dossierTemplate: DossierTemplate; - private _previousValidFrom: Moment; - private _previousValidTo: Moment; - private _lastValidFrom: Moment; - private _lastValidTo: Moment; + private _previousValidFrom: Dayjs; + private _previousValidTo: Dayjs; + private _lastValidFrom: Dayjs; + private _lastValidTo: Dayjs; constructor( private readonly _toaster: Toaster, @@ -56,10 +55,10 @@ export class AddEditDossierTemplateDialogComponent extends BaseDialogComponent { }); this.addSubscription = this.form.controls['validFrom'].valueChanges.subscribe(value => { - this._lastValidFrom = value ? value : this._lastValidFrom; + this._lastValidFrom = value || this._lastValidFrom; }); this.addSubscription = this.form.controls['validTo'].valueChanges.subscribe(value => { - this._lastValidFrom = value ? value : this._lastValidFrom; + this._lastValidTo = value || this._lastValidTo; }); } @@ -99,11 +98,11 @@ export class AddEditDossierTemplateDialogComponent extends BaseDialogComponent { name: [this.dossierTemplate?.name, Validators.required], description: [this.dossierTemplate?.description], validFrom: [ - this.dossierTemplate?.validFrom ? moment(this.dossierTemplate?.validFrom) : null, + this.dossierTemplate?.validFrom ? dayjs(this.dossierTemplate?.validFrom) : null, this._requiredIfValidator(() => this.hasValidFrom), ], validTo: [ - this.dossierTemplate?.validTo ? moment(this.dossierTemplate?.validTo) : null, + this.dossierTemplate?.validTo ? dayjs(this.dossierTemplate?.validTo) : null, this._requiredIfValidator(() => this.hasValidTo), ], downloadFileTypes: [this.dossierTemplate?.downloadFileTypes || ['PREVIEW', 'REDACTED']], diff --git a/apps/red-ui/src/app/modules/admin/screens/audit/audit-screen.component.html b/apps/red-ui/src/app/modules/admin/screens/audit/audit-screen.component.html index 0d7278f2d..50380cbea 100644 --- a/apps/red-ui/src/app/modules/admin/screens/audit/audit-screen.component.html +++ b/apps/red-ui/src/app/modules/admin/screens/audit/audit-screen.component.html @@ -103,7 +103,7 @@
- {{ log.recordDate | date: 'd MMM. yyyy, hh:mm a' }} + {{ log.recordDate | date: 'd MMM yyyy, hh:mm a' }}
diff --git a/apps/red-ui/src/app/modules/admin/screens/audit/audit-screen.component.ts b/apps/red-ui/src/app/modules/admin/screens/audit/audit-screen.component.ts index 1a0d3508c..0d762101e 100644 --- a/apps/red-ui/src/app/modules/admin/screens/audit/audit-screen.component.ts +++ b/apps/red-ui/src/app/modules/admin/screens/audit/audit-screen.component.ts @@ -1,6 +1,5 @@ import { Component, forwardRef, Injector, OnDestroy, OnInit } from '@angular/core'; import { FormBuilder, FormGroup } from '@angular/forms'; -import { Moment } from 'moment'; import { applyIntervalConstraints } from '@utils/date-inputs-utils'; import { DefaultListingServices, ListingComponent, LoadingService, TableColumnConfig } from '@iqser/common-ui'; import { auditCategoriesTranslations } from '../../translations/audit-categories-translations'; @@ -9,6 +8,7 @@ import { UserService } from '@services/user.service'; import { Audit, IAudit, IAuditResponse, IAuditSearchRequest } from '@red/domain'; import { AuditService } from '../../services/audit.service'; import { firstValueFrom } from 'rxjs'; +import { Dayjs } from 'dayjs'; const PAGE_SIZE = 50; @@ -34,8 +34,8 @@ export class AuditScreenComponent extends ListingComponent implements OnD { label: _('audit-screen.table-col-names.category') }, ]; readonly tableHeaderLabel = _('audit-screen.table-header.title'); - private _previousFrom: Moment; - private _previousTo: Moment; + private _previousFrom: Dayjs; + private _previousTo: Dayjs; constructor( private readonly _userService: UserService, diff --git a/apps/red-ui/src/app/modules/admin/screens/dossier-templates-listing/table-item/table-item.component.html b/apps/red-ui/src/app/modules/admin/screens/dossier-templates-listing/table-item/table-item.component.html index 425635599..55fce9070 100644 --- a/apps/red-ui/src/app/modules/admin/screens/dossier-templates-listing/table-item/table-item.component.html +++ b/apps/red-ui/src/app/modules/admin/screens/dossier-templates-listing/table-item/table-item.component.html @@ -20,25 +20,25 @@
- {{ dossierTemplate.dateAdded | date: 'd MMM. yyyy' }} + {{ dossierTemplate.dateAdded | date: 'd MMM yyyy' }}
- {{ dossierTemplate.dateModified | date: 'd MMM. yyyy' }} + {{ dossierTemplate.dateModified | date: 'd MMM yyyy' }}
- {{ dossierTemplate.validFrom | date: 'd MMM. yyyy' }} + {{ dossierTemplate.validFrom | date: 'd MMM yyyy' }}
- {{ dossierTemplate.validTo | date: 'd MMM. yyyy' }} + {{ dossierTemplate.validTo | date: 'd MMM yyyy' }}
diff --git a/apps/red-ui/src/app/modules/admin/screens/info/info-screen/dossier-template-info-screen.component.html b/apps/red-ui/src/app/modules/admin/screens/info/info-screen/dossier-template-info-screen.component.html index 47ca1fe19..4c7c16ecd 100644 --- a/apps/red-ui/src/app/modules/admin/screens/info/info-screen/dossier-template-info-screen.component.html +++ b/apps/red-ui/src/app/modules/admin/screens/info/info-screen/dossier-template-info-screen.component.html @@ -23,12 +23,12 @@
- {{ 'dossier-template-info-screen.valid-from' | translate: { date: dossierTemplate.validFrom | date: 'd MMM. yyyy' } }} + {{ 'dossier-template-info-screen.valid-from' | translate: { date: dossierTemplate.validFrom | date: 'd MMM yyyy' } }}
- {{ 'dossier-template-info-screen.created-on' | translate: { date: dossierTemplate.dateAdded | date: 'd MMM. yyyy' } }} + {{ 'dossier-template-info-screen.created-on' | translate: { date: dossierTemplate.dateAdded | date: 'd MMM yyyy' } }}
@@ -38,12 +38,12 @@
- {{ 'dossier-template-info-screen.valid-to' | translate: { date: dossierTemplate.validTo | date: 'd MMM. yyyy' } }} + {{ 'dossier-template-info-screen.valid-to' | translate: { date: dossierTemplate.validTo | date: 'd MMM yyyy' } }}
- {{ 'dossier-template-info-screen.modified-on' | translate: { date: dossierTemplate.dateModified | date: 'd MMM. yyyy' } }} + {{ 'dossier-template-info-screen.modified-on' | translate: { date: dossierTemplate.dateModified | date: 'd MMM yyyy' } }}
diff --git a/apps/red-ui/src/app/modules/admin/screens/license-information/license-information-screen.component.ts b/apps/red-ui/src/app/modules/admin/screens/license-information/license-information-screen.component.ts index 095261402..ae953b5d7 100644 --- a/apps/red-ui/src/app/modules/admin/screens/license-information/license-information-screen.component.ts +++ b/apps/red-ui/src/app/modules/admin/screens/license-information/license-information-screen.component.ts @@ -1,6 +1,5 @@ import { Component, OnInit } from '@angular/core'; import { ConfigService } from '@services/config.service'; -import * as moment from 'moment'; import { TranslateService } from '@ngx-translate/core'; import { ButtonConfig, IconButtonTypes, LoadingService } from '@iqser/common-ui'; import { marker as _ } from '@biesbjerg/ngx-translate-extract-marker'; @@ -10,6 +9,7 @@ import { LicenseReportService } from '../../services/licence-report.service'; import { ILicenseReport } from '@red/domain'; import { Color, ScaleType } from '@swimlane/ngx-charts'; import { firstValueFrom } from 'rxjs'; +import dayjs from 'dayjs'; @Component({ selector: 'redaction-license-information-screen', @@ -63,8 +63,8 @@ export class LicenseInformationScreenComponent implements OnInit { async ngOnInit() { this.totalLicensedNumberOfPages = this.configService.values.LICENSE_PAGE_COUNT || 0; - const startDate = moment(this.configService.values.LICENSE_START, 'DD-MM-YYYY'); - const endDate = moment(this.configService.values.LICENSE_END, 'DD-MM-YYYY'); + const startDate = dayjs(this.configService.values.LICENSE_START, 'DD-MM-YYYY'); + const endDate = dayjs(this.configService.values.LICENSE_END, 'DD-MM-YYYY'); await this._setMonthlyStats(startDate, endDate); @@ -77,7 +77,7 @@ export class LicenseInformationScreenComponent implements OnInit { firstValueFrom(this._licenseReportService.licenseReport({})), ]; - if (endDate.isBefore(moment())) { + if (endDate.isBefore(dayjs())) { const unlicensedConfig = { startDate: endDate.toDate(), }; @@ -111,20 +111,19 @@ export class LicenseInformationScreenComponent implements OnInit { window.location.href = `mailto:${this.configService.values.LICENSE_EMAIL}?subject=${subject}&body=${body}`; } - private async _setMonthlyStats(startDate: moment.Moment, endDate: moment.Moment) { + private async _setMonthlyStats(startDate: dayjs.Dayjs, endDate: dayjs.Dayjs) { const [startMonth, startYear] = [startDate.month(), startDate.year()]; const [endMonth, endYear] = [endDate.month(), endDate.year()]; - moment.locale(this._translateService.currentLang); - let m = startMonth; - let y = startYear; + let m: number = startMonth; + let y: number = startYear; const totalLicensedSeries = []; const cumulativePagesSeries = []; const promises = []; while (m <= endMonth && y <= endYear) { totalLicensedSeries.push({ - name: `${moment.localeData().monthsShort(moment([y, m]))} ${y}`, + name: `${dayjs.monthsShort()[m]} ${y}`, value: this.totalLicensedNumberOfPages, }); @@ -138,8 +137,8 @@ export class LicenseInformationScreenComponent implements OnInit { promises.push( firstValueFrom( this._licenseReportService.licenseReport({ - startDate: moment(`01-${m + 1}-${y}`, 'DD-MM-YYYY').toDate(), - endDate: moment(`01-${nm + 1}-${ny}`, 'DD-MM-YYYY').toDate(), + startDate: dayjs(`01-${m + 1}-${y}`, 'DD-M-YYYY').toDate(), + endDate: dayjs(`01-${nm + 1}-${ny}`, 'DD-M-YYYY').toDate(), }), ), ); @@ -157,11 +156,11 @@ export class LicenseInformationScreenComponent implements OnInit { for (const report of reports) { cumulativePages += report.numberOfAnalyzedPages; this.barChart.push({ - name: `${moment.localeData().monthsShort(moment([y, m]))} ${y}`, + name: `${dayjs.monthsShort()[m]} ${y}`, value: report.numberOfAnalyzedPages, }); cumulativePagesSeries.push({ - name: `${moment.localeData().monthsShort(moment([y, m]))} ${y}`, + name: `${dayjs.monthsShort()[m]} ${y}`, value: cumulativePages, }); m++; diff --git a/apps/red-ui/src/app/modules/archive/components/table-item/table-item.component.html b/apps/red-ui/src/app/modules/archive/components/table-item/table-item.component.html index e259f3edc..47c99ac14 100644 --- a/apps/red-ui/src/app/modules/archive/components/table-item/table-item.component.html +++ b/apps/red-ui/src/app/modules/archive/components/table-item/table-item.component.html @@ -2,7 +2,7 @@
-
{{ dossier.archivedTime | date: 'd MMM. yyyy' }}
+
{{ dossier.archivedTime | date: 'd MMM yyyy' }}
diff --git a/apps/red-ui/src/app/modules/dossier-overview/components/dossier-details-stats/dossier-details-stats.component.html b/apps/red-ui/src/app/modules/dossier-overview/components/dossier-details-stats/dossier-details-stats.component.html index 85500bec8..c1b0109b6 100644 --- a/apps/red-ui/src/app/modules/dossier-overview/components/dossier-details-stats/dossier-details-stats.component.html +++ b/apps/red-ui/src/app/modules/dossier-overview/components/dossier-details-stats/dossier-details-stats.component.html @@ -21,12 +21,12 @@ {{ 'dossier-overview.dossier-details.stats.analysed-pages' | translate: { count: stats.numberOfPages | number } }}
-
+
{{ 'dossier-overview.dossier-details.stats.created-on' | translate: { date: date } }}
-
+
{{ 'dossier-overview.dossier-details.stats.due-date' | translate: { date: dueDate } }}
@@ -62,7 +62,7 @@