Ver Fonte

✨ enable calculation from pre-defined roles

jmacura há 4 anos atrás
pai
commit
b69c5facdd

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

@@ -10,6 +10,7 @@ export class AdjusterPresetsService {
   activeSchema: Schema;
 
   schemaChanges: BehaviorSubject<Schema>;
+  problemChanges: BehaviorSubject<Problem>;
 
   roles: Role[] = [];
   schemas: Schema[] = [];
@@ -17,6 +18,12 @@ export class AdjusterPresetsService {
   constructor() {
     this.loadRoles();
     this.loadSchemas();
+    this.problemChanges = new BehaviorSubject(this.activeProblem ?? null);
+  }
+
+  applyProblem(problem: Problem) {
+    console.log(problem);
+    this.problemChanges.next(problem);
   }
 
   changeSchema(schema: Schema) {

+ 2 - 3
src/adjuster/adjuster.component.html

@@ -30,13 +30,12 @@
         <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" [(ngModel)]="adjusterPresetsService.activeProblem">
+      <select class="form-select" [(ngModel)]="adjusterPresetsService.activeProblem" (ngModelChange)="adjusterPresetsService.applyProblem($event)">
         <option *ngFor="let problem of adjusterPresetsService.getActiveRoleProblems()" [ngValue]="problem">{{problem.labels[0]['@value']}}</option>
       </select>
     </div>
     <button class="btn btn-secondary btn-sm" aria-expanded="false" aria-controls="advancedOptions" (click)="showAdvancedOptions = !showAdvancedOptions">
-      <span class="glyphicon cursor-pointer" [ngClass]="showAdvancedOptions ? 'icon-chevron-down' : 'icon-chevron-right'">
-      </span>
+      <span class="glyphicon cursor-pointer" [ngClass]="showAdvancedOptions ? 'icon-chevron-down' : 'icon-chevron-right'"></span>
       Advanced
     </button>
     <div class="p-2 center-block" [hidden]="!showAdvancedOptions">

+ 15 - 0
src/adjuster/adjuster.service.ts

@@ -99,6 +99,21 @@ export class AdjusterService {
         }
       });
     });
+
+    /* Listen to problem changes so the datasets can be turned on/off */
+    this.adjusterPresetsService.problemChanges.subscribe((newProblem) => {
+      if (!newProblem) {
+        return;
+      }
+      for (const factor of this.factors) {
+        for (const dataset of factor.datasets) {
+          dataset.included = false;
+          if (newProblem.requiredDatasets.includes(dataset.id)) {
+            dataset.included = true;
+          }
+        }
+      }
+    });
   }
 
   /**