UNPKG

raas-core

Version:
113 lines 3.09 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); class ProgressMonitor { constructor(delegate, closeHandler) { this.delegate = delegate; this.closeHandler = closeHandler; this.isCancelled = false; this._done = false; this.preWork = 0; this.totalWork = 0; this.title = ''; this.started = false; this.finalizing = false; } handleMessage(err, msg) { console.log('progressMonitor recieved message: ' + JSON.stringify(msg.body)); this.delegateMessage(msg.body); } delegateMessage(msg) { if (msg.op === 'beginTask') { const task = msg.task; const work = msg.totalWork; this.beginTask(task, work); return; } const value = msg.value; switch (msg.op) { case 'logMessage': this.logMessage(value); break; case 'done': this.done(); break; case 'setTaskName': this.setTaskName(value); break; case 'subTask': this.subTask(value); break; case 'worked': this.worked(value); break; } if (!this.started) { this.started = true; this.report('Launching analysis...'); } } doClose() { this.closeHandler(); } stop() { this.doClose(); } logMessage(message) { } beginTask(task, total) { this.title = 'Migration assessment in progress'; this.totalWork = total; this.setTitle(this.title); } done() { this.report('Done'); this._done = true; this.doClose(); } isDone() { return this._done; } setCancelled() { this.report('Cancelled'); this.isCancelled = true; this.doClose(); } setTaskName(task) { this.report(task); } subTask(name) { } worked(worked) { this.preWork += worked; this.setTitle(this.computeTitle()); } getPercentangeDone() { return Math.trunc(Math.min((this.preWork * 100 / this.totalWork), 100)); } computeTitle() { const done = this.getPercentangeDone(); let label = this.title; if (done > 0) { label += ` (${done} % done)`; } return label; } setTitle(value) { this.report(value); } report(msg) { if (!this.isDone && !this.isCancelled && !this.finalizing) { if (this.getPercentangeDone() === 99) { this.finalizing = true; setTimeout(() => null, 500); msg = 'Finalizing assessment...'; } this.delegate.report({ message: msg }); } else { console.log('progress done or cancelled, cannot report: ' + msg); } } } exports.ProgressMonitor = ProgressMonitor; //# sourceMappingURL=progress.js.map