Deep copy when editing board to prevent in-memory changes

This commit is contained in:
kiswa 2016-11-09 23:58:58 +00:00
parent 3cb62e56c0
commit 9a5aa36912

View File

@ -184,6 +184,20 @@ export class BoardAdmin {
return category.defaultColor;
}
private deepCopy(source: any) {
var output: any, value: any, key: any;
output = Array.isArray(source) ? [] : {};
for (key in source) {
value = source[key];
output[key] = (typeof value === "object") ?
this.deepCopy(value) : value;
}
return output;
}
private showModal(title: string, board?: Board): void {
let isAdd = (title === 'Add');
@ -196,16 +210,14 @@ export class BoardAdmin {
} else {
this.modalProps.id = board.id;
this.modalProps.boardName = board.name;
this.modalProps.columns = board.columns.slice();
this.modalProps.categories = board.categories.slice();
this.modalProps.issueTrackers = board.issue_trackers.slice();
this.modalProps.columns = this.deepCopy(board.columns);
this.modalProps.categories = this.deepCopy(board.categories);
this.modalProps.issueTrackers = this.deepCopy(board.issue_trackers);
this.users.forEach((user: SelectableUser) => {
let filtered = board.users.filter(u => u.id === user.id);
if (filtered.length) {
user.selected = true;
}
user.selected = filtered.length > 0;
});
}