UNPKG

time-events-manager

Version:

View and Manage Javascript's timeout and interval collections

82 lines 3.42 kB
"use strict"; 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