@worktile/gantt 12.2.0-next.1 → 12.2.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/bundles/worktile-gantt.umd.js +175 -145
- package/bundles/worktile-gantt.umd.js.map +1 -1
- package/class/event.d.ts +2 -0
- package/class/index.d.ts +1 -0
- package/class/item.d.ts +1 -1
- package/class/link.d.ts +5 -5
- package/components/links/{paths → lines}/curve.d.ts +2 -3
- package/components/links/lines/factory.d.ts +5 -0
- package/components/links/{paths/path.d.ts → lines/line.d.ts} +1 -4
- package/components/links/{paths/line.d.ts → lines/straight.d.ts} +2 -2
- package/components/links/links.component.d.ts +1 -1
- package/esm2015/class/event.js +1 -1
- package/esm2015/class/index.js +2 -1
- package/esm2015/class/item.js +4 -3
- package/esm2015/class/link.js +6 -6
- package/esm2015/components/bar/bar-drag.js +35 -12
- package/esm2015/components/bar/bar.component.js +1 -1
- package/esm2015/components/links/lines/curve.js +96 -0
- package/esm2015/components/links/lines/factory.js +14 -0
- package/esm2015/components/links/lines/line.js +24 -0
- package/esm2015/components/links/lines/straight.js +58 -0
- package/esm2015/components/links/links.component.js +4 -4
- package/esm2015/gantt-drag-container.js +55 -38
- package/esm2015/gantt-upper.js +10 -2
- package/esm2015/gantt.component.js +7 -11
- package/esm2015/gantt.config.js +3 -3
- package/fesm2015/worktile-gantt.js +136 -124
- package/fesm2015/worktile-gantt.js.map +1 -1
- package/gantt-drag-container.d.ts +20 -8
- package/gantt-upper.d.ts +5 -3
- package/gantt.component.d.ts +1 -3
- package/gantt.config.d.ts +2 -2
- package/main.bundle.scss +31 -1
- package/package.json +1 -1
- package/components/links/paths/factory.d.ts +0 -5
- package/esm2015/components/links/paths/curve.js +0 -118
- package/esm2015/components/links/paths/factory.js +0 -14
- package/esm2015/components/links/paths/line.js +0 -59
- package/esm2015/components/links/paths/path.js +0 -31
|
@@ -1,9 +1,23 @@
|
|
|
1
1
|
import { EventEmitter } from '@angular/core';
|
|
2
2
|
import { GanttDragEvent, GanttLinkDragEvent } from './class/event';
|
|
3
3
|
import { GanttItemInternal } from './class/item';
|
|
4
|
+
import { GanttUpper } from './gantt-upper';
|
|
4
5
|
import * as i0 from "@angular/core";
|
|
5
|
-
export declare
|
|
6
|
+
export declare enum InBarPosition {
|
|
7
|
+
start = "start",
|
|
8
|
+
finish = "finish"
|
|
9
|
+
}
|
|
10
|
+
export declare type LinkDragPosition = {
|
|
11
|
+
element: HTMLElement;
|
|
12
|
+
item: GanttItemInternal;
|
|
13
|
+
pos?: InBarPosition;
|
|
14
|
+
};
|
|
15
|
+
export interface LinkDragPath {
|
|
16
|
+
from?: LinkDragPosition;
|
|
17
|
+
to?: LinkDragPosition;
|
|
18
|
+
}
|
|
6
19
|
export declare class GanttDragContainer {
|
|
20
|
+
ganttUpper: GanttUpper;
|
|
7
21
|
dragStarted: EventEmitter<GanttDragEvent<unknown>>;
|
|
8
22
|
dragMoved: EventEmitter<GanttDragEvent<unknown>>;
|
|
9
23
|
dragEnded: EventEmitter<GanttDragEvent<unknown>>;
|
|
@@ -11,14 +25,12 @@ export declare class GanttDragContainer {
|
|
|
11
25
|
linkDragEntered: EventEmitter<GanttLinkDragEvent<unknown>>;
|
|
12
26
|
linkDragEnded: EventEmitter<GanttLinkDragEvent<unknown>>;
|
|
13
27
|
linkDraggingId: string;
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
emitLinkDragStarted(from: LinkDragFrom, item: GanttItemInternal): void;
|
|
19
|
-
emitLinkDragEntered(item: GanttItemInternal): void;
|
|
28
|
+
linkDragPath: LinkDragPath;
|
|
29
|
+
constructor(ganttUpper: GanttUpper);
|
|
30
|
+
emitLinkDragStarted(from: LinkDragPosition): void;
|
|
31
|
+
emitLinkDragEntered(to: LinkDragPosition): void;
|
|
20
32
|
emitLinkDragLeaved(): void;
|
|
21
|
-
emitLinkDragEnded(): void;
|
|
33
|
+
emitLinkDragEnded(to: LinkDragPosition): void;
|
|
22
34
|
static ɵfac: i0.ɵɵFactoryDeclaration<GanttDragContainer, never>;
|
|
23
35
|
static ɵprov: i0.ɵɵInjectableDeclaration<GanttDragContainer>;
|
|
24
36
|
}
|
package/gantt-upper.d.ts
CHANGED
|
@@ -13,7 +13,7 @@ export declare abstract class GanttUpper {
|
|
|
13
13
|
protected elementRef: ElementRef<HTMLElement>;
|
|
14
14
|
protected cdr: ChangeDetectorRef;
|
|
15
15
|
protected ngZone: NgZone;
|
|
16
|
-
|
|
16
|
+
config: GanttGlobalConfig;
|
|
17
17
|
originItems: GanttItem[];
|
|
18
18
|
originGroups: GanttGroup[];
|
|
19
19
|
viewType: GanttViewType;
|
|
@@ -23,6 +23,8 @@ export declare abstract class GanttUpper {
|
|
|
23
23
|
draggable: boolean;
|
|
24
24
|
styles: GanttStyles;
|
|
25
25
|
viewOptions: GanttViewOptions;
|
|
26
|
+
set linkOptions(options: GanttLinkOptions);
|
|
27
|
+
get linkOptions(): GanttLinkOptions;
|
|
26
28
|
disabledLoadOnScroll: boolean;
|
|
27
29
|
set selectable(value: BooleanInput);
|
|
28
30
|
get selectable(): boolean;
|
|
@@ -39,7 +41,6 @@ export declare abstract class GanttUpper {
|
|
|
39
41
|
groupTemplate: TemplateRef<any>;
|
|
40
42
|
groupHeaderTemplate: TemplateRef<any>;
|
|
41
43
|
linkable: boolean;
|
|
42
|
-
linkOptions: GanttLinkOptions;
|
|
43
44
|
linkDragEnded: EventEmitter<GanttLinkDragEvent<unknown>>;
|
|
44
45
|
view: GanttView;
|
|
45
46
|
items: GanttItemInternal[];
|
|
@@ -54,6 +55,7 @@ export declare abstract class GanttUpper {
|
|
|
54
55
|
private groupsMap;
|
|
55
56
|
private _selectable;
|
|
56
57
|
private _multiple;
|
|
58
|
+
private _linkOptions;
|
|
57
59
|
ganttClass: boolean;
|
|
58
60
|
constructor(elementRef: ElementRef<HTMLElement>, cdr: ChangeDetectorRef, ngZone: NgZone, config: GanttGlobalConfig);
|
|
59
61
|
private createView;
|
|
@@ -77,6 +79,6 @@ export declare abstract class GanttUpper {
|
|
|
77
79
|
getGanttItems(ids: string[]): GanttItemInternal[];
|
|
78
80
|
isSelected(id: string): boolean;
|
|
79
81
|
static ɵfac: i0.ɵɵFactoryDeclaration<GanttUpper, never>;
|
|
80
|
-
static ɵdir: i0.ɵɵDirectiveDeclaration<GanttUpper, never, never, { "originItems": "items"; "originGroups": "groups"; "viewType": "viewType"; "start": "start"; "end": "end"; "showTodayLine": "showTodayLine"; "draggable": "draggable"; "styles": "styles"; "viewOptions": "viewOptions"; "disabledLoadOnScroll": "disabledLoadOnScroll"; "selectable": "selectable"; "multiple": "multiple"; }, { "loadOnScroll": "loadOnScroll"; "dragStarted": "dragStarted"; "dragMoved": "dragMoved"; "dragEnded": "dragEnded"; "barClick": "barClick"; }, ["barTemplate", "rangeTemplate", "itemTemplate", "groupTemplate", "groupHeaderTemplate"]>;
|
|
82
|
+
static ɵdir: i0.ɵɵDirectiveDeclaration<GanttUpper, never, never, { "originItems": "items"; "originGroups": "groups"; "viewType": "viewType"; "start": "start"; "end": "end"; "showTodayLine": "showTodayLine"; "draggable": "draggable"; "styles": "styles"; "viewOptions": "viewOptions"; "linkOptions": "linkOptions"; "disabledLoadOnScroll": "disabledLoadOnScroll"; "selectable": "selectable"; "multiple": "multiple"; }, { "loadOnScroll": "loadOnScroll"; "dragStarted": "dragStarted"; "dragMoved": "dragMoved"; "dragEnded": "dragEnded"; "barClick": "barClick"; }, ["barTemplate", "rangeTemplate", "itemTemplate", "groupTemplate", "groupHeaderTemplate"]>;
|
|
81
83
|
}
|
|
82
84
|
export declare const GANTT_UPPER_TOKEN: InjectionToken<GanttUpper>;
|
package/gantt.component.d.ts
CHANGED
|
@@ -5,14 +5,12 @@ import { GanttLinkDragEvent, GanttLineClickEvent, GanttItemInternal, GanttItem,
|
|
|
5
5
|
import { NgxGanttTableColumnComponent } from './table/gantt-column.component';
|
|
6
6
|
import { NgxGanttTableComponent } from './table/gantt-table.component';
|
|
7
7
|
import { GanttGlobalConfig } from './gantt.config';
|
|
8
|
-
import { GanttLinkOptions } from './class/link';
|
|
9
8
|
import * as i0 from "@angular/core";
|
|
10
9
|
export declare class NgxGanttComponent extends GanttUpper implements OnInit, AfterViewInit, OnChanges, OnDestroy {
|
|
11
10
|
maxLevel: number;
|
|
12
11
|
async: boolean;
|
|
13
12
|
childrenResolve: (GanttItem: any) => Observable<GanttItem[]>;
|
|
14
13
|
linkable: boolean;
|
|
15
|
-
linkOptions: GanttLinkOptions;
|
|
16
14
|
linkDragStarted: EventEmitter<GanttLinkDragEvent<unknown>>;
|
|
17
15
|
linkDragEnded: EventEmitter<GanttLinkDragEvent<unknown>>;
|
|
18
16
|
lineClick: EventEmitter<GanttLineClickEvent<unknown>>;
|
|
@@ -30,5 +28,5 @@ export declare class NgxGanttComponent extends GanttUpper implements OnInit, Aft
|
|
|
30
28
|
selectItem(selectEvent: GanttSelectedEvent): void;
|
|
31
29
|
ngOnDestroy(): void;
|
|
32
30
|
static ɵfac: i0.ɵɵFactoryDeclaration<NgxGanttComponent, never>;
|
|
33
|
-
static ɵcmp: i0.ɵɵComponentDeclaration<NgxGanttComponent, "ngx-gantt", never, { "maxLevel": "maxLevel"; "async": "async"; "childrenResolve": "childrenResolve"; "linkable": "linkable";
|
|
31
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<NgxGanttComponent, "ngx-gantt", never, { "maxLevel": "maxLevel"; "async": "async"; "childrenResolve": "childrenResolve"; "linkable": "linkable"; }, { "linkDragStarted": "linkDragStarted"; "linkDragEnded": "linkDragEnded"; "lineClick": "lineClick"; "selectedChange": "selectedChange"; }, ["table", "tableEmptyTemplate", "columns"], never>;
|
|
34
32
|
}
|
package/gantt.config.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { GanttLinkType, GanttLinkOptions, GanttLinkLineType } from './class/link';
|
|
2
2
|
import { InjectionToken } from '@angular/core';
|
|
3
3
|
export interface GanttDateFormat {
|
|
4
4
|
week?: string;
|
|
@@ -24,7 +24,7 @@ export declare const defaultConfig: {
|
|
|
24
24
|
linkOptions: {
|
|
25
25
|
dependencyTypes: GanttLinkType[];
|
|
26
26
|
showArrow: boolean;
|
|
27
|
-
|
|
27
|
+
lineType: GanttLinkLineType;
|
|
28
28
|
};
|
|
29
29
|
};
|
|
30
30
|
export declare const GANTT_GLOBAL_CONFIG: InjectionToken<GanttGlobalConfig>;
|
package/main.bundle.scss
CHANGED
|
@@ -410,6 +410,7 @@ $gantt-table-header-drag-line-color: #348fe4 !default;
|
|
|
410
410
|
$gantt-bar-layer-append-width: 32px;
|
|
411
411
|
$gantt-bar-layer-append-height: 42px;
|
|
412
412
|
$gantt-bar-link-height: 16px;
|
|
413
|
+
$gantt-bar-link-handle-size: 16px;
|
|
413
414
|
$gantt-bar-link-drop-border: 5px;
|
|
414
415
|
|
|
415
416
|
@mixin link-handles {
|
|
@@ -553,6 +554,7 @@ $gantt-bar-link-drop-border: 5px;
|
|
|
553
554
|
background: $gantt-bar-background-color;
|
|
554
555
|
overflow: hidden;
|
|
555
556
|
box-sizing: border-box;
|
|
557
|
+
|
|
556
558
|
.gantt-bar-content-progress {
|
|
557
559
|
position: absolute;
|
|
558
560
|
left: 0;
|
|
@@ -566,7 +568,7 @@ $gantt-bar-link-drop-border: 5px;
|
|
|
566
568
|
@include active-bar();
|
|
567
569
|
}
|
|
568
570
|
|
|
569
|
-
&-
|
|
571
|
+
&-single-drop-active {
|
|
570
572
|
.gantt-bar-border {
|
|
571
573
|
display: block;
|
|
572
574
|
}
|
|
@@ -575,6 +577,34 @@ $gantt-bar-link-drop-border: 5px;
|
|
|
575
577
|
box-shadow: none;
|
|
576
578
|
}
|
|
577
579
|
}
|
|
580
|
+
|
|
581
|
+
&-drop-active {
|
|
582
|
+
@include active-bar();
|
|
583
|
+
|
|
584
|
+
.gantt-bar-layer {
|
|
585
|
+
.link-handles {
|
|
586
|
+
.handle {
|
|
587
|
+
width: $gantt-bar-link-handle-size + 10px;
|
|
588
|
+
height: 100%;
|
|
589
|
+
|
|
590
|
+
&:first-child {
|
|
591
|
+
left: -$gantt-bar-link-handle-size - 5px;
|
|
592
|
+
}
|
|
593
|
+
|
|
594
|
+
&:last-child {
|
|
595
|
+
right: -$gantt-bar-link-handle-size - 5px;
|
|
596
|
+
}
|
|
597
|
+
|
|
598
|
+
&:hover {
|
|
599
|
+
.point {
|
|
600
|
+
width: 12px;
|
|
601
|
+
height: 12px;
|
|
602
|
+
}
|
|
603
|
+
}
|
|
604
|
+
}
|
|
605
|
+
}
|
|
606
|
+
}
|
|
607
|
+
}
|
|
578
608
|
}
|
|
579
609
|
|
|
580
610
|
.gantt-range {
|
package/package.json
CHANGED
|
@@ -1,5 +0,0 @@
|
|
|
1
|
-
import { GanttLinkPathType } from '../../../class/link';
|
|
2
|
-
import { GanttUpper } from '../../../gantt-upper';
|
|
3
|
-
import { GanttLinkPathCurve } from './curve';
|
|
4
|
-
import { GanttLinkPathLine } from './line';
|
|
5
|
-
export declare function generatePathFactory(type: GanttLinkPathType, ganttUpper?: GanttUpper): GanttLinkPathCurve | GanttLinkPathLine;
|
|
@@ -1,118 +0,0 @@
|
|
|
1
|
-
import { __decorate, __param } from "tslib";
|
|
2
|
-
import { Inject } from '@angular/core';
|
|
3
|
-
import { GanttLinkType } from '../../../class/link';
|
|
4
|
-
import { GANTT_UPPER_TOKEN } from '../../../gantt-upper';
|
|
5
|
-
import { GanttLinkPath } from './path';
|
|
6
|
-
let GanttLinkPathCurve = class GanttLinkPathCurve extends GanttLinkPath {
|
|
7
|
-
constructor(ganttUpper) {
|
|
8
|
-
super();
|
|
9
|
-
this.ganttUpper = ganttUpper;
|
|
10
|
-
this.bezierWeight = -0.5;
|
|
11
|
-
}
|
|
12
|
-
generateSSPath(source, target) {
|
|
13
|
-
const x1 = source.before.x;
|
|
14
|
-
const y1 = source.before.y;
|
|
15
|
-
const x4 = target.before.x;
|
|
16
|
-
const y4 = target.before.y;
|
|
17
|
-
const isMirror = y4 > y1 ? 0 : 1;
|
|
18
|
-
const radius = Math.abs(y4 - y1) / 2;
|
|
19
|
-
if (x4 > x1) {
|
|
20
|
-
return `M ${x1} ${y1}
|
|
21
|
-
A ${radius} ${radius} 0 1 ${isMirror} ${x1} ${y4}
|
|
22
|
-
L ${x4} ${y4}`;
|
|
23
|
-
}
|
|
24
|
-
else {
|
|
25
|
-
return `M ${x1} ${y1}
|
|
26
|
-
L ${x4} ${y1}
|
|
27
|
-
A ${radius} ${radius} 0 1 ${isMirror} ${x4} ${y4}`;
|
|
28
|
-
}
|
|
29
|
-
}
|
|
30
|
-
generateFFPath(source, target) {
|
|
31
|
-
const x1 = source.after.x;
|
|
32
|
-
const y1 = source.after.y;
|
|
33
|
-
const x4 = target.after.x;
|
|
34
|
-
const y4 = target.after.y;
|
|
35
|
-
const isMirror = y4 > y1 ? 1 : 0;
|
|
36
|
-
const radius = Math.abs(y4 - y1) / 2;
|
|
37
|
-
if (x4 > x1) {
|
|
38
|
-
return `M ${x1} ${y1}
|
|
39
|
-
L ${x4} ${y1}
|
|
40
|
-
A ${radius} ${radius} 0 1 ${isMirror} ${x4} ${y4}`;
|
|
41
|
-
}
|
|
42
|
-
else {
|
|
43
|
-
return `M ${x1} ${y1}
|
|
44
|
-
A ${radius} ${radius} 0 1 ${isMirror} ${x1} ${y4}
|
|
45
|
-
L ${x4} ${y4}`;
|
|
46
|
-
}
|
|
47
|
-
}
|
|
48
|
-
generateFSAndSFPath(source, target, type) {
|
|
49
|
-
let x1 = source.after.x;
|
|
50
|
-
let y1 = source.after.y;
|
|
51
|
-
let x4 = target.before.x;
|
|
52
|
-
let y4 = target.before.y;
|
|
53
|
-
if (type === GanttLinkType.sf) {
|
|
54
|
-
x1 = target.after.x;
|
|
55
|
-
y1 = target.after.y;
|
|
56
|
-
x4 = source.before.x;
|
|
57
|
-
y4 = source.before.y;
|
|
58
|
-
}
|
|
59
|
-
const dx = Math.abs(x4 - x1) * this.bezierWeight;
|
|
60
|
-
const x2 = x1 - dx;
|
|
61
|
-
const x3 = x4 + dx;
|
|
62
|
-
const centerX = (x1 + x4) / 2;
|
|
63
|
-
const centerY = (y1 + y4) / 2;
|
|
64
|
-
let controlX = this.ganttUpper.styles.lineHeight / 2;
|
|
65
|
-
const controlY = this.ganttUpper.styles.lineHeight / 2;
|
|
66
|
-
if (x1 >= x4) {
|
|
67
|
-
if (y4 > y1) {
|
|
68
|
-
if (Math.abs(y4 - y1) <= this.ganttUpper.styles.lineHeight) {
|
|
69
|
-
return `M ${x1} ${y1}
|
|
70
|
-
C ${x1 + controlX} ${y1} ${x1 + controlX} ${y1 + controlX} ${x1} ${y1 + controlY}
|
|
71
|
-
L ${x4} ${y4 - controlY}
|
|
72
|
-
C ${x4 - controlY} ${y4 - controlY} ${x4 - controlX} ${y4} ${x4} ${y4}`;
|
|
73
|
-
}
|
|
74
|
-
else {
|
|
75
|
-
controlX = this.ganttUpper.styles.lineHeight;
|
|
76
|
-
return `M ${x1} ${y1}
|
|
77
|
-
C ${x1 + controlX} ${y1} ${x1 + controlX} ${y1 + controlX} ${centerX} ${centerY}
|
|
78
|
-
C ${x4 - controlX} ${y4 - controlX} ${x4 - controlX} ${y4} ${x4} ${y4}
|
|
79
|
-
`;
|
|
80
|
-
}
|
|
81
|
-
}
|
|
82
|
-
else {
|
|
83
|
-
if (Math.abs(y4 - y1) <= this.ganttUpper.styles.lineHeight) {
|
|
84
|
-
return `M ${x1} ${y1}
|
|
85
|
-
C ${x1 + controlX} ${y1} ${x1 + controlX} ${y1 - controlX} ${x1} ${y1 - controlY}
|
|
86
|
-
L ${x4} ${y4 + controlY}
|
|
87
|
-
C ${x4 - controlY} ${y4 + controlY} ${x4 - controlX} ${y4} ${x4} ${y4}
|
|
88
|
-
`;
|
|
89
|
-
}
|
|
90
|
-
else {
|
|
91
|
-
controlX = this.ganttUpper.styles.lineHeight;
|
|
92
|
-
return `M ${x1} ${y1}
|
|
93
|
-
C ${x1 + controlX} ${y1} ${x1 + controlX} ${y1 - controlX} ${centerX} ${centerY}
|
|
94
|
-
C ${x4 - controlX} ${y4 + controlX} ${x4 - controlX} ${y4} ${x4} ${y4}
|
|
95
|
-
`;
|
|
96
|
-
}
|
|
97
|
-
}
|
|
98
|
-
}
|
|
99
|
-
else if (x4 - x1 < 100) {
|
|
100
|
-
const radius = Math.abs(y4 - y1) / 4;
|
|
101
|
-
let lindWidth = x4 - x1 - radius;
|
|
102
|
-
lindWidth = Math.max(lindWidth, radius);
|
|
103
|
-
return `M ${x1} ${y1}
|
|
104
|
-
L ${x1 + lindWidth} ${y1}
|
|
105
|
-
A ${radius} ${radius} 0 1 ${y4 > y1 ? 1 : 0} ${x1 + lindWidth} ${y4 > y1 ? y1 + 2 * radius : y1 - 2 * radius}
|
|
106
|
-
L ${x4 - lindWidth} ${y4 > y1 ? y1 + 2 * radius : y1 - 2 * radius}
|
|
107
|
-
A ${radius} ${radius} 0 1 ${y4 > y1 ? 0 : 1} ${x4 - lindWidth} ${y4}
|
|
108
|
-
L ${x4} ${y4}
|
|
109
|
-
`;
|
|
110
|
-
}
|
|
111
|
-
return `M ${x1} ${y1} C ${x2} ${y1} ${x3} ${y4} ${x4} ${y4}`;
|
|
112
|
-
}
|
|
113
|
-
};
|
|
114
|
-
GanttLinkPathCurve = __decorate([
|
|
115
|
-
__param(0, Inject(GANTT_UPPER_TOKEN))
|
|
116
|
-
], GanttLinkPathCurve);
|
|
117
|
-
export { GanttLinkPathCurve };
|
|
118
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3VydmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9nYW50dC9zcmMvY29tcG9uZW50cy9saW5rcy9wYXRocy9jdXJ2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUFFLE1BQU0sRUFBYyxNQUFNLGVBQWUsQ0FBQztBQUNuRCxPQUFPLEVBQWlCLGFBQWEsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ25FLE9BQU8sRUFBYyxpQkFBaUIsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ3JFLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxRQUFRLENBQUM7QUFFdkMsSUFBYSxrQkFBa0IsR0FBL0IsTUFBYSxrQkFBbUIsU0FBUSxhQUFhO0lBR2pELFlBQStDLFVBQXNCO1FBQ2pFLEtBQUssRUFBRSxDQUFDO1FBRG1DLGVBQVUsR0FBVixVQUFVLENBQVk7UUFGN0QsaUJBQVksR0FBRyxDQUFDLEdBQUcsQ0FBQztJQUk1QixDQUFDO0lBRUQsY0FBYyxDQUFDLE1BQXFCLEVBQUUsTUFBcUI7UUFDdkQsTUFBTSxFQUFFLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7UUFDM0IsTUFBTSxFQUFFLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7UUFDM0IsTUFBTSxFQUFFLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7UUFDM0IsTUFBTSxFQUFFLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7UUFDM0IsTUFBTSxRQUFRLEdBQUcsRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDakMsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBRXJDLElBQUksRUFBRSxHQUFHLEVBQUUsRUFB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Q0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFLEdBQUcsU0FBUyxJQUFJLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsR0FBRyxDQUFDLEdBQUcsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxHQUFHLE1BQU07d0JBQ3hHLEVBQUUsR0FBRyxTQUFTLElBQUksRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxHQUFHLENBQUMsR0FBRyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsR0FBRyxDQUFDLEdBQUcsTUFBTTt3QkFDN0QsTUFBTSxJQUFJLE1BQU0sUUFBUSxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFLEdBQUcsU0FBUyxJQUFJLEVBQUU7d0JBQy9ELEVBQUUsSUFBSSxFQUFFO3FCQUNYLENBQUM7U0FDYjtRQUNELE9BQU8sS0FBSyxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxFQUFFLENBQUM7SUFDakUsQ0FBQztDQUNKLENBQUE7QUE5R1ksa0JBQWtCO0lBR2QsV0FBQSxNQUFNLENBQUMsaUJBQWlCLENBQUMsQ0FBQTtHQUg3QixrQkFBa0IsQ0E4RzlCO1NBOUdZLGtCQUFrQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdCwgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgR2FudHRMaW5rSXRlbSwgR2FudHRMaW5rVHlwZSB9IGZyb20gJy4uLy4uLy4uL2NsYXNzL2xpbmsnO1xuaW1wb3J0IHsgR2FudHRVcHBlciwgR0FOVFRfVVBQRVJfVE9LRU4gfSBmcm9tICcuLi8uLi8uLi9nYW50dC11cHBlcic7XG5pbXBvcnQgeyBHYW50dExpbmtQYXRoIH0gZnJvbSAnLi9wYXRoJztcblxuZXhwb3J0IGNsYXNzIEdhbnR0TGlua1BhdGhDdXJ2ZSBleHRlbmRzIEdhbnR0TGlua1BhdGgge1xuICAgIHByaXZhdGUgYmV6aWVyV2VpZ2h0ID0gLTAuNTtcblxuICAgIGNvbnN0cnVjdG9yKEBJbmplY3QoR0FOVFRfVVBQRVJfVE9LRU4pIHByaXZhdGUgZ2FudHRVcHBlcjogR2FudHRVcHBlcikge1xuICAgICAgICBzdXBlcigpO1xuICAgIH1cblxuICAgIGdlbmVyYXRlU1NQYXRoKHNvdXJjZTogR2FudHRMaW5rSXRlbSwgdGFyZ2V0OiBHYW50dExpbmtJdGVtKSB7XG4gICAgICAgIGNvbnN0IHgxID0gc291cmNlLmJlZm9yZS54O1xuICAgICAgICBjb25zdCB5MSA9IHNvdXJjZS5iZWZvcmUueTtcbiAgICAgICAgY29uc3QgeDQgPSB0YXJnZXQuYmVmb3JlLng7XG4gICAgICAgIGNvbnN0IHk0ID0gdGFyZ2V0LmJlZm9yZS55O1xuICAgICAgICBjb25zdCBpc01pcnJvciA9IHk0ID4geTEgPyAwIDogMTtcbiAgICAgICAgY29uc3QgcmFkaXVzID0gTWF0aC5hYnMoeTQgLSB5MSkgLyAyO1xuXG4gICAgICAgIGlmICh4NCA+IHgxKSB7XG4gICAgICAgICAgICByZXR1cm4gYE0gJHt4MX0gJHt5MX1cbiAgICAgICAgICAgICAgICAgICAgQSAke3JhZGl1c30gJHtyYWRpdXN9IDAgMSAke2lzTWlycm9yfSAke3gxfSAke3k0fVxuICAgICAgICAgICAgICAgICAgICBMICR7eDR9ICR7eTR9YDtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiBgTSAke3gxfSAke3kxfVxuICAgICAgICAgICAgICAgICAgICBMICR7eDR9ICR7eTF9XG4gICAgICAgICAgICAgICAgICAgIEEgJHtyYWRpdXN9ICR7cmFkaXVzfSAwIDEgJHtpc01pcnJvcn0gJHt4NH0gJHt5NH1gO1xuICAgICAgICB9XG4gICAgfVxuICAgIGdlbmVyYXRlRkZQYXRoKHNvdXJjZTogR2FudHRMaW5rSXRlbSwgdGFyZ2V0OiBHYW50dExpbmtJdGVtKSB7XG4gICAgICAgIGNvbnN0IHgxID0gc291cmNlLmFmdGVyLng7XG4gICAgICAgIGNvbnN0IHkxID0gc291cmNlLmFmdGVyLnk7XG4gICAgICAgIGNvbnN0IHg0ID0gdGFyZ2V0LmFmdGVyLng7XG4gICAgICAgIGNvbnN0IHk0ID0gdGFyZ2V0LmFmdGVyLnk7XG4gICAgICAgIGNvbnN0IGlzTWlycm9yID0geTQgPiB5MSA/IDEgOiAwO1xuICAgICAgICBjb25zdCByYWRpdXMgPSBNYXRoLmFicyh5NCAtIHkxKSAvIDI7XG4gICAgICAgIGlmICh4NCA+IHgxKSB7XG4gICAgICAgICAgICByZXR1cm4gYE0gJHt4MX0gJHt5MX1cbiAgICAgICAgICAgICAgICAgICAgTCAke3g0fSAke3kxfVxuICAgICAgICAgICAgICAgICAgICBBICR7cmFkaXVzfSAke3JhZGl1c30gMCAxICR7aXNNaXJyb3J9ICR7eDR9ICR7eTR9YDtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiBgTSAke3gxfSAke3kxfVxuICAgICAgICAgICAgICAgICAgICBBICR7cmFkaXVzfSAke3JhZGl1c30gMCAxICR7aXNNaXJyb3J9ICR7eDF9ICR7eTR9XG4gICAgICAgICAgICAgICAgICAgIEwgJHt4NH0gJHt5NH1gO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgZ2VuZXJhdGVGU0FuZFNGUGF0aChzb3VyY2U6IEdhbnR0TGlua0l0ZW0sIHRhcmdldDogR2FudHRMaW5rSXRlbSwgdHlwZT86IEdhbnR0TGlua1R5cGUpIHtcbiAgICAgICAgbGV0IHgxID0gc291cmNlLmFmdGVyLng7XG4gICAgICAgIGxldCB5MSA9IHNvdXJjZS5hZnRlci55O1xuICAgICAgICBsZXQgeDQgPSB0YXJnZXQuYmVmb3JlLng7XG4gICAgICAgIGxldCB5NCA9IHRhcmdldC5iZWZvcmUueTtcblxuICAgICAgICBpZiAodHlwZSA9PT0gR2FudHRMaW5rVHlwZS5zZikge1xuICAgICAgICAgICAgeDEgPSB0YXJnZXQuYWZ0ZXIueDtcbiAgICAgICAgICAgIHkxID0gdGFyZ2V0LmFmdGVyLnk7XG4gICAgICAgICAgICB4NCA9IHNvdXJjZS5iZWZvcmUueDtcbiAgICAgICAgICAgIHk0ID0gc291cmNlLmJlZm9yZS55O1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgZHggPSBNYXRoLmFicyh4NCAtIHgxKSAqIHRoaXMuYmV6aWVyV2VpZ2h0O1xuXG4gICAgICAgIGNvbnN0IHgyID0geDEgLSBkeDtcbiAgICAgICAgY29uc3QgeDMgPSB4NCArIGR4O1xuICAgICAgICBjb25zdCBjZW50ZXJYID0gKHgxICsgeDQpIC8gMjtcbiAgICAgICAgY29uc3QgY2VudGVyWSA9ICh5MSArIHk0KSAvIDI7XG5cbiAgICAgICAgbGV0IGNvbnRyb2xYID0gdGhpcy5nYW50dFVwcGVyLnN0eWxlcy5saW5lSGVpZ2h0IC8gMjtcbiAgICAgICAgY29uc3QgY29udHJvbFkgPSB0aGlzLmdhbnR0VXBwZXIuc3R5bGVzLmxpbmVIZWlnaHQgLyAyO1xuXG4gICAgICAgIGlmICh4MSA+PSB4NCkge1xuICAgICAgICAgICAgaWYgKHk0ID4geTEpIHtcbiAgICAgICAgICAgICAgICBpZiAoTWF0aC5hYnMoeTQgLSB5MSkgPD0gdGhpcy5nYW50dFVwcGVyLnN0eWxlcy5saW5lSGVpZ2h0KSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBgTSAke3gxfSAke3kxfVxuICAgICAgICAgICAgICAgICAgICBDICR7eDEgKyBjb250cm9sWH0gJHt5MX0gJHt4MSArIGNvbnRyb2xYfSAke3kxICsgY29udHJvbFh9ICR7eDF9ICR7eTEgKyBjb250cm9sWX1cbiAgICAgICAgICAgICAgICAgICAgTCAke3g0fSAke3k0IC0gY29udHJvbFl9XG4gICAgICAgICAgICAgICAgICAgIEMgJHt4NCAtIGNvbnRyb2xZfSAke3k0IC0gY29udHJvbFl9ICAke3g0IC0gY29udHJvbFh9ICR7eTR9ICR7eDR9ICR7eTR9YDtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBjb250cm9sWCA9IHRoaXMuZ2FudHRVcHBlci5zdHlsZXMubGluZUhlaWdodDtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGBNICR7eDF9ICR7eTF9XG4gICAgICAgICAgICAgICAgICAgIEMgJHt4MSArIGNvbnRyb2xYfSAke3kxfSAke3gxICsgY29udHJvbFh9ICR7eTEgKyBjb250cm9sWH0gJHtjZW50ZXJYfSAke2NlbnRlcll9XG4gICAgICAgICAgICAgICAgICAgIEMgJHt4NCAtIGNvbnRyb2xYfSAke3k0IC0gY29udHJvbFh9ICR7eDQgLSBjb250cm9sWH0gJHt5NH0gJHt4NH0gJHt5NH1cbiAgICAgICAgICAgICAgICAgICAgYDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGlmIChNYXRoLmFicyh5NCAtIHkxKSA8PSB0aGlzLmdhbnR0VXBwZXIuc3R5bGVzLmxpbmVIZWlnaHQpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGBNICR7eDF9ICR7eTF9XG4gICAgICAgICAgICAgICAgICAgIEMgJHt4MSArIGNvbnRyb2xYfSAke3kxfSAke3gxICsgY29udHJvbFh9ICR7eTEgLSBjb250cm9sWH0gJHt4MX0gJHt5MSAtIGNvbnRyb2xZfVxuICAgICAgICAgICAgICAgICAgICBMICR7eDR9ICR7eTQgKyBjb250cm9sWX1cbiAgICAgICAgICAgICAgICAgICAgQyAke3g0IC0gY29udHJvbFl9ICR7eTQgKyBjb250cm9sWX0gJHt4NCAtIGNvbnRyb2xYfSAke3k0fSAke3g0fSAke3k0fVxuICAgICAgICAgICAgICAgICAgICBgO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnRyb2xYID0gdGhpcy5nYW50dFVwcGVyLnN0eWxlcy5saW5lSGVpZ2h0O1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gYE0gJHt4MX0gJHt5MX1cbiAgICAgICAgICAgICAgICAgICAgQyAke3gxICsgY29udHJvbFh9ICR7eTF9ICR7eDEgKyBjb250cm9sWH0gJHt5MSAtIGNvbnRyb2xYfSAke2NlbnRlclh9ICR7Y2VudGVyWX1cbiAgICAgICAgICAgICAgICAgICAgQyAke3g0IC0gY29udHJvbFh9ICR7eTQgKyBjb250cm9sWH0gJHt4NCAtIGNvbnRyb2xYfSAke3k0fSAke3g0fSAke3k0fVxuICAgICAgICAgICAgICAgICAgICBgO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIGlmICh4NCAtIHgxIDwgMTAwKSB7XG4gICAgICAgICAgICBjb25zdCByYWRpdXMgPSBNYXRoLmFicyh5NCAtIHkxKSAvIDQ7XG4gICAgICAgICAgICBsZXQgbGluZFdpZHRoID0geDQgLSB4MSAtIHJhZGl1cztcbiAgICAgICAgICAgIGxpbmRXaWR0aCA9IE1hdGgubWF4KGxpbmRXaWR0aCwgcmFkaXVzKTtcblxuICAgICAgICAgICAgcmV0dXJuIGBNICR7eDF9ICR7eTF9XG4gICAgICAgICAgICAgICAgICAgIEwgJHt4MSArIGxpbmRXaWR0aH0gJHt5MX1cbiAgICAgICAgICAgICAgICAgICAgQSAke3JhZGl1c30gJHtyYWRpdXN9IDAgMSAke3k0ID4geTEgPyAxIDogMH0gJHt4MSArIGxpbmRXaWR0aH0gJHt5NCA+IHkxID8geTEgKyAyICogcmFkaXVzIDogeTEgLSAyICogcmFkaXVzfVxuICAgICAgICAgICAgICAgICAgICBMICR7eDQgLSBsaW5kV2lkdGh9ICR7eTQgPiB5MSA/IHkxICsgMiAqIHJhZGl1cyA6IHkxIC0gMiAqIHJhZGl1c31cbiAgICAgICAgICAgICAgICAgICAgQSAke3JhZGl1c30gJHtyYWRpdXN9IDAgMSAke3k0ID4geTEgPyAwIDogMX0gJHt4NCAtIGxpbmRXaWR0aH0gJHt5NH1cbiAgICAgICAgICAgICAgICAgICAgTCAke3g0fSAke3k0fVxuICAgICAgICAgICAgICAgICAgICBgO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBgTSAke3gxfSAke3kxfSBDICR7eDJ9ICR7eTF9ICR7eDN9ICR7eTR9ICR7eDR9ICR7eTR9YDtcbiAgICB9XG59XG4iXX0=
|
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
import { GanttLinkPathType } from '../../../class/link';
|
|
2
|
-
import { GanttLinkPathCurve } from './curve';
|
|
3
|
-
import { GanttLinkPathLine } from './line';
|
|
4
|
-
export function generatePathFactory(type, ganttUpper) {
|
|
5
|
-
switch (type) {
|
|
6
|
-
case GanttLinkPathType.curve:
|
|
7
|
-
return new GanttLinkPathCurve(ganttUpper);
|
|
8
|
-
case GanttLinkPathType.line:
|
|
9
|
-
return new GanttLinkPathLine();
|
|
10
|
-
default:
|
|
11
|
-
throw new Error('gantt link path type invalid');
|
|
12
|
-
}
|
|
13
|
-
}
|
|
14
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmFjdG9yeS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2dhbnR0L3NyYy9jb21wb25lbnRzL2xpbmtzL3BhdGhzL2ZhY3RvcnkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFFeEQsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sU0FBUyxDQUFDO0FBQzdDLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLFFBQVEsQ0FBQztBQUUzQyxNQUFNLFVBQVUsbUJBQW1CLENBQUMsSUFBdUIsRUFBRSxVQUF1QjtJQUNoRixRQUFRLElBQUksRUFBRTtRQUNWLEtBQUssaUJBQWlCLENBQUMsS0FBSztZQUN4QixPQUFPLElBQUksa0JBQWtCLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDOUMsS0FBSyxpQkFBaUIsQ0FBQyxJQUFJO1lBQ3ZCLE9BQU8sSUFBSSxpQkFBaUIsRUFBRSxDQUFDO1FBQ25DO1lBQ0ksTUFBTSxJQUFJLEtBQUssQ0FBQyw4QkFBOEIsQ0FBQyxDQUFDO0tBQ3ZEO0FBQ0wsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEdhbnR0TGlua1BhdGhUeXBlIH0gZnJvbSAnLi4vLi4vLi4vY2xhc3MvbGluayc7XG5pbXBvcnQgeyBHYW50dFVwcGVyIH0gZnJvbSAnLi4vLi4vLi4vZ2FudHQtdXBwZXInO1xuaW1wb3J0IHsgR2FudHRMaW5rUGF0aEN1cnZlIH0gZnJvbSAnLi9jdXJ2ZSc7XG5pbXBvcnQgeyBHYW50dExpbmtQYXRoTGluZSB9IGZyb20gJy4vbGluZSc7XG5cbmV4cG9ydCBmdW5jdGlvbiBnZW5lcmF0ZVBhdGhGYWN0b3J5KHR5cGU6IEdhbnR0TGlua1BhdGhUeXBlLCBnYW50dFVwcGVyPzogR2FudHRVcHBlcikge1xuICAgIHN3aXRjaCAodHlwZSkge1xuICAgICAgICBjYXNlIEdhbnR0TGlua1BhdGhUeXBlLmN1cnZlOlxuICAgICAgICAgICAgcmV0dXJuIG5ldyBHYW50dExpbmtQYXRoQ3VydmUoZ2FudHRVcHBlcik7XG4gICAgICAgIGNhc2UgR2FudHRMaW5rUGF0aFR5cGUubGluZTpcbiAgICAgICAgICAgIHJldHVybiBuZXcgR2FudHRMaW5rUGF0aExpbmUoKTtcbiAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignZ2FudHQgbGluayBwYXRoIHR5cGUgaW52YWxpZCcpO1xuICAgIH1cbn1cbiJdfQ==
|
|
@@ -1,59 +0,0 @@
|
|
|
1
|
-
import { GanttLinkPath } from './path';
|
|
2
|
-
import { GanttLinkType } from '../../../class/link';
|
|
3
|
-
export class GanttLinkPathLine extends GanttLinkPath {
|
|
4
|
-
constructor() {
|
|
5
|
-
super();
|
|
6
|
-
this.pathControl = 20;
|
|
7
|
-
}
|
|
8
|
-
generateSSPath(source, target) {
|
|
9
|
-
const x1 = source.before.x;
|
|
10
|
-
const y1 = source.before.y;
|
|
11
|
-
const x4 = target.before.x;
|
|
12
|
-
const y4 = target.before.y;
|
|
13
|
-
const control = this.pathControl;
|
|
14
|
-
const centerY = (y1 + y4) / 2;
|
|
15
|
-
return `M ${x1} ${y1}
|
|
16
|
-
L ${x4 > x1 ? x1 - control : x4 - control} ${y1}
|
|
17
|
-
L ${x4 > x1 ? x1 - control : x4 - control} ${y4}
|
|
18
|
-
L ${x4} ${y4}`;
|
|
19
|
-
}
|
|
20
|
-
generateFFPath(source, target) {
|
|
21
|
-
const x1 = source.after.x;
|
|
22
|
-
const y1 = source.after.y;
|
|
23
|
-
const x4 = target.after.x;
|
|
24
|
-
const y4 = target.after.y;
|
|
25
|
-
const control = this.pathControl;
|
|
26
|
-
return `M ${x1} ${y1}
|
|
27
|
-
L ${x4 > x1 ? x4 + control : x1 + control} ${y1}
|
|
28
|
-
L ${x4 > x1 ? x4 + control : x1 + control} ${y4}
|
|
29
|
-
L ${x4} ${y4}`;
|
|
30
|
-
}
|
|
31
|
-
generateFSAndSFPath(source, target, type) {
|
|
32
|
-
let x1 = source.after.x;
|
|
33
|
-
let y1 = source.after.y;
|
|
34
|
-
let x4 = target.before.x;
|
|
35
|
-
let y4 = target.before.y;
|
|
36
|
-
const control = this.pathControl;
|
|
37
|
-
if (type === GanttLinkType.sf) {
|
|
38
|
-
x1 = target.after.x;
|
|
39
|
-
y1 = target.after.y;
|
|
40
|
-
x4 = source.before.x;
|
|
41
|
-
y4 = source.before.y;
|
|
42
|
-
}
|
|
43
|
-
if (x4 - x1 >= 40) {
|
|
44
|
-
return `M ${x1} ${y1}
|
|
45
|
-
L ${x1 + control} ${y1}
|
|
46
|
-
L ${x1 + control} ${y4}
|
|
47
|
-
L ${x4} ${y4}`;
|
|
48
|
-
}
|
|
49
|
-
else {
|
|
50
|
-
return `M ${x1} ${y1}
|
|
51
|
-
L ${x1 + control} ${y1}
|
|
52
|
-
L ${x1 + control} ${y4 > y1 ? y1 + control : y1 - control}
|
|
53
|
-
L ${x4 - control} ${y4 > y1 ? y1 + control : y1 - control}
|
|
54
|
-
L ${x4 - control} ${y4}
|
|
55
|
-
L ${x4} ${y4}`;
|
|
56
|
-
}
|
|
57
|
-
}
|
|
58
|
-
}
|
|
59
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGluZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2dhbnR0L3NyYy9jb21wb25lbnRzL2xpbmtzL3BhdGhzL2xpbmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLFFBQVEsQ0FBQztBQUN2QyxPQUFPLEVBQWlCLGFBQWEsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBRW5FLE1BQU0sT0FBTyxpQkFBa0IsU0FBUSxhQUFhO0lBR2hEO1FBQ0ksS0FBSyxFQUFFLENBQUM7UUFISixnQkFBVyxHQUFHLEVBQUUsQ0FBQztJQUl6QixDQUFDO0lBRUQsY0FBYyxDQUFDLE1BQXFCLEVBQUUsTUFBcUI7UUFDdkQsTUFBTSxFQUFFLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7UUFDM0IsTUFBTSxFQUFFLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7UUFDM0IsTUFBTSxFQUFFLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7UUFDM0IsTUFBTSxFQUFFLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7UUFDM0IsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQztRQUNqQyxNQUFNLE9BQU8sR0FBRyxDQUFDLEVBQUUsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUM7UUFFOUIsT0FBTyxLQUFLLEVBQUUsSUFBSSxFQUFFOzRCQUNBLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsR0FBRyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUUsR0FBRyxPQUFPLElBQUksRUFBRTs0QkFDM0MsRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxHQUFHLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRSxHQUFHLE9BQU8sSUFBSSxFQUFFOzRCQUMzQyxFQUFFLElBQUksRUFBRSxFQUFFLENBQUM7SUFDbkMsQ0FBQztJQUVELGNBQWMsQ0FBQyxNQUFxQixFQUFFLE1BQXFCO1FBQ3ZELE1BQU0sRUFBRSxHQUFHLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO1FBQzFCLE1BQU0sRUFBRSxHQUFHLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO1FBQzFCLE1BQU0sRUFBRSxHQUFHLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO1FBQzFCLE1BQU0sRUFBRSxHQUFHLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO1FBQzFCLE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUM7UUFFakMsT0FBTyxLQUFLLEVBQUUsSUFBSSxFQUFFOzRCQUNBLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsR0FBRyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUUsR0FBRyxPQUFPLElBQUksRUFBRTs0QkFDM0MsRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxHQUFHLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRSxHQUFHLE9BQU8sSUFBSSxFQUFFOzRCQUMzQyxFQUFFLElBQUksRUFBRSxFQUFFLENBQUM7SUFDbkMsQ0FBQztJQUVELG1CQUFtQixDQUFDLE1BQXFCLEVBQUUsTUFBcUIsRUFBRSxJQUFvQjtRQUNsRixJQUFJLEVBQUUsR0FBRyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztRQUN4QixJQUFJLEVBQUUsR0FBRyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztRQUN4QixJQUFJLEVBQUUsR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztRQUN6QixJQUFJLEVBQUUsR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztRQUN6QixNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDO1FBRWpDLElBQUksSUFBSSxLQUFLLGFBQWEsQ0FBQyxFQUFFLEVBQUU7WUFDM0IsRUFBRSxHQUFHLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO1lBQ3BCLEVBQUUsR0FBRyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztZQUNwQixFQUFFLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7WUFDckIsRUFBRSxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO1NBQ3hCO1FBRUQsSUFBSSxFQUFFLEdBQUcsRUFBRSxJQUFJLEVBQUUsRUFBRTtZQUNmLE9BQU8sS0FBSyxFQUFFLElBQUksRUFBRTs0QkFDSixFQUFFLEdBQUcsT0FBTyxJQUFJLEVBQUU7NEJBQ2xCLEVBQUUsR0FBRyxPQUFPLElBQUksRUFBRTs0QkFDbEIsRUFBRSxJQUFJLEVBQUUsRUFBRSxDQUFDO1NBQzlCO2FBQU07WUFDSCxPQUFPLEtBQUssRUFBRSxJQUFJLEVBQUU7NEJBQ0osRUFBRSxHQUFHLE9BQU8sSUFBSSxFQUFFOzRCQUNsQixFQUFFLEdBQUcsT0FBTyxJQUFJLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsR0FBRyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUUsR0FBRyxPQUFPOzRCQUNyRCxFQUFFLEdBQUcsT0FBTyxJQUFJLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsR0FBRyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUUsR0FBRyxPQUFPOzRCQUNyRCxFQUFFLEdBQUcsT0FBTyxJQUFJLEVBQUU7NEJBQ2xCLEVBQUUsSUFBSSxFQUFFLEVBQUUsQ0FBQztTQUM5QjtJQUNMLENBQUM7Q0FDSiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHsgR2FudHRMaW5rUGF0aCB9IGZyb20gJy4vcGF0aCc7XG5pbXBvcnQgeyBHYW50dExpbmtJdGVtLCBHYW50dExpbmtUeXBlIH0gZnJvbSAnLi4vLi4vLi4vY2xhc3MvbGluayc7XG5cbmV4cG9ydCBjbGFzcyBHYW50dExpbmtQYXRoTGluZSBleHRlbmRzIEdhbnR0TGlua1BhdGgge1xuICAgIHByaXZhdGUgcGF0aENvbnRyb2wgPSAyMDtcblxuICAgIGNvbnN0cnVjdG9yKCkge1xuICAgICAgICBzdXBlcigpO1xuICAgIH1cblxuICAgIGdlbmVyYXRlU1NQYXRoKHNvdXJjZTogR2FudHRMaW5rSXRlbSwgdGFyZ2V0OiBHYW50dExpbmtJdGVtKSB7XG4gICAgICAgIGNvbnN0IHgxID0gc291cmNlLmJlZm9yZS54O1xuICAgICAgICBjb25zdCB5MSA9IHNvdXJjZS5iZWZvcmUueTtcbiAgICAgICAgY29uc3QgeDQgPSB0YXJnZXQuYmVmb3JlLng7XG4gICAgICAgIGNvbnN0IHk0ID0gdGFyZ2V0LmJlZm9yZS55O1xuICAgICAgICBjb25zdCBjb250cm9sID0gdGhpcy5wYXRoQ29udHJvbDtcbiAgICAgICAgY29uc3QgY2VudGVyWSA9ICh5MSArIHk0KSAvIDI7XG5cbiAgICAgICAgcmV0dXJuIGBNICR7eDF9ICR7eTF9XG4gICAgICAgICAgICAgICAgICAgICAgICBMICR7eDQgPiB4MSA/IHgxIC0gY29udHJvbCA6IHg0IC0gY29udHJvbH0gJHt5MX1cbiAgICAgICAgICAgICAgICAgICAgICAgIEwgJHt4NCA+IHgxID8geDEgLSBjb250cm9sIDogeDQgLSBjb250cm9sfSAke3k0fVxuICAgICAgICAgICAgICAgICAgICAgICAgTCAke3g0fSAke3k0fWA7XG4gICAgfVxuXG4gICAgZ2VuZXJhdGVGRlBhdGgoc291cmNlOiBHYW50dExpbmtJdGVtLCB0YXJnZXQ6IEdhbnR0TGlua0l0ZW0pIHtcbiAgICAgICAgY29uc3QgeDEgPSBzb3VyY2UuYWZ0ZXIueDtcbiAgICAgICAgY29uc3QgeTEgPSBzb3VyY2UuYWZ0ZXIueTtcbiAgICAgICAgY29uc3QgeDQgPSB0YXJnZXQuYWZ0ZXIueDtcbiAgICAgICAgY29uc3QgeTQgPSB0YXJnZXQuYWZ0ZXIueTtcbiAgICAgICAgY29uc3QgY29udHJvbCA9IHRoaXMucGF0aENvbnRyb2w7XG5cbiAgICAgICAgcmV0dXJuIGBNICR7eDF9ICR7eTF9XG4gICAgICAgICAgICAgICAgICAgICAgICBMICR7eDQgPiB4MSA/IHg0ICsgY29udHJvbCA6IHgxICsgY29udHJvbH0gJHt5MX1cbiAgICAgICAgICAgICAgICAgICAgICAgIEwgJHt4NCA+IHgxID8geDQgKyBjb250cm9sIDogeDEgKyBjb250cm9sfSAke3k0fVxuICAgICAgICAgICAgICAgICAgICAgICAgTCAke3g0fSAke3k0fWA7XG4gICAgfVxuXG4gICAgZ2VuZXJhdGVGU0FuZFNGUGF0aChzb3VyY2U6IEdhbnR0TGlua0l0ZW0sIHRhcmdldDogR2FudHRMaW5rSXRlbSwgdHlwZT86IEdhbnR0TGlua1R5cGUpIHtcbiAgICAgICAgbGV0IHgxID0gc291cmNlLmFmdGVyLng7XG4gICAgICAgIGxldCB5MSA9IHNvdXJjZS5hZnRlci55O1xuICAgICAgICBsZXQgeDQgPSB0YXJnZXQuYmVmb3JlLng7XG4gICAgICAgIGxldCB5NCA9IHRhcmdldC5iZWZvcmUueTtcbiAgICAgICAgY29uc3QgY29udHJvbCA9IHRoaXMucGF0aENvbnRyb2w7XG5cbiAgICAgICAgaWYgKHR5cGUgPT09IEdhbnR0TGlua1R5cGUuc2YpIHtcbiAgICAgICAgICAgIHgxID0gdGFyZ2V0LmFmdGVyLng7XG4gICAgICAgICAgICB5MSA9IHRhcmdldC5hZnRlci55O1xuICAgICAgICAgICAgeDQgPSBzb3VyY2UuYmVmb3JlLng7XG4gICAgICAgICAgICB5NCA9IHNvdXJjZS5iZWZvcmUueTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh4NCAtIHgxID49IDQwKSB7XG4gICAgICAgICAgICByZXR1cm4gYE0gJHt4MX0gJHt5MX1cbiAgICAgICAgICAgICAgICAgICAgICAgIEwgJHt4MSArIGNvbnRyb2x9ICR7eTF9XG4gICAgICAgICAgICAgICAgICAgICAgICBMICR7eDEgKyBjb250cm9sfSAke3k0fVxuICAgICAgICAgICAgICAgICAgICAgICAgTCAke3g0fSAke3k0fWA7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gYE0gJHt4MX0gJHt5MX1cbiAgICAgICAgICAgICAgICAgICAgICAgIEwgJHt4MSArIGNvbnRyb2x9ICR7eTF9XG4gICAgICAgICAgICAgICAgICAgICAgICBMICR7eDEgKyBjb250cm9sfSAke3k0ID4geTEgPyB5MSArIGNvbnRyb2wgOiB5MSAtIGNvbnRyb2x9XG4gICAgICAgICAgICAgICAgICAgICAgICBMICR7eDQgLSBjb250cm9sfSAke3k0ID4geTEgPyB5MSArIGNvbnRyb2wgOiB5MSAtIGNvbnRyb2x9XG4gICAgICAgICAgICAgICAgICAgICAgICBMICR7eDQgLSBjb250cm9sfSAke3k0fVxuICAgICAgICAgICAgICAgICAgICAgICAgTCAke3g0fSAke3k0fWA7XG4gICAgICAgIH1cbiAgICB9XG59XG4iXX0=
|
|
@@ -1,31 +0,0 @@
|
|
|
1
|
-
import { Injectable } from '@angular/core';
|
|
2
|
-
import { GanttLinkType } from '../../../class/link';
|
|
3
|
-
import * as i0 from "@angular/core";
|
|
4
|
-
export class GanttLinkPath {
|
|
5
|
-
constructor() { }
|
|
6
|
-
generatePath(source, target, type) {
|
|
7
|
-
if (source.before && source.after && target.before && target.after) {
|
|
8
|
-
let path = '';
|
|
9
|
-
switch (type) {
|
|
10
|
-
case GanttLinkType.ss:
|
|
11
|
-
path = this.generateSSPath(source, target);
|
|
12
|
-
break;
|
|
13
|
-
case GanttLinkType.ff:
|
|
14
|
-
path = this.generateFFPath(source, target);
|
|
15
|
-
break;
|
|
16
|
-
case GanttLinkType.sf:
|
|
17
|
-
path = this.generateFSAndSFPath(source, target, type);
|
|
18
|
-
break;
|
|
19
|
-
default:
|
|
20
|
-
path = this.generateFSAndSFPath(source, target);
|
|
21
|
-
}
|
|
22
|
-
return path;
|
|
23
|
-
}
|
|
24
|
-
}
|
|
25
|
-
}
|
|
26
|
-
GanttLinkPath.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.1.2", ngImport: i0, type: GanttLinkPath, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
27
|
-
GanttLinkPath.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.1.2", ngImport: i0, type: GanttLinkPath });
|
|
28
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.1.2", ngImport: i0, type: GanttLinkPath, decorators: [{
|
|
29
|
-
type: Injectable
|
|
30
|
-
}], ctorParameters: function () { return []; } });
|
|
31
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGF0aC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2dhbnR0L3NyYy9jb21wb25lbnRzL2xpbmtzL3BhdGhzL3BhdGgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQWlCLGFBQWEsRUFBRSxNQUFNLHFCQUFxQixDQUFDOztBQUduRSxNQUFNLE9BQWdCLGFBQWE7SUFDL0IsZ0JBQWUsQ0FBQztJQVFoQixZQUFZLENBQUMsTUFBcUIsRUFBRSxNQUFxQixFQUFFLElBQW1CO1FBQzFFLElBQUksTUFBTSxDQUFDLE1BQU0sSUFBSSxNQUFNLENBQUMsS0FBSyxJQUFJLE1BQU0sQ0FBQyxNQUFNLElBQUksTUFBTSxDQUFDLEtBQUssRUFBRTtZQUNoRSxJQUFJLElBQUksR0FBRyxFQUFFLENBQUM7WUFFZCxRQUFRLElBQUksRUFBRTtnQkFDVixLQUFLLGFBQWEsQ0FBQyxFQUFFO29CQUNqQixJQUFJLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxNQUFNLEVBQUUsTUFBTSxDQUFDLENBQUM7b0JBQzNDLE1BQU07Z0JBQ1YsS0FBSyxhQUFhLENBQUMsRUFBRTtvQkFDakIsSUFBSSxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsTUFBTSxFQUFFLE1BQU0sQ0FBQyxDQUFDO29CQUMzQyxNQUFNO2dCQUVWLEtBQUssYUFBYSxDQUFDLEVBQUU7b0JBQ2pCLElBQUksR0FBRyxJQUFJLENBQUMsbUJBQW1CLENBQUMsTUFBTSxFQUFFLE1BQU0sRUFBRSxJQUFJLENBQUMsQ0FBQztvQkFDdEQsTUFBTTtnQkFDVjtvQkFDSSxJQUFJLEdBQUcsSUFBSSxDQUFDLG1CQUFtQixDQUFDLE1BQU0sRUFBRSxNQUFNLENBQUMsQ0FBQzthQUN2RDtZQUVELE9BQU8sSUFBSSxDQUFDO1NBQ2Y7SUFDTCxDQUFDOzswR0E5QmlCLGFBQWE7OEdBQWIsYUFBYTsyRkFBYixhQUFhO2tCQURsQyxVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgR2FudHRMaW5rSXRlbSwgR2FudHRMaW5rVHlwZSB9IGZyb20gJy4uLy4uLy4uL2NsYXNzL2xpbmsnO1xuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgR2FudHRMaW5rUGF0aCB7XG4gICAgY29uc3RydWN0b3IoKSB7fVxuXG4gICAgYWJzdHJhY3QgZ2VuZXJhdGVTU1BhdGgoc291cmNlOiBHYW50dExpbmtJdGVtLCB0YXJnZXQ6IEdhbnR0TGlua0l0ZW0pOiBzdHJpbmc7XG5cbiAgICBhYnN0cmFjdCBnZW5lcmF0ZUZGUGF0aChzb3VyY2U6IEdhbnR0TGlua0l0ZW0sIHRhcmdldDogR2FudHRMaW5rSXRlbSk6IHN0cmluZztcblxuICAgIGFic3RyYWN0IGdlbmVyYXRlRlNBbmRTRlBhdGgoc291cmNlOiBHYW50dExpbmtJdGVtLCB0YXJnZXQ6IEdhbnR0TGlua0l0ZW0sIHR5cGU/OiBHYW50dExpbmtUeXBlKTogc3RyaW5nO1xuXG4gICAgZ2VuZXJhdGVQYXRoKHNvdXJjZTogR2FudHRMaW5rSXRlbSwgdGFyZ2V0OiBHYW50dExpbmtJdGVtLCB0eXBlOiBHYW50dExpbmtUeXBlKSB7XG4gICAgICAgIGlmIChzb3VyY2UuYmVmb3JlICYmIHNvdXJjZS5hZnRlciAmJiB0YXJnZXQuYmVmb3JlICYmIHRhcmdldC5hZnRlcikge1xuICAgICAgICAgICAgbGV0IHBhdGggPSAnJztcblxuICAgICAgICAgICAgc3dpdGNoICh0eXBlKSB7XG4gICAgICAgICAgICAgICAgY2FzZSBHYW50dExpbmtUeXBlLnNzOlxuICAgICAgICAgICAgICAgICAgICBwYXRoID0gdGhpcy5nZW5lcmF0ZVNTUGF0aChzb3VyY2UsIHRhcmdldCk7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIGNhc2UgR2FudHRMaW5rVHlwZS5mZjpcbiAgICAgICAgICAgICAgICAgICAgcGF0aCA9IHRoaXMuZ2VuZXJhdGVGRlBhdGgoc291cmNlLCB0YXJnZXQpO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgIGNhc2UgR2FudHRMaW5rVHlwZS5zZjpcbiAgICAgICAgICAgICAgICAgICAgcGF0aCA9IHRoaXMuZ2VuZXJhdGVGU0FuZFNGUGF0aChzb3VyY2UsIHRhcmdldCwgdHlwZSk7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgICAgIHBhdGggPSB0aGlzLmdlbmVyYXRlRlNBbmRTRlBhdGgoc291cmNlLCB0YXJnZXQpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICByZXR1cm4gcGF0aDtcbiAgICAgICAgfVxuICAgIH1cbn1cbiJdfQ==
|