Skip to content

Commit fa1ed75

Browse files
making WRC delete app remove empty parents (#226)
1 parent 93ec40d commit fa1ed75

File tree

2 files changed

+24
-10
lines changed

2 files changed

+24
-10
lines changed

webui/src/js/utils/wdt-archive-helper.js

Lines changed: 23 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -70,9 +70,9 @@ define(['knockout', 'models/wkt-project', 'utils/wkt-logger'],
7070
return result ? result.archiveUpdatePath : result;
7171
};
7272

73-
this.removeFromArchive = (archivePath) => {
73+
this.removeFromArchive = (archivePath, deleteEmptyParents = false) => {
7474
if (archivePath) {
75-
this._removeFromArchiveModel(archivePath, this.project.wdtModel.archiveRoots);
75+
this._removeFromArchiveModel(archivePath, this.project.wdtModel.archiveRoots, deleteEmptyParents);
7676
this._removeArchiveUpdate(archivePath);
7777
}
7878
};
@@ -159,20 +159,34 @@ define(['knockout', 'models/wkt-project', 'utils/wkt-logger'],
159159
}
160160
};
161161

162-
this._removeFromArchiveModel = (archivePath, nodesObservable) => {
162+
this._removeFromArchiveModel = (archivePath, nodesObservable, deleteEmptyParents) => {
163163
for (const node of nodesObservable()) {
164+
wktLogger.debug('node id = %s, deleteEmptyParents = %s', node.id, deleteEmptyParents);
164165
if (node.id === archivePath) {
165-
nodesObservable.remove(node);
166-
167-
// this shouldn't be required, but resolves tree view problems with emptied lists
168-
nodesObservable.sort();
169-
break;
166+
wktLogger.debug('removing matching node %s', node.id);
167+
this._removeNodeFromNodesObservable(nodesObservable, node);
168+
return true;
170169
}
171170

172171
if (node.children) {
173-
this._removeFromArchiveModel(archivePath, node.children);
172+
const result = this._removeFromArchiveModel(archivePath, node.children, deleteEmptyParents);
173+
wktLogger.debug('nested call from node %s returned %s', node.id, result);
174+
wktLogger.debug('XXX node %s children length = %s', node.id, node.children().length);
175+
if (deleteEmptyParents && result && node.children().length === 0) {
176+
wktLogger.debug('removing node %s from parent children list', node.id);
177+
this._removeNodeFromNodesObservable(nodesObservable, node);
178+
}
179+
return result;
174180
}
175181
}
182+
return false;
183+
};
184+
185+
this._removeNodeFromNodesObservable = (nodesObservable, node) => {
186+
nodesObservable.remove(node);
187+
188+
// this shouldn't be required, but resolves tree view problems with emptied lists
189+
nodesObservable.sort();
176190
};
177191
}
178192

webui/src/js/utils/wrc-wdt-archive.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -64,7 +64,7 @@ define(['models/wkt-project', 'utils/i18n', 'utils/wdt-archive-helper', 'utils/w
6464
const updatedArchivePath = this._convertWrcArchivePath(archivePath);
6565

6666
wktLogger.debug('calling archiveHelper.removeFromArchive(%s)', updatedArchivePath);
67-
archiveHelper.removeFromArchive(updatedArchivePath);
67+
archiveHelper.removeFromArchive(updatedArchivePath, true);
6868
resolve();
6969
} catch (err) {
7070
const errorMessage = window.api.utils.getErrorMessage(err);

0 commit comments

Comments
 (0)