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

Reply via email to