time-events-manager
Version:
View and Manage Javascript's timeout and interval collections
82 lines • 3.42 kB
JavaScript
;
var override_1 = require('../overrides/override');
var timeout_status_model_1 = require('./timeout-status.model');
var timeout_model_1 = require('./timeout.model');
var TimeoutCollection = (function () {
function TimeoutCollection() {
this._timeoutCollection = [];
}
TimeoutCollection.prototype.add = function (handler, timeout) {
var args = [];
for (var _i = 2; _i < arguments.length; _i++) {
args[_i - 2] = arguments[_i];
}
var newTimeout = new timeout_model_1.Timeout(handler, timeout, args);
var id = override_1.originalSetTimeout.apply(window, [this._getWrappedHandler(newTimeout.uuid, handler), timeout, args]);
newTimeout.id = id;
this._timeoutCollection.push(newTimeout);
return id;
};
TimeoutCollection.prototype.remove = function (id) {
var timeoutIndex = this._getTimeoutIndexById(id);
if (timeoutIndex !== -1) {
this._timeoutCollection.splice(timeoutIndex, 1);
}
override_1.originalClearTimeout.apply(window, [id]);
};
TimeoutCollection.prototype.get = function (index) {
return this._timeoutCollection[index];
};
TimeoutCollection.prototype.getScheduled = function () {
return this._timeoutCollection.filter(function (value) {
return value.status === timeout_status_model_1.TimeoutStatus.Scheduled;
});
};
TimeoutCollection.prototype.getCompleted = function () {
return this._timeoutCollection.filter(function (value) {
return value.status === timeout_status_model_1.TimeoutStatus.Completed;
});
};
TimeoutCollection.prototype.getAll = function () {
return this._timeoutCollection;
};
TimeoutCollection.prototype.getById = function (id) {
return this._timeoutCollection[this._getTimeoutIndexById(id)];
};
TimeoutCollection.prototype.removeAll = function () {
this._timeoutCollection.forEach(function (timeout) {
override_1.originalClearTimeout.apply(window, [timeout.id]);
});
this._timeoutCollection = [];
};
TimeoutCollection.prototype._getWrappedHandler = function (timeoutUuid, handler) {
var _this = this;
return (function () {
var args = [];
for (var _i = 0; _i < arguments.length; _i++) {
args[_i - 0] = arguments[_i];
}
_this._timeoutCollection[_this._getTimeoutIndexByUuid(timeoutUuid)].status = timeout_status_model_1.TimeoutStatus.Completed;
return handler.apply(window, args);
});
};
TimeoutCollection.prototype._getTimeoutIndexById = function (timeoutId) {
for (var i = 0; i < this._timeoutCollection.length; i++) {
if (this._timeoutCollection[i].id === timeoutId) {
return i;
}
}
return -1;
};
TimeoutCollection.prototype._getTimeoutIndexByUuid = function (uuid) {
for (var i = 0; i < this._timeoutCollection.length; i++) {
if (this._timeoutCollection[i].uuid === uuid) {
return i;
}
}
return -1;
};
return TimeoutCollection;
}());
exports.TimeoutCollection = TimeoutCollection;
//# sourceMappingURL=timeout-collection.model.js.map