ngx-gem-spaas
Version:
This library contains services, components, images and styles to provide a unified look and way-of-working throughout GEM SPaaS.
67 lines • 10.3 kB
JavaScript
import { ReplaySubject } from 'rxjs';
import { Injectable } from '@angular/core';
import { DateTime } from 'luxon';
import { DateModel } from "../_models/date.model";
import * as i0 from "@angular/core";
import * as i1 from "ngx-gem-spaas";
export class DateService {
static calcIdx(from, ts, granularity, setToStartOfDay = true) {
switch (granularity) {
case 15:
return DateService.calcIdxQ(from, ts, setToStartOfDay);
case 30:
return DateService.calcIdxS(from, ts, setToStartOfDay);
case 60:
return DateService.calcIdxH(from, ts, setToStartOfDay);
}
}
static calcIdxH(from, ts, setToStartOfDay = true) {
const fromDt = setToStartOfDay ? DateTime.fromISO(from).startOf('day').toUTC() : DateTime.fromISO(from).toUTC();
return Math.floor(DateTime.fromISO(ts).toUTC().diff(fromDt, 'hours').toObject().hours);
}
static calcIdxS(from, ts, setToStartOfDay = true) {
const hours = DateService.calcIdxH(from, ts, setToStartOfDay);
const minutes = DateTime.fromISO(ts).toUTC().minute;
return Math.floor(hours * 2 + minutes / 30);
}
static calcIdxQ(from, ts, setToStartOfDay = true) {
const hours = DateService.calcIdxH(from, ts, setToStartOfDay);
const minutes = DateTime.fromISO(ts).toUTC().minute;
return hours * 4 + minutes / 15;
}
static calcQinH(ts) {
return Math.floor(DateTime.fromISO(ts).minute / 15);
}
constructor(ssService) {
this.ssService = ssService;
this.date$ = new ReplaySubject(0);
this.SS_DATE = 'date';
const date = this.ssService.getItem(this.SS_DATE);
this.date = new DateModel(date.intraDay || DateTime.now().toISO());
this.newDate(this.date);
}
// ********************************************************************************************************
// BROADCAST DATA
// ********************************************************************************************************
newDate(newDate) {
newDate.calcFields();
this.ssService.setItem(this.SS_DATE, newDate);
this.date$.next(newDate);
this.date = newDate;
}
onNewDate() {
return this.date$.asObservable();
}
getDate() {
return this.date;
}
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: DateService, deps: [{ token: i1.SessionStorageService }], target: i0.ɵɵFactoryTarget.Injectable }); }
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: DateService, providedIn: 'root' }); }
}
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: DateService, decorators: [{
type: Injectable,
args: [{
providedIn: 'root'
}]
}], ctorParameters: () => [{ type: i1.SessionStorageService }] });
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LWdlbS1zcGFhcy9kYXRlL3NyYy9fc2VydmljZXMvZGF0ZS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBYSxhQUFhLEVBQUMsTUFBTSxNQUFNLENBQUM7QUFDL0MsT0FBTyxFQUFDLFVBQVUsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUN6QyxPQUFPLEVBQUMsUUFBUSxFQUFDLE1BQU0sT0FBTyxDQUFDO0FBRS9CLE9BQU8sRUFBQyxTQUFTLEVBQUMsTUFBTSx1QkFBdUIsQ0FBQzs7O0FBS2hELE1BQU0sT0FBTyxXQUFXO0lBT3RCLE1BQU0sQ0FBQyxPQUFPLENBQUMsSUFBWSxFQUFFLEVBQVUsRUFBRSxXQUF5QixFQUFFLGtCQUEyQixJQUFJO1FBQ2pHLFFBQVEsV0FBVyxFQUFFLENBQUM7WUFDcEIsS0FBSyxFQUFFO2dCQUNMLE9BQU8sV0FBVyxDQUFDLFFBQVEsQ0FBQyxJQUFJLEVBQUUsRUFBRSxFQUFFLGVBQWUsQ0FBQyxDQUFDO1lBQ3pELEtBQUssRUFBRTtnQkFDTCxPQUFPLFdBQVcsQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFLEVBQUUsRUFBRSxlQUFlLENBQUMsQ0FBQztZQUN6RCxLQUFLLEVBQUU7Z0JBQ0wsT0FBTyxXQUFXLENBQUMsUUFBUSxDQUFDLElBQUksRUFBRSxFQUFFLEVBQUUsZUFBZSxDQUFDLENBQUM7UUFDM0QsQ0FBQztJQUVILENBQUM7SUFFRCxNQUFNLENBQUMsUUFBUSxDQUFDLElBQVksRUFBRSxFQUFVLEVBQUUsa0JBQTJCLElBQUk7UUFDdkUsTUFBTSxNQUFNLEdBQUcsZUFBZSxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQUMsUUFB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bSAncnhqcyc7XHJcbmltcG9ydCB7SW5qZWN0YWJsZX0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7RGF0ZVRpbWV9IGZyb20gJ2x1eG9uJztcclxuaW1wb3J0IHtTZXNzaW9uU3RvcmFnZVNlcnZpY2V9IGZyb20gJ25neC1nZW0tc3BhYXMnO1xyXG5pbXBvcnQge0RhdGVNb2RlbH0gZnJvbSBcIi4uL19tb2RlbHMvZGF0ZS5tb2RlbFwiO1xyXG5cclxuQEluamVjdGFibGUoe1xyXG4gIHByb3ZpZGVkSW46ICdyb290J1xyXG59KVxyXG5leHBvcnQgY2xhc3MgRGF0ZVNlcnZpY2Uge1xyXG5cclxuICBwcml2YXRlIGRhdGU6IERhdGVNb2RlbDtcclxuICBwcml2YXRlIGRhdGUkID0gbmV3IFJlcGxheVN1YmplY3Q8RGF0ZU1vZGVsPigwKTtcclxuXHJcbiAgcHJpdmF0ZSByZWFkb25seSBTU19EQVRFID0gJ2RhdGUnO1xyXG5cclxuICBzdGF0aWMgY2FsY0lkeChmcm9tOiBzdHJpbmcsIHRzOiBzdHJpbmcsIGdyYW51bGFyaXR5OiAxNSB8IDMwIHwgNjAsIHNldFRvU3RhcnRPZkRheTogYm9vbGVhbiA9IHRydWUpOiBudW1iZXIge1xyXG4gICAgc3dpdGNoIChncmFudWxhcml0eSkge1xyXG4gICAgICBjYXNlIDE1OlxyXG4gICAgICAgIHJldHVybiBEYXRlU2VydmljZS5jYWxjSWR4UShmcm9tLCB0cywgc2V0VG9TdGFydE9mRGF5KTtcclxuICAgICAgY2FzZSAzMDpcclxuICAgICAgICByZXR1cm4gRGF0ZVNlcnZpY2UuY2FsY0lkeFMoZnJvbSwgdHMsIHNldFRvU3RhcnRPZkRheSk7XHJcbiAgICAgIGNhc2UgNjA6XHJcbiAgICAgICAgcmV0dXJuIERhdGVTZXJ2aWNlLmNhbGNJZHhIKGZyb20sIHRzLCBzZXRUb1N0YXJ0T2ZEYXkpO1xyXG4gICAgfVxyXG5cclxuICB9XHJcblxyXG4gIHN0YXRpYyBjYWxjSWR4SChmcm9tOiBzdHJpbmcsIHRzOiBzdHJpbmcsIHNldFRvU3RhcnRPZkRheTogYm9vbGVhbiA9IHRydWUpOiBudW1iZXIge1xyXG4gICAgY29uc3QgZnJvbUR0ID0gc2V0VG9TdGFydE9mRGF5ID8gRGF0ZVRpbWUuZnJvbUlTTyhmcm9tKS5zdGFydE9mKCdkYXknKS50b1VUQygpIDogRGF0ZVRpbWUuZnJvbUlTTyhmcm9tKS50b1VUQygpO1xyXG4gICAgcmV0dXJuIE1hdGguZmxvb3IoPG51bWJlcj5EYXRlVGltZS5mcm9tSVNPKHRzKS50b1VUQygpLmRpZmYoZnJvbUR0LCAnaG91cnMnKS50b09iamVjdCgpLmhvdXJzKTtcclxuICB9XHJcblxyXG4gIHN0YXRpYyBjYWxjSWR4Uyhmcm9tOiBzdHJpbmcsIHRzOiBzdHJpbmcsIHNldFRvU3RhcnRPZkRheTogYm9vbGVhbiA9IHRydWUpOiBudW1iZXIge1xyXG4gICAgY29uc3QgaG91cnMgPSBEYXRlU2VydmljZS5jYWxjSWR4SChmcm9tLCB0cywgc2V0VG9TdGFydE9mRGF5KTtcclxuICAgIGNvbnN0IG1pbnV0ZXMgPSBEYXRlVGltZS5mcm9tSVNPKHRzKS50b1VUQygpLm1pbnV0ZTtcclxuICAgIHJldHVybiBNYXRoLmZsb29yKGhvdXJzICogMiArIG1pbnV0ZXMgLyAzMCk7XHJcbiAgfVxyXG5cclxuICBzdGF0aWMgY2FsY0lkeFEoZnJvbTogc3RyaW5nLCB0czogc3RyaW5nLCBzZXRUb1N0YXJ0T2ZEYXk6IGJvb2xlYW4gPSB0cnVlKTogbnVtYmVyIHtcclxuICAgIGNvbnN0IGhvdXJzID0gRGF0ZVNlcnZpY2UuY2FsY0lkeEgoZnJvbSwgdHMsIHNldFRvU3RhcnRPZkRheSk7XHJcbiAgICBjb25zdCBtaW51dGVzID0gRGF0ZVRpbWUuZnJvbUlTTyh0cykudG9VVEMoKS5taW51dGU7XHJcbiAgICByZXR1cm4gaG91cnMgKiA0ICsgbWludXRlcyAvIDE1O1xyXG4gIH1cclxuXHJcbiAgc3RhdGljIGNhbGNRaW5IKHRzOiBzdHJpbmcpOiBudW1iZXIge1xyXG4gICAgcmV0dXJuIE1hdGguZmxvb3IoRGF0ZVRpbWUuZnJvbUlTTyh0cykubWludXRlIC8gMTUpO1xyXG4gIH1cclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIHNzU2VydmljZTogU2Vzc2lvblN0b3JhZ2VTZXJ2aWNlLFxyXG4gICkge1xyXG4gICAgY29uc3QgZGF0ZSA9IDxEYXRlTW9kZWw+dGhpcy5zc1NlcnZpY2UuZ2V0SXRlbSh0aGlzLlNTX0RBVEUpO1xyXG4gICAgdGhpcy5kYXRlID0gbmV3IERhdGVNb2RlbChkYXRlLmludHJhRGF5IHx8IERhdGVUaW1lLm5vdygpLnRvSVNPKCkpO1xyXG4gICAgdGhpcy5uZXdEYXRlKHRoaXMuZGF0ZSk7XHJcbiAgfVxyXG5cclxuXHJcbiAgLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcclxuICAvLyBCUk9BRENBU1QgREFUQVxyXG4gIC8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXHJcblxyXG4gIG5ld0RhdGUobmV3RGF0ZTogRGF0ZU1vZGVsKSB7XHJcbiAgICBuZXdEYXRlLmNhbGNGaWVsZHMoKTtcclxuICAgIHRoaXMuc3NTZXJ2aWNlLnNldEl0ZW0odGhpcy5TU19EQVRFLCBuZXdEYXRlKTtcclxuICAgIHRoaXMuZGF0ZSQubmV4dChuZXdEYXRlKTtcclxuICAgIHRoaXMuZGF0ZSA9IG5ld0RhdGU7XHJcbiAgfVxyXG5cclxuICBvbk5ld0RhdGUoKTogT2JzZXJ2YWJsZTxEYXRlTW9kZWw+IHtcclxuICAgIHJldHVybiB0aGlzLmRhdGUkLmFzT2JzZXJ2YWJsZSgpO1xyXG4gIH1cclxuXHJcbiAgZ2V0RGF0ZSgpOiBEYXRlTW9kZWwge1xyXG4gICAgcmV0dXJuIHRoaXMuZGF0ZTtcclxuICB9XHJcblxyXG59XHJcbiJdfQ==