ng-devui
Version:
DevUI components based on Angular
102 lines • 12.9 kB
JavaScript
import { Injectable } from '@angular/core';
import { fromEvent, merge, Observable, ReplaySubject, Subject } from 'rxjs';
import { pluck } from 'rxjs/operators';
import { GanttScaleUnit } from './gantt.model';
import * as i0 from "@angular/core";
export class GanttService {
static { this.DAY_DURATION = 24 * 60 * 60 * 1000; }
constructor() {
this.scaleUnit = GanttScaleUnit.day;
this.ganttBarStatusChange = new Subject();
this.ganttScaleConfigChange = new ReplaySubject(1);
this.mouseMoveListener = new Observable();
this.mouseEndListener = new Observable();
}
changeGanttBarStatus(status) {
this.ganttBarStatusChange.next(status);
}
registContainerEvents(scrollContainer) {
// 背景拖拽
this.mouseDownListener = fromEvent(scrollContainer, 'mousedown').pipe(pluck('pageX'));
this.mouseMoveListener = fromEvent(scrollContainer, 'mousemove').pipe(pluck('pageX'));
this.mouseEndListener = merge(fromEvent(scrollContainer, 'mouseup'), fromEvent(scrollContainer, 'mouseout')).pipe(pluck('pageX'));
}
changeGanttScaleConfig(status) {
this.ganttScaleConfigChange.next(status);
}
setScaleConfig(config) {
if (config.startDate) {
this.scaleStartDate = config.startDate;
}
if (config.endDate) {
this.scaleEndDate = config.endDate;
}
if (config.unit) {
this.scaleUnit = config.unit;
}
this.changeGanttScaleConfig(config);
}
getScaleUnitPixel() {
switch (this.scaleUnit) {
case GanttScaleUnit.day:
return 40;
break;
case GanttScaleUnit.week:
return 30;
break;
case GanttScaleUnit.month:
return 20;
break;
default:
break;
}
}
getDatePostionOffset(date) {
if (date && this.scaleStartDate) {
const timeOffset = date.getTime() - this.scaleStartDate.getTime();
const units = timeOffset / GanttService.DAY_DURATION;
return units * this.getScaleUnitPixel();
}
}
getDuration(startDate, endDate) {
if (startDate && endDate) {
const timeOffset = endDate.getTime() - startDate.getTime();
const duration = timeOffset / GanttService.DAY_DURATION + 1;
return Math.round(duration);
}
}
getDurationWidth(startDate, endDate) {
if (startDate && endDate) {
const duration = this.getDuration(startDate, endDate);
return duration * this.getScaleUnitPixel();
}
}
isSomeDate(date, compareDate) {
if (date.getFullYear() !== compareDate.getFullYear()) {
return false;
}
if (date.getMonth() !== compareDate.getMonth()) {
return false;
}
if (date.getDate() !== compareDate.getDate()) {
return false;
}
return true;
}
roundDate(date) {
if (date.getHours() >= 12) {
date.setDate(date.getDate() + 1);
date.setHours(0, 0, 0);
}
else if (date.getHours() < 12) {
date.setHours(0, 0, 0);
}
}
unRegistContainerEvents() { }
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: GanttService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: GanttService }); }
}
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: GanttService, decorators: [{
type: Injectable
}], ctorParameters: () => [] });
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2FudHQuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL2RldnVpL2dhbnR0L2dhbnR0LnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxVQUFVLEVBQUUsYUFBYSxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUM1RSxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDdkMsT0FBTyxFQUFvQyxjQUFjLEVBQUUsTUFBTSxlQUFlLENBQUM7O0FBR2pGLE1BQU0sT0FBTyxZQUFZO2FBQ2hCLGlCQUFZLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsSUFBSSxBQUF0QixDQUF1QjtJQVcxQztRQVZBLGNBQVMsR0FBRyxjQUFjLENBQUMsR0FBRyxDQUFDO1FBRy9CLHlCQUFvQixHQUFHLElBQUksT0FBTyxFQUFrQixDQUFDO1FBQ3JELDJCQUFzQixHQUFHLElBQUksYUFBYSxDQUFtQixDQUFDLENBQUMsQ0FBQztRQUdoRSxzQkFBaUIsR0FBRyxJQUFJLFVBQVUsRUFBRSxDQUFDO1FBQ3JDLHFCQUFnQixHQUFHLElBQUksVUFBVSxFQUFFLENBQUM7SUFFckIsQ0FBQztJQUNoQixvQkFBb0IsQ0FBQyxNQUFzQjtRQUN6QyxJQUFJLENBQUMsb0JBQW9CLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ3pDLENBQUM7SUFFRCxxQkFBcUIsQ0FBQyxlQUE0QjtRQUNoRCxPQUFPO1FBQ1AsSUFBSSxDQUFDLGlCQUFpQixHQUFHLFNBQVMsQ0FBQyxlQUFlLEVBQUUsV0FBVyxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBc0IsT0FBTyxDQUFDLENBQUMsQ0FBQztRQUUzRyxJQUFJLENBQUMsaUJBQWlCLEdBQUcsU0FBUyxDQUFD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QUFJLElBQUksQ0FBQyxRQUFRLEVBQUUsS0FBSyxXQUFXLENBQUMsUUFBUSxFQUFFLEVBQUUsQ0FBQztZQUMvQyxPQUFPLEtBQUssQ0FBQztRQUNmLENBQUM7UUFFRCxJQUFJLElBQUksQ0FBQyxPQUFPLEVBQUUsS0FBSyxXQUFXLENBQUMsT0FBTyxFQUFFLEVBQUUsQ0FBQztZQUM3QyxPQUFPLEtBQUssQ0FBQztRQUNmLENBQUM7UUFDRCxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFFRCxTQUFTLENBQUMsSUFBVTtRQUNsQixJQUFJLElBQUksQ0FBQyxRQUFRLEVBQUUsSUFBSSxFQUFFLEVBQUUsQ0FBQztZQUMxQixJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQztZQUNqQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFDekIsQ0FBQzthQUFNLElBQUksSUFBSSxDQUFDLFFBQVEsRUFBRSxHQUFHLEVBQUUsRUFBRSxDQUFDO1lBQ2hDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztRQUN6QixDQUFDO0lBQ0gsQ0FBQztJQUVELHVCQUF1QixLQUFJLENBQUM7K0dBNUdqQixZQUFZO21IQUFaLFlBQVk7OzRGQUFaLFlBQVk7a0JBRHhCLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBmcm9tRXZlbnQsIG1lcmdlLCBPYnNlcnZhYmxlLCBSZXBsYXlTdWJqZWN0LCBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBwbHVjayB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IEdhbnR0QmFyU3RhdHVzLCBHYW50dFNjYWxlQ29uZmlnLCBHYW50dFNjYWxlVW5pdCB9IGZyb20gJy4vZ2FudHQubW9kZWwnO1xuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgR2FudHRTZXJ2aWNlIHtcbiAgc3RhdGljIERBWV9EVVJBVElPTiA9IDI0ICogNjAgKiA2MCAqIDEwMDA7XG4gIHNjYWxlVW5pdCA9IEdhbnR0U2NhbGVVbml0LmRheTtcbiAgc2NhbGVTdGFydERhdGU6IERhdGU7XG4gIHNjYWxlRW5kRGF0ZTogRGF0ZTtcbiAgZ2FudHRCYXJTdGF0dXNDaGFuZ2UgPSBuZXcgU3ViamVjdDxHYW50dEJhclN0YXR1cz4oKTtcbiAgZ2FudHRTY2FsZUNvbmZpZ0NoYW5nZSA9IG5ldyBSZXBsYXlTdWJqZWN0PEdhbnR0U2NhbGVDb25maWc+KDEpO1xuXG4gIG1vdXNlRG93bkxpc3RlbmVyOiBPYnNlcnZhYmxlPG51bWJlcj47XG4gIG1vdXNlTW92ZUxpc3RlbmVyID0gbmV3IE9ic2VydmFibGUoKTtcbiAgbW91c2VFbmRMaXN0ZW5lciA9IG5ldyBPYnNlcnZhYmxlKCk7XG5cbiAgY29uc3RydWN0b3IoKSB7fVxuICBjaGFuZ2VHYW50dEJhclN0YXR1cyhzdGF0dXM6IEdhbnR0QmFyU3RhdHVzKSB7XG4gICAgdGhpcy5nYW50dEJhclN0YXR1c0NoYW5nZS5uZXh0KHN0YXR1cyk7XG4gIH1cblxuICByZWdpc3RDb250YWluZXJFdmVudHMoc2Nyb2xsQ29udGFpbmVyOiBIVE1MRWxlbWVudCkge1xuICAgIC8vIOiDjOaZr+aLluaLvVxuICAgIHRoaXMubW91c2VEb3duTGlzdGVuZXIgPSBmcm9tRXZlbnQoc2Nyb2xsQ29udGFpbmVyLCAnbW91c2Vkb3duJykucGlwZShwbHVjazxNb3VzZUV2ZW50LCAncGFnZVgnPigncGFnZVgnKSk7XG5cbiAgICB0aGlzLm1vdXNlTW92ZUxpc3RlbmVyID0gZnJvbUV2ZW50KHNjcm9sbENvbnRhaW5lciwgJ21vdXNlbW92ZScpLnBpcGUocGx1Y2s8TW91c2VFdmVudCwgJ3BhZ2VYJz4oJ3BhZ2VYJykpO1xuXG4gICAgdGhpcy5tb3VzZUVuZExpc3RlbmVyID0gbWVyZ2UoZnJvbUV2ZW50KHNjcm9sbENvbnRhaW5lciwgJ21vdXNldXAnKSwgZnJvbUV2ZW50KHNjcm9sbENvbnRhaW5lciwgJ21vdXNlb3V0JykpLnBpcGUoXG4gICAgICBwbHVjazxNb3VzZUV2ZW50LCAncGFnZVgnPigncGFnZVgnKVxuICAgICk7XG4gIH1cblxuICBjaGFuZ2VHYW50dFNjYWxlQ29uZmlnKHN0YXR1czogR2FudHRTY2FsZUNvbmZpZykge1xuICAgIHRoaXMuZ2FudHRTY2FsZUNvbmZpZ0NoYW5nZS5uZXh0KHN0YXR1cyk7XG4gIH1cblxuICBzZXRTY2FsZUNvbmZpZyhjb25maWc6IEdhbnR0U2NhbGVDb25maWcpIHtcbiAgICBpZiAoY29uZmlnLnN0YXJ0RGF0ZSkge1xuICAgICAgdGhpcy5zY2FsZVN0YXJ0RGF0ZSA9IGNvbmZpZy5zdGFydERhdGU7XG4gICAgfVxuICAgIGlmIChjb25maWcuZW5kRGF0ZSkge1xuICAgICAgdGhpcy5zY2FsZUVuZERhdGUgPSBjb25maWcuZW5kRGF0ZTtcbiAgICB9XG4gICAgaWYgKGNvbmZpZy51bml0KSB7XG4gICAgICB0aGlzLnNjYWxlVW5pdCA9IGNvbmZpZy51bml0O1xuICAgIH1cbiAgICB0aGlzLmNoYW5nZUdhbnR0U2NhbGVDb25maWcoY29uZmlnKTtcbiAgfVxuXG4gIGdldFNjYWxlVW5pdFBpeGVsKCkge1xuICAgIHN3aXRjaCAodGhpcy5zY2FsZVVuaXQpIHtcbiAgICBjYXNlIEdhbnR0U2NhbGVVbml0LmRheTpcbiAgICAgIHJldHVybiA0MDtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgR2FudHRTY2FsZVVuaXQud2VlazpcbiAgICAgIHJldHVybiAzMDtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgR2FudHRTY2FsZVVuaXQubW9udGg6XG4gICAgICByZXR1cm4gMjA7XG4gICAgICBicmVhaztcbiAgICBkZWZhdWx0OlxuICAgICAgYnJlYWs7XG4gICAgfVxuICB9XG5cbiAgZ2V0RGF0ZVBvc3Rpb25PZmZzZXQoZGF0ZTogRGF0ZSk6IG51bWJlciB7XG4gICAgaWYgKGRhdGUgJiYgdGhpcy5zY2FsZVN0YXJ0RGF0ZSkge1xuICAgICAgY29uc3QgdGltZU9mZnNldCA9IGRhdGUuZ2V0VGltZSgpIC0gdGhpcy5zY2FsZVN0YXJ0RGF0ZS5nZXRUaW1lKCk7XG4gICAgICBjb25zdCB1bml0cyA9IHRpbWVPZmZzZXQgLyBHYW50dFNlcnZpY2UuREFZX0RVUkFUSU9OO1xuICAgICAgcmV0dXJuIHVuaXRzICogdGhpcy5nZXRTY2FsZVVuaXRQaXhlbCgpO1xuICAgIH1cbiAgfVxuXG4gIGdldER1cmF0aW9uKHN0YXJ0RGF0ZTogRGF0ZSwgZW5kRGF0ZTogRGF0ZSk6IG51bWJlciB7XG4gICAgaWYgKHN0YXJ0RGF0ZSAmJiBlbmREYXRlKSB7XG4gICAgICBjb25zdCB0aW1lT2Zmc2V0ID0gZW5kRGF0ZS5nZXRUaW1lKCkgLSBzdGFydERhdGUuZ2V0VGltZSgpO1xuICAgICAgY29uc3QgZHVyYXRpb24gPSB0aW1lT2Zmc2V0IC8gR2FudHRTZXJ2aWNlLkRBWV9EVVJBVElPTiArIDE7XG4gICAgICByZXR1cm4gTWF0aC5yb3VuZChkdXJhdGlvbik7XG4gICAgfVxuICB9XG5cbiAgZ2V0RHVyYXRpb25XaWR0aChzdGFydERhdGU6IERhdGUsIGVuZERhdGU6IERhdGUpOiBudW1iZXIge1xuICAgIGlmIChzdGFydERhdGUgJiYgZW5kRGF0ZSkge1xuICAgICAgY29uc3QgZHVyYXRpb24gPSB0aGlzLmdldER1cmF0aW9uKHN0YXJ0RGF0ZSwgZW5kRGF0ZSk7XG4gICAgICByZXR1cm4gZHVyYXRpb24gKiB0aGlzLmdldFNjYWxlVW5pdFBpeGVsKCk7XG4gICAgfVxuICB9XG5cbiAgaXNTb21lRGF0ZShkYXRlOiBEYXRlLCBjb21wYXJlRGF0ZTogRGF0ZSkge1xuICAgIGlmIChkYXRlLmdldEZ1bGxZZWFyKCkgIT09IGNvbXBhcmVEYXRlLmdldEZ1bGxZZWFyKCkpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICBpZiAoZGF0ZS5nZXRNb250aCgpICE9PSBjb21wYXJlRGF0ZS5nZXRNb250aCgpKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgaWYgKGRhdGUuZ2V0RGF0ZSgpICE9PSBjb21wYXJlRGF0ZS5nZXREYXRlKCkpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxuICByb3VuZERhdGUoZGF0ZTogRGF0ZSkge1xuICAgIGlmIChkYXRlLmdldEhvdXJzKCkgPj0gMTIpIHtcbiAgICAgIGRhdGUuc2V0RGF0ZShkYXRlLmdldERhdGUoKSArIDEpO1xuICAgICAgZGF0ZS5zZXRIb3VycygwLCAwLCAwKTtcbiAgICB9IGVsc2UgaWYgKGRhdGUuZ2V0SG91cnMoKSA8IDEyKSB7XG4gICAgICBkYXRlLnNldEhvdXJzKDAsIDAsIDApO1xuICAgIH1cbiAgfVxuXG4gIHVuUmVnaXN0Q29udGFpbmVyRXZlbnRzKCkge31cbn1cbiJdfQ==