From c1c02249343530cdd826e6c0070553112d37cb96 Mon Sep 17 00:00:00 2001
From: rhenck <richard.henck@iqb.hu-berlin.de>
Date: Mon, 25 Oct 2021 11:06:53 +0200
Subject: [PATCH] [editor] Return only touched values from Player-Dialog

All values returned are set. This way there are less useless calls.
---
 projects/editor/src/app/dialog.service.ts | 39 +++++++++++------------
 1 file changed, 19 insertions(+), 20 deletions(-)

diff --git a/projects/editor/src/app/dialog.service.ts b/projects/editor/src/app/dialog.service.ts
index d03c60cfb..aa73b5fef 100644
--- a/projects/editor/src/app/dialog.service.ts
+++ b/projects/editor/src/app/dialog.service.ts
@@ -139,56 +139,56 @@ export class RichTextEditDialog {
   template: `
     <mat-dialog-content fxLayout="row">
       <div class="property-column" fxLayout="column">
-        <mat-checkbox [checked]="newPlayerConfig.autostart"
+        <mat-checkbox [checked]="newPlayerConfig.autostart || data.player.autostart"
                       (change)="newPlayerConfig.autostart = $event.checked">
           Autostart
         </mat-checkbox>
         <mat-form-field *ngIf="newPlayerConfig.autostart" appearance="fill">
           <mat-label>Autostart Verzögerung</mat-label>
-          <input matInput type="number" [value]="newPlayerConfig.autostartDelay"
+          <input matInput type="number" [value]="newPlayerConfig.autostartDelay || data.player.autostartDelay"
                  (input)="newPlayerConfig.autostartDelay = $any($event.target).value">
         </mat-form-field>
-        <mat-checkbox [checked]="newPlayerConfig.loop"
+        <mat-checkbox [checked]="newPlayerConfig.loop || data.player.loop"
                       (change)="newPlayerConfig.loop = $event.checked">
           Loop
         </mat-checkbox>
-        <mat-checkbox [checked]="newPlayerConfig.startControl"
+        <mat-checkbox [checked]="newPlayerConfig.startControl || data.player.startControl"
                       (change)="newPlayerConfig.startControl = $event.checked">
           startControl
         </mat-checkbox>
-        <mat-checkbox [checked]="newPlayerConfig.pauseControl"
+        <mat-checkbox [checked]="newPlayerConfig.pauseControl || data.player.pauseControl"
                       (change)="newPlayerConfig.pauseControl = $event.checked">
           pauseControl
         </mat-checkbox>
-        <mat-checkbox [checked]="newPlayerConfig.stopControl"
+        <mat-checkbox [checked]="newPlayerConfig.stopControl || data.player.stopControl"
                       (change)="newPlayerConfig.stopControl = $event.checked">
           stopControl
         </mat-checkbox>
-        <mat-checkbox [checked]="newPlayerConfig.progressBar"
+        <mat-checkbox [checked]="newPlayerConfig.progressBar || data.player.progressBar"
                       (change)="newPlayerConfig.progressBar = $event.checked">
           progressBar
         </mat-checkbox>
-        <mat-checkbox [checked]="newPlayerConfig.interactiveProgressbar"
+        <mat-checkbox [checked]="newPlayerConfig.interactiveProgressbar || data.player.interactiveProgressbar"
                       (change)="newPlayerConfig.interactiveProgressbar = $event.checked">
           interactiveProgressbar
         </mat-checkbox>
-        <mat-checkbox [checked]="newPlayerConfig.volumeControl"
+        <mat-checkbox [checked]="newPlayerConfig.volumeControl || data.player.volumeControl"
                       (change)="newPlayerConfig.volumeControl = $event.checked">
           volumeControl
         </mat-checkbox>
-        <mat-checkbox [checked]="newPlayerConfig.uninterruptible"
+        <mat-checkbox [checked]="newPlayerConfig.uninterruptible || data.player.uninterruptible"
                       (change)="newPlayerConfig.uninterruptible = $event.checked">
           uninterruptible
         </mat-checkbox>
-        <mat-checkbox [checked]="newPlayerConfig.hideOtherPages"
+        <mat-checkbox [checked]="newPlayerConfig.hideOtherPages || data.player.hideOtherPages"
                       (change)="newPlayerConfig.hideOtherPages = $event.checked">
           hideOtherPages
         </mat-checkbox>
-        <mat-checkbox [checked]="newPlayerConfig.showRestRuns"
+        <mat-checkbox [checked]="newPlayerConfig.showRestRuns || data.player.showRestRuns"
                       (change)="newPlayerConfig.showRestRuns = $event.checked">
           showRestRuns
         </mat-checkbox>
-        <mat-checkbox [checked]="newPlayerConfig.showRestTime"
+        <mat-checkbox [checked]="newPlayerConfig.showRestTime || data.player.showRestTime"
                       (change)="newPlayerConfig.showRestTime = $event.checked">
           showRestTime
         </mat-checkbox>
@@ -196,7 +196,7 @@ export class RichTextEditDialog {
       <div fxLayout="column">
         <mat-form-field appearance="fill">
           <mat-label>hintLabel</mat-label>
-          <input matInput type="text" [value]="newPlayerConfig.hintLabel"
+          <input matInput type="text" [value]="newPlayerConfig.hintLabel || data.player.hintLabel"
                  (input)="newPlayerConfig.hintLabel = $any($event.target).value">
         </mat-form-field>
         <mat-form-field *ngIf="newPlayerConfig.hintLabel !== ''" appearance="fill">
@@ -206,17 +206,17 @@ export class RichTextEditDialog {
         </mat-form-field>
         <mat-form-field appearance="fill">
           <mat-label>activeAfter</mat-label>
-          <input matInput type="text" [value]="newPlayerConfig.activeAfter"
+          <input matInput type="text" [value]="newPlayerConfig.activeAfter || data.player.activeAfter"
                  (input)="newPlayerConfig.activeAfter = $any($event.target).value">
         </mat-form-field>
         <mat-form-field appearance="fill">
           <mat-label>minRuns</mat-label>
-          <input matInput type="number" [value]="newPlayerConfig.minRuns"
+          <input matInput type="number" [value]="newPlayerConfig.minRuns || data.player.minRuns"
                  (input)="newPlayerConfig.minRuns = $any($event.target).value">
         </mat-form-field>
         <mat-form-field appearance="fill">
           <mat-label>maxRuns</mat-label>
-          <input matInput type="number" [value]="newPlayerConfig.maxRuns"
+          <input matInput type="number" [value]="newPlayerConfig.maxRuns || data.player.maxRuns"
                  (input)="newPlayerConfig.maxRuns = $any($event.target).value">
         </mat-form-field>
       </div>
@@ -231,9 +231,8 @@ export class RichTextEditDialog {
     '.property-column {margin-right: 20px}'
   ]
 })
-export class PlayerEditDialog { // TODO return only changed values, so not all the properties have to be overwritten
-  newPlayerConfig: PlayerElement;
+export class PlayerEditDialog {
+  newPlayerConfig: PlayerElement = {} as PlayerElement;
   constructor(@Inject(MAT_DIALOG_DATA)public data: { player: PlayerElement }) {
-    this.newPlayerConfig = data.player;
   }
 }
-- 
GitLab