UNPKG

@iotile/iotile-common

Version:

Common utilities for IoTile Packages and Applications

262 lines 9.8 kB
"use strict"; /* * Classes for reporting progress about complex * multistep operations. */ var __extends = (this && this.__extends) || (function () { var extendStatics = Object.setPrototypeOf || ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; }; return function (d, b) { extendStatics(d, b); function __() { this.constructor = d; } d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); }; })(); Object.defineProperty(exports, "__esModule", { value: true }); var ProgressNotifier = /** @class */ (function () { function ProgressNotifier() { } ProgressNotifier.prototype.finishOne = function () { }; ProgressNotifier.prototype.startOne = function (desc, subparts) { return null; }; ProgressNotifier.prototype.setTotal = function (total) { }; ProgressNotifier.prototype.addMessage = function (severity, message, priority) { if (priority === void 0) { priority = false; } }; ProgressNotifier.prototype.addError = function (message, priority) { if (priority === void 0) { priority = false; } this.addMessage(MessageSeverity.Error, message, priority); }; ProgressNotifier.prototype.addInfo = function (message, priority) { if (priority === void 0) { priority = false; } this.addMessage(MessageSeverity.Info, message, priority); }; ProgressNotifier.prototype.addWarning = function (message, priority) { if (priority === void 0) { priority = false; } this.addMessage(MessageSeverity.Warn, message, priority); }; ProgressNotifier.prototype.fatalError = function (message) { }; ProgressNotifier.prototype.updateDescription = function (desc) { }; Object.defineProperty(ProgressNotifier.prototype, "hasErrors", { get: function () { return false; }, enumerable: true, configurable: true }); return ProgressNotifier; }()); exports.ProgressNotifier = ProgressNotifier; var TaskProgressNotifier = /** @class */ (function (_super) { __extends(TaskProgressNotifier, _super); function TaskProgressNotifier(manager) { var _this = _super.call(this) || this; _this.manager = manager; return _this; } TaskProgressNotifier.prototype.finishOne = function () { this.manager.finishTask(); }; TaskProgressNotifier.prototype.startOne = function (desc, subparts) { return this.manager.startTask(desc, subparts); }; TaskProgressNotifier.prototype.updateDescription = function (desc) { this.manager.subTaskDescription = desc; this.manager.updateScope(); }; TaskProgressNotifier.prototype.setTotal = function (total) { this.manager.totalTasks = total; }; TaskProgressNotifier.prototype.addMessage = function (severity, message, priority) { if (priority === void 0) { priority = false; } this.manager.addMessage(severity, message, priority); }; TaskProgressNotifier.prototype.fatalError = function (message) { this.manager.fatalError(message); }; Object.defineProperty(TaskProgressNotifier.prototype, "hasErrors", { get: function () { return this.manager.hasErrors; }, enumerable: true, configurable: true }); return TaskProgressNotifier; }(ProgressNotifier)); exports.TaskProgressNotifier = TaskProgressNotifier; var SubTaskProgressNotifier = /** @class */ (function (_super) { __extends(SubTaskProgressNotifier, _super); function SubTaskProgressNotifier(manager) { var _this = _super.call(this) || this; _this.manager = manager; return _this; } SubTaskProgressNotifier.prototype.finishOne = function () { this.manager.updateSubtask(); }; SubTaskProgressNotifier.prototype.startOne = function (desc, subparts) { this.manager.subSubTaskDescription = desc; return new ProgressNotifier(); }; SubTaskProgressNotifier.prototype.setTotal = function (total) { this.manager.subTaskTotal = total; }; SubTaskProgressNotifier.prototype.addMessage = function (severity, message, priority) { if (priority === void 0) { priority = false; } this.manager.addMessage(severity, message, priority); }; SubTaskProgressNotifier.prototype.fatalError = function (message) { this.manager.fatalError(message); }; SubTaskProgressNotifier.prototype.updateDescription = function (desc) { this.manager.subSubTaskDescription = desc; this.manager.updateScope(); }; return SubTaskProgressNotifier; }(ProgressNotifier)); exports.SubTaskProgressNotifier = SubTaskProgressNotifier; var MessageSeverity; (function (MessageSeverity) { MessageSeverity[MessageSeverity["Info"] = 0] = "Info"; MessageSeverity[MessageSeverity["Warn"] = 1] = "Warn"; MessageSeverity[MessageSeverity["Error"] = 2] = "Error"; MessageSeverity[MessageSeverity["Success"] = 3] = "Success"; })(MessageSeverity = exports.MessageSeverity || (exports.MessageSeverity = {})); var UISeverity; (function (UISeverity) { UISeverity["Info"] = "info"; UISeverity["Warn"] = "warn"; UISeverity["Error"] = "error"; UISeverity["Success"] = "success"; })(UISeverity = exports.UISeverity || (exports.UISeverity = {})); var OperationMessage = /** @class */ (function () { function OperationMessage(severity, message) { this.message = message; this.severity = severity; } Object.defineProperty(OperationMessage.prototype, "iconClass", { get: function () { switch (this.severity) { case MessageSeverity.Info: return 'ion-information-circled positive'; case MessageSeverity.Warn: return 'ion-alert-circled energized'; case MessageSeverity.Error: return 'ion-minus-circled assertive'; case MessageSeverity.Success: return 'ion-checkmark-circled balanced'; } }, enumerable: true, configurable: true }); return OperationMessage; }()); exports.OperationMessage = OperationMessage; var ProgressManager = /** @class */ (function () { function ProgressManager(totalTasks, $scope) { this.totalTasks = totalTasks; this.finishedTasks = 0; this.subTaskDescription = null; this.subSubTaskDescription = null; this.subTaskTotal = 0; this.subTaskFinished = 0; this.subTaskInProgress = false; this.messages = []; this.errorState = false; //If we need to autoupdate some bindings on a scope //by triggering a digest cycle this.scope = $scope; } ProgressManager.prototype.clear = function () { this.finishedTasks = 0; this.subTaskDescription = null; this.subTaskTotal = 0; this.subTaskFinished = 0; this.subTaskInProgress = false; this.priorityMessage = undefined; this.messages = []; this.errorState = false; }; ProgressManager.prototype.getNotifier = function () { return new TaskProgressNotifier(this); }; ProgressManager.prototype.startTask = function (desc, totalParts) { if (this.errorState) { return null; } this.subTaskTotal = totalParts; this.subTaskFinished = 0; this.subTaskDescription = desc; this.subTaskInProgress = true; this.updateScope(); return new SubTaskProgressNotifier(this); }; ProgressManager.prototype.finishTask = function () { if (this.errorState) { return; } if (this.subTaskInProgress) { this.subTaskInProgress = false; this.subTaskTotal = 0; this.subSubTaskDescription = null; } if (this.finishedTasks < this.totalTasks) { this.finishedTasks += 1; } this.updateScope(); }; ProgressManager.prototype.addMessage = function (severity, message, priority) { if (priority === void 0) { priority = false; } if (priority) { this.priorityMessage = new OperationMessage(severity, message); } else { this.messages.push(new OperationMessage(severity, message)); } }; ProgressManager.prototype.fatalError = function (message) { this.subTaskInProgress = false; this.finishedTasks = this.totalTasks; this.errorState = true; this.addMessage(MessageSeverity.Error, message); this.updateScope(); }; ProgressManager.prototype.updateSubtask = function () { if (this.errorState) { return; } if (this.subTaskFinished < this.subTaskTotal) { this.subTaskFinished += 1; this.subTaskInProgress = true; } this.updateScope(); }; Object.defineProperty(ProgressManager.prototype, "hasErrors", { get: function () { for (var _i = 0, _a = this.messages; _i < _a.length; _i++) { var msg = _a[_i]; if (msg.severity === MessageSeverity.Error) { return true; } } return false; }, enumerable: true, configurable: true }); ProgressManager.prototype.updateScope = function () { if (this.scope) { this.scope.$applyAsync(); } }; return ProgressManager; }()); exports.ProgressManager = ProgressManager; //# sourceMappingURL=progress.js.map