UNPKG

cfc-ds

Version:

Design System do Conselho Federal de Contabilidade baseado no govbr-ds

62 lines 7.52 kB
import { Injectable } from '@angular/core'; import { BehaviorSubject, interval } from 'rxjs'; import { map, takeWhile } from 'rxjs/operators'; import * as i0 from "@angular/core"; export class TimerService { countdown$ = new BehaviorSubject(null); subscription = null; /** * CONVERTE TEMPO DE DIFERENTES FORMATOS PARA SEGUNDOS * @param time String no formato 'dias:hh:mm:ss', 'hh:mm:ss', 'mm:ss' ou número em segundos. */ parseTimeToSeconds(time) { if (typeof time === 'number') { return time; } const parts = time.split(':').map(Number).reverse(); const [seconds = 0, minutes = 0, hours = 0, days = 0] = parts; return seconds + minutes * 60 + hours * 3600 + days * 86400; } /** * INICIA A CONTAGEM REGRESSIVA * @param time Tempo no formato 'dias:hh:mm:ss', 'hh:mm:ss', 'mm:ss' ou número em segundos. */ startCountdown(time) { const totalSeconds = this.parseTimeToSeconds(time); if (this.subscription) { this.subscription.unsubscribe(); } this.countdown$.next(totalSeconds); this.subscription = interval(1000) .pipe(map((elapsed) => totalSeconds - elapsed), takeWhile((timeLeft) => timeLeft >= 0)) .subscribe({ next: (timeLeft) => this.countdown$.next(timeLeft), complete: () => this.countdown$.next(0), }); } /** * RETORNA O STREAM DO TEMPO RESTANTE */ getCountdown() { return this.countdown$.asObservable(); } /** * INTERROMPE A CONTAGEM */ stopCountdown() { if (this.subscription) { this.subscription.unsubscribe(); this.subscription = null; } this.countdown$.next(null); } static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: TimerService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: TimerService, providedIn: 'root' }); } i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: TimerService, decorators: [{ type: Injectable, args: [{ providedIn: 'root', }] }] }); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGltZXIuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NmYy1kcy9zcmMvbGliL3NlcnZpY2VzL3RpbWVyLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQUUsZUFBZSxFQUFFLFFBQVEsRUFBZ0IsTUFBTSxNQUFNLENBQUM7QUFDL0QsT0FBTyxFQUFFLEdBQUcsRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQzs7QUFLaEQsTUFBTSxPQUFPLFlBQVk7SUFDZixVQUFVLEdBQUcsSUFBSSxlQUFlLENBQWdCLElBQUksQ0FBQyxDQUFDO0lBQ3RELFlBQVksR0FBd0IsSUFBSSxDQUFDO0lBRWpEOzs7T0FHRztJQUNLLGtCQUFrQixDQUFDLElBQXFCO1FBQzlDLElBQUksT0FBTyxJQUFJLEtBQUssUUFBUSxFQUFFLENBQUM7WUFDN0IsT0FBTyxJQUFJLENBQUM7UUFDZCxDQUFDO1FBRUQsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLENBQUMsT0FBTyxFQUFFLENBQUM7UUFDcEQsTUFBTSxDQUFDLE9BQU8sR0FBRyxDQUFDLEVBQUUsT0FBTyxHQUFHLENBQUMsRUFBRSxLQUFLLEdBQUcsQ0FBQyxFQUFFLElBQUksR0FBRyxDQUFDLENBQUMsR0FBRyxLQUFLLENBQUM7UUFFOUQsT0FBTyxPQUFPLEdBQUcsT0FBTyxHQUFHLEVBQUUsR0FBRyxLQUFLLEdBQUcsSUFBSSxHQUFHLElBQUksR0FBRyxLQUFLLENBQUM7SUFDOUQsQ0FBQztJQUVEOzs7T0FHRztJQUNILGNBQWMsQ0FBQyxJQUFxQjtRQUNsQyxNQUFNLFlBQVksR0FBRyxJQUFJLENBQUMsa0JBQWtCLENBQUMsSUFBSSxDQUFDLENBQUM7UUFFbkQsSUFBSSxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7WUFDdEIsSUFBSSxDQUFDLFlBQVksQ0FBQyxXQUFXLEVBQUUsQ0FBQztRQUNsQyxDQUFDO1FBRUQsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUM7UUFFbkMsSUFBSSxDQUFDLFlBQVksR0FBRyxRQUFRLENBQUMsSUFBSSxDQUFDO2FBQy9CLElBQUksQ0FDSCxHQUFHLENBQUMsQ0FBQyxPQUFPLEVBQUUsRUFBRSxDQUFDLFlBQVksR0FBRyxPQUFPLENBQUMsRUFDeEMsU0FBUyxDQUFDLENBQUMsUUFBUSxFQUFFLEVBQUUsQ0FBQyxRQUFRLElBQUksQ0FBQyxDQUFDLENBQ3ZDO2FBQ0EsU0FBUyxDQUFDO1lBQ1QsSUFBSSxFQUFFLENBQUMsUUFBUSxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUM7WUFDbEQsUUFBUSxFQUFFLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztTQUN4QyxDQUFDLENBQUM7SUFDUCxDQUFDO0lBRUQ7O09BRUc7SUFDSCxZQUFZO1FBQ1YsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDLFlBQVksRUFBRSxDQUFDO0lBQ3hDLENBQUM7SUFFRDs7T0FFRztJQUNILGFBQWE7UUFDWCxJQUFJLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztZQUN0QixJQUFJLENBQUMsWUFBWSxDQUFDLFdBQVcsRUFBRSxDQUFDO1lBQ2hDLElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDO1FBQzNCLENBQUM7UUFDRCxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUM3QixDQUFDO3dHQTNEVSxZQUFZOzRHQUFaLFlBQVksY0FGWCxNQUFNOzs0RkFFUCxZQUFZO2tCQUh4QixVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBpbnRlcnZhbCwgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IG1hcCwgdGFrZVdoaWxlIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xyXG5cclxuQEluamVjdGFibGUoe1xyXG4gIHByb3ZpZGVkSW46ICdyb290JyxcclxufSlcclxuZXhwb3J0IGNsYXNzIFRpbWVyU2VydmljZSB7XHJcbiAgcHJpdmF0ZSBjb3VudGRvd24kID0gbmV3IEJlaGF2aW9yU3ViamVjdDxudW1iZXIgfCBudWxsPihudWxsKTtcclxuICBwcml2YXRlIHN1YnNjcmlwdGlvbjogU3Vic2NyaXB0aW9uIHwgbnVsbCA9IG51bGw7XHJcblxyXG4gIC8qKlxyXG4gICAqIENPTlZFUlRFIFRFTVBPIERFIERJRkVSRU5URVMgRk9STUFUT1MgUEFSQSBTRUdVTkRPU1xyXG4gICAqIEBwYXJhbSB0aW1lIFN0cmluZyBubyBmb3JtYXRvICdkaWFzOmhoOm1tOnNzJywgJ2hoOm1tOnNzJywgJ21tOnNzJyBvdSBuw7ptZXJvIGVtIHNlZ3VuZG9zLlxyXG4gICAqL1xyXG4gIHByaXZhdGUgcGFyc2VUaW1lVG9TZWNvbmRzKHRpbWU6IHN0cmluZyB8IG51bWJlcik6IG51bWJlciB7XHJcbiAgICBpZiAodHlwZW9mIHRpbWUgPT09ICdudW1iZXInKSB7XHJcbiAgICAgIHJldHVybiB0aW1lO1xyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0IHBhcnRzID0gdGltZS5zcGxpdCgnOicpLm1hcChOdW1iZXIpLnJldmVyc2UoKTtcclxuICAgIGNvbnN0IFtzZWNvbmRzID0gMCwgbWludXRlcyA9IDAsIGhvdXJzID0gMCwgZGF5cyA9IDBdID0gcGFydHM7XHJcblxyXG4gICAgcmV0dXJuIHNlY29uZHMgKyBtaW51dGVzICogNjAgKyBob3VycyAqIDM2MDAgKyBkYXlzICogODY0MDA7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBJTklDSUEgQSBDT05UQUdFTSBSRUdSRVNTSVZBXHJcbiAgICogQHBhcmFtIHRpbWUgVGVtcG8gbm8gZm9ybWF0byAnZGlhczpoaDptbTpzcycsICdoaDptbTpzcycsICdtbTpzcycgb3UgbsO6bWVybyBlbSBzZWd1bmRvcy5cclxuICAgKi9cclxuICBzdGFydENvdW50ZG93bih0aW1lOiBzdHJpbmcgfCBudW1iZXIpOiB2b2lkIHtcclxuICAgIGNvbnN0IHRvdGFsU2Vjb25kcyA9IHRoaXMucGFyc2VUaW1lVG9TZWNvbmRzKHRpbWUpO1xyXG5cclxuICAgIGlmICh0aGlzLnN1YnNjcmlwdGlvbikge1xyXG4gICAgICB0aGlzLnN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuY291bnRkb3duJC5uZXh0KHRvdGFsU2Vjb25kcyk7XHJcblxyXG4gICAgdGhpcy5zdWJzY3JpcHRpb24gPSBpbnRlcnZhbCgxMDAwKVxyXG4gICAgICAucGlwZShcclxuICAgICAgICBtYXAoKGVsYXBzZWQpID0+IHRvdGFsU2Vjb25kcyAtIGVsYXBzZWQpLFxyXG4gICAgICAgIHRha2VXaGlsZSgodGltZUxlZnQpID0+IHRpbWVMZWZ0ID49IDApXHJcbiAgICAgIClcclxuICAgICAgLnN1YnNjcmliZSh7XHJcbiAgICAgICAgbmV4dDogKHRpbWVMZWZ0KSA9PiB0aGlzLmNvdW50ZG93biQubmV4dCh0aW1lTGVmdCksXHJcbiAgICAgICAgY29tcGxldGU6ICgpID0+IHRoaXMuY291bnRkb3duJC5uZXh0KDApLFxyXG4gICAgICB9KTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFJFVE9STkEgTyBTVFJFQU0gRE8gVEVNUE8gUkVTVEFOVEVcclxuICAgKi9cclxuICBnZXRDb3VudGRvd24oKSB7XHJcbiAgICByZXR1cm4gdGhpcy5jb3VudGRvd24kLmFzT2JzZXJ2YWJsZSgpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogSU5URVJST01QRSBBIENPTlRBR0VNXHJcbiAgICovXHJcbiAgc3RvcENvdW50ZG93bigpOiB2b2lkIHtcclxuICAgIGlmICh0aGlzLnN1YnNjcmlwdGlvbikge1xyXG4gICAgICB0aGlzLnN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xyXG4gICAgICB0aGlzLnN1YnNjcmlwdGlvbiA9IG51bGw7XHJcbiAgICB9XHJcbiAgICB0aGlzLmNvdW50ZG93biQubmV4dChudWxsKTtcclxuICB9XHJcbn1cclxuIl19