Quellcode durchsuchen

🤡 mock role and schema pickers

jmacura vor 4 Jahren
Ursprung
Commit
21dc9b61b5

+ 67 - 0
src/adjuster/adjuster-presets.service.ts

@@ -0,0 +1,67 @@
+import {Injectable} from '@angular/core';
+
+import ontology from '../data/rural_attractiveness.owl.json';
+
+@Injectable({providedIn: 'root'})
+export class AdjusterPresetsService {
+  activeProblem;
+  activeRole;
+  activeSchema;
+
+  roles = [];
+  schemas = [];
+
+  constructor() {
+    this.loadRoles();
+    this.loadSchemas();
+  }
+
+  getActiveRoleProblems() {
+    return this.activeRole.problems ?? [];
+  }
+
+  loadRoles() {
+    this.roles = ontology
+      .filter((subject) => subject['@type']?.includes("http://www.semanticweb.org/attractiveness/Role"))
+      .map((subject) => {
+        return {
+          id: subject['@id'],
+          labels: subject["http://www.w3.org/2000/01/rdf-schema#label"],
+          problems: subject["http://www.semanticweb.org/attractiveness/solvesProblem"].map(
+            (problem) => {
+              const problemEntity = ontology.find((subject) => subject['@id'] == problem['@id']);
+              return {
+                id: problem['@id'],
+                labels: problemEntity?.["http://www.w3.org/2000/01/rdf-schema#label"],
+                requiredDatasets: problemEntity?.["http://www.semanticweb.org/attractiveness/requiresDataset"].map((dataset) => dataset['@id'])
+              }
+            }
+          )
+        }
+      });
+    this.activeRole = this.roles[0];
+    this.activeProblem = this.roles[0].problems[0];
+    console.log("Roles", this.roles);
+  }
+
+  loadSchemas() {
+    this.schemas = ontology
+      .filter((subject) => subject['@type']?.includes("http://www.semanticweb.org/attractiveness/ClassificationSchema"))
+      .map((subject) => {
+        return {
+          id: subject['@id'],
+          labels: subject["http://www.w3.org/2000/01/rdf-schema#label"],
+          groups: subject["http://www.semanticweb.org/attractiveness/consistsOf"].map(
+            (group) => {
+              return {
+                id: group['@id'],
+                labels: ontology.find((subject) => subject['@id'] == group['@id'])?.["http://www.w3.org/2000/01/rdf-schema#label"]
+              }
+            }
+          )
+        }
+      });
+    this.activeSchema = this.schemas[0];
+    console.log("Schemas", this.schemas);
+  }
+}

+ 18 - 0
src/adjuster/adjuster.component.html

@@ -23,6 +23,24 @@
       <div class="text-warning pt-2" [hidden]="!noDataSelected() || errorMsg">{{'ADJUSTER.noDataSelectedMsg' | translate}}</div>
       <div class="text-danger pt-2" [hidden]="!errorMsg">{{'ADJUSTER.serverError' | translate}}: {{errorMsg}}</div>
     </div>
+    <!-- TODO: i18n this-->
+    <div class="p-2 center-block">
+      My role is:&emsp;
+      <select class="form-select form-select-lg" [(ngModel)]="adjusterPresetsService.activeRole">
+        <option *ngFor="let role of adjusterPresetsService.roles" [ngValue]="role">{{role.labels[0]['@value']}}</option>
+      </select>
+      and I want to solve a problem with:&emsp;
+      <select class="form-select form-select-lg" [(ngModel)]="adjusterPresetsService.activeProblem">
+        <option *ngFor="let problem of adjusterPresetsService.getActiveRoleProblems()" [ngValue]="problem">{{problem.labels[0]['@value']}}</option>
+      </select>
+    </div>
+    <div class="p-2 center-block">
+      Classify factors by schema:&emsp;
+      <select class="form-select form-select-lg" [(ngModel)]="adjusterPresetsService.activeSchema">
+        <option *ngFor="let schema of adjusterPresetsService.schemas" [ngValue]="schema">{{schema.labels[0]['@value']}}</option>
+      </select>
+    </div>
+    <!-- TODO: end-->
     <div class="p-2 center-block" [hidden]="!adjusterService.allowClusters">
       <div class="pt-2 text-secondary">{{'ADJUSTER.numberOfClusters' | translate}}: {{adjusterService.numberOfClusters}}</div>
       <input type="range" class="form-range" [(ngModel)]="adjusterService.numberOfClusters" min="5" max="15" step="1">

+ 3 - 0
src/adjuster/adjuster.component.ts

@@ -6,6 +6,7 @@ import {HsPanelComponent} from 'hslayers-ng';
 
 //import {AdjusterEventService} from './adjuster-event.service';
 import {AdjusterLoaderComponent} from './adjuster-loader.component';
+import {AdjusterPresetsService} from './adjuster-presets.service';
 import {AdjusterService} from './adjuster.service';
 
 @Component({
@@ -23,6 +24,7 @@ export class AdjusterComponent implements HsPanelComponent, OnInit {
 
   constructor(
     public adjusterService: AdjusterService,
+    public adjusterPresetsService: AdjusterPresetsService,
     public hsDialogContainerService: HsDialogContainerService,
     public hsLayoutService: HsLayoutService
   ) {
@@ -65,6 +67,7 @@ export class AdjusterComponent implements HsPanelComponent, OnInit {
       !this.adjusterService.allowIndex && !this.adjusterService.allowClusters
     );
   }
+
   /*selectMethod(): void {
     this.adjusterService.method = this.method;
     this.adjusterEventService.methodChanged.next(this.method);