feat: display live value on ProjectKey output for INT/FLOAT/BOOL
Returns ui value alongside result for numeric/boolean types so JS onExecuted can show e.g. '42 seed' on the output slot, matching the BinaryIndexDecoder inline display style. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
+6
-4
@@ -299,13 +299,15 @@ class ProjectKey:
|
|||||||
val = data.get(key_name, "")
|
val = data.get(key_name, "")
|
||||||
|
|
||||||
if key_type == "INT":
|
if key_type == "INT":
|
||||||
return (to_int(val),)
|
result = to_int(val)
|
||||||
|
return {"ui": {"value": [str(result)]}, "result": (result,)}
|
||||||
elif key_type == "FLOAT":
|
elif key_type == "FLOAT":
|
||||||
return (to_float(val),)
|
result = to_float(val)
|
||||||
|
return {"ui": {"value": [f"{result:.4g}"]}, "result": (result,)}
|
||||||
elif isinstance(val, bool):
|
elif isinstance(val, bool):
|
||||||
return (str(val).lower(),)
|
return {"ui": {"value": [str(val).lower()]}, "result": (str(val).lower(),)}
|
||||||
elif isinstance(val, (int, float)):
|
elif isinstance(val, (int, float)):
|
||||||
return (val,)
|
return {"ui": {"value": [str(val)]}, "result": (val,)}
|
||||||
else:
|
else:
|
||||||
return (str(val),)
|
return (str(val),)
|
||||||
|
|
||||||
|
|||||||
@@ -201,6 +201,17 @@ app.registerExtension({
|
|||||||
app.graph?.setDirtyCanvas(true, true);
|
app.graph?.setDirtyCanvas(true, true);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
// --- Show live value on output slot after execution (INT/FLOAT/BOOL only) ---
|
||||||
|
nodeType.prototype.onExecuted = function (output) {
|
||||||
|
if (!output?.value?.[0] === undefined || !this.outputs.length) return;
|
||||||
|
const val = output.value?.[0];
|
||||||
|
if (val === undefined) return;
|
||||||
|
const keyWidget = this.widgets?.find(w => w.name === "key_name");
|
||||||
|
const name = keyWidget?.value || this.outputs[0].name;
|
||||||
|
this.outputs[0].label = `${val} ${name}`;
|
||||||
|
app.graph?.setDirtyCanvas(true, true);
|
||||||
|
};
|
||||||
|
|
||||||
// --- Highlight all ProjectKey nodes sharing the same key_name on select ---
|
// --- Highlight all ProjectKey nodes sharing the same key_name on select ---
|
||||||
nodeType.prototype.onSelected = function () {
|
nodeType.prototype.onSelected = function () {
|
||||||
const keyWidget = this.widgets?.find(w => w.name === "key_name");
|
const keyWidget = this.widgets?.find(w => w.name === "key_name");
|
||||||
|
|||||||
Reference in New Issue
Block a user