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