| | import { api } from "../../../scripts/api.js"; |
| | import { app } from "../../../scripts/app.js"; |
| |
|
| | app.registerExtension({ |
| | name: "KJNodes.browserstatus", |
| | setup() { |
| | if (!app.ui.settings.getSettingValue("KJNodes.browserStatus")) { |
| | return; |
| | } |
| | api.addEventListener("status", ({ detail }) => { |
| | let title = "ComfyUI"; |
| | let favicon = "green"; |
| | let queueRemaining = detail && detail.exec_info.queue_remaining; |
| |
|
| | if (queueRemaining) { |
| | favicon = "red"; |
| | title = `00% - ${queueRemaining} | ${title}`; |
| | } |
| | let link = document.querySelector("link[rel~='icon']"); |
| | if (!link) { |
| | link = document.createElement("link"); |
| | link.rel = "icon"; |
| | document.head.appendChild(link); |
| | } |
| | link.href = new URL(`../${favicon}.png`, import.meta.url); |
| | document.title = title; |
| | }); |
| | |
| | api.addEventListener("progress", ({ detail }) => { |
| | const { value, max } = detail; |
| | const progress = Math.floor((value / max) * 100); |
| | let title = document.title; |
| | |
| | if (!isNaN(progress) && progress >= 0 && progress <= 100) { |
| | const paddedProgress = String(progress).padStart(2, '0'); |
| | title = `${paddedProgress}% ${title.replace(/^\d+%\s/, '')}`; |
| | } |
| | document.title = title; |
| | }); |
| | }, |
| | init() { |
| | if (!app.ui.settings.getSettingValue("KJNodes.browserStatus")) { |
| | return; |
| | } |
| | const pythongossFeed = app.extensions.find( |
| | (e) => e.name === 'pysssss.FaviconStatus', |
| | ) |
| | if (pythongossFeed) { |
| | console.warn("KJNodes - Overriding pysssss.FaviconStatus") |
| | app.extensions = app.extensions.filter(item => item !== pythongossFeed); |
| | } |
| | }, |
| | }); |