From f2ea3888b419439c2c852b83feb229581433bcd6 Mon Sep 17 00:00:00 2001
From: rhenck <richard.henck@iqb.hu-berlin.de>
Date: Tue, 30 Nov 2021 11:27:54 +0100
Subject: [PATCH] Minor code style improvements

---
 projects/common/id.service.ts                   |  1 +
 .../editor/src/app/services/unit.service.ts     | 17 +++++++++++++++--
 2 files changed, 16 insertions(+), 2 deletions(-)

diff --git a/projects/common/id.service.ts b/projects/common/id.service.ts
index ad823964a..1aa8fdfb2 100644
--- a/projects/common/id.service.ts
+++ b/projects/common/id.service.ts
@@ -53,6 +53,7 @@ export class IdService {
     this.givenIDs.push(id);
   }
 
+  /* Remove ID from givenIDs, so it can be used again. */
   removeId(id: string): void {
     const index = this.givenIDs.indexOf(id, 0);
     if (index > -1) {
diff --git a/projects/editor/src/app/services/unit.service.ts b/projects/editor/src/app/services/unit.service.ts
index 3880a5636..e3e39e30b 100644
--- a/projects/editor/src/app/services/unit.service.ts
+++ b/projects/editor/src/app/services/unit.service.ts
@@ -11,7 +11,8 @@ import { Unit } from '../../../../common/models/unit';
 import { Page } from '../../../../common/models/page';
 import { Section } from '../../../../common/models/section';
 import {
-  InputElement,
+  DragNDropValueObject,
+  InputElement, InputElementValue,
   LikertColumn,
   LikertRow, PlayerElement,
   PlayerProperties, PositionedElement,
@@ -173,12 +174,24 @@ export class UnitService {
   }
 
   deleteElements(elements: UIElement[]): void {
+    UnitService.freeUpIds(elements);
     this.unitModel.pages[this.selectionService.selectedPageIndex].sections.forEach(section => {
       section.deleteElements(elements);
     });
     this.veronaApiService.sendVoeDefinitionChangedNotification();
   }
 
+  private static freeUpIds(elements: UIElement[]): void {
+    elements.forEach(element => {
+      if (element.type === 'drop-list') {
+        element.value.foreach((value: DragNDropValueObject) => {
+          IdService.getInstance().removeId(value.id);
+        });
+      }
+      IdService.getInstance().removeId(element.id);
+    });
+  }
+
   /* Move element between sections */
   transferElement(elements: UIElement[], previousSection: Section, newSection: Section): void {
     previousSection.elements = previousSection.elements.filter(element => !elements.includes(element));
@@ -218,7 +231,7 @@ export class UnitService {
           this.messageService.showError(this.translateService.instant('idTaken'));
           return false;
         }
-        IdService.getInstance().removeId(element[property]);
+        IdService.getInstance().removeId(element.id);
         IdService.getInstance().addId(<string>value);
       }
       element.setProperty(property, value);
-- 
GitLab