From 2c5c1263c2ecfbeb44c73e1dccfbaff2ad855c5f Mon Sep 17 00:00:00 2001 From: Sj-Si Date: Mon, 22 Apr 2024 15:02:00 -0400 Subject: [PATCH] fix activation text and updating of cards --- javascript/extraNetworks.js | 11 +++++++---- javascript/extraNetworksClusterize.js | 18 +++--------------- modules/ui_extra_networks.py | 11 +++++++++-- 3 files changed, 19 insertions(+), 21 deletions(-) diff --git a/javascript/extraNetworks.js b/javascript/extraNetworks.js index 606a89934..45b726010 100644 --- a/javascript/extraNetworks.js +++ b/javascript/extraNetworks.js @@ -236,17 +236,18 @@ class ExtraNetworksTab { this.prompts_elem.classList.toggle("extra-page-prompts-active", show_neg_prompt || show_prompt); } - refreshSingleCard(name) { + refreshSingleCard(elem) { requestGet( "./sd_extra_networks/get-single-card", { tabname: this.tabname, extra_networks_tabname: this.extra_networks_tabname, - name: name, + name: elem.dataset.name, + div_id: elem.dataset.divId, }, (data) => { if (data && data.html) { - this.cards_list.updateCard(name, data.html); + this.cards_list.updateCard(elem, data.html); } }, ); @@ -686,7 +687,9 @@ function extraNetworksShowMetadata(text) { function extraNetworksRefreshSingleCard(tabname, extra_networks_tabname, name) { const tab = extra_networks_tabs[`${tabname}_${extra_networks_tabname}`]; - tab.refreshSingleCard(name); + const elem = tab.cards_list.content_elem.querySelector(`.card[data-name="${name}"]`); + isElementThrowError(elem); + tab.refreshSingleCard(elem); } function extraNetworksRefreshTab(tabname_full) { diff --git a/javascript/extraNetworksClusterize.js b/javascript/extraNetworksClusterize.js index 3326014d3..cc553a707 100644 --- a/javascript/extraNetworksClusterize.js +++ b/javascript/extraNetworksClusterize.js @@ -522,26 +522,14 @@ class ExtraNetworksClusterizeCardsList extends ExtraNetworksClusterize { this.data_obj = await this.options.callbacks.initData(); } - updateCard(name, new_html) { + updateCard(elem, new_html) { const parsed_html = htmlStringToElement(new_html); - const old_card = this.content_elem.querySelector(`.card[data-name="${name}"]`); - if (!isElementLogError(old_card)) { - return; - } - - const div_id = old_card.dataset.divId; - - // replace new html's data attributes with the current ones - for (const [k, v] of Object.entries(old_card.dataset)) { - parsed_html.dataset[k] = v; - } - // replace the element in DOM with our new element - old_card.replaceWith(parsed_html); + elem.replaceWith(parsed_html); // update the internal cache with the new html - this.lru.set(String(div_id), new_html); + this.lru.set(String(elem.dataset.divId), new_html); } async fetchData(idx_start, idx_end) { diff --git a/modules/ui_extra_networks.py b/modules/ui_extra_networks.py index 4e616b95d..c20c0b39e 100644 --- a/modules/ui_extra_networks.py +++ b/modules/ui_extra_networks.py @@ -1020,7 +1020,12 @@ def get_metadata(extra_networks_tabname: str = "", item: str = "") -> JSONRespon return JSONResponse({"metadata": json.dumps(metadata, indent=4, ensure_ascii=False)}) -def get_single_card(tabname: str = "", extra_networks_tabname: str = "", name: str = "") -> JSONResponse: +def get_single_card( + tabname: str = "", + extra_networks_tabname: str = "", + name: str = "", + div_id: str = "", +) -> JSONResponse: page = get_page_by_name(extra_networks_tabname) try: @@ -1034,7 +1039,9 @@ def get_single_card(tabname: str = "", extra_networks_tabname: str = "", name: s return JSONResponse({}) page.read_user_metadata(item, use_cache=False) - item_html = page.create_card_html(tabname=tabname, item=item) + item_html = page.create_card_html(tabname=tabname, item=item, div_id=div_id) + # Update the card's HTML in the page's dataset. + page.cards[div_id].html = item_html return JSONResponse({"html": item_html})