truly-ui
Version:
Web Components for Desktop Applications.
82 lines • 12.3 kB
JavaScript
import { EventEmitter, Injectable } from '@angular/core';
import * as i0 from "@angular/core";
export class WorkScaleService {
constructor() {
this.currentDate = new Date();
this.workScaleInMileseconds = [];
this.updateScale = new EventEmitter();
}
reload(workScale) {
this.setWorkScale(workScale);
this.createWorkScaleMileseconds();
this.generateTimes();
}
exitsWorkScale(workScale) {
return workScale && (workScale.hasOwnProperty('interval') ||
workScale.length > 0);
}
setWorkScale(workScale) {
if (!this.exitsWorkScale(workScale)) {
return this.workScale = [];
}
if (workScale.hasOwnProperty('interval')) {
return this.workScale = new Array(1).fill(workScale);
}
if (workScale.length > 0) {
this.workScale = workScale;
}
}
createWorkScaleMileseconds() {
this.workScaleInMileseconds = [];
if (this.workScale.length > 0) {
this.workScale.forEach((value, index, array) => {
if (array.length > 0) {
this.workScaleInMileseconds.push({
start: this.transformHourToMileseconds(value.start),
end: this.transformHourToMileseconds(value.end),
interval: value.interval
});
}
});
}
}
transformHourToMileseconds(fullHour, currentDate = this.currentDate) {
const hourSplited = fullHour.split(':');
const hours = Number(hourSplited[0]);
const minutes = Number(hourSplited[1]);
const year = currentDate.getFullYear();
const month = currentDate.getMonth();
const date = currentDate.getDate();
return new Date(year, month, date, hours, minutes).getTime();
}
transformMilesecondsToHour(fullHour) {
const fullHourMS = new Date(fullHour);
const hours = String(fullHourMS.getHours()).padStart(2, '0');
const minutes = String(fullHourMS.getMinutes()).padStart(2, '0');
return `${hours}:${minutes}`;
}
generateTimes() {
const MIN_TO_MILLESECOND = 60000;
this.timesCollection = new Array(this.workScaleInMileseconds.length).fill([]);
if (this.workScaleInMileseconds.length > 0) {
this.workScaleInMileseconds.forEach((value, index, array) => {
let currentHour_ms = value.start;
let nextHourBreak_ms = value.start;
while (currentHour_ms < value.end) {
if (currentHour_ms === nextHourBreak_ms) {
this.timesCollection[index] = [...this.timesCollection[index], new Date(nextHourBreak_ms)];
nextHourBreak_ms = nextHourBreak_ms + (value.interval * MIN_TO_MILLESECOND);
}
currentHour_ms++;
}
});
}
this.updateScale.emit(this.timesCollection);
}
}
/** @nocollapse */ WorkScaleService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: WorkScaleService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
/** @nocollapse */ WorkScaleService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: WorkScaleService });
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: WorkScaleService, decorators: [{
type: Injectable
}], ctorParameters: function () { return []; } });
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid29yay1zY2FsZS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdHJ1bHktdWkvc3JjL2NvbXBvbmVudHMvc2NoZWR1bGUvc2VydmljZXMvd29yay1zY2FsZS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDOztBQUl6RCxNQUFNLE9BQU8sZ0JBQWdCO0lBWTNCO1FBUk8sZ0JBQVcsR0FBRyxJQUFJLElBQUksRUFBRSxDQUFDO1FBSXpCLDJCQUFzQixHQUFHLEVBQUUsQ0FBQztRQUU1QixnQkFBVyxHQUFHLElBQUksWUFBWSxFQUFPLENBQUM7SUFFN0IsQ0FBQztJQUVqQixNQUFNLENBQUUsU0FBMEM7UUFDaEQsSUFBSSxDQUFDLFlBQVksQ0FBRSxTQUFTLENBQUUsQ0FBQztRQUMvQixJQUFJLENBQUMsMEJBQTBCLEVBQUUsQ0FBQztRQUNsQyxJQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7SUFDdkIsQ0FBQztJQUVELGNBQWMsQ0FBRyxTQUFTO1FBQ3hCLE9BQU8sU0FBUyxJQUFJLENBQ2hCLFNBQTRCLENBQUMsY0FBYyxDQUFDLFVBQVUsQ0FBQztZQUN2RCxTQUFtQyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQ2pELENBQUM7SUFDSixDQUFDO0lBRU8sWUFBWSxDQUFFLFNBQTBDO1FBRTlELElBQUssQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFFLFNBQVMsQ0FBRSxFQUFHO1lBQ3hDLE9BQU8sSUFBSSxDQUFDLFNBQVMsR0FBRyxFQUFFLENBQUM7U0FDM0I7UUFFRCxJQUFPLFNBQTRCLENBQUMsY0FBYyxDQUFDLFVBQVUsQ0FBQyxFQUFJO1lBQ2hFLE9BQU8sSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLEtBQUssQ0FBZ0IsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFFLFNBQTBCLENBQUMsQ0FBQztT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STt3QkFDMUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLEdBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQyxLQUFLLENBQUMsRUFBRSxJQUFJLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFFLENBQUU7d0JBQzdGLGdCQUFnQixHQUFJLGdCQUFnQixHQUFHLENBQUMsS0FBSyxDQUFDLFFBQVEsR0FBRyxrQkFBa0IsQ0FBQyxDQUFDO3FCQUM5RTtvQkFDRCxjQUFjLEVBQUUsQ0FBQztpQkFDbEI7WUFDSCxDQUFDLENBQUMsQ0FBQztTQUNKO1FBRUQsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUUsSUFBSSxDQUFDLGVBQWUsQ0FBRSxDQUFDO0lBQ2hELENBQUM7O2lJQXhHVSxnQkFBZ0I7cUlBQWhCLGdCQUFnQjs0RkFBaEIsZ0JBQWdCO2tCQUQ1QixVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRXZlbnRFbWl0dGVyLCBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBXb3JrU2NhbGVUeXBlIH0gZnJvbSAnLi4vdHlwZXMvd29yay1zY2FsZS50eXBlJztcblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIFdvcmtTY2FsZVNlcnZpY2Uge1xuXG4gIHB1YmxpYyB3b3JrU2NhbGU6IFdvcmtTY2FsZVR5cGVbXTtcblxuICBwdWJsaWMgY3VycmVudERhdGUgPSBuZXcgRGF0ZSgpO1xuXG4gIHB1YmxpYyB0aW1lc0NvbGxlY3Rpb246IEFycmF5PEFycmF5PERhdGU+PjtcblxuICBwdWJsaWMgd29ya1NjYWxlSW5NaWxlc2Vjb25kcyA9IFtdO1xuXG4gIHB1YmxpYyB1cGRhdGVTY2FsZSA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuXG4gIGNvbnN0cnVjdG9yKCApIHt9XG5cbiAgcmVsb2FkKCB3b3JrU2NhbGU6IFdvcmtTY2FsZVR5cGUgfCBXb3JrU2NhbGVUeXBlW10gKSB7XG4gICAgdGhpcy5zZXRXb3JrU2NhbGUoIHdvcmtTY2FsZSApO1xuICAgIHRoaXMuY3JlYXRlV29ya1NjYWxlTWlsZXNlY29uZHMoKTtcbiAgICB0aGlzLmdlbmVyYXRlVGltZXMoKTtcbiAgfVxuXG4gIGV4aXRzV29ya1NjYWxlICggd29ya1NjYWxlICkge1xuICAgIHJldHVybiB3b3JrU2NhbGUgJiYgKFxuICAgICAgKCB3b3JrU2NhbGUgYXMgV29ya1NjYWxlVHlwZSApLmhhc093blByb3BlcnR5KCdpbnRlcnZhbCcpIHx8XG4gICAgICAoIHdvcmtTY2FsZSBhcyBBcnJheTxXb3JrU2NhbGVUeXBlPiApLmxlbmd0aCA+IDBcbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSBzZXRXb3JrU2NhbGUoIHdvcmtTY2FsZTogV29ya1NjYWxlVHlwZSB8IFdvcmtTY2FsZVR5cGVbXSApIHtcblxuICAgIGlmICggIXRoaXMuZXhpdHNXb3JrU2NhbGUoIHdvcmtTY2FsZSApICkge1xuICAgICByZXR1cm4gdGhpcy53b3JrU2NhbGUgPSBbXTtcbiAgICB9XG5cbiAgICBpZiAoICggd29ya1NjYWxlIGFzIFdvcmtTY2FsZVR5cGUgKS5oYXNPd25Qcm9wZXJ0eSgnaW50ZXJ2YWwnKSAgKSB7XG4gICAgICByZXR1cm4gdGhpcy53b3JrU2NhbGUgPSBuZXcgQXJyYXk8V29ya1NjYWxlVHlwZT4oMSkuZmlsbCggd29ya1NjYWxlIGFzIFdvcmtTY2FsZVR5cGUpO1xuICAgIH1cblxuICAgIGlmICggKCB3b3JrU2NhbGUgYXMgQXJyYXk8V29ya1NjYWxlVHlwZT4gKS5sZW5ndGggPiAwICkge1xuICAgICAgdGhpcy53b3JrU2NhbGUgPSB3b3JrU2NhbGUgYXMgV29ya1NjYWxlVHlwZVtdO1xuICAgIH1cblxuICB9XG5cbiAgcHJpdmF0ZSBjcmVhdGVXb3JrU2NhbGVNaWxlc2Vjb25kcygpIHtcblxuICAgIHRoaXMud29ya1NjYWxlSW5NaWxlc2Vjb25kcyA9IFtdO1xuXG4gICAgaWYgKCAodGhpcy53b3JrU2NhbGUgYXMgQXJyYXk8V29ya1NjYWxlVHlwZT4pLmxlbmd0aCA+IDAgKSB7XG4gICAgICAodGhpcy53b3JrU2NhbGUgYXMgQXJyYXk8V29ya1NjYWxlVHlwZT4pLmZvckVhY2goKCB2YWx1ZTogV29ya1NjYWxlVHlwZSwgaW5kZXgsIGFycmF5KSA9PiB7XG4gICAgICAgIGlmICggYXJyYXkubGVuZ3RoID4gMCApIHtcbiAgICAgICAgICB0aGlzLndvcmtTY2FsZUluTWlsZXNlY29uZHMucHVzaCh7XG4gICAgICAgICAgICBzdGFydDogdGhpcy50cmFuc2Zvcm1Ib3VyVG9NaWxlc2Vjb25kcyggdmFsdWUuc3RhcnQgKSxcbiAgICAgICAgICAgIGVuZDogdGhpcy50cmFuc2Zvcm1Ib3VyVG9NaWxlc2Vjb25kcyggdmFsdWUuZW5kICksXG4gICAgICAgICAgICBpbnRlcnZhbDogdmFsdWUuaW50ZXJ2YWxcbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfVxuXG4gIH1cblxuXG4gIHRyYW5zZm9ybUhvdXJUb01pbGVzZWNvbmRzKCBmdWxsSG91cjogc3RyaW5nLCBjdXJyZW50RGF0ZSA9IHRoaXMuY3VycmVudERhdGUgKSB7XG4gICAgY29uc3QgaG91clNwbGl0ZWQgPSBmdWxsSG91ci5zcGxpdCgnOicpO1xuXG4gICAgY29uc3QgaG91cnMgPSBOdW1iZXIoaG91clNwbGl0ZWRbMF0pO1xuICAgIGNvbnN0IG1pbnV0ZXMgPSBOdW1iZXIoaG91clNwbGl0ZWRbMV0pO1xuICAgIGNvbnN0IHllYXIgPSBjdXJyZW50RGF0ZS5nZXRGdWxsWWVhcigpO1xuICAgIGNvbnN0IG1vbnRoID0gY3VycmVudERhdGUuZ2V0TW9udGgoKTtcbiAgICBjb25zdCBkYXRlID0gY3VycmVudERhdGUuZ2V0RGF0ZSgpO1xuXG4gICAgcmV0dXJuIG5ldyBEYXRlKHllYXIsIG1vbnRoLCBkYXRlLCBob3VycywgbWludXRlcykuZ2V0VGltZSgpO1xuICB9XG5cbiAgdHJhbnNmb3JtTWlsZXNlY29uZHNUb0hvdXIoIGZ1bGxIb3VyOiBudW1iZXIgKSB7XG4gICAgY29uc3QgZnVsbEhvdXJNUyA9IG5ldyBEYXRlKGZ1bGxIb3VyKTtcblxuICAgIGNvbnN0IGhvdXJzID0gU3RyaW5nKGZ1bGxIb3VyTVMuZ2V0SG91cnMoKSkucGFkU3RhcnQoMiwgJzAnKTtcbiAgICBjb25zdCBtaW51dGVzID0gU3RyaW5nKGZ1bGxIb3VyTVMuZ2V0TWludXRlcygpKS5wYWRTdGFydCgyLCAnMCcpO1xuXG4gICAgcmV0dXJuIGAke2hvdXJzfToke21pbnV0ZXN9YDtcbiAgfVxuXG5cbiAgcHJpdmF0ZSBnZW5lcmF0ZVRpbWVzKCkge1xuICAgIGNvbnN0IE1JTl9UT19NSUxMRVNFQ09ORCA9IDYwMDAwO1xuICAgIHRoaXMudGltZXNDb2xsZWN0aW9uID0gbmV3IEFycmF5PEFycmF5PERhdGU+PiggKHRoaXMud29ya1NjYWxlSW5NaWxlc2Vjb25kcyBhcyBBcnJheTxhbnk+KS5sZW5ndGggKS5maWxsKFtdKTtcblxuICAgIGlmICggKHRoaXMud29ya1NjYWxlSW5NaWxlc2Vjb25kcyBhcyBBcnJheTxhbnk+KS5sZW5ndGggPiAwICkge1xuICAgICAgKHRoaXMud29ya1NjYWxlSW5NaWxlc2Vjb25kcyBhcyBBcnJheTxhbnk+KS5mb3JFYWNoKCggdmFsdWUgLCBpbmRleCwgYXJyYXkpID0+IHtcbiAgICAgICAgbGV0IGN1cnJlbnRIb3VyX21zID0gIHZhbHVlLnN0YXJ0O1xuICAgICAgICBsZXQgbmV4dEhvdXJCcmVha19tcyA9IHZhbHVlLnN0YXJ0O1xuXG4gICAgICAgIHdoaWxlICggY3VycmVudEhvdXJfbXMgPCB2YWx1ZS5lbmQgKSB7XG4gICAgICAgICAgaWYgKCBjdXJyZW50SG91cl9tcyA9PT0gbmV4dEhvdXJCcmVha19tcyAgKSB7XG4gICAgICAgICAgICB0aGlzLnRpbWVzQ29sbGVjdGlvbltpbmRleF0gPSBbLi4udGhpcy50aW1lc0NvbGxlY3Rpb25baW5kZXhdLCBuZXcgRGF0ZShuZXh0SG91ckJyZWFrX21zKSBdIDtcbiAgICAgICAgICAgIG5leHRIb3VyQnJlYWtfbXMgPSAgbmV4dEhvdXJCcmVha19tcyArICh2YWx1ZS5pbnRlcnZhbCAqIE1JTl9UT19NSUxMRVNFQ09ORCk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGN1cnJlbnRIb3VyX21zKys7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH1cblxuICAgIHRoaXMudXBkYXRlU2NhbGUuZW1pdCggdGhpcy50aW1lc0NvbGxlY3Rpb24gKTtcbiAgfVxufVxuIl19