Remove deleted entities from list without scrolling to top

This commit is contained in:
David Rowe 2018-06-19 16:22:59 +12:00
parent 5de451e8e0
commit 064f4ca204
3 changed files with 26 additions and 6 deletions

View file

@ -476,9 +476,7 @@ var toolBar = (function () {
function checkDeletedEntityAndUpdate(entityID) {
// Allow for multiple entity deletes before updating the entities selected.
if (selectionManager.selections.indexOf(entityID) !== -1) {
entitiesToDelete.push(entityID);
}
entitiesToDelete.push(entityID);
if (deletedEntityTimer !== null) {
Script.clearTimeout(deletedEntityTimer);
}
@ -486,8 +484,7 @@ var toolBar = (function () {
if (entitiesToDelete.length > 0) {
selectionManager.removeEntities(entitiesToDelete);
}
entityListTool.clearEntityList();
entityListTool.sendUpdate();
entityListTool.removeEntities(entitiesToDelete, selectionManager.selections);
entitiesToDelete = [];
deletedEntityTimer = null;
}, DELETE_ENTITY_TIMER_TIMEOUT);

View file

@ -195,6 +195,18 @@ function loaded() {
}
}
function removeEntities(deletedIDs, selectedIDs) {
for (i = 0, length = deletedIDs.length; i < length; i++) {
delete entities[deletedIDs[i]];
entityList.remove("id", deletedIDs[i]);
}
if (refreshEntityListTimer) {
clearTimeout(refreshEntityListTimer);
}
refreshEntityListTimer = setTimeout(refreshEntityListObject, 50);
updateSelectedEntities(selectedIDs);
}
function clearEntities() {
entities = {};
entityList.clear();
@ -346,7 +358,7 @@ function loaded() {
if (notFound) {
refreshEntities();
}
} else if (data.type == "update" && data.selectedIDs !== undefined) {
} else if (data.type === "update" && data.selectedIDs !== undefined) {
var newEntities = data.entities;
if (newEntities && newEntities.length == 0) {
elNoEntitiesMessage.style.display = "block";
@ -367,6 +379,8 @@ function loaded() {
updateSelectedEntities(data.selectedIDs);
resize();
}
} else if (data.type === "removeEntities" && data.deletedIDs !== undefined) {
removeEntities(data.deletedIDs, data.selectedIDs);
} else if (data.type === "deleted") {
for (i = 0, length = data.ids.length; i < length; i++) {
delete entities[data.ids[i]];

View file

@ -57,6 +57,15 @@ EntityListTool = function(opts) {
webView.emitScriptEvent(JSON.stringify(data));
};
that.removeEntities = function (deletedIDs, selectedIDs) {
var data = {
type: 'removeEntities',
deletedIDs: deletedIDs,
selectedIDs: selectedIDs
};
webView.emitScriptEvent(JSON.stringify(data));
};
function valueIfDefined(value) {
return value !== undefined ? value : "";
}