This is an automated email from the ASF dual-hosted git repository. dgnatyshyn pushed a commit to branch DLAB-1778 in repository https://gitbox.apache.org/repos/asf/incubator-dlab.git
The following commit(s) were added to refs/heads/DLAB-1778 by this push: new 08f2f60 [DLAB-2039]: Localization changes 08f2f60 is described below commit 08f2f60e6308d4e8674bf6c4f2aafacf8af31ff0 Author: Dmytro_Gnatyshyn <di1...@ukr.net> AuthorDate: Fri Sep 25 17:10:45 2020 +0300 [DLAB-2039]: Localization changes --- .../main/resources/webapp/src/app/app.module.ts | 6 ++--- .../app/core/pipes/local-currency-pipe/index.ts | 2 +- .../local-currency-pipe/local-currency.pipe.ts | 30 +++++++++++++++++----- .../core/pipes/local-date-pipe/local-date.pipe.ts | 9 +++---- .../src/app/core/services/localization.service.ts | 21 +++++++-------- .../audit/audit-grid/audit-grid.component.html | 2 +- .../audit/audit-grid/audit-grid.component.ts | 2 ++ .../webapp/src/app/reports/audit/audit.module.ts | 4 ++- .../reporting-grid/reporting-grid.component.html | 4 +-- .../src/app/reports/reporting/reporting.module.ts | 20 ++++++++------- .../bucket-browser/bucket-browser.component.html | 2 +- .../bucket-browser/bucket-browser.module.ts | 22 ++++++++-------- .../cost-details-dialog.component.html | 8 +++--- .../exploratory/cost-details-dialog/index.ts | 4 ++- .../webapp/src/app/shared/time-picker/index.ts | 3 ++- .../shared/time-picker/time-picker.component.ts | 2 +- 16 files changed, 81 insertions(+), 60 deletions(-) diff --git a/services/self-service/src/main/resources/webapp/src/app/app.module.ts b/services/self-service/src/main/resources/webapp/src/app/app.module.ts index bc2e14a..a9a9b43 100644 --- a/services/self-service/src/main/resources/webapp/src/app/app.module.ts +++ b/services/self-service/src/main/resources/webapp/src/app/app.module.ts @@ -73,9 +73,9 @@ LocalizationService.registerCulture(window.navigator.language); useClass: HashLocationStrategy, useValue: '/' }, - { provide: LOCALE_ID, - deps: [LocalizationService], - useFactory: (localizationService) => localizationService.getLocale() } + // { provide: LOCALE_ID, + // deps: [LocalizationService], + // useFactory: (localizationService) => localizationService.getLocale() } ], bootstrap: [AppComponent] }) diff --git a/services/self-service/src/main/resources/webapp/src/app/core/pipes/local-currency-pipe/index.ts b/services/self-service/src/main/resources/webapp/src/app/core/pipes/local-currency-pipe/index.ts index d6373bc..43b33ca 100644 --- a/services/self-service/src/main/resources/webapp/src/app/core/pipes/local-currency-pipe/index.ts +++ b/services/self-service/src/main/resources/webapp/src/app/core/pipes/local-currency-pipe/index.ts @@ -27,4 +27,4 @@ import { LocalCurrencyPipe } from './local-currency.pipe'; exports: [LocalCurrencyPipe] }) -export class KeysPipeModule { } +export class LocalCurrencyModule { } diff --git a/services/self-service/src/main/resources/webapp/src/app/core/pipes/local-currency-pipe/local-currency.pipe.ts b/services/self-service/src/main/resources/webapp/src/app/core/pipes/local-currency-pipe/local-currency.pipe.ts index 4dde21f..41c2988 100644 --- a/services/self-service/src/main/resources/webapp/src/app/core/pipes/local-currency-pipe/local-currency.pipe.ts +++ b/services/self-service/src/main/resources/webapp/src/app/core/pipes/local-currency-pipe/local-currency.pipe.ts @@ -18,15 +18,31 @@ */ import { Pipe, PipeTransform } from '@angular/core'; +import {formatCurrency, getCurrencySymbol} from '@angular/common'; +import {LocalizationService} from '../../services/localization.service'; -@Pipe({ name: 'keys' }) +@Pipe({ name: 'localcurrency' }) export class LocalCurrencyPipe implements PipeTransform { - transform(value): any { - const keys = []; - for (const key in value) { - keys.push({ key: key, value: value[key]}); - } - return keys; + constructor(private localizationService: LocalizationService) { } + transform( + value: number, + currencyCode: string = 'USD', + display: + | 'code' + | 'symbol' + | 'symbol-narrow' + | string + | boolean = 'symbol', + digitsInfo: string = '', + locale: string = this.localizationService.locale, + ): string | null { + return formatCurrency( + value, + locale, + getCurrencySymbol(currencyCode, 'wide'), + currencyCode, + digitsInfo, + ); } } diff --git a/services/self-service/src/main/resources/webapp/src/app/core/pipes/local-date-pipe/local-date.pipe.ts b/services/self-service/src/main/resources/webapp/src/app/core/pipes/local-date-pipe/local-date.pipe.ts index 5c623ff..c55953b 100644 --- a/services/self-service/src/main/resources/webapp/src/app/core/pipes/local-date-pipe/local-date.pipe.ts +++ b/services/self-service/src/main/resources/webapp/src/app/core/pipes/local-date-pipe/local-date.pipe.ts @@ -26,12 +26,9 @@ import {formatDate} from '@angular/common'; export class LocalDatePipe implements PipeTransform { constructor(private localizationService: LocalizationService) { } - transform(value: any, format: string) { + transform(value: any, format: string = 'shortDate') { + if (!value) { return ; } - - if (!value) { return ''; } - if (!format) { format = 'shortDate'; } - - return formatDate(value, format, 'en', this.localizationService.getTzOffset()); + return formatDate(value, format, this.localizationService.locale); } } diff --git a/services/self-service/src/main/resources/webapp/src/app/core/services/localization.service.ts b/services/self-service/src/main/resources/webapp/src/app/core/services/localization.service.ts index dc86448..ab19752 100644 --- a/services/self-service/src/main/resources/webapp/src/app/core/services/localization.service.ts +++ b/services/self-service/src/main/resources/webapp/src/app/core/services/localization.service.ts @@ -28,32 +28,29 @@ import 'moment-timezone'; }) export class LocalizationService { public timezone = _moment().format('Z'); - private _locale = 'en'; + private _locale; constructor() { } get locale() { - this._locale = window.navigator.language; + if (!this._locale) { + let locale = window.navigator.language; + if (locale.indexOf('-') !== -1 && locale !== 'en-GB') { + locale = locale.substr(0, locale.indexOf('-')); + } + this._locale = locale; + } return this._locale; } - public getTzOffset() { - return this.timezone; - } - public static registerCulture(culture: string) { console.log(culture); - if (culture === 'uk-UA' || culture === 'en-US') { + if (culture.indexOf('-') !== -1 && culture !== 'en-GB') { culture = culture.substr(0, culture.indexOf('-')); } - /* webpackInclude: /(uk|sv)\.js$/ */ import( `@angular/common/locales/${culture}.js` ).then(module => registerLocaleData(module.default)); } - - public getLocale() { - return this.locale; - } } diff --git a/services/self-service/src/main/resources/webapp/src/app/reports/audit/audit-grid/audit-grid.component.html b/services/self-service/src/main/resources/webapp/src/app/reports/audit/audit-grid/audit-grid.component.html index 795392f..e5087d9 100644 --- a/services/self-service/src/main/resources/webapp/src/app/reports/audit/audit-grid/audit-grid.component.html +++ b/services/self-service/src/main/resources/webapp/src/app/reports/audit/audit-grid/audit-grid.component.html @@ -29,7 +29,7 @@ </i> </button> </th> - <td mat-cell *matCellDef="let element"> {{element.timestamp | date: 'short'}} </td> + <td mat-cell *matCellDef="let element"> {{element.timestamp | localDate : 'short'}} </td> <td mat-footer-cell *matFooterCellDef class="table-footer"> </td> </ng-container> diff --git a/services/self-service/src/main/resources/webapp/src/app/reports/audit/audit-grid/audit-grid.component.ts b/services/self-service/src/main/resources/webapp/src/app/reports/audit/audit-grid/audit-grid.component.ts index faf887d..cc63092 100644 --- a/services/self-service/src/main/resources/webapp/src/app/reports/audit/audit-grid/audit-grid.component.ts +++ b/services/self-service/src/main/resources/webapp/src/app/reports/audit/audit-grid/audit-grid.component.ts @@ -22,6 +22,7 @@ import {FilterAuditModel} from '../filter-audit.model'; import {MAT_DIALOG_DATA, MatDialog, MatDialogRef} from '@angular/material/dialog'; import {AuditService} from '../../../core/services/audit.service'; import {SortUtils} from '../../../core/util'; +import {LocalizationService} from '../../../core/services/localization.service'; export interface AuditItem { @@ -64,6 +65,7 @@ export class AuditGridComponent implements OnInit { public dialogRef: MatDialogRef<AuditInfoDialogComponent>, public dialog: MatDialog, private auditService: AuditService, + private localizationService: LocalizationService, ) { } diff --git a/services/self-service/src/main/resources/webapp/src/app/reports/audit/audit.module.ts b/services/self-service/src/main/resources/webapp/src/app/reports/audit/audit.module.ts index a572922..dbffc6a 100644 --- a/services/self-service/src/main/resources/webapp/src/app/reports/audit/audit.module.ts +++ b/services/self-service/src/main/resources/webapp/src/app/reports/audit/audit.module.ts @@ -27,6 +27,7 @@ import {AuditComponent} from './audit.component'; import {AuditGridComponent, AuditInfoDialogComponent} from './audit-grid/audit-grid.component'; import {AuditToolbarComponent} from './audit-toolbar/audit-toolbar.component'; import {LocalDatePipeModule} from '../../core/pipes/local-date-pipe'; +import {LocalCurrencyModule} from '../../core/pipes/local-currency-pipe'; @NgModule({ imports: [ @@ -38,7 +39,8 @@ import {LocalDatePipeModule} from '../../core/pipes/local-date-pipe'; LineBreaksPipeModule, NgDateRangePickerModule, MaterialModule, - LocalDatePipeModule + LocalDatePipeModule, + LocalCurrencyModule ], declarations: [ AuditGridComponent, diff --git a/services/self-service/src/main/resources/webapp/src/app/reports/reporting/reporting-grid/reporting-grid.component.html b/services/self-service/src/main/resources/webapp/src/app/reports/reporting/reporting-grid/reporting-grid.component.html index 8fe70df..0d1e72b 100644 --- a/services/self-service/src/main/resources/webapp/src/app/reports/reporting/reporting-grid/reporting-grid.component.html +++ b/services/self-service/src/main/resources/webapp/src/app/reports/reporting/reporting-grid/reporting-grid.component.html @@ -155,7 +155,7 @@ </td> <td mat-footer-cell *matFooterCellDef class="table-footer total-cost" [colSpan]="2" [ngClass]="{'right-sticky': reportData?.length < 5}"> <span class="strong"> - Total <span *ngIf="reportData?.length">{{fullReport['total_cost'] | currency: fullReport['currency'] :'symbol'}}</span> + Total <span *ngIf="reportData?.length">{{fullReport['total_cost'] | localcurrency}}</span> </span> </td> </ng-container> @@ -174,7 +174,7 @@ </th> <td mat-cell *matCellDef="let element" [ngClass]="{'right-sticky': reportData?.length < 5}" > - {{element.cost | currency: element['currency'] :'symbol'}} + {{element.cost | localcurrency }} </td > <td mat-footer-cell *matFooterCellDef class="table-footer total-cost d-none"> </td> diff --git a/services/self-service/src/main/resources/webapp/src/app/reports/reporting/reporting.module.ts b/services/self-service/src/main/resources/webapp/src/app/reports/reporting/reporting.module.ts index 2e3ccb6..65d7ea9 100644 --- a/services/self-service/src/main/resources/webapp/src/app/reports/reporting/reporting.module.ts +++ b/services/self-service/src/main/resources/webapp/src/app/reports/reporting/reporting.module.ts @@ -28,17 +28,19 @@ import { ReportingComponent } from './reporting.component'; import { KeysPipeModule, LineBreaksPipeModule } from '../../core/pipes'; import { ReportingGridComponent } from './reporting-grid/reporting-grid.component'; import { ToolbarComponent } from './toolbar/toolbar.component'; +import {LocalCurrencyModule} from '../../core/pipes/local-currency-pipe'; @NgModule({ - imports: [ - CommonModule, - FormsModule, - FormControlsModule, - KeysPipeModule, - LineBreaksPipeModule, - NgDateRangePickerModule, - MaterialModule - ], + imports: [ + CommonModule, + FormsModule, + FormControlsModule, + KeysPipeModule, + LineBreaksPipeModule, + NgDateRangePickerModule, + MaterialModule, + LocalCurrencyModule + ], declarations: [ ReportingComponent, ReportingGridComponent, diff --git a/services/self-service/src/main/resources/webapp/src/app/resources/bucket-browser/bucket-browser.component.html b/services/self-service/src/main/resources/webapp/src/app/resources/bucket-browser/bucket-browser.component.html index f0cbf73..3fd2680 100644 --- a/services/self-service/src/main/resources/webapp/src/app/resources/bucket-browser/bucket-browser.component.html +++ b/services/self-service/src/main/resources/webapp/src/app/resources/bucket-browser/bucket-browser.component.html @@ -190,7 +190,7 @@ </span> </div> <div class="size">{{file.object?.size | convertFileSize}}</div> - <div class="date" *ngIf="!file.isDownloading">{{file.object?.lastModifiedDate | date: 'short' }}</div> + <div class="date" *ngIf="!file.isDownloading">{{file.object?.lastModifiedDate | localDate : 'short' }}</div> <div class="progress-wrapper" *ngIf="file.isDownloading"> <div class="progres"> <span class="progress-bar-text">{{file.progress || 0}}% Downloading...</span> diff --git a/services/self-service/src/main/resources/webapp/src/app/resources/bucket-browser/bucket-browser.module.ts b/services/self-service/src/main/resources/webapp/src/app/resources/bucket-browser/bucket-browser.module.ts index 2654704..66fd74d 100644 --- a/services/self-service/src/main/resources/webapp/src/app/resources/bucket-browser/bucket-browser.module.ts +++ b/services/self-service/src/main/resources/webapp/src/app/resources/bucket-browser/bucket-browser.module.ts @@ -32,18 +32,20 @@ import {BucketDataService} from './bucket-data.service'; import {BucketConfirmationDialogComponent} from './bucket-confirmation-dialog/bucket-confirmation-dialog.component'; import {BucketTreeComponent} from './buckets-tree/bucket-tree.component'; import {ConvertFileSizePipeModule} from '../../core/pipes/convert-file-size'; +import {LocalDatePipeModule} from '../../core/pipes/local-date-pipe'; @NgModule({ - imports: [ - CommonModule, - FormsModule, - ReactiveFormsModule, - ResourcesGridModule, - ExploratoryEnvironmentCreateModule, - MaterialModule, - MatTreeModule, - ConvertFileSizePipeModule - ], + imports: [ + CommonModule, + FormsModule, + ReactiveFormsModule, + ResourcesGridModule, + ExploratoryEnvironmentCreateModule, + MaterialModule, + MatTreeModule, + ConvertFileSizePipeModule, + LocalDatePipeModule + ], declarations: [ BucketBrowserComponent, FolderTreeComponent, diff --git a/services/self-service/src/main/resources/webapp/src/app/resources/exploratory/cost-details-dialog/cost-details-dialog.component.html b/services/self-service/src/main/resources/webapp/src/app/resources/exploratory/cost-details-dialog/cost-details-dialog.component.html index e830d3c..b3ae086 100644 --- a/services/self-service/src/main/resources/webapp/src/app/resources/exploratory/cost-details-dialog/cost-details-dialog.component.html +++ b/services/self-service/src/main/resources/webapp/src/app/resources/exploratory/cost-details-dialog/cost-details-dialog.component.html @@ -50,15 +50,15 @@ </div> <div class="service">{{ item.product }}</div> <!-- <div class="resource-type" >{{ item.resourse_type }}</div>--> - <div class="usage-date-start">{{ item.from.join('/') | date : 'shortDate'}}</div> - <div class="usage-date-end">{{ item.to.join('/') | date : 'shortDate'}}</div> - <div class="cost-currency">{{ item.cost | currency: item.currency :'code' }}</div> + <div class="usage-date-start">{{ item.from.join('/') | localDate : 'shortDate'}}</div> + <div class="usage-date-end">{{ item.to.join('/') | localDate : 'shortDate'}}</div> + <div class="cost-currency">{{ item.cost | localcurrency }}</div> </mat-list-item> </div> </mat-list> <div class="total"> - <strong>Total: </strong>{{ notebook.cost | currency: notebook.currency_code :'code' }}</div> + <strong>Total: </strong>{{ notebook.cost | localcurrency }}</div> </div> </div> </div>:'USD':'code' diff --git a/services/self-service/src/main/resources/webapp/src/app/resources/exploratory/cost-details-dialog/index.ts b/services/self-service/src/main/resources/webapp/src/app/resources/exploratory/cost-details-dialog/index.ts index b95c183..647257d 100644 --- a/services/self-service/src/main/resources/webapp/src/app/resources/exploratory/cost-details-dialog/index.ts +++ b/services/self-service/src/main/resources/webapp/src/app/resources/exploratory/cost-details-dialog/index.ts @@ -22,11 +22,13 @@ import { CommonModule } from '@angular/common'; import { MaterialModule } from '../../../shared/material.module'; import { CostDetailsDialogComponent } from './cost-details-dialog.component'; +import {LocalCurrencyModule} from '../../../core/pipes/local-currency-pipe'; +import {LocalDatePipeModule} from '../../../core/pipes/local-date-pipe'; export * from './cost-details-dialog.component'; @NgModule({ - imports: [CommonModule, MaterialModule], + imports: [CommonModule, MaterialModule, LocalCurrencyModule, LocalDatePipeModule], declarations: [CostDetailsDialogComponent], entryComponents: [CostDetailsDialogComponent], exports: [CostDetailsDialogComponent] diff --git a/services/self-service/src/main/resources/webapp/src/app/shared/time-picker/index.ts b/services/self-service/src/main/resources/webapp/src/app/shared/time-picker/index.ts index 9161e89..4133045 100644 --- a/services/self-service/src/main/resources/webapp/src/app/shared/time-picker/index.ts +++ b/services/self-service/src/main/resources/webapp/src/app/shared/time-picker/index.ts @@ -28,11 +28,12 @@ import { TimePickerComponent, TimePickerDialogComponent } from './time-picker.component'; +import {LocalDatePipeModule} from '../../core/pipes/local-date-pipe'; export * from './time-picker.component'; @NgModule({ - imports: [CommonModule, FormsModule, ReactiveFormsModule, MaterialModule], + imports: [CommonModule, FormsModule, ReactiveFormsModule, MaterialModule, LocalDatePipeModule], declarations: [TimePickerComponent, TimePickerDialogComponent, TimeCoverComponent, TickerComponent], entryComponents: [TimePickerDialogComponent], exports: [TimePickerComponent] diff --git a/services/self-service/src/main/resources/webapp/src/app/shared/time-picker/time-picker.component.ts b/services/self-service/src/main/resources/webapp/src/app/shared/time-picker/time-picker.component.ts index 1abe35f..cce289c 100644 --- a/services/self-service/src/main/resources/webapp/src/app/shared/time-picker/time-picker.component.ts +++ b/services/self-service/src/main/resources/webapp/src/app/shared/time-picker/time-picker.component.ts @@ -29,7 +29,7 @@ type TimeFormatAlias = TimeFormat; template: ` <div class="time-picker"> <mat-form-field class="time-select"> - <input matInput placeholder="{{ label }}" [value]="selectedTime | date: 'shortTime'" (input)="checkEmpty($event.target['value'])" [disabled]="disable"> + <input matInput placeholder="{{ label }}" [value]="selectedTime | localDate : 'shortTime'" (input)="checkEmpty($event.target['value'])" [disabled]="disable"> <mat-icon matSuffix [ngClass]="{'not-allowed': disable}" (click)="openDatePickerDialog($event)" disabled="disable">access_time</mat-icon> </mat-form-field> </div>`, --------------------------------------------------------------------- To unsubscribe, e-mail: commits-unsubscr...@dlab.apache.org For additional commands, e-mail: commits-h...@dlab.apache.org