@logo-software/timer
Version:
Timer helps developer to set a specific time for their web apps and doSomething after completed.
117 lines • 12.4 kB
JavaScript
/**
* @license
* Copyright LOGO YAZILIM SANAYİ VE TİCARET A.Ş. All Rights Reserved.
*
* Save to the extent permitted by law, you may not use, copy, modify,
* distribute or create derivative works of this material or any part
* of it without the prior written consent of LOGO YAZILIM SANAYİ VE TİCARET A.Ş. Limited.
* Any reproduction of this material must contain this notice.
*/
import { Injectable } from '@angular/core';
import { Subject } from 'rxjs';
import { TimePipe } from './pipe/time.pipe';
import * as i0 from "@angular/core";
/**
* Timer service lets developers to control timer variables on the go.
*/
export class TimerService {
constructor() {
/**
* Pause time in milliseconds if timer is paused.
*/
this.pausedTime = 0;
this.isEnded = new Subject();
}
/**
* Prepare the timer values and if autoStart option is true, starts the timer.
*/
prepareTimer() {
this.timerValue = this.timerCount;
this.readableTime = new TimePipe().transform(this.timerCount, this.language);
this.autoStart ? this.runTimer() : '';
}
/**
* Run timer function which will starts timer with setted values
*/
runTimer() {
clearInterval(this.timer);
this.timer = setInterval(() => {
if (this.countdown) {
this.timerCount = Math.floor(this.timerCount - 1000);
if (this.timerCount < 0) {
clearInterval(this.timer);
this.isEnded.next(true);
}
}
else {
this.timerCount = Math.floor(this.timerCount + 1000);
if (this.timerCount === this.endTime) {
clearInterval(this.timer);
this.isEnded.next(true);
}
}
this.pausedTime = 0;
this.readableTime = new TimePipe().transform(this.timerCount, this.language);
}, 1000);
}
/**
* Pause the timer.
*/
pauseTimer() {
if (this.pausedTime === 0) {
this.pausedTime = this.timerCount;
clearInterval(this.timer);
}
}
/**
* Resume the paused timer. If the timer isn't paused, resume function will not be worked.
*/
resumeTimer() {
setTimeout(() => {
if (this.pausedTime !== 0) {
this.timerCount = this.pausedTime;
this.runTimer();
}
else {
this.pauseTimer();
}
}, 1000);
}
/**
* Sets the timer end point and stops the timer.
*/
stopTimer() {
if (this.countdown) {
this.timerCount = 0;
}
else {
this.timerCount = this.endTime;
}
clearInterval(this.timer);
this.readableTime = new TimePipe().transform(this.timerCount, this.language);
this.isEnded.next(true);
}
/**
* Revert the timer to the start value
*/
resetTimer() {
clearInterval(this.timer);
this.timerCount = this.timerValue;
this.runTimer();
}
/**
* Sets the timer clock. Value must be in milliseconds.
* @param ms:number
*/
setTime(ms) {
this.timerCount = ms;
this.prepareTimer();
}
}
TimerService.ɵprov = i0.ɵɵdefineInjectable({ factory: function TimerService_Factory() { return new TimerService(); }, token: TimerService, providedIn: "root" });
TimerService.decorators = [
{ type: Injectable, args: [{
providedIn: 'root',
},] }
];
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGltZXIuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2xvZ28tc29mdHdhcmUvdGltZXIvc3JjL2xpYi90aW1lci5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7OztHQVFHO0FBQ0gsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBRS9CLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQzs7QUFHNUM7O0dBRUc7QUFJSCxNQUFNLE9BQU8sWUFBWTtJQUh6QjtRQXdCRTs7V0FFRztRQUNJLGVBQVUsR0FBVyxDQUFDLENBQUM7UUFVdkIsWUFBTyxHQUFHLElBQUksT0FBTyxFQUFXLENBQUM7S0EyRnpDO0lBeEZDOztPQUVHO0lBQ0ksWUFBWTtRQUNqQixJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUM7UUFDbEMsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLFFBQVEsRUFBRSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsVUFBVSxFQUFFLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUM3RSxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztJQUN4QyxDQUFDO0lBRUQ7O09BRUc7SUFDSSxRQUFRO1FBQ2IsYUFBYSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUMxQixJQUFJLENBQUMsS0FBSyxHQUFHLFdBQVcsQ0FBQyxHQUFHLEVBQUU7WUFDNUIsSUFBSSxJQUFJLENBQUMsU0FBUyxFQUFFO2dCQUNsQixJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUMsQ0FBQztnQkFDckQsSUFBSSxJQUFJLENBQUMsVUFBVSxHQUFHLENBQUMsRUFBRTtvQkFDdkIsYUFBYSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztvQkFDMUIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7aUJBQ3pCO2FBQ0Y7aUJBQU07Z0JBQ0wsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDLENBQUM7Z0JBQ3JELElBQUksSUFBSSxDQUFDLFVBQVUsS0FBSyxJQUFJLENBQUMsT0FBTyxFQUFFO29CQUNwQyxhQUFhLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO29CQUMxQixJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztpQkFDekI7YUFDRjtZQUNELElBQUksQ0FBQyxVQUFVLEdBQUcsQ0FBQyxDQUFDO1lBQ3BCLElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxRQUFRLEVBQUUsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLFVBQVUsRUFBRSxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDL0UsQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFDO0lBQ1gsQ0FBQztJQUVEOztPQUVHO0lBQ0ksVUFBVTtRQUNmLElBQUksSUFBSSxDQUFDLFVBQVUsS0FBSyxDQUFDLEVBQUU7WUFDekIsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDO1lBQ2xDLGFBQWEsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7U0FDM0I7SUFDSCxDQUFDO0lBRUQ7O09BRUc7SUFDSSxXQUFXO1FBQ2hCLFVBQVUsQ0FBQyxHQUFHLEVBQUU7WUFDZCxJQUFJLElBQUksQ0FBQyxVQUFVLEtBQUssQ0FBQyxFQUFFO2dCQUN6QixJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUM7Z0JBQ2xDLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQzthQUNqQjtpQkFBTTtnQkFDTCxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7YUFDbkI7UUFDSCxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUM7SUFDWCxDQUFDO0lBRUQ7O09BRUc7SUFDSSxTQUFTO1FBQ2QsSUFBSSxJQUFJLENBQUMsU0FBUyxFQUFFO1lBQ2xCLElBQUksQ0FBQyxVQUFVLEdBQUcsQ0FBQyxDQUFDO1NBQ3JCO2FBQU07WUFDTCxJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUM7U0FDaEM7UUFDRCxhQUFhLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQzFCLElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxRQUFRLEVBQUUsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLFVBQVUsRUFBRSxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDN0UsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDMUIsQ0FBQztJQUVEOztPQUVHO0lBQ0ksVUFBVTtRQUNmLGFBQWEsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDMUIsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDO1FBQ2xDLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztJQUNsQixDQUFDO0lBRUQ7OztPQUdHO0lBQ0ksT0FBTyxDQUFDLEVBQVU7UUFDdkIsSUFBSSxDQUFDLFVBQVUsR0FBRyxFQUFFLENBQUM7UUFDckIsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO0lBQ3RCLENBQUM7Ozs7WUEvSEYsVUFBVSxTQUFDO2dCQUNWLFVBQVUsRUFBRSxNQUFNO2FBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IExPR08gWUFaSUxJTSBTQU5BWcSwIFZFIFTEsENBUkVUIEEuxZ4uIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKlxuICogU2F2ZSB0byB0aGUgZXh0ZW50IHBlcm1pdHRlZCBieSBsYXcsIHlvdSBtYXkgbm90IHVzZSwgY29weSwgbW9kaWZ5LFxuICogZGlzdHJpYnV0ZSBvciBjcmVhdGUgZGVyaXZhdGl2ZSB3b3JrcyBvZiB0aGlzIG1hdGVyaWFsIG9yIGFueSBwYXJ0XG4gKiBvZiBpdCB3aXRob3V0IHRoZSBwcmlvciB3cml0dGVuIGNvbnNlbnQgb2YgTE9HTyBZQVpJTElNIFNBTkFZxLAgVkUgVMSwQ0FSRVQgQS7Fni4gTGltaXRlZC5cbiAqIEFueSByZXByb2R1Y3Rpb24gb2YgdGhpcyBtYXRlcmlhbCBtdXN0IGNvbnRhaW4gdGhpcyBub3RpY2UuXG4gKi9cbmltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFN1YmplY3QgfSBmcm9tICdyeGpzJztcblxuaW1wb3J0IHsgVGltZVBpcGUgfSBmcm9tICcuL3BpcGUvdGltZS5waXBlJztcbmltcG9ydCB7IExhbmcgfSBmcm9tICcuL2xhbmcnO1xuXG4vKipcbiAqIFRpbWVyIHNlcnZpY2UgbGV0cyBkZXZlbG9wZXJzIHRvIGNvbnRyb2wgdGltZXIgdmFyaWFibGVzIG9uIHRoZSBnby5cbiAqL1xuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCcsXG59KVxuZXhwb3J0IGNsYXNzIFRpbWVyU2VydmljZSB7XG4gIC8qKlxuICAgKiBUaGUgdmFyaWFibGUgdGhhdCB0aGUgY291bnRlciBzdGFydHMgb3IgZW5kcyB0byBjb3VudCBvciBjb3VudGRvd24uIE51bWJlciBiYXNlZCB2YXJpYWJsZSBtdXN0IGJlIGluIG1pbGxpc2Vjb25kcy5cbiAgICovXG4gIHB1YmxpYyB0aW1lckNvdW50OiBudW1iZXI7XG4gIC8qKlxuICAgKiBTZXQgdGltZXIgYXMgY291bnRlciBvciBjb3VudGRvd24gY2xvY2suXG4gICAqL1xuICBwdWJsaWMgY291bnRkb3duOiBib29sZWFuO1xuICAvKipcbiAgICogUmVmYWN0b3JlZCB2ZXJzaW9uIG9mIHRoZSB0aW1lckNvdW50IHZhcmlhYmxlLiBMaWJyYXJ5IHR1cm5zIG1pbGxpc2Vjb25kcyB0byByZWFkYWJsZSBmb3JtYXQgaW4gZGF5cywgaG91cnMsIG1pbnV0ZXMgYW5kIHNlY29uZHMuXG4gICAqL1xuICBwdWJsaWMgcmVhZGFibGVUaW1lOiBzdHJpbmc7XG4gIC8qKlxuICAgKiBJZiBjb3VudGRvd24gaXMgZmFsc2UsIGVuZCB0aW1lIHdpbGwgYmUgc2V0dGVkLlxuICAgKi9cbiAgcHVibGljIGVuZFRpbWU6IG51bWJlcjtcbiAgLyoqXG4gICAqIExhbmd1YWdlIGRldGFpbHMgZm9yIGxvY2FsaXphdGlvbi5cbiAgICovXG4gIHB1YmxpYyBsYW5ndWFnZTogTGFuZztcbiAgLyoqXG4gICAqIFBhdXNlIHRpbWUgaW4gbWlsbGlzZWNvbmRzIGlmIHRpbWVyIGlzIHBhdXNlZC5cbiAgICovXG4gIHB1YmxpYyBwYXVzZWRUaW1lOiBudW1iZXIgPSAwO1xuICAvKipcbiAgICogRmlyc3QgdmFsdWUgb2YgdGhlIHRpbWVyIGJlZm9yZSBoYXMgYmVlbiBzdGFydGVkLlxuICAgKi9cbiAgcHVibGljIHRpbWVyVmFsdWU6IG51bWJlcjtcbiAgLyoqXG4gICAqIEdsb2JhbCBhdXRvIHN0YXJ0IG9wdGlvbiB0aGF0IHdpbGwgY2hhbmdlIG9uIHRoZSBmbHkuXG4gICAqL1xuICBwdWJsaWMgYXV0b1N0YXJ0OiBib29sZWFuO1xuXG4gIHB1YmxpYyBpc0VuZGVkID0gbmV3IFN1YmplY3Q8Ym9vbGVhbj4oKTtcbiAgcHJpdmF0ZSB0aW1lcjtcblxuICAvKipcbiAgICogUHJlcGFyZSB0aGUgdGltZXIgdmFsdWVzIGFuZCBpZiBhdXRvU3RhcnQgb3B0aW9uIGlzIHRydWUsIHN0YXJ0cyB0aGUgdGltZXIuXG4gICAqL1xuICBwdWJsaWMgcHJlcGFyZVRpbWVyKCkge1xuICAgIHRoaXMudGltZXJWYWx1ZSA9IHRoaXMudGltZXJDb3VudDtcbiAgICB0aGlzLnJlYWRhYmxlVGltZSA9IG5ldyBUaW1lUGlwZSgpLnRyYW5zZm9ybSh0aGlzLnRpbWVyQ291bnQsIHRoaXMubGFuZ3VhZ2UpO1xuICAgIHRoaXMuYXV0b1N0YXJ0ID8gdGhpcy5ydW5UaW1lcigpIDogJyc7XG4gIH1cblxuICAvKipcbiAgICogUnVuIHRpbWVyIGZ1bmN0aW9uIHdoaWNoIHdpbGwgc3RhcnRzIHRpbWVyIHdpdGggc2V0dGVkIHZhbHVlc1xuICAgKi9cbiAgcHVibGljIHJ1blRpbWVyKCkge1xuICAgIGNsZWFySW50ZXJ2YWwodGhpcy50aW1lcik7XG4gICAgdGhpcy50aW1lciA9IHNldEludGVydmFsKCgpID0+IHtcbiAgICAgIGlmICh0aGlzLmNvdW50ZG93bikge1xuICAgICAgICB0aGlzLnRpbWVyQ291bnQgPSBNYXRoLmZsb29yKHRoaXMudGltZXJDb3VudCAtIDEwMDApO1xuICAgICAgICBpZiAodGhpcy50aW1lckNvdW50IDwgMCkge1xuICAgICAgICAgIGNsZWFySW50ZXJ2YWwodGhpcy50aW1lcik7XG4gICAgICAgICAgdGhpcy5pc0VuZGVkLm5leHQodHJ1ZSk7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMudGltZXJDb3VudCA9IE1hdGguZmxvb3IodGhpcy50aW1lckNvdW50ICsgMTAwMCk7XG4gICAgICAgIGlmICh0aGlzLnRpbWVyQ291bnQgPT09IHRoaXMuZW5kVGltZSkge1xuICAgICAgICAgIGNsZWFySW50ZXJ2YWwodGhpcy50aW1lcik7XG4gICAgICAgICAgdGhpcy5pc0VuZGVkLm5leHQodHJ1ZSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHRoaXMucGF1c2VkVGltZSA9IDA7XG4gICAgICB0aGlzLnJlYWRhYmxlVGltZSA9IG5ldyBUaW1lUGlwZSgpLnRyYW5zZm9ybSh0aGlzLnRpbWVyQ291bnQsIHRoaXMubGFuZ3VhZ2UpO1xuICAgIH0sIDEwMDApO1xuICB9XG5cbiAgLyoqXG4gICAqIFBhdXNlIHRoZSB0aW1lci5cbiAgICovXG4gIHB1YmxpYyBwYXVzZVRpbWVyKCkge1xuICAgIGlmICh0aGlzLnBhdXNlZFRpbWUgPT09IDApIHtcbiAgICAgIHRoaXMucGF1c2VkVGltZSA9IHRoaXMudGltZXJDb3VudDtcbiAgICAgIGNsZWFySW50ZXJ2YWwodGhpcy50aW1lcik7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFJlc3VtZSB0aGUgcGF1c2VkIHRpbWVyLiBJZiB0aGUgdGltZXIgaXNuJ3QgcGF1c2VkLCByZXN1bWUgZnVuY3Rpb24gd2lsbCBub3QgIGJlIHdvcmtlZC5cbiAgICovXG4gIHB1YmxpYyByZXN1bWVUaW1lcigpIHtcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIGlmICh0aGlzLnBhdXNlZFRpbWUgIT09IDApIHtcbiAgICAgICAgdGhpcy50aW1lckNvdW50ID0gdGhpcy5wYXVzZWRUaW1lO1xuICAgICAgICB0aGlzLnJ1blRpbWVyKCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLnBhdXNlVGltZXIoKTtcbiAgICAgIH1cbiAgICB9LCAxMDAwKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXRzIHRoZSB0aW1lciBlbmQgcG9pbnQgYW5kIHN0b3BzIHRoZSB0aW1lci5cbiAgICovXG4gIHB1YmxpYyBzdG9wVGltZXIoKSB7XG4gICAgaWYgKHRoaXMuY291bnRkb3duKSB7XG4gICAgICB0aGlzLnRpbWVyQ291bnQgPSAwO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnRpbWVyQ291bnQgPSB0aGlzLmVuZFRpbWU7XG4gICAgfVxuICAgIGNsZWFySW50ZXJ2YWwodGhpcy50aW1lcik7XG4gICAgdGhpcy5yZWFkYWJsZVRpbWUgPSBuZXcgVGltZVBpcGUoKS50cmFuc2Zvcm0odGhpcy50aW1lckNvdW50LCB0aGlzLmxhbmd1YWdlKTtcbiAgICB0aGlzLmlzRW5kZWQubmV4dCh0cnVlKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXZlcnQgdGhlIHRpbWVyIHRvIHRoZSBzdGFydCB2YWx1ZVxuICAgKi9cbiAgcHVibGljIHJlc2V0VGltZXIoKSB7XG4gICAgY2xlYXJJbnRlcnZhbCh0aGlzLnRpbWVyKTtcbiAgICB0aGlzLnRpbWVyQ291bnQgPSB0aGlzLnRpbWVyVmFsdWU7XG4gICAgdGhpcy5ydW5UaW1lcigpO1xuICB9XG5cbiAgLyoqXG4gICAqIFNldHMgdGhlIHRpbWVyIGNsb2NrLiBWYWx1ZSBtdXN0IGJlIGluIG1pbGxpc2Vjb25kcy5cbiAgICogQHBhcmFtIG1zOm51bWJlclxuICAgKi9cbiAgcHVibGljIHNldFRpbWUobXM6IG51bWJlcikge1xuICAgIHRoaXMudGltZXJDb3VudCA9IG1zO1xuICAgIHRoaXMucHJlcGFyZVRpbWVyKCk7XG4gIH1cbn1cbiJdfQ==