@iotile/iotile-common
Version:
Common utilities for IoTile Packages and Applications
262 lines • 9.8 kB
JavaScript
"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