Files
da2el-ai-D2-nodes-ComfyUI/web/D2_ModelList.js
T

52 lines
1.8 KiB
JavaScript

import { app } from "/scripts/app.js";
import { $el } from "../../../scripts/ui.js";
import { findWidgetByName, sleep, getReadOnlyWidgetBase } from "./utils.js";
app.registerExtension({
name: "Comfy.D2.D2_XYModelList",
async beforeRegisterNodeDef(nodeType, nodeData, app) {
if (nodeData.name !== "D2 XY Model List") return;
const getModelFiles = (type, filter) => {
return new Promise(async (resolve) => {
const url = `/D2/model-list/get-list?type=${type}&filter=${filter}`;
const response = await fetch(url);
const data = await response.json();
resolve(data.files);
});
}
/**
* ノード作成された
* ウィジェット登録と初期設定
*/
const origOnNodeCreated = nodeType.prototype.onNodeCreated;
nodeType.prototype.onNodeCreated = function () {
const r = origOnNodeCreated ? origOnNodeCreated.apply(this) : undefined;
const btn = findWidgetByName(this, "get_list");
const typeWidget = findWidgetByName(this, "model_type");
const filterWidget = findWidgetByName(this, "filter");
const modelListWidget = findWidgetByName(this, "model_list");
btn.callback = async () => {
const modelList = await getModelFiles(typeWidget.value, filterWidget.value);
modelListWidget.value = modelList.join("\n");
};
return r;
};
},
getCustomWidgets(app) {
return {
D2_GET_MODEL_BTN(node, inputName, inputData, app) {
const widget = node.addWidget("button", "get_list", 0, () => {});
return widget;
},
};
},
});