@worktile/gantt 18.1.0-next.2 → 19.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/components/main/gantt-main.component.d.ts +3 -2
- package/fesm2022/worktile-gantt.mjs +124 -127
- package/fesm2022/worktile-gantt.mjs.map +1 -1
- package/gantt-item-upper.d.ts +1 -1
- package/gantt-upper.d.ts +1 -1
- package/gantt.module.d.ts +1 -1
- package/gantt.pipe.d.ts +5 -5
- package/package.json +4 -6
- package/esm2022/class/baseline.mjs +0 -18
- package/esm2022/class/date-point.mjs +0 -11
- package/esm2022/class/event.mjs +0 -27
- package/esm2022/class/group.mjs +0 -17
- package/esm2022/class/index.mjs +0 -9
- package/esm2022/class/item.mjs +0 -85
- package/esm2022/class/link.mjs +0 -19
- package/esm2022/class/toolbar.mjs +0 -2
- package/esm2022/class/view-type.mjs +0 -10
- package/esm2022/components/bar/bar-drag.mjs +0 -560
- package/esm2022/components/bar/bar.component.mjs +0 -132
- package/esm2022/components/baseline/baseline.component.mjs +0 -43
- package/esm2022/components/calendar/grid/calendar-grid.component.mjs +0 -66
- package/esm2022/components/calendar/header/calendar-header.component.mjs +0 -70
- package/esm2022/components/drag-backdrop/drag-backdrop.component.mjs +0 -21
- package/esm2022/components/icon/icon.component.mjs +0 -37
- package/esm2022/components/icon/icons.mjs +0 -93
- package/esm2022/components/links/lines/curve.mjs +0 -95
- package/esm2022/components/links/lines/factory.mjs +0 -14
- package/esm2022/components/links/lines/line.mjs +0 -24
- package/esm2022/components/links/lines/straight.mjs +0 -58
- package/esm2022/components/links/links.component.mjs +0 -196
- package/esm2022/components/loader/loader.component.mjs +0 -30
- package/esm2022/components/main/gantt-main.component.mjs +0 -94
- package/esm2022/components/range/range.component.mjs +0 -25
- package/esm2022/components/scrollbar/scrollbar.component.mjs +0 -27
- package/esm2022/components/table/body/gantt-table-body.component.mjs +0 -329
- package/esm2022/components/table/header/gantt-table-header.component.mjs +0 -152
- package/esm2022/components/toolbar/toolbar.component.mjs +0 -37
- package/esm2022/gantt-abstract.mjs +0 -3
- package/esm2022/gantt-dom.service.mjs +0 -156
- package/esm2022/gantt-drag-container.mjs +0 -78
- package/esm2022/gantt-item-upper.mjs +0 -67
- package/esm2022/gantt-print.service.mjs +0 -94
- package/esm2022/gantt-upper.mjs +0 -402
- package/esm2022/gantt.component.mjs +0 -361
- package/esm2022/gantt.config.mjs +0 -69
- package/esm2022/gantt.module.mjs +0 -141
- package/esm2022/gantt.pipe.mjs +0 -61
- package/esm2022/gantt.styles.mjs +0 -10
- package/esm2022/i18n/i18n.mjs +0 -12
- package/esm2022/i18n/index.mjs +0 -18
- package/esm2022/i18n/locales/de-de.mjs +0 -51
- package/esm2022/i18n/locales/en-us.mjs +0 -49
- package/esm2022/i18n/locales/ja-jp.mjs +0 -49
- package/esm2022/i18n/locales/ru-ru.mjs +0 -51
- package/esm2022/i18n/locales/zh-hans.mjs +0 -49
- package/esm2022/i18n/locales/zh-hant.mjs +0 -49
- package/esm2022/public-api.mjs +0 -28
- package/esm2022/root.component.mjs +0 -174
- package/esm2022/table/gantt-column.component.mjs +0 -46
- package/esm2022/table/gantt-table.component.mjs +0 -49
- package/esm2022/utils/date.mjs +0 -180
- package/esm2022/utils/drag-scroll.mjs +0 -54
- package/esm2022/utils/helpers.mjs +0 -73
- package/esm2022/utils/passive-listeners.mjs +0 -30
- package/esm2022/utils/set-style-with-vendor-prefix.mjs +0 -15
- package/esm2022/views/day.mjs +0 -58
- package/esm2022/views/factory.mjs +0 -22
- package/esm2022/views/hour.mjs +0 -89
- package/esm2022/views/month.mjs +0 -52
- package/esm2022/views/quarter.mjs +0 -55
- package/esm2022/views/view.mjs +0 -177
- package/esm2022/views/week.mjs +0 -53
- package/esm2022/views/year.mjs +0 -54
- package/esm2022/worktile-gantt.mjs +0 -5
|
@@ -1,37 +0,0 @@
|
|
|
1
|
-
import { Component, HostBinding, Input, Inject, inject } from '@angular/core';
|
|
2
|
-
import { GANTT_UPPER_TOKEN } from '../../gantt-upper';
|
|
3
|
-
import { NgIf, NgFor, NgTemplateOutlet } from '@angular/common';
|
|
4
|
-
import { GanttConfigService } from '../../gantt.config';
|
|
5
|
-
import * as i0 from "@angular/core";
|
|
6
|
-
import * as i1 from "../../gantt-upper";
|
|
7
|
-
export class NgxGanttToolbarComponent {
|
|
8
|
-
get top() {
|
|
9
|
-
return this.ganttUpper.styles.headerHeight + 16 + 'px';
|
|
10
|
-
}
|
|
11
|
-
constructor(ganttUpper) {
|
|
12
|
-
this.ganttUpper = ganttUpper;
|
|
13
|
-
this.ganttItemClass = true;
|
|
14
|
-
this.views = inject(GanttConfigService).getViewsLocale();
|
|
15
|
-
}
|
|
16
|
-
selectView(view) {
|
|
17
|
-
this.ganttUpper.changeView(view);
|
|
18
|
-
}
|
|
19
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: NgxGanttToolbarComponent, deps: [{ token: GANTT_UPPER_TOKEN }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
20
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.0", type: NgxGanttToolbarComponent, isStandalone: true, selector: "ngx-gantt-toolbar,gantt-toolbar", inputs: { template: "template" }, host: { properties: { "class.gantt-toolbar": "this.ganttItemClass", "style.top": "this.top" } }, ngImport: i0, template: "<div class=\"toolbar-container\">\n <ng-container *ngIf=\"!template\">\n <div class=\"toolbar-views\" *ngIf=\"this.ganttUpper.toolbarOptions?.viewTypes?.length\">\n <ng-container *ngFor=\"let viewType of this.ganttUpper.toolbarOptions?.viewTypes\">\n <div\n class=\"toolbar-view\"\n *ngIf=\"views[viewType]\"\n [class.active]=\"viewType === this.ganttUpper.viewType\"\n (click)=\"selectView(viewType)\"\n >\n {{ views[viewType].label }}\n </div>\n </ng-container>\n </div>\n </ng-container>\n <ng-template [ngTemplateOutlet]=\"template\"></ng-template>\n</div>\n", dependencies: [{ kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: NgFor, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }] }); }
|
|
21
|
-
}
|
|
22
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: NgxGanttToolbarComponent, decorators: [{
|
|
23
|
-
type: Component,
|
|
24
|
-
args: [{ selector: 'ngx-gantt-toolbar,gantt-toolbar', standalone: true, imports: [NgIf, NgFor, NgTemplateOutlet], template: "<div class=\"toolbar-container\">\n <ng-container *ngIf=\"!template\">\n <div class=\"toolbar-views\" *ngIf=\"this.ganttUpper.toolbarOptions?.viewTypes?.length\">\n <ng-container *ngFor=\"let viewType of this.ganttUpper.toolbarOptions?.viewTypes\">\n <div\n class=\"toolbar-view\"\n *ngIf=\"views[viewType]\"\n [class.active]=\"viewType === this.ganttUpper.viewType\"\n (click)=\"selectView(viewType)\"\n >\n {{ views[viewType].label }}\n </div>\n </ng-container>\n </div>\n </ng-container>\n <ng-template [ngTemplateOutlet]=\"template\"></ng-template>\n</div>\n" }]
|
|
25
|
-
}], ctorParameters: () => [{ type: i1.GanttUpper, decorators: [{
|
|
26
|
-
type: Inject,
|
|
27
|
-
args: [GANTT_UPPER_TOKEN]
|
|
28
|
-
}] }], propDecorators: { template: [{
|
|
29
|
-
type: Input
|
|
30
|
-
}], ganttItemClass: [{
|
|
31
|
-
type: HostBinding,
|
|
32
|
-
args: ['class.gantt-toolbar']
|
|
33
|
-
}], top: [{
|
|
34
|
-
type: HostBinding,
|
|
35
|
-
args: ['style.top']
|
|
36
|
-
}] } });
|
|
37
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9vbGJhci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9nYW50dC9zcmMvY29tcG9uZW50cy90b29sYmFyL3Rvb2xiYXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvZ2FudHQvc3JjL2NvbXBvbmVudHMvdG9vbGJhci90b29sYmFyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsV0FBVyxFQUFFLEtBQUssRUFBZSxNQUFNLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRTNGLE9BQU8sRUFBYyxpQkFBaUIsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ2xFLE9BQU8sRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLGdCQUFnQixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDaEUsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sb0JBQW9CLENBQUM7OztBQVF4RCxNQUFNLE9BQU8sd0JBQXdCO0lBS2pDLElBQ0ksR0FBRztRQUNILE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsWUFBWSxHQUFHLEVBQUUsR0FBRyxJQUFJLENBQUM7SUFDM0QsQ0FBQztJQUlELFlBQWlELFVBQXNCO1FBQXRCLGVBQVUsR0FBVixVQUFVLENBQVk7UUFUbkMsbUJBQWMsR0FBRyxJQUFJLENBQUM7UUFPMUQsVUFBSyxHQUFHLE1BQU0sQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDLGNBQWMsRUFBRSxDQUFDO0lBRXNCLENBQUM7SUFFM0UsVUFBVSxDQUFDLElBQW1CO1FBQzFCLElBQUksQ0FBQyxVQUFVLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ3JDLENBQUM7OEdBaEJRLHdCQUF3QixrQkFZYixpQkFBaUI7a0dBWjVCLHdCQUF3Qiw4TkNackMseW9CQWlCQSw0Q0RQYyxJQUFJLDZGQUFFLEtBQUssbUhBQUUsZ0JBQWdCOzsyRkFFOUIsd0JBQXdCO2tCQU5wQyxTQUFTOytCQUNJLGlDQUFpQyxjQUUvQixJQUFJLFdBQ1AsQ0FBQyxJQUFJLEVBQUUsS0FBSyxFQUFFLGdCQUFnQixDQUFDOzswQkFjM0IsTUFBTTsyQkFBQyxpQkFBaUI7eUNBWDVCLFFBQVE7c0JBQWhCLEtBQUs7Z0JBRThCLGNBQWM7c0JBQWpELFdBQVc7dUJBQUMscUJBQXFCO2dCQUc5QixHQUFHO3NCQUROLFdBQVc7dUJBQUMsV0FBVyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgSG9zdEJpbmRpbmcsIElucHV0LCBUZW1wbGF0ZVJlZiwgSW5qZWN0LCBpbmplY3QgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEdhbnR0Vmlld1R5cGUgfSBmcm9tICcuLi8uLi9jbGFzcyc7XG5pbXBvcnQgeyBHYW50dFVwcGVyLCBHQU5UVF9VUFBFUl9UT0tFTiB9IGZyb20gJy4uLy4uL2dhbnR0LXVwcGVyJztcbmltcG9ydCB7IE5nSWYsIE5nRm9yLCBOZ1RlbXBsYXRlT3V0bGV0IH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IEdhbnR0Q29uZmlnU2VydmljZSB9IGZyb20gJy4uLy4uL2dhbnR0LmNvbmZpZyc7XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnbmd4LWdhbnR0LXRvb2xiYXIsZ2FudHQtdG9vbGJhcicsXG4gICAgdGVtcGxhdGVVcmw6ICcuL3Rvb2xiYXIuY29tcG9uZW50Lmh0bWwnLFxuICAgIHN0YW5kYWxvbmU6IHRydWUsXG4gICAgaW1wb3J0czogW05nSWYsIE5nRm9yLCBOZ1RlbXBsYXRlT3V0bGV0XVxufSlcbmV4cG9ydCBjbGFzcyBOZ3hHYW50dFRvb2xiYXJDb21wb25lbnQge1xuICAgIEBJbnB1dCgpIHRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+O1xuXG4gICAgQEhvc3RCaW5kaW5nKCdjbGFzcy5nYW50dC10b29sYmFyJykgZ2FudHRJdGVtQ2xhc3MgPSB0cnVlO1xuXG4gICAgQEhvc3RCaW5kaW5nKCdzdHlsZS50b3AnKVxuICAgIGdldCB0b3AoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmdhbnR0VXBwZXIuc3R5bGVzLmhlYWRlckhlaWdodCArIDE2ICsgJ3B4JztcbiAgICB9XG5cbiAgICB2aWV3cyA9IGluamVjdChHYW50dENvbmZpZ1NlcnZpY2UpLmdldFZpZXdzTG9jYWxlKCk7XG5cbiAgICBjb25zdHJ1Y3RvcihASW5qZWN0KEdBTlRUX1VQUEVSX1RPS0VOKSBwcm90ZWN0ZWQgZ2FudHRVcHBlcjogR2FudHRVcHBlcikge31cblxuICAgIHNlbGVjdFZpZXcodmlldzogR2FudHRWaWV3VHlwZSkge1xuICAgICAgICB0aGlzLmdhbnR0VXBwZXIuY2hhbmdlVmlldyh2aWV3KTtcbiAgICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwidG9vbGJhci1jb250YWluZXJcIj5cbiAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiF0ZW1wbGF0ZVwiPlxuICAgIDxkaXYgY2xhc3M9XCJ0b29sYmFyLXZpZXdzXCIgKm5nSWY9XCJ0aGlzLmdhbnR0VXBwZXIudG9vbGJhck9wdGlvbnM/LnZpZXdUeXBlcz8ubGVuZ3RoXCI+XG4gICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCB2aWV3VHlwZSBvZiB0aGlzLmdhbnR0VXBwZXIudG9vbGJhck9wdGlvbnM/LnZpZXdUeXBlc1wiPlxuICAgICAgICA8ZGl2XG4gICAgICAgICAgY2xhc3M9XCJ0b29sYmFyLXZpZXdcIlxuICAgICAgICAgICpuZ0lmPVwidmlld3Nbdmlld1R5cGVdXCJcbiAgICAgICAgICBbY2xhc3MuYWN0aXZlXT1cInZpZXdUeXBlID09PSB0aGlzLmdhbnR0VXBwZXIudmlld1R5cGVcIlxuICAgICAgICAgIChjbGljayk9XCJzZWxlY3RWaWV3KHZpZXdUeXBlKVwiXG4gICAgICAgID5cbiAgICAgICAgICB7eyB2aWV3c1t2aWV3VHlwZV0ubGFiZWwgfX1cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8L2Rpdj5cbiAgPC9uZy1jb250YWluZXI+XG4gIDxuZy10ZW1wbGF0ZSBbbmdUZW1wbGF0ZU91dGxldF09XCJ0ZW1wbGF0ZVwiPjwvbmctdGVtcGxhdGU+XG48L2Rpdj5cbiJdfQ==
|
|
@@ -1,3 +0,0 @@
|
|
|
1
|
-
import { InjectionToken } from '@angular/core';
|
|
2
|
-
export const GANTT_ABSTRACT_TOKEN = new InjectionToken('gantt-abstract-token');
|
|
3
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2FudHQtYWJzdHJhY3QuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9wYWNrYWdlcy9nYW50dC9zcmMvZ2FudHQtYWJzdHJhY3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGNBQWMsRUFBcUIsTUFBTSxlQUFlLENBQUM7QUFlbEUsTUFBTSxDQUFDLE1BQU0sb0JBQW9CLEdBQUcsSUFBSSxjQUFjLENBQXlCLHNCQUFzQixDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3Rpb25Ub2tlbiwgQ2hhbmdlRGV0ZWN0b3JSZWYgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEdhbnR0R3JvdXBJbnRlcm5hbCwgR2FudHRJdGVtSW50ZXJuYWwgfSBmcm9tICcuL2NsYXNzJztcbmltcG9ydCB7IE5neEdhbnR0VGFibGVDb21wb25lbnQgfSBmcm9tICcuL3RhYmxlL2dhbnR0LXRhYmxlLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBHYW50dFN0eWxlT3B0aW9ucyB9IGZyb20gJy4vZ2FudHQuY29uZmlnJztcblxuZXhwb3J0IGludGVyZmFjZSBHYW50dEFic3RyYWN0Q29tcG9uZW50IHtcbiAgICB0YWJsZTogTmd4R2FudHRUYWJsZUNvbXBvbmVudDtcbiAgICBzdHlsZXM6IEdhbnR0U3R5bGVPcHRpb25zO1xuICAgIG1heExldmVsOiBudW1iZXI7XG4gICAgYXN5bmM6IGJvb2xlYW47XG4gICAgY2RyOiBDaGFuZ2VEZXRlY3RvclJlZjtcbiAgICBleHBhbmRHcm91cChncm91cDogR2FudHRHcm91cEludGVybmFsKTogdm9pZDtcbiAgICBleHBhbmRDaGlsZHJlbihpdGVtOiBHYW50dEl0ZW1JbnRlcm5hbCk6IHZvaWQ7XG59XG5cbmV4cG9ydCBjb25zdCBHQU5UVF9BQlNUUkFDVF9UT0tFTiA9IG5ldyBJbmplY3Rpb25Ub2tlbjxHYW50dEFic3RyYWN0Q29tcG9uZW50PignZ2FudHQtYWJzdHJhY3QtdG9rZW4nKTtcbiJdfQ==
|
|
@@ -1,156 +0,0 @@
|
|
|
1
|
-
import { isPlatformServer } from '@angular/common';
|
|
2
|
-
import { Injectable, Inject, PLATFORM_ID, signal } from '@angular/core';
|
|
3
|
-
import { fromEvent, Subject, merge, EMPTY, Observable } from 'rxjs';
|
|
4
|
-
import { pairwise, map, auditTime, takeUntil } from 'rxjs/operators';
|
|
5
|
-
import { isNumber } from './utils/helpers';
|
|
6
|
-
import { passiveListenerOptions } from './utils/passive-listeners';
|
|
7
|
-
import * as i0 from "@angular/core";
|
|
8
|
-
const scrollThreshold = 50;
|
|
9
|
-
export var ScrollDirection;
|
|
10
|
-
(function (ScrollDirection) {
|
|
11
|
-
ScrollDirection[ScrollDirection["NONE"] = 0] = "NONE";
|
|
12
|
-
ScrollDirection[ScrollDirection["LEFT"] = 1] = "LEFT";
|
|
13
|
-
ScrollDirection[ScrollDirection["RIGHT"] = 2] = "RIGHT";
|
|
14
|
-
})(ScrollDirection || (ScrollDirection = {}));
|
|
15
|
-
export class GanttDomService {
|
|
16
|
-
constructor(ngZone, platformId) {
|
|
17
|
-
this.ngZone = ngZone;
|
|
18
|
-
this.platformId = platformId;
|
|
19
|
-
this.visibleRangeX = signal({ min: 0, max: 0 });
|
|
20
|
-
this.unsubscribe$ = new Subject();
|
|
21
|
-
}
|
|
22
|
-
monitorScrollChange() {
|
|
23
|
-
const scrollObservers = [
|
|
24
|
-
fromEvent(this.mainContainer, 'scroll', passiveListenerOptions),
|
|
25
|
-
fromEvent(this.sideContainer, 'scroll', passiveListenerOptions)
|
|
26
|
-
];
|
|
27
|
-
this.mainFooter && scrollObservers.push(fromEvent(this.mainFooter, 'scroll', passiveListenerOptions));
|
|
28
|
-
this.mainScrollbar && scrollObservers.push(fromEvent(this.mainScrollbar, 'scroll', passiveListenerOptions));
|
|
29
|
-
this.ngZone.runOutsideAngular(() => merge(...scrollObservers)
|
|
30
|
-
.pipe(takeUntil(this.unsubscribe$))
|
|
31
|
-
.subscribe((event) => {
|
|
32
|
-
this.syncScroll(event);
|
|
33
|
-
}));
|
|
34
|
-
}
|
|
35
|
-
syncScroll(event) {
|
|
36
|
-
const target = event.currentTarget;
|
|
37
|
-
const classList = target.classList;
|
|
38
|
-
if (!classList.contains('gantt-side-container')) {
|
|
39
|
-
this.mainContainer.scrollLeft = target.scrollLeft;
|
|
40
|
-
this.calendarHeader.scrollLeft = target.scrollLeft;
|
|
41
|
-
this.calendarOverlay.scrollLeft = target.scrollLeft;
|
|
42
|
-
this.mainScrollbar && (this.mainScrollbar.scrollLeft = target.scrollLeft);
|
|
43
|
-
this.mainFooter && (this.mainFooter.scrollLeft = target.scrollLeft);
|
|
44
|
-
if (classList.contains('gantt-main-container')) {
|
|
45
|
-
this.sideContainer.scrollTop = target.scrollTop;
|
|
46
|
-
this.mainContainer.scrollTop = target.scrollTop;
|
|
47
|
-
}
|
|
48
|
-
}
|
|
49
|
-
else {
|
|
50
|
-
this.sideContainer.scrollTop = target.scrollTop;
|
|
51
|
-
this.mainContainer.scrollTop = target.scrollTop;
|
|
52
|
-
}
|
|
53
|
-
}
|
|
54
|
-
disableBrowserWheelEvent() {
|
|
55
|
-
const container = this.mainContainer;
|
|
56
|
-
this.ngZone.runOutsideAngular(() => fromEvent(container, 'wheel')
|
|
57
|
-
.pipe(takeUntil(this.unsubscribe$))
|
|
58
|
-
.subscribe((event) => {
|
|
59
|
-
const delta = event.deltaX;
|
|
60
|
-
if (!delta) {
|
|
61
|
-
return;
|
|
62
|
-
}
|
|
63
|
-
if ((container.scrollLeft + container.offsetWidth === container.scrollWidth && delta > 0) ||
|
|
64
|
-
(container.scrollLeft === 0 && delta < 0)) {
|
|
65
|
-
event.preventDefault();
|
|
66
|
-
}
|
|
67
|
-
}));
|
|
68
|
-
}
|
|
69
|
-
initialize(root) {
|
|
70
|
-
this.root = root.nativeElement;
|
|
71
|
-
this.side = this.root.getElementsByClassName('gantt-side')[0];
|
|
72
|
-
this.container = this.root.getElementsByClassName('gantt-container')[0];
|
|
73
|
-
this.sideContainer = this.root.getElementsByClassName('gantt-side-container')[0];
|
|
74
|
-
this.mainContainer = this.root.getElementsByClassName('gantt-main-container')[0];
|
|
75
|
-
this.mainScrollbar = this.root.getElementsByClassName('gantt-main-scrollbar')[0];
|
|
76
|
-
this.mainFooter = this.root.getElementsByClassName('gantt-container-footer')[0];
|
|
77
|
-
this.verticalScrollContainer = this.root.getElementsByClassName('gantt-scroll-container')[0];
|
|
78
|
-
const mainItems = this.mainContainer.getElementsByClassName('gantt-main-items')[0];
|
|
79
|
-
const mainGroups = this.mainContainer.getElementsByClassName('gantt-main-groups')[0];
|
|
80
|
-
this.mainItems = mainItems || mainGroups;
|
|
81
|
-
this.calendarHeader = this.root.getElementsByClassName('gantt-calendar-header')[0];
|
|
82
|
-
this.calendarOverlay = this.root.getElementsByClassName('gantt-calendar-grid')[0];
|
|
83
|
-
this.monitorScrollChange();
|
|
84
|
-
this.disableBrowserWheelEvent();
|
|
85
|
-
}
|
|
86
|
-
/**
|
|
87
|
-
* @returns An observable that will emit outside the Angular zone. Note, consumers should re-enter the Angular zone
|
|
88
|
-
* to run the change detection if needed.
|
|
89
|
-
*/
|
|
90
|
-
getViewerScroll(options) {
|
|
91
|
-
const scrollObservers = [fromEvent(this.mainContainer, 'scroll', options)];
|
|
92
|
-
this.mainFooter && scrollObservers.push(fromEvent(this.mainFooter, 'scroll', options));
|
|
93
|
-
this.mainScrollbar && scrollObservers.push(fromEvent(this.mainScrollbar, 'scroll', options));
|
|
94
|
-
return new Observable((subscriber) => this.ngZone.runOutsideAngular(() => merge(...scrollObservers)
|
|
95
|
-
.pipe(map(() => this.mainContainer.scrollLeft), pairwise(), map(([previous, current]) => {
|
|
96
|
-
this.setVisibleRangeX();
|
|
97
|
-
const event = {
|
|
98
|
-
target: this.mainContainer,
|
|
99
|
-
direction: ScrollDirection.NONE
|
|
100
|
-
};
|
|
101
|
-
if (current - previous < 0) {
|
|
102
|
-
if (this.mainContainer.scrollLeft < scrollThreshold && this.mainContainer.scrollLeft > 0) {
|
|
103
|
-
event.direction = ScrollDirection.LEFT;
|
|
104
|
-
}
|
|
105
|
-
}
|
|
106
|
-
if (current - previous > 0) {
|
|
107
|
-
if (this.mainContainer.scrollWidth - this.mainContainer.clientWidth - this.mainContainer.scrollLeft <
|
|
108
|
-
scrollThreshold) {
|
|
109
|
-
event.direction = ScrollDirection.RIGHT;
|
|
110
|
-
}
|
|
111
|
-
}
|
|
112
|
-
return event;
|
|
113
|
-
}))
|
|
114
|
-
.subscribe(subscriber)));
|
|
115
|
-
}
|
|
116
|
-
getResize() {
|
|
117
|
-
return isPlatformServer(this.platformId) ? EMPTY : fromEvent(window, 'resize').pipe(auditTime(150));
|
|
118
|
-
}
|
|
119
|
-
getResizeByElement(element) {
|
|
120
|
-
return new Observable((observer) => {
|
|
121
|
-
const resizeObserver = new ResizeObserver(() => {
|
|
122
|
-
observer.next();
|
|
123
|
-
});
|
|
124
|
-
resizeObserver.observe(element);
|
|
125
|
-
});
|
|
126
|
-
}
|
|
127
|
-
scrollMainContainer(left) {
|
|
128
|
-
if (isNumber(left)) {
|
|
129
|
-
const scrollLeft = left - this.mainContainer.clientWidth / 2;
|
|
130
|
-
this.mainContainer.scrollLeft = scrollLeft > scrollThreshold ? scrollLeft : 0;
|
|
131
|
-
this.calendarHeader.scrollLeft = this.mainContainer.scrollLeft;
|
|
132
|
-
this.calendarOverlay.scrollLeft = this.mainContainer.scrollLeft;
|
|
133
|
-
this.mainScrollbar && (this.mainScrollbar.scrollLeft = this.mainContainer.scrollLeft);
|
|
134
|
-
this.mainFooter && (this.mainFooter.scrollLeft = this.mainContainer.scrollLeft);
|
|
135
|
-
}
|
|
136
|
-
}
|
|
137
|
-
setVisibleRangeX() {
|
|
138
|
-
this.visibleRangeX.set({
|
|
139
|
-
min: this.mainContainer.scrollLeft,
|
|
140
|
-
max: this.mainContainer.scrollLeft + this.mainContainer.clientWidth
|
|
141
|
-
});
|
|
142
|
-
}
|
|
143
|
-
ngOnDestroy() {
|
|
144
|
-
this.unsubscribe$.next();
|
|
145
|
-
this.unsubscribe$.complete();
|
|
146
|
-
}
|
|
147
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: GanttDomService, deps: [{ token: i0.NgZone }, { token: PLATFORM_ID }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
148
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: GanttDomService }); }
|
|
149
|
-
}
|
|
150
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: GanttDomService, decorators: [{
|
|
151
|
-
type: Injectable
|
|
152
|
-
}], ctorParameters: () => [{ type: i0.NgZone }, { type: undefined, decorators: [{
|
|
153
|
-
type: Inject,
|
|
154
|
-
args: [PLATFORM_ID]
|
|
155
|
-
}] }] });
|
|
156
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2FudHQtZG9tLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9wYWNrYWdlcy9nYW50dC9zcmMvZ2FudHQtZG9tLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDbkQsT0FBTyxFQUFFLFVBQVUsRUFBeUIsTUFBTSxFQUFFLFdBQVcsRUFBMEIsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3ZILE9BQU8sRUFBRSxTQUFTLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsVUFBVSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ3BFLE9BQU8sRUFBRSxRQUFRLEVBQUUsR0FBRyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNyRSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDM0MsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sMkJBQTJCLENBQUM7O0FBRW5FLE1BQU0sZUFBZSxHQUFHLEVBQUUsQ0FBQztBQUUzQixNQUFNLENBQU4sSUFBWSxlQUlYO0FBSkQsV0FBWSxlQUFlO0lBQ3ZCLHFEQUFJLENBQUE7SUFDSixxREFBSSxDQUFBO0lBQ0osdURBQUssQ0FBQTtBQUNULENBQUMsRUFKVyxlQUFlLEtBQWYsZUFBZSxRQUkxQjtBQVFELE1BQU0sT0FBTyxlQUFlO0lBNkJ4QixZQUFvQixNQUFjLEVBQStCLFVBQWtCO1FBQS9ELFdBQU0sR0FBTixNQUFNLENBQVE7UUFBK0IsZUFBVSxHQUFWLFVBQVUsQ0FBUTtRQVI1RSxrQkFBYSxHQUFpRCxNQUFNLENBQUMsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBTXhGLGlCQUFZLEdBQUcsSUFBSSxPQUFPLEVBQVEsQ0FBQztJQUUyQyxDQUFDO0lBRS9F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QUFDLENBQUM7UUFDcEYsQ0FBQztJQUNMLENBQUM7SUFFRCxnQkFBZ0I7UUFDWixJQUFJLENBQUMsYUFBYSxDQUFDLEdBQUcsQ0FBQztZQUNuQixHQUFHLEVBQUUsSUFBSSxDQUFDLGFBQWEsQ0FBQyxVQUFVO1lBQ2xDLEdBQUcsRUFBRSxJQUFJLENBQUMsYUFBYSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLFdBQVc7U0FDdEUsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUVELFdBQVc7UUFDUCxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksRUFBRSxDQUFDO1FBQ3pCLElBQUksQ0FBQyxZQUFZLENBQUMsUUFBUSxFQUFFLENBQUM7SUFDakMsQ0FBQzs4R0F4TFEsZUFBZSx3Q0E2Qm9CLFdBQVc7a0hBN0I5QyxlQUFlOzsyRkFBZixlQUFlO2tCQUQzQixVQUFVOzswQkE4QjhCLE1BQU07MkJBQUMsV0FBVyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGlzUGxhdGZvcm1TZXJ2ZXIgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgSW5qZWN0YWJsZSwgRWxlbWVudFJlZiwgT25EZXN0cm95LCBJbmplY3QsIFBMQVRGT1JNX0lELCBOZ1pvbmUsIFdyaXRhYmxlU2lnbmFsLCBzaWduYWwgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IGZyb21FdmVudCwgU3ViamVjdCwgbWVyZ2UsIEVNUFRZLCBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBwYWlyd2lzZSwgbWFwLCBhdWRpdFRpbWUsIHRha2VVbnRpbCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IGlzTnVtYmVyIH0gZnJvbSAnLi91dGlscy9oZWxwZXJzJztcbmltcG9ydCB7IHBhc3NpdmVMaXN0ZW5lck9wdGlvbnMgfSBmcm9tICcuL3V0aWxzL3Bhc3NpdmUtbGlzdGVuZXJzJztcblxuY29uc3Qgc2Nyb2xsVGhyZXNob2xkID0gNTA7XG5cbmV4cG9ydCBlbnVtIFNjcm9sbERpcmVjdGlvbiB7XG4gICAgTk9ORSxcbiAgICBMRUZULFxuICAgIFJJR0hUXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgU2Nyb2xsRXZlbnQge1xuICAgIHRhcmdldDogRWxlbWVudDtcbiAgICBkaXJlY3Rpb246IFNjcm9sbERpcmVjdGlvbjtcbn1cblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIEdhbnR0RG9tU2VydmljZSBpbXBsZW1lbnRzIE9uRGVzdHJveSB7XG4gICAgcHVibGljIHJvb3Q6IEVsZW1lbnQ7XG5cbiAgICBwdWJsaWMgc2lkZTogRWxlbWVudDtcblxuICAgIHB1YmxpYyBjb250YWluZXI6IEVsZW1lbnQ7XG5cbiAgICBwdWJsaWMgc2lkZUNvbnRhaW5lcjogRWxlbWVudDtcblxuICAgIHB1YmxpYyBtYWluQ29udGFpbmVyOiBFbGVtZW50O1xuXG4gICAgcHVibGljIHZlcnRpY2FsU2Nyb2xsQ29udGFpbmVyOiBFbGVtZW50O1xuXG4gICAgcHVibGljIGNhbGVuZGFySGVhZGVyOiBFbGVtZW50O1xuXG4gICAgcHVibGljIG1haW5JdGVtczogRWxlbWVudDtcblxuICAgIHB1YmxpYyBjYWxlbmRhck92ZXJsYXk6IEVsZW1lbnQ7XG5cbiAgICBwdWJsaWMgbGlua3NPdmVybGF5OiBFbGVtZW50O1xuXG4gICAgcHVibGljIHZpc2libGVSYW5nZVg6IFdyaXRhYmxlU2lnbmFsPHsgbWluOiBudW1iZXI7IG1heDogbnVtYmVyIH0+ID0gc2lnbmFsKHsgbWluOiAwLCBtYXg6IDAgfSk7XG5cbiAgICBwcml2YXRlIG1haW5Gb290ZXI6IEVsZW1lbnQ7XG5cbiAgICBwcml2YXRlIG1haW5TY3JvbGxiYXI6IEVsZW1lbnQ7XG5cbiAgICBwcml2YXRlIHVuc3Vic2NyaWJlJCA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG5cbiAgICBjb25zdHJ1Y3Rvcihwcml2YXRlIG5nWm9uZTogTmdab25lLCBASW5qZWN0KFBMQVRGT1JNX0lEKSBwcml2YXRlIHBsYXRmb3JtSWQ6IHN0cmluZykge31cblxuICAgIHByaXZhdGUgbW9uaXRvclNjcm9sbENoYW5nZSgpIHtcbiAgICAgICAgY29uc3Qgc2Nyb2xsT2JzZXJ2ZXJzID0gW1xuICAgICAgICAgICAgZnJvbUV2ZW50KHRoaXMubWFpbkNvbnRhaW5lciwgJ3Njcm9sbCcsIHBhc3NpdmVMaXN0ZW5lck9wdGlvbnMpLFxuICAgICAgICAgICAgZnJvbUV2ZW50KHRoaXMuc2lkZUNvbnRhaW5lciwgJ3Njcm9sbCcsIHBhc3NpdmVMaXN0ZW5lck9wdGlvbnMpXG4gICAgICAgIF07XG5cbiAgICAgICAgdGhpcy5tYWluRm9vdGVyICYmIHNjcm9sbE9ic2VydmVycy5wdXNoKGZyb21FdmVudCh0aGlzLm1haW5Gb290ZXIsICdzY3JvbGwnLCBwYXNzaXZlTGlzdGVuZXJPcHRpb25zKSk7XG4gICAgICAgIHRoaXMubWFpblNjcm9sbGJhciAmJiBzY3JvbGxPYnNlcnZlcnMucHVzaChmcm9tRXZlbnQodGhpcy5tYWluU2Nyb2xsYmFyLCAnc2Nyb2xsJywgcGFzc2l2ZUxpc3RlbmVyT3B0aW9ucykpO1xuXG4gICAgICAgIHRoaXMubmdab25lLnJ1bk91dHNpZGVBbmd1bGFyKCgpID0+XG4gICAgICAgICAgICBtZXJnZSguLi5zY3JvbGxPYnNlcnZlcnMpXG4gICAgICAgICAgICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMudW5zdWJzY3JpYmUkKSlcbiAgICAgICAgICAgICAgICAuc3Vic2NyaWJlKChldmVudCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnN5bmNTY3JvbGwoZXZlbnQpO1xuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzeW5jU2Nyb2xsKGV2ZW50OiBFdmVudCkge1xuICAgICAgICBjb25zdCB0YXJnZXQgPSBldmVudC5jdXJyZW50VGFyZ2V0IGFzIEhUTUxFbGVtZW50O1xuICAgICAgICBjb25zdCBjbGFzc0xpc3QgPSB0YXJnZXQuY2xhc3NMaXN0O1xuXG4gICAgICAgIGlmICghY2xhc3NMaXN0LmNvbnRhaW5zKCdnYW50dC1zaWRlLWNvbnRhaW5lcicpKSB7XG4gICAgICAgICAgICB0aGlzLm1haW5Db250YWluZXIuc2Nyb2xsTGVmdCA9IHRhcmdldC5zY3JvbGxMZWZ0O1xuICAgICAgICAgICAgdGhpcy5jYWxlbmRhckhlYWRlci5zY3JvbGxMZWZ0ID0gdGFyZ2V0LnNjcm9sbExlZnQ7XG4gICAgICAgICAgICB0aGlzLmNhbGVuZGFyT3ZlcmxheS5zY3JvbGxMZWZ0ID0gdGFyZ2V0LnNjcm9sbExlZnQ7XG4gICAgICAgICAgICB0aGlzLm1haW5TY3JvbGxiYXIgJiYgKHRoaXMubWFpblNjcm9sbGJhci5zY3JvbGxMZWZ0ID0gdGFyZ2V0LnNjcm9sbExlZnQpO1xuICAgICAgICAgICAgdGhpcy5tYWluRm9vdGVyICYmICh0aGlzLm1haW5Gb290ZXIuc2Nyb2xsTGVmdCA9IHRhcmdldC5zY3JvbGxMZWZ0KTtcbiAgICAgICAgICAgIGlmIChjbGFzc0xpc3QuY29udGFpbnMoJ2dhbnR0LW1haW4tY29udGFpbmVyJykpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnNpZGVDb250YWluZXIuc2Nyb2xsVG9wID0gdGFyZ2V0LnNjcm9sbFRvcDtcbiAgICAgICAgICAgICAgICB0aGlzLm1haW5Db250YWluZXIuc2Nyb2xsVG9wID0gdGFyZ2V0LnNjcm9sbFRvcDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuc2lkZUNvbnRhaW5lci5zY3JvbGxUb3AgPSB0YXJnZXQuc2Nyb2xsVG9wO1xuICAgICAgICAgICAgdGhpcy5tYWluQ29udGFpbmVyLnNjcm9sbFRvcCA9IHRhcmdldC5zY3JvbGxUb3A7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIGRpc2FibGVCcm93c2VyV2hlZWxFdmVudCgpIHtcbiAgICAgICAgY29uc3QgY29udGFpbmVyID0gdGhpcy5tYWluQ29udGFpbmVyIGFzIEhUTUxFbGVtZW50O1xuICAgICAgICB0aGlzLm5nWm9uZS5ydW5PdXRzaWRlQW5ndWxhcigoKSA9PlxuICAgICAgICAgICAgZnJvbUV2ZW50KGNvbnRhaW5lciwgJ3doZWVsJylcbiAgICAgICAgICAgICAgICAucGlwZSh0YWtlVW50aWwodGhpcy51bnN1YnNjcmliZSQpKVxuICAgICAgICAgICAgICAgIC5zdWJzY3JpYmUoKGV2ZW50OiBXaGVlbEV2ZW50KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGRlbHRhID0gZXZlbnQuZGVsdGFYO1xuICAgICAgICAgICAgICAgICAgICBpZiAoIWRlbHRhKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICAgICAgICAgICAgKGNvbnRhaW5lci5zY3JvbGxMZWZ0ICsgY29udGFpbmVyLm9mZnNldFdpZHRoID09PSBjb250YWluZXIuc2Nyb2xsV2lkdGggJiYgZGVsdGEgPiAwKSB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgKGNvbnRhaW5lci5zY3JvbGxMZWZ0ID09PSAwICYmIGRlbHRhIDwgMClcbiAgICAgICAgICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBpbml0aWFsaXplKHJvb3Q6IEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+KSB7XG4gICAgICAgIHRoaXMucm9vdCA9IHJvb3QubmF0aXZlRWxlbWVudDtcbiAgICAgICAgdGhpcy5zaWRlID0gdGhpcy5yb290LmdldEVsZW1lbnRzQnlDbGFzc05hbWUoJ2dhbnR0LXNpZGUnKVswXTtcbiAgICAgICAgdGhpcy5jb250YWluZXIgPSB0aGlzLnJvb3QuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgnZ2FudHQtY29udGFpbmVyJylbMF07XG4gICAgICAgIHRoaXMuc2lkZUNvbnRhaW5lciA9IHRoaXMucm9vdC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCdnYW50dC1zaWRlLWNvbnRhaW5lcicpWzBdO1xuICAgICAgICB0aGlzLm1haW5Db250YWluZXIgPSB0aGlzLnJvb3QuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgnZ2FudHQtbWFpbi1jb250YWluZXInKVswXTtcbiAgICAgICAgdGhpcy5tYWluU2Nyb2xsYmFyID0gdGhpcy5yb290LmdldEVsZW1lbnRzQnlDbGFzc05hbWUoJ2dhbnR0LW1haW4tc2Nyb2xsYmFyJylbMF07XG4gICAgICAgIHRoaXMubWFpbkZvb3RlciA9IHRoaXMucm9vdC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCdnYW50dC1jb250YWluZXItZm9vdGVyJylbMF07XG4gICAgICAgIHRoaXMudmVydGljYWxTY3JvbGxDb250YWluZXIgPSB0aGlzLnJvb3QuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgnZ2FudHQtc2Nyb2xsLWNvbnRhaW5lcicpWzBdO1xuICAgICAgICBjb25zdCBtYWluSXRlbXMgPSB0aGlzLm1haW5Db250YWluZXIuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgnZ2FudHQtbWFpbi1pdGVtcycpWzBdO1xuICAgICAgICBjb25zdCBtYWluR3JvdXBzID0gdGhpcy5tYWluQ29udGFpbmVyLmdldEVsZW1lbnRzQnlDbGFzc05hbWUoJ2dhbnR0LW1haW4tZ3JvdXBzJylbMF07XG4gICAgICAgIHRoaXMubWFpbkl0ZW1zID0gbWFpbkl0ZW1zIHx8IG1haW5Hcm91cHM7XG4gICAgICAgIHRoaXMuY2FsZW5kYXJIZWFkZXIgPSB0aGlzLnJvb3QuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgnZ2FudHQtY2FsZW5kYXItaGVhZGVyJylbMF07XG4gICAgICAgIHRoaXMuY2FsZW5kYXJPdmVybGF5ID0gdGhpcy5yb290LmdldEVsZW1lbnRzQnlDbGFzc05hbWUoJ2dhbnR0LWNhbGVuZGFyLWdyaWQnKVswXTtcblxuICAgICAgICB0aGlzLm1vbml0b3JTY3JvbGxDaGFuZ2UoKTtcbiAgICAgICAgdGhpcy5kaXNhYmxlQnJvd3NlcldoZWVsRXZlbnQoKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAcmV0dXJucyBBbiBvYnNlcnZhYmxlIHRoYXQgd2lsbCBlbWl0IG91dHNpZGUgdGhlIEFuZ3VsYXIgem9uZS4gTm90ZSwgY29uc3VtZXJzIHNob3VsZCByZS1lbnRlciB0aGUgQW5ndWxhciB6b25lXG4gICAgICogdG8gcnVuIHRoZSBjaGFuZ2UgZGV0ZWN0aW9uIGlmIG5lZWRlZC5cbiAgICAgKi9cbiAgICBnZXRWaWV3ZXJTY3JvbGwob3B0aW9ucz86IEFkZEV2ZW50TGlzdGVuZXJPcHRpb25zKTogT2JzZXJ2YWJsZTxTY3JvbGxFdmVudD4ge1xuICAgICAgICBjb25zdCBzY3JvbGxPYnNlcnZlcnMgPSBbZnJvbUV2ZW50KHRoaXMubWFpbkNvbnRhaW5lciwgJ3Njcm9sbCcsIG9wdGlvbnMpXTtcbiAgICAgICAgdGhpcy5tYWluRm9vdGVyICYmIHNjcm9sbE9ic2VydmVycy5wdXNoKGZyb21FdmVudCh0aGlzLm1haW5Gb290ZXIsICdzY3JvbGwnLCBvcHRpb25zKSk7XG4gICAgICAgIHRoaXMubWFpblNjcm9sbGJhciAmJiBzY3JvbGxPYnNlcnZlcnMucHVzaChmcm9tRXZlbnQodGhpcy5tYWluU2Nyb2xsYmFyLCAnc2Nyb2xsJywgb3B0aW9ucykpO1xuXG4gICAgICAgIHJldHVybiBuZXcgT2JzZXJ2YWJsZTxTY3JvbGxFdmVudD4oKHN1YnNjcmliZXIpID0+XG4gICAgICAgICAgICB0aGlzLm5nWm9uZS5ydW5PdXRzaWRlQW5ndWxhcigoKSA9PlxuICAgICAgICAgICAgICAgIG1lcmdlKC4uLnNjcm9sbE9ic2VydmVycylcbiAgICAgICAgICAgICAgICAgICAgLnBpcGUoXG4gICAgICAgICAgICAgICAgICAgICAgICBtYXAoKCkgPT4gdGhpcy5tYWluQ29udGFpbmVyLnNjcm9sbExlZnQpLFxuICAgICAgICAgICAgICAgICAgICAgICAgcGFpcndpc2UoKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIG1hcCgoW3ByZXZpb3VzLCBjdXJyZW50XSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2V0VmlzaWJsZVJhbmdlWCgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGV2ZW50OiBTY3JvbGxFdmVudCA9IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFyZ2V0OiB0aGlzLm1haW5Db250YWluZXIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpcmVjdGlvbjogU2Nyb2xsRGlyZWN0aW9uLk5PTkVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChjdXJyZW50IC0gcHJldmlvdXMgPCAwKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLm1haW5Db250YWluZXIuc2Nyb2xsTGVmdCA8IHNjcm9sbFRocmVzaG9sZCAmJiB0aGlzLm1haW5Db250YWluZXIuc2Nyb2xsTGVmdCA+IDApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV2ZW50LmRpcmVjdGlvbiA9IFNjcm9sbERpcmVjdGlvbi5MRUZUO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChjdXJyZW50IC0gcHJldmlvdXMgPiAwKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubWFpbkNvbnRhaW5lci5zY3JvbGxXaWR0aCAtIHRoaXMubWFpbkNvbnRhaW5lci5jbGllbnRXaWR0aCAtIHRoaXMubWFpbkNvbnRhaW5lci5zY3JvbGxMZWZ0IDxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNjcm9sbFRocmVzaG9sZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV2ZW50LmRpcmVjdGlvbiA9IFNjcm9sbERpcmVjdGlvbi5SSUdIVDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZXZlbnQ7XG4gICAgICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgIC5zdWJzY3JpYmUoc3Vic2NyaWJlcilcbiAgICAgICAgICAgIClcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBnZXRSZXNpemUoKTogT2JzZXJ2YWJsZTxFdmVudD4ge1xuICAgICAgICByZXR1cm4gaXNQbGF0Zm9ybVNlcnZlcih0aGlzLnBsYXRmb3JtSWQpID8gRU1QVFkgOiBmcm9tRXZlbnQod2luZG93LCAncmVzaXplJykucGlwZShhdWRpdFRpbWUoMTUwKSk7XG4gICAgfVxuXG4gICAgZ2V0UmVzaXplQnlFbGVtZW50KGVsZW1lbnQ6IEVsZW1lbnQpIHtcbiAgICAgICAgcmV0dXJuIG5ldyBPYnNlcnZhYmxlKChvYnNlcnZlcikgPT4ge1xuICAgICAgICAgICAgY29uc3QgcmVzaXplT2JzZXJ2ZXIgPSBuZXcgUmVzaXplT2JzZXJ2ZXIoKCkgPT4ge1xuICAgICAgICAgICAgICAgIG9ic2VydmVyLm5leHQoKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgcmVzaXplT2JzZXJ2ZXIub2JzZXJ2ZShlbGVtZW50KTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgc2Nyb2xsTWFpbkNvbnRhaW5lcihsZWZ0OiBudW1iZXIpIHtcbiAgICAgICAgaWYgKGlzTnVtYmVyKGxlZnQpKSB7XG4gICAgICAgICAgICBjb25zdCBzY3JvbGxMZWZ0ID0gbGVmdCAtIHRoaXMubWFpbkNvbnRhaW5lci5jbGllbnRXaWR0aCAvIDI7XG4gICAgICAgICAgICB0aGlzLm1haW5Db250YWluZXIuc2Nyb2xsTGVmdCA9IHNjcm9sbExlZnQgPiBzY3JvbGxUaHJlc2hvbGQgPyBzY3JvbGxMZWZ0IDogMDtcbiAgICAgICAgICAgIHRoaXMuY2FsZW5kYXJIZWFkZXIuc2Nyb2xsTGVmdCA9IHRoaXMubWFpbkNvbnRhaW5lci5zY3JvbGxMZWZ0O1xuICAgICAgICAgICAgdGhpcy5jYWxlbmRhck92ZXJsYXkuc2Nyb2xsTGVmdCA9IHRoaXMubWFpbkNvbnRhaW5lci5zY3JvbGxMZWZ0O1xuICAgICAgICAgICAgdGhpcy5tYWluU2Nyb2xsYmFyICYmICh0aGlzLm1haW5TY3JvbGxiYXIuc2Nyb2xsTGVmdCA9IHRoaXMubWFpbkNvbnRhaW5lci5zY3JvbGxMZWZ0KTtcbiAgICAgICAgICAgIHRoaXMubWFpbkZvb3RlciAmJiAodGhpcy5tYWluRm9vdGVyLnNjcm9sbExlZnQgPSB0aGlzLm1haW5Db250YWluZXIuc2Nyb2xsTGVmdCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBzZXRWaXNpYmxlUmFuZ2VYKCkge1xuICAgICAgICB0aGlzLnZpc2libGVSYW5nZVguc2V0KHtcbiAgICAgICAgICAgIG1pbjogdGhpcy5tYWluQ29udGFpbmVyLnNjcm9sbExlZnQsXG4gICAgICAgICAgICBtYXg6IHRoaXMubWFpbkNvbnRhaW5lci5zY3JvbGxMZWZ0ICsgdGhpcy5tYWluQ29udGFpbmVyLmNsaWVudFdpZHRoXG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIG5nT25EZXN0cm95KCkge1xuICAgICAgICB0aGlzLnVuc3Vic2NyaWJlJC5uZXh0KCk7XG4gICAgICAgIHRoaXMudW5zdWJzY3JpYmUkLmNvbXBsZXRlKCk7XG4gICAgfVxufVxuIl19
|
|
@@ -1,78 +0,0 @@
|
|
|
1
|
-
import { Injectable, EventEmitter, Inject } from '@angular/core';
|
|
2
|
-
import { GanttLinkType } from './class';
|
|
3
|
-
import { GANTT_UPPER_TOKEN } from './gantt-upper';
|
|
4
|
-
import * as i0 from "@angular/core";
|
|
5
|
-
import * as i1 from "./gantt-upper";
|
|
6
|
-
function getDependencyType(path, dependencyTypes) {
|
|
7
|
-
if (dependencyTypes.includes(GanttLinkType.ss) && path.from.pos === InBarPosition.start && path.to.pos === InBarPosition.start) {
|
|
8
|
-
return GanttLinkType.ss;
|
|
9
|
-
}
|
|
10
|
-
if (dependencyTypes.includes(GanttLinkType.ff) && path.from.pos === InBarPosition.finish && path.to.pos === InBarPosition.finish) {
|
|
11
|
-
return GanttLinkType.ff;
|
|
12
|
-
}
|
|
13
|
-
if (dependencyTypes.includes(GanttLinkType.sf) && path.from.pos === InBarPosition.start && path.to.pos === InBarPosition.finish) {
|
|
14
|
-
return GanttLinkType.sf;
|
|
15
|
-
}
|
|
16
|
-
return GanttLinkType.fs;
|
|
17
|
-
}
|
|
18
|
-
export var InBarPosition;
|
|
19
|
-
(function (InBarPosition) {
|
|
20
|
-
InBarPosition["start"] = "start";
|
|
21
|
-
InBarPosition["finish"] = "finish";
|
|
22
|
-
})(InBarPosition || (InBarPosition = {}));
|
|
23
|
-
export class GanttDragContainer {
|
|
24
|
-
constructor(ganttUpper) {
|
|
25
|
-
this.ganttUpper = ganttUpper;
|
|
26
|
-
this.dragStarted = new EventEmitter();
|
|
27
|
-
this.dragMoved = new EventEmitter();
|
|
28
|
-
this.dragEnded = new EventEmitter();
|
|
29
|
-
this.linkDragStarted = new EventEmitter();
|
|
30
|
-
this.linkDragEntered = new EventEmitter();
|
|
31
|
-
this.linkDragEnded = new EventEmitter();
|
|
32
|
-
this.linkDragPath = { from: null, to: null };
|
|
33
|
-
}
|
|
34
|
-
emitLinkDragStarted(from) {
|
|
35
|
-
this.linkDraggingId = from.item.id;
|
|
36
|
-
this.linkDragPath.from = from;
|
|
37
|
-
this.linkDragStarted.emit({
|
|
38
|
-
source: from.item.origin,
|
|
39
|
-
target: null
|
|
40
|
-
});
|
|
41
|
-
}
|
|
42
|
-
emitLinkDragEntered(to) {
|
|
43
|
-
this.linkDragPath.to = to;
|
|
44
|
-
this.linkDragEntered.emit({
|
|
45
|
-
source: this.linkDragPath.from.item.origin,
|
|
46
|
-
target: to.item.origin
|
|
47
|
-
});
|
|
48
|
-
}
|
|
49
|
-
emitLinkDragLeaved() {
|
|
50
|
-
this.linkDragPath.to = null;
|
|
51
|
-
}
|
|
52
|
-
emitLinkDragEnded(to) {
|
|
53
|
-
if (to) {
|
|
54
|
-
this.linkDragPath.to = to;
|
|
55
|
-
const dependencyType = getDependencyType(this.linkDragPath, this.ganttUpper.linkOptions?.dependencyTypes);
|
|
56
|
-
this.linkDragPath.from.item.addLink({
|
|
57
|
-
link: this.linkDragPath.to.item.id,
|
|
58
|
-
type: dependencyType
|
|
59
|
-
});
|
|
60
|
-
this.linkDragEnded.emit({
|
|
61
|
-
source: this.linkDragPath.from.item.origin,
|
|
62
|
-
target: this.linkDragPath.to.item.origin,
|
|
63
|
-
type: dependencyType
|
|
64
|
-
});
|
|
65
|
-
}
|
|
66
|
-
this.linkDraggingId = null;
|
|
67
|
-
this.linkDragPath = { from: null, to: null };
|
|
68
|
-
}
|
|
69
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: GanttDragContainer, deps: [{ token: GANTT_UPPER_TOKEN }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
70
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: GanttDragContainer }); }
|
|
71
|
-
}
|
|
72
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: GanttDragContainer, decorators: [{
|
|
73
|
-
type: Injectable
|
|
74
|
-
}], ctorParameters: () => [{ type: i1.GanttUpper, decorators: [{
|
|
75
|
-
type: Inject,
|
|
76
|
-
args: [GANTT_UPPER_TOKEN]
|
|
77
|
-
}] }] });
|
|
78
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2FudHQtZHJhZy1jb250YWluZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9wYWNrYWdlcy9nYW50dC9zcmMvZ2FudHQtZHJhZy1jb250YWluZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxZQUFZLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ2pFLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxTQUFTLENBQUM7QUFHeEMsT0FBTyxFQUFjLGlCQUFpQixFQUFFLE1BQU0sZUFBZSxDQUFDOzs7QUFFOUQsU0FBUyxpQkFBaUIsQ0FBQyxJQUFrQixFQUFFLGVBQWdDO0lBQzNFLElBQUksZUFBZSxDQUFDLFFBQVEsQ0FBQyxhQUFhLENBQUMsRUFBRSxDQUFDLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLEtBQUssYUFBYSxDQUFDLEtBQUssSUFBSSxJQUFJLENBQUMsRUFBRSxDQUFDLEdBQUcsS0FBSyxhQUFhLENBQUMsS0FBSyxFQUFFLENBQUM7UUFDN0gsT0FBTyxhQUFhLENBQUMsRUFBRSxDQUFDO0lBQzVCLENBQUM7SUFDRCxJQUFJLGVBQWUsQ0FBQyxRQUFRLENBQUMsYUFBYSxDQUFDLEVBQUUsQ0FBQyxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxLQUFLLGFBQWEsQ0FBQyxNQUFNLElBQUksSUFBSSxDQUFDLEVBQUUsQ0FBQyxHQUFHLEtBQUssYUFBYSxDQUFDLE1BQU0sRUFBRSxDQUFDO1FBQy9ILE9BQU8sYUFBYSxDQUFDLEVBQUUsQ0FBQztJQUM1QixDQUFDO0lBQ0QsSUFBSSxlQUFlLENBQUMsUUFBUSxDQUFDLGFBQWEsQ0FBQyxFQUFFLENBQUMsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsS0FBSyxhQUFhLENBQUMsS0FBSyxJQUFJLElBQUksQ0FBQyxFQUFFLENBQUMsR0FBRyxLQUFLLGFBQWEsQ0FBQyxNQUFNLEVBQUUsQ0FB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RFEsa0JBQWtCLGtCQWlCUCxpQkFBaUI7a0hBakI1QixrQkFBa0I7OzJGQUFsQixrQkFBa0I7a0JBRDlCLFVBQVU7OzBCQWtCTSxNQUFNOzJCQUFDLGlCQUFpQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUsIEV2ZW50RW1pdHRlciwgSW5qZWN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBHYW50dExpbmtUeXBlIH0gZnJvbSAnLi9jbGFzcyc7XG5pbXBvcnQgeyBHYW50dERyYWdFdmVudCwgR2FudHRMaW5rRHJhZ0V2ZW50IH0gZnJvbSAnLi9jbGFzcy9ldmVudCc7XG5pbXBvcnQgeyBHYW50dEl0ZW1JbnRlcm5hbCB9IGZyb20gJy4vY2xhc3MvaXRlbSc7XG5pbXBvcnQgeyBHYW50dFVwcGVyLCBHQU5UVF9VUFBFUl9UT0tFTiB9IGZyb20gJy4vZ2FudHQtdXBwZXInO1xuXG5mdW5jdGlvbiBnZXREZXBlbmRlbmN5VHlwZShwYXRoOiBMaW5rRHJhZ1BhdGgsIGRlcGVuZGVuY3lUeXBlczogR2FudHRMaW5rVHlwZVtdKTogR2FudHRMaW5rVHlwZSB7XG4gICAgaWYgKGRlcGVuZGVuY3lUeXBlcy5pbmNsdWRlcyhHYW50dExpbmtUeXBlLnNzKSAmJiBwYXRoLmZyb20ucG9zID09PSBJbkJhclBvc2l0aW9uLnN0YXJ0ICYmIHBhdGgudG8ucG9zID09PSBJbkJhclBvc2l0aW9uLnN0YXJ0KSB7XG4gICAgICAgIHJldHVybiBHYW50dExpbmtUeXBlLnNzO1xuICAgIH1cbiAgICBpZiAoZGVwZW5kZW5jeVR5cGVzLmluY2x1ZGVzKEdhbnR0TGlua1R5cGUuZmYpICYmIHBhdGguZnJvbS5wb3MgPT09IEluQmFyUG9zaXRpb24uZmluaXNoICYmIHBhdGgudG8ucG9zID09PSBJbkJhclBvc2l0aW9uLmZpbmlzaCkge1xuICAgICAgICByZXR1cm4gR2FudHRMaW5rVHlwZS5mZjtcbiAgICB9XG4gICAgaWYgKGRlcGVuZGVuY3lUeXBlcy5pbmNsdWRlcyhHYW50dExpbmtUeXBlLnNmKSAmJiBwYXRoLmZyb20ucG9zID09PSBJbkJhclBvc2l0aW9uLnN0YXJ0ICYmIHBhdGgudG8ucG9zID09PSBJbkJhclBvc2l0aW9uLmZpbmlzaCkge1xuICAgICAgICByZXR1cm4gR2FudHRMaW5rVHlwZS5zZjtcbiAgICB9XG4gICAgcmV0dXJuIEdhbnR0TGlua1R5cGUuZnM7XG59XG5cbmV4cG9ydCBlbnVtIEluQmFyUG9zaXRpb24ge1xuICAgIHN0YXJ0ID0gJ3N0YXJ0JyxcbiAgICBmaW5pc2ggPSAnZmluaXNoJ1xufVxuXG5leHBvcnQgdHlwZSBMaW5rRHJhZ1Bvc2l0aW9uID0ge1xuICAgIGVsZW1lbnQ6IEhUTUxFbGVtZW50O1xuICAgIGl0ZW06IEdhbnR0SXRlbUludGVybmFsO1xuICAgIHBvcz86IEluQmFyUG9zaXRpb247XG59O1xuXG5leHBvcnQgaW50ZXJmYWNlIExpbmtEcmFnUGF0aCB7XG4gICAgZnJvbT86IExpbmtEcmFnUG9zaXRpb247XG4gICAgdG8/OiBMaW5rRHJhZ1Bvc2l0aW9uO1xufVxuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgR2FudHREcmFnQ29udGFpbmVyIHtcbiAgICBkcmFnU3RhcnRlZCA9IG5ldyBFdmVudEVtaXR0ZXI8R2FudHREcmFnRXZlbnQ+KCk7XG5cbiAgICBkcmFnTW92ZWQgPSBuZXcgRXZlbnRFbWl0dGVyPEdhbnR0RHJhZ0V2ZW50PigpO1xuXG4gICAgZHJhZ0VuZGVkID0gbmV3IEV2ZW50RW1pdHRlcjxHYW50dERyYWdFdmVudD4oKTtcblxuICAgIGxpbmtEcmFnU3RhcnRlZCA9IG5ldyBFdmVudEVtaXR0ZXI8R2FudHRMaW5rRHJhZ0V2ZW50PigpO1xuXG4gICAgbGlua0RyYWdFbnRlcmVkID0gbmV3IEV2ZW50RW1pdHRlcjxHYW50dExpbmtEcmFnRXZlbnQ+KCk7XG5cbiAgICBsaW5rRHJhZ0VuZGVkID0gbmV3IEV2ZW50RW1pdHRlcjxHYW50dExpbmtEcmFnRXZlbnQ+KCk7XG5cbiAgICBsaW5rRHJhZ2dpbmdJZDogc3RyaW5nO1xuXG4gICAgbGlua0RyYWdQYXRoOiBMaW5rRHJhZ1BhdGggPSB7IGZyb206IG51bGwsIHRvOiBudWxsIH07XG5cbiAgICBjb25zdHJ1Y3RvcihASW5qZWN0KEdBTlRUX1VQUEVSX1RPS0VOKSBwdWJsaWMgZ2FudHRVcHBlcjogR2FudHRVcHBlcikge31cblxuICAgIGVtaXRMaW5rRHJhZ1N0YXJ0ZWQoZnJvbTogTGlua0RyYWdQb3NpdGlvbikge1xuICAgICAgICB0aGlzLmxpbmtEcmFnZ2luZ0lkID0gZnJvbS5pdGVtLmlkO1xuICAgICAgICB0aGlzLmxpbmtEcmFnUGF0aC5mcm9tID0gZnJvbTtcbiAgICAgICAgdGhpcy5saW5rRHJhZ1N0YXJ0ZWQuZW1pdCh7XG4gICAgICAgICAgICBzb3VyY2U6IGZyb20uaXRlbS5vcmlnaW4sXG4gICAgICAgICAgICB0YXJnZXQ6IG51bGxcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgZW1pdExpbmtEcmFnRW50ZXJlZCh0bzogTGlua0RyYWdQb3NpdGlvbikge1xuICAgICAgICB0aGlzLmxpbmtEcmFnUGF0aC50byA9IHRvO1xuICAgICAgICB0aGlzLmxpbmtEcmFnRW50ZXJlZC5lbWl0KHtcbiAgICAgICAgICAgIHNvdXJjZTogdGhpcy5saW5rRHJhZ1BhdGguZnJvbS5pdGVtLm9yaWdpbixcbiAgICAgICAgICAgIHRhcmdldDogdG8uaXRlbS5vcmlnaW5cbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgZW1pdExpbmtEcmFnTGVhdmVkKCkge1xuICAgICAgICB0aGlzLmxpbmtEcmFnUGF0aC50byA9IG51bGw7XG4gICAgfVxuXG4gICAgZW1pdExpbmtEcmFnRW5kZWQodG8/OiBMaW5rRHJhZ1Bvc2l0aW9uKSB7XG4gICAgICAgIGlmICh0bykge1xuICAgICAgICAgICAgdGhpcy5saW5rRHJhZ1BhdGgudG8gPSB0bztcbiAgICAgICAgICAgIGNvbnN0IGRlcGVuZGVuY3lUeXBlID0gZ2V0RGVwZW5kZW5jeVR5cGUodGhpcy5saW5rRHJhZ1BhdGgsIHRoaXMuZ2FudHRVcHBlci5saW5rT3B0aW9ucz8uZGVwZW5kZW5jeVR5cGVzKTtcbiAgICAgICAgICAgIHRoaXMubGlua0RyYWdQYXRoLmZyb20uaXRlbS5hZGRMaW5rKHtcbiAgICAgICAgICAgICAgICBsaW5rOiB0aGlzLmxpbmtEcmFnUGF0aC50by5pdGVtLmlkLFxuICAgICAgICAgICAgICAgIHR5cGU6IGRlcGVuZGVuY3lUeXBlXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIHRoaXMubGlua0RyYWdFbmRlZC5lbWl0KHtcbiAgICAgICAgICAgICAgICBzb3VyY2U6IHRoaXMubGlua0RyYWdQYXRoLmZyb20uaXRlbS5vcmlnaW4sXG4gICAgICAgICAgICAgICAgdGFyZ2V0OiB0aGlzLmxpbmtEcmFnUGF0aC50by5pdGVtLm9yaWdpbixcbiAgICAgICAgICAgICAgICB0eXBlOiBkZXBlbmRlbmN5VHlwZVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLmxpbmtEcmFnZ2luZ0lkID0gbnVsbDtcbiAgICAgICAgdGhpcy5saW5rRHJhZ1BhdGggPSB7IGZyb206IG51bGwsIHRvOiBudWxsIH07XG4gICAgfVxufVxuIl19
|
|
@@ -1,67 +0,0 @@
|
|
|
1
|
-
import { Input, Inject, Directive } from '@angular/core';
|
|
2
|
-
import { GanttItemType } from './class';
|
|
3
|
-
import { Subject } from 'rxjs';
|
|
4
|
-
import { takeUntil } from 'rxjs/operators';
|
|
5
|
-
import { rangeHeight } from './gantt.styles';
|
|
6
|
-
import { GANTT_UPPER_TOKEN } from './gantt-upper';
|
|
7
|
-
import * as i0 from "@angular/core";
|
|
8
|
-
import * as i1 from "./gantt-upper";
|
|
9
|
-
export class GanttItemUpper {
|
|
10
|
-
constructor(elementRef, ganttUpper) {
|
|
11
|
-
this.elementRef = elementRef;
|
|
12
|
-
this.ganttUpper = ganttUpper;
|
|
13
|
-
this.firstChange = true;
|
|
14
|
-
this.unsubscribe$ = new Subject();
|
|
15
|
-
this.refsUnsubscribe$ = new Subject();
|
|
16
|
-
}
|
|
17
|
-
ngOnInit() {
|
|
18
|
-
this.firstChange = false;
|
|
19
|
-
this.item.refs$.pipe(takeUntil(this.refsUnsubscribe$)).subscribe(() => {
|
|
20
|
-
this.setPositions();
|
|
21
|
-
});
|
|
22
|
-
}
|
|
23
|
-
ngOnChanges(changes) {
|
|
24
|
-
if (!this.firstChange) {
|
|
25
|
-
this.itemChange(changes.item.currentValue);
|
|
26
|
-
}
|
|
27
|
-
}
|
|
28
|
-
itemChange(item) {
|
|
29
|
-
this.refsUnsubscribe$.next();
|
|
30
|
-
this.refsUnsubscribe$.complete();
|
|
31
|
-
this.item = item;
|
|
32
|
-
this.item.refs$.pipe(takeUntil(this.refsUnsubscribe$)).subscribe(() => {
|
|
33
|
-
this.setPositions();
|
|
34
|
-
});
|
|
35
|
-
}
|
|
36
|
-
setPositions() {
|
|
37
|
-
const itemElement = this.elementRef.nativeElement;
|
|
38
|
-
itemElement.style.left = this.item.refs?.x + 'px';
|
|
39
|
-
itemElement.style.top = this.item.refs?.y + 'px';
|
|
40
|
-
itemElement.style.width = this.item.refs?.width + 'px';
|
|
41
|
-
if (this.item.type === GanttItemType.bar) {
|
|
42
|
-
itemElement.style.height = this.ganttUpper.styles.barHeight + 'px';
|
|
43
|
-
}
|
|
44
|
-
else if (this.item.type === GanttItemType.range) {
|
|
45
|
-
itemElement.style.height = rangeHeight + 'px';
|
|
46
|
-
}
|
|
47
|
-
}
|
|
48
|
-
ngOnDestroy() {
|
|
49
|
-
this.unsubscribe$.next();
|
|
50
|
-
this.unsubscribe$.complete();
|
|
51
|
-
this.refsUnsubscribe$.next();
|
|
52
|
-
this.refsUnsubscribe$.complete();
|
|
53
|
-
}
|
|
54
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: GanttItemUpper, deps: [{ token: i0.ElementRef }, { token: GANTT_UPPER_TOKEN }], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
55
|
-
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.0", type: GanttItemUpper, inputs: { template: "template", item: "item" }, usesOnChanges: true, ngImport: i0 }); }
|
|
56
|
-
}
|
|
57
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: GanttItemUpper, decorators: [{
|
|
58
|
-
type: Directive
|
|
59
|
-
}], ctorParameters: () => [{ type: i0.ElementRef }, { type: i1.GanttUpper, decorators: [{
|
|
60
|
-
type: Inject,
|
|
61
|
-
args: [GANTT_UPPER_TOKEN]
|
|
62
|
-
}] }], propDecorators: { template: [{
|
|
63
|
-
type: Input
|
|
64
|
-
}], item: [{
|
|
65
|
-
type: Input
|
|
66
|
-
}] } });
|
|
67
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2FudHQtaXRlbS11cHBlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3BhY2thZ2VzL2dhbnR0L3NyYy9nYW50dC1pdGVtLXVwcGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxLQUFLLEVBQWMsTUFBTSxFQUFlLFNBQVMsRUFBK0MsTUFBTSxlQUFlLENBQUM7QUFDL0gsT0FBTyxFQUFxQixhQUFhLEVBQUUsTUFBTSxTQUFTLENBQUM7QUFDM0QsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUMvQixPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDM0MsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzdDLE9BQU8sRUFBRSxpQkFBaUIsRUFBYyxNQUFNLGVBQWUsQ0FBQzs7O0FBRzlELE1BQU0sT0FBZ0IsY0FBYztJQVdoQyxZQUFzQixVQUFtQyxFQUF1QyxVQUFzQjtRQUFoRyxlQUFVLEdBQVYsVUFBVSxDQUF5QjtRQUF1QyxlQUFVLEdBQVYsVUFBVSxDQUFZO1FBTi9HLGdCQUFXLEdBQUcsSUFBSSxDQUFDO1FBRW5CLGlCQUFZLEdBQUcsSUFBSSxPQUFPLEVBQVEsQ0FBQztRQUVuQyxxQkFBZ0IsR0FBRyxJQUFJLE9BQU8sRUFBUSxDQUFDO0lBRTJFLENBQUM7SUFFMUgsUUFBUTtRQUNKLElBQUksQ0FBQyxXQUFXLEdBQUcsS0FBSyxDQUFDO1FBQ3pCLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsR0FBRyxFQUFFO1lBQ2xFLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztRQUN4QixDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7SUFFRCxXQUFXLENBQUMsT0FBc0I7UUFDOUIsSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztZQUNwQixJQUFJLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUM7UUFDL0MsQ0FBQztJQUNMLENBQUM7SUFFTyxVQUFVLENBQUMsSUFBdUI7UUFDdEMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLElBQUksRUFBRSxDQUFDO1FBQzdCLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUNqQyxJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQztRQUNqQixJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLEdBQUcsRUFBRTtZQUNsRSxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7UUFDeEIsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDO0lBRU8sWUFBWTtRQUNoQixNQUFNLFdBQVcsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLGFBQWEsQ0FBQztRQUNsRCxXQUFXLENBQUMsS0FBSyxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDLEdBQUcsSUFBSSxDQUFDO1FBQ2xELFdBQVcsQ0FBQyxLQUFLLENBQUMsR0FBRyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUMsR0FBRyxJQUFJLENBQUM7UUFDakQsV0FBVyxDQUFDLEtBQUssQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsS0FBSyxHQUFHLElBQUksQ0FBQztRQUN2RCxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxLQUFLLGFBQWEsQ0FBQyxHQUFHLEVBQUUsQ0FBQztZQUN2QyxXQUFXLENBQUMsS0FBSyxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDO1FBQ3ZFLENBQUM7YUFBTSxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxLQUFLLGFBQWEsQ0FBQyxLQUFLLEVBQUUsQ0FBQztZQUNoRCxXQUFXLENBQUMsS0FBSyxDQUFDLE1BQU0sR0FBRyxXQUFXLEdBQUcsSUFBSSxDQUFDO1FBQ2xELENBQUM7SUFDTCxDQUFDO0lBRUQsV0FBVztRQUNQLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDekIsSUFBSSxDQUFDLFlBQVksQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUM3QixJQUFJLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDN0IsSUFBSSxDQUFDLGdCQUFnQixDQUFDLFFBQVEsRUFBRSxDQUFDO0lBQ3JDLENBQUM7OEdBcERpQixjQUFjLDRDQVdtQyxpQkFBaUI7a0dBWGxFLGNBQWM7OzJGQUFkLGNBQWM7a0JBRG5DLFNBQVM7OzBCQVlzRCxNQUFNOzJCQUFDLGlCQUFpQjt5Q0FWM0UsUUFBUTtzQkFBaEIsS0FBSztnQkFFRyxJQUFJO3NCQUFaLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbnB1dCwgRWxlbWVudFJlZiwgSW5qZWN0LCBUZW1wbGF0ZVJlZiwgRGlyZWN0aXZlLCBPbkluaXQsIE9uQ2hhbmdlcywgT25EZXN0cm95LCBTaW1wbGVDaGFuZ2VzIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBHYW50dEl0ZW1JbnRlcm5hbCwgR2FudHRJdGVtVHlwZSB9IGZyb20gJy4vY2xhc3MnO1xuaW1wb3J0IHsgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgdGFrZVVudGlsIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgcmFuZ2VIZWlnaHQgfSBmcm9tICcuL2dhbnR0LnN0eWxlcyc7XG5pbXBvcnQgeyBHQU5UVF9VUFBFUl9UT0tFTiwgR2FudHRVcHBlciB9IGZyb20gJy4vZ2FudHQtdXBwZXInO1xuXG5ARGlyZWN0aXZlKClcbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBHYW50dEl0ZW1VcHBlciBpbXBsZW1lbnRzIE9uQ2hhbmdlcywgT25Jbml0LCBPbkRlc3Ryb3kge1xuICAgIEBJbnB1dCgpIHRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+O1xuXG4gICAgQElucHV0KCkgaXRlbTogR2FudHRJdGVtSW50ZXJuYWw7XG5cbiAgICBwdWJsaWMgZmlyc3RDaGFuZ2UgPSB0cnVlO1xuXG4gICAgcHVibGljIHVuc3Vic2NyaWJlJCA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG5cbiAgICBwdWJsaWMgcmVmc1Vuc3Vic2NyaWJlJCA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG5cbiAgICBjb25zdHJ1Y3Rvcihwcm90ZWN0ZWQgZWxlbWVudFJlZjogRWxlbWVudFJlZjxIVE1MRWxlbWVudD4sIEBJbmplY3QoR0FOVFRfVVBQRVJfVE9LRU4pIHByb3RlY3RlZCBnYW50dFVwcGVyOiBHYW50dFVwcGVyKSB7fVxuXG4gICAgbmdPbkluaXQoKSB7XG4gICAgICAgIHRoaXMuZmlyc3RDaGFuZ2UgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5pdGVtLnJlZnMkLnBpcGUodGFrZVVudGlsKHRoaXMucmVmc1Vuc3Vic2NyaWJlJCkpLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLnNldFBvc2l0aW9ucygpO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XG4gICAgICAgIGlmICghdGhpcy5maXJzdENoYW5nZSkge1xuICAgICAgICAgICAgdGhpcy5pdGVtQ2hhbmdlKGNoYW5nZXMuaXRlbS5jdXJyZW50VmFsdWUpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBpdGVtQ2hhbmdlKGl0ZW06IEdhbnR0SXRlbUludGVybmFsKSB7XG4gICAgICAgIHRoaXMucmVmc1Vuc3Vic2NyaWJlJC5uZXh0KCk7XG4gICAgICAgIHRoaXMucmVmc1Vuc3Vic2NyaWJlJC5jb21wbGV0ZSgpO1xuICAgICAgICB0aGlzLml0ZW0gPSBpdGVtO1xuICAgICAgICB0aGlzLml0ZW0ucmVmcyQucGlwZSh0YWtlVW50aWwodGhpcy5yZWZzVW5zdWJzY3JpYmUkKSkuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICAgIHRoaXMuc2V0UG9zaXRpb25zKCk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHByaXZhdGUgc2V0UG9zaXRpb25zKCkge1xuICAgICAgICBjb25zdCBpdGVtRWxlbWVudCA9IHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50O1xuICAgICAgICBpdGVtRWxlbWVudC5zdHlsZS5sZWZ0ID0gdGhpcy5pdGVtLnJlZnM/LnggKyAncHgnO1xuICAgICAgICBpdGVtRWxlbWVudC5zdHlsZS50b3AgPSB0aGlzLml0ZW0ucmVmcz8ueSArICdweCc7XG4gICAgICAgIGl0ZW1FbGVtZW50LnN0eWxlLndpZHRoID0gdGhpcy5pdGVtLnJlZnM/LndpZHRoICsgJ3B4JztcbiAgICAgICAgaWYgKHRoaXMuaXRlbS50eXBlID09PSBHYW50dEl0ZW1UeXBlLmJhcikge1xuICAgICAgICAgICAgaXRlbUVsZW1lbnQuc3R5bGUuaGVpZ2h0ID0gdGhpcy5nYW50dFVwcGVyLnN0eWxlcy5iYXJIZWlnaHQgKyAncHgnO1xuICAgICAgICB9IGVsc2UgaWYgKHRoaXMuaXRlbS50eXBlID09PSBHYW50dEl0ZW1UeXBlLnJhbmdlKSB7XG4gICAgICAgICAgICBpdGVtRWxlbWVudC5zdHlsZS5oZWlnaHQgPSByYW5nZUhlaWdodCArICdweCc7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBuZ09uRGVzdHJveSgpIHtcbiAgICAgICAgdGhpcy51bnN1YnNjcmliZSQubmV4dCgpO1xuICAgICAgICB0aGlzLnVuc3Vic2NyaWJlJC5jb21wbGV0ZSgpO1xuICAgICAgICB0aGlzLnJlZnNVbnN1YnNjcmliZSQubmV4dCgpO1xuICAgICAgICB0aGlzLnJlZnNVbnN1YnNjcmliZSQuY29tcGxldGUoKTtcbiAgICB9XG59XG4iXX0=
|
|
@@ -1,94 +0,0 @@
|
|
|
1
|
-
import { Injectable } from '@angular/core';
|
|
2
|
-
import * as i0 from "@angular/core";
|
|
3
|
-
export class GanttPrintService {
|
|
4
|
-
constructor() { }
|
|
5
|
-
setInlineStyles(targetElem) {
|
|
6
|
-
const svgElements = Array.from(targetElem.getElementsByTagName('svg'));
|
|
7
|
-
for (const svgElement of svgElements) {
|
|
8
|
-
this.recursElementChildren(svgElement);
|
|
9
|
-
}
|
|
10
|
-
}
|
|
11
|
-
recursElementChildren(node) {
|
|
12
|
-
const transformProperties = [
|
|
13
|
-
'fill',
|
|
14
|
-
'color',
|
|
15
|
-
'font-size',
|
|
16
|
-
'stroke',
|
|
17
|
-
'font',
|
|
18
|
-
'text-anchor',
|
|
19
|
-
'stroke-dasharray',
|
|
20
|
-
'shape-rendering',
|
|
21
|
-
'stroke-width'
|
|
22
|
-
];
|
|
23
|
-
if (!node.style) {
|
|
24
|
-
return;
|
|
25
|
-
}
|
|
26
|
-
const styles = getComputedStyle(node);
|
|
27
|
-
for (const transformProperty of transformProperties) {
|
|
28
|
-
node.style[transformProperty] = styles[transformProperty];
|
|
29
|
-
}
|
|
30
|
-
for (const child of Array.from(node.childNodes)) {
|
|
31
|
-
this.recursElementChildren(child);
|
|
32
|
-
}
|
|
33
|
-
}
|
|
34
|
-
register(root) {
|
|
35
|
-
this.root = root.nativeElement;
|
|
36
|
-
this.mainContainer = this.root.getElementsByClassName('gantt-main-container')[0];
|
|
37
|
-
}
|
|
38
|
-
async print(name = 'download', ignoreElementClass) {
|
|
39
|
-
const root = this.root;
|
|
40
|
-
const mainContainer = this.mainContainer;
|
|
41
|
-
// set print width
|
|
42
|
-
const printWidth = root.offsetWidth;
|
|
43
|
-
// set print height
|
|
44
|
-
const printHeight = root.offsetHeight - mainContainer.offsetHeight + mainContainer.scrollHeight;
|
|
45
|
-
const html2canvas = (await import(/* webpackChunkName: 'html2canvas' */ 'html2canvas')).default;
|
|
46
|
-
html2canvas(root, {
|
|
47
|
-
logging: false,
|
|
48
|
-
allowTaint: true,
|
|
49
|
-
useCORS: true,
|
|
50
|
-
width: printWidth,
|
|
51
|
-
height: printHeight,
|
|
52
|
-
ignoreElements: (element) => {
|
|
53
|
-
if (ignoreElementClass && element.classList.contains(ignoreElementClass)) {
|
|
54
|
-
return true;
|
|
55
|
-
}
|
|
56
|
-
if (element.classList.contains('gantt-calendar-today-overlay')) {
|
|
57
|
-
return true;
|
|
58
|
-
}
|
|
59
|
-
},
|
|
60
|
-
onclone: (cloneDocument) => {
|
|
61
|
-
const ganttClass = root.className;
|
|
62
|
-
const cloneGanttDom = cloneDocument.querySelector(`.${ganttClass.replace(/\s+/g, '.')}`);
|
|
63
|
-
const cloneGanttContainerDom = cloneDocument.querySelector('.gantt-container');
|
|
64
|
-
const cloneCalendarOverlay = cloneDocument.querySelector('.gantt-calendar-grid-main');
|
|
65
|
-
const cloneLinksOverlay = cloneDocument.querySelector('.gantt-links-overlay-main');
|
|
66
|
-
// change targetDom width
|
|
67
|
-
cloneGanttDom.style.width = `${printWidth}px`;
|
|
68
|
-
cloneGanttDom.style.height = `${printHeight}px`;
|
|
69
|
-
cloneGanttDom.style.overflow = `unset`;
|
|
70
|
-
cloneGanttContainerDom.style.backgroundColor = '#fff';
|
|
71
|
-
cloneCalendarOverlay.setAttribute('height', `${printHeight}`);
|
|
72
|
-
cloneCalendarOverlay.setAttribute('style', `background: transparent`);
|
|
73
|
-
if (cloneLinksOverlay) {
|
|
74
|
-
cloneLinksOverlay.setAttribute('height', `${printHeight}`);
|
|
75
|
-
cloneLinksOverlay.setAttribute('style', `height: ${printHeight}px`);
|
|
76
|
-
}
|
|
77
|
-
// setInlineStyles for svg
|
|
78
|
-
this.setInlineStyles(cloneGanttDom);
|
|
79
|
-
}
|
|
80
|
-
}).then((canvas) => {
|
|
81
|
-
const link = document.createElement('a');
|
|
82
|
-
const dataUrl = canvas.toDataURL('image/png');
|
|
83
|
-
link.download = `${name}.png`;
|
|
84
|
-
link.href = dataUrl;
|
|
85
|
-
link.click();
|
|
86
|
-
});
|
|
87
|
-
}
|
|
88
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: GanttPrintService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
89
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: GanttPrintService }); }
|
|
90
|
-
}
|
|
91
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: GanttPrintService, decorators: [{
|
|
92
|
-
type: Injectable
|
|
93
|
-
}], ctorParameters: () => [] });
|
|
94
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2FudHQtcHJpbnQuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3BhY2thZ2VzL2dhbnR0L3NyYy9nYW50dC1wcmludC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQWMsTUFBTSxlQUFlLENBQUM7O0FBR3ZELE1BQU0sT0FBTyxpQkFBaUI7SUFLMUIsZ0JBQWUsQ0FBQztJQUVSLGVBQWUsQ0FBQyxVQUFtQjtRQUN2QyxNQUFNLFdBQVcsR0FBRyxLQUFLLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxvQkFBb0IsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO1FBQ3ZFLEtBQUssTUFBTSxVQUFVLElBQUksV0FBVyxFQUFFLENBQUM7WUFDbkMsSUFBSSxDQUFDLHFCQUFxQixDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQzNDLENBQUM7SUFDTCxDQUFDO0lBRU8scUJBQXFCLENBQUMsSUFBaUM7UUFDM0QsTUFBTSxtQkFBbUIsR0FBRztZQUN4QixNQUFNO1lBQ04sT0FBTztZQUNQLFdBQVc7WUFDWCxRQUFRO1lBQ1IsTUFBTTtZQUNOLGFBQWE7WUFDYixrQkFBa0I7WUFDbEIsaUJBQWlCO1lBQ2pCLGNBQWM7U0FDakIsQ0FBQztRQUNGLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7WUFDZCxPQUFPO1FBQ1gsQ0FBQztRQUNELE1BQU0sTUFBTSxHQUFHLGdCQUFnQixDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3RDLEtBQUssTUFBTSxpQkFBaUIsSUFBSSxtQkFBbUIsRUFBRSxDQUFDO1lBQ2xELElBQUksQ0FBQyxLQUFLLENBQUMsaUJBQWlCLENBQUMsR0FBRyxNQUFNLENBQUMsaUJBQWlCLENBQUMsQ0FBQztRQUM5RCxDQUFDO1FBQ0QsS0FBSyxNQUFNLEtBQUssSUFBSSxLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsRUFBRSxDQUFD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LFlBQVksQ0FBQyxPQUFPLEVBQUUsV0FBVyxXQUFXLElBQUksQ0FBQyxDQUFDO2dCQUN4RSxDQUFDO2dCQUVELDBCQUEwQjtnQkFDMUIsSUFBSSxDQUFDLGVBQWUsQ0FBQyxhQUFhLENBQUMsQ0FBQztZQUN4QyxDQUFDO1NBQ0osQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLE1BQXlCLEVBQUUsRUFBRTtZQUNsQyxNQUFNLElBQUksR0FBRyxRQUFRLENBQUMsYUFBYSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQ3pDLE1BQU0sT0FBTyxHQUFHLE1BQU0sQ0FBQyxTQUFTLENBQUMsV0FBVyxDQUFDLENBQUM7WUFDOUMsSUFBSSxDQUFDLFFBQVEsR0FBRyxHQUFHLElBQUksTUFBTSxDQUFDO1lBQzlCLElBQUksQ0FBQyxJQUFJLEdBQUcsT0FBTyxDQUFDO1lBQ3BCLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUNqQixDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7OEdBcEdRLGlCQUFpQjtrSEFBakIsaUJBQWlCOzsyRkFBakIsaUJBQWlCO2tCQUQ3QixVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSwgRWxlbWVudFJlZiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgR2FudHRQcmludFNlcnZpY2Uge1xuICAgIHByaXZhdGUgcm9vdDogSFRNTEVsZW1lbnQ7XG5cbiAgICBwcml2YXRlIG1haW5Db250YWluZXI6IEhUTUxFbGVtZW50O1xuXG4gICAgY29uc3RydWN0b3IoKSB7fVxuXG4gICAgcHJpdmF0ZSBzZXRJbmxpbmVTdHlsZXModGFyZ2V0RWxlbTogRWxlbWVudCkge1xuICAgICAgICBjb25zdCBzdmdFbGVtZW50cyA9IEFycmF5LmZyb20odGFyZ2V0RWxlbS5nZXRFbGVtZW50c0J5VGFnTmFtZSgnc3ZnJykpO1xuICAgICAgICBmb3IgKGNvbnN0IHN2Z0VsZW1lbnQgb2Ygc3ZnRWxlbWVudHMpIHtcbiAgICAgICAgICAgIHRoaXMucmVjdXJzRWxlbWVudENoaWxkcmVuKHN2Z0VsZW1lbnQpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSByZWN1cnNFbGVtZW50Q2hpbGRyZW4obm9kZTogU1ZHU1ZHRWxlbWVudCB8IEhUTUxFbGVtZW50KSB7XG4gICAgICAgIGNvbnN0IHRyYW5zZm9ybVByb3BlcnRpZXMgPSBbXG4gICAgICAgICAgICAnZmlsbCcsXG4gICAgICAgICAgICAnY29sb3InLFxuICAgICAgICAgICAgJ2ZvbnQtc2l6ZScsXG4gICAgICAgICAgICAnc3Ryb2tlJyxcbiAgICAgICAgICAgICdmb250JyxcbiAgICAgICAgICAgICd0ZXh0LWFuY2hvcicsXG4gICAgICAgICAgICAnc3Ryb2tlLWRhc2hhcnJheScsXG4gICAgICAgICAgICAnc2hhcGUtcmVuZGVyaW5nJyxcbiAgICAgICAgICAgICdzdHJva2Utd2lkdGgnXG4gICAgICAgIF07XG4gICAgICAgIGlmICghbm9kZS5zdHlsZSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IHN0eWxlcyA9IGdldENvbXB1dGVkU3R5bGUobm9kZSk7XG4gICAgICAgIGZvciAoY29uc3QgdHJhbnNmb3JtUHJvcGVydHkgb2YgdHJhbnNmb3JtUHJvcGVydGllcykge1xuICAgICAgICAgICAgbm9kZS5zdHlsZVt0cmFuc2Zvcm1Qcm9wZXJ0eV0gPSBzdHlsZXNbdHJhbnNmb3JtUHJvcGVydHldO1xuICAgICAgICB9XG4gICAgICAgIGZvciAoY29uc3QgY2hpbGQgb2YgQXJyYXkuZnJvbShub2RlLmNoaWxkTm9kZXMpKSB7XG4gICAgICAgICAgICB0aGlzLnJlY3Vyc0VsZW1lbnRDaGlsZHJlbihjaGlsZCBhcyBTVkdTVkdFbGVtZW50KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHJlZ2lzdGVyKHJvb3Q6IEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+KSB7XG4gICAgICAgIHRoaXMucm9vdCA9IHJvb3QubmF0aXZlRWxlbWVudDtcbiAgICAgICAgdGhpcy5tYWluQ29udGFpbmVyID0gdGhpcy5yb290LmdldEVsZW1lbnRzQnlDbGFzc05hbWUoJ2dhbnR0LW1haW4tY29udGFpbmVyJylbMF0gYXMgSFRNTEVsZW1lbnQ7XG4gICAgfVxuXG4gICAgYXN5bmMgcHJpbnQobmFtZTogc3RyaW5nID0gJ2Rvd25sb2FkJywgaWdub3JlRWxlbWVudENsYXNzPzogc3RyaW5nKSB7XG4gICAgICAgIGNvbnN0IHJvb3QgPSB0aGlzLnJvb3QgYXMgSFRNTEVsZW1lbnQ7XG5cbiAgICAgICAgY29uc3QgbWFpbkNvbnRhaW5lciA9IHRoaXMubWFpbkNvbnRhaW5lciBhcyBIVE1MRWxlbWVudDtcbiAgICAgICAgLy8gc2V0IHByaW50IHdpZHRoXG4gICAgICAgIGNvbnN0IHByaW50V2lkdGggPSByb290Lm9mZnNldFdpZHRoO1xuXG4gICAgICAgIC8vIHNldCBwcmludCBoZWlnaHRcbiAgICAgICAgY29uc3QgcHJpbnRIZWlnaHQgPSByb290Lm9mZnNldEhlaWdodCAtIG1haW5Db250YWluZXIub2Zmc2V0SGVpZ2h0ICsgbWFpbkNvbnRhaW5lci5zY3JvbGxIZWlnaHQ7XG5cbiAgICAgICAgY29uc3QgaHRtbDJjYW52YXMgPSAoYXdhaXQgaW1wb3J0KC8qIHdlYnBhY2tDaHVua05hbWU6ICdodG1sMmNhbnZhcycgKi8gJ2h0bWwyY2FudmFzJykpLmRlZmF1bHQ7XG5cbiAgICAgICAgaHRtbDJjYW52YXMocm9vdCwge1xuICAgICAgICAgICAgbG9nZ2luZzogZmFsc2UsXG4gICAgICAgICAgICBhbGxvd1RhaW50OiB0cnVlLFxuICAgICAgICAgICAgdXNlQ09SUzogdHJ1ZSxcbiAgICAgICAgICAgIHdpZHRoOiBwcmludFdpZHRoLFxuICAgICAgICAgICAgaGVpZ2h0OiBwcmludEhlaWdodCxcbiAgICAgICAgICAgIGlnbm9yZUVsZW1lbnRzOiAoZWxlbWVudCkgPT4ge1xuICAgICAgICAgICAgICAgIGlmIChpZ25vcmVFbGVtZW50Q2xhc3MgJiYgZWxlbWVudC5jbGFzc0xpc3QuY29udGFpbnMoaWdub3JlRWxlbWVudENsYXNzKSkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKGVsZW1lbnQuY2xhc3NMaXN0LmNvbnRhaW5zKCdnYW50dC1jYWxlbmRhci10b2RheS1vdmVybGF5JykpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAgb25jbG9uZTogKGNsb25lRG9jdW1lbnQ6IERvY3VtZW50KSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgZ2FudHRDbGFzcyA9IHJvb3QuY2xhc3NOYW1lO1xuICAgICAgICAgICAgICAgIGNvbnN0IGNsb25lR2FudHREb20gPSBjbG9uZURvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoYC4ke2dhbnR0Q2xhc3MucmVwbGFjZSgvXFxzKy9nLCAnLicpfWApIGFzIEhUTUxFbGVtZW50O1xuICAgICAgICAgICAgICAgIGNvbnN0IGNsb25lR2FudHRDb250YWluZXJEb20gPSBjbG9uZURvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJy5nYW50dC1jb250YWluZXInKSBhcyBIVE1MRWxlbWVudDtcbiAgICAgICAgICAgICAgICBjb25zdCBjbG9uZUNhbGVuZGFyT3ZlcmxheSA9IGNsb25lRG9jdW1lbnQucXVlcnlTZWxlY3RvcignLmdhbnR0LWNhbGVuZGFyLWdyaWQtbWFpbicpIGFzIEhUTUxFbGVtZW50O1xuICAgICAgICAgICAgICAgIGNvbnN0IGNsb25lTGlua3NPdmVybGF5ID0gY2xvbmVEb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcuZ2FudHQtbGlua3Mtb3ZlcmxheS1tYWluJykgYXMgSFRNTEVsZW1lbnQ7XG5cbiAgICAgICAgICAgICAgICAvLyBjaGFuZ2UgdGFyZ2V0RG9tIHdpZHRoXG4gICAgICAgICAgICAgICAgY2xvbmVHYW50dERvbS5zdHlsZS53aWR0aCA9IGAke3ByaW50V2lkdGh9cHhgO1xuICAgICAgICAgICAgICAgIGNsb25lR2FudHREb20uc3R5bGUuaGVpZ2h0ID0gYCR7cHJpbnRIZWlnaHR9cHhgO1xuICAgICAgICAgICAgICAgIGNsb25lR2FudHREb20uc3R5bGUub3ZlcmZsb3cgPSBgdW5zZXRgO1xuICAgICAgICAgICAgICAgIGNsb25lR2FudHRDb250YWluZXJEb20uc3R5bGUuYmFja2dyb3VuZENvbG9yID0gJyNmZmYnO1xuICAgICAgICAgICAgICAgIGNsb25lQ2FsZW5kYXJPdmVybGF5LnNldEF0dHJpYnV0ZSgnaGVpZ2h0JywgYCR7cHJpbnRIZWlnaHR9YCk7XG4gICAgICAgICAgICAgICAgY2xvbmVDYWxlbmRhck92ZXJsYXkuc2V0QXR0cmlidXRlKCdzdHlsZScsIGBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudGApO1xuXG4gICAgICAgICAgICAgICAgaWYgKGNsb25lTGlua3NPdmVybGF5KSB7XG4gICAgICAgICAgICAgICAgICAgIGNsb25lTGlua3NPdmVybGF5LnNldEF0dHJpYnV0ZSgnaGVpZ2h0JywgYCR7cHJpbnRIZWlnaHR9YCk7XG4gICAgICAgICAgICAgICAgICAgIGNsb25lTGlua3NPdmVybGF5LnNldEF0dHJpYnV0ZSgnc3R5bGUnLCBgaGVpZ2h0OiAke3ByaW50SGVpZ2h0fXB4YCk7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgLy8gc2V0SW5saW5lU3R5bGVzIGZvciBzdmdcbiAgICAgICAgICAgICAgICB0aGlzLnNldElubGluZVN0eWxlcyhjbG9uZUdhbnR0RG9tKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSkudGhlbigoY2FudmFzOiBIVE1MQ2FudmFzRWxlbWVudCkgPT4ge1xuICAgICAgICAgICAgY29uc3QgbGluayA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2EnKTtcbiAgICAgICAgICAgIGNvbnN0IGRhdGFVcmwgPSBjYW52YXMudG9EYXRhVVJMKCdpbWFnZS9wbmcnKTtcbiAgICAgICAgICAgIGxpbmsuZG93bmxvYWQgPSBgJHtuYW1lfS5wbmdgO1xuICAgICAgICAgICAgbGluay5ocmVmID0gZGF0YVVybDtcbiAgICAgICAgICAgIGxpbmsuY2xpY2soKTtcbiAgICAgICAgfSk7XG4gICAgfVxufVxuIl19
|