From 087ea0127c0acb1d68df7afda9bbb83a59d6bba0 Mon Sep 17 00:00:00 2001
From: rhenck <richard.henck@iqb.hu-berlin.de>
Date: Thu, 14 Oct 2021 13:22:18 +0200
Subject: [PATCH] Move unit interface initialisation functions to its own file

This keeps import cycles from happening.
---
 projects/common/classes/buttonElement.ts       |  3 ++-
 projects/common/classes/checkboxElement.ts     |  3 ++-
 projects/common/classes/dropdownElement.ts     |  3 ++-
 .../common/classes/radioButtonGroupElement.ts  |  3 ++-
 projects/common/classes/textAreaElement.ts     |  3 ++-
 projects/common/classes/textElement.ts         |  3 ++-
 projects/common/classes/textFieldElement.ts    |  3 ++-
 projects/common/classes/uIElement.ts           | 18 ------------------
 .../common/util/unit-interface-initializer.ts  | 16 ++++++++++++++++
 9 files changed, 30 insertions(+), 25 deletions(-)
 create mode 100644 projects/common/util/unit-interface-initializer.ts

diff --git a/projects/common/classes/buttonElement.ts b/projects/common/classes/buttonElement.ts
index a9681aa2c..906d10c3e 100644
--- a/projects/common/classes/buttonElement.ts
+++ b/projects/common/classes/buttonElement.ts
@@ -1,5 +1,6 @@
 import { FontElement, SurfaceUIElement } from '../interfaces/UIElementInterfaces';
-import { initSurfaceElement, initFontElement, UIElement } from './uIElement';
+import { UIElement } from './uIElement';
+import { initFontElement, initSurfaceElement } from '../util/unit-interface-initializer';
 
 export class ButtonElement extends UIElement implements FontElement, SurfaceUIElement {
   label: string = 'Knopf';
diff --git a/projects/common/classes/checkboxElement.ts b/projects/common/classes/checkboxElement.ts
index 3be20cdf3..7385d35c3 100644
--- a/projects/common/classes/checkboxElement.ts
+++ b/projects/common/classes/checkboxElement.ts
@@ -1,5 +1,6 @@
-import { initSurfaceElement, initFontElement, InputElement, UIElement } from './uIElement';
+import { InputElement, UIElement } from './uIElement';
 import { FontElement, SurfaceUIElement } from '../interfaces/UIElementInterfaces';
+import { initFontElement, initSurfaceElement } from '../util/unit-interface-initializer';
 
 export class CheckboxElement extends InputElement implements FontElement, SurfaceUIElement {
   fontColor: string = 'black';
diff --git a/projects/common/classes/dropdownElement.ts b/projects/common/classes/dropdownElement.ts
index 368e5cbd3..9373cba59 100644
--- a/projects/common/classes/dropdownElement.ts
+++ b/projects/common/classes/dropdownElement.ts
@@ -1,5 +1,6 @@
-import { initSurfaceElement, initFontElement, InputElement, UIElement } from './uIElement';
+import { InputElement, UIElement } from './uIElement';
 import { FontElement, SurfaceUIElement } from '../interfaces/UIElementInterfaces';
+import { initFontElement, initSurfaceElement } from '../util/unit-interface-initializer';
 
 export class DropdownElement extends InputElement implements FontElement, SurfaceUIElement {
   options: string[] = [];
diff --git a/projects/common/classes/radioButtonGroupElement.ts b/projects/common/classes/radioButtonGroupElement.ts
index 8fa4ae4ce..e66b31a04 100644
--- a/projects/common/classes/radioButtonGroupElement.ts
+++ b/projects/common/classes/radioButtonGroupElement.ts
@@ -1,5 +1,6 @@
-import { initSurfaceElement, initFontElement, InputElement, UIElement } from './uIElement';
+import { InputElement, UIElement } from './uIElement';
 import { FontElement, SurfaceUIElement } from '../interfaces/UIElementInterfaces';
+import { initFontElement, initSurfaceElement } from '../util/unit-interface-initializer';
 
 export class RadioButtonGroupElement extends InputElement implements FontElement, SurfaceUIElement {
   options: string[] = [];
diff --git a/projects/common/classes/textAreaElement.ts b/projects/common/classes/textAreaElement.ts
index a3694c7f7..b063d384f 100644
--- a/projects/common/classes/textAreaElement.ts
+++ b/projects/common/classes/textAreaElement.ts
@@ -1,5 +1,6 @@
 import { FontElement, SurfaceUIElement } from '../interfaces/UIElementInterfaces';
-import { initSurfaceElement, initFontElement, InputElement, UIElement } from './uIElement';
+import { InputElement, UIElement } from './uIElement';
+import { initFontElement, initSurfaceElement } from '../util/unit-interface-initializer';
 
 export class TextAreaElement extends InputElement implements FontElement, SurfaceUIElement {
   appearance: 'standard' | 'legacy' | 'fill' | 'outline' = 'outline';
diff --git a/projects/common/classes/textElement.ts b/projects/common/classes/textElement.ts
index 2e2f789b8..8ccab10c7 100644
--- a/projects/common/classes/textElement.ts
+++ b/projects/common/classes/textElement.ts
@@ -1,5 +1,6 @@
-import { initSurfaceElement, UIElement } from './uIElement';
+import { UIElement } from './uIElement';
 import { SurfaceUIElement } from '../interfaces/UIElementInterfaces';
+import { initSurfaceElement } from '../util/unit-interface-initializer';
 
 export class TextElement extends UIElement implements SurfaceUIElement {
   text: string = '<p>Lorem ipsum dolor sit amet</p>';
diff --git a/projects/common/classes/textFieldElement.ts b/projects/common/classes/textFieldElement.ts
index 8ae22001e..23ea3548d 100644
--- a/projects/common/classes/textFieldElement.ts
+++ b/projects/common/classes/textFieldElement.ts
@@ -1,5 +1,6 @@
-import { initSurfaceElement, initFontElement, InputElement, UIElement } from './uIElement';
+import { InputElement, UIElement } from './uIElement';
 import { FontElement, SurfaceUIElement } from '../interfaces/UIElementInterfaces';
+import { initFontElement, initSurfaceElement } from '../util/unit-interface-initializer';
 
 export class TextFieldElement extends InputElement implements FontElement, SurfaceUIElement {
   appearance: 'standard' | 'legacy' | 'fill' | 'outline' = 'outline';
diff --git a/projects/common/classes/uIElement.ts b/projects/common/classes/uIElement.ts
index dd74dba43..0ca1101e2 100644
--- a/projects/common/classes/uIElement.ts
+++ b/projects/common/classes/uIElement.ts
@@ -1,5 +1,4 @@
 // eslint-disable-next-line max-classes-per-file
-import { FontElement, SurfaceUIElement } from '../interfaces/UIElementInterfaces';
 import { IdService } from '../id.service';
 
 export abstract class UIElement {
@@ -54,20 +53,3 @@ export abstract class InputElement extends UIElement {
     this.requiredWarnMessage = serializedElement.requiredWarnMessage as string || 'Eingabe erforderlich';
   }
 }
-
-// ================================================
-
-export function initFontElement(): FontElement {
-  return {
-    fontColor: 'black',
-    font: 'Roboto',
-    fontSize: 18,
-    bold: false,
-    italic: false,
-    underline: false
-  };
-}
-
-export function initSurfaceElement(): SurfaceUIElement {
-  return { backgroundColor: 'lightgrey' };
-}
diff --git a/projects/common/util/unit-interface-initializer.ts b/projects/common/util/unit-interface-initializer.ts
new file mode 100644
index 000000000..24e3f4241
--- /dev/null
+++ b/projects/common/util/unit-interface-initializer.ts
@@ -0,0 +1,16 @@
+import { FontElement, SurfaceUIElement } from '../interfaces/UIElementInterfaces';
+
+export function initFontElement(): FontElement {
+  return {
+    fontColor: 'black',
+    font: 'Roboto',
+    fontSize: 18,
+    bold: false,
+    italic: false,
+    underline: false
+  };
+}
+
+export function initSurfaceElement(): SurfaceUIElement {
+  return { backgroundColor: 'lightgrey' };
+}
-- 
GitLab