UNPKG

@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
/** * @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==