truly-ui
Version:
Web Components for Desktop Applications.
88 lines • 8.36 kB
JavaScript
import { Injectable } from '@angular/core';
import { Subject } from 'rxjs';
import * as i0 from "@angular/core";
export class StopwatchService {
constructor() {
this.hour = 0;
this.minute = 0;
this.second = 0;
this.LIMIT_HOUR = 24;
this.LIMIT_MINUTE = 60;
this.LIMIT_SECOND = 60;
this.isPause = true;
this.refreshHour = new Subject();
}
isLimitHour() {
return this.hour === this.LIMIT_HOUR;
}
isLimitMinute() {
return this.minute === this.LIMIT_MINUTE;
}
isLimitSecond() {
return this.second === this.LIMIT_SECOND;
}
resetHour() {
this.hour = 0;
}
resetMinute() {
this.minute = 0;
}
resetSecond() {
this.second = 0;
}
incrementHour() {
this.resetMinute();
this.hour++;
}
incrementMinute() {
this.resetSecond();
this.minute++;
}
incrementSecond() {
this.second++;
}
start() {
this.isPause = false;
clearInterval(this.interval);
this.interval = setInterval(() => {
if (this.isPause) {
return;
}
this.incrementSecond();
if (this.isLimitSecond()) {
this.incrementMinute();
}
if (this.isLimitMinute()) {
this.incrementHour();
}
if (this.isLimitHour()) {
this.resetHour();
}
this.refreshHour.next(this.getHour());
}, 1000);
}
stop() {
this.isPause = true;
this.refreshHour.next(this.getHour());
}
getHour() {
return this.formatTime(this.hour) + ':' +
this.formatTime(this.minute) + ':' +
this.formatTime(this.second);
}
formatTime(digit) {
return digit <= 9 ? '0' + digit : digit;
}
reset() {
this.hour = 0;
this.minute = 0;
this.second = 0;
this.refreshHour.next(this.getHour());
}
}
/** @nocollapse */ StopwatchService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: StopwatchService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
/** @nocollapse */ StopwatchService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: StopwatchService });
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: StopwatchService, decorators: [{
type: Injectable
}], ctorParameters: function () { return []; } });
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RvcHdhdGNoLXNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90cnVseS11aS9zcmMvY29tcG9uZW50cy9zdG9wd2F0Y2gvc2VydmljZXMvc3RvcHdhdGNoLXNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFlLFVBQVUsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUN2RCxPQUFPLEVBQUMsT0FBTyxFQUFDLE1BQU0sTUFBTSxDQUFDOztBQUc3QixNQUFNLE9BQU8sZ0JBQWdCO0lBb0IzQjtRQWxCTyxTQUFJLEdBQUcsQ0FBQyxDQUFDO1FBRVQsV0FBTSxHQUFHLENBQUMsQ0FBQztRQUVYLFdBQU0sR0FBRyxDQUFDLENBQUM7UUFFWCxlQUFVLEdBQUcsRUFBRSxDQUFDO1FBRWhCLGlCQUFZLEdBQUcsRUFBRSxDQUFDO1FBRWxCLGlCQUFZLEdBQUcsRUFBRSxDQUFDO1FBRWxCLFlBQU8sR0FBRyxJQUFJLENBQUM7UUFJZixnQkFBVyxHQUFHLElBQUksT0FBTyxFQUFFLENBQUM7SUFFcEIsQ0FBQztJQUVoQixXQUFXO1FBQ1QsT0FBTyxJQUFJLENBQUMsSUFBSSxLQUFLLElBQUksQ0FBQyxVQUFVLENBQUM7SUFDdkMsQ0FBQztJQUVELGFBQWE7UUFDWCxPQUFPLElBQUksQ0FBQyxNQUFNLEtBQUssSUFBSSxDQUFDLFlBQVksQ0FBQztJQUMzQyxDQUFDO0lBRUQsYUFBYTtRQUNYLE9BQU8sSUFBSSxDQUFDLE1BQU0sS0FBSyxJQUFJLENBQUMsWUFBWSxDQUFDO0lBQzNDLENBQUM7SUFFRCxTQUFTO1FBQ1AsSUFBSSxDQUFDLElBQUksR0FBRyxDQUFDLENBQUM7SUFDaEIsQ0FBQztJQUVELFdBQVc7UUFDVCxJQUFJLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQztJQUNsQixDQUFDO0lBRUQsV0FBVztRQUNULElBQUksQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDO0lBQ2xCLENBQUM7SUFFRCxhQUFhO1FBQ1gsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO1FBQ25CLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUNkLENBQUM7SUFFRCxlQUFlO1FBQ2IsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO1FBQ25CLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztJQUNoQixDQUFDO0lBRUQsZUFBZTtRQUNiLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztJQUNoQixDQUFDO0lBRUQsS0FBSztRQUNILElBQUksQ0FBQyxPQUFPLEdBQUcsS0FBSyxDQUFDO1FBQ3JCLGFBQWEsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDN0IsSUFBSSxDQUFDLFFBQVEsR0FBRyxXQUFXLENBQUMsR0FBRyxFQUFFO1lBQy9CLElBQUksSUFBSSxDQUFDLE9BQU8sRUFBRTtnQkFDaEIsT0FBTzthQUNSO1lBQ0QsSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDO1lBQ3ZCLElBQUksSUFBSSxDQUFDLGFBQWEsRUFBRSxFQUFFO2dCQUN4QixJQUFJLENBQUMsZUFBZSxFQUFFLENBQUM7YUFDeEI7WUFDRCxJQUFJLElBQUksQ0FBQyxhQUFhLEVBQUUsRUFBRTtnQkFDeEIsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO2FBQ3RCO1lBQ0QsSUFBSSxJQUFJLENBQUMsV0FBVyxFQUFFLEVBQUU7Z0JBQ3RCLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQzthQUNsQjtZQUNELElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDO1FBQ3hDLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQztJQUNYLENBQUM7SUFFRCxJQUFJO1FBQ0YsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUM7UUFDcEIsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUM7SUFDeEMsQ0FBQztJQUVELE9BQU87UUFDTCxPQUFPLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLEdBQUc7WUFDckMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsR0FBRztZQUNsQyxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUNqQyxDQUFDO0lBRUQsVUFBVSxDQUFDLEtBQUs7UUFDZCxPQUFPLEtBQUssSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQztJQUMxQyxDQUFDO0lBRUQsS0FBSztRQUNILElBQUksQ0FBQyxJQUFJLEdBQUcsQ0FBQyxDQUFDO1FBQ2QsSUFBSSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUM7UUFDaEIsSUFBSSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUM7UUFDaEIsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUM7SUFDeEMsQ0FBQzs7aUlBckdVLGdCQUFnQjtxSUFBaEIsZ0JBQWdCOzRGQUFoQixnQkFBZ0I7a0JBRDVCLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0V2ZW50RW1pdHRlciwgSW5qZWN0YWJsZX0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1N1YmplY3R9IGZyb20gJ3J4anMnO1xuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgU3RvcHdhdGNoU2VydmljZSB7XG5cbiAgcHVibGljIGhvdXIgPSAwO1xuXG4gIHB1YmxpYyBtaW51dGUgPSAwO1xuXG4gIHB1YmxpYyBzZWNvbmQgPSAwO1xuXG4gIHB1YmxpYyBMSU1JVF9IT1VSID0gMjQ7XG5cbiAgcHVibGljIExJTUlUX01JTlVURSA9IDYwO1xuXG4gIHB1YmxpYyBMSU1JVF9TRUNPTkQgPSA2MDtcblxuICBwdWJsaWMgaXNQYXVzZSA9IHRydWU7XG5cbiAgcHVibGljIGludGVydmFsO1xuXG4gIHB1YmxpYyByZWZyZXNoSG91ciA9IG5ldyBTdWJqZWN0KCk7XG5cbiAgY29uc3RydWN0b3IoKSB7fVxuXG4gIGlzTGltaXRIb3VyKCkge1xuICAgIHJldHVybiB0aGlzLmhvdXIgPT09IHRoaXMuTElNSVRfSE9VUjtcbiAgfVxuXG4gIGlzTGltaXRNaW51dGUoKSB7XG4gICAgcmV0dXJuIHRoaXMubWludXRlID09PSB0aGlzLkxJTUlUX01JTlVURTtcbiAgfVxuXG4gIGlzTGltaXRTZWNvbmQoKSB7XG4gICAgcmV0dXJuIHRoaXMuc2Vjb25kID09PSB0aGlzLkxJTUlUX1NFQ09ORDtcbiAgfVxuXG4gIHJlc2V0SG91cigpIHtcbiAgICB0aGlzLmhvdXIgPSAwO1xuICB9XG5cbiAgcmVzZXRNaW51dGUoKSB7XG4gICAgdGhpcy5taW51dGUgPSAwO1xuICB9XG5cbiAgcmVzZXRTZWNvbmQoKSB7XG4gICAgdGhpcy5zZWNvbmQgPSAwO1xuICB9XG5cbiAgaW5jcmVtZW50SG91cigpIHtcbiAgICB0aGlzLnJlc2V0TWludXRlKCk7XG4gICAgdGhpcy5ob3VyKys7XG4gIH1cblxuICBpbmNyZW1lbnRNaW51dGUoKSB7XG4gICAgdGhpcy5yZXNldFNlY29uZCgpO1xuICAgIHRoaXMubWludXRlKys7XG4gIH1cblxuICBpbmNyZW1lbnRTZWNvbmQoKSB7XG4gICAgdGhpcy5zZWNvbmQrKztcbiAgfVxuXG4gIHN0YXJ0KCkge1xuICAgIHRoaXMuaXNQYXVzZSA9IGZhbHNlO1xuICAgIGNsZWFySW50ZXJ2YWwodGhpcy5pbnRlcnZhbCk7XG4gICAgdGhpcy5pbnRlcnZhbCA9IHNldEludGVydmFsKCgpID0+IHtcbiAgICAgIGlmICh0aGlzLmlzUGF1c2UpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgdGhpcy5pbmNyZW1lbnRTZWNvbmQoKTtcbiAgICAgIGlmICh0aGlzLmlzTGltaXRTZWNvbmQoKSkge1xuICAgICAgICB0aGlzLmluY3JlbWVudE1pbnV0ZSgpO1xuICAgICAgfVxuICAgICAgaWYgKHRoaXMuaXNMaW1pdE1pbnV0ZSgpKSB7XG4gICAgICAgIHRoaXMuaW5jcmVtZW50SG91cigpO1xuICAgICAgfVxuICAgICAgaWYgKHRoaXMuaXNMaW1pdEhvdXIoKSkge1xuICAgICAgICB0aGlzLnJlc2V0SG91cigpO1xuICAgICAgfVxuICAgICAgdGhpcy5yZWZyZXNoSG91ci5uZXh0KHRoaXMuZ2V0SG91cigpKTtcbiAgICB9LCAxMDAwKTtcbiAgfVxuXG4gIHN0b3AoKSB7XG4gICAgdGhpcy5pc1BhdXNlID0gdHJ1ZTtcbiAgICB0aGlzLnJlZnJlc2hIb3VyLm5leHQodGhpcy5nZXRIb3VyKCkpO1xuICB9XG5cbiAgZ2V0SG91cigpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLmZvcm1hdFRpbWUodGhpcy5ob3VyKSArICc6JyArXG4gICAgICB0aGlzLmZvcm1hdFRpbWUodGhpcy5taW51dGUpICsgJzonICtcbiAgICAgIHRoaXMuZm9ybWF0VGltZSh0aGlzLnNlY29uZCk7XG4gIH1cblxuICBmb3JtYXRUaW1lKGRpZ2l0KSB7XG4gICAgcmV0dXJuIGRpZ2l0IDw9IDkgPyAnMCcgKyBkaWdpdCA6IGRpZ2l0O1xuICB9XG5cbiAgcmVzZXQoKSB7XG4gICAgdGhpcy5ob3VyID0gMDtcbiAgICB0aGlzLm1pbnV0ZSA9IDA7XG4gICAgdGhpcy5zZWNvbmQgPSAwO1xuICAgIHRoaXMucmVmcmVzaEhvdXIubmV4dCh0aGlzLmdldEhvdXIoKSk7XG4gIH1cblxufVxuIl19