Преглед изворни кода

🌐 ✨ i18n factor and dataset names

jmacura пре 4 година
родитељ
комит
a40ff55078

+ 17 - 3
src/adjuster/adjuster-presets.service.ts

@@ -1,5 +1,5 @@
 import {Injectable} from '@angular/core';
-import {BehaviorSubject, Subject} from 'rxjs';
+import {Subject} from 'rxjs';
 
 import {AdjusterEventService} from './adjuster-event.service';
 
@@ -43,14 +43,14 @@ export class AdjusterPresetsService {
     return this.activeSchema.groups ?? [];
   }
 
-  getGroupDatasets(groupID: string): Array<any> {
+  getGroupDatasets(groupID: string): Array<Dataset> {
     return this.ontology
       .find((subject) => subject['@id'] == groupID)["http://www.semanticweb.org/attractiveness/hasDataset"]
       ?.map((entity) => {
         const datasetEntity = this.ontology.find((subject) => subject['@id'] == entity['@id']);
         return {
           id: datasetEntity["@id"],
-          name: datasetEntity["http://www.w3.org/2000/01/rdf-schema#label"][0]["@value"], //TODO: i18n this!
+          labels: datasetEntity["http://www.w3.org/2000/01/rdf-schema#label"], //TODO: i18n this!
           desc: '',
           included: true
         }
@@ -110,11 +110,25 @@ export class AdjusterPresetsService {
   }
 }
 
+export type Dataset = {
+  id: string;
+  labels: Label[];
+  desc: string;
+  included: boolean;
+}
+
 export type DatasetGroup = {
   id: string;
   labels?: Label[];
 };
 
+export type Factor = {
+  id: string;
+  labels: Label[];
+  weight: number;
+  datasets: Dataset[];
+};
+
 export type Label = {
   "@value": string
   "@language"?: string,

+ 3 - 3
src/adjuster/adjuster.service.ts

@@ -14,7 +14,7 @@ import attractivenessConfig from '../attractiveness.config.json';
 import clusteringMethods from '../data/clustering_methods.json';
 import {AdjusterEventService} from './adjuster-event.service';
 import {AdjusterLegendService} from './adjuster-legend.service';
-import {AdjusterPresetsService} from './adjuster-presets.service';
+import {AdjusterPresetsService, Factor} from './adjuster-presets.service';
 import {obce, obceIndexLayer, osmLayer} from '../app.config';
 
 @Injectable({providedIn: 'root'})
@@ -29,7 +29,7 @@ export class AdjusterService {
   allowClusters = true;
   /** Used in the UI as a selector */
   allowIndex = true;
-  factors = [];
+  factors: Array<Factor> = [];
   layersReady = new Set();
   //method: string;
   methods: Array<MethodDescription>;
@@ -95,7 +95,7 @@ export class AdjusterService {
       this.factors = newSchema.groups.map((group) => {
         return {
           id: group.id,
-          name: group.labels[0]['@value'],
+          labels: group.labels,
           //FIXME: load weights from file
           weight: 0.5,
           datasets: this.adjusterPresetsService.getGroupDatasets(group.id)

+ 2 - 2
src/adjuster/dataset-list/dataset-list.component.html

@@ -3,7 +3,7 @@
     <span class="glyphicon cursor-pointer"
       [ngClass]="datasetlistVisible ? 'icon-chevron-down' : 'icon-chevron-right'"
       (click)="datasetlistVisible = !datasetlistVisible"></span>
-    <label class="ps-2 cursor-pointer" (click)="datasetlistVisible = !datasetlistVisible">{{factor.name}}</label>
+    <label class="ps-2 cursor-pointer" (click)="datasetlistVisible = !datasetlistVisible">{{getLabelInCurrentLang(factor.labels)}}</label>
   </div>
   <div class="p-2">{{(factor.weight * 100).toFixed(0)}}&nbsp;%</div>
 </div>
@@ -20,7 +20,7 @@
       (click)="descriptionVisible = !descriptionVisible"></span-->
     <!--label class="ps-2 cursor-pointer text-secondary"
       (click)="descriptionVisible = !descriptionVisible">{{dataset.name}}</label-->
-      <label><a class="text-info non-underlined-link" (click)="showMetadataWindow(dataset)">{{dataset.name}}</a></label>
+      <label><a class="text-info non-underlined-link" (click)="showMetadataWindow(dataset)">{{getLabelInCurrentLang(dataset.labels)}}</a></label>
     <!--div class="p-2 mb-2 text-info" [hidden]="!descriptionVisible">
       {{dataset.desc}}
     </div-->

+ 14 - 2
src/adjuster/dataset-list/dataset-list.component.ts

@@ -1,7 +1,11 @@
 import {Component, Input, OnInit} from '@angular/core';
 
-import {HsDialogContainerService} from 'hslayers-ng';
+import {
+  HsDialogContainerService,
+  HsLanguageService
+} from 'hslayers-ng';
 
+import {AdjusterPresetsService} from '../adjuster-presets.service';
 import {MetadataDialogComponent} from '../metadata-dialog/metadata-dialog.component';
 
 @Component({
@@ -13,10 +17,18 @@ import {MetadataDialogComponent} from '../metadata-dialog/metadata-dialog.compon
 export class DatasetListComponent implements OnInit {
   @Input() factor;
   datasetlistVisible = false;
-  constructor(public hsDialogContainerService: HsDialogContainerService) {}
+  constructor(
+    public adjusterPresetsService: AdjusterPresetsService,
+    public hsDialogContainerService: HsDialogContainerService,
+    public hsLanguageService: HsLanguageService
+  ) {}
 
   ngOnInit() {}
 
+  getLabelInCurrentLang(labels) {
+    return this.adjusterPresetsService.getLabelInLang(labels, this.hsLanguageService.getCurrentLanguageCode());
+  }
+
   showMetadataWindow(dataset) {
     this.hsDialogContainerService.create(MetadataDialogComponent, {title: dataset.name});
   }