From 51fce8b6e196a4e70e1d8e47bdd19f76acfd10bc Mon Sep 17 00:00:00 2001
From: rhenck <richard.henck@iqb.hu-berlin.de>
Date: Thu, 14 Oct 2021 13:23:58 +0200
Subject: [PATCH] Refactor IDService to not know about specific Element (class)

This avoids import cycles.
---
 projects/common/id.service.ts           | 15 ++-------------
 projects/editor/src/app/unit.service.ts |  8 +++++++-
 2 files changed, 9 insertions(+), 14 deletions(-)

diff --git a/projects/common/id.service.ts b/projects/common/id.service.ts
index 65ac57e00..d692b949b 100644
--- a/projects/common/id.service.ts
+++ b/projects/common/id.service.ts
@@ -1,8 +1,3 @@
-import { Unit } from './classes/unit';
-import { Page } from './classes/page';
-import { Section } from './classes/section';
-import { UIElement } from './classes/uIElement';
-
 export class IdService {
   private static instance: IdService;
 
@@ -38,14 +33,8 @@ export class IdService {
     return `${type}_${this.idCounter[type]}`;
   }
 
-  readExistingIDs(unit: Unit): void {
-    unit.pages.forEach((page: Page) => {
-      page.sections.forEach((section: Section) => {
-        section.elements.forEach((element: UIElement) => {
-          this.givenIDs.push(element.id);
-        });
-      });
-    });
+  addID(id: string): void {
+    this.givenIDs.push(id);
   }
 
   isIdAvailable(value: string): boolean {
diff --git a/projects/editor/src/app/unit.service.ts b/projects/editor/src/app/unit.service.ts
index 1e02cb928..c07368a59 100644
--- a/projects/editor/src/app/unit.service.ts
+++ b/projects/editor/src/app/unit.service.ts
@@ -34,7 +34,13 @@ export class UnitService {
   loadUnitDefinition(unitDefinition: string): void {
     if (unitDefinition) {
       this.unitModel = new Unit(JSON.parse(unitDefinition));
-      IdService.getInstance().readExistingIDs(this.unitModel);
+      this.unitModel.pages.forEach((page: Page) => {
+        page.sections.forEach((section: Section) => {
+          section.elements.forEach((element: UIElement) => {
+            IdService.getInstance().addID(element.id);
+          });
+        });
+      });
       this._unit.next(this.unitModel);
     }
   }
-- 
GitLab