diff --git a/src/web/App.mjs b/src/web/App.mjs index 48d7d6b5..e7e80a99 100755 --- a/src/web/App.mjs +++ b/src/web/App.mjs @@ -160,11 +160,9 @@ class App { if (this.autoBake_ && !this.baking) { log.debug("Auto-baking"); - this.manager.input.inputWorker.postMessage({ - action: "autobake", - data: { - activeTab: this.manager.tabs.getActiveTab("input") - } + this.manager.worker.bakeInputs({ + nums: [this.manager.tabs.getActiveTab("input")], + step: false }); } else { this.manager.controls.showStaleIndicator(); diff --git a/src/web/Manager.mjs b/src/web/Manager.mjs index 3bfc70fb..b02a7eee 100755 --- a/src/web/Manager.mjs +++ b/src/web/Manager.mjs @@ -17,6 +17,7 @@ import SeasonalWaiter from "./waiters/SeasonalWaiter.mjs"; import BindingsWaiter from "./waiters/BindingsWaiter.mjs"; import BackgroundWorkerWaiter from "./waiters/BackgroundWorkerWaiter.mjs"; import TabWaiter from "./waiters/TabWaiter.mjs"; +import TimingWaiter from "./waiters/TimingWaiter.mjs"; /** @@ -59,6 +60,7 @@ class Manager { this.statechange = new CustomEvent("statechange", {bubbles: true}); // Define Waiter objects to handle various areas + this.timing = new TimingWaiter(this.app, this); this.worker = new WorkerWaiter(this.app, this); this.window = new WindowWaiter(this.app); this.controls = new ControlsWaiter(this.app, this); diff --git a/src/web/utils/statusBar.mjs b/src/web/utils/statusBar.mjs index 2110c60d..ad8931ee 100644 --- a/src/web/utils/statusBar.mjs +++ b/src/web/utils/statusBar.mjs @@ -18,7 +18,8 @@ class StatusBarPanel { */ constructor(opts) { this.label = opts.label; - this.bakeStats = opts.bakeStats ? opts.bakeStats : null; + this.timing = opts.timing; + this.tabNumGetter = opts.tabNumGetter; this.eolHandler = opts.eolHandler; this.chrEncHandler = opts.chrEncHandler; this.chrEncGetter = opts.chrEncGetter; @@ -243,18 +244,21 @@ class StatusBarPanel { } /** - * Sets the latest bake duration + * Sets the latest timing info */ - updateBakeStats() { + updateTiming() { + if (!this.timing) return; + const bakingTime = this.dom.querySelector(".baking-time-value"); const bakingTimeInfo = this.dom.querySelector(".baking-time-info"); - if (this.label === "Output" && - this.bakeStats && - typeof this.bakeStats.duration === "number" && - this.bakeStats.duration >= 0) { + if (this.label === "Output" && this.timing) { bakingTimeInfo.style.display = "inline-block"; - bakingTime.textContent = this.bakeStats.duration; + bakingTime.textContent = this.timing.overallDuration(this.tabNumGetter()); + + const info = this.timing.printStages(this.tabNumGetter()).replace(/\n/g, "
"); + bakingTimeInfo.setAttribute("title", info); + bakingTimeInfo.setAttribute("data-original-title", info); } else { bakingTimeInfo.style.display = "none"; } @@ -335,7 +339,7 @@ class StatusBarPanel { ).join(""); return ` -