Commit a1d6ada6 authored by AUTOMATIC1111's avatar AUTOMATIC1111
Browse files

allow refreshing single card after editing user metadata instead of all cards

parent efceed8c
Loading
Loading
Loading
Loading
+1 −3
Original line number Diff line number Diff line
@@ -182,6 +182,4 @@ class LoraUserMetadataEditor(ui_extra_networks_user_metadata.UserMetadataEditor)
            self.edit_notes,
        ]

        self.button_save\
            .click(fn=self.save_lora_user_metadata, inputs=[self.edit_name_input, *edited_components], outputs=[]) \
            .then(fn=None, _js="extraNetworksReloadAll")
        self.setup_save_handler(self.button_save, self.save_lora_user_metadata, edited_components)
+30 −24
Original line number Diff line number Diff line
@@ -13,8 +13,9 @@ class ExtraNetworksPageLora(ui_extra_networks.ExtraNetworksPage):
    def refresh(self):
        lora.list_available_loras()

    def list_items(self):
        for index, (name, lora_on_disk) in enumerate(lora.available_loras.items()):
    def create_item(self, name, index=None):
        lora_on_disk = lora.available_loras.get(name)

        path, ext = os.path.splitext(lora_on_disk.filename)

        alias = lora_on_disk.get_alias()
@@ -38,6 +39,11 @@ class ExtraNetworksPageLora(ui_extra_networks.ExtraNetworksPage):
        if activation_text:
            item["prompt"] += " + " + json.dumps(" " + activation_text)

        return item

    def list_items(self):
        for index, name in enumerate(lora.available_loras):
            item = self.create_item(name, index)
            yield item

    def allowed_directories_for_previews(self):
+1 −1
Original line number Diff line number Diff line
<div class='card' style={style} onclick={card_clicked} {sort_keys}>
<div class='card' style={style} onclick={card_clicked} data-name="{name}" {sort_keys}>
	{background_image}
	<div class="button-row">
		{edit_button}
+14 −5
Original line number Diff line number Diff line
@@ -296,9 +296,18 @@ function extraNetworksEditUserMetadata(event, tabname, extraPage, cardName) {
    event.stopPropagation();
}

function extraNetworksReloadAll() {
    closePopup();
function extraNetworksRefreshSingleCard(page, tabname, name) {
    requestGet("./sd_extra_networks/get-single-card", {page: page, tabname: tabname, name: name}, function(data) {
        if (data && data.html) {
            var card = gradioApp().querySelector('.card[data-name=' + JSON.stringify(name) + ']'); // likely using the wrong stringify function

    gradioApp().getElementById('txt2img_extra_refresh').click();
    gradioApp().getElementById('img2img_extra_refresh').click();
            var newDiv = document.createElement('DIV');
            newDiv.innerHTML = data.html;
            var newCard = newDiv.firstElementChild;

            newCard.style = '';
            card.parentElement.insertBefore(newCard, card);
            card.parentElement.removeChild(card);
        }
    });
}
+20 −0
Original line number Diff line number Diff line
@@ -51,9 +51,26 @@ def get_metadata(page: str = "", item: str = ""):
    return JSONResponse({"metadata": metadata})


def get_single_card(page: str = "", tabname: str = "", name: str = ""):
    from starlette.responses import JSONResponse

    page = next(iter([x for x in extra_pages if x.name == page]), None)

    try:
        item = page.create_item(name)
    except Exception as e:
        errors.display(e, "creating item for extra network")
        item = page.items.get(name)

    item_html = page.create_html_for_item(item, tabname)

    return JSONResponse({"html": item_html})


def add_pages_to_demo(app):
    app.add_api_route("/sd_extra_networks/thumb", fetch_file, methods=["GET"])
    app.add_api_route("/sd_extra_networks/metadata", get_metadata, methods=["GET"])
    app.add_api_route("/sd_extra_networks/get-single-card", get_single_card, methods=["GET"])


class ExtraNetworksPage:
@@ -168,6 +185,9 @@ class ExtraNetworksPage:

        return res

    def create_item(self, name, index=None):
        raise NotImplementedError()

    def list_items(self):
        raise NotImplementedError()

Loading