From 39d7d0334bd87adaa5bd279cacded88cf7a543d7 Mon Sep 17 00:00:00 2001 From: Pablo Hellmann Date: Sun, 24 Aug 2025 16:31:45 +0200 Subject: [PATCH 1/7] First implementation --- javascript/extraNetworks.js | 22 ++++++++++++++++++++++ modules/ui_extra_networks.py | 9 ++++++--- 2 files changed, 28 insertions(+), 3 deletions(-) diff --git a/javascript/extraNetworks.js b/javascript/extraNetworks.js index 2292b66af..2ff6c77d3 100644 --- a/javascript/extraNetworks.js +++ b/javascript/extraNetworks.js @@ -290,6 +290,28 @@ function extraNetworksSearchButton(event) { } } +function extraNetworksFilterVersion(event) { + // log('extraNetworksFilterVersion', event); + const version = event.target.textContent.trim(); + const activeTab = gradioApp().querySelector('.extra-networks-tab:not([style*="display: none"])'); + if (!activeTab) return; + const cardContainer = activeTab.querySelector('.extra-network-cards'); + if (!cardContainer) return; + if (cardContainer.dataset.activeVersion === version) { + cardContainer.dataset.activeVersion = ''; + cardContainer.querySelectorAll('.card').forEach(card => card.style.display = ''); + } else { + cardContainer.dataset.activeVersion = version; + cardContainer.querySelectorAll('.card').forEach(card => { + if (card.dataset.version === version) { + card.style.display = ''; + } else { + card.style.display = 'none'; + } + }); + } +} + let desiredStyle = ''; function selectStyle(name) { desiredStyle = name; diff --git a/modules/ui_extra_networks.py b/modules/ui_extra_networks.py index 06b3428fb..0af2f85a9 100644 --- a/modules/ui_extra_networks.py +++ b/modules/ui_extra_networks.py @@ -24,7 +24,7 @@ extra_pages = shared.extra_networks debug = shared.log.trace if os.environ.get('SD_EN_DEBUG', None) is not None else lambda *args, **kwargs: None debug('Trace: EN') card_full = ''' -
+
{title}
@@ -277,8 +277,11 @@ class ExtraNetworksPage: continue style = 'color: var(--color-accent)' if subdir in ['All', 'Local', 'Diffusers', 'Reference'] else '' subdirs_html += f'
' - self.html = '' self.create_items(tabname) + versions = sorted({item.get("version", "Unknown") for item in self.items if item.get("version")}) + versions_html = '' + for ver in versions: + versions_html += f'
' self.create_xyz_grid() htmls = [] @@ -302,7 +305,7 @@ class ExtraNetworksPage: htmls.append(self.create_html(item, tabname)) self.html += ''.join(htmls) self.page_time = time.time() - self.html = f"
{subdirs_html}
{self.html}
" + self.html = f"""
{subdirs_html}{versions_html}
{self.html}
""" shared.log.debug(f'Networks: type="{self.name}" items={len(self.items)} subfolders={len(subdirs)} tab={tabname} folders={self.allowed_directories_for_previews()} list={self.list_time:.2f} thumb={self.preview_time:.2f} desc={self.desc_time:.2f} info={self.info_time:.2f} workers={shared.max_workers}') if len(self.missing_thumbs) > 0: threading.Thread(target=self.create_thumb).start() From dda6f912d31d2171df1772149536f876e46e8eed Mon Sep 17 00:00:00 2001 From: Pablo Hellmann Date: Sun, 24 Aug 2025 16:41:31 +0200 Subject: [PATCH 2/7] re-add cleanup self.html --- modules/ui_extra_networks.py | 1 + 1 file changed, 1 insertion(+) diff --git a/modules/ui_extra_networks.py b/modules/ui_extra_networks.py index 0af2f85a9..a3bd7cd14 100644 --- a/modules/ui_extra_networks.py +++ b/modules/ui_extra_networks.py @@ -277,6 +277,7 @@ class ExtraNetworksPage: continue style = 'color: var(--color-accent)' if subdir in ['All', 'Local', 'Diffusers', 'Reference'] else '' subdirs_html += f'
' + self.html = '' self.create_items(tabname) versions = sorted({item.get("version", "Unknown") for item in self.items if item.get("version")}) versions_html = '' From 03a0bf13002dc1b727da5415cafaa48b5a86d089 Mon Sep 17 00:00:00 2001 From: Pablo Hellmann Date: Sun, 24 Aug 2025 16:49:20 +0200 Subject: [PATCH 3/7] Used Unknown instead of N/A --- modules/ui_extra_networks.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/ui_extra_networks.py b/modules/ui_extra_networks.py index a3bd7cd14..7c1e61b34 100644 --- a/modules/ui_extra_networks.py +++ b/modules/ui_extra_networks.py @@ -279,7 +279,7 @@ class ExtraNetworksPage: subdirs_html += f'
' self.html = '' self.create_items(tabname) - versions = sorted({item.get("version", "Unknown") for item in self.items if item.get("version")}) + versions = sorted({item.get("version", "N/A") for item in self.items if item.get("version")}) versions_html = '' for ver in versions: versions_html += f'
' From f30607715b07aa89973a5b82b4204aa42ac1c96d Mon Sep 17 00:00:00 2001 From: Pablo Hellmann Date: Mon, 25 Aug 2025 08:54:15 +0200 Subject: [PATCH 4/7] Empty instead of N/A --- modules/ui_extra_networks.py | 2 +- modules/ui_extra_networks_checkpoints.py | 2 +- modules/ui_extra_networks_vae.py | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/modules/ui_extra_networks.py b/modules/ui_extra_networks.py index 7c1e61b34..190a39a4a 100644 --- a/modules/ui_extra_networks.py +++ b/modules/ui_extra_networks.py @@ -279,7 +279,7 @@ class ExtraNetworksPage: subdirs_html += f'
' self.html = '' self.create_items(tabname) - versions = sorted({item.get("version", "N/A") for item in self.items if item.get("version")}) + versions = sorted({item.get("version", "") for item in self.items if item.get("version")}) versions_html = '' for ver in versions: versions_html += f'
' diff --git a/modules/ui_extra_networks_checkpoints.py b/modules/ui_extra_networks_checkpoints.py index 7041157f8..9fb5f2d1c 100644 --- a/modules/ui_extra_networks_checkpoints.py +++ b/modules/ui_extra_networks_checkpoints.py @@ -63,7 +63,7 @@ class ExtraNetworksPageCheckpoints(ui_extra_networks.ExtraNetworksPage): } record["info"] = self.find_info(checkpoint.filename) record["description"] = self.find_description(checkpoint.filename, record["info"]) - record["version"] = record["info"].get("modelVersions", [{}])[0].get("baseModel", "N/A") if record["info"] else "N/A" + record["version"] = record["info"].get("modelVersions", [{}])[0].get("baseModel", "") if record["info"] else "" except Exception as e: shared.log.debug(f'Networks error: type=model file="{name}" {e}') diff --git a/modules/ui_extra_networks_vae.py b/modules/ui_extra_networks_vae.py index 78b6d8d5c..718078ea6 100644 --- a/modules/ui_extra_networks_vae.py +++ b/modules/ui_extra_networks_vae.py @@ -31,7 +31,7 @@ class ExtraNetworksPageVAEs(ui_extra_networks.ExtraNetworksPage): "size": size, "info": info, "description": self.find_description(filename, info), - "version": info.get("modelVersions", [{}])[0].get("baseModel", "N/A") if info else "N/A", + "version": info.get("modelVersions", [{}])[0].get("baseModel", "") if info else "", } yield record except Exception as e: From 0d6c17212e2dc936b1663f03343d7b850b91eafb Mon Sep 17 00:00:00 2001 From: Pablo Hellmann Date: Mon, 25 Aug 2025 18:43:39 +0200 Subject: [PATCH 5/7] Update ui_extra_networks_checkpoints.py --- modules/ui_extra_networks_checkpoints.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/modules/ui_extra_networks_checkpoints.py b/modules/ui_extra_networks_checkpoints.py index 9fb5f2d1c..d3071e9f9 100644 --- a/modules/ui_extra_networks_checkpoints.py +++ b/modules/ui_extra_networks_checkpoints.py @@ -63,7 +63,7 @@ class ExtraNetworksPageCheckpoints(ui_extra_networks.ExtraNetworksPage): } record["info"] = self.find_info(checkpoint.filename) record["description"] = self.find_description(checkpoint.filename, record["info"]) - record["version"] = record["info"].get("modelVersions", [{}])[0].get("baseModel", "") if record["info"] else "" + record["version"] = record["info"].get("modelVersions", [{}])[0].get("baseModel", "N/A") if record["info"] else "N/A" except Exception as e: shared.log.debug(f'Networks error: type=model file="{name}" {e}') @@ -83,4 +83,4 @@ class ExtraNetworksPageCheckpoints(ui_extra_networks.ExtraNetworksPage): return items def allowed_directories_for_previews(self): - return [v for v in [shared.opts.ckpt_dir, reference_dir, sd_models.model_path] if v is not None] + return [v for v in [shared.opts.ckpt_dir, reference_dir, sd_models.model_path] if v is not None] \ No newline at end of file From 24faad6d47adbe3edb1025e9f3b3c610558339c1 Mon Sep 17 00:00:00 2001 From: Pablo Hellmann Date: Mon, 25 Aug 2025 18:43:47 +0200 Subject: [PATCH 6/7] Update ui_extra_networks_vae.py --- modules/ui_extra_networks_vae.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/ui_extra_networks_vae.py b/modules/ui_extra_networks_vae.py index 718078ea6..78b6d8d5c 100644 --- a/modules/ui_extra_networks_vae.py +++ b/modules/ui_extra_networks_vae.py @@ -31,7 +31,7 @@ class ExtraNetworksPageVAEs(ui_extra_networks.ExtraNetworksPage): "size": size, "info": info, "description": self.find_description(filename, info), - "version": info.get("modelVersions", [{}])[0].get("baseModel", "") if info else "", + "version": info.get("modelVersions", [{}])[0].get("baseModel", "N/A") if info else "N/A", } yield record except Exception as e: From f22ebdbb953df4bd91509d10b6a388dba9ccda73 Mon Sep 17 00:00:00 2001 From: Pablo Hellmann Date: Mon, 25 Aug 2025 18:44:25 +0200 Subject: [PATCH 7/7] Update ui_extra_networks_checkpoints.py --- modules/ui_extra_networks_checkpoints.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/ui_extra_networks_checkpoints.py b/modules/ui_extra_networks_checkpoints.py index d3071e9f9..7041157f8 100644 --- a/modules/ui_extra_networks_checkpoints.py +++ b/modules/ui_extra_networks_checkpoints.py @@ -83,4 +83,4 @@ class ExtraNetworksPageCheckpoints(ui_extra_networks.ExtraNetworksPage): return items def allowed_directories_for_previews(self): - return [v for v in [shared.opts.ckpt_dir, reference_dir, sd_models.model_path] if v is not None] \ No newline at end of file + return [v for v in [shared.opts.ckpt_dir, reference_dir, sd_models.model_path] if v is not None]