diff --git a/extensions-builtin/Lora/ui_extra_networks_lora.py b/extensions-builtin/Lora/ui_extra_networks_lora.py index 78d8634be..fe797202d 100644 --- a/extensions-builtin/Lora/ui_extra_networks_lora.py +++ b/extensions-builtin/Lora/ui_extra_networks_lora.py @@ -186,10 +186,13 @@ class ExtraNetworksPageLora(ui_extra_networks.ExtraNetworksPage): tags = build_tags(metadata) if tags is None or len(tags) == 0: + res += "

Model Tags

" + res += "
Metadata contains no tags
" return res min_tag = min(int(x[1]) for x in tags) max_tag = max(int(x[1]) for x in tags) + cmap = mpl.colormaps["coolwarm"] def _clamp(x: float, min_val: float, max_val: float) -> float: @@ -202,20 +205,31 @@ class ExtraNetworksPageLora(ui_extra_networks.ExtraNetworksPage): for (tag_name, tag_count) in tags: # Normalize tag count tag_count = int(tag_count) - cmap_idx = math.floor((tag_count - min_tag) / (max_tag - min_tag) * (cmap.N - 1)) + if min_tag == max_tag: # Prevent DivideByZero error. + cmap_idx = cmap.N // 2 + else: + cmap_idx = math.floor( + (tag_count - min_tag) / (max_tag - min_tag) * (cmap.N - 1) + ) + + # Get the bg color based on tag count and a contrasting fg color. base_color = cmap(cmap_idx) base_color = [_clamp(x, 0, 1) for x in base_color] base_fg_color = _get_fg_color(*base_color[:3]) + # Now get a slightly darker background for the tag count bg color. h, lum, s = colorsys.rgb_to_hls(*base_color[:3]) lum = max(min(lum * 0.7, 1.0), 0.0) dark_color = colorsys.hls_to_rgb(h, lum, s) dark_color = [_clamp(x, 0, 1) for x in dark_color] dark_fg_color = _get_fg_color(*dark_color[:3]) + # Convert the colors to a hex string. base_color = mpl.colors.rgb2hex(base_color) dark_color = mpl.colors.rgb2hex(dark_color) - tag_style = f"background: {mpl.colors.rgb2hex(base_color)};" + # Finally, generate the HTML for this tag. + tag_style = f"background: {base_color};" name_style = f"color: {base_fg_color};" count_style = f"background: {dark_color}; color: {dark_fg_color};" + tag_elems.append(( f"" f"{tag_name}" diff --git a/javascript/extraNetworks.js b/javascript/extraNetworks.js index 1441229d1..63a150827 100644 --- a/javascript/extraNetworks.js +++ b/javascript/extraNetworks.js @@ -959,7 +959,10 @@ class ExtraNetworksTab { model_name: source_elem.dataset.name, }, (response) => _show_details(response), - () => _popup("Error fetching model details."), + () => { + console.warn(`Error fetching model details for ${source_elem.dataset.name}`); + div_dets.innerHTML = `Error fetching model details for ${source_elem.dataset.name}`; + }, ); if (this.dets_view_en) { this.resize_grid.toggle({elem: div_dets, override: true}); diff --git a/modules/ui_extra_networks.py b/modules/ui_extra_networks.py index 55527ba94..7009f4d10 100644 --- a/modules/ui_extra_networks.py +++ b/modules/ui_extra_networks.py @@ -1063,7 +1063,11 @@ class ExtraNetworksPage: description = html.escape(description) description_data_attributes = "data-parse-as-shadow-dom" - model_specific = self.get_model_detail_extra_html(model_name) + try: + model_specific = self.get_model_detail_extra_html(model_name) + except Exception as exc: + print(f"Error getting model specific details for {model_name}: {exc}") + model_specific = "" return self.model_details_tpl.format( name=model_name,