mirror of
https://github.com/justUmen/Bjornulf_custom_nodes.git
synced 2026-03-21 12:42:11 -03:00
111 lines
4.2 KiB
JavaScript
111 lines
4.2 KiB
JavaScript
import { app } from "../../../scripts/app.js";
|
|
|
|
app.registerExtension({
|
|
name: "Bjornulf.LoopLinesSequential",
|
|
async nodeCreated(node) {
|
|
if (node.comfyClass !== "Bjornulf_LoopLinesSequential") return;
|
|
|
|
// Hide seed widget
|
|
const seedWidget = node.widgets.find(w => w.name === "seed");
|
|
if (seedWidget) {
|
|
seedWidget.visible = false;
|
|
}
|
|
|
|
// Add line number display
|
|
const lineNumberWidget = node.addWidget("html", "Current Line: --", null, {
|
|
callback: () => {},
|
|
});
|
|
|
|
// Function to update line number display
|
|
const updateLineNumber = () => {
|
|
fetch('/get_current_line')
|
|
.then(response => response.json())
|
|
.then(data => {
|
|
if (data.success) {
|
|
lineNumberWidget.value = `Current Line: ${data.value}`;
|
|
}
|
|
})
|
|
.catch(error => {
|
|
console.error('Error getting line number:', error);
|
|
});
|
|
};
|
|
|
|
// Add increment button
|
|
const incrementButton = node.addWidget("button", "+1", null, () => {
|
|
fetch('/increment_lines_counter', {
|
|
method: 'POST'
|
|
})
|
|
.then(response => response.json())
|
|
.then(data => {
|
|
if (data.success) {
|
|
updateLineNumber();
|
|
app.ui.toast("Counter incremented", {'duration': 3000});
|
|
} else {
|
|
app.ui.toast(`Failed to increment counter: ${data.error || "Unknown error"}`, {'type': 'error', 'duration': 5000});
|
|
}
|
|
})
|
|
.catch((error) => {
|
|
console.error('Error:', error);
|
|
app.ui.toast("An error occurred while incrementing the counter.", {'type': 'error', 'duration': 5000});
|
|
});
|
|
});
|
|
|
|
// Add decrement button
|
|
const decrementButton = node.addWidget("button", "-1", null, () => {
|
|
fetch('/decrement_lines_counter', {
|
|
method: 'POST'
|
|
})
|
|
.then(response => response.json())
|
|
.then(data => {
|
|
if (data.success) {
|
|
updateLineNumber();
|
|
app.ui.toast("Counter decremented", {'duration': 3000});
|
|
} else {
|
|
app.ui.toast(`Failed to decrement counter: ${data.error || "Unknown error"}`, {'type': 'error', 'duration': 5000});
|
|
}
|
|
})
|
|
.catch((error) => {
|
|
console.error('Error:', error);
|
|
app.ui.toast("An error occurred while decrementing the counter.", {'type': 'error', 'duration': 5000});
|
|
});
|
|
});
|
|
|
|
// Add reset button
|
|
const resetButton = node.addWidget("button", "Reset Counter", null, () => {
|
|
fetch('/reset_lines_counter', {
|
|
method: 'POST'
|
|
})
|
|
.then(response => response.json())
|
|
.then(data => {
|
|
if (data.success) {
|
|
updateLineNumber();
|
|
app.ui.toast("Counter reset successfully!", {'duration': 5000});
|
|
} else {
|
|
app.ui.toast(`Failed to reset counter: ${data.error || "Unknown error"}`, {'type': 'error', 'duration': 5000});
|
|
}
|
|
})
|
|
.catch((error) => {
|
|
console.error('Error:', error);
|
|
app.ui.toast("An error occurred while resetting the counter.", {'type': 'error', 'duration': 5000});
|
|
});
|
|
});
|
|
|
|
// Update line number periodically
|
|
setInterval(updateLineNumber, 1000);
|
|
|
|
// Override the original execute function
|
|
const originalExecute = node.execute;
|
|
node.execute = function() {
|
|
const result = originalExecute.apply(this, arguments);
|
|
if (result instanceof Promise) {
|
|
return result.catch(error => {
|
|
if (error.message.includes("Counter has reached its limit")) {
|
|
app.ui.toast(`Execution blocked: ${error.message}`, {'type': 'error', 'duration': 5000});
|
|
}
|
|
throw error;
|
|
});
|
|
}
|
|
return result;
|
|
};
|
|
}
|
|
}); |