Files
2026-01-14 21:09:55 +02:00

113 lines
3.8 KiB
JavaScript

import { ComfyApp, app } from "../../scripts/app.js";
app.registerExtension({
name: "Comfy.noEmbryo",
nodeCreated(node, app) {
console.log("nodeCreated", node.comfyClass);
// if(node.comfyClass === "LoadImage From Dir /noEmbryo") {
//
// // async function listAllFiles(dirHandle) {
// // const files = [];
// // for await (let [name, handle] of dirHandle) {
// // const {kind} = handle;
// // {
// // files.push({name, handle, kind});
// // }
// // }
// // return files;
// // }
// //
// // async function onClickHandler(e) {
// // try {
// // const directoryHandle = await window.showDirectoryPicker()
// // console.log(directoryHandle)
// // const data = await listAllFiles(directoryHandle);
// // // console.log('files', files);
// // return data;
// // }catch(e) {
// // console.log(e);
// // }
// // }
//
// let path_i = 0;
// let images_i = 1;
// node._value = "None";
//
// Object.defineProperty(node.widgets[path_i], "value", {
// set: (value) => {
// const stackTrace = new Error().stack;
// if(stackTrace.includes('inner_value_change')) {
// if(value !== "") {
// console.log(node.widgets[images_i])
// let values = node.widgets[images_i].options.values;
// console.log(values)
// node.widgets[images_i].value = values[1];
// // if(node.widgets_values) {
// // node.widgets_values[images_i] = node.widgets[path_i].value;
// // }
// }
// }
//
// node._value = value;
// },
// get: () => {
// return node._value;
// }
// });
// }
if(node.comfyClass === "JsonPromptLoader -noEmbryo") {
console.log('Setting up JsonPromptLoader');
let json_path_i = 0;
let selected_title_i = 1;
const originalCallback = node.widgets[json_path_i].callback;
node.widgets[json_path_i].callback = async (value) => {
// console.log('Callback called with path:', value);
if(originalCallback) originalCallback(value);
if(value) {
try {
const url = '/noembryo/get_json?path=' + encodeURIComponent(value);
// console.log('Fetching:', url);
const response = await fetch(url);
// console.log('Response status:', response.status);
const data = await response.json();
// console.log('Data:', data);
if(data.error) {
console.log('Error:', data.error);
node.widgets[selected_title_i].options.values = ["None"];
node.widgets[selected_title_i].value = "None";
app.graph.setDirtyCanvas(true, true);
} else {
const titles = ["None", ...Object.keys(data)];
// console.log('Titles:', titles);
node.widgets[selected_title_i].options.values = titles;
const currentValue = node.widgets[selected_title_i].value;
if (titles.includes(currentValue)) {
node.widgets[selected_title_i].value = currentValue;
} else {
node.widgets[selected_title_i].value = "None";
}
app.graph.setDirtyCanvas(true, true);
}
} catch (e) {
console.log('Error loading JSON:', e);
node.widgets[selected_title_i].options.values = ["None"];
node.widgets[selected_title_i].value = "None";
}
} else {
node.widgets[selected_title_i].options.values = ["None"];
node.widgets[selected_title_i].value = "None";
}
};
// Trigger callback if path is already set (e.g., from loaded workflow)
setTimeout(() => {
if(node.widgets[json_path_i].value) {
node.widgets[json_path_i].callback(node.widgets[json_path_i].value);
}
}, 100);
}
}
});