@schoolbelle/common
Version:
Demo library to showcase Angular packaging format
101 lines (94 loc) • 8.8 kB
JavaScript
(function (global, factory) {
typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('rxjs/Subject')) :
typeof define === 'function' && define.amd ? define('@schoolbelle/common/services/time-counter', ['exports', 'rxjs/Subject'], factory) :
(factory((global.schoolbelle = global.schoolbelle || {}, global.schoolbelle.common = global.schoolbelle.common || {}, global.schoolbelle.common.services = global.schoolbelle.common.services || {}, global.schoolbelle.common.services['time-counter'] = {}),global.rxjs.Subject));
}(this, (function (exports,Subject) { 'use strict';
/**
* @fileoverview added by tsickle
* @suppress {checkTypes} checked by tsc
*/
var TimeCounterService = (function () {
function TimeCounterService(timer_id) {
if (timer_id === void 0) {
timer_id = 'no_id';
}
this.willBeUnlockedAt = undefined;
this.updateEvent = new Subject.Subject();
this.id = timer_id;
var /** @type {?} */ willBeUnlockedAt = window.localStorage.getItem(timer_id + '.willBeUnlockedAt');
if (willBeUnlockedAt &&
parseInt(willBeUnlockedAt) > new Date().getTime() &&
parseInt(willBeUnlockedAt) < new Date().getTime() + 10 * 60 * 1000) {
this.willBeUnlockedAt = parseInt(willBeUnlockedAt);
this.startLockTimer((this.willBeUnlockedAt - new Date().getTime()) / 1000);
}
}
Object.defineProperty(TimeCounterService.prototype, "onUpdate", {
get: /**
* @return {?}
*/ function () {
return this.updateEvent.asObservable();
},
enumerable: true,
configurable: true
});
Object.defineProperty(TimeCounterService.prototype, "ticking", {
get: /**
* @return {?}
*/ function () {
return typeof this.timeLeftIntervalId === 'undefined' ? false : true;
},
enumerable: true,
configurable: true
});
/**
* @param {?} seconds
* @return {?}
*/
TimeCounterService.prototype.startLockTimer = /**
* @param {?} seconds
* @return {?}
*/
function (seconds) {
var _this = this;
if (typeof this.timeLeftIntervalId !== 'undefined')
return;
this.willBeUnlockedAt = new Date().getTime() + seconds * 1000;
window.localStorage.setItem(this.id + '.willBeUnlockedAt', '' + this.willBeUnlockedAt);
this.timeLeft = seconds;
this.updateEvent.next(this.timeLeft);
this.timeLeftIntervalId = setInterval(function () {
_this.timeLeft--;
_this.updateEvent.next(_this.timeLeft);
if (_this.timeLeft <= 0) {
_this.stopLockTimer();
}
}, 1000);
};
/**
* @return {?}
*/
TimeCounterService.prototype.stopLockTimer = /**
* @return {?}
*/
function () {
if (typeof this.timeLeftIntervalId === 'undefined')
return;
clearInterval(this.timeLeftIntervalId);
this.timeLeft = undefined;
this.timeLeftIntervalId = undefined;
};
return TimeCounterService;
}());
/**
* @fileoverview added by tsickle
* @suppress {checkTypes} checked by tsc
*/
/**
* @fileoverview added by tsickle
* @suppress {checkTypes} checked by tsc
*/
exports.TimeCounterService = TimeCounterService;
Object.defineProperty(exports, '__esModule', { value: true });
})));
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2Nob29sYmVsbGUtY29tbW9uLXNlcnZpY2VzLXRpbWUtY291bnRlci51bWQuanMubWFwIiwic291cmNlcyI6WyJuZzovL0BzY2hvb2xiZWxsZS9jb21tb24vc2VydmljZXMvdGltZS1jb3VudGVyL3RpbWUtY291bnRlci5zZXJ2aWNlLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFN1YmplY3QgfSBmcm9tICdyeGpzL1N1YmplY3QnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMvT2JzZXJ2YWJsZSc7XG5cbmV4cG9ydCBjbGFzcyBUaW1lQ291bnRlclNlcnZpY2Uge1xuICBwcml2YXRlIHdpbGxCZVVubG9ja2VkQXQ6IG51bWJlciA9IHVuZGVmaW5lZDtcbiAgcHVibGljIHRpbWVMZWZ0OiBudW1iZXI7XG4gIHByaXZhdGUgdGltZUxlZnRJbnRlcnZhbElkOiBhbnk7XG4gIHByaXZhdGUgdXBkYXRlRXZlbnQ6IFN1YmplY3Q8bnVtYmVyPiA9IG5ldyBTdWJqZWN0KCk7XG4gIHB1YmxpYyBnZXQgb25VcGRhdGUoKTogT2JzZXJ2YWJsZTxhbnk+IHtcbiAgICByZXR1cm4gdGhpcy51cGRhdGVFdmVudC5hc09ic2VydmFibGUoKTtcbiAgfVxuICBwdWJsaWMgZ2V0IHRpY2tpbmcoKSB7XG4gICAgcmV0dXJuIHR5cGVvZiB0aGlzLnRpbWVMZWZ0SW50ZXJ2YWxJZCA9PT0gJ3VuZGVmaW5lZCcgPyBmYWxzZSA6IHRydWU7XG4gIH1cblxuICBwcml2YXRlIGlkOmFueTtcbiAgY29uc3RydWN0b3IodGltZXJfaWQgPSAnbm9faWQnKSB7XG4gICAgdGhpcy5pZCA9IHRpbWVyX2lkO1xuICAgIGxldCB3aWxsQmVVbmxvY2tlZEF0ID0gd2luZG93LmxvY2FsU3RvcmFnZS5nZXRJdGVtKFxuICAgICAgdGltZXJfaWQgKyAnLndpbGxCZVVubG9ja2VkQXQnXG4gICAgKTtcbiAgICBpZiAoXG4gICAgICB3aWxsQmVVbmxvY2tlZEF0ICYmXG4gICAgICBwYXJzZUludCh3aWxsQmVVbmxvY2tlZEF0KSA+IG5ldyBEYXRlKCkuZ2V0VGltZSgpICYmXG4gICAgICBwYXJzZUludCh3aWxsQmVVbmxvY2tlZEF0KSA8IG5ldyBEYXRlKCkuZ2V0VGltZSgpICsgMTAgKiA2MCAqIDEwMDBcbiAgICApIHtcbiAgICAgIHRoaXMud2lsbEJlVW5sb2NrZWRBdCA9IHBhcnNlSW50KHdpbGxCZVVubG9ja2VkQXQpO1xuICAgICAgdGhpcy5zdGFydExvY2tUaW1lcihcbiAgICAgICAgKHRoaXMud2lsbEJlVW5sb2NrZWRBdCAtIG5ldyBEYXRlKCkuZ2V0VGltZSgpKSAvIDEwMDBcbiAgICAgICk7XG4gICAgfVxuICB9XG4gIHB1YmxpYyBzdGFydExvY2tUaW1lcihzZWNvbmRzOiBudW1iZXIpIHtcbiAgICBpZiAodHlwZW9mIHRoaXMudGltZUxlZnRJbnRlcnZhbElkICE9PSAndW5kZWZpbmVkJykgcmV0dXJuO1xuXG4gICAgdGhpcy53aWxsQmVVbmxvY2tlZEF0ID0gbmV3IERhdGUoKS5nZXRUaW1lKCkgKyBzZWNvbmRzICogMTAwMDtcbiAgICB3aW5kb3cubG9jYWxTdG9yYWdlLnNldEl0ZW0oXG4gICAgICB0aGlzLmlkICsgJy53aWxsQmVVbmxvY2tlZEF0JyxcbiAgICAgICcnICsgdGhpcy53aWxsQmVVbmxvY2tlZEF0XG4gICAgKTtcblxuICAgIHRoaXMudGltZUxlZnQgPSBzZWNvbmRzO1xuICAgIHRoaXMudXBkYXRlRXZlbnQubmV4dCh0aGlzLnRpbWVMZWZ0KTtcbiAgICB0aGlzLnRpbWVMZWZ0SW50ZXJ2YWxJZCA9IHNldEludGVydmFsKCgpID0+IHtcbiAgICAgIHRoaXMudGltZUxlZnQtLTtcbiAgICAgIHRoaXMudXBkYXRlRXZlbnQubmV4dCh0aGlzLnRpbWVMZWZ0KTtcbiAgICAgIGlmICh0aGlzLnRpbWVMZWZ0IDw9IDApIHtcbiAgICAgICAgdGhpcy5zdG9wTG9ja1RpbWVyKCk7XG4gICAgICB9XG4gICAgfSwgMTAwMCk7XG4gIH1cbiAgcHVibGljIHN0b3BMb2NrVGltZXIoKSB7XG4gICAgaWYgKHR5cGVvZiB0aGlzLnRpbWVMZWZ0SW50ZXJ2YWxJZCA9PT0gJ3VuZGVmaW5lZCcpIHJldHVybjtcbiAgICBjbGVhckludGVydmFsKHRoaXMudGltZUxlZnRJbnRlcnZhbElkKTtcbiAgICB0aGlzLnRpbWVMZWZ0ID0gdW5kZWZpbmVkO1xuICAgIHRoaXMudGltZUxlZnRJbnRlcnZhbElkID0gdW5kZWZpbmVkO1xuICB9XG59XG4iXSwibmFtZXMiOlsiU3ViamVjdCJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7OztBQUFBLFFBR0E7UUFhRSw0QkFBWSxRQUFrQjtZQUFsQix5QkFBQTtnQkFBQSxrQkFBa0I7O29DQVpLLFNBQVM7K0JBR0wsSUFBSUEsZUFBTyxFQUFFO1lBVWxELElBQUksQ0FBQyxFQUFFLEdBQUcsUUFBUSxDQUFDO1lBQ25CLHFCQUFJLGdCQUFnQixHQUFHLE1BQU0sQ0FBQyxZQUFZLENBQUMsT0FBTyxDQUNoRCxRQUFRLEdBQUcsbUJBQW1CLENBQy9CLENBQUM7WUFDRixJQUNFLGdCQUFnQjtnQkFDaEIsUUFBUSxDQUFDLGdCQUFnQixDQUFDLEdBQUcsSUFBSSxJQUFJLEVBQUUsQ0FBQyxPQUFPLEVBQUU7Z0JBQ2pELFFBQVEsQ0FBQyxnQkFBZ0IsQ0FBQyxHQUFHLElBQUksSUFBSSxFQUFFLENBQUMsT0FBTyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxJQUNoRSxFQUFFO2dCQUNBLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxRQUFRLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztnQkFDbkQsSUFBSSxDQUFDLGNBQWMsQ0FDakIsQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLEdBQUcsSUFBSSxJQUFJLEVBQUUsQ0FBQyxPQUFPLEVBQUUsSUFBSSxJQUFJLENBQ3RELENBQUM7YUFDSDtTQUNGOzhCQXZCVSx3Q0FBUTs7OztnQkFDakIsT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDLFlBQVksRUFBRSxDQUFDOzs7Ozs4QkFFOUIsdUNBQU87Ozs7Z0JBQ2hCLE9BQU8sT0FBTyxJQUFJLENBQUMsa0JBQWtCLEtBQUssV0FBVyxHQUFHLEtBQUssR0FBRyxJQUFJLENBQUM7Ozs7Ozs7OztRQW9CaEUsMkNBQWM7Ozs7c0JBQUMsT0FBZTs7Z0JBQ25DLElBQUksT0FBTyxJQUFJLENBQUMsa0JBQWtCLEtBQUssV0FBVztvQkFBRSxPQUFPO2dCQUUzRCxJQUFJLENBQUMsZ0JBQWdCLEdBQUcsSUFBSSxJQUFJLEVBQUUsQ0FBQyxPQUFPLEVBQUUsR0FBRyxPQUFPLEdBQUcsSUFBSSxDQUFDO2dCQUM5RCxNQUFNLENBQUMsWUFBWSxDQUFDLE9BQU8sQ0FDekIsSUFBSSxDQUFDLEVBQUUsR0FBRyxtQkFBbUIsRUFDN0IsRUFBRSxHQUFHLElBQUksQ0FBQyxnQkFBZ0IsQ0FDM0IsQ0FBQztnQkFFRixJQUFJLENBQUMsUUFBUSxHQUFHLE9BQU8sQ0FBQztnQkFDeEIsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO2dCQUNyQyxJQUFJLENBQUMsa0JBQWtCLEdBQUcsV0FBVyxDQUFDO29CQUNwQyxLQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7b0JBQ2hCLEtBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLEtBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztvQkFDckMsSUFBSSxLQUFJLENBQUMsUUFBUSxJQUFJLENBQUMsRUFBRTt3QkFDdEIsS0FBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO3FCQUN0QjtpQkFDRixFQUFFLElBQUksQ0FBQyxDQUFDOzs7OztRQUVKLDBDQUFhOzs7O2dCQUNsQixJQUFJLE9BQU8sSUFBSSxDQUFDLGtCQUFrQixLQUFLLFdBQVc7b0JBQUUsT0FBTztnQkFDM0QsYUFBYSxDQUFDLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO2dCQUN2QyxJQUFJLENBQUMsUUFBUSxHQUFHLFNBQVMsQ0FBQztnQkFDMUIsSUFBSSxDQUFDLGtCQUFrQixHQUFHLFNBQVMsQ0FBQzs7aUNBdkR4QztRQXlEQzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OzsifQ==