From 9357ee97870e0034ecd3d100cdd2643497aadd1d Mon Sep 17 00:00:00 2001 From: Sj-Si Date: Mon, 15 Apr 2024 10:13:39 -0400 Subject: [PATCH] fix bugs. --- javascript/extraNetworks.js | 8 +++++--- javascript/extraNetworksClusterize.js | 21 +++++++++++++++++---- 2 files changed, 22 insertions(+), 7 deletions(-) diff --git a/javascript/extraNetworks.js b/javascript/extraNetworks.js index 699a823e8..540ad5956 100644 --- a/javascript/extraNetworks.js +++ b/javascript/extraNetworks.js @@ -637,6 +637,8 @@ function extraNetworksBtnDirsViewItemOnClick(event, tabname_full) { ).forEach(elem => { delete elem.dataset.selected; }); + // deselect tree view rows + tab.tree_list.onRowSelected(); // empty params deselects all rows. }; const _select_button = (elem) => { @@ -648,15 +650,15 @@ function extraNetworksBtnDirsViewItemOnClick(event, tabname_full) { // Select the corresponding tree view button. if ("selected" in elem.dataset) { const tree_row = tab.container_elem.querySelector(`.tree-list-item[data-path="${elem.textContent.trim()}"]`); - if (isElement(tree_row)) { - tab.tree_list.onRowSelected(tree_row.dataset.divId, tree_row); - } + tab.tree_list.onRowSelected(tree_row.dataset.divId, tree_row); } }; const _deselect_button = (elem) => { delete elem.dataset.selected; txt_search_elem.value = ""; + // deselect tree view rows + tab.tree_list.onRowSelected(); // empty params deselects all rows. }; if ("selected" in event.target.dataset) { diff --git a/javascript/extraNetworksClusterize.js b/javascript/extraNetworksClusterize.js index 0a5865d84..12d280087 100644 --- a/javascript/extraNetworksClusterize.js +++ b/javascript/extraNetworksClusterize.js @@ -244,9 +244,6 @@ class ExtraNetworksClusterizeTreeList extends ExtraNetworksClusterize { #setVisibility(div_id, visible) { /** Recursively sets the visibility of a div_id and its children. */ - if (!visible && this.selected_div_id === div_id) { - this.selected_div_id = null; - } const this_obj = this.data_obj[div_id]; this_obj.visible = visible; for (const child_id of this_obj.children) { @@ -255,7 +252,19 @@ class ExtraNetworksClusterizeTreeList extends ExtraNetworksClusterize { } onRowSelected(div_id, elem, override) { - /** Selects a row and deselects all others. */ + /** Selects a row and deselects all others. + * + * If both `div_id` and `elem` are null/undefined, then we deselect all rows. + * `override` allows us to manually set the new state instead of toggling. + */ + if (isNullOrUndefined(div_id) && isNullOrUndefined(elem)) { + if (!isNullOrUndefined(this.selected_div_id) && keyExistsLogError(this.data_obj, this.selected_div_id)) { + this.data_obj[this.selected_div_id].selected = false; + this.selected_div_id = null; + } + return; + } + if (!isElementLogError(elem)) { return; } @@ -373,9 +382,13 @@ class ExtraNetworksClusterizeTreeList extends ExtraNetworksClusterize { if (this.data_obj[div_id].expanded) { parsed_html.dataset.expanded = ""; } + + // Only allow one item to have `data-selected`. + delete parsed_html.dataset.selected; if (div_id === this.selected_div_id) { parsed_html.dataset.selected = ""; } + res.push(parsed_html.outerHTML); this.lru.set(String(div_id), parsed_html); }