Spaces:
Runtime error
Runtime error
import { api } from "../../scripts/api.js"; | |
// copying from https://github.com/pythongosssss/ComfyUI-WD14-Tagger | |
class InspireProgressBadge { | |
constructor() { | |
if (!window.__progress_badge__) { | |
window.__progress_badge__ = Symbol("__inspire_progress_badge__"); | |
} | |
this.symbol = window.__progress_badge__; | |
} | |
getState(node) { | |
return node[this.symbol] || {}; | |
} | |
setState(node, state) { | |
node[this.symbol] = state; | |
app.canvas.setDirty(true); | |
} | |
addStatusHandler(nodeType) { | |
if (nodeType[this.symbol]?.statusTagHandler) { | |
return; | |
} | |
if (!nodeType[this.symbol]) { | |
nodeType[this.symbol] = {}; | |
} | |
nodeType[this.symbol] = { | |
statusTagHandler: true, | |
}; | |
api.addEventListener("inspire/update_status", ({ detail }) => { | |
let { node, progress, text } = detail; | |
const n = app.graph.getNodeById(+(node || app.runningNodeId)); | |
if (!n) return; | |
const state = this.getState(n); | |
state.status = Object.assign(state.status || {}, { progress: text ? progress : null, text: text || null }); | |
this.setState(n, state); | |
}); | |
const self = this; | |
const onDrawForeground = nodeType.prototype.onDrawForeground; | |
nodeType.prototype.onDrawForeground = function (ctx) { | |
const r = onDrawForeground?.apply?.(this, arguments); | |
const state = self.getState(this); | |
if (!state?.status?.text) { | |
return r; | |
} | |
const { fgColor, bgColor, text, progress, progressColor } = { ...state.status }; | |
ctx.save(); | |
ctx.font = "12px sans-serif"; | |
const sz = ctx.measureText(text); | |
ctx.fillStyle = bgColor || "dodgerblue"; | |
ctx.beginPath(); | |
ctx.roundRect(0, -LiteGraph.NODE_TITLE_HEIGHT - 20, sz.width + 12, 20, 5); | |
ctx.fill(); | |
if (progress) { | |
ctx.fillStyle = progressColor || "green"; | |
ctx.beginPath(); | |
ctx.roundRect(0, -LiteGraph.NODE_TITLE_HEIGHT - 20, (sz.width + 12) * progress, 20, 5); | |
ctx.fill(); | |
} | |
ctx.fillStyle = fgColor || "#fff"; | |
ctx.fillText(text, 6, -LiteGraph.NODE_TITLE_HEIGHT - 6); | |
ctx.restore(); | |
return r; | |
}; | |
} | |
} | |
export const inspireProgressBadge = new InspireProgressBadge(); | |