@worktile/gantt 13.1.0 → 14.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/class/baseline.d.ts +26 -0
- package/class/index.d.ts +1 -0
- package/class/item.d.ts +1 -2
- package/components/bar/bar.component.d.ts +1 -2
- package/components/baseline/baseline.component.d.ts +17 -0
- package/components/baseline/baseline.component.scss +11 -0
- package/components/calendar/calendar.component.d.ts +1 -1
- package/components/drag-backdrop/drag-backdrop.component.d.ts +1 -1
- package/components/icon/icon.component.d.ts +1 -1
- package/components/links/links.component.d.ts +1 -1
- package/components/main/gantt-main.component.d.ts +1 -1
- package/components/range/range.component.d.ts +1 -1
- package/components/table/gantt-table.component.d.ts +1 -1
- package/esm2020/class/baseline.mjs +18 -0
- package/esm2020/class/index.mjs +2 -1
- package/esm2020/class/item.mjs +1 -1
- package/esm2020/components/bar/bar-drag.mjs +3 -3
- package/esm2020/components/bar/bar.component.mjs +4 -5
- package/esm2020/components/baseline/baseline.component.mjs +40 -0
- package/esm2020/components/calendar/calendar.component.mjs +3 -3
- package/esm2020/components/drag-backdrop/drag-backdrop.component.mjs +3 -3
- package/esm2020/components/icon/icon.component.mjs +3 -3
- package/esm2020/components/links/links.component.mjs +3 -3
- package/esm2020/components/main/gantt-main.component.mjs +12 -11
- package/esm2020/components/range/range.component.mjs +3 -3
- package/esm2020/components/table/gantt-table.component.mjs +6 -6
- package/esm2020/gantt-dom.service.mjs +3 -3
- package/esm2020/gantt-drag-container.mjs +3 -3
- package/esm2020/gantt-item-upper.mjs +4 -6
- package/esm2020/gantt-print.service.mjs +3 -3
- package/esm2020/gantt-upper.mjs +30 -5
- package/esm2020/gantt.component.mjs +14 -8
- package/esm2020/gantt.module.mjs +13 -8
- package/esm2020/gantt.pipe.mjs +9 -9
- package/esm2020/gantt.styles.mjs +1 -1
- package/esm2020/public-api.mjs +2 -1
- package/esm2020/root.component.mjs +18 -7
- package/esm2020/table/gantt-column.component.mjs +3 -3
- package/esm2020/table/gantt-table.component.mjs +3 -3
- package/esm2020/utils/helpers.mjs +9 -1
- package/fesm2015/worktile-gantt.mjs +890 -789
- package/fesm2015/worktile-gantt.mjs.map +1 -1
- package/fesm2020/worktile-gantt.mjs +905 -806
- package/fesm2020/worktile-gantt.mjs.map +1 -1
- package/gantt-item-upper.d.ts +1 -1
- package/gantt-upper.d.ts +8 -2
- package/gantt.component.d.ts +4 -1
- package/gantt.module.d.ts +5 -4
- package/gantt.pipe.d.ts +3 -3
- package/{worktile-gantt.d.ts → index.d.ts} +0 -0
- package/package.json +6 -6
- package/public-api.d.ts +1 -0
- package/root.component.d.ts +3 -1
- package/styles/index.scss +1 -0
- package/styles/variables.scss +3 -0
- package/table/gantt-column.component.d.ts +1 -1
- package/table/gantt-table.component.d.ts +1 -1
- package/utils/helpers.d.ts +3 -0
|
@@ -1,16 +1,16 @@
|
|
|
1
1
|
import * as i0 from '@angular/core';
|
|
2
|
-
import { InjectionToken, EventEmitter, Directive, Inject, Input, Output, ContentChild, HostBinding, Component, Pipe, ViewChild,
|
|
3
|
-
import * as
|
|
2
|
+
import { InjectionToken, EventEmitter, Directive, Inject, Input, Output, ContentChild, HostBinding, Component, Pipe, ViewChild, Injectable, PLATFORM_ID, ElementRef, Optional, SkipSelf, ViewChildren, forwardRef, ChangeDetectionStrategy, ContentChildren, NgModule } from '@angular/core';
|
|
3
|
+
import * as i1 from '@angular/common';
|
|
4
4
|
import { isPlatformServer, CommonModule } from '@angular/common';
|
|
5
|
-
import { take, takeUntil, skip, map, pairwise, auditTime, startWith,
|
|
6
|
-
import { BehaviorSubject, Subject, from, merge, fromEvent, Observable, EMPTY } from 'rxjs';
|
|
5
|
+
import { take, takeUntil, skip, debounceTime, map, pairwise, auditTime, startWith, switchMap, finalize } from 'rxjs/operators';
|
|
6
|
+
import { BehaviorSubject, Subject, from, merge, fromEvent, Observable, EMPTY, takeUntil as takeUntil$1 } from 'rxjs';
|
|
7
7
|
import { fromUnixTime, getWeek, getDaysInMonth, differenceInCalendarDays, setDate, addSeconds, addMinutes, addHours, addDays, addWeeks, addMonths, addQuarters, addYears, startOfDay, startOfWeek, startOfMonth, startOfQuarter, startOfYear, endOfDay, endOfWeek, endOfMonth, endOfQuarter, endOfYear, getUnixTime, format, isWeekend, isToday, differenceInDays, differenceInCalendarQuarters, eachMonthOfInterval, eachYearOfInterval, eachWeekOfInterval, eachDayOfInterval, differenceInCalendarYears } from 'date-fns';
|
|
8
8
|
export { addDays, addHours, addMinutes, addMonths, addQuarters, addSeconds, addWeeks, addYears, differenceInCalendarDays, differenceInCalendarQuarters, differenceInDays, eachDayOfInterval, eachMonthOfInterval, eachWeekOfInterval, endOfDay, endOfMonth, endOfQuarter, endOfWeek, endOfYear, format, fromUnixTime, getDaysInMonth, getUnixTime, getWeek, isToday, isWeekend, setDate, startOfDay, startOfMonth, startOfQuarter, startOfWeek, startOfYear } from 'date-fns';
|
|
9
9
|
import { SelectionModel } from '@angular/cdk/collections';
|
|
10
10
|
import { coerceBooleanProperty, coerceCssPixelValue } from '@angular/cdk/coercion';
|
|
11
|
-
import * as i1 from '@angular/cdk/drag-drop';
|
|
11
|
+
import * as i1$1 from '@angular/cdk/drag-drop';
|
|
12
12
|
import { DragDropModule } from '@angular/cdk/drag-drop';
|
|
13
|
-
import {
|
|
13
|
+
import { __decorate, __param, __awaiter } from 'tslib';
|
|
14
14
|
|
|
15
15
|
class GanttDatePoint {
|
|
16
16
|
constructor(start, text, x, y, additions) {
|
|
@@ -326,6 +326,22 @@ class GanttGroupInternal {
|
|
|
326
326
|
}
|
|
327
327
|
}
|
|
328
328
|
|
|
329
|
+
class GanttBaselineItemInternal {
|
|
330
|
+
constructor(item) {
|
|
331
|
+
this.refs$ = new BehaviorSubject(null);
|
|
332
|
+
this.origin = item;
|
|
333
|
+
this.id = this.origin.id;
|
|
334
|
+
this.start = item.start ? new GanttDate(item.start) : null;
|
|
335
|
+
this.end = item.end ? new GanttDate(item.end) : null;
|
|
336
|
+
}
|
|
337
|
+
get refs() {
|
|
338
|
+
return this.refs$.getValue();
|
|
339
|
+
}
|
|
340
|
+
updateRefs(refs) {
|
|
341
|
+
this.refs$.next(refs);
|
|
342
|
+
}
|
|
343
|
+
}
|
|
344
|
+
|
|
329
345
|
const defaultConfig = {
|
|
330
346
|
dateFormat: {
|
|
331
347
|
week: '第w周',
|
|
@@ -784,6 +800,14 @@ function getFlatItems(items) {
|
|
|
784
800
|
});
|
|
785
801
|
return result;
|
|
786
802
|
}
|
|
803
|
+
function keyBy(array, key) {
|
|
804
|
+
const result = {};
|
|
805
|
+
array.forEach((item) => {
|
|
806
|
+
const keyValue = item[key];
|
|
807
|
+
result[keyValue] = item;
|
|
808
|
+
});
|
|
809
|
+
return result;
|
|
810
|
+
}
|
|
787
811
|
|
|
788
812
|
class GanttUpper {
|
|
789
813
|
constructor(elementRef, cdr, ngZone, config) {
|
|
@@ -795,6 +819,8 @@ class GanttUpper {
|
|
|
795
819
|
this.originItems = [];
|
|
796
820
|
// eslint-disable-next-line @angular-eslint/no-input-rename
|
|
797
821
|
this.originGroups = [];
|
|
822
|
+
// eslint-disable-next-line @angular-eslint/no-input-rename
|
|
823
|
+
this.originBaselineItems = [];
|
|
798
824
|
this.viewType = GanttViewType.month;
|
|
799
825
|
this.showTodayLine = true;
|
|
800
826
|
this.viewOptions = {};
|
|
@@ -806,6 +832,8 @@ class GanttUpper {
|
|
|
806
832
|
this.linkDragEnded = new EventEmitter();
|
|
807
833
|
this.items = [];
|
|
808
834
|
this.groups = [];
|
|
835
|
+
this.baselineItems = [];
|
|
836
|
+
this.baselineItemsMap = {};
|
|
809
837
|
this.viewChange = new EventEmitter();
|
|
810
838
|
this.expandChange = new EventEmitter();
|
|
811
839
|
this.firstChange = true;
|
|
@@ -879,6 +907,15 @@ class GanttUpper {
|
|
|
879
907
|
});
|
|
880
908
|
}
|
|
881
909
|
}
|
|
910
|
+
setupBaselineItems() {
|
|
911
|
+
this.originBaselineItems = uniqBy(this.originBaselineItems, 'id');
|
|
912
|
+
this.baselineItems = [];
|
|
913
|
+
this.originBaselineItems.forEach((origin) => {
|
|
914
|
+
const item = new GanttBaselineItemInternal(origin);
|
|
915
|
+
this.baselineItems.push(item);
|
|
916
|
+
});
|
|
917
|
+
this.baselineItemsMap = keyBy(this.baselineItems, 'id');
|
|
918
|
+
}
|
|
882
919
|
setupExpandedState() {
|
|
883
920
|
this.originItems = uniqBy(this.originItems, 'id');
|
|
884
921
|
let items = [];
|
|
@@ -949,6 +986,8 @@ class GanttUpper {
|
|
|
949
986
|
this.setupGroups();
|
|
950
987
|
this.setupItems();
|
|
951
988
|
this.computeRefs();
|
|
989
|
+
this.setupBaselineItems();
|
|
990
|
+
this.computeItemsRefs(...this.baselineItems);
|
|
952
991
|
this.initSelectionModel();
|
|
953
992
|
this.firstChange = false;
|
|
954
993
|
// Note: the zone may be nooped through `BootstrapOptions` when bootstrapping the root module. This means
|
|
@@ -983,6 +1022,8 @@ class GanttUpper {
|
|
|
983
1022
|
this.setupGroups();
|
|
984
1023
|
this.setupItems();
|
|
985
1024
|
this.computeRefs();
|
|
1025
|
+
this.setupBaselineItems();
|
|
1026
|
+
this.computeItemsRefs(...this.baselineItems);
|
|
986
1027
|
this.viewChange.emit(this.view);
|
|
987
1028
|
}
|
|
988
1029
|
if (changes.originItems || changes.originGroups) {
|
|
@@ -991,6 +1032,10 @@ class GanttUpper {
|
|
|
991
1032
|
this.setupItems();
|
|
992
1033
|
this.computeRefs();
|
|
993
1034
|
}
|
|
1035
|
+
if (changes.originBaselineItems) {
|
|
1036
|
+
this.setupBaselineItems();
|
|
1037
|
+
this.computeItemsRefs(...this.baselineItems);
|
|
1038
|
+
}
|
|
994
1039
|
}
|
|
995
1040
|
}
|
|
996
1041
|
ngOnDestroy() {
|
|
@@ -1047,9 +1092,9 @@ class GanttUpper {
|
|
|
1047
1092
|
return this.selectionModel.isSelected(id);
|
|
1048
1093
|
}
|
|
1049
1094
|
}
|
|
1050
|
-
GanttUpper.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
1051
|
-
GanttUpper.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "
|
|
1052
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
1095
|
+
GanttUpper.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.1.3", ngImport: i0, type: GanttUpper, deps: [{ token: i0.ElementRef }, { token: i0.ChangeDetectorRef }, { token: i0.NgZone }, { token: GANTT_GLOBAL_CONFIG }], target: i0.ɵɵFactoryTarget.Directive });
|
|
1096
|
+
GanttUpper.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "14.1.3", type: GanttUpper, inputs: { originItems: ["items", "originItems"], originGroups: ["groups", "originGroups"], originBaselineItems: ["baselineItems", "originBaselineItems"], viewType: "viewType", start: "start", end: "end", showTodayLine: "showTodayLine", draggable: "draggable", styles: "styles", viewOptions: "viewOptions", linkOptions: "linkOptions", disabledLoadOnScroll: "disabledLoadOnScroll", selectable: "selectable", multiple: "multiple" }, outputs: { loadOnScroll: "loadOnScroll", dragStarted: "dragStarted", dragMoved: "dragMoved", dragEnded: "dragEnded", barClick: "barClick" }, host: { properties: { "class.gantt": "this.ganttClass" } }, queries: [{ propertyName: "barTemplate", first: true, predicate: ["bar"], descendants: true, static: true }, { propertyName: "rangeTemplate", first: true, predicate: ["range"], descendants: true, static: true }, { propertyName: "itemTemplate", first: true, predicate: ["item"], descendants: true, static: true }, { propertyName: "groupTemplate", first: true, predicate: ["group"], descendants: true, static: true }, { propertyName: "groupHeaderTemplate", first: true, predicate: ["groupHeader"], descendants: true, static: true }], usesOnChanges: true, ngImport: i0 });
|
|
1097
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.1.3", ngImport: i0, type: GanttUpper, decorators: [{
|
|
1053
1098
|
type: Directive
|
|
1054
1099
|
}], ctorParameters: function () {
|
|
1055
1100
|
return [{ type: i0.ElementRef }, { type: i0.ChangeDetectorRef }, { type: i0.NgZone }, { type: undefined, decorators: [{
|
|
@@ -1062,6 +1107,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.8", ngImpor
|
|
|
1062
1107
|
}], originGroups: [{
|
|
1063
1108
|
type: Input,
|
|
1064
1109
|
args: ['groups']
|
|
1110
|
+
}], originBaselineItems: [{
|
|
1111
|
+
type: Input,
|
|
1112
|
+
args: ['baselineItems']
|
|
1065
1113
|
}], viewType: [{
|
|
1066
1114
|
type: Input
|
|
1067
1115
|
}], start: [{
|
|
@@ -1123,9 +1171,9 @@ class NgxGanttTableColumnComponent {
|
|
|
1123
1171
|
this.columnWidth = coerceCssPixelValue(width);
|
|
1124
1172
|
}
|
|
1125
1173
|
}
|
|
1126
|
-
NgxGanttTableColumnComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
1127
|
-
NgxGanttTableColumnComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "
|
|
1128
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
1174
|
+
NgxGanttTableColumnComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.1.3", ngImport: i0, type: NgxGanttTableColumnComponent, deps: [{ token: GANTT_UPPER_TOKEN }], target: i0.ɵɵFactoryTarget.Component });
|
|
1175
|
+
NgxGanttTableColumnComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.1.3", type: NgxGanttTableColumnComponent, selector: "ngx-gantt-column", inputs: { width: "width", name: "name" }, queries: [{ propertyName: "templateRef", first: true, predicate: ["cell"], descendants: true, static: true }, { propertyName: "headerTemplateRef", first: true, predicate: ["header"], descendants: true, static: true }], ngImport: i0, template: '', isInline: true });
|
|
1176
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.1.3", ngImport: i0, type: NgxGanttTableColumnComponent, decorators: [{
|
|
1129
1177
|
type: Component,
|
|
1130
1178
|
args: [{
|
|
1131
1179
|
selector: 'ngx-gantt-column',
|
|
@@ -1153,9 +1201,9 @@ class NgxGanttTableComponent {
|
|
|
1153
1201
|
this.columnChanges = new EventEmitter();
|
|
1154
1202
|
}
|
|
1155
1203
|
}
|
|
1156
|
-
NgxGanttTableComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
1157
|
-
NgxGanttTableComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "
|
|
1158
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
1204
|
+
NgxGanttTableComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.1.3", ngImport: i0, type: NgxGanttTableComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
1205
|
+
NgxGanttTableComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.1.3", type: NgxGanttTableComponent, selector: "ngx-gantt-table", outputs: { columnChanges: "columnChanges" }, queries: [{ propertyName: "rowBeforeTemplate", first: true, predicate: ["rowBeforeSlot"], descendants: true, static: true }, { propertyName: "rowAfterTemplate", first: true, predicate: ["rowAfterSlot"], descendants: true, static: true }], ngImport: i0, template: '', isInline: true });
|
|
1206
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.1.3", ngImport: i0, type: NgxGanttTableComponent, decorators: [{
|
|
1159
1207
|
type: Component,
|
|
1160
1208
|
args: [{
|
|
1161
1209
|
selector: 'ngx-gantt-table',
|
|
@@ -1293,9 +1341,9 @@ class GanttIconComponent {
|
|
|
1293
1341
|
}
|
|
1294
1342
|
}
|
|
1295
1343
|
}
|
|
1296
|
-
GanttIconComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
1297
|
-
GanttIconComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "
|
|
1298
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
1344
|
+
GanttIconComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.1.3", ngImport: i0, type: GanttIconComponent, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component });
|
|
1345
|
+
GanttIconComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.1.3", type: GanttIconComponent, selector: "gantt-icon", inputs: { iconName: "iconName" }, host: { properties: { "class.gantt-icon": "this.isIcon" } }, ngImport: i0, template: '', isInline: true });
|
|
1346
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.1.3", ngImport: i0, type: GanttIconComponent, decorators: [{
|
|
1299
1347
|
type: Component,
|
|
1300
1348
|
args: [{
|
|
1301
1349
|
selector: 'gantt-icon',
|
|
@@ -1313,9 +1361,9 @@ class IsGanttRangeItemPipe {
|
|
|
1313
1361
|
return value === GanttItemType.range;
|
|
1314
1362
|
}
|
|
1315
1363
|
}
|
|
1316
|
-
IsGanttRangeItemPipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
1317
|
-
IsGanttRangeItemPipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "
|
|
1318
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
1364
|
+
IsGanttRangeItemPipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.1.3", ngImport: i0, type: IsGanttRangeItemPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe });
|
|
1365
|
+
IsGanttRangeItemPipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "14.1.3", ngImport: i0, type: IsGanttRangeItemPipe, name: "isGanttRangeItem" });
|
|
1366
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.1.3", ngImport: i0, type: IsGanttRangeItemPipe, decorators: [{
|
|
1319
1367
|
type: Pipe,
|
|
1320
1368
|
args: [{
|
|
1321
1369
|
name: 'isGanttRangeItem'
|
|
@@ -1326,9 +1374,9 @@ class IsGanttBarItemPipe {
|
|
|
1326
1374
|
return value === GanttItemType.bar;
|
|
1327
1375
|
}
|
|
1328
1376
|
}
|
|
1329
|
-
IsGanttBarItemPipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
1330
|
-
IsGanttBarItemPipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "
|
|
1331
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
1377
|
+
IsGanttBarItemPipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.1.3", ngImport: i0, type: IsGanttBarItemPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe });
|
|
1378
|
+
IsGanttBarItemPipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "14.1.3", ngImport: i0, type: IsGanttBarItemPipe, name: "isGanttBarItem" });
|
|
1379
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.1.3", ngImport: i0, type: IsGanttBarItemPipe, decorators: [{
|
|
1332
1380
|
type: Pipe,
|
|
1333
1381
|
args: [{
|
|
1334
1382
|
name: 'isGanttBarItem'
|
|
@@ -1339,9 +1387,9 @@ class IsGanttCustomItemPipe {
|
|
|
1339
1387
|
return value === GanttItemType.custom;
|
|
1340
1388
|
}
|
|
1341
1389
|
}
|
|
1342
|
-
IsGanttCustomItemPipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
1343
|
-
IsGanttCustomItemPipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "
|
|
1344
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
1390
|
+
IsGanttCustomItemPipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.1.3", ngImport: i0, type: IsGanttCustomItemPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe });
|
|
1391
|
+
IsGanttCustomItemPipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "14.1.3", ngImport: i0, type: IsGanttCustomItemPipe, name: "isGanttCustomItem" });
|
|
1392
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.1.3", ngImport: i0, type: IsGanttCustomItemPipe, decorators: [{
|
|
1345
1393
|
type: Pipe,
|
|
1346
1394
|
args: [{
|
|
1347
1395
|
name: 'isGanttCustomItem'
|
|
@@ -1461,9 +1509,9 @@ class GanttTableComponent {
|
|
|
1461
1509
|
return item.id || index;
|
|
1462
1510
|
}
|
|
1463
1511
|
}
|
|
1464
|
-
GanttTableComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
1465
|
-
GanttTableComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "
|
|
1466
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
1512
|
+
GanttTableComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.1.3", ngImport: i0, type: GanttTableComponent, deps: [{ token: GANTT_ABSTRACT_TOKEN }, { token: GANTT_UPPER_TOKEN }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component });
|
|
1513
|
+
GanttTableComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.1.3", type: GanttTableComponent, selector: "gantt-table", inputs: { groups: "groups", items: "items", columns: "columns", groupTemplate: "groupTemplate", emptyTemplate: "emptyTemplate", rowBeforeTemplate: "rowBeforeTemplate", rowAfterTemplate: "rowAfterTemplate" }, outputs: { itemClick: "itemClick" }, host: { properties: { "class.gantt-table": "this.ganttTableClass", "class.gantt-table-empty": "this.ganttTableEmptyClass" } }, viewQueries: [{ propertyName: "draglineElementRef", first: true, predicate: ["dragLine"], descendants: true, static: true }], usesOnChanges: true, ngImport: i0, template: "<div class=\"gantt-table-header gantt-table-row\">\n <div class=\"gantt-table-column\" *ngFor=\"let column of columnList; let i = index\" [style.width]=\"column.columnWidth\">\n <ng-container *ngIf=\"column.headerTemplateRef; else default\" [ngTemplateOutlet]=\"column.headerTemplateRef\"></ng-container>\n <ng-template #default>\n {{ column.name }}\n </ng-template>\n <div\n class=\"gantt-table-drag-trigger\"\n cdkDrag\n cdkDragLockAxis=\"x\"\n cdkDragBoundary=\".gantt\"\n (cdkDragMoved)=\"dragMoved($event, column)\"\n (cdkDragStarted)=\"dragStarted($event)\"\n (cdkDragEnded)=\"columnDragEnded($event, column)\"\n ></div>\n </div>\n</div>\n<div class=\"gantt-table-body\">\n <ng-container *ngIf=\"!groups.length && !items.length\">\n <ng-container *ngIf=\"!emptyTemplate\">\n <gantt-icon class=\"empty-icon\" iconName=\"empty\"></gantt-icon>\n <div class=\"empty-text\">\u6CA1\u6709\u6570\u636E</div>\n </ng-container>\n <ng-template [ngTemplateOutlet]=\"emptyTemplate\"></ng-template>\n </ng-container>\n\n <ng-container *ngIf=\"groups && groups.length > 0; else itemsTemplate\">\n <ng-container *ngFor=\"let group of groups; trackBy: trackBy\">\n <div class=\"gantt-table-group\" [ngClass]=\"group.class\">\n <div class=\"gantt-table-group-title\" [class.expanded]=\"group.expanded\" (click)=\"expandGroup(group)\">\n <gantt-icon class=\"expand-icon\" [iconName]=\"group.expanded ? 'angle-down' : 'angle-right'\"></gantt-icon>\n <ng-container *ngIf=\"groupTemplate; else default\">\n <ng-template\n [ngTemplateOutlet]=\"groupTemplate\"\n [ngTemplateOutletContext]=\"{ $implicit: group.origin, group: group.origin }\"\n ></ng-template>\n </ng-container>\n <ng-template #default>\n <span class=\"group-title\">{{ group.title }}</span>\n </ng-template>\n </div>\n </div>\n\n <ng-container *ngIf=\"group.expanded\">\n <ng-template\n [ngTemplateOutlet]=\"ganttItems\"\n [ngTemplateOutletContext]=\"{ group: group, items: group.items, level: 0 }\"\n ></ng-template>\n </ng-container>\n </ng-container>\n </ng-container>\n</div>\n\n<div\n class=\"gantt-table-drag-trigger\"\n cdkDrag\n cdkDragLockAxis=\"x\"\n cdkDragBoundary=\".gantt\"\n (cdkDragMoved)=\"dragMoved($event)\"\n (cdkDragStarted)=\"dragStarted($event)\"\n (cdkDragEnded)=\"tableDragEnded($event)\"\n></div>\n\n<div #dragLine class=\"gantt-table-drag-auxiliary-line\"></div>\n\n<ng-template #itemsTemplate>\n <ng-template [ngTemplateOutlet]=\"ganttItems\" [ngTemplateOutletContext]=\"{ items: items, level: 0 }\"></ng-template>\n</ng-template>\n\n<ng-template #ganttItems let-group=\"group\" let-items=\"items\" let-level=\"level\">\n <ng-container *ngFor=\"let item of items; trackBy: trackBy\">\n <div\n (click)=\"itemClick.emit({ event: $event, selectedValue: this.item.origin })\"\n class=\"gantt-table-item gantt-table-row\"\n [class.gantt-table-item-first-level-group]=\"level === 0 && (item.type | isGanttRangeItem)\"\n [class.gantt-table-item-with-group]=\"group\"\n [class.gantt-table-item-active]=\"ganttUpper.isSelected(item.id)\"\n [style.height.px]=\"gantt.styles.lineHeight\"\n [style.lineHeight.px]=\"gantt.styles.lineHeight\"\n >\n <ng-template\n [ngTemplateOutlet]=\"rowBeforeTemplate\"\n [ngTemplateOutletContext]=\"{ $implicit: item.origin, item: item.origin }\"\n ></ng-template>\n <div class=\"gantt-table-column\" *ngFor=\"let column of columnList; let first = first\" [style.width]=\"column.columnWidth\">\n <div *ngIf=\"first\" class=\"gantt-expand-icon\" [style.marginLeft.px]=\"level * 20\">\n <ng-container *ngIf=\"level < gantt.maxLevel - 1 && item.expandable\">\n <gantt-icon\n *ngIf=\"!item.loading\"\n class=\"expand-icon\"\n [iconName]=\"item.expanded ? 'angle-down' : 'angle-right'\"\n (click)=\"expandChildren($event, item)\"\n ></gantt-icon>\n <gantt-icon *ngIf=\"item.loading\" [iconName]=\"'loading'\"></gantt-icon>\n </ng-container>\n </div>\n <div class=\"gantt-table-column-content\">\n <ng-template\n [ngTemplateOutlet]=\"column.templateRef\"\n [ngTemplateOutletContext]=\"{ $implicit: item.origin, item: item.origin }\"\n ></ng-template>\n </div>\n </div>\n <ng-template\n [ngTemplateOutlet]=\"rowAfterTemplate\"\n [ngTemplateOutletContext]=\"{ $implicit: item.origin, item: item.origin }\"\n ></ng-template>\n </div>\n <ng-template\n *ngIf=\"item.children && item.expanded\"\n [ngTemplateOutlet]=\"ganttItems\"\n [ngTemplateOutletContext]=\"{ items: item.children, level: level + 1, group: group }\"\n ></ng-template>\n </ng-container>\n</ng-template>\n", dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i1$1.CdkDrag, selector: "[cdkDrag]", inputs: ["cdkDragData", "cdkDragLockAxis", "cdkDragRootElement", "cdkDragBoundary", "cdkDragStartDelay", "cdkDragFreeDragPosition", "cdkDragDisabled", "cdkDragConstrainPosition", "cdkDragPreviewClass", "cdkDragPreviewContainer"], outputs: ["cdkDragStarted", "cdkDragReleased", "cdkDragEnded", "cdkDragEntered", "cdkDragExited", "cdkDragDropped", "cdkDragMoved"], exportAs: ["cdkDrag"] }, { kind: "component", type: GanttIconComponent, selector: "gantt-icon", inputs: ["iconName"] }, { kind: "pipe", type: IsGanttRangeItemPipe, name: "isGanttRangeItem" }] });
|
|
1514
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.1.3", ngImport: i0, type: GanttTableComponent, decorators: [{
|
|
1467
1515
|
type: Component,
|
|
1468
1516
|
args: [{ selector: 'gantt-table', template: "<div class=\"gantt-table-header gantt-table-row\">\n <div class=\"gantt-table-column\" *ngFor=\"let column of columnList; let i = index\" [style.width]=\"column.columnWidth\">\n <ng-container *ngIf=\"column.headerTemplateRef; else default\" [ngTemplateOutlet]=\"column.headerTemplateRef\"></ng-container>\n <ng-template #default>\n {{ column.name }}\n </ng-template>\n <div\n class=\"gantt-table-drag-trigger\"\n cdkDrag\n cdkDragLockAxis=\"x\"\n cdkDragBoundary=\".gantt\"\n (cdkDragMoved)=\"dragMoved($event, column)\"\n (cdkDragStarted)=\"dragStarted($event)\"\n (cdkDragEnded)=\"columnDragEnded($event, column)\"\n ></div>\n </div>\n</div>\n<div class=\"gantt-table-body\">\n <ng-container *ngIf=\"!groups.length && !items.length\">\n <ng-container *ngIf=\"!emptyTemplate\">\n <gantt-icon class=\"empty-icon\" iconName=\"empty\"></gantt-icon>\n <div class=\"empty-text\">\u6CA1\u6709\u6570\u636E</div>\n </ng-container>\n <ng-template [ngTemplateOutlet]=\"emptyTemplate\"></ng-template>\n </ng-container>\n\n <ng-container *ngIf=\"groups && groups.length > 0; else itemsTemplate\">\n <ng-container *ngFor=\"let group of groups; trackBy: trackBy\">\n <div class=\"gantt-table-group\" [ngClass]=\"group.class\">\n <div class=\"gantt-table-group-title\" [class.expanded]=\"group.expanded\" (click)=\"expandGroup(group)\">\n <gantt-icon class=\"expand-icon\" [iconName]=\"group.expanded ? 'angle-down' : 'angle-right'\"></gantt-icon>\n <ng-container *ngIf=\"groupTemplate; else default\">\n <ng-template\n [ngTemplateOutlet]=\"groupTemplate\"\n [ngTemplateOutletContext]=\"{ $implicit: group.origin, group: group.origin }\"\n ></ng-template>\n </ng-container>\n <ng-template #default>\n <span class=\"group-title\">{{ group.title }}</span>\n </ng-template>\n </div>\n </div>\n\n <ng-container *ngIf=\"group.expanded\">\n <ng-template\n [ngTemplateOutlet]=\"ganttItems\"\n [ngTemplateOutletContext]=\"{ group: group, items: group.items, level: 0 }\"\n ></ng-template>\n </ng-container>\n </ng-container>\n </ng-container>\n</div>\n\n<div\n class=\"gantt-table-drag-trigger\"\n cdkDrag\n cdkDragLockAxis=\"x\"\n cdkDragBoundary=\".gantt\"\n (cdkDragMoved)=\"dragMoved($event)\"\n (cdkDragStarted)=\"dragStarted($event)\"\n (cdkDragEnded)=\"tableDragEnded($event)\"\n></div>\n\n<div #dragLine class=\"gantt-table-drag-auxiliary-line\"></div>\n\n<ng-template #itemsTemplate>\n <ng-template [ngTemplateOutlet]=\"ganttItems\" [ngTemplateOutletContext]=\"{ items: items, level: 0 }\"></ng-template>\n</ng-template>\n\n<ng-template #ganttItems let-group=\"group\" let-items=\"items\" let-level=\"level\">\n <ng-container *ngFor=\"let item of items; trackBy: trackBy\">\n <div\n (click)=\"itemClick.emit({ event: $event, selectedValue: this.item.origin })\"\n class=\"gantt-table-item gantt-table-row\"\n [class.gantt-table-item-first-level-group]=\"level === 0 && (item.type | isGanttRangeItem)\"\n [class.gantt-table-item-with-group]=\"group\"\n [class.gantt-table-item-active]=\"ganttUpper.isSelected(item.id)\"\n [style.height.px]=\"gantt.styles.lineHeight\"\n [style.lineHeight.px]=\"gantt.styles.lineHeight\"\n >\n <ng-template\n [ngTemplateOutlet]=\"rowBeforeTemplate\"\n [ngTemplateOutletContext]=\"{ $implicit: item.origin, item: item.origin }\"\n ></ng-template>\n <div class=\"gantt-table-column\" *ngFor=\"let column of columnList; let first = first\" [style.width]=\"column.columnWidth\">\n <div *ngIf=\"first\" class=\"gantt-expand-icon\" [style.marginLeft.px]=\"level * 20\">\n <ng-container *ngIf=\"level < gantt.maxLevel - 1 && item.expandable\">\n <gantt-icon\n *ngIf=\"!item.loading\"\n class=\"expand-icon\"\n [iconName]=\"item.expanded ? 'angle-down' : 'angle-right'\"\n (click)=\"expandChildren($event, item)\"\n ></gantt-icon>\n <gantt-icon *ngIf=\"item.loading\" [iconName]=\"'loading'\"></gantt-icon>\n </ng-container>\n </div>\n <div class=\"gantt-table-column-content\">\n <ng-template\n [ngTemplateOutlet]=\"column.templateRef\"\n [ngTemplateOutletContext]=\"{ $implicit: item.origin, item: item.origin }\"\n ></ng-template>\n </div>\n </div>\n <ng-template\n [ngTemplateOutlet]=\"rowAfterTemplate\"\n [ngTemplateOutletContext]=\"{ $implicit: item.origin, item: item.origin }\"\n ></ng-template>\n </div>\n <ng-template\n *ngIf=\"item.children && item.expanded\"\n [ngTemplateOutlet]=\"ganttItems\"\n [ngTemplateOutletContext]=\"{ items: item.children, level: level + 1, group: group }\"\n ></ng-template>\n </ng-container>\n</ng-template>\n" }]
|
|
1469
1517
|
}], ctorParameters: function () {
|
|
@@ -1501,147 +1549,185 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.8", ngImpor
|
|
|
1501
1549
|
args: ['class.gantt-table-empty']
|
|
1502
1550
|
}] } });
|
|
1503
1551
|
|
|
1504
|
-
|
|
1505
|
-
|
|
1506
|
-
|
|
1507
|
-
|
|
1508
|
-
|
|
1509
|
-
|
|
1510
|
-
|
|
1511
|
-
|
|
1512
|
-
|
|
1513
|
-
|
|
1514
|
-
|
|
1515
|
-
|
|
1516
|
-
|
|
1517
|
-
|
|
1518
|
-
|
|
1552
|
+
class GanttLinkLine {
|
|
1553
|
+
constructor() { }
|
|
1554
|
+
generatePath(source, target, type) {
|
|
1555
|
+
if (source.before && source.after && target.before && target.after) {
|
|
1556
|
+
let path = '';
|
|
1557
|
+
switch (type) {
|
|
1558
|
+
case GanttLinkType.ss:
|
|
1559
|
+
path = this.generateSSPath(source, target);
|
|
1560
|
+
break;
|
|
1561
|
+
case GanttLinkType.ff:
|
|
1562
|
+
path = this.generateFFPath(source, target);
|
|
1563
|
+
break;
|
|
1564
|
+
case GanttLinkType.sf:
|
|
1565
|
+
path = this.generateFSAndSFPath(source, target, type);
|
|
1566
|
+
break;
|
|
1567
|
+
default:
|
|
1568
|
+
path = this.generateFSAndSFPath(source, target);
|
|
1569
|
+
}
|
|
1570
|
+
return path;
|
|
1519
1571
|
}
|
|
1520
1572
|
}
|
|
1521
|
-
return supportsPassiveEvents;
|
|
1522
|
-
}
|
|
1523
|
-
/**
|
|
1524
|
-
* Normalizes an `AddEventListener` object to something that can be passed
|
|
1525
|
-
* to `addEventListener` on any browser, no matter whether it supports the
|
|
1526
|
-
* `options` parameter.
|
|
1527
|
-
*/
|
|
1528
|
-
function normalizePassiveListenerOptions(options) {
|
|
1529
|
-
return supportsPassiveEventListeners() ? options : !!options.capture;
|
|
1530
1573
|
}
|
|
1531
|
-
/** Options used to bind passive event listeners. */
|
|
1532
|
-
const passiveListenerOptions = normalizePassiveListenerOptions({ passive: true });
|
|
1533
1574
|
|
|
1534
|
-
|
|
1535
|
-
|
|
1536
|
-
(
|
|
1537
|
-
|
|
1538
|
-
ScrollDirection[ScrollDirection["LEFT"] = 1] = "LEFT";
|
|
1539
|
-
ScrollDirection[ScrollDirection["RIGHT"] = 2] = "RIGHT";
|
|
1540
|
-
})(ScrollDirection || (ScrollDirection = {}));
|
|
1541
|
-
class GanttDomService {
|
|
1542
|
-
constructor(ngZone, platformId) {
|
|
1543
|
-
this.ngZone = ngZone;
|
|
1544
|
-
this.platformId = platformId;
|
|
1545
|
-
this.unsubscribe$ = new Subject();
|
|
1575
|
+
let GanttLinkLineCurve = class GanttLinkLineCurve extends GanttLinkLine {
|
|
1576
|
+
constructor(ganttUpper) {
|
|
1577
|
+
super();
|
|
1578
|
+
this.ganttUpper = ganttUpper;
|
|
1546
1579
|
}
|
|
1547
|
-
|
|
1548
|
-
|
|
1549
|
-
|
|
1550
|
-
|
|
1551
|
-
|
|
1552
|
-
|
|
1553
|
-
|
|
1554
|
-
|
|
1555
|
-
|
|
1556
|
-
|
|
1557
|
-
|
|
1558
|
-
|
|
1559
|
-
|
|
1560
|
-
|
|
1561
|
-
|
|
1580
|
+
generateSSPath(source, target) {
|
|
1581
|
+
const x1 = source.before.x;
|
|
1582
|
+
const y1 = source.before.y;
|
|
1583
|
+
const x4 = target.before.x;
|
|
1584
|
+
const y4 = target.before.y;
|
|
1585
|
+
const isMirror = y4 > y1 ? 0 : 1;
|
|
1586
|
+
const radius = Math.abs(y4 - y1) / 2;
|
|
1587
|
+
if (x4 > x1) {
|
|
1588
|
+
return `M ${x1} ${y1}
|
|
1589
|
+
A ${radius} ${radius} 0 1 ${isMirror} ${x1} ${y4}
|
|
1590
|
+
L ${x4} ${y4}`;
|
|
1591
|
+
}
|
|
1592
|
+
else {
|
|
1593
|
+
return `M ${x1} ${y1}
|
|
1594
|
+
L ${x4} ${y1}
|
|
1595
|
+
A ${radius} ${radius} 0 1 ${isMirror} ${x4} ${y4}`;
|
|
1596
|
+
}
|
|
1562
1597
|
}
|
|
1563
|
-
|
|
1564
|
-
const
|
|
1565
|
-
|
|
1566
|
-
|
|
1567
|
-
|
|
1598
|
+
generateFFPath(source, target) {
|
|
1599
|
+
const x1 = source.after.x;
|
|
1600
|
+
const y1 = source.after.y;
|
|
1601
|
+
const x4 = target.after.x;
|
|
1602
|
+
const y4 = target.after.y;
|
|
1603
|
+
const isMirror = y4 > y1 ? 1 : 0;
|
|
1604
|
+
const radius = Math.abs(y4 - y1) / 2;
|
|
1605
|
+
if (x4 > x1) {
|
|
1606
|
+
return `M ${x1} ${y1}
|
|
1607
|
+
L ${x4} ${y1}
|
|
1608
|
+
A ${radius} ${radius} 0 1 ${isMirror} ${x4} ${y4}`;
|
|
1609
|
+
}
|
|
1610
|
+
else {
|
|
1611
|
+
return `M ${x1} ${y1}
|
|
1612
|
+
A ${radius} ${radius} 0 1 ${isMirror} ${x1} ${y4}
|
|
1613
|
+
L ${x4} ${y4}`;
|
|
1614
|
+
}
|
|
1568
1615
|
}
|
|
1569
|
-
|
|
1570
|
-
|
|
1571
|
-
|
|
1572
|
-
|
|
1573
|
-
|
|
1574
|
-
|
|
1575
|
-
|
|
1576
|
-
|
|
1616
|
+
generateFSAndSFPath(source, target, type) {
|
|
1617
|
+
var _a;
|
|
1618
|
+
let x1 = source.after.x;
|
|
1619
|
+
let y1 = source.after.y;
|
|
1620
|
+
let x4 = target.before.x;
|
|
1621
|
+
let y4 = target.before.y;
|
|
1622
|
+
const bezierWeight = 0.5;
|
|
1623
|
+
if (type === GanttLinkType.sf) {
|
|
1624
|
+
x1 = target.after.x;
|
|
1625
|
+
y1 = target.after.y;
|
|
1626
|
+
x4 = source.before.x;
|
|
1627
|
+
y4 = source.before.y;
|
|
1628
|
+
}
|
|
1629
|
+
let dx = Math.abs(x4 - x1) * bezierWeight;
|
|
1630
|
+
let x2 = x1 + dx;
|
|
1631
|
+
let x3 = x4 - dx;
|
|
1632
|
+
const centerX = (x1 + x4) / 2;
|
|
1633
|
+
const centerY = (y1 + y4) / 2;
|
|
1634
|
+
let controlX = this.ganttUpper.styles.lineHeight / 2;
|
|
1635
|
+
const controlY = this.ganttUpper.styles.lineHeight / 2;
|
|
1636
|
+
if (x1 >= x4) {
|
|
1637
|
+
if (Math.abs(y4 - y1) <= this.ganttUpper.styles.lineHeight) {
|
|
1638
|
+
return `M ${x1} ${y1}
|
|
1639
|
+
C ${x1 + controlX} ${y1} ${x1 + controlX} ${y4 > y1 ? y1 + controlX : y1 - controlX} ${x1} ${y4 > y1 ? y1 + controlY : y1 - controlY}
|
|
1640
|
+
L ${x4} ${y4 > y1 ? y4 - controlY : y4 + controlY}
|
|
1641
|
+
C ${x4 - controlY} ${y4 > y1 ? y4 - controlY : y4 + controlY} ${x4 - controlX} ${y4} ${x4} ${y4}
|
|
1642
|
+
`;
|
|
1577
1643
|
}
|
|
1578
|
-
|
|
1579
|
-
|
|
1580
|
-
|
|
1644
|
+
else {
|
|
1645
|
+
controlX = this.ganttUpper.styles.lineHeight;
|
|
1646
|
+
return `M ${x1} ${y1}
|
|
1647
|
+
C ${x1 + controlX} ${y1} ${x1 + controlX} ${y4 > y1 ? y1 + controlX : y1 - controlX} ${centerX} ${centerY}
|
|
1648
|
+
C ${x4 - controlX} ${y4 > y1 ? y4 - controlX : y4 + controlX} ${x4 - controlX} ${y4} ${x4} ${y4}
|
|
1649
|
+
`;
|
|
1581
1650
|
}
|
|
1582
|
-
}
|
|
1651
|
+
}
|
|
1652
|
+
else if (((_a = this.ganttUpper.linkOptions) === null || _a === void 0 ? void 0 : _a.showArrow) && x4 - x1 < 200) {
|
|
1653
|
+
dx = Math.max(Math.abs(y4 - y1) * bezierWeight, 60);
|
|
1654
|
+
x2 = x1 + dx;
|
|
1655
|
+
x3 = x4 - dx;
|
|
1656
|
+
return `M ${x1} ${y1} C ${x2} ${y1} ${x3} ${y4} ${x4} ${y4}`;
|
|
1657
|
+
}
|
|
1658
|
+
return `M ${x1} ${y1} C ${x2} ${y1} ${x3} ${y4} ${x4} ${y4}`;
|
|
1583
1659
|
}
|
|
1584
|
-
|
|
1585
|
-
|
|
1586
|
-
|
|
1587
|
-
|
|
1588
|
-
|
|
1589
|
-
|
|
1590
|
-
|
|
1591
|
-
|
|
1592
|
-
this.
|
|
1660
|
+
};
|
|
1661
|
+
GanttLinkLineCurve = __decorate([
|
|
1662
|
+
__param(0, Inject(GANTT_UPPER_TOKEN))
|
|
1663
|
+
], GanttLinkLineCurve);
|
|
1664
|
+
|
|
1665
|
+
class GanttLinkLineStraight extends GanttLinkLine {
|
|
1666
|
+
constructor() {
|
|
1667
|
+
super();
|
|
1668
|
+
this.pathControl = 20;
|
|
1593
1669
|
}
|
|
1594
|
-
|
|
1595
|
-
|
|
1596
|
-
|
|
1597
|
-
|
|
1598
|
-
|
|
1599
|
-
|
|
1600
|
-
|
|
1601
|
-
|
|
1602
|
-
|
|
1603
|
-
|
|
1604
|
-
};
|
|
1605
|
-
if (current - previous < 0) {
|
|
1606
|
-
if (this.mainContainer.scrollLeft < scrollThreshold && this.mainContainer.scrollLeft > 0) {
|
|
1607
|
-
event.direction = ScrollDirection.LEFT;
|
|
1608
|
-
}
|
|
1609
|
-
}
|
|
1610
|
-
if (current - previous > 0) {
|
|
1611
|
-
if (this.mainContainer.scrollWidth - this.mainContainer.clientWidth - this.mainContainer.scrollLeft <
|
|
1612
|
-
scrollThreshold) {
|
|
1613
|
-
event.direction = ScrollDirection.RIGHT;
|
|
1614
|
-
}
|
|
1615
|
-
}
|
|
1616
|
-
return event;
|
|
1617
|
-
}))
|
|
1618
|
-
.subscribe(subscriber)));
|
|
1670
|
+
generateSSPath(source, target) {
|
|
1671
|
+
const x1 = source.before.x;
|
|
1672
|
+
const y1 = source.before.y;
|
|
1673
|
+
const x4 = target.before.x;
|
|
1674
|
+
const y4 = target.before.y;
|
|
1675
|
+
const control = this.pathControl;
|
|
1676
|
+
return `M ${x1} ${y1}
|
|
1677
|
+
L ${x4 > x1 ? x1 - control : x4 - control} ${y1}
|
|
1678
|
+
L ${x4 > x1 ? x1 - control : x4 - control} ${y4}
|
|
1679
|
+
L ${x4} ${y4}`;
|
|
1619
1680
|
}
|
|
1620
|
-
|
|
1621
|
-
|
|
1681
|
+
generateFFPath(source, target) {
|
|
1682
|
+
const x1 = source.after.x;
|
|
1683
|
+
const y1 = source.after.y;
|
|
1684
|
+
const x4 = target.after.x;
|
|
1685
|
+
const y4 = target.after.y;
|
|
1686
|
+
const control = this.pathControl;
|
|
1687
|
+
return `M ${x1} ${y1}
|
|
1688
|
+
L ${x4 > x1 ? x4 + control : x1 + control} ${y1}
|
|
1689
|
+
L ${x4 > x1 ? x4 + control : x1 + control} ${y4}
|
|
1690
|
+
L ${x4} ${y4}`;
|
|
1622
1691
|
}
|
|
1623
|
-
|
|
1624
|
-
|
|
1625
|
-
|
|
1626
|
-
|
|
1627
|
-
|
|
1692
|
+
generateFSAndSFPath(source, target, type) {
|
|
1693
|
+
let x1 = source.after.x;
|
|
1694
|
+
let y1 = source.after.y;
|
|
1695
|
+
let x4 = target.before.x;
|
|
1696
|
+
let y4 = target.before.y;
|
|
1697
|
+
const control = this.pathControl;
|
|
1698
|
+
if (type === GanttLinkType.sf) {
|
|
1699
|
+
x1 = target.after.x;
|
|
1700
|
+
y1 = target.after.y;
|
|
1701
|
+
x4 = source.before.x;
|
|
1702
|
+
y4 = source.before.y;
|
|
1703
|
+
}
|
|
1704
|
+
if (x4 - x1 >= 40) {
|
|
1705
|
+
return `M ${x1} ${y1}
|
|
1706
|
+
L ${x1 + control} ${y1}
|
|
1707
|
+
L ${x1 + control} ${y4}
|
|
1708
|
+
L ${x4} ${y4}`;
|
|
1709
|
+
}
|
|
1710
|
+
else {
|
|
1711
|
+
return `M ${x1} ${y1}
|
|
1712
|
+
L ${x1 + control} ${y1}
|
|
1713
|
+
L ${x1 + control} ${y4 > y1 ? y1 + control : y1 - control}
|
|
1714
|
+
L ${x4 - control} ${y4 > y1 ? y1 + control : y1 - control}
|
|
1715
|
+
L ${x4 - control} ${y4}
|
|
1716
|
+
L ${x4} ${y4}`;
|
|
1628
1717
|
}
|
|
1629
1718
|
}
|
|
1630
|
-
|
|
1631
|
-
|
|
1632
|
-
|
|
1719
|
+
}
|
|
1720
|
+
|
|
1721
|
+
function createLineGenerator(type, ganttUpper) {
|
|
1722
|
+
switch (type) {
|
|
1723
|
+
case GanttLinkLineType.curve:
|
|
1724
|
+
return new GanttLinkLineCurve(ganttUpper);
|
|
1725
|
+
case GanttLinkLineType.straight:
|
|
1726
|
+
return new GanttLinkLineStraight();
|
|
1727
|
+
default:
|
|
1728
|
+
throw new Error('gantt link path type invalid');
|
|
1633
1729
|
}
|
|
1634
1730
|
}
|
|
1635
|
-
GanttDomService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.8", ngImport: i0, type: GanttDomService, deps: [{ token: i0.NgZone }, { token: PLATFORM_ID }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
1636
|
-
GanttDomService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.3.8", ngImport: i0, type: GanttDomService });
|
|
1637
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.8", ngImport: i0, type: GanttDomService, decorators: [{
|
|
1638
|
-
type: Injectable
|
|
1639
|
-
}], ctorParameters: function () {
|
|
1640
|
-
return [{ type: i0.NgZone }, { type: undefined, decorators: [{
|
|
1641
|
-
type: Inject,
|
|
1642
|
-
args: [PLATFORM_ID]
|
|
1643
|
-
}] }];
|
|
1644
|
-
} });
|
|
1645
1731
|
|
|
1646
1732
|
function getDependencyType(path, dependencyTypes) {
|
|
1647
1733
|
if (dependencyTypes.includes(GanttLinkType.ss) && path.from.pos === InBarPosition.start && path.to.pos === InBarPosition.start) {
|
|
@@ -1708,9 +1794,9 @@ class GanttDragContainer {
|
|
|
1708
1794
|
this.linkDragPath = { from: null, to: null };
|
|
1709
1795
|
}
|
|
1710
1796
|
}
|
|
1711
|
-
GanttDragContainer.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
1712
|
-
GanttDragContainer.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "
|
|
1713
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
1797
|
+
GanttDragContainer.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.1.3", ngImport: i0, type: GanttDragContainer, deps: [{ token: GANTT_UPPER_TOKEN }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
1798
|
+
GanttDragContainer.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "14.1.3", ngImport: i0, type: GanttDragContainer });
|
|
1799
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.1.3", ngImport: i0, type: GanttDragContainer, decorators: [{
|
|
1714
1800
|
type: Injectable
|
|
1715
1801
|
}], ctorParameters: function () {
|
|
1716
1802
|
return [{ type: GanttUpper, decorators: [{
|
|
@@ -1719,718 +1805,617 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.8", ngImpor
|
|
|
1719
1805
|
}] }];
|
|
1720
1806
|
} });
|
|
1721
1807
|
|
|
1722
|
-
class
|
|
1723
|
-
|
|
1724
|
-
GanttDragBackdropComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.8", ngImport: i0, type: GanttDragBackdropComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
1725
|
-
GanttDragBackdropComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.8", type: GanttDragBackdropComponent, selector: "gantt-drag-backdrop", host: { classAttribute: "gantt-drag-backdrop" }, ngImport: i0, template: "<div class=\"gantt-drag-mask\">\n <div class=\"date-range\">\n <span class=\"start\"></span>\n <span class=\"end\"></span>\n </div>\n</div>\n" });
|
|
1726
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.8", ngImport: i0, type: GanttDragBackdropComponent, decorators: [{
|
|
1727
|
-
type: Component,
|
|
1728
|
-
args: [{ selector: 'gantt-drag-backdrop', host: {
|
|
1729
|
-
class: 'gantt-drag-backdrop'
|
|
1730
|
-
}, template: "<div class=\"gantt-drag-mask\">\n <div class=\"date-range\">\n <span class=\"start\"></span>\n <span class=\"end\"></span>\n </div>\n</div>\n" }]
|
|
1731
|
-
}] });
|
|
1732
|
-
|
|
1733
|
-
class GanttPrintService {
|
|
1734
|
-
constructor() { }
|
|
1735
|
-
setInlineStyles(targetElem) {
|
|
1736
|
-
const svgElements = Array.from(targetElem.getElementsByTagName('svg'));
|
|
1737
|
-
for (const svgElement of svgElements) {
|
|
1738
|
-
this.recursElementChildren(svgElement);
|
|
1739
|
-
}
|
|
1740
|
-
}
|
|
1741
|
-
recursElementChildren(node) {
|
|
1742
|
-
const transformProperties = [
|
|
1743
|
-
'fill',
|
|
1744
|
-
'color',
|
|
1745
|
-
'font-size',
|
|
1746
|
-
'stroke',
|
|
1747
|
-
'font',
|
|
1748
|
-
'text-anchor',
|
|
1749
|
-
'stroke-dasharray',
|
|
1750
|
-
'shape-rendering',
|
|
1751
|
-
'stroke-width'
|
|
1752
|
-
];
|
|
1753
|
-
if (!node.style) {
|
|
1754
|
-
return;
|
|
1755
|
-
}
|
|
1756
|
-
const styles = getComputedStyle(node);
|
|
1757
|
-
for (const transformProperty of transformProperties) {
|
|
1758
|
-
node.style[transformProperty] = styles[transformProperty];
|
|
1759
|
-
}
|
|
1760
|
-
for (const child of Array.from(node.childNodes)) {
|
|
1761
|
-
this.recursElementChildren(child);
|
|
1762
|
-
}
|
|
1763
|
-
}
|
|
1764
|
-
register(root) {
|
|
1765
|
-
this.root = root.nativeElement;
|
|
1766
|
-
this.mainContainer = this.root.getElementsByClassName('gantt-main-container')[0];
|
|
1767
|
-
}
|
|
1768
|
-
print(name = 'download', ignoreElementClass) {
|
|
1769
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
1770
|
-
const root = this.root;
|
|
1771
|
-
const mainContainer = this.mainContainer;
|
|
1772
|
-
// set print width
|
|
1773
|
-
const printWidth = root.offsetWidth;
|
|
1774
|
-
// set print height
|
|
1775
|
-
const printHeight = root.offsetHeight - mainContainer.offsetHeight + mainContainer.scrollHeight;
|
|
1776
|
-
const html2canvas = (yield import(/* webpackChunkName: 'html2canvas' */ 'html2canvas')).default;
|
|
1777
|
-
html2canvas(root, {
|
|
1778
|
-
logging: false,
|
|
1779
|
-
allowTaint: true,
|
|
1780
|
-
useCORS: true,
|
|
1781
|
-
width: printWidth,
|
|
1782
|
-
height: printHeight,
|
|
1783
|
-
ignoreElements: (element) => {
|
|
1784
|
-
if (ignoreElementClass && element.classList.contains(ignoreElementClass)) {
|
|
1785
|
-
return true;
|
|
1786
|
-
}
|
|
1787
|
-
if (element.classList.contains('gantt-calendar-today-overlay')) {
|
|
1788
|
-
return true;
|
|
1789
|
-
}
|
|
1790
|
-
},
|
|
1791
|
-
onclone: (cloneDocument) => {
|
|
1792
|
-
const ganttClass = root.className;
|
|
1793
|
-
const cloneGanttDom = cloneDocument.querySelector(`.${ganttClass.replace(/\s+/g, '.')}`);
|
|
1794
|
-
const cloneGanttContainerDom = cloneDocument.querySelector('.gantt-container');
|
|
1795
|
-
const cloneCalendarOverlay = cloneDocument.querySelector('.gantt-calendar-overlay-main');
|
|
1796
|
-
const cloneLinksOverlay = cloneDocument.querySelector('.gantt-links-overlay-main');
|
|
1797
|
-
// change targetDom width
|
|
1798
|
-
cloneGanttDom.style.width = `${printWidth}px`;
|
|
1799
|
-
cloneGanttDom.style.height = `${printHeight}px`;
|
|
1800
|
-
cloneGanttDom.style.overflow = `unset`;
|
|
1801
|
-
cloneGanttContainerDom.style.backgroundColor = '#fff';
|
|
1802
|
-
cloneCalendarOverlay.setAttribute('height', `${printHeight}`);
|
|
1803
|
-
cloneCalendarOverlay.setAttribute('style', `background: transparent`);
|
|
1804
|
-
if (cloneLinksOverlay) {
|
|
1805
|
-
cloneLinksOverlay.setAttribute('height', `${printHeight}`);
|
|
1806
|
-
cloneLinksOverlay.setAttribute('style', `height: ${printHeight}px`);
|
|
1807
|
-
}
|
|
1808
|
-
// setInlineStyles for svg
|
|
1809
|
-
this.setInlineStyles(cloneGanttDom);
|
|
1810
|
-
}
|
|
1811
|
-
}).then((canvas) => {
|
|
1812
|
-
const link = document.createElement('a');
|
|
1813
|
-
const dataUrl = canvas.toDataURL('image/png');
|
|
1814
|
-
link.download = `${name}.png`;
|
|
1815
|
-
link.href = dataUrl;
|
|
1816
|
-
link.click();
|
|
1817
|
-
});
|
|
1818
|
-
});
|
|
1819
|
-
}
|
|
1820
|
-
}
|
|
1821
|
-
GanttPrintService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.8", ngImport: i0, type: GanttPrintService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
1822
|
-
GanttPrintService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.3.8", ngImport: i0, type: GanttPrintService });
|
|
1823
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.8", ngImport: i0, type: GanttPrintService, decorators: [{
|
|
1824
|
-
type: Injectable
|
|
1825
|
-
}], ctorParameters: function () { return []; } });
|
|
1826
|
-
|
|
1827
|
-
const mainHeight = 5000;
|
|
1828
|
-
class GanttCalendarComponent {
|
|
1829
|
-
constructor(ganttUpper, ngZone, elementRef) {
|
|
1808
|
+
class GanttLinksComponent {
|
|
1809
|
+
constructor(ganttUpper, cdr, elementRef, ganttDragContainer) {
|
|
1830
1810
|
this.ganttUpper = ganttUpper;
|
|
1831
|
-
this.
|
|
1811
|
+
this.cdr = cdr;
|
|
1832
1812
|
this.elementRef = elementRef;
|
|
1833
|
-
this.
|
|
1834
|
-
this.
|
|
1835
|
-
this.
|
|
1836
|
-
this.
|
|
1837
|
-
this.
|
|
1838
|
-
this.
|
|
1839
|
-
this.
|
|
1813
|
+
this.ganttDragContainer = ganttDragContainer;
|
|
1814
|
+
this.groups = [];
|
|
1815
|
+
this.items = [];
|
|
1816
|
+
this.lineClick = new EventEmitter();
|
|
1817
|
+
this.links = [];
|
|
1818
|
+
this.ganttLinkTypes = GanttLinkType;
|
|
1819
|
+
this.showArrow = false;
|
|
1820
|
+
this.linkItems = [];
|
|
1821
|
+
this.firstChange = true;
|
|
1840
1822
|
this.unsubscribe$ = new Subject();
|
|
1823
|
+
this.ganttLinksOverlay = true;
|
|
1841
1824
|
}
|
|
1842
|
-
|
|
1843
|
-
|
|
1825
|
+
ngOnInit() {
|
|
1826
|
+
this.linkLine = createLineGenerator(this.ganttUpper.linkOptions.lineType, this.ganttUpper);
|
|
1827
|
+
this.showArrow = this.ganttUpper.linkOptions.showArrow;
|
|
1828
|
+
this.buildLinks();
|
|
1829
|
+
this.firstChange = false;
|
|
1830
|
+
this.ganttDragContainer.dragStarted.pipe(takeUntil(this.unsubscribe$)).subscribe(() => {
|
|
1831
|
+
this.elementRef.nativeElement.style.visibility = 'hidden';
|
|
1832
|
+
});
|
|
1833
|
+
merge(this.ganttUpper.viewChange, this.ganttUpper.expandChange, this.ganttUpper.view.start$, this.ganttUpper.dragEnded, this.ganttUpper.linkDragEnded)
|
|
1834
|
+
.pipe(skip(1), debounceTime(0), takeUntil(this.unsubscribe$))
|
|
1835
|
+
.subscribe(() => {
|
|
1836
|
+
this.elementRef.nativeElement.style.visibility = 'visible';
|
|
1837
|
+
this.buildLinks();
|
|
1838
|
+
this.cdr.detectChanges();
|
|
1839
|
+
});
|
|
1844
1840
|
}
|
|
1845
|
-
|
|
1846
|
-
|
|
1847
|
-
|
|
1848
|
-
|
|
1849
|
-
|
|
1850
|
-
|
|
1851
|
-
|
|
1852
|
-
|
|
1853
|
-
|
|
1854
|
-
|
|
1855
|
-
|
|
1856
|
-
|
|
1857
|
-
|
|
1858
|
-
|
|
1859
|
-
|
|
1860
|
-
|
|
1861
|
-
|
|
1841
|
+
ngOnChanges() {
|
|
1842
|
+
if (!this.firstChange) {
|
|
1843
|
+
this.buildLinks();
|
|
1844
|
+
}
|
|
1845
|
+
}
|
|
1846
|
+
computeItemPosition() {
|
|
1847
|
+
const lineHeight = this.ganttUpper.styles.lineHeight;
|
|
1848
|
+
const barHeight = this.ganttUpper.styles.barHeight;
|
|
1849
|
+
this.linkItems = [];
|
|
1850
|
+
if (this.groups.length > 0) {
|
|
1851
|
+
let itemNum = 0;
|
|
1852
|
+
let groupNum = 0;
|
|
1853
|
+
this.groups.forEach((group) => {
|
|
1854
|
+
groupNum++;
|
|
1855
|
+
if (group.expanded) {
|
|
1856
|
+
const items = recursiveItems(group.items);
|
|
1857
|
+
items.forEach((item, itemIndex) => {
|
|
1858
|
+
const y = (groupNum + itemNum + itemIndex) * lineHeight + item.refs.y + barHeight / 2;
|
|
1859
|
+
this.linkItems.push(Object.assign(Object.assign({}, item), { before: {
|
|
1860
|
+
x: item.refs.x,
|
|
1861
|
+
y
|
|
1862
|
+
}, after: {
|
|
1863
|
+
x: item.refs.x + item.refs.width,
|
|
1864
|
+
y
|
|
1865
|
+
} }));
|
|
1866
|
+
});
|
|
1867
|
+
itemNum += items.length;
|
|
1868
|
+
}
|
|
1869
|
+
});
|
|
1862
1870
|
}
|
|
1863
1871
|
else {
|
|
1864
|
-
|
|
1872
|
+
const items = recursiveItems(this.items);
|
|
1873
|
+
items.forEach((item, itemIndex) => {
|
|
1874
|
+
const y = itemIndex * lineHeight + item.refs.y + barHeight / 2;
|
|
1875
|
+
this.linkItems.push(Object.assign(Object.assign({}, item), { before: {
|
|
1876
|
+
x: item.refs.x,
|
|
1877
|
+
y
|
|
1878
|
+
}, after: {
|
|
1879
|
+
x: item.refs.x + item.refs.width,
|
|
1880
|
+
y
|
|
1881
|
+
} }));
|
|
1882
|
+
});
|
|
1865
1883
|
}
|
|
1866
1884
|
}
|
|
1867
|
-
|
|
1868
|
-
|
|
1869
|
-
|
|
1870
|
-
|
|
1871
|
-
|
|
1872
|
-
|
|
1873
|
-
|
|
1874
|
-
|
|
1875
|
-
|
|
1876
|
-
|
|
1877
|
-
|
|
1878
|
-
|
|
1885
|
+
buildLinks() {
|
|
1886
|
+
this.computeItemPosition();
|
|
1887
|
+
this.links = [];
|
|
1888
|
+
this.linkItems.forEach((source) => {
|
|
1889
|
+
if (source.origin.start || source.origin.end) {
|
|
1890
|
+
source.links.forEach((link) => {
|
|
1891
|
+
const target = this.linkItems.find((item) => item.id === link.link);
|
|
1892
|
+
if (target && (target.origin.start || target.origin.end)) {
|
|
1893
|
+
let defaultColor = LinkColors.default;
|
|
1894
|
+
let activeColor = LinkColors.active;
|
|
1895
|
+
if (link.type === GanttLinkType.fs && source.end.getTime() > target.start.getTime()) {
|
|
1896
|
+
defaultColor = LinkColors.blocked;
|
|
1897
|
+
activeColor = LinkColors.blocked;
|
|
1898
|
+
}
|
|
1899
|
+
if (link.color) {
|
|
1900
|
+
if (typeof link.color === 'string') {
|
|
1901
|
+
defaultColor = link.color;
|
|
1902
|
+
activeColor = link.color;
|
|
1903
|
+
}
|
|
1904
|
+
else {
|
|
1905
|
+
defaultColor = link.color.default;
|
|
1906
|
+
activeColor = link.color.active;
|
|
1907
|
+
}
|
|
1908
|
+
}
|
|
1909
|
+
this.links.push({
|
|
1910
|
+
path: this.linkLine.generatePath(source, target, link.type),
|
|
1911
|
+
source: source.origin,
|
|
1912
|
+
target: target.origin,
|
|
1913
|
+
type: link.type,
|
|
1914
|
+
color: defaultColor,
|
|
1915
|
+
defaultColor,
|
|
1916
|
+
activeColor
|
|
1917
|
+
});
|
|
1918
|
+
}
|
|
1879
1919
|
});
|
|
1880
|
-
}
|
|
1920
|
+
}
|
|
1881
1921
|
});
|
|
1882
1922
|
}
|
|
1883
|
-
trackBy(index
|
|
1884
|
-
return
|
|
1923
|
+
trackBy(index) {
|
|
1924
|
+
return index;
|
|
1925
|
+
}
|
|
1926
|
+
onLineClick(event, link) {
|
|
1927
|
+
this.lineClick.emit({
|
|
1928
|
+
event,
|
|
1929
|
+
source: link.source,
|
|
1930
|
+
target: link.target
|
|
1931
|
+
});
|
|
1932
|
+
}
|
|
1933
|
+
mouseEnterPath(link, index) {
|
|
1934
|
+
link.color = link.activeColor || link.defaultColor;
|
|
1935
|
+
if (index < this.links.length - 1) {
|
|
1936
|
+
this.links.splice(index, 1);
|
|
1937
|
+
this.links.push(link);
|
|
1938
|
+
}
|
|
1939
|
+
}
|
|
1940
|
+
mouseLeavePath(link) {
|
|
1941
|
+
link.color = link.defaultColor;
|
|
1885
1942
|
}
|
|
1886
1943
|
ngOnDestroy() {
|
|
1887
1944
|
this.unsubscribe$.next();
|
|
1888
1945
|
this.unsubscribe$.complete();
|
|
1889
1946
|
}
|
|
1890
1947
|
}
|
|
1891
|
-
|
|
1892
|
-
|
|
1893
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
1948
|
+
GanttLinksComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.1.3", ngImport: i0, type: GanttLinksComponent, deps: [{ token: GANTT_UPPER_TOKEN }, { token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: GanttDragContainer }], target: i0.ɵɵFactoryTarget.Component });
|
|
1949
|
+
GanttLinksComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.1.3", type: GanttLinksComponent, selector: "gantt-links-overlay", inputs: { groups: "groups", items: "items" }, outputs: { lineClick: "lineClick" }, host: { properties: { "class.gantt-links-overlay": "this.ganttLinksOverlay" } }, usesOnChanges: true, ngImport: i0, template: "<svg [attr.width]=\"ganttUpper.view.width\" class=\"gantt-links-overlay-main\">\n <ng-container *ngFor=\"let link of links; let i = index; trackBy: trackBy\">\n <path\n [attr.d]=\"link.path\"\n fill=\"transparent\"\n stroke-width=\"2\"\n [attr.stroke]=\"link.color\"\n pointer-events=\"none\"\n [attr.style]=\"link.type === ganttLinkTypes.sf ? 'marker-start: url(#triangle' + i + ')' : 'marker-end: url(#triangle' + i + ')'\"\n ></path>\n\n <g>\n <path\n class=\"link-line\"\n (click)=\"onLineClick($event, link)\"\n [attr.d]=\"link.path\"\n (mouseenter)=\"mouseEnterPath(link, i)\"\n (mouseleave)=\"mouseLeavePath(link)\"\n stroke=\"transparent\"\n stroke-width=\"9\"\n fill=\"none\"\n cursor=\"pointer\"\n ></path>\n </g>\n <defs *ngIf=\"showArrow\">\n <marker\n *ngIf=\"link.type === ganttLinkTypes.sf; else markerEnd\"\n [id]=\"'triangle' + i\"\n markerUnits=\"strokeWidth\"\n markerWidth=\"5\"\n markerHeight=\"4\"\n refX=\"5\"\n refY=\"2\"\n orient=\"180\"\n >\n <path [attr.fill]=\"link.color\" [attr.stroke]=\"link.color\" d=\"M 0 0 L 5 2 L 0 4 z\" />\n </marker>\n\n <ng-template #markerEnd>\n <marker [id]=\"'triangle' + i\" markerUnits=\"strokeWidth\" markerWidth=\"5\" markerHeight=\"4\" refX=\"5\" refY=\"2\" orient=\"auto\">\n <path [attr.fill]=\"link.color\" [attr.stroke]=\"link.color\" d=\"M 0 0 L 5 2 L 0 4 z\" />\n </marker>\n </ng-template>\n </defs>\n </ng-container>\n <line class=\"link-dragging-line\"></line>\n</svg>\n", dependencies: [{ kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] });
|
|
1950
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.1.3", ngImport: i0, type: GanttLinksComponent, decorators: [{
|
|
1894
1951
|
type: Component,
|
|
1895
|
-
args: [{ selector: 'gantt-
|
|
1952
|
+
args: [{ selector: 'gantt-links-overlay', template: "<svg [attr.width]=\"ganttUpper.view.width\" class=\"gantt-links-overlay-main\">\n <ng-container *ngFor=\"let link of links; let i = index; trackBy: trackBy\">\n <path\n [attr.d]=\"link.path\"\n fill=\"transparent\"\n stroke-width=\"2\"\n [attr.stroke]=\"link.color\"\n pointer-events=\"none\"\n [attr.style]=\"link.type === ganttLinkTypes.sf ? 'marker-start: url(#triangle' + i + ')' : 'marker-end: url(#triangle' + i + ')'\"\n ></path>\n\n <g>\n <path\n class=\"link-line\"\n (click)=\"onLineClick($event, link)\"\n [attr.d]=\"link.path\"\n (mouseenter)=\"mouseEnterPath(link, i)\"\n (mouseleave)=\"mouseLeavePath(link)\"\n stroke=\"transparent\"\n stroke-width=\"9\"\n fill=\"none\"\n cursor=\"pointer\"\n ></path>\n </g>\n <defs *ngIf=\"showArrow\">\n <marker\n *ngIf=\"link.type === ganttLinkTypes.sf; else markerEnd\"\n [id]=\"'triangle' + i\"\n markerUnits=\"strokeWidth\"\n markerWidth=\"5\"\n markerHeight=\"4\"\n refX=\"5\"\n refY=\"2\"\n orient=\"180\"\n >\n <path [attr.fill]=\"link.color\" [attr.stroke]=\"link.color\" d=\"M 0 0 L 5 2 L 0 4 z\" />\n </marker>\n\n <ng-template #markerEnd>\n <marker [id]=\"'triangle' + i\" markerUnits=\"strokeWidth\" markerWidth=\"5\" markerHeight=\"4\" refX=\"5\" refY=\"2\" orient=\"auto\">\n <path [attr.fill]=\"link.color\" [attr.stroke]=\"link.color\" d=\"M 0 0 L 5 2 L 0 4 z\" />\n </marker>\n </ng-template>\n </defs>\n </ng-container>\n <line class=\"link-dragging-line\"></line>\n</svg>\n" }]
|
|
1896
1953
|
}], ctorParameters: function () {
|
|
1897
1954
|
return [{ type: GanttUpper, decorators: [{
|
|
1898
1955
|
type: Inject,
|
|
1899
1956
|
args: [GANTT_UPPER_TOKEN]
|
|
1900
|
-
}] }, { type: i0.
|
|
1901
|
-
}, propDecorators: {
|
|
1957
|
+
}] }, { type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: GanttDragContainer }];
|
|
1958
|
+
}, propDecorators: { groups: [{
|
|
1959
|
+
type: Input
|
|
1960
|
+
}], items: [{
|
|
1961
|
+
type: Input
|
|
1962
|
+
}], lineClick: [{
|
|
1963
|
+
type: Output
|
|
1964
|
+
}], ganttLinksOverlay: [{
|
|
1902
1965
|
type: HostBinding,
|
|
1903
|
-
args: ['class.gantt-
|
|
1966
|
+
args: ['class.gantt-links-overlay']
|
|
1904
1967
|
}] } });
|
|
1905
1968
|
|
|
1906
|
-
|
|
1907
|
-
|
|
1908
|
-
|
|
1969
|
+
/** Cached result of whether the user's browser supports passive event listeners. */
|
|
1970
|
+
let supportsPassiveEvents;
|
|
1971
|
+
/**
|
|
1972
|
+
* Checks whether the user's browser supports passive event listeners.
|
|
1973
|
+
* See: https://github.com/WICG/EventListenerOptions/blob/gh-pages/explainer.md
|
|
1974
|
+
*/
|
|
1975
|
+
function supportsPassiveEventListeners() {
|
|
1976
|
+
if (supportsPassiveEvents == null && typeof window !== 'undefined') {
|
|
1977
|
+
try {
|
|
1978
|
+
window.addEventListener('test', null, Object.defineProperty({}, 'passive', {
|
|
1979
|
+
get: () => (supportsPassiveEvents = true)
|
|
1980
|
+
}));
|
|
1981
|
+
}
|
|
1982
|
+
finally {
|
|
1983
|
+
supportsPassiveEvents = supportsPassiveEvents || false;
|
|
1984
|
+
}
|
|
1985
|
+
}
|
|
1986
|
+
return supportsPassiveEvents;
|
|
1987
|
+
}
|
|
1988
|
+
/**
|
|
1989
|
+
* Normalizes an `AddEventListener` object to something that can be passed
|
|
1990
|
+
* to `addEventListener` on any browser, no matter whether it supports the
|
|
1991
|
+
* `options` parameter.
|
|
1992
|
+
*/
|
|
1993
|
+
function normalizePassiveListenerOptions(options) {
|
|
1994
|
+
return supportsPassiveEventListeners() ? options : !!options.capture;
|
|
1995
|
+
}
|
|
1996
|
+
/** Options used to bind passive event listeners. */
|
|
1997
|
+
const passiveListenerOptions = normalizePassiveListenerOptions({ passive: true });
|
|
1998
|
+
|
|
1999
|
+
const scrollThreshold = 50;
|
|
2000
|
+
var ScrollDirection;
|
|
2001
|
+
(function (ScrollDirection) {
|
|
2002
|
+
ScrollDirection[ScrollDirection["NONE"] = 0] = "NONE";
|
|
2003
|
+
ScrollDirection[ScrollDirection["LEFT"] = 1] = "LEFT";
|
|
2004
|
+
ScrollDirection[ScrollDirection["RIGHT"] = 2] = "RIGHT";
|
|
2005
|
+
})(ScrollDirection || (ScrollDirection = {}));
|
|
2006
|
+
class GanttDomService {
|
|
2007
|
+
constructor(ngZone, platformId) {
|
|
1909
2008
|
this.ngZone = ngZone;
|
|
1910
|
-
this.
|
|
1911
|
-
this.dragContainer = dragContainer;
|
|
1912
|
-
this.ganttUpper = ganttUpper;
|
|
1913
|
-
this.printService = printService;
|
|
2009
|
+
this.platformId = platformId;
|
|
1914
2010
|
this.unsubscribe$ = new Subject();
|
|
1915
|
-
this.ganttUpper.dragContainer = dragContainer;
|
|
1916
|
-
}
|
|
1917
|
-
get view() {
|
|
1918
|
-
return this.ganttUpper.view;
|
|
1919
2011
|
}
|
|
1920
|
-
|
|
1921
|
-
|
|
1922
|
-
|
|
1923
|
-
|
|
1924
|
-
|
|
1925
|
-
|
|
1926
|
-
this.
|
|
1927
|
-
|
|
1928
|
-
|
|
1929
|
-
|
|
1930
|
-
|
|
1931
|
-
|
|
1932
|
-
|
|
1933
|
-
|
|
1934
|
-
|
|
1935
|
-
// 优化初始化时Scroll滚动体验问题,通过透明度解决,默认透明度为0,滚动结束后恢复
|
|
1936
|
-
this.elementRef.nativeElement.style.opacity = '1';
|
|
1937
|
-
this.ganttUpper.viewChange.pipe(startWith(null), takeUntil(this.unsubscribe$)).subscribe(() => {
|
|
1938
|
-
this.scrollToToday();
|
|
1939
|
-
});
|
|
1940
|
-
});
|
|
1941
|
-
});
|
|
2012
|
+
monitorScrollChange() {
|
|
2013
|
+
this.ngZone.runOutsideAngular(() => merge(fromEvent(this.mainContainer, 'scroll', passiveListenerOptions), fromEvent(this.sideContainer, 'scroll', passiveListenerOptions))
|
|
2014
|
+
.pipe(takeUntil(this.unsubscribe$))
|
|
2015
|
+
.subscribe((event) => {
|
|
2016
|
+
this.syncScroll(event);
|
|
2017
|
+
}));
|
|
2018
|
+
// fromEvent(this.mainContainer, 'scroll')
|
|
2019
|
+
// .pipe(startWith(), takeUntil(this.unsubscribe$))
|
|
2020
|
+
// .subscribe((event) => {
|
|
2021
|
+
// // if (this.mainContainer.scrollLeft > 0) {
|
|
2022
|
+
// // this.side.classList.add('gantt-side-has-shadow');
|
|
2023
|
+
// // } else {
|
|
2024
|
+
// // this.side.classList.remove('gantt-side-has-shadow');
|
|
2025
|
+
// // }
|
|
2026
|
+
// });
|
|
1942
2027
|
}
|
|
1943
|
-
|
|
1944
|
-
|
|
2028
|
+
syncScroll(event) {
|
|
2029
|
+
const target = event.currentTarget;
|
|
2030
|
+
this.calendarOverlay.scrollLeft = this.mainContainer.scrollLeft;
|
|
2031
|
+
this.sideContainer.scrollTop = target.scrollTop;
|
|
2032
|
+
this.mainContainer.scrollTop = target.scrollTop;
|
|
1945
2033
|
}
|
|
1946
|
-
|
|
1947
|
-
|
|
1948
|
-
|
|
1949
|
-
}
|
|
1950
|
-
this.dom
|
|
1951
|
-
.getViewerScroll(passiveListenerOptions)
|
|
2034
|
+
disableBrowserWheelEvent() {
|
|
2035
|
+
const container = this.mainContainer;
|
|
2036
|
+
this.ngZone.runOutsideAngular(() => fromEvent(container, 'wheel')
|
|
1952
2037
|
.pipe(takeUntil(this.unsubscribe$))
|
|
1953
2038
|
.subscribe((event) => {
|
|
1954
|
-
|
|
1955
|
-
|
|
1956
|
-
|
|
1957
|
-
|
|
1958
|
-
|
|
1959
|
-
|
|
1960
|
-
|
|
2039
|
+
const delta = event.deltaX;
|
|
2040
|
+
if (!delta) {
|
|
2041
|
+
return;
|
|
2042
|
+
}
|
|
2043
|
+
if ((container.scrollLeft + container.offsetWidth === container.scrollWidth && delta > 0) ||
|
|
2044
|
+
(container.scrollLeft === 0 && delta < 0)) {
|
|
2045
|
+
event.preventDefault();
|
|
2046
|
+
}
|
|
2047
|
+
}));
|
|
2048
|
+
}
|
|
2049
|
+
initialize(root) {
|
|
2050
|
+
this.root = root.nativeElement;
|
|
2051
|
+
this.side = this.root.getElementsByClassName('gantt-side')[0];
|
|
2052
|
+
this.container = this.root.getElementsByClassName('gantt-container')[0];
|
|
2053
|
+
this.sideContainer = this.root.getElementsByClassName('gantt-side-container')[0];
|
|
2054
|
+
this.mainContainer = this.root.getElementsByClassName('gantt-main-container')[0];
|
|
2055
|
+
this.calendarOverlay = this.root.getElementsByClassName('gantt-calendar-overlay')[0];
|
|
2056
|
+
this.monitorScrollChange();
|
|
2057
|
+
this.disableBrowserWheelEvent();
|
|
2058
|
+
}
|
|
2059
|
+
/**
|
|
2060
|
+
* @returns An observable that will emit outside the Angular zone. Note, consumers should re-enter the Angular zone
|
|
2061
|
+
* to run the change detection if needed.
|
|
2062
|
+
*/
|
|
2063
|
+
getViewerScroll(options) {
|
|
2064
|
+
return new Observable((subscriber) => this.ngZone.runOutsideAngular(() => fromEvent(this.mainContainer, 'scroll', options)
|
|
2065
|
+
.pipe(map(() => this.mainContainer.scrollLeft), pairwise(), map(([previous, current]) => {
|
|
2066
|
+
const event = {
|
|
2067
|
+
target: this.mainContainer,
|
|
2068
|
+
direction: ScrollDirection.NONE
|
|
2069
|
+
};
|
|
2070
|
+
if (current - previous < 0) {
|
|
2071
|
+
if (this.mainContainer.scrollLeft < scrollThreshold && this.mainContainer.scrollLeft > 0) {
|
|
2072
|
+
event.direction = ScrollDirection.LEFT;
|
|
1961
2073
|
}
|
|
1962
2074
|
}
|
|
1963
|
-
if (
|
|
1964
|
-
|
|
1965
|
-
|
|
1966
|
-
|
|
2075
|
+
if (current - previous > 0) {
|
|
2076
|
+
if (this.mainContainer.scrollWidth - this.mainContainer.clientWidth - this.mainContainer.scrollLeft <
|
|
2077
|
+
scrollThreshold) {
|
|
2078
|
+
event.direction = ScrollDirection.RIGHT;
|
|
1967
2079
|
}
|
|
1968
2080
|
}
|
|
1969
|
-
|
|
2081
|
+
return event;
|
|
2082
|
+
}))
|
|
2083
|
+
.subscribe(subscriber)));
|
|
1970
2084
|
}
|
|
1971
|
-
|
|
1972
|
-
this.
|
|
1973
|
-
.getResize()
|
|
1974
|
-
.pipe(takeUntil(this.unsubscribe$))
|
|
1975
|
-
.subscribe(() => {
|
|
1976
|
-
this.setupScrollClass();
|
|
1977
|
-
});
|
|
2085
|
+
getResize() {
|
|
2086
|
+
return isPlatformServer(this.platformId) ? EMPTY : fromEvent(window, 'resize').pipe(auditTime(150));
|
|
1978
2087
|
}
|
|
1979
|
-
|
|
1980
|
-
|
|
1981
|
-
|
|
1982
|
-
|
|
1983
|
-
|
|
1984
|
-
this.elementRef.nativeElement.className = 'gantt gantt-scroll';
|
|
1985
|
-
}
|
|
1986
|
-
else {
|
|
1987
|
-
this.elementRef.nativeElement.className = 'gantt';
|
|
2088
|
+
scrollMainContainer(left) {
|
|
2089
|
+
if (isNumber(left)) {
|
|
2090
|
+
const scrollLeft = left - this.mainContainer.clientWidth / 2;
|
|
2091
|
+
this.mainContainer.scrollLeft = scrollLeft > scrollThreshold ? scrollLeft : 0;
|
|
2092
|
+
this.calendarOverlay.scrollLeft = this.mainContainer.scrollLeft;
|
|
1988
2093
|
}
|
|
1989
2094
|
}
|
|
1990
|
-
|
|
1991
|
-
|
|
1992
|
-
this.
|
|
2095
|
+
ngOnDestroy() {
|
|
2096
|
+
this.unsubscribe$.next();
|
|
2097
|
+
this.unsubscribe$.complete();
|
|
1993
2098
|
}
|
|
1994
2099
|
}
|
|
1995
|
-
|
|
1996
|
-
|
|
1997
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
1998
|
-
type:
|
|
1999
|
-
args: [{ selector: 'ngx-gantt-root', providers: [GanttDomService, GanttDragContainer], host: {
|
|
2000
|
-
class: 'gantt'
|
|
2001
|
-
}, template: "<div class=\"gantt-side\" [style.width.px]=\"sideWidth\">\n <div class=\"gantt-side-container\">\n <ng-template [ngTemplateOutlet]=\"sideTemplate\"></ng-template>\n </div>\n</div>\n<div class=\"gantt-container\">\n <gantt-calendar-overlay></gantt-calendar-overlay>\n <gantt-drag-backdrop></gantt-drag-backdrop>\n <div class=\"gantt-main\">\n <ng-template [ngTemplateOutlet]=\"mainTemplate\"></ng-template>\n </div>\n</div>\n" }]
|
|
2100
|
+
GanttDomService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.1.3", ngImport: i0, type: GanttDomService, deps: [{ token: i0.NgZone }, { token: PLATFORM_ID }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
2101
|
+
GanttDomService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "14.1.3", ngImport: i0, type: GanttDomService });
|
|
2102
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.1.3", ngImport: i0, type: GanttDomService, decorators: [{
|
|
2103
|
+
type: Injectable
|
|
2002
2104
|
}], ctorParameters: function () {
|
|
2003
|
-
return [{ type: i0.
|
|
2105
|
+
return [{ type: i0.NgZone }, { type: undefined, decorators: [{
|
|
2004
2106
|
type: Inject,
|
|
2005
|
-
args: [
|
|
2006
|
-
}] }, { type: GanttPrintService, decorators: [{
|
|
2007
|
-
type: Optional
|
|
2107
|
+
args: [PLATFORM_ID]
|
|
2008
2108
|
}] }];
|
|
2009
|
-
}
|
|
2010
|
-
type: Input
|
|
2011
|
-
}], sideTemplate: [{
|
|
2012
|
-
type: ContentChild,
|
|
2013
|
-
args: ['sideTemplate', { static: true }]
|
|
2014
|
-
}], mainTemplate: [{
|
|
2015
|
-
type: ContentChild,
|
|
2016
|
-
args: ['mainTemplate', { static: true }]
|
|
2017
|
-
}], backdrop: [{
|
|
2018
|
-
type: ViewChild,
|
|
2019
|
-
args: [GanttDragBackdropComponent, { static: true, read: ElementRef }]
|
|
2020
|
-
}] } });
|
|
2109
|
+
} });
|
|
2021
2110
|
|
|
2022
|
-
class
|
|
2023
|
-
constructor() { }
|
|
2024
|
-
generatePath(source, target, type) {
|
|
2025
|
-
if (source.before && source.after && target.before && target.after) {
|
|
2026
|
-
let path = '';
|
|
2027
|
-
switch (type) {
|
|
2028
|
-
case GanttLinkType.ss:
|
|
2029
|
-
path = this.generateSSPath(source, target);
|
|
2030
|
-
break;
|
|
2031
|
-
case GanttLinkType.ff:
|
|
2032
|
-
path = this.generateFFPath(source, target);
|
|
2033
|
-
break;
|
|
2034
|
-
case GanttLinkType.sf:
|
|
2035
|
-
path = this.generateFSAndSFPath(source, target, type);
|
|
2036
|
-
break;
|
|
2037
|
-
default:
|
|
2038
|
-
path = this.generateFSAndSFPath(source, target);
|
|
2039
|
-
}
|
|
2040
|
-
return path;
|
|
2041
|
-
}
|
|
2042
|
-
}
|
|
2111
|
+
class GanttDragBackdropComponent {
|
|
2043
2112
|
}
|
|
2113
|
+
GanttDragBackdropComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.1.3", ngImport: i0, type: GanttDragBackdropComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
2114
|
+
GanttDragBackdropComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.1.3", type: GanttDragBackdropComponent, selector: "gantt-drag-backdrop", host: { classAttribute: "gantt-drag-backdrop" }, ngImport: i0, template: "<div class=\"gantt-drag-mask\">\n <div class=\"date-range\">\n <span class=\"start\"></span>\n <span class=\"end\"></span>\n </div>\n</div>\n" });
|
|
2115
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.1.3", ngImport: i0, type: GanttDragBackdropComponent, decorators: [{
|
|
2116
|
+
type: Component,
|
|
2117
|
+
args: [{ selector: 'gantt-drag-backdrop', host: {
|
|
2118
|
+
class: 'gantt-drag-backdrop'
|
|
2119
|
+
}, template: "<div class=\"gantt-drag-mask\">\n <div class=\"date-range\">\n <span class=\"start\"></span>\n <span class=\"end\"></span>\n </div>\n</div>\n" }]
|
|
2120
|
+
}] });
|
|
2044
2121
|
|
|
2045
|
-
|
|
2046
|
-
constructor(
|
|
2047
|
-
|
|
2048
|
-
|
|
2049
|
-
|
|
2050
|
-
|
|
2051
|
-
const x1 = source.before.x;
|
|
2052
|
-
const y1 = source.before.y;
|
|
2053
|
-
const x4 = target.before.x;
|
|
2054
|
-
const y4 = target.before.y;
|
|
2055
|
-
const isMirror = y4 > y1 ? 0 : 1;
|
|
2056
|
-
const radius = Math.abs(y4 - y1) / 2;
|
|
2057
|
-
if (x4 > x1) {
|
|
2058
|
-
return `M ${x1} ${y1}
|
|
2059
|
-
A ${radius} ${radius} 0 1 ${isMirror} ${x1} ${y4}
|
|
2060
|
-
L ${x4} ${y4}`;
|
|
2061
|
-
}
|
|
2062
|
-
else {
|
|
2063
|
-
return `M ${x1} ${y1}
|
|
2064
|
-
L ${x4} ${y1}
|
|
2065
|
-
A ${radius} ${radius} 0 1 ${isMirror} ${x4} ${y4}`;
|
|
2066
|
-
}
|
|
2067
|
-
}
|
|
2068
|
-
generateFFPath(source, target) {
|
|
2069
|
-
const x1 = source.after.x;
|
|
2070
|
-
const y1 = source.after.y;
|
|
2071
|
-
const x4 = target.after.x;
|
|
2072
|
-
const y4 = target.after.y;
|
|
2073
|
-
const isMirror = y4 > y1 ? 1 : 0;
|
|
2074
|
-
const radius = Math.abs(y4 - y1) / 2;
|
|
2075
|
-
if (x4 > x1) {
|
|
2076
|
-
return `M ${x1} ${y1}
|
|
2077
|
-
L ${x4} ${y1}
|
|
2078
|
-
A ${radius} ${radius} 0 1 ${isMirror} ${x4} ${y4}`;
|
|
2079
|
-
}
|
|
2080
|
-
else {
|
|
2081
|
-
return `M ${x1} ${y1}
|
|
2082
|
-
A ${radius} ${radius} 0 1 ${isMirror} ${x1} ${y4}
|
|
2083
|
-
L ${x4} ${y4}`;
|
|
2122
|
+
class GanttPrintService {
|
|
2123
|
+
constructor() { }
|
|
2124
|
+
setInlineStyles(targetElem) {
|
|
2125
|
+
const svgElements = Array.from(targetElem.getElementsByTagName('svg'));
|
|
2126
|
+
for (const svgElement of svgElements) {
|
|
2127
|
+
this.recursElementChildren(svgElement);
|
|
2084
2128
|
}
|
|
2085
2129
|
}
|
|
2086
|
-
|
|
2087
|
-
|
|
2088
|
-
|
|
2089
|
-
|
|
2090
|
-
|
|
2091
|
-
|
|
2092
|
-
|
|
2093
|
-
|
|
2094
|
-
|
|
2095
|
-
|
|
2096
|
-
|
|
2097
|
-
|
|
2130
|
+
recursElementChildren(node) {
|
|
2131
|
+
const transformProperties = [
|
|
2132
|
+
'fill',
|
|
2133
|
+
'color',
|
|
2134
|
+
'font-size',
|
|
2135
|
+
'stroke',
|
|
2136
|
+
'font',
|
|
2137
|
+
'text-anchor',
|
|
2138
|
+
'stroke-dasharray',
|
|
2139
|
+
'shape-rendering',
|
|
2140
|
+
'stroke-width'
|
|
2141
|
+
];
|
|
2142
|
+
if (!node.style) {
|
|
2143
|
+
return;
|
|
2098
2144
|
}
|
|
2099
|
-
|
|
2100
|
-
|
|
2101
|
-
|
|
2102
|
-
const centerX = (x1 + x4) / 2;
|
|
2103
|
-
const centerY = (y1 + y4) / 2;
|
|
2104
|
-
let controlX = this.ganttUpper.styles.lineHeight / 2;
|
|
2105
|
-
const controlY = this.ganttUpper.styles.lineHeight / 2;
|
|
2106
|
-
if (x1 >= x4) {
|
|
2107
|
-
if (Math.abs(y4 - y1) <= this.ganttUpper.styles.lineHeight) {
|
|
2108
|
-
return `M ${x1} ${y1}
|
|
2109
|
-
C ${x1 + controlX} ${y1} ${x1 + controlX} ${y4 > y1 ? y1 + controlX : y1 - controlX} ${x1} ${y4 > y1 ? y1 + controlY : y1 - controlY}
|
|
2110
|
-
L ${x4} ${y4 > y1 ? y4 - controlY : y4 + controlY}
|
|
2111
|
-
C ${x4 - controlY} ${y4 > y1 ? y4 - controlY : y4 + controlY} ${x4 - controlX} ${y4} ${x4} ${y4}
|
|
2112
|
-
`;
|
|
2113
|
-
}
|
|
2114
|
-
else {
|
|
2115
|
-
controlX = this.ganttUpper.styles.lineHeight;
|
|
2116
|
-
return `M ${x1} ${y1}
|
|
2117
|
-
C ${x1 + controlX} ${y1} ${x1 + controlX} ${y4 > y1 ? y1 + controlX : y1 - controlX} ${centerX} ${centerY}
|
|
2118
|
-
C ${x4 - controlX} ${y4 > y1 ? y4 - controlX : y4 + controlX} ${x4 - controlX} ${y4} ${x4} ${y4}
|
|
2119
|
-
`;
|
|
2120
|
-
}
|
|
2145
|
+
const styles = getComputedStyle(node);
|
|
2146
|
+
for (const transformProperty of transformProperties) {
|
|
2147
|
+
node.style[transformProperty] = styles[transformProperty];
|
|
2121
2148
|
}
|
|
2122
|
-
|
|
2123
|
-
|
|
2124
|
-
x2 = x1 + dx;
|
|
2125
|
-
x3 = x4 - dx;
|
|
2126
|
-
return `M ${x1} ${y1} C ${x2} ${y1} ${x3} ${y4} ${x4} ${y4}`;
|
|
2149
|
+
for (const child of Array.from(node.childNodes)) {
|
|
2150
|
+
this.recursElementChildren(child);
|
|
2127
2151
|
}
|
|
2128
|
-
return `M ${x1} ${y1} C ${x2} ${y1} ${x3} ${y4} ${x4} ${y4}`;
|
|
2129
2152
|
}
|
|
2130
|
-
|
|
2131
|
-
|
|
2132
|
-
|
|
2133
|
-
], GanttLinkLineCurve);
|
|
2134
|
-
|
|
2135
|
-
class GanttLinkLineStraight extends GanttLinkLine {
|
|
2136
|
-
constructor() {
|
|
2137
|
-
super();
|
|
2138
|
-
this.pathControl = 20;
|
|
2139
|
-
}
|
|
2140
|
-
generateSSPath(source, target) {
|
|
2141
|
-
const x1 = source.before.x;
|
|
2142
|
-
const y1 = source.before.y;
|
|
2143
|
-
const x4 = target.before.x;
|
|
2144
|
-
const y4 = target.before.y;
|
|
2145
|
-
const control = this.pathControl;
|
|
2146
|
-
return `M ${x1} ${y1}
|
|
2147
|
-
L ${x4 > x1 ? x1 - control : x4 - control} ${y1}
|
|
2148
|
-
L ${x4 > x1 ? x1 - control : x4 - control} ${y4}
|
|
2149
|
-
L ${x4} ${y4}`;
|
|
2150
|
-
}
|
|
2151
|
-
generateFFPath(source, target) {
|
|
2152
|
-
const x1 = source.after.x;
|
|
2153
|
-
const y1 = source.after.y;
|
|
2154
|
-
const x4 = target.after.x;
|
|
2155
|
-
const y4 = target.after.y;
|
|
2156
|
-
const control = this.pathControl;
|
|
2157
|
-
return `M ${x1} ${y1}
|
|
2158
|
-
L ${x4 > x1 ? x4 + control : x1 + control} ${y1}
|
|
2159
|
-
L ${x4 > x1 ? x4 + control : x1 + control} ${y4}
|
|
2160
|
-
L ${x4} ${y4}`;
|
|
2161
|
-
}
|
|
2162
|
-
generateFSAndSFPath(source, target, type) {
|
|
2163
|
-
let x1 = source.after.x;
|
|
2164
|
-
let y1 = source.after.y;
|
|
2165
|
-
let x4 = target.before.x;
|
|
2166
|
-
let y4 = target.before.y;
|
|
2167
|
-
const control = this.pathControl;
|
|
2168
|
-
if (type === GanttLinkType.sf) {
|
|
2169
|
-
x1 = target.after.x;
|
|
2170
|
-
y1 = target.after.y;
|
|
2171
|
-
x4 = source.before.x;
|
|
2172
|
-
y4 = source.before.y;
|
|
2173
|
-
}
|
|
2174
|
-
if (x4 - x1 >= 40) {
|
|
2175
|
-
return `M ${x1} ${y1}
|
|
2176
|
-
L ${x1 + control} ${y1}
|
|
2177
|
-
L ${x1 + control} ${y4}
|
|
2178
|
-
L ${x4} ${y4}`;
|
|
2179
|
-
}
|
|
2180
|
-
else {
|
|
2181
|
-
return `M ${x1} ${y1}
|
|
2182
|
-
L ${x1 + control} ${y1}
|
|
2183
|
-
L ${x1 + control} ${y4 > y1 ? y1 + control : y1 - control}
|
|
2184
|
-
L ${x4 - control} ${y4 > y1 ? y1 + control : y1 - control}
|
|
2185
|
-
L ${x4 - control} ${y4}
|
|
2186
|
-
L ${x4} ${y4}`;
|
|
2187
|
-
}
|
|
2153
|
+
register(root) {
|
|
2154
|
+
this.root = root.nativeElement;
|
|
2155
|
+
this.mainContainer = this.root.getElementsByClassName('gantt-main-container')[0];
|
|
2188
2156
|
}
|
|
2189
|
-
|
|
2190
|
-
|
|
2191
|
-
|
|
2192
|
-
|
|
2193
|
-
|
|
2194
|
-
|
|
2195
|
-
|
|
2196
|
-
|
|
2197
|
-
|
|
2198
|
-
|
|
2157
|
+
print(name = 'download', ignoreElementClass) {
|
|
2158
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
2159
|
+
const root = this.root;
|
|
2160
|
+
const mainContainer = this.mainContainer;
|
|
2161
|
+
// set print width
|
|
2162
|
+
const printWidth = root.offsetWidth;
|
|
2163
|
+
// set print height
|
|
2164
|
+
const printHeight = root.offsetHeight - mainContainer.offsetHeight + mainContainer.scrollHeight;
|
|
2165
|
+
const html2canvas = (yield import(/* webpackChunkName: 'html2canvas' */ 'html2canvas')).default;
|
|
2166
|
+
html2canvas(root, {
|
|
2167
|
+
logging: false,
|
|
2168
|
+
allowTaint: true,
|
|
2169
|
+
useCORS: true,
|
|
2170
|
+
width: printWidth,
|
|
2171
|
+
height: printHeight,
|
|
2172
|
+
ignoreElements: (element) => {
|
|
2173
|
+
if (ignoreElementClass && element.classList.contains(ignoreElementClass)) {
|
|
2174
|
+
return true;
|
|
2175
|
+
}
|
|
2176
|
+
if (element.classList.contains('gantt-calendar-today-overlay')) {
|
|
2177
|
+
return true;
|
|
2178
|
+
}
|
|
2179
|
+
},
|
|
2180
|
+
onclone: (cloneDocument) => {
|
|
2181
|
+
const ganttClass = root.className;
|
|
2182
|
+
const cloneGanttDom = cloneDocument.querySelector(`.${ganttClass.replace(/\s+/g, '.')}`);
|
|
2183
|
+
const cloneGanttContainerDom = cloneDocument.querySelector('.gantt-container');
|
|
2184
|
+
const cloneCalendarOverlay = cloneDocument.querySelector('.gantt-calendar-overlay-main');
|
|
2185
|
+
const cloneLinksOverlay = cloneDocument.querySelector('.gantt-links-overlay-main');
|
|
2186
|
+
// change targetDom width
|
|
2187
|
+
cloneGanttDom.style.width = `${printWidth}px`;
|
|
2188
|
+
cloneGanttDom.style.height = `${printHeight}px`;
|
|
2189
|
+
cloneGanttDom.style.overflow = `unset`;
|
|
2190
|
+
cloneGanttContainerDom.style.backgroundColor = '#fff';
|
|
2191
|
+
cloneCalendarOverlay.setAttribute('height', `${printHeight}`);
|
|
2192
|
+
cloneCalendarOverlay.setAttribute('style', `background: transparent`);
|
|
2193
|
+
if (cloneLinksOverlay) {
|
|
2194
|
+
cloneLinksOverlay.setAttribute('height', `${printHeight}`);
|
|
2195
|
+
cloneLinksOverlay.setAttribute('style', `height: ${printHeight}px`);
|
|
2196
|
+
}
|
|
2197
|
+
// setInlineStyles for svg
|
|
2198
|
+
this.setInlineStyles(cloneGanttDom);
|
|
2199
|
+
}
|
|
2200
|
+
}).then((canvas) => {
|
|
2201
|
+
const link = document.createElement('a');
|
|
2202
|
+
const dataUrl = canvas.toDataURL('image/png');
|
|
2203
|
+
link.download = `${name}.png`;
|
|
2204
|
+
link.href = dataUrl;
|
|
2205
|
+
link.click();
|
|
2206
|
+
});
|
|
2207
|
+
});
|
|
2199
2208
|
}
|
|
2200
2209
|
}
|
|
2210
|
+
GanttPrintService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.1.3", ngImport: i0, type: GanttPrintService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
2211
|
+
GanttPrintService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "14.1.3", ngImport: i0, type: GanttPrintService });
|
|
2212
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.1.3", ngImport: i0, type: GanttPrintService, decorators: [{
|
|
2213
|
+
type: Injectable
|
|
2214
|
+
}], ctorParameters: function () { return []; } });
|
|
2201
2215
|
|
|
2202
|
-
|
|
2203
|
-
|
|
2216
|
+
const mainHeight = 5000;
|
|
2217
|
+
class GanttCalendarComponent {
|
|
2218
|
+
constructor(ganttUpper, ngZone, elementRef) {
|
|
2204
2219
|
this.ganttUpper = ganttUpper;
|
|
2205
|
-
this.
|
|
2220
|
+
this.ngZone = ngZone;
|
|
2206
2221
|
this.elementRef = elementRef;
|
|
2207
|
-
this.
|
|
2208
|
-
this.
|
|
2209
|
-
this.
|
|
2210
|
-
this.
|
|
2211
|
-
this.
|
|
2212
|
-
this.
|
|
2213
|
-
this.
|
|
2214
|
-
this.linkItems = [];
|
|
2215
|
-
this.firstChange = true;
|
|
2222
|
+
this.headerHeight = headerHeight;
|
|
2223
|
+
this.mainHeight = mainHeight;
|
|
2224
|
+
this.todayHeight = todayHeight;
|
|
2225
|
+
this.todayWidth = todayWidth;
|
|
2226
|
+
this.todayBorderRadius = todayBorderRadius;
|
|
2227
|
+
this.viewTypes = GanttViewType;
|
|
2228
|
+
this.className = true;
|
|
2216
2229
|
this.unsubscribe$ = new Subject();
|
|
2217
|
-
this.ganttLinksOverlay = true;
|
|
2218
2230
|
}
|
|
2219
|
-
|
|
2220
|
-
|
|
2221
|
-
this.showArrow = this.ganttUpper.linkOptions.showArrow;
|
|
2222
|
-
this.buildLinks();
|
|
2223
|
-
this.firstChange = false;
|
|
2224
|
-
this.ganttDragContainer.dragStarted.pipe(takeUntil(this.unsubscribe$)).subscribe(() => {
|
|
2225
|
-
this.elementRef.nativeElement.style.visibility = 'hidden';
|
|
2226
|
-
});
|
|
2227
|
-
merge(this.ganttUpper.viewChange, this.ganttUpper.expandChange, this.ganttUpper.view.start$, this.ganttUpper.dragEnded, this.ganttUpper.linkDragEnded)
|
|
2228
|
-
.pipe(skip(1), debounceTime(0), takeUntil(this.unsubscribe$))
|
|
2229
|
-
.subscribe(() => {
|
|
2230
|
-
this.elementRef.nativeElement.style.visibility = 'visible';
|
|
2231
|
-
this.buildLinks();
|
|
2232
|
-
this.cdr.detectChanges();
|
|
2233
|
-
});
|
|
2234
|
-
}
|
|
2235
|
-
ngOnChanges() {
|
|
2236
|
-
if (!this.firstChange) {
|
|
2237
|
-
this.buildLinks();
|
|
2238
|
-
}
|
|
2231
|
+
get view() {
|
|
2232
|
+
return this.ganttUpper.view;
|
|
2239
2233
|
}
|
|
2240
|
-
|
|
2241
|
-
const
|
|
2242
|
-
const
|
|
2243
|
-
|
|
2244
|
-
|
|
2245
|
-
|
|
2246
|
-
|
|
2247
|
-
|
|
2248
|
-
|
|
2249
|
-
|
|
2250
|
-
|
|
2251
|
-
|
|
2252
|
-
|
|
2253
|
-
|
|
2254
|
-
|
|
2255
|
-
|
|
2256
|
-
|
|
2257
|
-
x: item.refs.x + item.refs.width,
|
|
2258
|
-
y
|
|
2259
|
-
} }));
|
|
2260
|
-
});
|
|
2261
|
-
itemNum += items.length;
|
|
2262
|
-
}
|
|
2263
|
-
});
|
|
2234
|
+
setTodayPoint() {
|
|
2235
|
+
const x = this.view.getTodayXPoint();
|
|
2236
|
+
const today = new GanttDate().getDate();
|
|
2237
|
+
const todayEle = this.elementRef.nativeElement.getElementsByClassName('gantt-calendar-today-overlay')[0];
|
|
2238
|
+
const rect = this.elementRef.nativeElement.getElementsByClassName('today-rect')[0];
|
|
2239
|
+
const line = this.elementRef.nativeElement.getElementsByClassName('today-line')[0];
|
|
2240
|
+
if (isNumber(x)) {
|
|
2241
|
+
if (rect) {
|
|
2242
|
+
rect.style.left = `${x - todayWidth / 2}px`;
|
|
2243
|
+
rect.style.top = `${headerHeight - todayHeight}px`;
|
|
2244
|
+
rect.innerHTML = today.toString();
|
|
2245
|
+
}
|
|
2246
|
+
if (line) {
|
|
2247
|
+
line.style.left = `${x}px`;
|
|
2248
|
+
line.style.top = `${headerHeight}px`;
|
|
2249
|
+
line.style.bottom = `${-mainHeight}px`;
|
|
2250
|
+
}
|
|
2264
2251
|
}
|
|
2265
2252
|
else {
|
|
2266
|
-
|
|
2267
|
-
items.forEach((item, itemIndex) => {
|
|
2268
|
-
const y = itemIndex * lineHeight + item.refs.y + barHeight / 2;
|
|
2269
|
-
this.linkItems.push(Object.assign(Object.assign({}, item), { before: {
|
|
2270
|
-
x: item.refs.x,
|
|
2271
|
-
y
|
|
2272
|
-
}, after: {
|
|
2273
|
-
x: item.refs.x + item.refs.width,
|
|
2274
|
-
y
|
|
2275
|
-
} }));
|
|
2276
|
-
});
|
|
2253
|
+
todayEle.style.display = 'none';
|
|
2277
2254
|
}
|
|
2278
2255
|
}
|
|
2279
|
-
|
|
2280
|
-
|
|
2281
|
-
|
|
2282
|
-
this.
|
|
2283
|
-
|
|
2284
|
-
|
|
2285
|
-
|
|
2286
|
-
|
|
2287
|
-
|
|
2288
|
-
|
|
2289
|
-
|
|
2290
|
-
|
|
2291
|
-
|
|
2292
|
-
|
|
2293
|
-
|
|
2294
|
-
if (typeof link.color === 'string') {
|
|
2295
|
-
defaultColor = link.color;
|
|
2296
|
-
activeColor = link.color;
|
|
2297
|
-
}
|
|
2298
|
-
else {
|
|
2299
|
-
defaultColor = link.color.default;
|
|
2300
|
-
activeColor = link.color.active;
|
|
2301
|
-
}
|
|
2302
|
-
}
|
|
2303
|
-
this.links.push({
|
|
2304
|
-
path: this.linkLine.generatePath(source, target, link.type),
|
|
2305
|
-
source: source.origin,
|
|
2306
|
-
target: target.origin,
|
|
2307
|
-
type: link.type,
|
|
2308
|
-
color: defaultColor,
|
|
2309
|
-
defaultColor,
|
|
2310
|
-
activeColor
|
|
2311
|
-
});
|
|
2312
|
-
}
|
|
2313
|
-
});
|
|
2314
|
-
}
|
|
2315
|
-
});
|
|
2316
|
-
}
|
|
2317
|
-
trackBy(index) {
|
|
2318
|
-
return index;
|
|
2319
|
-
}
|
|
2320
|
-
onLineClick(event, link) {
|
|
2321
|
-
this.lineClick.emit({
|
|
2322
|
-
event,
|
|
2323
|
-
source: link.source,
|
|
2324
|
-
target: link.target
|
|
2325
|
-
});
|
|
2326
|
-
}
|
|
2327
|
-
mouseEnterPath(link, index) {
|
|
2328
|
-
link.color = link.activeColor || link.defaultColor;
|
|
2329
|
-
if (index < this.links.length - 1) {
|
|
2330
|
-
this.links.splice(index, 1);
|
|
2331
|
-
this.links.push(link);
|
|
2332
|
-
}
|
|
2256
|
+
ngOnInit() {
|
|
2257
|
+
// Note: the zone may be nooped through `BootstrapOptions` when bootstrapping the root module. This means
|
|
2258
|
+
// the `onStable` will never emit any value.
|
|
2259
|
+
const onStable$ = this.ngZone.isStable ? from(Promise.resolve()) : this.ngZone.onStable.pipe(take(1));
|
|
2260
|
+
// Normally this isn't in the zone, but it can cause performance regressions for apps
|
|
2261
|
+
// using `zone-patch-rxjs` because it'll trigger a change detection when it unsubscribes.
|
|
2262
|
+
this.ngZone.runOutsideAngular(() => {
|
|
2263
|
+
onStable$.pipe(takeUntil(this.unsubscribe$)).subscribe(() => {
|
|
2264
|
+
merge(this.ganttUpper.viewChange, this.ganttUpper.view.start$)
|
|
2265
|
+
.pipe(takeUntil(this.unsubscribe$))
|
|
2266
|
+
.subscribe(() => {
|
|
2267
|
+
this.setTodayPoint();
|
|
2268
|
+
});
|
|
2269
|
+
});
|
|
2270
|
+
});
|
|
2333
2271
|
}
|
|
2334
|
-
|
|
2335
|
-
|
|
2272
|
+
trackBy(index, point) {
|
|
2273
|
+
return point.text || index;
|
|
2336
2274
|
}
|
|
2337
2275
|
ngOnDestroy() {
|
|
2338
2276
|
this.unsubscribe$.next();
|
|
2339
2277
|
this.unsubscribe$.complete();
|
|
2340
2278
|
}
|
|
2341
2279
|
}
|
|
2342
|
-
|
|
2343
|
-
|
|
2344
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
2280
|
+
GanttCalendarComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.1.3", ngImport: i0, type: GanttCalendarComponent, deps: [{ token: GANTT_UPPER_TOKEN }, { token: i0.NgZone }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component });
|
|
2281
|
+
GanttCalendarComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.1.3", type: GanttCalendarComponent, selector: "gantt-calendar-overlay", host: { properties: { "class.gantt-calendar-overlay": "this.className" } }, ngImport: i0, template: "<div class=\"gantt-calendar-today-overlay\" [style.width.px]=\"view.width\">\n <span class=\"today-rect\" [hidden]=\"ganttUpper.viewType !== viewTypes.day\"> </span>\n <span class=\"today-line\" *ngIf=\"ganttUpper.showTodayLine\"> </span>\n</div>\n\n<svg class=\"gantt-calendar-overlay-main\" [attr.width]=\"view.width\" [attr.height]=\"headerHeight\">\n <g>\n <text class=\"primary-text\" *ngFor=\"let point of view.primaryDatePoints; trackBy: trackBy\" [attr.x]=\"point.x\" [attr.y]=\"point.y\">\n {{ point.text }}\n </text>\n <ng-container *ngFor=\"let point of view.secondaryDatePoints; trackBy: trackBy\">\n <text class=\"secondary-text\" [class.secondary-text-weekend]=\"point.additions?.isWeekend\" [attr.x]=\"point.x\" [attr.y]=\"point.y\">\n {{ point.text }}\n </text>\n </ng-container>\n\n <g>\n <line\n *ngFor=\"let point of view.primaryDatePoints; let i = index; trackBy: trackBy\"\n [attr.x1]=\"(i + 1) * view.primaryWidth\"\n [attr.x2]=\"(i + 1) * view.primaryWidth\"\n [attr.y1]=\"0\"\n [attr.y2]=\"mainHeight\"\n class=\"primary-line\"\n ></line>\n </g>\n\n <g>\n <line [attr.x1]=\"0\" [attr.x2]=\"view.width\" [attr.y1]=\"headerHeight\" [attr.y2]=\"headerHeight\" class=\"header-line\"></line>\n </g>\n </g>\n <g>\n <g *ngIf=\"view.showTimeline\">\n <line\n *ngFor=\"let point of view.secondaryDatePoints; let i = index; trackBy: trackBy\"\n [attr.x1]=\"(i + 1) * view.cellWidth\"\n [attr.x2]=\"(i + 1) * view.cellWidth\"\n [attr.y1]=\"headerHeight\"\n [attr.y2]=\"mainHeight\"\n class=\"secondary-line\"\n ></line>\n <line\n *ngFor=\"let point of view.primaryDatePoints; let i = index; trackBy: trackBy\"\n [attr.x1]=\"(i + 1) * view.primaryWidth\"\n [attr.x2]=\"(i + 1) * view.primaryWidth\"\n [attr.y1]=\"0\"\n [attr.y2]=\"mainHeight\"\n class=\"primary-line\"\n ></line>\n </g>\n </g>\n</svg>\n", dependencies: [{ kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] });
|
|
2282
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.1.3", ngImport: i0, type: GanttCalendarComponent, decorators: [{
|
|
2345
2283
|
type: Component,
|
|
2346
|
-
args: [{ selector: 'gantt-
|
|
2284
|
+
args: [{ selector: 'gantt-calendar-overlay', template: "<div class=\"gantt-calendar-today-overlay\" [style.width.px]=\"view.width\">\n <span class=\"today-rect\" [hidden]=\"ganttUpper.viewType !== viewTypes.day\"> </span>\n <span class=\"today-line\" *ngIf=\"ganttUpper.showTodayLine\"> </span>\n</div>\n\n<svg class=\"gantt-calendar-overlay-main\" [attr.width]=\"view.width\" [attr.height]=\"headerHeight\">\n <g>\n <text class=\"primary-text\" *ngFor=\"let point of view.primaryDatePoints; trackBy: trackBy\" [attr.x]=\"point.x\" [attr.y]=\"point.y\">\n {{ point.text }}\n </text>\n <ng-container *ngFor=\"let point of view.secondaryDatePoints; trackBy: trackBy\">\n <text class=\"secondary-text\" [class.secondary-text-weekend]=\"point.additions?.isWeekend\" [attr.x]=\"point.x\" [attr.y]=\"point.y\">\n {{ point.text }}\n </text>\n </ng-container>\n\n <g>\n <line\n *ngFor=\"let point of view.primaryDatePoints; let i = index; trackBy: trackBy\"\n [attr.x1]=\"(i + 1) * view.primaryWidth\"\n [attr.x2]=\"(i + 1) * view.primaryWidth\"\n [attr.y1]=\"0\"\n [attr.y2]=\"mainHeight\"\n class=\"primary-line\"\n ></line>\n </g>\n\n <g>\n <line [attr.x1]=\"0\" [attr.x2]=\"view.width\" [attr.y1]=\"headerHeight\" [attr.y2]=\"headerHeight\" class=\"header-line\"></line>\n </g>\n </g>\n <g>\n <g *ngIf=\"view.showTimeline\">\n <line\n *ngFor=\"let point of view.secondaryDatePoints; let i = index; trackBy: trackBy\"\n [attr.x1]=\"(i + 1) * view.cellWidth\"\n [attr.x2]=\"(i + 1) * view.cellWidth\"\n [attr.y1]=\"headerHeight\"\n [attr.y2]=\"mainHeight\"\n class=\"secondary-line\"\n ></line>\n <line\n *ngFor=\"let point of view.primaryDatePoints; let i = index; trackBy: trackBy\"\n [attr.x1]=\"(i + 1) * view.primaryWidth\"\n [attr.x2]=\"(i + 1) * view.primaryWidth\"\n [attr.y1]=\"0\"\n [attr.y2]=\"mainHeight\"\n class=\"primary-line\"\n ></line>\n </g>\n </g>\n</svg>\n" }]
|
|
2347
2285
|
}], ctorParameters: function () {
|
|
2348
2286
|
return [{ type: GanttUpper, decorators: [{
|
|
2349
2287
|
type: Inject,
|
|
2350
2288
|
args: [GANTT_UPPER_TOKEN]
|
|
2351
|
-
}] }, { type: i0.
|
|
2352
|
-
}, propDecorators: {
|
|
2353
|
-
type: Input
|
|
2354
|
-
}], items: [{
|
|
2355
|
-
type: Input
|
|
2356
|
-
}], lineClick: [{
|
|
2357
|
-
type: Output
|
|
2358
|
-
}], ganttLinksOverlay: [{
|
|
2289
|
+
}] }, { type: i0.NgZone }, { type: i0.ElementRef }];
|
|
2290
|
+
}, propDecorators: { className: [{
|
|
2359
2291
|
type: HostBinding,
|
|
2360
|
-
args: ['class.gantt-
|
|
2292
|
+
args: ['class.gantt-calendar-overlay']
|
|
2361
2293
|
}] } });
|
|
2362
2294
|
|
|
2363
|
-
class
|
|
2364
|
-
constructor(elementRef, ganttUpper) {
|
|
2295
|
+
class NgxGanttRootComponent {
|
|
2296
|
+
constructor(elementRef, ngZone, dom, dragContainer, ganttUpper, printService) {
|
|
2365
2297
|
this.elementRef = elementRef;
|
|
2298
|
+
this.ngZone = ngZone;
|
|
2299
|
+
this.dom = dom;
|
|
2300
|
+
this.dragContainer = dragContainer;
|
|
2366
2301
|
this.ganttUpper = ganttUpper;
|
|
2367
|
-
this.
|
|
2302
|
+
this.printService = printService;
|
|
2368
2303
|
this.unsubscribe$ = new Subject();
|
|
2304
|
+
this.ganttUpper.dragContainer = dragContainer;
|
|
2305
|
+
}
|
|
2306
|
+
get view() {
|
|
2307
|
+
return this.ganttUpper.view;
|
|
2369
2308
|
}
|
|
2370
2309
|
ngOnInit() {
|
|
2371
|
-
|
|
2372
|
-
|
|
2373
|
-
|
|
2310
|
+
// Note: the zone may be nooped through `BootstrapOptions` when bootstrapping the root module. This means
|
|
2311
|
+
// the `onStable` will never emit any value.
|
|
2312
|
+
const onStable$ = this.ngZone.isStable ? from(Promise.resolve()) : this.ngZone.onStable.pipe(take(1));
|
|
2313
|
+
// Normally this isn't in the zone, but it can cause performance regressions for apps
|
|
2314
|
+
// using `zone-patch-rxjs` because it'll trigger a change detection when it unsubscribes.
|
|
2315
|
+
this.ngZone.runOutsideAngular(() => {
|
|
2316
|
+
onStable$.pipe(takeUntil(this.unsubscribe$)).subscribe(() => {
|
|
2317
|
+
this.dom.initialize(this.elementRef);
|
|
2318
|
+
if (this.printService) {
|
|
2319
|
+
this.printService.register(this.elementRef);
|
|
2320
|
+
}
|
|
2321
|
+
this.setupScrollClass();
|
|
2322
|
+
this.setupResize();
|
|
2323
|
+
this.setupViewScroll();
|
|
2324
|
+
// 优化初始化时Scroll滚动体验问题,通过透明度解决,默认透明度为0,滚动结束后恢复
|
|
2325
|
+
this.elementRef.nativeElement.style.opacity = '1';
|
|
2326
|
+
this.ganttUpper.viewChange.pipe(startWith(null), takeUntil(this.unsubscribe$)).subscribe(() => {
|
|
2327
|
+
this.scrollToToday();
|
|
2328
|
+
});
|
|
2329
|
+
});
|
|
2374
2330
|
});
|
|
2375
2331
|
}
|
|
2376
|
-
|
|
2377
|
-
|
|
2378
|
-
this.setPositions();
|
|
2379
|
-
}
|
|
2332
|
+
ngOnDestroy() {
|
|
2333
|
+
this.unsubscribe$.next();
|
|
2380
2334
|
}
|
|
2381
|
-
|
|
2382
|
-
|
|
2383
|
-
|
|
2384
|
-
itemElement.style.top = this.item.refs.y + 'px';
|
|
2385
|
-
itemElement.style.width = this.item.refs.width + 'px';
|
|
2386
|
-
if (this.item.type === GanttItemType.bar) {
|
|
2387
|
-
itemElement.style.height = this.ganttUpper.styles.barHeight + 'px';
|
|
2335
|
+
setupViewScroll() {
|
|
2336
|
+
if (this.ganttUpper.disabledLoadOnScroll) {
|
|
2337
|
+
return;
|
|
2388
2338
|
}
|
|
2389
|
-
|
|
2390
|
-
|
|
2339
|
+
this.dom
|
|
2340
|
+
.getViewerScroll(passiveListenerOptions)
|
|
2341
|
+
.pipe(takeUntil(this.unsubscribe$))
|
|
2342
|
+
.subscribe((event) => {
|
|
2343
|
+
if (event.direction === ScrollDirection.LEFT) {
|
|
2344
|
+
const dates = this.view.addStartDate();
|
|
2345
|
+
if (dates) {
|
|
2346
|
+
event.target.scrollLeft += this.view.getDateRangeWidth(dates.start, dates.end);
|
|
2347
|
+
if (this.ganttUpper.loadOnScroll.observers) {
|
|
2348
|
+
this.ngZone.run(() => this.ganttUpper.loadOnScroll.emit({ start: dates.start.getUnixTime(), end: dates.end.getUnixTime() }));
|
|
2349
|
+
}
|
|
2350
|
+
}
|
|
2351
|
+
}
|
|
2352
|
+
if (event.direction === ScrollDirection.RIGHT) {
|
|
2353
|
+
const dates = this.view.addEndDate();
|
|
2354
|
+
if (dates && this.ganttUpper.loadOnScroll.observers) {
|
|
2355
|
+
this.ngZone.run(() => this.ganttUpper.loadOnScroll.emit({ start: dates.start.getUnixTime(), end: dates.end.getUnixTime() }));
|
|
2356
|
+
}
|
|
2357
|
+
}
|
|
2358
|
+
});
|
|
2359
|
+
}
|
|
2360
|
+
setupResize() {
|
|
2361
|
+
this.dom
|
|
2362
|
+
.getResize()
|
|
2363
|
+
.pipe(takeUntil(this.unsubscribe$))
|
|
2364
|
+
.subscribe(() => {
|
|
2365
|
+
this.setupScrollClass();
|
|
2366
|
+
});
|
|
2367
|
+
}
|
|
2368
|
+
setupScrollClass() {
|
|
2369
|
+
const mainContainer = this.dom.mainContainer;
|
|
2370
|
+
const height = mainContainer.offsetHeight;
|
|
2371
|
+
const scrollHeight = mainContainer.scrollHeight;
|
|
2372
|
+
if (scrollHeight > height) {
|
|
2373
|
+
this.elementRef.nativeElement.className = 'gantt gantt-scroll';
|
|
2391
2374
|
}
|
|
2392
2375
|
else {
|
|
2376
|
+
this.elementRef.nativeElement.className = 'gantt';
|
|
2393
2377
|
}
|
|
2394
2378
|
}
|
|
2395
|
-
|
|
2396
|
-
this.
|
|
2397
|
-
this.
|
|
2379
|
+
scrollToToday() {
|
|
2380
|
+
const x = this.view.getTodayXPoint();
|
|
2381
|
+
this.dom.scrollMainContainer(x);
|
|
2398
2382
|
}
|
|
2399
|
-
|
|
2400
|
-
|
|
2401
|
-
|
|
2402
|
-
|
|
2403
|
-
|
|
2404
|
-
|
|
2405
|
-
|
|
2406
|
-
|
|
2407
|
-
|
|
2408
|
-
}] }];
|
|
2409
|
-
}, propDecorators: { template: [{
|
|
2410
|
-
type: Input
|
|
2411
|
-
}], item: [{
|
|
2412
|
-
type: Input
|
|
2413
|
-
}] } });
|
|
2414
|
-
|
|
2415
|
-
class NgxGanttRangeComponent extends GanttItemUpper {
|
|
2416
|
-
constructor(elementRef, ganttUpper) {
|
|
2417
|
-
super(elementRef, ganttUpper);
|
|
2418
|
-
this.ganttRangeClass = true;
|
|
2383
|
+
scrollToDate(date) {
|
|
2384
|
+
let x;
|
|
2385
|
+
if (typeof date === 'number') {
|
|
2386
|
+
x = this.view.getXPointByDate(new GanttDate(date));
|
|
2387
|
+
}
|
|
2388
|
+
else {
|
|
2389
|
+
x = this.view.getXPointByDate(date);
|
|
2390
|
+
}
|
|
2391
|
+
this.dom.scrollMainContainer(x);
|
|
2419
2392
|
}
|
|
2420
2393
|
}
|
|
2421
|
-
|
|
2422
|
-
|
|
2423
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
2394
|
+
NgxGanttRootComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.1.3", ngImport: i0, type: NgxGanttRootComponent, deps: [{ token: i0.ElementRef }, { token: i0.NgZone }, { token: GanttDomService }, { token: GanttDragContainer }, { token: GANTT_UPPER_TOKEN }, { token: GanttPrintService, optional: true }], target: i0.ɵɵFactoryTarget.Component });
|
|
2395
|
+
NgxGanttRootComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.1.3", type: NgxGanttRootComponent, selector: "ngx-gantt-root", inputs: { sideWidth: "sideWidth" }, host: { classAttribute: "gantt" }, providers: [GanttDomService, GanttDragContainer], queries: [{ propertyName: "sideTemplate", first: true, predicate: ["sideTemplate"], descendants: true, static: true }, { propertyName: "mainTemplate", first: true, predicate: ["mainTemplate"], descendants: true, static: true }], viewQueries: [{ propertyName: "backdrop", first: true, predicate: GanttDragBackdropComponent, descendants: true, read: ElementRef, static: true }], ngImport: i0, template: "<div class=\"gantt-side\" [style.width.px]=\"sideWidth\">\n <div class=\"gantt-side-container\">\n <ng-template [ngTemplateOutlet]=\"sideTemplate\"></ng-template>\n </div>\n</div>\n<div class=\"gantt-container\">\n <gantt-calendar-overlay></gantt-calendar-overlay>\n <gantt-drag-backdrop></gantt-drag-backdrop>\n <div class=\"gantt-main\">\n <ng-template [ngTemplateOutlet]=\"mainTemplate\"></ng-template>\n </div>\n</div>\n", dependencies: [{ kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: GanttCalendarComponent, selector: "gantt-calendar-overlay" }, { kind: "component", type: GanttDragBackdropComponent, selector: "gantt-drag-backdrop" }] });
|
|
2396
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.1.3", ngImport: i0, type: NgxGanttRootComponent, decorators: [{
|
|
2424
2397
|
type: Component,
|
|
2425
|
-
args: [{ selector: 'ngx-gantt-
|
|
2398
|
+
args: [{ selector: 'ngx-gantt-root', providers: [GanttDomService, GanttDragContainer], host: {
|
|
2399
|
+
class: 'gantt'
|
|
2400
|
+
}, template: "<div class=\"gantt-side\" [style.width.px]=\"sideWidth\">\n <div class=\"gantt-side-container\">\n <ng-template [ngTemplateOutlet]=\"sideTemplate\"></ng-template>\n </div>\n</div>\n<div class=\"gantt-container\">\n <gantt-calendar-overlay></gantt-calendar-overlay>\n <gantt-drag-backdrop></gantt-drag-backdrop>\n <div class=\"gantt-main\">\n <ng-template [ngTemplateOutlet]=\"mainTemplate\"></ng-template>\n </div>\n</div>\n" }]
|
|
2426
2401
|
}], ctorParameters: function () {
|
|
2427
|
-
return [{ type: i0.ElementRef }, { type: GanttUpper, decorators: [{
|
|
2402
|
+
return [{ type: i0.ElementRef }, { type: i0.NgZone }, { type: GanttDomService }, { type: GanttDragContainer }, { type: GanttUpper, decorators: [{
|
|
2428
2403
|
type: Inject,
|
|
2429
2404
|
args: [GANTT_UPPER_TOKEN]
|
|
2405
|
+
}] }, { type: GanttPrintService, decorators: [{
|
|
2406
|
+
type: Optional
|
|
2430
2407
|
}] }];
|
|
2431
|
-
}, propDecorators: {
|
|
2432
|
-
type:
|
|
2433
|
-
|
|
2408
|
+
}, propDecorators: { sideWidth: [{
|
|
2409
|
+
type: Input
|
|
2410
|
+
}], sideTemplate: [{
|
|
2411
|
+
type: ContentChild,
|
|
2412
|
+
args: ['sideTemplate', { static: true }]
|
|
2413
|
+
}], mainTemplate: [{
|
|
2414
|
+
type: ContentChild,
|
|
2415
|
+
args: ['mainTemplate', { static: true }]
|
|
2416
|
+
}], backdrop: [{
|
|
2417
|
+
type: ViewChild,
|
|
2418
|
+
args: [GanttDragBackdropComponent, { static: true, read: ElementRef }]
|
|
2434
2419
|
}] } });
|
|
2435
2420
|
|
|
2436
2421
|
const dragMinWidth = 10;
|
|
@@ -2719,16 +2704,66 @@ class GanttBarDrag {
|
|
|
2719
2704
|
this.destroy$.complete();
|
|
2720
2705
|
}
|
|
2721
2706
|
}
|
|
2722
|
-
GanttBarDrag.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
2723
|
-
GanttBarDrag.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "
|
|
2724
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
2707
|
+
GanttBarDrag.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.1.3", ngImport: i0, type: GanttBarDrag, deps: [{ token: i1$1.DragDrop }, { token: GanttDomService }, { token: GanttDragContainer }, { token: NgxGanttRootComponent, skipSelf: true }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
2708
|
+
GanttBarDrag.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "14.1.3", ngImport: i0, type: GanttBarDrag });
|
|
2709
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.1.3", ngImport: i0, type: GanttBarDrag, decorators: [{
|
|
2725
2710
|
type: Injectable
|
|
2726
2711
|
}], ctorParameters: function () {
|
|
2727
|
-
return [{ type: i1.DragDrop }, { type: GanttDomService }, { type: GanttDragContainer }, { type: NgxGanttRootComponent, decorators: [{
|
|
2712
|
+
return [{ type: i1$1.DragDrop }, { type: GanttDomService }, { type: GanttDragContainer }, { type: NgxGanttRootComponent, decorators: [{
|
|
2728
2713
|
type: SkipSelf
|
|
2729
2714
|
}] }];
|
|
2730
2715
|
} });
|
|
2731
2716
|
|
|
2717
|
+
class GanttItemUpper {
|
|
2718
|
+
constructor(elementRef, ganttUpper) {
|
|
2719
|
+
this.elementRef = elementRef;
|
|
2720
|
+
this.ganttUpper = ganttUpper;
|
|
2721
|
+
this.firstChange = true;
|
|
2722
|
+
this.unsubscribe$ = new Subject();
|
|
2723
|
+
}
|
|
2724
|
+
ngOnInit() {
|
|
2725
|
+
this.firstChange = false;
|
|
2726
|
+
this.item.refs$.pipe(takeUntil(this.unsubscribe$)).subscribe(() => {
|
|
2727
|
+
this.setPositions();
|
|
2728
|
+
});
|
|
2729
|
+
}
|
|
2730
|
+
ngOnChanges() {
|
|
2731
|
+
if (!this.firstChange) {
|
|
2732
|
+
this.setPositions();
|
|
2733
|
+
}
|
|
2734
|
+
}
|
|
2735
|
+
setPositions() {
|
|
2736
|
+
const itemElement = this.elementRef.nativeElement;
|
|
2737
|
+
itemElement.style.left = this.item.refs.x + 'px';
|
|
2738
|
+
itemElement.style.top = this.item.refs.y + 'px';
|
|
2739
|
+
itemElement.style.width = this.item.refs.width + 'px';
|
|
2740
|
+
if (this.item.type === GanttItemType.bar) {
|
|
2741
|
+
itemElement.style.height = this.ganttUpper.styles.barHeight + 'px';
|
|
2742
|
+
}
|
|
2743
|
+
else if (this.item.type === GanttItemType.range) {
|
|
2744
|
+
itemElement.style.height = rangeHeight + 'px';
|
|
2745
|
+
}
|
|
2746
|
+
}
|
|
2747
|
+
ngOnDestroy() {
|
|
2748
|
+
this.unsubscribe$.next();
|
|
2749
|
+
this.unsubscribe$.complete();
|
|
2750
|
+
}
|
|
2751
|
+
}
|
|
2752
|
+
GanttItemUpper.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.1.3", ngImport: i0, type: GanttItemUpper, deps: [{ token: i0.ElementRef }, { token: GANTT_UPPER_TOKEN }], target: i0.ɵɵFactoryTarget.Directive });
|
|
2753
|
+
GanttItemUpper.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "14.1.3", type: GanttItemUpper, inputs: { template: "template", item: "item" }, usesOnChanges: true, ngImport: i0 });
|
|
2754
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.1.3", ngImport: i0, type: GanttItemUpper, decorators: [{
|
|
2755
|
+
type: Directive
|
|
2756
|
+
}], ctorParameters: function () {
|
|
2757
|
+
return [{ type: i0.ElementRef }, { type: GanttUpper, decorators: [{
|
|
2758
|
+
type: Inject,
|
|
2759
|
+
args: [GANTT_UPPER_TOKEN]
|
|
2760
|
+
}] }];
|
|
2761
|
+
}, propDecorators: { template: [{
|
|
2762
|
+
type: Input
|
|
2763
|
+
}], item: [{
|
|
2764
|
+
type: Input
|
|
2765
|
+
}] } });
|
|
2766
|
+
|
|
2732
2767
|
function linearGradient(sideOrCorner, color, stop) {
|
|
2733
2768
|
return `linear-gradient(${sideOrCorner},${color} 0%,${stop} 40%)`;
|
|
2734
2769
|
}
|
|
@@ -2741,7 +2776,6 @@ class NgxGanttBarComponent extends GanttItemUpper {
|
|
|
2741
2776
|
this.ngZone = ngZone;
|
|
2742
2777
|
this.barClick = new EventEmitter();
|
|
2743
2778
|
this.ganttItemClass = true;
|
|
2744
|
-
this.color = 'red';
|
|
2745
2779
|
}
|
|
2746
2780
|
ngOnInit() {
|
|
2747
2781
|
super.ngOnInit();
|
|
@@ -2796,9 +2830,9 @@ class NgxGanttBarComponent extends GanttItemUpper {
|
|
|
2796
2830
|
event.stopPropagation();
|
|
2797
2831
|
}
|
|
2798
2832
|
}
|
|
2799
|
-
NgxGanttBarComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
2800
|
-
NgxGanttBarComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "
|
|
2801
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
2833
|
+
NgxGanttBarComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.1.3", ngImport: i0, type: NgxGanttBarComponent, deps: [{ token: GanttDragContainer }, { token: GanttBarDrag }, { token: i0.ElementRef }, { token: GANTT_UPPER_TOKEN }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component });
|
|
2834
|
+
NgxGanttBarComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.1.3", type: NgxGanttBarComponent, selector: "ngx-gantt-bar,gantt-bar", outputs: { barClick: "barClick" }, host: { properties: { "class.gantt-bar": "this.ganttItemClass" } }, providers: [GanttBarDrag], viewQueries: [{ propertyName: "contentElementRef", first: true, predicate: ["content"], descendants: true }, { propertyName: "handles", predicate: ["handle"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<div class=\"gantt-bar-layer\">\n <div class=\"drag-handles\">\n <ng-container *ngIf=\"item.draggable && ganttUpper.draggable\">\n <span class=\"handle\" #handle></span>\n <span class=\"handle\" #handle></span>\n </ng-container>\n </div>\n <div *ngIf=\"item.linkable && ganttUpper.linkable\" class=\"link-handles\">\n <span class=\"handle\"><span class=\"point\"></span></span>\n <span class=\"handle\"> <span class=\"point\"></span></span>\n </div>\n</div>\n<div class=\"gantt-bar-border\"></div>\n<div #content class=\"gantt-bar-content\" (click)=\"onBarClick($event)\">\n <div class=\"gantt-bar-content-progress\" *ngIf=\"item.progress >= 0\" [style.width.%]=\"item.progress * 100\"></div>\n <ng-template [ngTemplateOutlet]=\"template\" [ngTemplateOutletContext]=\"{ item: item.origin, refs: item.refs }\"></ng-template>\n</div>\n", dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }] });
|
|
2835
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.1.3", ngImport: i0, type: NgxGanttBarComponent, decorators: [{
|
|
2802
2836
|
type: Component,
|
|
2803
2837
|
args: [{ selector: 'ngx-gantt-bar,gantt-bar', providers: [GanttBarDrag], template: "<div class=\"gantt-bar-layer\">\n <div class=\"drag-handles\">\n <ng-container *ngIf=\"item.draggable && ganttUpper.draggable\">\n <span class=\"handle\" #handle></span>\n <span class=\"handle\" #handle></span>\n </ng-container>\n </div>\n <div *ngIf=\"item.linkable && ganttUpper.linkable\" class=\"link-handles\">\n <span class=\"handle\"><span class=\"point\"></span></span>\n <span class=\"handle\"> <span class=\"point\"></span></span>\n </div>\n</div>\n<div class=\"gantt-bar-border\"></div>\n<div #content class=\"gantt-bar-content\" (click)=\"onBarClick($event)\">\n <div class=\"gantt-bar-content-progress\" *ngIf=\"item.progress >= 0\" [style.width.%]=\"item.progress * 100\"></div>\n <ng-template [ngTemplateOutlet]=\"template\" [ngTemplateOutletContext]=\"{ item: item.origin, refs: item.refs }\"></ng-template>\n</div>\n" }]
|
|
2804
2838
|
}], ctorParameters: function () {
|
|
@@ -2819,6 +2853,63 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.8", ngImpor
|
|
|
2819
2853
|
args: ['handle']
|
|
2820
2854
|
}] } });
|
|
2821
2855
|
|
|
2856
|
+
class NgxGanttRangeComponent extends GanttItemUpper {
|
|
2857
|
+
constructor(elementRef, ganttUpper) {
|
|
2858
|
+
super(elementRef, ganttUpper);
|
|
2859
|
+
this.ganttRangeClass = true;
|
|
2860
|
+
}
|
|
2861
|
+
}
|
|
2862
|
+
NgxGanttRangeComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.1.3", ngImport: i0, type: NgxGanttRangeComponent, deps: [{ token: i0.ElementRef }, { token: GANTT_UPPER_TOKEN }], target: i0.ɵɵFactoryTarget.Component });
|
|
2863
|
+
NgxGanttRangeComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.1.3", type: NgxGanttRangeComponent, selector: "ngx-gantt-range,gantt-range", host: { properties: { "class.gantt-range": "this.ganttRangeClass" } }, usesInheritance: true, ngImport: i0, template: "<ng-container *ngIf=\"item.start && item.end\">\n <div class=\"gantt-range-main\">\n <div class=\"gantt-range-main-progress\" *ngIf=\"item.progress >= 0\" [style.width.%]=\"item.progress * 100\"></div>\n </div>\n <div class=\"gantt-range-triangle left\"></div>\n <div class=\"gantt-range-triangle right\"></div>\n <ng-template [ngTemplateOutlet]=\"template\" [ngTemplateOutletContext]=\"{ item: item.origin, refs: item.refs }\"></ng-template>\n</ng-container>\n", dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }] });
|
|
2864
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.1.3", ngImport: i0, type: NgxGanttRangeComponent, decorators: [{
|
|
2865
|
+
type: Component,
|
|
2866
|
+
args: [{ selector: 'ngx-gantt-range,gantt-range', template: "<ng-container *ngIf=\"item.start && item.end\">\n <div class=\"gantt-range-main\">\n <div class=\"gantt-range-main-progress\" *ngIf=\"item.progress >= 0\" [style.width.%]=\"item.progress * 100\"></div>\n </div>\n <div class=\"gantt-range-triangle left\"></div>\n <div class=\"gantt-range-triangle right\"></div>\n <ng-template [ngTemplateOutlet]=\"template\" [ngTemplateOutletContext]=\"{ item: item.origin, refs: item.refs }\"></ng-template>\n</ng-container>\n" }]
|
|
2867
|
+
}], ctorParameters: function () {
|
|
2868
|
+
return [{ type: i0.ElementRef }, { type: GanttUpper, decorators: [{
|
|
2869
|
+
type: Inject,
|
|
2870
|
+
args: [GANTT_UPPER_TOKEN]
|
|
2871
|
+
}] }];
|
|
2872
|
+
}, propDecorators: { ganttRangeClass: [{
|
|
2873
|
+
type: HostBinding,
|
|
2874
|
+
args: ['class.gantt-range']
|
|
2875
|
+
}] } });
|
|
2876
|
+
|
|
2877
|
+
class NgxGanttBaselineComponent {
|
|
2878
|
+
constructor(elementRef, ganttUpper) {
|
|
2879
|
+
this.elementRef = elementRef;
|
|
2880
|
+
this.ganttUpper = ganttUpper;
|
|
2881
|
+
this.unsubscribe$ = new Subject();
|
|
2882
|
+
this.ganttBaselineClass = true;
|
|
2883
|
+
}
|
|
2884
|
+
ngOnInit() {
|
|
2885
|
+
this.baselineItem.refs$.pipe(takeUntil$1(this.unsubscribe$)).subscribe(() => {
|
|
2886
|
+
this.setPositions();
|
|
2887
|
+
});
|
|
2888
|
+
}
|
|
2889
|
+
setPositions() {
|
|
2890
|
+
const itemElement = this.elementRef.nativeElement;
|
|
2891
|
+
itemElement.style.left = this.baselineItem.refs.x + 'px';
|
|
2892
|
+
itemElement.style.bottom = '2px';
|
|
2893
|
+
itemElement.style.width = this.baselineItem.refs.width + 'px';
|
|
2894
|
+
}
|
|
2895
|
+
}
|
|
2896
|
+
NgxGanttBaselineComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.1.3", ngImport: i0, type: NgxGanttBaselineComponent, deps: [{ token: i0.ElementRef }, { token: GANTT_UPPER_TOKEN }], target: i0.ɵɵFactoryTarget.Component });
|
|
2897
|
+
NgxGanttBaselineComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.1.3", type: NgxGanttBaselineComponent, selector: "ngx-gantt-baseline,gantt-baseline", inputs: { baselineItem: "baselineItem" }, host: { properties: { "class.gantt-baseline": "this.ganttBaselineClass" } }, ngImport: i0, template: "<div #content *ngIf=\"baselineItem\" class=\"baseline-content\"></div>\n", dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] });
|
|
2898
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.1.3", ngImport: i0, type: NgxGanttBaselineComponent, decorators: [{
|
|
2899
|
+
type: Component,
|
|
2900
|
+
args: [{ selector: 'ngx-gantt-baseline,gantt-baseline', template: "<div #content *ngIf=\"baselineItem\" class=\"baseline-content\"></div>\n" }]
|
|
2901
|
+
}], ctorParameters: function () {
|
|
2902
|
+
return [{ type: i0.ElementRef }, { type: GanttUpper, decorators: [{
|
|
2903
|
+
type: Inject,
|
|
2904
|
+
args: [GANTT_UPPER_TOKEN]
|
|
2905
|
+
}] }];
|
|
2906
|
+
}, propDecorators: { baselineItem: [{
|
|
2907
|
+
type: Input
|
|
2908
|
+
}], ganttBaselineClass: [{
|
|
2909
|
+
type: HostBinding,
|
|
2910
|
+
args: ['class.gantt-baseline']
|
|
2911
|
+
}] } });
|
|
2912
|
+
|
|
2822
2913
|
class GanttMainComponent {
|
|
2823
2914
|
constructor(ganttUpper) {
|
|
2824
2915
|
this.ganttUpper = ganttUpper;
|
|
@@ -2830,11 +2921,11 @@ class GanttMainComponent {
|
|
|
2830
2921
|
return item.id || index;
|
|
2831
2922
|
}
|
|
2832
2923
|
}
|
|
2833
|
-
GanttMainComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
2834
|
-
GanttMainComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "
|
|
2835
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
2924
|
+
GanttMainComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.1.3", ngImport: i0, type: GanttMainComponent, deps: [{ token: GANTT_UPPER_TOKEN }], target: i0.ɵɵFactoryTarget.Component });
|
|
2925
|
+
GanttMainComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.1.3", type: GanttMainComponent, selector: "gantt-main", inputs: { groups: "groups", items: "items", groupHeaderTemplate: "groupHeaderTemplate", itemTemplate: "itemTemplate", barTemplate: "barTemplate", rangeTemplate: "rangeTemplate" }, outputs: { barClick: "barClick", lineClick: "lineClick" }, host: { properties: { "class.gantt-main-container": "this.ganttMainClass" } }, ngImport: i0, template: "<gantt-links-overlay [groups]=\"groups\" [items]=\"items\" (lineClick)=\"lineClick.emit($event)\"></gantt-links-overlay>\n<!-- groups -->\n<div class=\"gantt-main-groups\" *ngIf=\"groups && groups.length > 0; else itemsTemplate\" [style.width.px]=\"ganttUpper.view.width\">\n <ng-container *ngFor=\"let group of groups; trackBy: trackBy\">\n <div class=\"gantt-group\" [ngClass]=\"group.class\">\n <ng-template [ngTemplateOutlet]=\"groupHeaderTemplate\" [ngTemplateOutletContext]=\"{ group: group }\"></ng-template>\n </div>\n <div *ngIf=\"group.expanded\" class=\"gantt-items\">\n <ng-template [ngTemplateOutlet]=\"ganttItems\" [ngTemplateOutletContext]=\"{ items: group.items }\"></ng-template>\n </div>\n </ng-container>\n</div>\n<!-- items -->\n<ng-template #itemsTemplate>\n <div class=\"gantt-main-items\" [style.width.px]=\"ganttUpper.view.width\">\n <ng-template [ngTemplateOutlet]=\"ganttItems\" [ngTemplateOutletContext]=\"{ items: items }\"></ng-template>\n </div>\n</ng-template>\n\n<ng-template #ganttItems let-items=\"items\">\n <ng-container *ngFor=\"let item of items\">\n <div\n class=\"gantt-item\"\n [style.height.px]=\"ganttUpper.styles.lineHeight\"\n [class.gantt-main-item-active]=\"ganttUpper.isSelected(item.id)\"\n >\n <ng-container *ngIf=\"item.type | isGanttCustomItem\">\n <ng-template\n [ngTemplateOutlet]=\"itemTemplate\"\n [ngTemplateOutletContext]=\"{\n item: item.origin,\n refs: item.refs,\n baseline: ganttUpper.baselineItemsMap[item.id]?.origin,\n baselineRefs: ganttUpper.baselineItemsMap[item.id]?.refs\n }\"\n >\n </ng-template>\n </ng-container>\n\n <ng-container *ngIf=\"(item.type | isGanttRangeItem) || (item.type | isGanttBarItem)\">\n <gantt-range *ngIf=\"item.type | isGanttRangeItem\" [template]=\"rangeTemplate\" [item]=\"item\"></gantt-range>\n <gantt-bar *ngIf=\"item.type | isGanttBarItem\" [item]=\"item\" [template]=\"barTemplate\" (barClick)=\"barClick.emit($event)\"></gantt-bar>\n <gantt-baseline *ngIf=\"ganttUpper.baselineItemsMap[item.id]\" [baselineItem]=\"ganttUpper.baselineItemsMap[item.id]\"></gantt-baseline>\n </ng-container>\n </div>\n <ng-template\n *ngIf=\"item.children && item.expanded\"\n [ngTemplateOutlet]=\"ganttItems\"\n [ngTemplateOutletContext]=\"{ items: item.children }\"\n ></ng-template>\n </ng-container>\n</ng-template>\n", dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: GanttLinksComponent, selector: "gantt-links-overlay", inputs: ["groups", "items"], outputs: ["lineClick"] }, { kind: "component", type: NgxGanttBarComponent, selector: "ngx-gantt-bar,gantt-bar", outputs: ["barClick"] }, { kind: "component", type: NgxGanttRangeComponent, selector: "ngx-gantt-range,gantt-range" }, { kind: "component", type: NgxGanttBaselineComponent, selector: "ngx-gantt-baseline,gantt-baseline", inputs: ["baselineItem"] }, { kind: "pipe", type: IsGanttRangeItemPipe, name: "isGanttRangeItem" }, { kind: "pipe", type: IsGanttBarItemPipe, name: "isGanttBarItem" }, { kind: "pipe", type: IsGanttCustomItemPipe, name: "isGanttCustomItem" }] });
|
|
2926
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.1.3", ngImport: i0, type: GanttMainComponent, decorators: [{
|
|
2836
2927
|
type: Component,
|
|
2837
|
-
args: [{ selector: 'gantt-main', template: "<gantt-links-overlay [groups]=\"groups\" [items]=\"items\" (lineClick)=\"lineClick.emit($event)\"></gantt-links-overlay>\n<!-- groups -->\n<div class=\"gantt-main-groups\" *ngIf=\"groups && groups.length > 0; else itemsTemplate\" [style.width.px]=\"ganttUpper.view.width\">\n <ng-container *ngFor=\"let group of groups; trackBy: trackBy\">\n <div class=\"gantt-group\" [ngClass]=\"group.class\">\n <ng-template [ngTemplateOutlet]=\"groupHeaderTemplate\" [ngTemplateOutletContext]=\"{ group: group }\"></ng-template>\n </div>\n <div *ngIf=\"group.expanded\" class=\"gantt-items\">\n <ng-template [ngTemplateOutlet]=\"ganttItems\" [ngTemplateOutletContext]=\"{ items: group.items }\"></ng-template>\n </div>\n </ng-container>\n</div>\n<!-- items -->\n<ng-template #itemsTemplate>\n <div class=\"gantt-main-items\" [style.width.px]=\"ganttUpper.view.width\">\n <ng-template [ngTemplateOutlet]=\"ganttItems\" [ngTemplateOutletContext]=\"{ items: items }\"></ng-template>\n </div>\n</ng-template>\n\n<ng-template #ganttItems let-items=\"items\">\n <ng-container *ngFor=\"let item of items
|
|
2928
|
+
args: [{ selector: 'gantt-main', template: "<gantt-links-overlay [groups]=\"groups\" [items]=\"items\" (lineClick)=\"lineClick.emit($event)\"></gantt-links-overlay>\n<!-- groups -->\n<div class=\"gantt-main-groups\" *ngIf=\"groups && groups.length > 0; else itemsTemplate\" [style.width.px]=\"ganttUpper.view.width\">\n <ng-container *ngFor=\"let group of groups; trackBy: trackBy\">\n <div class=\"gantt-group\" [ngClass]=\"group.class\">\n <ng-template [ngTemplateOutlet]=\"groupHeaderTemplate\" [ngTemplateOutletContext]=\"{ group: group }\"></ng-template>\n </div>\n <div *ngIf=\"group.expanded\" class=\"gantt-items\">\n <ng-template [ngTemplateOutlet]=\"ganttItems\" [ngTemplateOutletContext]=\"{ items: group.items }\"></ng-template>\n </div>\n </ng-container>\n</div>\n<!-- items -->\n<ng-template #itemsTemplate>\n <div class=\"gantt-main-items\" [style.width.px]=\"ganttUpper.view.width\">\n <ng-template [ngTemplateOutlet]=\"ganttItems\" [ngTemplateOutletContext]=\"{ items: items }\"></ng-template>\n </div>\n</ng-template>\n\n<ng-template #ganttItems let-items=\"items\">\n <ng-container *ngFor=\"let item of items\">\n <div\n class=\"gantt-item\"\n [style.height.px]=\"ganttUpper.styles.lineHeight\"\n [class.gantt-main-item-active]=\"ganttUpper.isSelected(item.id)\"\n >\n <ng-container *ngIf=\"item.type | isGanttCustomItem\">\n <ng-template\n [ngTemplateOutlet]=\"itemTemplate\"\n [ngTemplateOutletContext]=\"{\n item: item.origin,\n refs: item.refs,\n baseline: ganttUpper.baselineItemsMap[item.id]?.origin,\n baselineRefs: ganttUpper.baselineItemsMap[item.id]?.refs\n }\"\n >\n </ng-template>\n </ng-container>\n\n <ng-container *ngIf=\"(item.type | isGanttRangeItem) || (item.type | isGanttBarItem)\">\n <gantt-range *ngIf=\"item.type | isGanttRangeItem\" [template]=\"rangeTemplate\" [item]=\"item\"></gantt-range>\n <gantt-bar *ngIf=\"item.type | isGanttBarItem\" [item]=\"item\" [template]=\"barTemplate\" (barClick)=\"barClick.emit($event)\"></gantt-bar>\n <gantt-baseline *ngIf=\"ganttUpper.baselineItemsMap[item.id]\" [baselineItem]=\"ganttUpper.baselineItemsMap[item.id]\"></gantt-baseline>\n </ng-container>\n </div>\n <ng-template\n *ngIf=\"item.children && item.expanded\"\n [ngTemplateOutlet]=\"ganttItems\"\n [ngTemplateOutletContext]=\"{ items: item.children }\"\n ></ng-template>\n </ng-container>\n</ng-template>\n" }]
|
|
2838
2929
|
}], ctorParameters: function () {
|
|
2839
2930
|
return [{ type: GanttUpper, decorators: [{
|
|
2840
2931
|
type: Inject,
|
|
@@ -2943,9 +3034,15 @@ class NgxGanttComponent extends GanttUpper {
|
|
|
2943
3034
|
this.selectedChange.emit({ event, selectedValue: _selectedValue });
|
|
2944
3035
|
}
|
|
2945
3036
|
}
|
|
3037
|
+
scrollToToday() {
|
|
3038
|
+
this.ganttRoot.scrollToToday();
|
|
3039
|
+
}
|
|
3040
|
+
scrollToDate(date) {
|
|
3041
|
+
this.ganttRoot.scrollToDate(date);
|
|
3042
|
+
}
|
|
2946
3043
|
}
|
|
2947
|
-
NgxGanttComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
2948
|
-
NgxGanttComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "
|
|
3044
|
+
NgxGanttComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.1.3", ngImport: i0, type: NgxGanttComponent, deps: [{ token: i0.ElementRef }, { token: i0.ChangeDetectorRef }, { token: i0.NgZone }, { token: GANTT_GLOBAL_CONFIG }], target: i0.ɵɵFactoryTarget.Component });
|
|
3045
|
+
NgxGanttComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.1.3", type: NgxGanttComponent, selector: "ngx-gantt", inputs: { maxLevel: "maxLevel", async: "async", childrenResolve: "childrenResolve", linkable: "linkable" }, outputs: { linkDragStarted: "linkDragStarted", linkDragEnded: "linkDragEnded", lineClick: "lineClick", selectedChange: "selectedChange" }, providers: [
|
|
2949
3046
|
{
|
|
2950
3047
|
provide: GANTT_UPPER_TOKEN,
|
|
2951
3048
|
useExisting: NgxGanttComponent
|
|
@@ -2954,8 +3051,8 @@ NgxGanttComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", vers
|
|
|
2954
3051
|
provide: GANTT_ABSTRACT_TOKEN,
|
|
2955
3052
|
useExisting: forwardRef(() => NgxGanttComponent)
|
|
2956
3053
|
}
|
|
2957
|
-
], queries: [{ propertyName: "table", first: true, predicate: NgxGanttTableComponent, descendants: true }, { propertyName: "tableEmptyTemplate", first: true, predicate: ["tableEmpty"], descendants: true, static: true }, { propertyName: "columns", predicate: NgxGanttTableColumnComponent, descendants: true }], viewQueries: [{ propertyName: "ganttRoot", first: true, predicate: ["ganttRoot"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<ngx-gantt-root #ganttRoot>\n <ng-template #sideTemplate>\n <gantt-table\n [groups]=\"groups\"\n [items]=\"items\"\n [columns]=\"columns\"\n [groupTemplate]=\"groupTemplate\"\n [emptyTemplate]=\"tableEmptyTemplate\"\n [rowBeforeTemplate]=\"table?.rowBeforeTemplate\"\n [rowAfterTemplate]=\"table?.rowAfterTemplate\"\n (itemClick)=\"selectItem($event)\"\n ></gantt-table>\n </ng-template>\n <ng-template #mainTemplate>\n <gantt-main\n [groups]=\"groups\"\n [items]=\"items\"\n [groupHeaderTemplate]=\"groupHeaderTemplate\"\n [itemTemplate]=\"itemTemplate\"\n [barTemplate]=\"barTemplate\"\n [rangeTemplate]=\"rangeTemplate\"\n (barClick)=\"barClick.emit($event)\"\n (lineClick)=\"lineClick.emit($event)\"\n >\n </gantt-main>\n </ng-template>\n</ngx-gantt-root>\n",
|
|
2958
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
3054
|
+
], queries: [{ propertyName: "table", first: true, predicate: NgxGanttTableComponent, descendants: true }, { propertyName: "tableEmptyTemplate", first: true, predicate: ["tableEmpty"], descendants: true, static: true }, { propertyName: "columns", predicate: NgxGanttTableColumnComponent, descendants: true }], viewQueries: [{ propertyName: "ganttRoot", first: true, predicate: ["ganttRoot"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<ngx-gantt-root #ganttRoot>\n <ng-template #sideTemplate>\n <gantt-table\n [groups]=\"groups\"\n [items]=\"items\"\n [columns]=\"columns\"\n [groupTemplate]=\"groupTemplate\"\n [emptyTemplate]=\"tableEmptyTemplate\"\n [rowBeforeTemplate]=\"table?.rowBeforeTemplate\"\n [rowAfterTemplate]=\"table?.rowAfterTemplate\"\n (itemClick)=\"selectItem($event)\"\n ></gantt-table>\n </ng-template>\n <ng-template #mainTemplate>\n <gantt-main\n [groups]=\"groups\"\n [items]=\"items\"\n [groupHeaderTemplate]=\"groupHeaderTemplate\"\n [itemTemplate]=\"itemTemplate\"\n [barTemplate]=\"barTemplate\"\n [rangeTemplate]=\"rangeTemplate\"\n (barClick)=\"barClick.emit($event)\"\n (lineClick)=\"lineClick.emit($event)\"\n >\n </gantt-main>\n </ng-template>\n</ngx-gantt-root>\n", dependencies: [{ kind: "component", type: GanttTableComponent, selector: "gantt-table", inputs: ["groups", "items", "columns", "groupTemplate", "emptyTemplate", "rowBeforeTemplate", "rowAfterTemplate"], outputs: ["itemClick"] }, { kind: "component", type: GanttMainComponent, selector: "gantt-main", inputs: ["groups", "items", "groupHeaderTemplate", "itemTemplate", "barTemplate", "rangeTemplate"], outputs: ["barClick", "lineClick"] }, { kind: "component", type: NgxGanttRootComponent, selector: "ngx-gantt-root", inputs: ["sideWidth"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
3055
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.1.3", ngImport: i0, type: NgxGanttComponent, decorators: [{
|
|
2959
3056
|
type: Component,
|
|
2960
3057
|
args: [{ selector: 'ngx-gantt', changeDetection: ChangeDetectionStrategy.OnPush, providers: [
|
|
2961
3058
|
{
|
|
@@ -3004,8 +3101,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.8", ngImpor
|
|
|
3004
3101
|
|
|
3005
3102
|
class NgxGanttModule {
|
|
3006
3103
|
}
|
|
3007
|
-
NgxGanttModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
3008
|
-
NgxGanttModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "
|
|
3104
|
+
NgxGanttModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.1.3", ngImport: i0, type: NgxGanttModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
|
|
3105
|
+
NgxGanttModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "14.1.3", ngImport: i0, type: NgxGanttModule, declarations: [NgxGanttComponent,
|
|
3009
3106
|
NgxGanttTableComponent,
|
|
3010
3107
|
NgxGanttTableColumnComponent,
|
|
3011
3108
|
GanttTableComponent,
|
|
@@ -3017,6 +3114,7 @@ NgxGanttModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version:
|
|
|
3017
3114
|
GanttDragBackdropComponent,
|
|
3018
3115
|
NgxGanttRangeComponent,
|
|
3019
3116
|
NgxGanttRootComponent,
|
|
3117
|
+
NgxGanttBaselineComponent,
|
|
3020
3118
|
IsGanttRangeItemPipe,
|
|
3021
3119
|
IsGanttBarItemPipe,
|
|
3022
3120
|
IsGanttCustomItemPipe], imports: [CommonModule, DragDropModule], exports: [NgxGanttComponent,
|
|
@@ -3024,14 +3122,15 @@ NgxGanttModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version:
|
|
|
3024
3122
|
NgxGanttTableColumnComponent,
|
|
3025
3123
|
NgxGanttRootComponent,
|
|
3026
3124
|
NgxGanttBarComponent,
|
|
3027
|
-
NgxGanttRangeComponent
|
|
3028
|
-
|
|
3125
|
+
NgxGanttRangeComponent,
|
|
3126
|
+
NgxGanttBaselineComponent] });
|
|
3127
|
+
NgxGanttModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "14.1.3", ngImport: i0, type: NgxGanttModule, providers: [
|
|
3029
3128
|
{
|
|
3030
3129
|
provide: GANTT_GLOBAL_CONFIG,
|
|
3031
3130
|
useValue: defaultConfig
|
|
3032
3131
|
}
|
|
3033
|
-
], imports: [
|
|
3034
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
3132
|
+
], imports: [CommonModule, DragDropModule] });
|
|
3133
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.1.3", ngImport: i0, type: NgxGanttModule, decorators: [{
|
|
3035
3134
|
type: NgModule,
|
|
3036
3135
|
args: [{
|
|
3037
3136
|
imports: [CommonModule, DragDropModule],
|
|
@@ -3041,7 +3140,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.8", ngImpor
|
|
|
3041
3140
|
NgxGanttTableColumnComponent,
|
|
3042
3141
|
NgxGanttRootComponent,
|
|
3043
3142
|
NgxGanttBarComponent,
|
|
3044
|
-
NgxGanttRangeComponent
|
|
3143
|
+
NgxGanttRangeComponent,
|
|
3144
|
+
NgxGanttBaselineComponent
|
|
3045
3145
|
],
|
|
3046
3146
|
declarations: [
|
|
3047
3147
|
NgxGanttComponent,
|
|
@@ -3056,6 +3156,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.8", ngImpor
|
|
|
3056
3156
|
GanttDragBackdropComponent,
|
|
3057
3157
|
NgxGanttRangeComponent,
|
|
3058
3158
|
NgxGanttRootComponent,
|
|
3159
|
+
NgxGanttBaselineComponent,
|
|
3059
3160
|
IsGanttRangeItemPipe,
|
|
3060
3161
|
IsGanttBarItemPipe,
|
|
3061
3162
|
IsGanttCustomItemPipe
|
|
@@ -3077,5 +3178,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.8", ngImpor
|
|
|
3077
3178
|
* Generated bundle index. Do not edit.
|
|
3078
3179
|
*/
|
|
3079
3180
|
|
|
3080
|
-
export { GANTT_GLOBAL_CONFIG, GANTT_UPPER_TOKEN, GanttBarClickEvent, GanttDate, GanttDatePoint, GanttDragEvent, GanttGroupInternal, GanttItemInternal, GanttItemType, GanttItemUpper, GanttLineClickEvent, GanttLinkDragEvent, GanttLinkLineType, GanttLinkType, GanttLoadOnScrollEvent, GanttPrintService, GanttSelectedEvent, GanttTableEvent, GanttUpper, GanttView, GanttViewType, IsGanttBarItemPipe, IsGanttCustomItemPipe, IsGanttRangeItemPipe, LinkColors, NgxGanttBarComponent, NgxGanttComponent, NgxGanttModule, NgxGanttRangeComponent, NgxGanttRootComponent, NgxGanttTableColumnComponent, NgxGanttTableComponent, defaultConfig, primaryDatePointTop, secondaryDatePointTop };
|
|
3181
|
+
export { GANTT_GLOBAL_CONFIG, GANTT_UPPER_TOKEN, GanttBarClickEvent, GanttBaselineItemInternal, GanttDate, GanttDatePoint, GanttDragEvent, GanttGroupInternal, GanttItemInternal, GanttItemType, GanttItemUpper, GanttLineClickEvent, GanttLinkDragEvent, GanttLinkLineType, GanttLinkType, GanttLoadOnScrollEvent, GanttPrintService, GanttSelectedEvent, GanttTableEvent, GanttUpper, GanttView, GanttViewType, IsGanttBarItemPipe, IsGanttCustomItemPipe, IsGanttRangeItemPipe, LinkColors, NgxGanttBarComponent, NgxGanttBaselineComponent, NgxGanttComponent, NgxGanttModule, NgxGanttRangeComponent, NgxGanttRootComponent, NgxGanttTableColumnComponent, NgxGanttTableComponent, defaultConfig, primaryDatePointTop, secondaryDatePointTop };
|
|
3081
3182
|
//# sourceMappingURL=worktile-gantt.mjs.map
|