From cead47485d382237576821e7c293d376c9df473c Mon Sep 17 00:00:00 2001
From: rhenck <richard.henck@iqb.hu-berlin.de>
Date: Mon, 25 Oct 2021 12:09:31 +0200
Subject: [PATCH] [editor] Refactor player elements property dialog

Now uses tabs and improved order or inputs.
---
 projects/editor/src/app/dialog.service.ts | 166 +++++++++++-----------
 projects/editor/src/assets/i18n/de.json   |  22 ++-
 2 files changed, 103 insertions(+), 85 deletions(-)

diff --git a/projects/editor/src/app/dialog.service.ts b/projects/editor/src/app/dialog.service.ts
index aa73b5fef..fd5f058da 100644
--- a/projects/editor/src/app/dialog.service.ts
+++ b/projects/editor/src/app/dialog.service.ts
@@ -52,8 +52,8 @@ export class DialogService {
 
   showPlayerEditDialog(player: PlayerElement): Observable<PlayerElement> {
     const dialogRef = this.dialog.open(PlayerEditDialog, {
-      width: '470px',
-      height: '520px',
+      width: '370px',
+      height: '510px',
       data: {
         player: player
       },
@@ -138,88 +138,86 @@ export class RichTextEditDialog {
   selector: 'app-player-edit-dialog',
   template: `
     <mat-dialog-content fxLayout="row">
-      <div class="property-column" fxLayout="column">
-        <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 || data.player.autostartDelay"
-                 (input)="newPlayerConfig.autostartDelay = $any($event.target).value">
-        </mat-form-field>
-        <mat-checkbox [checked]="newPlayerConfig.loop || data.player.loop"
-                      (change)="newPlayerConfig.loop = $event.checked">
-          Loop
-        </mat-checkbox>
-        <mat-checkbox [checked]="newPlayerConfig.startControl || data.player.startControl"
-                      (change)="newPlayerConfig.startControl = $event.checked">
-          startControl
-        </mat-checkbox>
-        <mat-checkbox [checked]="newPlayerConfig.pauseControl || data.player.pauseControl"
-                      (change)="newPlayerConfig.pauseControl = $event.checked">
-          pauseControl
-        </mat-checkbox>
-        <mat-checkbox [checked]="newPlayerConfig.stopControl || data.player.stopControl"
-                      (change)="newPlayerConfig.stopControl = $event.checked">
-          stopControl
-        </mat-checkbox>
-        <mat-checkbox [checked]="newPlayerConfig.progressBar || data.player.progressBar"
-                      (change)="newPlayerConfig.progressBar = $event.checked">
-          progressBar
-        </mat-checkbox>
-        <mat-checkbox [checked]="newPlayerConfig.interactiveProgressbar || data.player.interactiveProgressbar"
-                      (change)="newPlayerConfig.interactiveProgressbar = $event.checked">
-          interactiveProgressbar
-        </mat-checkbox>
-        <mat-checkbox [checked]="newPlayerConfig.volumeControl || data.player.volumeControl"
-                      (change)="newPlayerConfig.volumeControl = $event.checked">
-          volumeControl
-        </mat-checkbox>
-        <mat-checkbox [checked]="newPlayerConfig.uninterruptible || data.player.uninterruptible"
-                      (change)="newPlayerConfig.uninterruptible = $event.checked">
-          uninterruptible
-        </mat-checkbox>
-        <mat-checkbox [checked]="newPlayerConfig.hideOtherPages || data.player.hideOtherPages"
-                      (change)="newPlayerConfig.hideOtherPages = $event.checked">
-          hideOtherPages
-        </mat-checkbox>
-        <mat-checkbox [checked]="newPlayerConfig.showRestRuns || data.player.showRestRuns"
-                      (change)="newPlayerConfig.showRestRuns = $event.checked">
-          showRestRuns
-        </mat-checkbox>
-        <mat-checkbox [checked]="newPlayerConfig.showRestTime || data.player.showRestTime"
-                      (change)="newPlayerConfig.showRestTime = $event.checked">
-          showRestTime
-        </mat-checkbox>
-      </div>
-      <div fxLayout="column">
-        <mat-form-field appearance="fill">
-          <mat-label>hintLabel</mat-label>
-          <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">
-          <mat-label>hintLabelDelay</mat-label>
-          <input matInput type="number" [value]="newPlayerConfig.hintLabelDelay"
-                 (input)="newPlayerConfig.hintLabelDelay = $any($event.target).value">
-        </mat-form-field>
-        <mat-form-field appearance="fill">
-          <mat-label>activeAfter</mat-label>
-          <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 || 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 || data.player.maxRuns"
-                 (input)="newPlayerConfig.maxRuns = $any($event.target).value">
-        </mat-form-field>
-      </div>
+      <mat-tab-group>
+        <mat-tab label="{{ 'player.appearance' | translate }}">
+          <div fxLayout="column">
+            <mat-checkbox [checked]="newPlayerConfig.startControl || data.player.startControl"
+                          (change)="newPlayerConfig.startControl = $event.checked">
+              {{ 'player.startControl' | translate }}
+            </mat-checkbox>
+            <mat-checkbox [checked]="newPlayerConfig.pauseControl || data.player.pauseControl"
+                          (change)="newPlayerConfig.pauseControl = $event.checked">
+              {{ 'player.pauseControl' | translate }}
+            </mat-checkbox>
+            <mat-checkbox [checked]="newPlayerConfig.progressBar || data.player.progressBar"
+                          (change)="newPlayerConfig.progressBar = $event.checked">
+              {{ 'player.progressBar' | translate }}
+            </mat-checkbox>
+            <mat-checkbox [checked]="newPlayerConfig.interactiveProgressbar || data.player.interactiveProgressbar"
+                          (change)="newPlayerConfig.interactiveProgressbar = $event.checked">
+              {{ 'player.interactiveProgressbar' | translate }}
+            </mat-checkbox>
+            <mat-checkbox [checked]="newPlayerConfig.volumeControl || data.player.volumeControl"
+                          (change)="newPlayerConfig.volumeControl = $event.checked">
+              {{ 'player.volumeControl' | translate }}
+            </mat-checkbox>
+            <mat-checkbox [checked]="newPlayerConfig.showRestTime || data.player.showRestTime"
+                          (change)="newPlayerConfig.showRestTime = $event.checked">
+              {{ 'player.showRestTime' | translate }}
+            </mat-checkbox>
+            <mat-form-field appearance="fill">
+              <mat-label>{{ 'player.hintLabel' | translate }}</mat-label>
+              <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">
+              <mat-label>{{ 'player.hintLabelDelay' | translate }}</mat-label>
+              <input matInput type="number" [value]="newPlayerConfig.hintLabelDelay"
+                     (input)="newPlayerConfig.hintLabelDelay = $any($event.target).value">
+            </mat-form-field>
+          </div>
+        </mat-tab>
+        <mat-tab label="{{ 'player.behaviour' | translate }}">
+          <div fxLayout="column">
+            <mat-checkbox [checked]="newPlayerConfig.autostart || data.player.autostart"
+                          (change)="newPlayerConfig.autostart = $event.checked">
+              {{ 'player.autoStart' | translate }}
+            </mat-checkbox>
+            <mat-form-field *ngIf="newPlayerConfig.autostart" appearance="fill">
+              <mat-label>Autostart Verzögerung</mat-label>
+              <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 || data.player.loop"
+                          (change)="newPlayerConfig.loop = $event.checked">
+              {{ 'player.loop' | translate }}
+            </mat-checkbox>
+            <mat-checkbox [checked]="newPlayerConfig.uninterruptible || data.player.uninterruptible"
+                          (change)="newPlayerConfig.uninterruptible = $event.checked">
+              {{ 'player.uninterruptible' | translate }}
+            </mat-checkbox>
+            <mat-checkbox [checked]="newPlayerConfig.hideOtherPages || data.player.hideOtherPages"
+                          (change)="newPlayerConfig.hideOtherPages = $event.checked">
+              {{ 'player.hideOtherPages' | translate }}
+            </mat-checkbox>
+            <mat-form-field appearance="fill">
+              <mat-label>{{ 'player.activeAfterID' | translate }}</mat-label>
+              <input matInput type="text" [value]="newPlayerConfig.activeAfterID || data.player.activeAfterID"
+                     (input)="newPlayerConfig.activeAfterID = $any($event.target).value">
+            </mat-form-field>
+            <mat-form-field appearance="fill">
+              <mat-label>{{ 'player.minRuns' | translate }}</mat-label>
+              <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>{{ 'player.maxRuns' | translate }}</mat-label>
+              <input matInput type="number" [value]="newPlayerConfig.maxRuns || data.player.maxRuns"
+                     (input)="newPlayerConfig.maxRuns = $any($event.target).value">
+            </mat-form-field>
+          </div>
+        </mat-tab>
+      </mat-tab-group>
     </mat-dialog-content>
     <mat-dialog-actions>
       <button mat-button [mat-dialog-close]="newPlayerConfig">Speichern</button>
diff --git a/projects/editor/src/assets/i18n/de.json b/projects/editor/src/assets/i18n/de.json
index 8056db49a..10113f7ac 100644
--- a/projects/editor/src/assets/i18n/de.json
+++ b/projects/editor/src/assets/i18n/de.json
@@ -1,4 +1,24 @@
 {
   "loadUnit": "Unit laden",
-  "saveUnit": "Unit speichern"
+  "saveUnit": "Unit speichern",
+  "player": {
+    "autoStart": "Autostart",
+    "loop": "Wiederholt abspielen",
+    "startControl": "Startknopf",
+    "pauseControl": "Pauseknopf",
+    "progressBar": "Fortschrittsbalken",
+    "interactiveProgressbar": "Fortschrittsbalken (steuerbar)",
+    "volumeControl": "Lautstärkeregelung",
+    "uninterruptible": "Unterbrechen verbieten",
+    "hideOtherPages": "Weitere Seiten verbergen",
+    "showRestRuns": "Verbleibender Durchläufe anzeigen",
+    "showRestTime": "Verbleibende Zeit anzeigen",
+    "hintLabel": "Aufforderungstext zum Starten",
+    "hintLabelDelay": "Verzögerung für Aufforderungstext",
+    "activeAfterID": "Abspielbar nach Audio/Video-ID",
+    "minRuns": "Minimale Anzahl der Durchläufe",
+    "maxRuns": "Maximale Anzahl der Durchläufe",
+    "appearance": "Erscheinungsbild",
+    "behaviour": "Verhalten"
+  }
 }
-- 
GitLab