From d509806983736fcab7d4bd647f5d5157de01e017 Mon Sep 17 00:00:00 2001
From: jojohoch <joachim.hoch@iqb.hu-berlin.de>
Date: Tue, 28 Jun 2022 16:39:20 +0200
Subject: [PATCH] [editor] Add schemerData for ImageElement and PlayerElements

---
 projects/common/models/elements/element.ts     | 16 +++++++++++++++-
 .../models/elements/media-elements/image.ts    | 18 +++++++++++++++++-
 projects/common/models/section.ts              |  4 ++--
 3 files changed, 34 insertions(+), 4 deletions(-)

diff --git a/projects/common/models/elements/element.ts b/projects/common/models/elements/element.ts
index 1b0c6da72..41e937b2c 100644
--- a/projects/common/models/elements/element.ts
+++ b/projects/common/models/elements/element.ts
@@ -111,7 +111,21 @@ export abstract class PlayerElement extends UIElement {
     this.player = ElementFactory.initPlayerProps(element.player);
   }
 
-  // abstract getSchemerData(options: any): SchemerData;
+  hasSchemerData(): boolean {
+    return true;
+  }
+
+  getSchemerData(): SchemerData {
+    return {
+      id: this.id,
+      type: 'string',
+      format: 'playback',
+      multiple: false,
+      nullable: true,
+      values: [],
+      valuesComplete: true
+    };
+  }
 }
 
 export interface SchemerValue {
diff --git a/projects/common/models/elements/media-elements/image.ts b/projects/common/models/elements/media-elements/image.ts
index f189af3e1..ba734f5f5 100644
--- a/projects/common/models/elements/media-elements/image.ts
+++ b/projects/common/models/elements/media-elements/image.ts
@@ -1,6 +1,6 @@
 import { Type } from '@angular/core';
 import { ElementFactory } from 'common/util/element.factory';
-import { PositionedUIElement, PositionProperties, UIElement } from 'common/models/elements/element';
+import { PositionedUIElement, PositionProperties, SchemerData, UIElement } from 'common/models/elements/element';
 import { ElementComponent } from 'common/directives/element-component.directive';
 import { ImageComponent } from 'common/components/media-elements/image.component';
 
@@ -27,4 +27,20 @@ export class ImageElement extends UIElement implements PositionedUIElement {
   getComponentFactory(): Type<ElementComponent> {
     return ImageComponent;
   }
+
+  hasSchemerData(): boolean {
+    return this.magnifier;
+  }
+
+  getSchemerData(): SchemerData {
+    return {
+      id: this.id,
+      type: 'boolean',
+      format: '',
+      multiple: false,
+      nullable: false,
+      values: [],
+      valuesComplete: true
+    };
+  }
 }
diff --git a/projects/common/models/section.ts b/projects/common/models/section.ts
index b0e3b9feb..4f42cc148 100644
--- a/projects/common/models/section.ts
+++ b/projects/common/models/section.ts
@@ -1,7 +1,7 @@
 import { Type } from '@angular/core';
 import { IDManager } from 'common/util/id-manager';
 import {
-  InputElement,
+  InputElement, PlayerElement,
   PositionedUIElement,
   SchemerData,
   UIElement,
@@ -110,6 +110,6 @@ export class Section {
       .map(element =>
         (element.type === 'drop-list' || element.type === 'drop-list-simple') ?
           (element as InputElement).getSchemerData(dropLists) :
-          (element as InputElement | TextElement).getSchemerData());
+          (element as InputElement | PlayerElement | TextElement | ImageElement).getSchemerData());
   }
 }
-- 
GitLab