diff --git a/projects/common/id.service.ts b/projects/common/id.service.ts index ad823964aae78ad9ea876eefa0a39e4680a29f85..1aa8fdfb20a0925aab2a04109b339b4322759555 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 3880a56362028a3a9d50fb2afbbd011534997bd4..e3e39e30bab313d4c935a54df7a451ab075a9e3b 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);