diff --git a/src/frontend/app/app-material.module.ts b/src/frontend/app/app-material.module.ts index 9c87735570a300b00861ae69a80e6f0386d946ab..7642ae5b78c1e8bb07881e8abc9285fa990be7b7 100755 --- a/src/frontend/app/app-material.module.ts +++ b/src/frontend/app/app-material.module.ts @@ -63,10 +63,10 @@ import { MatCheckboxModule } from '@angular/material/checkbox'; import { MatChipsModule } from '@angular/material/chips'; import { MatNativeDateModule } from '@angular/material/core'; import { MatDatepickerModule } from '@angular/material/datepicker'; -import { MatDialogActions, MatDialogModule } from '@angular/material/dialog'; +import { MatDialogModule } from '@angular/material/dialog'; import { MatExpansionModule } from '@angular/material/expansion'; import { MatGridListModule } from '@angular/material/grid-list'; -import { MatIcon, MatIconModule } from '@angular/material/icon'; +import { MatIconModule } from '@angular/material/icon'; import { MatInputModule } from '@angular/material/input'; import { MatListModule } from '@angular/material/list'; import { MatMenuModule } from '@angular/material/menu'; @@ -78,7 +78,7 @@ import { MatSelectModule } from '@angular/material/select'; import { MatSidenavModule } from '@angular/material/sidenav'; import { MatSlideToggleModule } from '@angular/material/slide-toggle'; import { MatSliderModule } from '@angular/material/slider'; -import { MatSnackBar, MatSnackBarModule } from '@angular/material/snack-bar'; +import { MatSnackBarModule } from '@angular/material/snack-bar'; import { MatSortModule } from '@angular/material/sort'; import { MatStepperModule } from '@angular/material/stepper'; import { MatTableModule } from '@angular/material/table'; @@ -89,7 +89,7 @@ import { MatRippleModule } from '@angular/material/core'; import { ScrollingModule } from '@angular/cdk/scrolling'; import { MatTreeModule } from '@angular/material/tree'; -import { getFrenchPaginatorIntl, getTranslatedPaginator } from './french-paginator-intl'; +import { CustomMatPaginatorIntl } from '@plugins/mat-paginator-int'; @NgModule({ imports: [ @@ -169,7 +169,10 @@ import { getFrenchPaginatorIntl, getTranslatedPaginator } from './french-paginat DndModule ], providers: [ - { provide: MatPaginatorIntl, useValue: getTranslatedPaginator('FR-fr') }, + { + provide: MatPaginatorIntl, + useClass: CustomMatPaginatorIntl + }, { provide: MAT_DATE_LOCALE, useValue: 'FR-fr' }, { provide: DateAdapter, useClass: AppDateAdapter }, { provide: MAT_DATE_FORMATS, useValue: APP_DATE_FORMATS }, diff --git a/src/frontend/app/french-paginator-intl.ts b/src/frontend/app/french-paginator-intl.ts deleted file mode 100755 index 746f55426fd22cf496092cf7602c20c34e5ef103..0000000000000000000000000000000000000000 --- a/src/frontend/app/french-paginator-intl.ts +++ /dev/null @@ -1,55 +0,0 @@ -import { MatPaginatorIntl } from '@angular/material/paginator'; - - -const frenchRangeLabel = (page: number, pageSize: number, length: number) => { - if (length == 0 || pageSize == 0) { return `0 de ${length}`; } - - length = Math.max(length, 0); - - const startIndex = page * pageSize; - - // If the start index exceeds the list length, do not try and fix the end index to the end. - const endIndex = startIndex < length ? - Math.min(startIndex + pageSize, length) : - startIndex + pageSize; - - const nbPage = Math.ceil(length / pageSize); - //return `${startIndex + 1} - ${endIndex} / ${length} (${page})`; - return `Page ${page + 1} / ${nbPage}`; -}; - -const englishRangeLabel = (page: number, pageSize: number, length: number) => { - if (length == 0 || pageSize == 0) { return `0 of ${length}`; } - - return frenchRangeLabel(page, pageSize, length); -}; - - -export function getFrenchPaginatorIntl() { - const paginatorIntl = new MatPaginatorIntl(); - paginatorIntl.nextPageLabel = 'Page suivante'; - paginatorIntl.previousPageLabel = 'Page précédente'; - paginatorIntl.getRangeLabel = frenchRangeLabel; - paginatorIntl.itemsPerPageLabel = ''; - - return paginatorIntl; -} - - -export function getEnglishSeparator() { - const paginatorIntl = new MatPaginatorIntl(); - paginatorIntl.nextPageLabel = 'Next page'; - paginatorIntl.previousPageLabel = 'Previous page'; - paginatorIntl.getRangeLabel = englishRangeLabel; - paginatorIntl.itemsPerPageLabel = ''; - - return paginatorIntl; -} - -export function getTranslatedPaginator(langIso: string) { - if (langIso === 'fr-FR') { - return getFrenchPaginatorIntl(); - } - - return getEnglishSeparator(); -} diff --git a/src/frontend/plugins/mat-paginator-int.ts b/src/frontend/plugins/mat-paginator-int.ts new file mode 100644 index 0000000000000000000000000000000000000000..634f984eaaaf138a8fc8d6c3b656a0d99e5645e2 --- /dev/null +++ b/src/frontend/plugins/mat-paginator-int.ts @@ -0,0 +1,35 @@ + +import { Injectable } from '@angular/core'; +import { MatPaginatorIntl } from '@angular/material/paginator'; +import { TranslateService } from '@ngx-translate/core'; + +@Injectable() +export class CustomMatPaginatorIntl extends MatPaginatorIntl { + constructor( + public translate: TranslateService, + ) { + super(); + + this.getAndInitTranslations(); + } + + getAndInitTranslations() { + + this.itemsPerPageLabel = ''; + this.nextPageLabel = this.translate.instant('lang.nextPage'); + this.previousPageLabel = this.translate.instant('lang.prevPage'); + this.changes.next(); + + } + + getRangeLabel = (page: number, pageSize: number, length: number) => { + if (length === 0 || pageSize === 0) { + return `0 / ${length}`; + } + length = Math.max(length, 0); + + const nbPage = Math.ceil(length / pageSize); + + return `${this.translate.instant('lang.page')} ${page + 1} / ${nbPage}`; + } +} diff --git a/src/lang/lang-fr.json b/src/lang/lang-fr.json index c2aa9ae71dd792dc72a05274a57d2068a49e7b87..76fdf441a37d543f110757fd39d24f0b5be91ade 100644 --- a/src/lang/lang-fr.json +++ b/src/lang/lang-fr.json @@ -2069,5 +2069,7 @@ "archiveId": "Identifiant de l'archive", "checkReplyRecordManagementDesc": "Vérifie les <b>réponses</b> des paquets qui on été transférés au <b>système d'archivage électronique</b>.", "checkAcknowledgmentRecordManagementDesc": "Vérifie si le <b>système d'archivage électronique</b> a bien reçu les <b>paquets</b>.", - "checkInProgress": "Vérification en cours" + "checkInProgress": "Vérification en cours", + "nextPage": "Page suivante", + "prevPage": "Page précédente" }