Fix more bugs

This commit is contained in:
Sj-Si 2024-04-23 11:17:40 -04:00
parent b5271fb9f8
commit c550bcce44
2 changed files with 24 additions and 20 deletions

View file

@ -1013,24 +1013,22 @@ function extraNetworksTreeFileOnClick(event, btn, tabname_full) {
async function extraNetworksTreeDirectoryOnClick(event, btn, tabname_full) {
const div_id = btn.dataset.divId;
const tab = extra_networks_tabs[tabname_full];
if (event.target.matches(".tree-list-item-action--leading .tree-list-item-action-chevron")) {
// If user clicks on the chevron, then we do not select the folder.
await tab.tree_list.onRowExpandClick(div_id, btn);
tab.setDirectoryButtons();
return;
} else if (event.target.matches(".tree-list-item-action--trailing .tree-list-item-action-expand")) {
await tab.tree_list.onExpandAllClick(div_id);
tab.setDirectoryButtons();
} else if (event.target.matches(".tree-list-item-action--trailing .tree-list-item-action-collapse")) {
await tab.tree_list.onCollapseAllClick(div_id);
tab.setDirectoryButtons();
} else {
// user clicked anywhere else on the row
// No action items were clicked. Select the row.
await tab.tree_list.onRowSelected(div_id, btn);
tab.setDirectoryButtons(btn);
}
tab.setDirectoryButtons(btn);
}
function extraNetworksTreeOnClick(event, tabname_full) {

View file

@ -260,18 +260,6 @@ class ExtraNetworksClusterizeTreeList extends ExtraNetworksClusterize {
return res;
}
#setVisibility(div_id, visible) {
/** Recursively sets the visibility of a div_id and its children. */
const this_obj = this.data_obj[div_id];
this_obj.visible = visible;
if (!visible && div_id === this.selected_div_id) {
this.selected_div_id = null;
}
for (const child_id of this_obj.children) {
this.#setVisibility(child_id, visible && this_obj.expanded);
}
}
onRowSelected(div_id, elem, override) {
/** Selects a row and deselects all others.
*
@ -388,6 +376,12 @@ class ExtraNetworksClusterizeTreeList extends ExtraNetworksClusterize {
_collapse(child_id);
}
// Deselect current selected div id if it was just hidden.
if (!isNullOrUndefined(this.selected_div_id) && !this.data_obj[this.selected_div_id].visible) {
this.selected_div_id = null;
}
const new_len = Object.values(this.data_obj).filter(v => v.visible).length;
await this.setMaxItems(new_len);
await this.refresh(true);
@ -403,9 +397,21 @@ class ExtraNetworksClusterizeTreeList extends ExtraNetworksClusterize {
// Toggle state
this.data_obj[div_id].expanded = !this.data_obj[div_id].expanded;
const visible = this.data_obj[div_id].expanded;
const _set_visibility = (parent_id, visible) => {
const this_obj = this.data_obj[parent_id];
this_obj.visible = visible;
for (const child_id of this_obj.children) {
_set_visibility(child_id, visible && this_obj.expanded);
}
};
for (const child_id of this.data_obj[div_id].children) {
this.#setVisibility(child_id, visible);
_set_visibility(child_id, this.data_obj[div_id].expanded);
}
// Deselect current selected div id if it was just hidden.
if (!isNullOrUndefined(this.selected_div_id) && !this.data_obj[this.selected_div_id].visible) {
this.selected_div_id = null;
}
const new_len = Object.values(this.data_obj).filter(v => v.visible).length;