UNPKG

ng-devui

Version:

DevUI components based on Angular

102 lines 12.9 kB
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==