Skip to content

Commit e955c97

Browse files
committed
fix: update tree when deleted #445
1 parent 142e7ac commit e955c97

File tree

2 files changed

+14
-16
lines changed

2 files changed

+14
-16
lines changed

src/app/modules/shared-filter/components/edit-fields/edit-fields.component.ts

Lines changed: 10 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,11 @@
11
import { BasicField } from 'src/app/model/DataSelection/Profile/Fields/BasicFields/BasicField';
2+
import { Component, EventEmitter, Input, OnDestroy, OnInit, Output } from '@angular/core';
23
import { FieldsTreeAdapter } from 'src/app/shared/models/TreeNode/Adapter/FieldTreeAdapter';
34
import { map, Subscription, take } from 'rxjs';
45
import { SelectedBasicField } from 'src/app/model/DataSelection/Profile/Fields/BasicFields/SelectedBasicField';
56
import { SelectedBasicFieldCloner } from 'src/app/model/Utilities/DataSelecionCloner/ProfileFields/SelectedFieldCloner';
67
import { SelectedProfileFieldsService } from 'src/app/service/DataSelection/SelectedProfileFields.service';
78
import { TreeNode } from 'src/app/shared/models/TreeNode/TreeNodeInterface';
8-
import { Component, EventEmitter, Input, OnDestroy, OnInit, Output } from '@angular/core';
99

1010
@Component({
1111
selector: 'num-edit-fields',
@@ -45,7 +45,7 @@ export class EditFieldsComponent implements OnInit, OnDestroy {
4545
.getDeepCopyBasicFields()
4646
.pipe(
4747
take(1),
48-
map((profileFields) => {
48+
map((profileFields: BasicField[]) => {
4949
this.setSelectedChildrenFields();
5050
this.tree = FieldsTreeAdapter.fromTree(profileFields);
5151
})
@@ -70,8 +70,10 @@ export class EditFieldsComponent implements OnInit, OnDestroy {
7070
const node: BasicField = element.originalEntry as BasicField;
7171
const index = this.getIndexInSelectedFields(node.getElementId());
7272
if (index !== -1) {
73+
node.setIsSelected(false);
7374
this.spliceAndEmit(index);
7475
} else {
76+
node.setIsSelected(true);
7577
this.addNodeToSelectedFields(node);
7678
}
7779
this.traversAndUpddateTree();
@@ -92,6 +94,12 @@ export class EditFieldsComponent implements OnInit, OnDestroy {
9294
const index = this.getIndexInSelectedFields(node.getElementId());
9395
if (index !== -1) {
9496
this.spliceAndEmit(index);
97+
this.fieldTree = this.selectedDataSelectionProfileFieldsService.updateNodeInDeepCopy(
98+
this.fieldTree,
99+
node.getSelectedField(),
100+
false
101+
);
102+
this.tree = FieldsTreeAdapter.fromTree(this.fieldTree);
95103
}
96104
}
97105

@@ -112,9 +120,6 @@ export class EditFieldsComponent implements OnInit, OnDestroy {
112120
this.selectedBasicFields
113121
);
114122
this.updatedSelectedBasicFields.emit(clonedSelectedFields);
115-
// Only update the selection status, don't trigger tree rebuilding
116123
this.traversAndUpddateTree();
117-
// Remove this line that causes the circular trigger:
118-
// this.selectedDataSelectionProfileFieldsService.setDeepCopyFields(this.fieldTree);
119124
}
120125
}

src/app/service/DataSelection/SelectedProfileFields.service.ts

Lines changed: 4 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ import { Display } from 'src/app/model/DataSelection/Profile/Display';
44
import { Injectable } from '@angular/core';
55
import { SelectedBasicField } from 'src/app/model/DataSelection/Profile/Fields/BasicFields/SelectedBasicField';
66
import { Translation } from 'src/app/model/DataSelection/Profile/Translation';
7+
import { CloneDisplayData } from 'src/app/model/Utilities/DisplayData/CloneDisplayData';
78

89
@Injectable({
910
providedIn: 'root',
@@ -62,15 +63,7 @@ export class SelectedProfileFieldsService {
6263
}
6364

6465
private instantiateDisplayData(displayData: Display): Display {
65-
return new Display(
66-
displayData
67-
.getTranslations()
68-
.map(
69-
(translation) =>
70-
new Translation(translation.getLanguage(), translation.getValue(), undefined)
71-
),
72-
displayData.getOriginal()
73-
);
66+
return CloneDisplayData.deepCopyDisplayData(displayData);
7467
}
7568

7669
public getDeepCopyBasicFields(): Observable<BasicField[]> {
@@ -117,13 +110,13 @@ export class SelectedProfileFieldsService {
117110
this.updateDeepCopyField(field);
118111
}
119112

120-
private updateDeepCopyField(field: BasicField, isSelected = true): void {
113+
public updateDeepCopyField(field: BasicField, isSelected = true): void {
121114
const deepCopy = this.deepCopyOfBasicFields.getValue();
122115
const updatedDeepCopy = this.updateNodeInDeepCopy(deepCopy, field, isSelected);
123116
this.deepCopyOfBasicFields.next(updatedDeepCopy);
124117
}
125118

126-
private updateNodeInDeepCopy(
119+
public updateNodeInDeepCopy(
127120
fields: BasicField[],
128121
updatedField: BasicField,
129122
isSelected: boolean

0 commit comments

Comments
 (0)