@syncfusion/ej2-gantt 21.2.10 → 22.1.34
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/.eslintrc.json +1 -0
- package/CHANGELOG.md +12 -0
- package/dist/ej2-gantt.min.js +2 -2
- package/dist/ej2-gantt.umd.min.js +2 -2
- package/dist/ej2-gantt.umd.min.js.map +1 -1
- package/dist/es6/ej2-gantt.es2015.js +734 -711
- package/dist/es6/ej2-gantt.es2015.js.map +1 -1
- package/dist/es6/ej2-gantt.es5.js +773 -751
- package/dist/es6/ej2-gantt.es5.js.map +1 -1
- package/dist/global/ej2-gantt.min.js +2 -2
- package/dist/global/ej2-gantt.min.js.map +1 -1
- package/dist/global/index.d.ts +1 -1
- package/package.json +20 -19
- package/src/gantt/actions/connector-line-edit.js +21 -26
- package/src/gantt/actions/context-menu.js +2 -2
- package/src/gantt/actions/critical-path.js +4 -9
- package/src/gantt/actions/day-markers.js +4 -1
- package/src/gantt/actions/edit.js +8 -6
- package/src/gantt/actions/pdf-export.js +1 -1
- package/src/gantt/actions/taskbar-edit.d.ts +6 -0
- package/src/gantt/actions/taskbar-edit.js +120 -45
- package/src/gantt/base/css-constants.d.ts +5 -10
- package/src/gantt/base/css-constants.js +5 -10
- package/src/gantt/base/date-processor.js +1 -19
- package/src/gantt/base/enum.d.ts +215 -231
- package/src/gantt/base/gantt-chart.js +112 -5
- package/src/gantt/base/gantt-model.d.ts +6 -3
- package/src/gantt/base/gantt.d.ts +7 -3
- package/src/gantt/base/gantt.js +17 -13
- package/src/gantt/base/interface.d.ts +36 -1
- package/src/gantt/base/task-processor.js +14 -15
- package/src/gantt/base/tree-grid.js +1 -1
- package/src/gantt/export/export-helper.js +1 -0
- package/src/gantt/export/pdf-connector-line.d.ts +4 -4
- package/src/gantt/export/pdf-connector-line.js +11 -22
- package/src/gantt/export/pdf-gantt.d.ts +1 -2
- package/src/gantt/export/pdf-gantt.js +4 -4
- package/src/gantt/models/column.d.ts +8 -4
- package/src/gantt/models/edit-settings-model.d.ts +1 -0
- package/src/gantt/models/edit-settings.d.ts +1 -0
- package/src/gantt/models/filter-settings-model.d.ts +3 -0
- package/src/gantt/models/filter-settings.d.ts +3 -0
- package/src/gantt/models/search-settings-model.d.ts +1 -0
- package/src/gantt/models/search-settings.d.ts +1 -0
- package/src/gantt/models/sort-settings-model.d.ts +1 -0
- package/src/gantt/models/sort-settings.d.ts +1 -0
- package/src/gantt/models/tooltip-settings-model.d.ts +8 -4
- package/src/gantt/models/tooltip-settings.d.ts +8 -4
- package/src/gantt/renderer/chart-rows.d.ts +1 -1
- package/src/gantt/renderer/chart-rows.js +27 -65
- package/src/gantt/renderer/connector-line.d.ts +23 -0
- package/src/gantt/renderer/connector-line.js +287 -384
- package/src/gantt/renderer/edit-tooltip.js +4 -4
- package/src/gantt/renderer/nonworking-day.js +2 -2
- package/src/gantt/renderer/tooltip.d.ts +3 -3
- package/src/gantt/renderer/tooltip.js +103 -76
- package/styles/bootstrap-dark.css +27 -47
- package/styles/bootstrap.css +29 -49
- package/styles/bootstrap4.css +29 -49
- package/styles/bootstrap5-dark.css +27 -47
- package/styles/bootstrap5.css +27 -47
- package/styles/fabric-dark.css +27 -47
- package/styles/fabric.css +27 -47
- package/styles/fluent-dark.css +28 -47
- package/styles/fluent.css +28 -47
- package/styles/gantt/_layout.scss +53 -7
- package/styles/gantt/_material3-dark-definition.scss +1 -0
- package/styles/gantt/_material3-definition.scss +220 -0
- package/styles/gantt/_theme.scss +53 -53
- package/styles/gantt/bootstrap-dark.css +27 -47
- package/styles/gantt/bootstrap.css +29 -49
- package/styles/gantt/bootstrap4.css +29 -49
- package/styles/gantt/bootstrap5-dark.css +27 -47
- package/styles/gantt/bootstrap5.css +27 -47
- package/styles/gantt/fabric-dark.css +27 -47
- package/styles/gantt/fabric.css +27 -47
- package/styles/gantt/fluent-dark.css +28 -47
- package/styles/gantt/fluent.css +28 -47
- package/styles/gantt/highcontrast-light.css +27 -47
- package/styles/gantt/highcontrast.css +27 -47
- package/styles/gantt/icons/_material3-dark.scss +1 -0
- package/styles/gantt/material-dark.css +27 -47
- package/styles/gantt/material.css +27 -47
- package/styles/gantt/material3-dark.css +2184 -0
- package/styles/gantt/material3-dark.scss +23 -0
- package/styles/gantt/material3.css +2240 -0
- package/styles/gantt/material3.scss +23 -0
- package/styles/gantt/tailwind-dark.css +27 -47
- package/styles/gantt/tailwind.css +27 -47
- package/styles/highcontrast-light.css +27 -47
- package/styles/highcontrast.css +27 -47
- package/styles/material-dark.css +27 -47
- package/styles/material.css +27 -47
- package/styles/material3-dark.css +2184 -0
- package/styles/material3-dark.scss +3 -0
- package/styles/material3.css +2240 -0
- package/styles/material3.scss +3 -0
- package/styles/tailwind-dark.css +27 -47
- package/styles/tailwind.css +27 -47
|
@@ -1,8 +1,9 @@
|
|
|
1
|
-
import { Browser, ChildProperty, Collection, Complex, Component, Event, EventHandler, Internationalization, KeyboardEvents, L10n, NotifyPropertyChanges, Property, SanitizeHtmlHelper, addClass, append, classList, closest, compile, createElement, deleteObject, extend, formatUnit, getValue, isNullOrUndefined, isObject, isObjectArray, isUndefined, merge, remove, removeClass, setValue } from '@syncfusion/ej2-base';
|
|
1
|
+
import { Browser, ChildProperty, Collection, Complex, Component, Event, EventHandler, Internationalization, KeyboardEvents, L10n, NotifyPropertyChanges, Property, SanitizeHtmlHelper, addClass, append, classList, closest, compile, createElement, deleteObject, extend, formatUnit, getValue, initializeCSPTemplate, isNullOrUndefined, isObject, isObjectArray, isUndefined, merge, remove, removeClass, setValue } from '@syncfusion/ej2-base';
|
|
2
2
|
import { Dialog, Tooltip, createSpinner, hideSpinner, showSpinner } from '@syncfusion/ej2-popups';
|
|
3
3
|
import { Edit, ForeignKey, Grid, Page, Predicate, Toolbar, ValueFormatter, click, filterAfterOpen, getActualProperties, getCustomDateFormat, getFilterMenuPostion, getForeignData, getObject, getUid, parentsUntil, setCssInGridPopUp } from '@syncfusion/ej2-grids';
|
|
4
4
|
import { CacheAdaptor, DataManager, DataUtil, Deferred, ODataAdaptor, ODataV4Adaptor, Query, RemoteSaveAdaptor, UrlAdaptor, WebApiAdaptor, WebMethodAdaptor } from '@syncfusion/ej2-data';
|
|
5
5
|
import { ColumnMenu, ContextMenu, Edit as Edit$1, ExcelExport, Filter, Reorder, Resize, RowDD, Selection, Sort, TreeGrid, VirtualScroll } from '@syncfusion/ej2-treegrid';
|
|
6
|
+
import { SvgRenderer } from '@syncfusion/ej2-svg-base';
|
|
6
7
|
import { Splitter } from '@syncfusion/ej2-layouts';
|
|
7
8
|
import { ContextMenu as ContextMenu$1, Tab, Toolbar as Toolbar$1 } from '@syncfusion/ej2-navigations';
|
|
8
9
|
import { Count, HtmlEditor, Link, QuickToolbar, RichTextEditor, Toolbar as Toolbar$2 } from '@syncfusion/ej2-richtexteditor';
|
|
@@ -734,24 +735,7 @@ class DateProcessor {
|
|
|
734
735
|
this.setTime(this.parent.defaultStartTime, sDate);
|
|
735
736
|
}
|
|
736
737
|
else if (!isNullOrUndefined(duration)) {
|
|
737
|
-
this.
|
|
738
|
-
if (record.ganttProperties.taskId == ganttProp.taskId) {
|
|
739
|
-
if ((!isNullOrUndefined(record.parentItem)) && (record.parentItem.taskId)) {
|
|
740
|
-
this.parent.flatData.map((data) => {
|
|
741
|
-
if (data.ganttProperties.taskId === record.parentItem.taskId) {
|
|
742
|
-
if (!isNullOrUndefined(data.ganttProperties.startDate))
|
|
743
|
-
sDate = data.ganttProperties.startDate;
|
|
744
|
-
}
|
|
745
|
-
else {
|
|
746
|
-
sDate = this.getProjectStartDate(ganttProp);
|
|
747
|
-
}
|
|
748
|
-
});
|
|
749
|
-
}
|
|
750
|
-
else {
|
|
751
|
-
sDate = this.getProjectStartDate(ganttProp);
|
|
752
|
-
}
|
|
753
|
-
}
|
|
754
|
-
});
|
|
738
|
+
sDate = this.getProjectStartDate(ganttProp);
|
|
755
739
|
}
|
|
756
740
|
}
|
|
757
741
|
else {
|
|
@@ -1893,7 +1877,7 @@ class TaskProcessor extends DateProcessor {
|
|
|
1893
1877
|
(this.parent.taskMode === 'Manual') ? false :
|
|
1894
1878
|
data[taskSettings.manual] === true ? false : true;
|
|
1895
1879
|
this.parent.setRecordValue('ganttProperties', ganttProperties, ganttData);
|
|
1896
|
-
if (!isNullOrUndefined(data[taskSettings.id])
|
|
1880
|
+
if (!isNullOrUndefined(data[taskSettings.id])) {
|
|
1897
1881
|
id = data[taskSettings.id];
|
|
1898
1882
|
name = data[taskSettings.name];
|
|
1899
1883
|
this.addTaskData(ganttData, data, isLoad);
|
|
@@ -2334,7 +2318,7 @@ class TaskProcessor extends DateProcessor {
|
|
|
2334
2318
|
startDate = this.getDateFromFormat(data[taskSettings.startDate], true);
|
|
2335
2319
|
endDate = this.getDateFromFormat(data[taskSettings.endDate], true);
|
|
2336
2320
|
}
|
|
2337
|
-
const segments = taskSettings.segments
|
|
2321
|
+
const segments = taskSettings.segments ? (data[taskSettings.segments] ||
|
|
2338
2322
|
ganttData.taskData[taskSettings.segments]) : null;
|
|
2339
2323
|
const isMileStone = taskSettings.milestone ? data[taskSettings.milestone] ? true : false : false;
|
|
2340
2324
|
const durationMapping = data[taskSettings.durationUnit] ? data[taskSettings.durationUnit] : '';
|
|
@@ -3022,7 +3006,7 @@ class TaskProcessor extends DateProcessor {
|
|
|
3022
3006
|
setDataSource(data) {
|
|
3023
3007
|
let createData = [];
|
|
3024
3008
|
let length = data.length;
|
|
3025
|
-
for (
|
|
3009
|
+
for (let i = 0; i < length; i++) {
|
|
3026
3010
|
let record = data[i];
|
|
3027
3011
|
createData.push(record);
|
|
3028
3012
|
if (!(isNullOrUndefined(data[i][this.parent.taskFields.child]))) {
|
|
@@ -3039,15 +3023,17 @@ class TaskProcessor extends DateProcessor {
|
|
|
3039
3023
|
else {
|
|
3040
3024
|
hierarchicalData = this.parent.dataSource;
|
|
3041
3025
|
}
|
|
3042
|
-
|
|
3043
|
-
|
|
3044
|
-
if (
|
|
3045
|
-
|
|
3046
|
-
|
|
3047
|
-
|
|
3048
|
-
|
|
3026
|
+
this.parent.flatData.map((data) => {
|
|
3027
|
+
hierarchicalData.map((record) => {
|
|
3028
|
+
if (data.ganttProperties.taskId === record[this.parent.taskFields.id]) {
|
|
3029
|
+
if (!isNullOrUndefined(this.parent.taskFields.startDate)) {
|
|
3030
|
+
task[this.parent.taskFields.endDate] = record[this.parent.taskFields.endDate];
|
|
3031
|
+
}
|
|
3032
|
+
if (!isNullOrUndefined(this.parent.taskFields.endDate)) {
|
|
3033
|
+
task[this.parent.taskFields.endDate] = record[this.parent.taskFields.endDate];
|
|
3034
|
+
}
|
|
3049
3035
|
}
|
|
3050
|
-
}
|
|
3036
|
+
});
|
|
3051
3037
|
});
|
|
3052
3038
|
}
|
|
3053
3039
|
getWorkInHour(work, workUnit) {
|
|
@@ -3157,9 +3143,6 @@ class TaskProcessor extends DateProcessor {
|
|
|
3157
3143
|
return resourceIdCollection;
|
|
3158
3144
|
}
|
|
3159
3145
|
resourceIdCollection = data[this.parent.taskFields.resourceInfo];
|
|
3160
|
-
if (resourceIdCollection != "" && typeof resourceIdCollection == "string") {
|
|
3161
|
-
resourceIdCollection = resourceIdCollection.split(',');
|
|
3162
|
-
}
|
|
3163
3146
|
let resourceData;
|
|
3164
3147
|
if (!isNullOrUndefined(this.parent.editModule) && !isNullOrUndefined(this.parent.editModule.dialogModule)
|
|
3165
3148
|
&& this.parent.editModule.dialogModule.isAddNewResource) {
|
|
@@ -3169,7 +3152,6 @@ class TaskProcessor extends DateProcessor {
|
|
|
3169
3152
|
resourceData = this.parent.resources;
|
|
3170
3153
|
}
|
|
3171
3154
|
const resourceIDMapping = this.parent.resourceFields.id;
|
|
3172
|
-
const resourceNameMapping = this.parent.resourceFields.name;
|
|
3173
3155
|
const resourceUnitMapping = this.parent.resourceFields.unit;
|
|
3174
3156
|
const resourceGroup = this.parent.resourceFields.group;
|
|
3175
3157
|
const resources = [];
|
|
@@ -3180,7 +3162,7 @@ class TaskProcessor extends DateProcessor {
|
|
|
3180
3162
|
return true;
|
|
3181
3163
|
}
|
|
3182
3164
|
else {
|
|
3183
|
-
return (resourceIdCollection[count] === resourceInfo[resourceIDMapping])
|
|
3165
|
+
return (resourceIdCollection[count] === resourceInfo[resourceIDMapping]);
|
|
3184
3166
|
}
|
|
3185
3167
|
});
|
|
3186
3168
|
const ganttDataResource = extend({}, resource[0]);
|
|
@@ -3738,6 +3720,7 @@ class TaskProcessor extends DateProcessor {
|
|
|
3738
3720
|
const segments = ganttRecord.segments;
|
|
3739
3721
|
let fixedWidth = true;
|
|
3740
3722
|
const totalTaskWidth = this.splitTasksDuration(segments) * ((this.parent.timelineModule.bottomTier === "Hour" || this.parent.timelineModule.bottomTier === "Minutes") ? this.parent.timelineSettings.timelineUnitSize : this.parent.perDayWidth);
|
|
3723
|
+
|
|
3741
3724
|
let totalProgressWidth = this.parent.dataOperation.getProgressWidth(totalTaskWidth, ganttRecord.progress);
|
|
3742
3725
|
for (let i = 0; i < segments.length; i++) {
|
|
3743
3726
|
const segment = segments[i];
|
|
@@ -4011,15 +3994,10 @@ const childTaskBarInnerDiv = 'e-gantt-child-taskbar-inner-div';
|
|
|
4011
3994
|
const childProgressBarInnerDiv = 'e-gantt-child-progressbar-inner-div';
|
|
4012
3995
|
const criticalChildTaskBarInnerDiv = 'e-gantt-child-critical-taskbar-inner-div';
|
|
4013
3996
|
const criticalChildProgressBarInnerDiv = 'e-gantt-child-critical-progressbar-inner-div';
|
|
4014
|
-
const
|
|
4015
|
-
const milestoneBottom = 'e-milestone-bottom';
|
|
4016
|
-
const criticalMilestoneTop = 'e-critical-milestone-top';
|
|
4017
|
-
const criticalMilestoneBottom = 'e-critical-milestone-bottom';
|
|
3997
|
+
const criticalMilestone = 'e-critical-milestone';
|
|
4018
3998
|
const baselineBar = 'e-baseline-bar';
|
|
4019
3999
|
const baselineMilestoneContainer = 'e-baseline-gantt-milestone-container';
|
|
4020
|
-
|
|
4021
|
-
const baselineMilestoneTop = 'e-baseline-milestone-top';
|
|
4022
|
-
const baselineMilestoneBottom = 'e-baseline-milestone-bottom';
|
|
4000
|
+
|
|
4023
4001
|
const chartRowCell = 'e-chart-row-cell';
|
|
4024
4002
|
const chartRow = 'e-chart-row';
|
|
4025
4003
|
const rowExpand = 'e-row-expand';
|
|
@@ -4033,15 +4011,11 @@ const progressBarHandlerAfter = 'e-progressbar-handler-after';
|
|
|
4033
4011
|
const icon = 'e-icon';
|
|
4034
4012
|
const traceMilestone = 'e-gantt-milestone';
|
|
4035
4013
|
const parentMilestone = 'e-gantt-parent-milestone';
|
|
4036
|
-
const parentMilestoneTop = 'e-parent-milestone-top';
|
|
4037
|
-
const parentMilestoneBottom = 'e-parent-milestone-bottom';
|
|
4038
4014
|
const traceChildTaskBar = 'e-gantt-child-taskbar';
|
|
4039
4015
|
const traceChildProgressBar = 'e-gantt-child-progressbar';
|
|
4040
4016
|
const manualParentMainContainer = 'e-manualparent-main-container';
|
|
4041
4017
|
const manualParentTaskBar = 'e-gantt-manualparenttaskbar';
|
|
4042
4018
|
const manualParentMilestone = 'e-gantt-manualparent-milestone';
|
|
4043
|
-
const manualParentMilestoneTop = 'e-manualparent-milestone-top';
|
|
4044
|
-
const manualParentMilestoneBottom = 'e-manualparent-milestone-bottom';
|
|
4045
4019
|
const manualChildTaskBar = 'e-gantt-child-manualtaskbar';
|
|
4046
4020
|
const manualChildProgressBar = 'e-gantt-child-manualprogressbar';
|
|
4047
4021
|
const manualParentRightResizer = 'e-gantt-manualparenttaskbar-right';
|
|
@@ -4072,25 +4046,29 @@ const weekend = 'e-weekend';
|
|
|
4072
4046
|
const unscheduledTaskbarLeft = 'e-gantt-unscheduled-taskbar-left';
|
|
4073
4047
|
const unscheduledTaskbarRight = 'e-gantt-unscheduled-taskbar-right';
|
|
4074
4048
|
const unscheduledTaskbar = 'e-gantt-unscheduled-taskbar';
|
|
4075
|
-
|
|
4076
|
-
|
|
4049
|
+
|
|
4050
|
+
|
|
4077
4051
|
//Connector Line
|
|
4078
4052
|
const dependencyViewContainer = 'e-gantt-dependency-view-container';
|
|
4079
4053
|
const connectorLineContainer = 'e-connector-line-container';
|
|
4080
|
-
|
|
4081
|
-
const
|
|
4082
|
-
const
|
|
4083
|
-
const
|
|
4084
|
-
const
|
|
4085
|
-
|
|
4054
|
+
|
|
4055
|
+
const connectorLineSVG = 'e-connector-line';
|
|
4056
|
+
const criticalConnectorLineSVG = 'e-critical-line';
|
|
4057
|
+
const criticalConnectorArrowSVG = 'e-critical-line-arrow';
|
|
4058
|
+
const connectorLineArrow = 'e-connector-line-arrow';
|
|
4059
|
+
|
|
4060
|
+
|
|
4061
|
+
|
|
4062
|
+
|
|
4063
|
+
|
|
4086
4064
|
const connectorLineZIndex = 'e-connector-line-z-index';
|
|
4087
|
-
|
|
4088
|
-
|
|
4089
|
-
|
|
4090
|
-
|
|
4091
|
-
|
|
4092
|
-
|
|
4093
|
-
|
|
4065
|
+
|
|
4066
|
+
|
|
4067
|
+
|
|
4068
|
+
|
|
4069
|
+
|
|
4070
|
+
|
|
4071
|
+
|
|
4094
4072
|
|
|
4095
4073
|
const connectorPointLeft = 'e-connectorpoint-left';
|
|
4096
4074
|
const connectorPointRight = 'e-connectorpoint-right';
|
|
@@ -4818,6 +4796,16 @@ class GanttChart {
|
|
|
4818
4796
|
if (this.parent.isDestroyed || e.which === 3) {
|
|
4819
4797
|
return;
|
|
4820
4798
|
}
|
|
4799
|
+
var resizeCheck = this.parent.ganttChartModule.chartBodyContainer.querySelector('.e-taskbar-resize-div');
|
|
4800
|
+
if (!isNullOrUndefined(resizeCheck)) {
|
|
4801
|
+
resizeCheck.remove();
|
|
4802
|
+
}
|
|
4803
|
+
var Check = this.parent.ganttChartModule.chartBodyContainer.querySelector('.e-clone-taskbar');
|
|
4804
|
+
if (!isNullOrUndefined(Check)) {
|
|
4805
|
+
var clonetbody = Check.parentElement;
|
|
4806
|
+
var cloneTable = clonetbody.parentElement;
|
|
4807
|
+
cloneTable.remove();
|
|
4808
|
+
}
|
|
4821
4809
|
let isTaskbarEdited = false;
|
|
4822
4810
|
if (this.parent.editSettings.allowTaskbarEditing &&
|
|
4823
4811
|
getValue('editModule.taskbarEditModule.isMouseDragged', this.parent) &&
|
|
@@ -5376,7 +5364,72 @@ class GanttChart {
|
|
|
5376
5364
|
/* eslint-disable-next-line @typescript-eslint/no-explicit-any */
|
|
5377
5365
|
$target.closest('.e-chart-row') ? $target.closest('.e-chart-row').rowIndex : -1;
|
|
5378
5366
|
const isTab = (e.action === 'tab') ? true : false;
|
|
5379
|
-
|
|
5367
|
+
let nextElement = this.getNextElement($target, isTab, isInEditedState);
|
|
5368
|
+
if (nextElement && $target.classList.contains('e-headercell')) {
|
|
5369
|
+
let colIndex = parseInt(nextElement.getAttribute('data-colindex'));
|
|
5370
|
+
if (e.action === 'shiftTab') {
|
|
5371
|
+
while (colIndex != -1 && !this.parent.treeGrid.columns[colIndex]['visible']) {
|
|
5372
|
+
colIndex = colIndex - 1;
|
|
5373
|
+
}
|
|
5374
|
+
if (colIndex != -1) {
|
|
5375
|
+
nextElement = document.getElementsByClassName('e-columnheader')[0].childNodes[colIndex];
|
|
5376
|
+
}
|
|
5377
|
+
else {
|
|
5378
|
+
let toolbarItems = document.getElementsByClassName('e-toolbar-item');
|
|
5379
|
+
for (let i = toolbarItems.length - 1; i > 0; i--) {
|
|
5380
|
+
if (!document.getElementsByClassName('e-toolbar-item')[i].classList.contains('e-hidden')) {
|
|
5381
|
+
nextElement = document.getElementsByClassName('e-toolbar-item')[i];
|
|
5382
|
+
break;
|
|
5383
|
+
}
|
|
5384
|
+
}
|
|
5385
|
+
}
|
|
5386
|
+
}
|
|
5387
|
+
else {
|
|
5388
|
+
while (!this.parent.treeGrid.columns[colIndex]['visible']) {
|
|
5389
|
+
colIndex = colIndex + 1;
|
|
5390
|
+
}
|
|
5391
|
+
nextElement = document.getElementsByClassName('e-columnheader')[0].childNodes[colIndex];
|
|
5392
|
+
}
|
|
5393
|
+
}
|
|
5394
|
+
if (!nextElement && e.action === 'shiftTab' && $target.classList.contains('e-headercell')) {
|
|
5395
|
+
let toolbarItems = document.getElementsByClassName('e-toolbar-item');
|
|
5396
|
+
for (let i = toolbarItems.length - 1; i > 0; i--) {
|
|
5397
|
+
if (!document.getElementsByClassName('e-toolbar-item')[i].classList.contains('e-hidden')) {
|
|
5398
|
+
nextElement = document.getElementsByClassName('e-toolbar-item')[i];
|
|
5399
|
+
break;
|
|
5400
|
+
}
|
|
5401
|
+
}
|
|
5402
|
+
}
|
|
5403
|
+
if ($target.classList.contains('e-treegrid') && !nextElement) {
|
|
5404
|
+
for (let i = 0; i < this.parent.treeGrid.columns.length; i++) {
|
|
5405
|
+
if (this.parent.treeGrid.columns[i]['visible']) {
|
|
5406
|
+
nextElement = document.getElementsByClassName('e-columnheader')[0].childNodes[i];
|
|
5407
|
+
break;
|
|
5408
|
+
}
|
|
5409
|
+
}
|
|
5410
|
+
}
|
|
5411
|
+
if (!nextElement && $target.classList.contains('e-headercell')) {
|
|
5412
|
+
nextElement = document.getElementsByClassName('e-timeline-header-container')[0];
|
|
5413
|
+
}
|
|
5414
|
+
if (e.action !== 'shiftTab' && $target.classList.contains('e-timeline-header-container')) {
|
|
5415
|
+
for (let i = 0; i < this.parent.treeGrid.columns.length; i++) {
|
|
5416
|
+
if (this.parent.treeGrid.columns[i]['visible']) {
|
|
5417
|
+
nextElement = document.getElementsByClassName('e-row')[0].childNodes[i];
|
|
5418
|
+
break;
|
|
5419
|
+
}
|
|
5420
|
+
}
|
|
5421
|
+
}
|
|
5422
|
+
if (e.action === 'shiftTab' && !nextElement) {
|
|
5423
|
+
nextElement = document.getElementsByClassName('e-timeline-header-container')[0];
|
|
5424
|
+
}
|
|
5425
|
+
if (e.action === 'shiftTab' && $target.classList.contains('e-timeline-header-container')) {
|
|
5426
|
+
for (let i = this.parent.treeGrid.columns.length - 1; i > 0; i--) {
|
|
5427
|
+
if (this.parent.treeGrid.columns[i]['visible']) {
|
|
5428
|
+
nextElement = document.getElementsByClassName('e-columnheader')[0].childNodes[i];
|
|
5429
|
+
break;
|
|
5430
|
+
}
|
|
5431
|
+
}
|
|
5432
|
+
}
|
|
5380
5433
|
this.tempNextElement = nextElement;
|
|
5381
5434
|
if (!isNullOrUndefined(nextElement) && !isNullOrUndefined(nextElement['cellIndex'])) {
|
|
5382
5435
|
if (this.parent.allowRowDragAndDrop) {
|
|
@@ -5400,7 +5453,7 @@ class GanttChart {
|
|
|
5400
5453
|
}
|
|
5401
5454
|
if (typeof nextElement !== 'string') {
|
|
5402
5455
|
if ($target.classList.contains('e-rowcell') || $target.closest('.e-chart-row-cell') ||
|
|
5403
|
-
$target.classList.contains('e-headercell') || $target.closest('.e-segmented-taskbar')) {
|
|
5456
|
+
$target.classList.contains('e-headercell') || $target.closest('.e-segmented-taskbar') || $target.classList.contains('e-timeline-header-container')) {
|
|
5404
5457
|
e.preventDefault();
|
|
5405
5458
|
}
|
|
5406
5459
|
if (isTab && $target.classList.contains('e-rowdragdrop')) {
|
|
@@ -5436,11 +5489,21 @@ class GanttChart {
|
|
|
5436
5489
|
}
|
|
5437
5490
|
}
|
|
5438
5491
|
else {
|
|
5439
|
-
|
|
5492
|
+
if (!nextElement || nextElement && !nextElement.classList.contains('e-headercell')) {
|
|
5493
|
+
if ($target.classList.contains('e-headercell')) {
|
|
5494
|
+
this.manageFocus($target, 'remove', false);
|
|
5495
|
+
}
|
|
5496
|
+
if (!nextElement || $target.classList.contains('e-editedbatchcell')) {
|
|
5497
|
+
this.parent.treeGrid.grid.notify('key-pressed', e);
|
|
5498
|
+
}
|
|
5499
|
+
}
|
|
5440
5500
|
}
|
|
5441
5501
|
}
|
|
5442
5502
|
else {
|
|
5443
|
-
|
|
5503
|
+
if (!nextElement.classList.contains('e-headercell') && !nextElement.classList.contains('e-rowcell')
|
|
5504
|
+
&& !nextElement.classList.contains('e-toolbar-item')) {
|
|
5505
|
+
this.parent.treeGrid.grid.notify('key-pressed', e);
|
|
5506
|
+
}
|
|
5444
5507
|
}
|
|
5445
5508
|
}
|
|
5446
5509
|
if (!(this.parent.editModule && this.parent.editModule.cellEditModule
|
|
@@ -5452,7 +5515,8 @@ class GanttChart {
|
|
|
5452
5515
|
else {
|
|
5453
5516
|
this.manageFocus($target, 'remove', true);
|
|
5454
5517
|
}
|
|
5455
|
-
if ((nextElement.classList.contains('e-rowcell') && $target.nextElementSibling
|
|
5518
|
+
if ((nextElement.classList.contains('e-rowcell') && $target.nextElementSibling && !$target.classList.contains('e-timeline-header-container'))
|
|
5519
|
+
|| $target.classList.contains('e-right-label-container')) {
|
|
5456
5520
|
if (!$target.classList.contains('e-rowcell')) {
|
|
5457
5521
|
this.parent.treeGrid.grid.notify('key-pressed', e);
|
|
5458
5522
|
const fmodule = getValue('focusModule', this.parent.treeGrid.grid);
|
|
@@ -5464,7 +5528,17 @@ class GanttChart {
|
|
|
5464
5528
|
this.manageFocus(nextElement, 'add', false);
|
|
5465
5529
|
}
|
|
5466
5530
|
else {
|
|
5467
|
-
|
|
5531
|
+
if (nextElement && (nextElement.classList.contains('e-toolbar-item') || nextElement.classList.contains('e-headercell')
|
|
5532
|
+
|| nextElement.classList.contains("e-rowcell"))) {
|
|
5533
|
+
this.manageFocus($target, 'remove', false);
|
|
5534
|
+
this.manageFocus(nextElement, 'add', false);
|
|
5535
|
+
if ($target.classList.contains('e-treegrid')) {
|
|
5536
|
+
e.preventDefault();
|
|
5537
|
+
}
|
|
5538
|
+
}
|
|
5539
|
+
else {
|
|
5540
|
+
this.manageFocus(nextElement, 'add', true);
|
|
5541
|
+
}
|
|
5468
5542
|
}
|
|
5469
5543
|
this.parent.focusModule.setActiveElement(nextElement);
|
|
5470
5544
|
}
|
|
@@ -5551,6 +5625,17 @@ class GanttChart {
|
|
|
5551
5625
|
const childElement = this.getChildElement(rowElement, isTab);
|
|
5552
5626
|
return childElement;
|
|
5553
5627
|
}
|
|
5628
|
+
nextElement = $target;
|
|
5629
|
+
if (nextElement && nextElement.parentElement.classList.contains('e-toolbar-item') && this.parent.toolbarModule) {
|
|
5630
|
+
while (nextElement && nextElement.parentElement.classList.contains('e-toolbar-item') && nextElement.parentElement.nextElementSibling.classList.contains('e-toolbar-item')) {
|
|
5631
|
+
if (nextElement.parentElement.nextElementSibling.classList.contains('e-hidden')) {
|
|
5632
|
+
nextElement = nextElement.parentElement.nextElementSibling.childNodes[0];
|
|
5633
|
+
}
|
|
5634
|
+
else {
|
|
5635
|
+
return nextElement.parentElement.nextElementSibling;
|
|
5636
|
+
}
|
|
5637
|
+
}
|
|
5638
|
+
}
|
|
5554
5639
|
}
|
|
5555
5640
|
return null;
|
|
5556
5641
|
}
|
|
@@ -8057,7 +8142,7 @@ class GanttTreeGrid {
|
|
|
8057
8142
|
}
|
|
8058
8143
|
} // eslint-disable-next-line
|
|
8059
8144
|
durationValueAccessor(field, data, column) {
|
|
8060
|
-
const ganttProp =
|
|
8145
|
+
const ganttProp = data.ganttProperties;
|
|
8061
8146
|
if (!isNullOrUndefined(ganttProp)) {
|
|
8062
8147
|
return this.parent.dataOperation.getDurationString(ganttProp.duration, ganttProp.durationUnit);
|
|
8063
8148
|
}
|
|
@@ -8683,7 +8768,7 @@ class ChartRows extends DateProcessor {
|
|
|
8683
8768
|
createChartTable() {
|
|
8684
8769
|
this.taskTable = createElement('table', {
|
|
8685
8770
|
className: taskTable + ' ' + zeroSpacing, id: 'GanttTaskTable' + this.parent.element.id,
|
|
8686
|
-
styles: '
|
|
8771
|
+
styles: 'position: absolute;width:' + this.parent.timelineModule.totalTimelineWidth + 'px;',
|
|
8687
8772
|
attrs: { cellspacing: '0.25px' }
|
|
8688
8773
|
});
|
|
8689
8774
|
const colgroup = createElement('colgroup');
|
|
@@ -8767,7 +8852,7 @@ class ChartRows extends DateProcessor {
|
|
|
8767
8852
|
taskbarInnerDiv = this.createDivElement('<div class="' + childTaskBarInnerDiv + ' ' + traceChildTaskBar +
|
|
8768
8853
|
' ' + (data.ganttProperties.isAutoSchedule ? '' : manualChildTaskBar) + '"' +
|
|
8769
8854
|
'style="width:' + data.ganttProperties.width + 'px;height:' +
|
|
8770
|
-
(this.taskBarHeight) + 'px;"></div>');
|
|
8855
|
+
(this.taskBarHeight) + 'px; margin-top :-1px"></div>');
|
|
8771
8856
|
progressDiv = this.createDivElement('<div class="' + childProgressBarInnerDiv + ' ' +
|
|
8772
8857
|
traceChildProgressBar + ' ' + (data.ganttProperties.isAutoSchedule ?
|
|
8773
8858
|
'' : manualChildProgressBar) + '"' +
|
|
@@ -9246,15 +9331,8 @@ class ChartRows extends DateProcessor {
|
|
|
9246
9331
|
milestoneNode = this.milestoneTemplateFunction(extend({ index: i }, data), this.parent, 'MilestoneTemplate', this.getTemplateID('MilestoneTemplate'), false, undefined, rootElement[0], this.parent.treeGrid['root']);
|
|
9247
9332
|
}
|
|
9248
9333
|
else {
|
|
9249
|
-
const template = '<div class="' + traceMilestone + '" style="
|
|
9250
|
-
'
|
|
9251
|
-
unscheduledMilestoneTop : '') + '" style="border-right-width:' +
|
|
9252
|
-
this.milesStoneRadius + 'px;border-left-width:' + this.milesStoneRadius + 'px;border-bottom-width:' +
|
|
9253
|
-
this.milesStoneRadius + 'px;"></div>' +
|
|
9254
|
-
'<div class="' + milestoneBottom + ' ' + ((!data.ganttProperties.startDate && !data.ganttProperties.endDate) ?
|
|
9255
|
-
unscheduledMilestoneBottom : '') + '" style="top:' +
|
|
9256
|
-
(this.milesStoneRadius) + 'px;border-right-width:' + this.milesStoneRadius + 'px; border-left-width:' +
|
|
9257
|
-
this.milesStoneRadius + 'px; border-top-width:' + this.milesStoneRadius + 'px;"></div></div>';
|
|
9334
|
+
const template = '<div class="' + traceMilestone + '" style="width:' + ((this.parent.renderBaseline ? this.taskBarHeight - 3 : this.taskBarHeight - 7)) + 'px;height:' +
|
|
9335
|
+
((this.parent.renderBaseline ? this.taskBarHeight - 3 : this.taskBarHeight - 7)) + 'px;position:absolute;transform: rotate(45deg);top:' + (this.parent.rowHeight > 40 ? 0 : 2) + 'px;left:' + (this.parent.renderBaseline ? 2 : 1) + 'px;"> </div>';
|
|
9258
9336
|
milestoneNode = this.createDivElement(template);
|
|
9259
9337
|
}
|
|
9260
9338
|
return milestoneNode;
|
|
@@ -9282,25 +9360,9 @@ class ChartRows extends DateProcessor {
|
|
|
9282
9360
|
getMilestoneBaselineNode() {
|
|
9283
9361
|
const data = this.templateData;
|
|
9284
9362
|
let baselineMilestoneHeight = this.parent.renderBaseline ? 5 : 2;
|
|
9285
|
-
const template = '<div class="' + baselineMilestoneContainer + ' ' +
|
|
9286
|
-
(this.parent.enableRtl ? 'right:' : 'left:') + (data.ganttProperties.
|
|
9287
|
-
'margin-top:' + (-Math.floor(this.parent.rowHeight - this.milestoneMarginTop) + baselineMilestoneHeight) +
|
|
9288
|
-
'px">' + '<div class="' + baselineMilestoneDiv + '">' + '<div class="' + baselineMilestoneDiv +
|
|
9289
|
-
' ' + baselineMilestoneTop + '" ' +
|
|
9290
|
-
'style="top:' + (-this.milestoneHeight) + 'px;border-right:' + this.milesStoneRadius +
|
|
9291
|
-
'px solid transparent;border-left:' + this.milesStoneRadius +
|
|
9292
|
-
'px solid transparent;border-top:0px' +
|
|
9293
|
-
'solid transparent;border-bottom-width:' + this.milesStoneRadius + 'px;' +
|
|
9294
|
-
'border-bottom-style: solid;' + (this.baselineColor ? 'border-bottom-color: ' + this.baselineColor + ';' : '') +
|
|
9295
|
-
'"></div>' +
|
|
9296
|
-
'<div class="' + baselineMilestoneDiv + ' ' + baselineMilestoneBottom + '" ' +
|
|
9297
|
-
'style="top:' + (this.milesStoneRadius - this.milestoneHeight) + 'px;border-right:' + this.milesStoneRadius +
|
|
9298
|
-
'px solid transparent;border-left:' + this.milesStoneRadius +
|
|
9299
|
-
'px solid transparent;border-bottom:0px' +
|
|
9300
|
-
'solid transparent;border-top-width:' + this.milesStoneRadius + 'px;' +
|
|
9301
|
-
'border-top-style: solid;' +
|
|
9302
|
-
(this.baselineColor ? 'border-top-color: ' + this.baselineColor + ';' : '') + '"></div>' +
|
|
9303
|
-
'</div></div>';
|
|
9363
|
+
const template = '<div class="' + baselineMilestoneContainer + '" style="width:' + ((this.parent.renderBaseline ? this.taskBarHeight - 5 : this.taskBarHeight - 10) + 2) + 'px;height:' +
|
|
9364
|
+
((this.parent.renderBaseline ? this.taskBarHeight - 5 : this.taskBarHeight - 10) + 2) + 'px;position:absolute;transform:rotate(45deg);' + (this.parent.enableRtl ? 'right:' : 'left:') + (this.parent.enableRtl ? (data.ganttProperties.left -
|
|
9365
|
+
(this.milestoneHeight / 2) + 3) : (data.ganttProperties.left - (this.milestoneHeight / 2) + 2)) + 'px;' + (this.baselineColor ? 'background-color: ' + this.baselineColor + ';' : '') + 'margin-top:' + ((-Math.floor(this.parent.rowHeight - this.milestoneMarginTop) + baselineMilestoneHeight) + 3) + 'px"> </div>';
|
|
9304
9366
|
return this.createDivElement(template);
|
|
9305
9367
|
}
|
|
9306
9368
|
/**
|
|
@@ -9426,16 +9488,8 @@ class ChartRows extends DateProcessor {
|
|
|
9426
9488
|
(this.parent.enableRtl ? 'right:' : 'left:') + (data.ganttProperties.width - Math.floor(((taskbarHeight / 5) + 8) / 5)) + 'px;height:' +
|
|
9427
9489
|
((taskbarHeight / 5) + 8) + 'px;border-right-width:' + taskbarHeight / 5 + 'px;border-bottom:' +
|
|
9428
9490
|
taskbarHeight / 5 + 'px solid transparent;>' + '</div></div>' : '');
|
|
9429
|
-
const milestoneTemplate = '<div class="' + manualParentMilestone + '" style="
|
|
9430
|
-
(this.parent.
|
|
9431
|
-
(data.ganttProperties.left - data.ganttProperties.autoLeft - (this.milestoneHeight / 2)) +
|
|
9432
|
-
'px;width:' + (this.milesStoneRadius * 2) +
|
|
9433
|
-
'px;">' + '<div class="' + manualParentMilestoneTop + '" style="border-right-width:' +
|
|
9434
|
-
this.milesStoneRadius + 'px;border-left-width:' + this.milesStoneRadius + 'px;border-bottom-width:' +
|
|
9435
|
-
this.milesStoneRadius + 'px;"></div>' +
|
|
9436
|
-
'<div class="' + manualParentMilestoneBottom + '" style="top:' +
|
|
9437
|
-
(this.milesStoneRadius) + 'px;border-right-width:' + this.milesStoneRadius + 'px; border-left-width:' +
|
|
9438
|
-
this.milesStoneRadius + 'px; border-top-width:' + this.milesStoneRadius + 'px;"></div></div>';
|
|
9491
|
+
const milestoneTemplate = '<div class="' + manualParentMilestone + '" style="width:' + ((this.parent.renderBaseline ? this.taskBarHeight - 3 : this.taskBarHeight - 7)) + 'px;height:' +
|
|
9492
|
+
((this.parent.renderBaseline ? this.taskBarHeight - 3 : this.taskBarHeight - 7)) + 'px;position:absolute;transform: rotate(45deg);top:' + (this.parent.rowHeight > 40 ? 0 : 2) + 'px;left:' + (this.parent.renderBaseline ? 2 : 1) + 'px;"> </div>';
|
|
9439
9493
|
return this.createDivElement(data.ganttProperties.duration !== 0 ? template : milestoneTemplate);
|
|
9440
9494
|
}
|
|
9441
9495
|
/**
|
|
@@ -9460,8 +9514,8 @@ class ChartRows extends DateProcessor {
|
|
|
9460
9514
|
this.getExpandClass(data) + ' ' + traceParentTaskBar + '"' +
|
|
9461
9515
|
' style="width:' + (data.ganttProperties.isAutoSchedule ? data.ganttProperties.width :
|
|
9462
9516
|
data.ganttProperties.autoWidth) + 'px;height:' + (data.ganttProperties.isAutoSchedule ? this.taskBarHeight :
|
|
9463
|
-
(tHeight * 3)) + 'px;margin-top:' + (data.ganttProperties.isAutoSchedule ?
|
|
9464
|
-
(tHeight * 2)) + 'px;">' +
|
|
9517
|
+
(tHeight * 3)) + 'px;margin-top:' + (data.ganttProperties.isAutoSchedule ? -1 :
|
|
9518
|
+
(tHeight * 2)) + 'px; ">' +
|
|
9465
9519
|
'</div>');
|
|
9466
9520
|
const progressBarInnerDiv = this.createDivElement('<div class="' + parentProgressBarInnerDiv + ' ' +
|
|
9467
9521
|
this.getExpandClass(data) + ' ' + traceParentProgressBar + '"' +
|
|
@@ -9526,13 +9580,8 @@ class ChartRows extends DateProcessor {
|
|
|
9526
9580
|
parentLabel && !parentLabel['elementRef'] && div.innerHTML !== '')
|
|
9527
9581
|
progressBarInnerDiv[0].querySelectorAll('.e-task-label')[0].textContent = parentLabel;
|
|
9528
9582
|
}
|
|
9529
|
-
const milestoneTemplate = '<div class="' + parentMilestone + '" style="
|
|
9530
|
-
'
|
|
9531
|
-
this.milesStoneRadius + 'px;border-left-width:' + this.milesStoneRadius + 'px;border-bottom-width:' +
|
|
9532
|
-
this.milesStoneRadius + 'px;"></div>' +
|
|
9533
|
-
'<div class="' + parentMilestoneBottom + '" style="top:' +
|
|
9534
|
-
(this.milesStoneRadius) + 'px;border-right-width:' + this.milesStoneRadius + 'px; border-left-width:' +
|
|
9535
|
-
this.milesStoneRadius + 'px; border-top-width:' + this.milesStoneRadius + 'px;"></div></div>';
|
|
9583
|
+
const milestoneTemplate = '<div class="' + parentMilestone + '" style="width:' + ((this.parent.renderBaseline ? this.taskBarHeight - 3 : this.taskBarHeight - 7)) + 'px;height:' +
|
|
9584
|
+
((this.parent.renderBaseline ? this.taskBarHeight - 3 : this.taskBarHeight - 7)) + 'px;position:absolute;transform: rotate(45deg);top:' + (this.parent.rowHeight > 40 ? 0 : 2) + 'px;left:' + (this.parent.renderBaseline ? 2 : 1) + 'px;"> </div>';
|
|
9536
9585
|
template[0].appendChild([].slice.call(progressBarInnerDiv)[0]);
|
|
9537
9586
|
parentTaskbarNode = data.ganttProperties.isMilestone ?
|
|
9538
9587
|
this.createDivElement(data.ganttProperties.isAutoSchedule ? milestoneTemplate : '') : template;
|
|
@@ -9909,8 +9958,8 @@ class ChartRows extends DateProcessor {
|
|
|
9909
9958
|
this.milestoneMarginTop = Math.floor((this.parent.rowHeight - this.milestoneHeight) / 2);
|
|
9910
9959
|
this.milesStoneRadius = Math.floor((this.milestoneHeight) / 2);
|
|
9911
9960
|
this.baselineTop = -(Math.floor((this.parent.rowHeight - (this.taskBarHeight + this.taskBarMarginTop))) - 4);
|
|
9912
|
-
this.connectorPointWidth = this.parent.isAdaptive ? Math.round(this.taskBarHeight / 2) :
|
|
9913
|
-
this.connectorPointMargin = Math.floor((this.taskBarHeight / 2) - (this.connectorPointWidth / 2));
|
|
9961
|
+
this.connectorPointWidth = this.parent.isAdaptive ? Math.round(this.taskBarHeight / 2) : 10;
|
|
9962
|
+
this.connectorPointMargin = Math.floor((this.taskBarHeight / 2) - (this.connectorPointWidth / 2)) - 1;
|
|
9914
9963
|
}
|
|
9915
9964
|
/**
|
|
9916
9965
|
* Function used to refresh Gantt rows.
|
|
@@ -9978,7 +10027,6 @@ class ChartRows extends DateProcessor {
|
|
|
9978
10027
|
const tempTemplateData = this.parent.currentViewData[i];
|
|
9979
10028
|
if (this.parent.viewType === 'ResourceView') {
|
|
9980
10029
|
if (this.parent.editModule && this.parent.editModule.isResourceTaskDeleted || this.parent.isFromOnPropertyChange) {
|
|
9981
|
-
this.parent.initialChartRowElements = this.parent.ganttChartModule.getChartRows();
|
|
9982
10030
|
this.parent.editModule.isResourceTaskDeleted = false;
|
|
9983
10031
|
}
|
|
9984
10032
|
if (!tempTemplateData.expanded && this.parent.enableMultiTaskbar) {
|
|
@@ -9997,11 +10045,12 @@ class ChartRows extends DateProcessor {
|
|
|
9997
10045
|
}
|
|
9998
10046
|
}
|
|
9999
10047
|
this.ganttChartTableBody.replaceChildren(...dupChartBody.childNodes);
|
|
10048
|
+
this.parent.initialChartRowElements = this.parent.ganttChartModule.getChartRows();
|
|
10000
10049
|
}
|
|
10001
10050
|
this.parent.renderTemplates();
|
|
10002
10051
|
this.triggerQueryTaskbarInfo();
|
|
10003
10052
|
this.parent.modifiedRecords = [];
|
|
10004
|
-
if (this.parent.viewType
|
|
10053
|
+
if (this.parent.viewType == 'ResourceView' && this.parent.showOverAllocation) {
|
|
10005
10054
|
this.updateOverlapped();
|
|
10006
10055
|
}
|
|
10007
10056
|
if (collapsedResourceRecord.length) {
|
|
@@ -10074,7 +10123,7 @@ class ChartRows extends DateProcessor {
|
|
|
10074
10123
|
else if (this.templateData.ganttProperties.isMilestone) {
|
|
10075
10124
|
const milestoneTemplateNode = this.getMilestoneNode(i, taskbarContainerNode);
|
|
10076
10125
|
if (milestoneTemplateNode && milestoneTemplateNode.length > 0) {
|
|
10077
|
-
|
|
10126
|
+
append(milestoneTemplateNode, taskbarContainerNode[0]);
|
|
10078
10127
|
}
|
|
10079
10128
|
if (this.parent.renderBaseline && this.templateData.ganttProperties.baselineStartDate &&
|
|
10080
10129
|
this.templateData.ganttProperties.baselineEndDate) {
|
|
@@ -10250,9 +10299,9 @@ class ChartRows extends DateProcessor {
|
|
|
10250
10299
|
const classCollections = this.getClassName(args);
|
|
10251
10300
|
if (args.taskbarType === 'Milestone') {
|
|
10252
10301
|
args.milestoneColor = taskbarElement.querySelector(classCollections[0]) ?
|
|
10253
|
-
getComputedStyle(taskbarElement.querySelector(classCollections[0])).
|
|
10302
|
+
getComputedStyle(taskbarElement.querySelector(classCollections[0])).backgroundColor : null;
|
|
10254
10303
|
args.baselineColor = trElement.querySelector(classCollections[1]) ?
|
|
10255
|
-
getComputedStyle(trElement.querySelector(classCollections[1])).
|
|
10304
|
+
getComputedStyle(trElement.querySelector(classCollections[1])).backgroundColor :
|
|
10256
10305
|
(trElement.querySelector('.' + baselineBar) ? getComputedStyle(trElement.querySelector('.' + baselineBar)).backgroundColor : null);
|
|
10257
10306
|
}
|
|
10258
10307
|
else if (taskbarElement) {
|
|
@@ -10320,14 +10369,12 @@ class ChartRows extends DateProcessor {
|
|
|
10320
10369
|
}
|
|
10321
10370
|
if (args.taskbarType === 'Milestone') {
|
|
10322
10371
|
if (taskbarElement.querySelector(classCollections[0]) &&
|
|
10323
|
-
getComputedStyle(taskbarElement.querySelector(classCollections[0])).
|
|
10324
|
-
taskbarElement.querySelector(classCollections[0]).style.
|
|
10325
|
-
taskbarElement.querySelector('.' + milestoneBottom).style.borderTopColor = args.milestoneColor;
|
|
10372
|
+
getComputedStyle(taskbarElement.querySelector(classCollections[0])).backgroundColor !== args.milestoneColor) {
|
|
10373
|
+
taskbarElement.querySelector(classCollections[0]).style.backgroundColor = args.milestoneColor;
|
|
10326
10374
|
}
|
|
10327
10375
|
if (trElement.querySelector(classCollections[1]) &&
|
|
10328
|
-
getComputedStyle(trElement.querySelector(classCollections[1])).
|
|
10329
|
-
trElement.querySelector(classCollections[1]).style.
|
|
10330
|
-
trElement.querySelector('.' + baselineMilestoneBottom).style.borderTopColor = args.baselineColor;
|
|
10376
|
+
getComputedStyle(trElement.querySelector(classCollections[1])).backgroundColor !== args.baselineColor) {
|
|
10377
|
+
trElement.querySelector(classCollections[1]).style.backgroundColor = args.baselineColor;
|
|
10331
10378
|
}
|
|
10332
10379
|
if (trElement.querySelector('.' + baselineBar) &&
|
|
10333
10380
|
getComputedStyle(trElement.querySelector('.' + baselineBar)).borderTopColor !== args.baselineColor) {
|
|
@@ -10408,9 +10455,9 @@ class ChartRows extends DateProcessor {
|
|
|
10408
10455
|
getClassName(args) {
|
|
10409
10456
|
const classCollection = [];
|
|
10410
10457
|
classCollection.push('.' + (args.taskbarType === 'ParentTask' ?
|
|
10411
|
-
traceParentTaskBar : args.taskbarType === 'ChildTask' ? traceChildTaskBar :
|
|
10458
|
+
traceParentTaskBar : args.taskbarType === 'ChildTask' ? traceChildTaskBar : traceMilestone));
|
|
10412
10459
|
classCollection.push('.' + (args.taskbarType === 'ParentTask' ?
|
|
10413
|
-
traceParentProgressBar : args.taskbarType === 'ChildTask' ? traceChildProgressBar :
|
|
10460
|
+
traceParentProgressBar : args.taskbarType === 'ChildTask' ? traceChildProgressBar : baselineMilestoneContainer));
|
|
10414
10461
|
return classCollection;
|
|
10415
10462
|
}
|
|
10416
10463
|
/**
|
|
@@ -10423,7 +10470,7 @@ class ChartRows extends DateProcessor {
|
|
|
10423
10470
|
templateCompiler(template) {
|
|
10424
10471
|
if (!isNullOrUndefined(template) && template !== '') {
|
|
10425
10472
|
try {
|
|
10426
|
-
if (document.querySelectorAll(template).length) {
|
|
10473
|
+
if (typeof template !== 'function' && document.querySelectorAll(template).length) {
|
|
10427
10474
|
return compile(document.querySelector(template).innerHTML.trim(), this.parent);
|
|
10428
10475
|
}
|
|
10429
10476
|
else {
|
|
@@ -11573,11 +11620,28 @@ class Dependency {
|
|
|
11573
11620
|
*/
|
|
11574
11621
|
class ConnectorLine {
|
|
11575
11622
|
constructor(ganttObj) {
|
|
11623
|
+
this.transform = '';
|
|
11624
|
+
this.connectorLinePath = '';
|
|
11625
|
+
this.arrowPath = '';
|
|
11576
11626
|
this.expandedRecords = [];
|
|
11577
11627
|
this.parent = ganttObj;
|
|
11578
11628
|
this.dependencyViewContainer =
|
|
11579
|
-
createElement('div', { className: dependencyViewContainer
|
|
11629
|
+
createElement('div', { className: dependencyViewContainer,
|
|
11630
|
+
});
|
|
11631
|
+
Object.assign(this.dependencyViewContainer.style, {
|
|
11632
|
+
width: "100%",
|
|
11633
|
+
height: "100%",
|
|
11634
|
+
zIndex: 2,
|
|
11635
|
+
position: "absolute",
|
|
11636
|
+
pointerEvents: "none"
|
|
11637
|
+
});
|
|
11638
|
+
this.renderer = new SvgRenderer(this.parent.element.id);
|
|
11580
11639
|
this.initPublicProp();
|
|
11640
|
+
this.svgObject = this.renderer.createSvg({
|
|
11641
|
+
id: this.parent.element.id + '_svg'
|
|
11642
|
+
});
|
|
11643
|
+
this.svgObject.setAttribute('height', '100%');
|
|
11644
|
+
this.svgObject.setAttribute('width', '100%');
|
|
11581
11645
|
}
|
|
11582
11646
|
/**
|
|
11583
11647
|
* To get connector line gap.
|
|
@@ -11606,7 +11670,7 @@ class ConnectorLine {
|
|
|
11606
11670
|
}
|
|
11607
11671
|
getTaskbarMidpoint(isMilestone) {
|
|
11608
11672
|
return Math.floor(isMilestone ?
|
|
11609
|
-
(this.parent.chartRowsModule.milestoneMarginTop + (this.parent.chartRowsModule.milestoneHeight / 2)) :
|
|
11673
|
+
(this.parent.chartRowsModule.milestoneMarginTop + (this.parent.chartRowsModule.milestoneHeight / 2)) + 1 :
|
|
11610
11674
|
(this.parent.chartRowsModule.taskBarMarginTop + (this.parent.chartRowsModule.taskBarHeight / 2))) + 1;
|
|
11611
11675
|
}
|
|
11612
11676
|
/**
|
|
@@ -11655,6 +11719,10 @@ class ConnectorLine {
|
|
|
11655
11719
|
connectorObj.connectorLineId = 'parent' + parentId + 'child' + childId;
|
|
11656
11720
|
connectorObj.milestoneParent = parentGanttRecord.isMilestone ? true : false;
|
|
11657
11721
|
connectorObj.milestoneChild = childGanttRecord.isMilestone ? true : false;
|
|
11722
|
+
connectorObj.isManualParent = (!(this.parent.flatData[parentIndex].ganttProperties.isAutoSchedule) && this.parent.flatData[parentIndex].hasChildRecords);
|
|
11723
|
+
connectorObj.isManualChild = (!(this.parent.flatData[childIndex].ganttProperties.isAutoSchedule) && this.parent.flatData[childIndex].hasChildRecords);
|
|
11724
|
+
connectorObj.parentEndPoint = connectorObj.parentLeft + connectorObj.parentWidth;
|
|
11725
|
+
connectorObj.childEndPoint = connectorObj.childLeft + connectorObj.childWidth;
|
|
11658
11726
|
if (isNullOrUndefined(isScheduledTask(parentGanttRecord)) || isNullOrUndefined(isScheduledTask(childGanttRecord))) {
|
|
11659
11727
|
return null;
|
|
11660
11728
|
}
|
|
@@ -11677,8 +11745,8 @@ class ConnectorLine {
|
|
|
11677
11745
|
connectorLine$$1 = connectorLine$$1 + this.getConnectorLineTemplate(connectorLinesCollection[index]);
|
|
11678
11746
|
ariaConnector.push(connectorLinesCollection[index]);
|
|
11679
11747
|
}
|
|
11680
|
-
this.
|
|
11681
|
-
const childNodes = this.parent.connectorLineModule.
|
|
11748
|
+
this.svgObject.innerHTML = connectorLine$$1;
|
|
11749
|
+
const childNodes = this.parent.connectorLineModule.svgObject.childNodes;
|
|
11682
11750
|
for (let i = 0; i < childNodes.length; i++) {
|
|
11683
11751
|
const innerChild = childNodes[i].childNodes;
|
|
11684
11752
|
for (let j = 0; j < innerChild.length; j++) {
|
|
@@ -11686,9 +11754,10 @@ class ConnectorLine {
|
|
|
11686
11754
|
innerChild[j].setAttribute('aria-label', ariaString);
|
|
11687
11755
|
}
|
|
11688
11756
|
}
|
|
11689
|
-
this.parent.ganttChartModule.chartBodyContent.
|
|
11690
|
-
|
|
11691
|
-
|
|
11757
|
+
this.parent.ganttChartModule.chartBodyContent.insertBefore(this.dependencyViewContainer, this.parent.ganttChartModule.chartBodyContent.lastChild);
|
|
11758
|
+
this.dependencyViewContainer.appendChild(this.svgObject);
|
|
11759
|
+
for (let i = 0; i < this.svgObject.children.length; i++) {
|
|
11760
|
+
this.svgObject.children[i].children[0].setAttribute('tabindex', '-1');
|
|
11692
11761
|
}
|
|
11693
11762
|
}
|
|
11694
11763
|
/**
|
|
@@ -11946,16 +12015,15 @@ class ConnectorLine {
|
|
|
11946
12015
|
const height = this.getHeightValue(data);
|
|
11947
12016
|
const isMilestoneParent = data.milestoneParent ? true : false;
|
|
11948
12017
|
const isMilestone = data.milestoneChild ? true : false;
|
|
11949
|
-
let connectorContainer = '';
|
|
11950
12018
|
const isVirtual = this.parent.virtualScrollModule && this.parent.enableVirtualization;
|
|
11951
12019
|
const connectorLine$$1 = this.getPosition(data, this.getParentPosition(data), height);
|
|
12020
|
+
const rowPosition = this.getPosition(data, this.getParentPosition(data), height);
|
|
12021
|
+
let rowPositionHeight = rowPosition.top;
|
|
11952
12022
|
let isMilestoneValue = 0;
|
|
11953
12023
|
if (this.parent.renderBaseline) {
|
|
11954
12024
|
isMilestoneValue = (data.milestoneParent && data.milestoneChild) ? 0 : data.milestoneParent ? -5 : data.milestoneChild ? 5 : 0;
|
|
11955
12025
|
}
|
|
11956
12026
|
let heightValue = isVirtual ? connectorLine$$1.height : (height + isMilestoneValue);
|
|
11957
|
-
let borderTopWidth = 0;
|
|
11958
|
-
let addTop = 0;
|
|
11959
12027
|
let parentOverlapTopValue = 0;
|
|
11960
12028
|
let childOverlapTopValue = 0;
|
|
11961
12029
|
let count = 0;
|
|
@@ -11992,454 +12060,318 @@ class ConnectorLine {
|
|
|
11992
12060
|
}
|
|
11993
12061
|
if (isValid) {
|
|
11994
12062
|
if (((fromRecordIsParent && !fromRecordIsManual) && (toRecordIsParent && !toRecordIsManual))) {
|
|
11995
|
-
|
|
12063
|
+
|
|
11996
12064
|
}
|
|
11997
12065
|
else if (!((fromRecordIsParent && !fromRecordIsManual) && (toRecordIsParent && !toRecordIsManual))) {
|
|
11998
12066
|
if (data.childIndex > data.parentIndex) {
|
|
11999
|
-
|
|
12000
|
-
borderTopWidth = -11;
|
|
12001
|
-
}
|
|
12002
|
-
else {
|
|
12003
|
-
borderTopWidth = 11;
|
|
12004
|
-
addTop = -11;
|
|
12005
|
-
}
|
|
12067
|
+
|
|
12006
12068
|
}
|
|
12007
12069
|
else {
|
|
12008
|
-
|
|
12009
|
-
borderTopWidth = -11;
|
|
12010
|
-
}
|
|
12011
|
-
else {
|
|
12012
|
-
borderTopWidth = 11;
|
|
12013
|
-
addTop = -11;
|
|
12014
|
-
}
|
|
12070
|
+
|
|
12015
12071
|
}
|
|
12016
12072
|
}
|
|
12017
12073
|
if (this.parent.currentViewData[data.parentIndex].ganttProperties.isMilestone) {
|
|
12018
12074
|
if (data.parentIndex > data.childIndex) {
|
|
12019
|
-
|
|
12020
|
-
borderTopWidth = 10;
|
|
12075
|
+
|
|
12021
12076
|
}
|
|
12022
12077
|
else if (data.type === 'SS' || data.type === 'FF') {
|
|
12023
|
-
|
|
12078
|
+
|
|
12024
12079
|
}
|
|
12025
12080
|
}
|
|
12026
12081
|
else if (this.parent.currentViewData[data.childIndex].ganttProperties.isMilestone) {
|
|
12027
12082
|
if (data.parentIndex > data.childIndex) {
|
|
12028
|
-
|
|
12029
|
-
borderTopWidth = -10;
|
|
12083
|
+
|
|
12030
12084
|
}
|
|
12031
12085
|
else if (data.type === 'SS' || data.type === 'FF') {
|
|
12032
|
-
|
|
12086
|
+
|
|
12033
12087
|
}
|
|
12034
12088
|
}
|
|
12035
12089
|
}
|
|
12036
12090
|
}
|
|
12037
12091
|
if (this.getParentPosition(data)) {
|
|
12038
|
-
|
|
12039
|
-
|
|
12040
|
-
|
|
12041
|
-
|
|
12042
|
-
|
|
12043
|
-
|
|
12044
|
-
|
|
12045
|
-
|
|
12046
|
-
|
|
12047
|
-
|
|
12048
|
-
|
|
12049
|
-
|
|
12050
|
-
|
|
12051
|
-
|
|
12052
|
-
|
|
12053
|
-
|
|
12054
|
-
|
|
12055
|
-
|
|
12056
|
-
|
|
12057
|
-
|
|
12058
|
-
|
|
12059
|
-
|
|
12060
|
-
|
|
12061
|
-
|
|
12062
|
-
const duplicateStingTwo = this.getBorderStyles((this.parent.enableRtl ? 'right' : 'left'), 10) +
|
|
12063
|
-
'top:' + (-6) + 'px;border-bottom-width:' + (5 + this.lineStroke) + 'px;' +
|
|
12064
|
-
'border-top-width:' + (5 + this.lineStroke) + 'px;width:0;height:0;position:relative;"></div>';
|
|
12065
|
-
const duplicateStingThree = this.getBorderStyles('top', this.lineStroke) + 'position:relative;"></div>' + eLine +
|
|
12066
|
-
'top:' + (-(13 + ((this.lineStroke - 1) * 2))) + 'px;width:0px;' + this.getBorderStyles('left', this.lineStroke) +
|
|
12067
|
-
this.getBorderStyles('top', (heightValue + borderTopWidth - (this.lineStroke - 1))) + 'position:relative;"></div>';
|
|
12068
|
-
const duplicateStingFour = leftArrow + (this.parent.enableRtl ? 'right:' : 'left:') +
|
|
12069
|
-
(((data.childLeft + data.childWidth) - (data.parentLeft)) + 10) + 'px;' +
|
|
12070
|
-
this.getBorderStyles((this.parent.enableRtl ? 'left' : 'right'), 10);
|
|
12071
|
-
const duplicateStingFive = 'top:' + (-(6 + (5 + this.lineStroke) + (this.lineStroke / 2))) + 'px;' +
|
|
12072
|
-
this.getBorderStyles('top', this.lineStroke) + 'position:relative;"></div>';
|
|
12092
|
+
// Create the group element
|
|
12093
|
+
this.transform = this.parent.enableRtl ? `translate(${this.parent.timelineModule.totalTimelineWidth}, 0) scale(-1, 1)` : '';
|
|
12094
|
+
this.connectorId = "ConnectorLine" + data.connectorLineId;
|
|
12095
|
+
this.groupObject = this.renderer.createGroup({
|
|
12096
|
+
id: this.connectorId,
|
|
12097
|
+
transform: this.transform,
|
|
12098
|
+
style: 'pointer-events: stroke',
|
|
12099
|
+
class: connectorLineContainer,
|
|
12100
|
+
});
|
|
12101
|
+
// Create the path element for the connector line
|
|
12102
|
+
this.connectorPath = this.renderer.drawPath({
|
|
12103
|
+
class: connectorLineSVG,
|
|
12104
|
+
d: this.connectorLinePath,
|
|
12105
|
+
fill: 'transparent',
|
|
12106
|
+
"stroke-width": 1,
|
|
12107
|
+
});
|
|
12108
|
+
// Create the path element for the arrow
|
|
12109
|
+
this.arrowlinePath = this.renderer.drawPath({
|
|
12110
|
+
d: this.arrowPath,
|
|
12111
|
+
class: connectorLineArrow
|
|
12112
|
+
});
|
|
12113
|
+
// Append the path element to the group element
|
|
12114
|
+
this.groupObject.appendChild(this.connectorPath);
|
|
12115
|
+
this.groupObject.appendChild(this.arrowlinePath);
|
|
12073
12116
|
if (this.getParentPosition(data) === 'FSType1') {
|
|
12074
|
-
|
|
12075
|
-
|
|
12076
|
-
|
|
12077
|
-
|
|
12078
|
-
|
|
12079
|
-
|
|
12080
|
-
|
|
12081
|
-
|
|
12082
|
-
|
|
12083
|
-
|
|
12084
|
-
|
|
12085
|
-
this.
|
|
12086
|
-
div = div + eLine;
|
|
12087
|
-
div = div + direction + ((data.childLeft - (data.parentLeft + data.parentWidth + 10)) - 10) + 'px;width:10px;' +
|
|
12088
|
-
this.getBorderStyles('top', this.lineStroke) + 'position:relative;"></div>';
|
|
12089
|
-
div = div + rightArrow;
|
|
12090
|
-
div = div + direction + (data.childLeft - (data.parentLeft + data.parentWidth + 10)) + 'px;' +
|
|
12091
|
-
this.getBorderStyles((this.parent.enableRtl ? 'right' : 'left'), 10) + 'top:' + (-6 - this.lineStroke) + 'px;border-bottom-width:' + (5 + this.lineStroke) +
|
|
12092
|
-
'px;border-top-width:' + (5 + this.lineStroke) + 'px;width:0;height:0;position:relative;"></div></div>';
|
|
12117
|
+
this.taskLineValue = data.milestoneChild ? 1 : 0;
|
|
12118
|
+
this.x1 = data.parentEndPoint + (data.milestoneParent ? -1 : (data.milestoneChild ? -1 : 0));
|
|
12119
|
+
this.x2 = data.milestoneParent ? ((((data.childLeft - (data.parentEndPoint + 10)) + 1) - 10) + 1) : (((data.childLeft - (data.parentEndPoint + 10))) - 10);
|
|
12120
|
+
this.y1 = this.parent.enableVirtualization ? rowPositionHeight : ((!this.parent.allowTaskbarOverlap ? parentOverlapTopValue : (data.parentIndex * data.rowHeight)) + this.getTaskbarMidpoint(data.milestoneParent)) + ((data.isManualParent && data.isManualChild) ? -10 : 0);
|
|
12121
|
+
this.y2 = heightValue + this.taskLineValue;
|
|
12122
|
+
this.manualParent = (data.isManualParent && !data.isManualChild ? -10 : 0);
|
|
12123
|
+
this.manualChild = (data.isManualChild && !data.isManualParent ? -10 : 0);
|
|
12124
|
+
this.connectorLinePath = "M " + this.x1 + " " + (this.y1 + this.manualParent + this.manualChild) + " L " + (this.x1 + this.x2) + " " + (this.y1 + this.manualParent + this.manualChild) + " L " + (this.x1 + this.x2) + " " + (this.y1 + this.y2) +
|
|
12125
|
+
" L " + (this.x1 + this.x2 + 11) + " " + (this.y1 + this.y2);
|
|
12126
|
+
this.arrowPath = "M " + (this.x1 + this.x2 + 18) + " " + (this.y1 + this.y2 + this.manualChild) +
|
|
12127
|
+
" L " + (this.x1 + this.x2 + 11) + " " + (this.y1 + this.y2 - (4 + this.lineStroke) + this.manualChild) +
|
|
12128
|
+
" L " + (this.x1 + this.x2 + 11) + " " + (this.y1 + this.y2 + 4 + this.lineStroke + this.manualChild) + " Z";
|
|
12093
12129
|
}
|
|
12094
12130
|
if (this.getParentPosition(data) === 'FSType2') {
|
|
12095
|
-
|
|
12096
|
-
|
|
12097
|
-
|
|
12098
|
-
|
|
12099
|
-
|
|
12100
|
-
|
|
12101
|
-
|
|
12102
|
-
|
|
12103
|
-
|
|
12104
|
-
|
|
12105
|
-
|
|
12106
|
-
|
|
12107
|
-
|
|
12108
|
-
|
|
12109
|
-
this.
|
|
12110
|
-
|
|
12111
|
-
div = div + direction + (data.parentWidth - (((data.parentLeft +
|
|
12112
|
-
data.parentWidth) - data.childLeft) + 20)) + 'px;width:0px;' +
|
|
12113
|
-
this.getBorderStyles('top', (this.getconnectorLineGap(data) - this.lineStroke)) +
|
|
12114
|
-
this.getBorderStyles('left', this.lineStroke) + 'position:relative;"></div>';
|
|
12115
|
-
div = div + eLine;
|
|
12116
|
-
div = div + direction + (data.parentWidth - (((data.parentLeft +
|
|
12117
|
-
data.parentWidth) - data.childLeft) + 20)) + 'px;width:10px;' +
|
|
12118
|
-
this.getBorderStyles('top', this.lineStroke) + 'position:relative;"></div>';
|
|
12119
|
-
div = div + rightArrow;
|
|
12120
|
-
div = div + direction + (data.parentWidth - (((data.parentLeft + data.parentWidth) - data.childLeft) + 10)) + 'px;' +
|
|
12121
|
-
this.getBorderStyles((this.parent.enableRtl ? 'right' : 'left'), 10) + 'border-bottom-width:' + (5 + this.lineStroke) + 'px;' +
|
|
12122
|
-
'border-top-width:' + (5 + this.lineStroke) + 'px;top:' + (-6 - this.lineStroke) +
|
|
12123
|
-
'px;width:0;height:0;position:relative;"></div></div>';
|
|
12131
|
+
this.taskLineValue = data.milestoneChild ? 1 : 0;
|
|
12132
|
+
this.x1 = data.parentLeft + (data.milestoneChild ? -1 : 0);
|
|
12133
|
+
this.x2 = data.parentWidth + (data.milestoneParent ? 1 : 0);
|
|
12134
|
+
this.x3 = this.x2 + (data.milestoneParent ? 11 : 10);
|
|
12135
|
+
this.x4 = data.parentWidth - ((data.parentEndPoint - data.childLeft) + 20);
|
|
12136
|
+
this.y1 = this.parent.enableVirtualization ? rowPositionHeight : ((!this.parent.allowTaskbarOverlap ? parentOverlapTopValue : (data.parentIndex * data.rowHeight)) + this.getTaskbarMidpoint(data.milestoneParent)) + ((data.isManualParent && data.isManualChild) ? -10 : 0);
|
|
12137
|
+
this.y2 = heightValue - this.getconnectorLineGap(data) + this.taskLineValue;
|
|
12138
|
+
this.y3 = this.getconnectorLineGap(data);
|
|
12139
|
+
this.y4 = this.y1 + this.y2 - ((this.y1 + this.y2) % data.rowHeight);
|
|
12140
|
+
this.manualParent = (data.isManualParent && !data.isManualChild ? -10 : 0);
|
|
12141
|
+
this.manualChild = (data.isManualChild && !data.isManualParent ? -10 : 0);
|
|
12142
|
+
this.connectorLinePath = "M " + (this.x1 + this.x2) + " " + (this.y1 + this.manualParent + this.manualChild) + " " + " L " + (this.x1 + this.x3) + " " + (this.y1 + this.manualParent + this.manualChild) + " L " + (this.x1 + this.x3) + " " + this.y4 +
|
|
12143
|
+
" L " + (this.x1 + this.x4) + " " + this.y4 + " L " + (this.x1 + this.x4) + " " + (this.y1 + this.y2 + this.y3) + " L " + (this.x1 + this.x4 + 11) + " " + (this.y1 + this.y2 + this.y3);
|
|
12144
|
+
this.arrowPath = "M " + (this.x1 + this.x4 + 18) + " " + (this.y1 + this.y2 + this.y3 + this.manualChild) +
|
|
12145
|
+
" L " + (this.x1 + this.x4 + 11) + " " + (this.y1 + this.y2 + this.y3 - (4 + this.lineStroke) + this.manualChild) +
|
|
12146
|
+
" L " + (this.x1 + this.x4 + 11) + " " + (this.y1 + this.y2 + this.y3 + 4 + this.lineStroke + this.manualChild) + " Z";
|
|
12124
12147
|
}
|
|
12125
12148
|
if (this.getParentPosition(data) === 'FSType3') {
|
|
12126
|
-
|
|
12127
|
-
|
|
12128
|
-
|
|
12129
|
-
|
|
12130
|
-
|
|
12131
|
-
|
|
12132
|
-
|
|
12133
|
-
|
|
12134
|
-
|
|
12135
|
-
|
|
12136
|
-
|
|
12137
|
-
|
|
12138
|
-
|
|
12139
|
-
|
|
12140
|
-
|
|
12141
|
-
this.getBorderStyles('top', this.lineStroke) + 'position:relative;top:' +
|
|
12142
|
-
(-(13 + ((this.lineStroke - 1) * 2))) + 'px;"></div>';
|
|
12143
|
-
div = div + eLine;
|
|
12144
|
-
div = div + direction + (((data.parentLeft + data.parentWidth) - data.childLeft) + (30 - this.lineStroke)) +
|
|
12145
|
-
'px;width:0px;' + 'height:' + (this.getconnectorLineGap(data) - this.lineStroke) + 'px;' +
|
|
12146
|
-
this.getBorderStyles('left', this.lineStroke) + 'position:relative;' +
|
|
12147
|
-
'top:' + (-(13 + ((this.lineStroke - 1) * 2))) + 'px;"></div>';
|
|
12148
|
-
div = div + eLine;
|
|
12149
|
-
div = div + (isMilestoneParent ? direction + (((data.parentLeft +
|
|
12150
|
-
data.parentWidth) - data.childLeft) + (18 - this.lineStroke)) + 'px;width:' + (12 + this.lineStroke) + 'px;' : direction +
|
|
12151
|
-
(((data.parentLeft + data.parentWidth) - data.childLeft) + 20) + 'px;width:10px;') +
|
|
12152
|
-
this.getBorderStyles('top', this.lineStroke) + 'position:relative;top:' +
|
|
12153
|
-
(-(13 + ((this.lineStroke - 1) * 2))) + 'px;"></div></div>';
|
|
12149
|
+
this.taskLineValue = data.milestoneChild ? 1 : 0;
|
|
12150
|
+
this.point1 = this.parent.enableVirtualization ? rowPositionHeight : ((!this.parent.allowTaskbarOverlap ? parentOverlapTopValue : (data.childIndex * data.rowHeight)) + this.getTaskbarMidpoint(data.milestoneChild));
|
|
12151
|
+
this.x1 = (data.childLeft + (data.milestoneChild ? -1 : 0) + (data.milestoneParent ? 1 : 0)) - 20;
|
|
12152
|
+
this.x2 = (data.parentEndPoint - data.childLeft) + 30;
|
|
12153
|
+
this.y1 = this.point1 + ((data.isManualParent && data.isManualChild) ? -10 : 0);
|
|
12154
|
+
this.y2 = this.point1 + heightValue - this.getconnectorLineGap(data) + this.taskLineValue + (this.parent.renderBaseline ? (data.milestoneChild ? -10 : 0) : 0);
|
|
12155
|
+
this.y3 = this.getconnectorLineGap(data) + (this.parent.renderBaseline ? (data.milestoneParent ? 10 : 0) : 0);
|
|
12156
|
+
this.y4 = this.y2 - (this.y2 % data.rowHeight);
|
|
12157
|
+
this.manualParent = (data.isManualParent && !data.isManualChild ? -10 : 0);
|
|
12158
|
+
this.manualChild = (data.isManualChild && !data.isManualParent ? -10 : 0);
|
|
12159
|
+
this.connectorLinePath = "M " + (this.x1 + 12) + " " + (this.y1 + this.manualParent + this.manualChild) + " L " + this.x1 + " " + (this.y1 + this.manualParent + this.manualChild) + " L " + this.x1 + " " + this.y4 +
|
|
12160
|
+
" L " + (this.x1 + this.x2) + " " + this.y4 + " L " + (this.x1 + this.x2) + " " + (this.y2 + this.y3) + " L " + (this.x1 + this.x2 - 12) + " " + (this.y2 + this.y3);
|
|
12161
|
+
this.arrowPath = "M " + (this.x1 + 18) + " " + (this.y1 + this.manualChild) +
|
|
12162
|
+
" L " + (this.x1 + 11) + " " + (this.y1 - (4 + this.lineStroke) + this.manualChild) +
|
|
12163
|
+
" L " + (this.x1 + 11) + " " + (this.y1 + 4 + this.lineStroke + this.manualChild) + " Z";
|
|
12154
12164
|
}
|
|
12155
12165
|
if (this.getParentPosition(data) === 'FSType4') {
|
|
12156
|
-
|
|
12157
|
-
|
|
12158
|
-
|
|
12159
|
-
|
|
12160
|
-
|
|
12161
|
-
|
|
12162
|
-
|
|
12163
|
-
|
|
12164
|
-
|
|
12165
|
-
|
|
12166
|
-
|
|
12167
|
-
this.
|
|
12168
|
-
|
|
12169
|
-
div = div + eLine;
|
|
12170
|
-
div = div + 'top:' + (-(13 + ((this.lineStroke - 1) * 2))) + 'px;' + direction +
|
|
12171
|
-
(data.childLeft - (data.parentLeft + data.parentWidth) - 20) + 'px;width:0px;' +
|
|
12172
|
-
this.getBorderStyles('left', this.lineStroke) +
|
|
12173
|
-
this.getBorderStyles('top', (heightValue + borderTopWidth - this.lineStroke + 1)) + 'position:relative;"></div>';
|
|
12174
|
-
div = div + eLine;
|
|
12175
|
-
div = div + (isMilestoneParent ? direction + '-1px;' : '') + 'top:' +
|
|
12176
|
-
(-(13 + ((this.lineStroke - 1) * 2))) + 'px;width:' +
|
|
12177
|
-
(isMilestoneParent ? ((data.childLeft - (data.parentLeft + data.parentWidth + 20) + 1) + this.lineStroke) :
|
|
12178
|
-
((data.childLeft - (data.parentLeft + data.parentWidth + 20)) + this.lineStroke)) + 'px;' +
|
|
12179
|
-
this.getBorderStyles('top', this.lineStroke) + 'position:relative;"></div></div>';
|
|
12166
|
+
this.point1 = this.parent.enableVirtualization ? rowPositionHeight : ((!this.parent.allowTaskbarOverlap ? parentOverlapTopValue : (data.childIndex * data.rowHeight)) + this.getTaskbarMidpoint(data.milestoneChild));
|
|
12167
|
+
this.taskLineValue = this.parent.renderBaseline ? this.taskLineValue : 0;
|
|
12168
|
+
this.x1 = data.parentEndPoint + (data.milestoneChild ? -1 : 0) + (data.milestoneParent ? 1 : 0);
|
|
12169
|
+
this.x2 = data.childLeft - data.parentEndPoint - 20;
|
|
12170
|
+
this.y1 = this.point1 + (data.milestoneChild ? 1 : 0) + ((data.isManualParent && data.isManualChild) ? -10 : 0);
|
|
12171
|
+
this.y2 = this.point1 + heightValue + this.taskLineValue + (this.parent.renderBaseline ? (data.milestoneParent ? 10 : 0) : 0);
|
|
12172
|
+
this.manualParent = (data.isManualParent && !data.isManualChild ? -10 : 0);
|
|
12173
|
+
this.manualChild = (data.isManualChild && !data.isManualParent ? -10 : 0);
|
|
12174
|
+
this.connectorLinePath = "M " + (this.x1 + this.x2 + 11) + " " + (this.y1 + this.manualParent + this.manualChild) + " L " + (this.x1 + this.x2) + " " + (this.y1 + this.manualParent + this.manualChild) + " L " + (this.x1 + this.x2) + " " + this.y2 +
|
|
12175
|
+
" L " + this.x1 + " " + this.y2;
|
|
12176
|
+
this.arrowPath = "M " + (this.x1 + this.x2 + 18) + " " + (this.y1 + this.manualChild) +
|
|
12177
|
+
" L " + (this.x1 + this.x2 + 11) + " " + (this.y1 - (4 + this.lineStroke) + this.manualChild) +
|
|
12178
|
+
" L " + (this.x1 + this.x2 + 11) + " " + (this.y1 + 4 + this.lineStroke + this.manualChild) + " Z";
|
|
12180
12179
|
}
|
|
12181
12180
|
if (this.getParentPosition(data) === 'SSType4') {
|
|
12182
|
-
|
|
12183
|
-
|
|
12184
|
-
|
|
12185
|
-
|
|
12186
|
-
|
|
12187
|
-
|
|
12188
|
-
|
|
12189
|
-
|
|
12190
|
-
|
|
12191
|
-
|
|
12192
|
-
this.
|
|
12181
|
+
this.taskLineValue = this.parent.renderBaseline ? this.taskLineValue : 0;
|
|
12182
|
+
this.point1 = heightValue + this.taskLineValue;
|
|
12183
|
+
this.point2 = this.parent.enableVirtualization ? rowPositionHeight : ((!this.parent.allowTaskbarOverlap ? parentOverlapTopValue : (data.childIndex * data.rowHeight)) + this.getTaskbarMidpoint(data.milestoneChild));
|
|
12184
|
+
this.x1 = data.parentLeft - 8;
|
|
12185
|
+
this.x2 = data.childLeft - data.parentLeft;
|
|
12186
|
+
this.y1 = this.point2 + (data.milestoneChild ? 1 : 0) + ((data.isManualParent && data.isManualChild) ? -10 : 0);
|
|
12187
|
+
this.y2 = this.y1 + this.point1 + (this.parent.renderBaseline ? (data.milestoneParent ? 10 : 0) : 0);
|
|
12188
|
+
this.manualParent = (data.isManualParent && !data.isManualChild ? -10 : 0);
|
|
12189
|
+
this.manualChild = (data.isManualChild && !data.isManualParent ? -10 : 0);
|
|
12190
|
+
this.connectorLinePath = "M " + (this.x1 + this.x2) + " " + (this.y1 + this.manualParent + this.manualChild) + " L " + this.x1 + " " + (this.y1 + this.manualParent + this.manualChild) +
|
|
12191
|
+
" L " + this.x1 + " " + this.y2 + " L " + (this.x1 + 10) + " " + this.y2;
|
|
12192
|
+
this.arrowPath = "M " + (this.x1 + this.x2 + 8) + " " + (this.y1 + this.manualChild) +
|
|
12193
|
+
" L " + (this.x1 + this.x2) + " " + (this.y1 - (4 + this.lineStroke) + this.manualChild) +
|
|
12194
|
+
" L " + (this.x1 + this.x2) + " " + (this.y1 + 4 + this.lineStroke + this.manualChild) + " Z";
|
|
12193
12195
|
}
|
|
12194
12196
|
if (this.getParentPosition(data) === 'SSType3') {
|
|
12195
|
-
|
|
12196
|
-
|
|
12197
|
-
|
|
12198
|
-
|
|
12199
|
-
|
|
12200
|
-
|
|
12201
|
-
|
|
12202
|
-
|
|
12203
|
-
|
|
12204
|
-
|
|
12205
|
-
|
|
12197
|
+
this.taskLineValue = this.parent.renderBaseline ? this.taskLineValue : data.milestoneChild ? 1 : 0;
|
|
12198
|
+
this.point1 = heightValue + this.taskLineValue;
|
|
12199
|
+
this.x1 = data.childLeft - 20;
|
|
12200
|
+
this.y1 = (data.milestoneChild ? 1 : 0) + ((this.parent.enableVirtualization ? rowPositionHeight : (!this.parent.allowTaskbarOverlap ? parentOverlapTopValue : (data.childIndex * data.rowHeight)) + this.getTaskbarMidpoint(data.milestoneChild))) + ((data.isManualParent && data.isManualChild) ? -10 : 0);
|
|
12201
|
+
this.x2 = data.parentLeft - data.childLeft + 21;
|
|
12202
|
+
this.y2 = this.y1 + this.point1 + (this.parent.renderBaseline ? (data.milestoneChild ? -11 : data.milestoneParent ? 10 : 0) : 0);
|
|
12203
|
+
this.manualParent = (data.isManualParent && !data.isManualChild ? -10 : 0);
|
|
12204
|
+
this.manualChild = (data.isManualChild && !data.isManualParent ? -10 : 0);
|
|
12205
|
+
this.connectorLinePath = "M " + (this.x1 + 12) + " " + (this.y1 + this.manualParent + this.manualChild) + " L " + this.x1 + " " + (this.y1 + this.manualParent + this.manualChild) +
|
|
12206
|
+
" L " + this.x1 + " " + this.y2 + " L " + (this.x1 + this.x2) + " " + this.y2;
|
|
12207
|
+
this.arrowPath = "M " + (this.x1 + 20) + " " + (this.y1 + this.manualChild) +
|
|
12208
|
+
" L " + (this.x1 + 12) + " " + (this.y1 - (4 + this.lineStroke) + this.manualChild) +
|
|
12209
|
+
" L " + (this.x1 + 12) + " " + (this.y1 + 4 + this.lineStroke + this.manualChild) + " Z";
|
|
12206
12210
|
}
|
|
12207
12211
|
if (this.getParentPosition(data) === 'SSType2') {
|
|
12208
|
-
|
|
12209
|
-
|
|
12210
|
-
|
|
12211
|
-
|
|
12212
|
-
|
|
12213
|
-
|
|
12214
|
-
|
|
12215
|
-
|
|
12216
|
-
|
|
12217
|
-
|
|
12218
|
-
|
|
12219
|
-
this.
|
|
12220
|
-
|
|
12221
|
-
div = div + direction + setInnerElementWidthSSType2 + 'px;' +
|
|
12222
|
-
this.getBorderStyles((this.parent.enableRtl ? 'right' : 'left'), 10) + 'top:' + (-6 - this.lineStroke) + 'px;' +
|
|
12223
|
-
'border-bottom-width:' + (5 + this.lineStroke) + 'px;border-top-width:' +
|
|
12224
|
-
(5 + this.lineStroke) + 'px;width:0;' +
|
|
12225
|
-
'height:0;position:relative;"></div></div>';
|
|
12212
|
+
this.taskLineValue = this.parent.renderBaseline ? this.taskLineValue : data.milestoneChild ? 1 : 0;
|
|
12213
|
+
this.point1 = heightValue + this.taskLineValue;
|
|
12214
|
+
this.x1 = setInnerElementLeftSSType2;
|
|
12215
|
+
this.x2 = setInnerChildWidthSSType2 + 1;
|
|
12216
|
+
this.y1 = this.parent.enableVirtualization ? rowPositionHeight : ((!this.parent.allowTaskbarOverlap ? parentOverlapTopValue : (data.parentIndex * data.rowHeight)) + this.getTaskbarMidpoint(data.milestoneParent)) + ((data.isManualParent && data.isManualChild) ? -10 : 0);
|
|
12217
|
+
this.y2 = this.y1 + this.point1;
|
|
12218
|
+
this.manualParent = (data.isManualParent && !data.isManualChild ? -10 : 0);
|
|
12219
|
+
this.manualChild = (data.isManualChild && !data.isManualParent ? -10 : 0);
|
|
12220
|
+
this.connectorLinePath = "M " + (this.x1 + this.x2) + " " + (this.y1 + this.manualParent + this.manualChild) + " L " + this.x1 + " " + (this.y1 + this.manualParent + this.manualChild) + " L " + this.x1 + " " + this.y2 +
|
|
12221
|
+
" L " + (this.x1 + setInnerElementWidthSSType2) + " " + this.y2;
|
|
12222
|
+
this.arrowPath = "M " + (this.x1 + setInnerElementWidthSSType2 + 8) + " " + (this.y2 + this.manualChild) +
|
|
12223
|
+
" L " + (this.x1 + setInnerElementWidthSSType2) + " " + (this.y2 - (4 + this.lineStroke) + this.manualChild) +
|
|
12224
|
+
" L " + (this.x1 + setInnerElementWidthSSType2) + " " + (this.y2 + 4 + this.lineStroke + this.manualChild) + " Z";
|
|
12226
12225
|
}
|
|
12227
12226
|
if (this.getParentPosition(data) === 'SSType1') {
|
|
12228
|
-
|
|
12229
|
-
|
|
12230
|
-
|
|
12231
|
-
|
|
12232
|
-
|
|
12233
|
-
|
|
12234
|
-
|
|
12235
|
-
|
|
12236
|
-
|
|
12237
|
-
|
|
12238
|
-
|
|
12239
|
-
|
|
12240
|
-
|
|
12241
|
-
div = div + direction + '10px;' + this.getBorderStyles((this.parent.enableRtl ? 'right' : 'left'), 10) +
|
|
12242
|
-
'top:' + (-6 - this.lineStroke) + 'px;border-bottom-width:' + (5 + this.lineStroke) + 'px;' +
|
|
12243
|
-
'border-top-width:' + (5 + this.lineStroke) + 'px;width:0;height:0;position:relative;"></div></div>';
|
|
12227
|
+
this.taskLineValue = this.parent.renderBaseline ? this.taskLineValue : data.milestoneChild ? 1 : 0;
|
|
12228
|
+
this.point1 = heightValue + this.taskLineValue;
|
|
12229
|
+
this.x1 = data.childLeft - 20;
|
|
12230
|
+
this.x2 = data.parentLeft - data.childLeft + 21;
|
|
12231
|
+
this.y1 = this.parent.enableVirtualization ? rowPositionHeight : ((!this.parent.allowTaskbarOverlap ? parentOverlapTopValue : (data.parentIndex * data.rowHeight)) + this.getTaskbarMidpoint(data.milestoneParent)) + +((data.isManualParent && data.isManualChild) ? -10 : 0);
|
|
12232
|
+
this.y2 = this.y1 + this.point1;
|
|
12233
|
+
this.manualParent = (data.isManualParent && !data.isManualChild ? -10 : 0);
|
|
12234
|
+
this.manualChild = (data.isManualChild && !data.isManualParent ? -10 : 0);
|
|
12235
|
+
this.connectorLinePath = "M " + (this.x1 + this.x2) + " " + (this.y1 + this.manualParent + this.manualChild) + " L " + this.x1 + " " + (this.y1 + this.manualParent + this.manualChild) + " L " + this.x1 + " " + this.y2 +
|
|
12236
|
+
" L " + (this.x1 + 12) + " " + this.y2;
|
|
12237
|
+
this.arrowPath = "M " + (this.x1 + 20) + " " + (this.y2 + this.manualChild) +
|
|
12238
|
+
" L " + (this.x1 + 12) + " " + (this.y2 - (4 + this.lineStroke) + this.manualChild) +
|
|
12239
|
+
" L " + (this.x1 + 12) + " " + (this.y2 + 4 + this.lineStroke + this.manualChild) + " Z";
|
|
12244
12240
|
}
|
|
12245
12241
|
if (this.getParentPosition(data) === 'FFType1') {
|
|
12246
|
-
|
|
12247
|
-
|
|
12248
|
-
|
|
12249
|
-
|
|
12250
|
-
|
|
12251
|
-
|
|
12252
|
-
|
|
12253
|
-
|
|
12254
|
-
|
|
12255
|
-
|
|
12256
|
-
|
|
12257
|
-
|
|
12258
|
-
this.
|
|
12259
|
-
|
|
12260
|
-
div = div + direction + (isMilestone ? 4 : 10) + 'px;width:' + (isMilestone ?
|
|
12261
|
-
(((data.parentLeft + data.parentWidth) - (data.childLeft + data.childWidth)) + (16 + this.lineStroke)) :
|
|
12262
|
-
(((data.parentLeft + data.parentWidth) - (data.childLeft + data.childWidth)) + (10 + this.lineStroke))) + 'px;' +
|
|
12263
|
-
this.getBorderStyles('top', this.lineStroke) + 'position:relative;"></div>';
|
|
12264
|
-
div = div + leftArrow;
|
|
12265
|
-
div = div + (isMilestone ? direction + '0px;' : '') + this.getBorderStyles((!this.parent.enableRtl ? 'right' : 'left'), 10) +
|
|
12266
|
-
'top:' + (-6 - this.lineStroke) + 'px;border-bottom-width:' + (5 + this.lineStroke) + 'px;' +
|
|
12267
|
-
'border-top-width:' + (5 + this.lineStroke) + 'px;width:0;height:0;position:relative;"></div></div>';
|
|
12242
|
+
this.taskLineValue = this.parent.renderBaseline ? this.taskLineValue : (data.milestoneChild ? 1 : 0);
|
|
12243
|
+
this.x1 = data.childEndPoint;
|
|
12244
|
+
this.x2 = data.parentEndPoint + (data.milestoneParent ? -1 : 0);
|
|
12245
|
+
this.x3 = data.milestoneParent ? 22 : 21;
|
|
12246
|
+
this.x4 = data.milestoneChild ? 4 : 8;
|
|
12247
|
+
this.y1 = this.parent.enableVirtualization ? rowPositionHeight : ((!this.parent.allowTaskbarOverlap ? parentOverlapTopValue : (data.parentIndex * data.rowHeight)) + this.getTaskbarMidpoint(data.milestoneParent)) + ((data.isManualParent && data.isManualChild) ? -10 : 0);
|
|
12248
|
+
this.y2 = heightValue + this.taskLineValue;
|
|
12249
|
+
this.manualParent = (data.isManualParent && !data.isManualChild ? -10 : 0);
|
|
12250
|
+
this.manualChild = (data.isManualChild && !data.isManualParent ? -10 : 0);
|
|
12251
|
+
this.connectorLinePath = "M " + this.x2 + " " + (this.y1 + this.manualParent + this.manualChild) + " L " + (this.x2 + this.x3) + " " + (this.y1 + this.manualParent + this.manualChild) + " L " + (this.x2 + this.x3) + " " + (this.y1 + this.y2) +
|
|
12252
|
+
" L " + (this.x1 + this.x4) + " " + (this.y1 + this.y2);
|
|
12253
|
+
this.arrowPath = "M " + this.x1 + " " + (this.y1 + this.y2 + this.manualChild) +
|
|
12254
|
+
" L " + (this.x1 + 8) + " " + (this.y1 + this.y2 - (4 + this.lineStroke) + this.manualChild) +
|
|
12255
|
+
" L " + (this.x1 + 8) + " " + (this.y1 + this.y2 + 4 + this.lineStroke + this.manualChild) + " Z";
|
|
12268
12256
|
}
|
|
12269
12257
|
if (this.getParentPosition(data) === 'FFType2') {
|
|
12270
|
-
|
|
12271
|
-
|
|
12272
|
-
|
|
12273
|
-
|
|
12274
|
-
|
|
12275
|
-
|
|
12276
|
-
|
|
12277
|
-
|
|
12278
|
-
|
|
12279
|
-
|
|
12280
|
-
|
|
12281
|
-
|
|
12282
|
-
this.
|
|
12283
|
-
'position:relative;"></div>';
|
|
12284
|
-
div = div + eLine;
|
|
12285
|
-
div = div + direction + (isMilestone ? (((data.childLeft + data.childWidth) - (data.parentLeft + data.parentWidth)) + 4) :
|
|
12286
|
-
(((data.childLeft + data.childWidth) - (data.parentLeft + data.parentWidth)) + 10)) + 'px;' +
|
|
12287
|
-
'width:' + (isMilestone ? (16 + this.lineStroke) : (10 + this.lineStroke)) + 'px;' +
|
|
12288
|
-
this.getBorderStyles('top', this.lineStroke) + 'position:relative;"></div>';
|
|
12289
|
-
div = div + leftArrow;
|
|
12290
|
-
div = div + direction + ((data.childLeft + data.childWidth) - (data.parentLeft + data.parentWidth)) + 'px;' +
|
|
12291
|
-
this.getBorderStyles((!this.parent.enableRtl ? 'right' : 'left'), 10) + 'top:' + (-6 - this.lineStroke) + 'px;' +
|
|
12292
|
-
'border-bottom-width:' + (5 + this.lineStroke) + 'px;border-top-width:' + (5 + this.lineStroke) +
|
|
12293
|
-
'px;width:0;height:0;position:relative;"></div></div>';
|
|
12258
|
+
this.taskLineValue = this.parent.renderBaseline ? this.taskLineValue : (data.milestoneChild ? 1 : 0);
|
|
12259
|
+
this.x1 = data.parentEndPoint;
|
|
12260
|
+
this.x2 = data.childEndPoint + (data.milestoneParent ? 22 : 21);
|
|
12261
|
+
this.x3 = data.childEndPoint + (data.milestoneChild ? 9 : 8);
|
|
12262
|
+
this.y1 = this.parent.enableVirtualization ? rowPositionHeight : ((!this.parent.allowTaskbarOverlap ? parentOverlapTopValue : (data.parentIndex * data.rowHeight)) + this.getTaskbarMidpoint(data.milestoneParent)) + ((data.isManualParent && data.isManualChild) ? -10 : 0);
|
|
12263
|
+
this.y2 = heightValue + this.taskLineValue;
|
|
12264
|
+
this.manualParent = (data.isManualParent && !data.isManualChild ? -10 : 0);
|
|
12265
|
+
this.manualChild = (data.isManualChild && !data.isManualParent ? -10 : 0);
|
|
12266
|
+
this.connectorLinePath = "M " + this.x1 + " " + (this.y1 + this.manualParent + this.manualChild) + " L " + this.x2 + " " + (this.y1 + this.manualParent + this.manualChild) + " L " + this.x2 + " " + (this.y1 + this.y2) +
|
|
12267
|
+
" L " + this.x3 + " " + (this.y1 + this.y2);
|
|
12268
|
+
this.arrowPath = "M " + (this.x3 - 8) + " " + (this.y1 + this.y2 + this.manualChild) +
|
|
12269
|
+
" L " + this.x3 + " " + (this.y1 + this.y2 - (4 + this.lineStroke) + this.manualChild) +
|
|
12270
|
+
" L " + this.x3 + " " + (this.y1 + this.y2 + 4 + this.lineStroke + this.manualChild) + " Z";
|
|
12294
12271
|
}
|
|
12295
12272
|
if (this.getParentPosition(data) === 'FFType3') {
|
|
12296
|
-
|
|
12297
|
-
|
|
12298
|
-
|
|
12299
|
-
|
|
12300
|
-
|
|
12301
|
-
|
|
12302
|
-
|
|
12303
|
-
|
|
12304
|
-
|
|
12305
|
-
|
|
12306
|
-
|
|
12307
|
-
|
|
12308
|
-
|
|
12309
|
-
|
|
12310
|
-
this.getBorderStyles('top', (heightValue + borderTopWidth - this.lineStroke + 1)) + 'position:relative;"></div>';
|
|
12311
|
-
div = div + eLine;
|
|
12312
|
-
div = div + (isMilestoneParent ? (direction + (((data.parentLeft + data.parentWidth) -
|
|
12313
|
-
(data.childLeft + data.childWidth)) - 1) + 'px;width:21') : (direction + ((data.parentLeft + data.parentWidth) -
|
|
12314
|
-
(data.childLeft + data.childWidth)) + 'px;width:20')) +
|
|
12315
|
-
'px;top:' + (-(13 + ((this.lineStroke - 1) * 2))) + 'px;' +
|
|
12316
|
-
this.getBorderStyles('top', this.lineStroke) + 'position:relative;"></div></div>';
|
|
12273
|
+
this.taskLineValue = this.parent.renderBaseline ? this.taskLineValue : 0;
|
|
12274
|
+
this.x1 = data.childEndPoint;
|
|
12275
|
+
this.x2 = this.x1 + (data.milestoneChild ? 4 : 8);
|
|
12276
|
+
this.x3 = data.parentEndPoint - data.childEndPoint + (data.milestoneChild ? 16 : 10);
|
|
12277
|
+
this.x4 = data.parentEndPoint + (data.milestoneParent ? -1 : 0);
|
|
12278
|
+
this.y1 = this.parent.enableVirtualization ? rowPositionHeight : ((!this.parent.allowTaskbarOverlap ? parentOverlapTopValue : (data.childIndex * data.rowHeight)) + this.getTaskbarMidpoint(data.milestoneChild)) + ((data.isManualParent && data.isManualChild) ? -10 : 0);
|
|
12279
|
+
this.y2 = heightValue + this.taskLineValue + (this.parent.renderBaseline ? (data.milestoneParent ? 10 : 0) : 0);
|
|
12280
|
+
this.manualParent = (data.isManualParent && !data.isManualChild ? -10 : 0);
|
|
12281
|
+
this.manualChild = (data.isManualChild && !data.isManualParent ? -10 : 0);
|
|
12282
|
+
this.connectorLinePath = "M " + this.x2 + " " + (this.y1 + this.manualParent + this.manualChild) + " L " + (this.x2 + this.x3) + " " + (this.y1 + this.manualParent + this.manualChild) + " L " + (this.x2 + this.x3) + " " + (this.y1 + this.y2) +
|
|
12283
|
+
" L " + this.x4 + " " + (this.y1 + this.y2);
|
|
12284
|
+
this.arrowPath = "M " + this.x1 + " " + (this.y1 + this.manualChild) +
|
|
12285
|
+
" L " + (this.x1 + 8) + " " + (this.y1 - (4 + this.lineStroke) + this.manualChild) +
|
|
12286
|
+
" L " + (this.x1 + 8) + " " + (this.y1 + 4 + this.lineStroke + this.manualChild) + " Z";
|
|
12317
12287
|
}
|
|
12318
12288
|
if (this.getParentPosition(data) === 'FFType4') {
|
|
12319
|
-
|
|
12320
|
-
|
|
12321
|
-
|
|
12322
|
-
|
|
12323
|
-
|
|
12324
|
-
|
|
12325
|
-
|
|
12326
|
-
|
|
12327
|
-
|
|
12328
|
-
|
|
12329
|
-
|
|
12330
|
-
|
|
12331
|
-
(
|
|
12332
|
-
'px;width:' + (16 + this.lineStroke)) : (direction + (((data.childLeft + data.childWidth) -
|
|
12333
|
-
(data.parentLeft + data.parentWidth)) + 10) + 'px;width:' + (10 + this.lineStroke))) +
|
|
12334
|
-
'px;' + duplicateStingFive;
|
|
12335
|
-
div = div + eLine;
|
|
12336
|
-
div = div + direction + (((data.childLeft + data.childWidth) -
|
|
12337
|
-
(data.parentLeft + data.parentWidth)) + 20) + 'px;top:' + (-(13 + ((this.lineStroke - 1) * 2))) +
|
|
12338
|
-
'px;width:0px;' + this.getBorderStyles('left', this.lineStroke) +
|
|
12339
|
-
this.getBorderStyles('top', (heightValue + borderTopWidth - this.lineStroke + 1)) + 'position:relative;"></div>';
|
|
12340
|
-
div = div + eLine;
|
|
12341
|
-
div = div + (isMilestoneParent ? (direction + '-1px;width:' + (((data.childLeft + data.childWidth) -
|
|
12342
|
-
(data.parentLeft + data.parentWidth)) + (21 + this.lineStroke))) : ('width:' + (((data.childLeft + data.childWidth) -
|
|
12343
|
-
(data.parentLeft + data.parentWidth)) + (20 + this.lineStroke)))) + 'px;top:' +
|
|
12344
|
-
(-(13 + ((this.lineStroke - 1) * 2))) + 'px;' +
|
|
12345
|
-
this.getBorderStyles('top', this.lineStroke) + 'position:relative;"></div></div>';
|
|
12289
|
+
this.taskLineValue = this.parent.renderBaseline ? this.taskLineValue : 0;
|
|
12290
|
+
this.x1 = data.parentEndPoint;
|
|
12291
|
+
this.x2 = data.childEndPoint + (data.milestoneChild ? 7 : 8);
|
|
12292
|
+
this.x3 = this.x2 + (data.milestoneChild ? 12 : 11);
|
|
12293
|
+
this.y1 = this.parent.enableVirtualization ? rowPositionHeight : ((!this.parent.allowTaskbarOverlap ? parentOverlapTopValue : (data.childIndex * data.rowHeight)) + this.getTaskbarMidpoint(data.milestoneChild)) + ((data.isManualParent && data.isManualChild) ? -10 : 0);
|
|
12294
|
+
this.y2 = heightValue + this.taskLineValue + +(this.parent.renderBaseline ? (data.milestoneParent ? 10 : 0) : 0);
|
|
12295
|
+
this.manualParent = (data.isManualParent && !data.isManualChild ? -10 : 0);
|
|
12296
|
+
this.manualChild = (data.isManualChild && !data.isManualParent ? -10 : 0);
|
|
12297
|
+
this.connectorLinePath = "M " + this.x2 + " " + (this.y1 + this.manualParent + this.manualChild) + " L " + this.x3 + " " + (this.y1 + this.manualParent + this.manualChild) + " L " + this.x3 + " " + (this.y1 + this.y2) +
|
|
12298
|
+
" L " + this.x1 + " " + (this.y1 + this.y2);
|
|
12299
|
+
this.arrowPath = "M " + (this.x2 - 8) + " " + (this.y1 + this.manualChild) +
|
|
12300
|
+
" L " + this.x2 + " " + (this.y1 - (4 + this.lineStroke) + this.manualChild) +
|
|
12301
|
+
" L " + this.x2 + " " + (this.y1 + 4 + this.lineStroke + this.manualChild) + " Z";
|
|
12346
12302
|
}
|
|
12347
12303
|
if (this.getParentPosition(data) === 'SFType4') {
|
|
12348
|
-
|
|
12349
|
-
|
|
12350
|
-
|
|
12351
|
-
|
|
12352
|
-
|
|
12353
|
-
|
|
12354
|
-
|
|
12355
|
-
|
|
12356
|
-
|
|
12357
|
-
|
|
12358
|
-
|
|
12359
|
-
|
|
12360
|
-
|
|
12361
|
-
|
|
12362
|
-
|
|
12363
|
-
|
|
12364
|
-
|
|
12365
|
-
(((data.childLeft + data.childWidth) - (data.parentLeft)) + (30 + this.lineStroke)) + 'px;' +
|
|
12366
|
-
this.getBorderStyles('top', this.lineStroke) + 'position:relative;"></div>';
|
|
12367
|
-
div = div + eLine;
|
|
12368
|
-
div = div + 'top:' + (-(13 + ((this.lineStroke - 1) * 2))) + 'px;width:0px;' +
|
|
12369
|
-
this.getBorderStyles('left', this.lineStroke) +
|
|
12370
|
-
this.getBorderStyles('top', (this.getconnectorLineGap(data) - this.lineStroke)) + 'position:relative;"></div>';
|
|
12371
|
-
div = div + eLine;
|
|
12372
|
-
div = div + 'top:' + (-(13 + ((this.lineStroke - 1) * 2))) + 'px;width:11px;' +
|
|
12373
|
-
this.getBorderStyles('top', this.lineStroke) + 'position:relative;"></div></div>';
|
|
12304
|
+
this.taskLineValue = this.parent.renderBaseline ? this.taskLineValue : (data.milestoneChild ? -1 : 0);
|
|
12305
|
+
this.point1 = heightValue - this.getconnectorLineGap(data) + this.taskLineValue;
|
|
12306
|
+
this.point2 = this.parent.enableVirtualization ? rowPositionHeight : ((!this.parent.allowTaskbarOverlap ? parentOverlapTopValue : (data.childIndex * data.rowHeight)) + this.getTaskbarMidpoint(data.milestoneChild));
|
|
12307
|
+
this.x1 = data.parentLeft - 10;
|
|
12308
|
+
this.x2 = this.x1 + ((data.childEndPoint - data.parentLeft) + 18);
|
|
12309
|
+
this.x3 = this.x2 + (data.milestoneChild ? 16 : 11);
|
|
12310
|
+
this.y1 = this.point2 + (data.milestoneChild ? 1 : 0) + ((data.isManualParent && data.isManualChild) ? -10 : 0);
|
|
12311
|
+
this.y2 = this.y1 + this.point1 + (this.parent.renderBaseline ? (data.milestoneChild ? -11 : 0) : 0);
|
|
12312
|
+
this.y3 = this.getconnectorLineGap(data) + (this.parent.renderBaseline ? (data.milestoneParent ? 10 : 0) : 0);
|
|
12313
|
+
this.y4 = this.y2 - (this.y2 % data.rowHeight);
|
|
12314
|
+
this.manualParent = (data.isManualParent && !data.isManualChild ? -10 : 0);
|
|
12315
|
+
this.manualChild = (data.isManualChild && !data.isManualParent ? -10 : 0);
|
|
12316
|
+
this.connectorLinePath = "M " + this.x2 + " " + (this.y1 + this.manualParent + this.manualChild) + " L " + this.x3 + " " + (this.y1 + this.manualParent + this.manualChild) + " L " + this.x3 + " " + this.y4 + " L " + this.x1 + " " + this.y4 +
|
|
12317
|
+
" L " + this.x1 + " " + (this.y2 + this.y3) + " L " + (this.x1 + 11) + " " + (this.y2 + this.y3);
|
|
12318
|
+
this.arrowPath = "M " + (this.x2 - 8) + " " + (this.y1 + this.manualChild) +
|
|
12319
|
+
" L " + this.x2 + " " + (this.y1 - (4 + this.lineStroke) + this.manualChild) +
|
|
12320
|
+
" L " + this.x2 + " " + (this.y1 + 4 + this.lineStroke + this.manualChild) + " Z";
|
|
12374
12321
|
}
|
|
12375
12322
|
if (this.getParentPosition(data) === 'SFType3') {
|
|
12376
|
-
|
|
12377
|
-
|
|
12378
|
-
|
|
12379
|
-
|
|
12380
|
-
|
|
12381
|
-
|
|
12382
|
-
|
|
12383
|
-
|
|
12384
|
-
|
|
12385
|
-
|
|
12386
|
-
|
|
12387
|
-
this.
|
|
12388
|
-
|
|
12389
|
-
|
|
12390
|
-
|
|
12391
|
-
this.getBorderStyles('top', this.lineStroke) + 'position:relative;"></div></div>';
|
|
12323
|
+
this.taskLineValue = this.parent.renderBaseline ? this.taskLineValue : 0;
|
|
12324
|
+
this.point1 = (data.parentLeft - (data.childEndPoint + (data.milestoneParent ? 25 : 20))) + 1 + (this.parent.renderBaseline ? (data.milestoneParent ? 5 : 0) : 0);
|
|
12325
|
+
this.point2 = this.parent.enableVirtualization ? rowPositionHeight : ((!this.parent.allowTaskbarOverlap ? parentOverlapTopValue : (data.childIndex * data.rowHeight)) + this.getTaskbarMidpoint(data.milestoneChild));
|
|
12326
|
+
this.x1 = data.childEndPoint;
|
|
12327
|
+
this.x2 = this.x1 + (data.milestoneChild ? 9 : 8);
|
|
12328
|
+
this.x3 = this.x2 + (data.milestoneChild ? 17 : 11);
|
|
12329
|
+
this.y1 = this.point2 + ((data.isManualParent && data.isManualChild) ? -10 : 0);
|
|
12330
|
+
this.y2 = this.y1 + heightValue + this.taskLineValue + (this.parent.renderBaseline ? (data.milestoneParent ? 10 : 0) : 0);
|
|
12331
|
+
this.manualParent = (data.isManualParent && !data.isManualChild ? -10 : 0);
|
|
12332
|
+
this.manualChild = (data.isManualChild && !data.isManualParent ? -10 : 0);
|
|
12333
|
+
this.connectorLinePath = "M " + this.x2 + " " + (this.y1 + this.manualParent + this.manualChild) + " L " + this.x3 + " " + (this.y1 + this.manualParent + this.manualChild) +
|
|
12334
|
+
" L " + this.x3 + " " + this.y2 + " L " + (this.x3 + this.point1) + " " + this.y2;
|
|
12335
|
+
this.arrowPath = "M " + (this.x2 - 8) + " " + (this.y1 + this.manualChild) +
|
|
12336
|
+
" L " + this.x2 + " " + (this.y1 - (4 + this.lineStroke) + this.manualChild) +
|
|
12337
|
+
" L " + this.x2 + " " + (this.y1 + 4 + this.lineStroke + this.manualChild) + " Z";
|
|
12392
12338
|
}
|
|
12393
12339
|
if (this.getParentPosition(data) === 'SFType1') {
|
|
12394
|
-
|
|
12395
|
-
|
|
12396
|
-
|
|
12397
|
-
|
|
12398
|
-
|
|
12399
|
-
|
|
12400
|
-
|
|
12401
|
-
|
|
12402
|
-
|
|
12403
|
-
|
|
12404
|
-
|
|
12405
|
-
|
|
12406
|
-
|
|
12407
|
-
|
|
12408
|
-
this.
|
|
12409
|
-
|
|
12410
|
-
div = div + (isMilestone ? (direction + (((data.childLeft + data.childWidth) -
|
|
12411
|
-
(data.parentLeft)) + 15) + 'px;width:' + (15 + this.lineStroke)) : (direction +
|
|
12412
|
-
(((data.childLeft + data.childWidth) - (data.parentLeft)) + 20) + 'px;width:' + (10 + this.lineStroke))) + 'px;' +
|
|
12413
|
-
this.getBorderStyles('top', this.lineStroke) + 'position:relative;"></div>';
|
|
12414
|
-
div = div + duplicateStingFour + 'top:' + (-6 - this.lineStroke) + 'px;' +
|
|
12415
|
-
'border-bottom-width:' + (5 + this.lineStroke) + 'px;border-top-width:' +
|
|
12416
|
-
(5 + this.lineStroke) + 'px;position:relative;"></div></div>';
|
|
12340
|
+
this.taskLineValue = this.parent.renderBaseline ? this.taskLineValue : data.milestoneChild ? 1 : 0;
|
|
12341
|
+
this.point1 = heightValue - this.getconnectorLineGap(data) + this.taskLineValue;
|
|
12342
|
+
this.point2 = this.getconnectorLineGap(data);
|
|
12343
|
+
this.x1 = data.parentLeft - 10;
|
|
12344
|
+
this.y1 = this.parent.enableVirtualization ? rowPositionHeight : ((!this.parent.allowTaskbarOverlap ? parentOverlapTopValue : (data.parentIndex * data.rowHeight)) + this.getTaskbarMidpoint(data.milestoneParent)) + +((data.isManualParent && data.isManualChild) ? -10 : 0);
|
|
12345
|
+
this.x2 = (data.childEndPoint - data.parentLeft) + 31;
|
|
12346
|
+
this.y2 = this.y1 + this.point1;
|
|
12347
|
+
this.x3 = (data.childEndPoint - data.parentLeft) + 18;
|
|
12348
|
+
this.y3 = this.y2 - (this.y2 % data.rowHeight);
|
|
12349
|
+
this.manualParent = (data.isManualParent && !data.isManualChild ? -10 : 0);
|
|
12350
|
+
this.manualChild = (data.isManualChild && !data.isManualParent ? -10 : 0);
|
|
12351
|
+
this.connectorLinePath = "M " + (this.x1 + 11) + " " + (this.y1 + this.manualParent + this.manualChild) + " L " + this.x1 + " " + (this.y1 + this.manualParent + this.manualChild) + " L " + this.x1 + " " + this.y3 +
|
|
12352
|
+
" L " + (this.x1 + this.x2) + " " + this.y3 + " L " + (this.x1 + this.x2) + " " + (this.y2 + this.point2) + " L " + (this.x1 + this.x3) + " " + (this.y2 + this.point2);
|
|
12353
|
+
this.arrowPath = "M " + (this.x1 + this.x3 - 8) + " " + (this.y2 + this.point2 + this.manualChild) +
|
|
12354
|
+
" L " + (this.x1 + this.x3) + " " + (this.y2 + this.point2 - (4 + this.lineStroke) + this.manualChild) +
|
|
12355
|
+
" L " + (this.x1 + this.x3) + " " + (this.y2 + this.point2 + 4 + this.lineStroke + this.manualChild) + " Z";
|
|
12417
12356
|
}
|
|
12418
12357
|
if (this.getParentPosition(data) === 'SFType2') {
|
|
12419
|
-
|
|
12420
|
-
|
|
12421
|
-
|
|
12422
|
-
|
|
12423
|
-
|
|
12424
|
-
|
|
12425
|
-
|
|
12426
|
-
|
|
12427
|
-
|
|
12428
|
-
|
|
12429
|
-
|
|
12430
|
-
|
|
12431
|
-
|
|
12432
|
-
|
|
12433
|
-
|
|
12434
|
-
|
|
12435
|
-
|
|
12436
|
-
'top:' + (-6 - this.lineStroke) + 'px;border-bottom-width:' + (5 + this.lineStroke) +
|
|
12437
|
-
'px;border-top-width:' + (5 + this.lineStroke) + 'px;width:0;height:0;position:relative;"></div></div>';
|
|
12438
|
-
}
|
|
12439
|
-
connectorContainer += div;
|
|
12440
|
-
connectorContainer += '</div>';
|
|
12441
|
-
}
|
|
12442
|
-
return connectorContainer;
|
|
12358
|
+
this.taskLineValue = this.parent.renderBaseline ? this.taskLineValue : 0;
|
|
12359
|
+
this.x1 = data.childEndPoint;
|
|
12360
|
+
this.y1 = this.parent.enableVirtualization ? rowPositionHeight : ((!this.parent.allowTaskbarOverlap ? parentOverlapTopValue : (data.parentIndex * data.rowHeight)) + this.getTaskbarMidpoint(data.milestoneParent)) + +((data.isManualParent && data.isManualChild) ? -10 : 0);
|
|
12361
|
+
this.x2 = (data.parentLeft - data.childEndPoint);
|
|
12362
|
+
this.y2 = this.y1 + heightValue + this.taskLineValue;
|
|
12363
|
+
this.manualParent = (data.isManualParent && !data.isManualChild ? -10 : 0);
|
|
12364
|
+
this.manualChild = (data.isManualChild && !data.isManualParent ? -10 : 0);
|
|
12365
|
+
this.connectorLinePath = "M " + (this.x1 + this.x2 + 1) + " " + (this.y1 + this.manualParent + this.manualChild) + " L " + (this.x1 + this.x2 - 10) + " " + (this.y1 + this.manualParent + this.manualChild) +
|
|
12366
|
+
" L " + (this.x1 + this.x2 - 10) + " " + this.y2 + " L " + (this.x1 + 8) + " " + this.y2;
|
|
12367
|
+
this.arrowPath = "M " + this.x1 + " " + (this.y2 + this.manualChild) +
|
|
12368
|
+
" L " + (this.x1 + 8) + " " + (this.y2 - (4 + this.lineStroke) + this.manualChild) +
|
|
12369
|
+
" L " + (this.x1 + 8) + " " + (this.y2 + 4 + this.lineStroke + this.manualChild) + " Z";
|
|
12370
|
+
}
|
|
12371
|
+
this.connectorPath.setAttribute("d", this.connectorLinePath);
|
|
12372
|
+
this.arrowlinePath.setAttribute("d", this.arrowPath);
|
|
12373
|
+
}
|
|
12374
|
+
return this.groupObject.outerHTML;
|
|
12443
12375
|
}
|
|
12444
12376
|
/**
|
|
12445
12377
|
* @param {IConnectorLineObject} data .
|
|
@@ -12505,10 +12437,10 @@ class ConnectorLine {
|
|
|
12505
12437
|
* @private
|
|
12506
12438
|
*/
|
|
12507
12439
|
getConnectorLineTooltipInnerTd(fromTaskName, fromPredecessorText, toTaskName, toPredecessorText) {
|
|
12508
|
-
let innerTd = '<tr id="fromPredecessor"><td >' + this.parent.localeObj.getConstant('from') + '</td><td> ';
|
|
12509
|
-
innerTd = innerTd + fromTaskName + ' </td><td> ' + this.parent.localeObj.getConstant(fromPredecessorText) + ' </td> </tr>';
|
|
12510
|
-
innerTd = innerTd + '<tr id="toPredecessor"><td>' + this.parent.localeObj.getConstant('to') + '</td><td> ' + toTaskName;
|
|
12511
|
-
innerTd = innerTd + ' </td><td> ' + this.parent.localeObj.getConstant(toPredecessorText) + ' </td></tr></tbody><table>';
|
|
12440
|
+
let innerTd = '<tr id="fromPredecessor"><td style="padding: 4px;">' + this.parent.localeObj.getConstant('from') + '</td><td> ';
|
|
12441
|
+
innerTd = innerTd + fromTaskName + ' </td><td style="padding: 2px;"> ' + this.parent.localeObj.getConstant(fromPredecessorText) + ' </td> </tr>';
|
|
12442
|
+
innerTd = innerTd + '<tr id="toPredecessor"><td style="padding: 4px;">' + this.parent.localeObj.getConstant('to') + '</td><td> ' + toTaskName;
|
|
12443
|
+
innerTd = innerTd + ' </td><td style="padding: 2px;"> ' + this.parent.localeObj.getConstant(toPredecessorText) + ' </td></tr></tbody><table>';
|
|
12512
12444
|
return innerTd;
|
|
12513
12445
|
}
|
|
12514
12446
|
/**
|
|
@@ -13018,7 +12950,7 @@ class Tooltip$1 {
|
|
|
13018
12950
|
* @param {IGanttData} ganttData .
|
|
13019
12951
|
* @param {Gantt} parent .
|
|
13020
12952
|
* @param {TooltipEventArgs} args .
|
|
13021
|
-
* @returns {string} .
|
|
12953
|
+
* @returns {string | Function} .
|
|
13022
12954
|
*/
|
|
13023
12955
|
getTooltipContent(elementType, ganttData, parent, args) {
|
|
13024
12956
|
let content$$1;
|
|
@@ -13050,8 +12982,11 @@ class Tooltip$1 {
|
|
|
13050
12982
|
let sDate = !isNullOrUndefined(milestoneStartDate) ? '<tr><td class = "e-gantt-tooltip-label"> Date</td><td>:</td>' +
|
|
13051
12983
|
'<td class = "e-gantt-tooltip-value">' +
|
|
13052
12984
|
sDateValue + '</td></tr>' : '';
|
|
13053
|
-
|
|
13054
|
-
|
|
12985
|
+
let contentTemp = function () {
|
|
12986
|
+
return '<table class = "e-gantt-tooltiptable"><tbody>' +
|
|
12987
|
+
taskName + sDate + '</tbody></table>';
|
|
12988
|
+
};
|
|
12989
|
+
content$$1 = initializeCSPTemplate(contentTemp);
|
|
13055
12990
|
break;
|
|
13056
12991
|
}
|
|
13057
12992
|
case 'taskbar':
|
|
@@ -13069,19 +13004,22 @@ class Tooltip$1 {
|
|
|
13069
13004
|
}
|
|
13070
13005
|
let startDate = data.startDate ? '<tr><td class = "e-gantt-tooltip-label">' +
|
|
13071
13006
|
this.parent.localeObj.getConstant(scheduledTask ? 'startDate' : 'subTasksStartDate') +
|
|
13072
|
-
'</td><td>:</td>' + '<td class = "e-gantt-tooltip-value"> ' + startDateValue + '</td></tr>' : '';
|
|
13007
|
+
'</td><td style="padding: 2px;">:</td>' + '<td class = "e-gantt-tooltip-value"> ' + startDateValue + '</td></tr>' : '';
|
|
13073
13008
|
let endDate = data.endDate ? '<tr><td class = "e-gantt-tooltip-label">' +
|
|
13074
13009
|
this.parent.localeObj.getConstant(scheduledTask ? 'endDate' : 'subTasksEndDate') +
|
|
13075
|
-
'</td><td>:</td>' + '<td class = "e-gantt-tooltip-value">' + endDateValue + '</td></tr>' : '';
|
|
13010
|
+
'</td><td style="padding: 2px;">:</td>' + '<td class = "e-gantt-tooltip-value">' + endDateValue + '</td></tr>' : '';
|
|
13076
13011
|
let duration = !isNullOrUndefined(data.duration) ? '<tr><td class = "e-gantt-tooltip-label">' +
|
|
13077
|
-
this.parent.localeObj.getConstant('duration') + '</td><td>:</td>' +
|
|
13012
|
+
this.parent.localeObj.getConstant('duration') + '</td><td style="padding: 2px;">:</td>' +
|
|
13078
13013
|
'<td class = "e-gantt-tooltip-value"> ' + durationValue +
|
|
13079
13014
|
'</td></tr>' : '';
|
|
13080
13015
|
let progress = !isNullOrUndefined(data.progress) ? '<tr><td class = "e-gantt-tooltip-label">' +
|
|
13081
|
-
this.parent.localeObj.getConstant('progress') + '</td><td>:</td><td>' + progressValue +
|
|
13016
|
+
this.parent.localeObj.getConstant('progress') + '</td><td style="padding: 2px;">:</td><td>' + progressValue +
|
|
13082
13017
|
'</td></tr>' : '';
|
|
13083
|
-
|
|
13084
|
-
|
|
13018
|
+
let contentTemp = function () {
|
|
13019
|
+
return '<table class = "e-gantt-tooltiptable"><tbody>' +
|
|
13020
|
+
taskName + startDate + endDate + duration + progress + '</tbody></table>';
|
|
13021
|
+
};
|
|
13022
|
+
content$$1 = initializeCSPTemplate(contentTemp);
|
|
13085
13023
|
break;
|
|
13086
13024
|
}
|
|
13087
13025
|
case 'baseline':
|
|
@@ -13092,13 +13030,16 @@ class Tooltip$1 {
|
|
|
13092
13030
|
baselineStartDateValue = typeof (baselineStartDateValue) === 'string' ? SanitizeHtmlHelper.sanitize(baselineStartDateValue) : baselineStartDateValue;
|
|
13093
13031
|
baselineEndDateValue = typeof (baselineEndDateValue) === 'string' ? SanitizeHtmlHelper.sanitize(baselineEndDateValue) : baselineEndDateValue;
|
|
13094
13032
|
}
|
|
13095
|
-
|
|
13096
|
-
|
|
13097
|
-
|
|
13098
|
-
|
|
13099
|
-
|
|
13100
|
-
|
|
13101
|
-
|
|
13033
|
+
let contentTemp = function () {
|
|
13034
|
+
return '<table class = "e-gantt-tooltiptable"><tbody>' +
|
|
13035
|
+
taskName + '<tr><td class = "e-gantt-tooltip-label">' +
|
|
13036
|
+
this.parent.localeObj.getConstant('baselineStartDate') + '</td><td>:</td>' + '<td class = "e-gantt-tooltip-value">' +
|
|
13037
|
+
baselineStartDateValue + '</td></tr><tr>' +
|
|
13038
|
+
'<td class = "e-gantt-tooltip-label">' + this.parent.localeObj.getConstant('baselineEndDate') +
|
|
13039
|
+
'</td><td>:</td><td class = "e-gantt-tooltip-value">' +
|
|
13040
|
+
baselineEndDateValue + '</td></tr></tbody></table>';
|
|
13041
|
+
};
|
|
13042
|
+
content$$1 = initializeCSPTemplate(contentTemp, this);
|
|
13102
13043
|
break;
|
|
13103
13044
|
}
|
|
13104
13045
|
case 'marker':
|
|
@@ -13110,8 +13051,11 @@ class Tooltip$1 {
|
|
|
13110
13051
|
markerLabel = typeof (markerLabel) === 'string' ? SanitizeHtmlHelper.sanitize(markerLabel) : markerLabel;
|
|
13111
13052
|
markerTooltipElementValue = typeof (markerTooltipElementValue) === 'string' ? SanitizeHtmlHelper.sanitize(markerTooltipElementValue) : markerTooltipElementValue;
|
|
13112
13053
|
}
|
|
13113
|
-
|
|
13114
|
-
|
|
13054
|
+
let contentTemp = function () {
|
|
13055
|
+
return '<table class = "e-gantt-tooltiptable"><tbody><tr><td>' +
|
|
13056
|
+
markerTooltipElementValue + '</td></tr><tr><td>' + (this.parent.disableHtmlEncode ? markerLabel.replace(/</g, "<").replace(/>/g, ">") : markerLabel) + '</td></tr></tbody></table>';
|
|
13057
|
+
};
|
|
13058
|
+
content$$1 = initializeCSPTemplate(contentTemp, this);
|
|
13115
13059
|
break;
|
|
13116
13060
|
}
|
|
13117
13061
|
case 'connectorLine':
|
|
@@ -13130,16 +13074,19 @@ class Tooltip$1 {
|
|
|
13130
13074
|
linkTextValue = typeof (linkTextValue) === 'string' ? SanitizeHtmlHelper.sanitize(linkTextValue) : linkTextValue;
|
|
13131
13075
|
offsetStringValue = typeof (offsetStringValue) === 'string' ? SanitizeHtmlHelper.sanitize(offsetStringValue) : offsetStringValue;
|
|
13132
13076
|
}
|
|
13133
|
-
|
|
13134
|
-
|
|
13135
|
-
|
|
13136
|
-
|
|
13137
|
-
|
|
13138
|
-
|
|
13139
|
-
|
|
13140
|
-
|
|
13141
|
-
|
|
13142
|
-
|
|
13077
|
+
let contentTemp = function () {
|
|
13078
|
+
return '<table class = "e-gantt-tooltiptable"><tbody><tr><td class = "e-gantt-tooltip-label">' +
|
|
13079
|
+
this.parent.localeObj.getConstant('from') + '</td><td>:</td>' +
|
|
13080
|
+
'<td class = "e-gantt-tooltip-value">' + (this.parent.disableHtmlEncode ? fromNameValue.replace(/</g, "<").replace(/>/g, ">") : fromNameValue) + ' (' +
|
|
13081
|
+
(this.parent.disableHtmlEncode ? (typeof (fromIdValue) === 'string' ? fromIdValue.replace(/</g, "<").replace(/>/g, ">") : fromIdValue) : fromIdValue) + ')' + '</td></tr><tr><td class = "e-gantt-tooltip-label">' +
|
|
13082
|
+
this.parent.localeObj.getConstant('to') + '</td><td>:</td>' + '<td class = "e-gantt-tooltip-value">' +
|
|
13083
|
+
(this.parent.disableHtmlEncode ? toNameValue.replace(/</g, "<").replace(/>/g, ">") : toNameValue) + ' (' + toIdValue + ')' + '</td></tr><tr><td class = "e-gantt-tooltip-label">' + this.parent.localeObj.getConstant('taskLink') +
|
|
13084
|
+
'</td><td>:</td><td class = "e-gantt-tooltip-value"> ' + linkTextValue +
|
|
13085
|
+
'</td></tr><tr><td class = "e-gantt-tooltip-label">' + this.parent.localeObj.getConstant('lag') +
|
|
13086
|
+
'</td><td>:</td><td class = "e-gantt-tooltip-value">' +
|
|
13087
|
+
offsetStringValue + '</td></tr></tbody></table>';
|
|
13088
|
+
};
|
|
13089
|
+
content$$1 = initializeCSPTemplate(contentTemp, this);
|
|
13143
13090
|
break;
|
|
13144
13091
|
}
|
|
13145
13092
|
case 'indicator':
|
|
@@ -13148,7 +13095,10 @@ class Tooltip$1 {
|
|
|
13148
13095
|
if (this.parent.enableHtmlSanitizer && typeof (titleValue) === 'string') {
|
|
13149
13096
|
titleValue = SanitizeHtmlHelper.sanitize(titleValue);
|
|
13150
13097
|
}
|
|
13151
|
-
|
|
13098
|
+
let contentTemp = function () {
|
|
13099
|
+
return '<table class = "e-gantt-tooltiptable"><tbody><tr>' + titleValue + '</tr></tbody></table>';
|
|
13100
|
+
};
|
|
13101
|
+
content$$1 = initializeCSPTemplate(contentTemp);
|
|
13152
13102
|
}
|
|
13153
13103
|
break;
|
|
13154
13104
|
case 'timeline':
|
|
@@ -13156,7 +13106,10 @@ class Tooltip$1 {
|
|
|
13156
13106
|
if (this.parent.enableHtmlSanitizer && typeof (timlineTitleValue) === 'string') {
|
|
13157
13107
|
timlineTitleValue = SanitizeHtmlHelper.sanitize(timlineTitleValue);
|
|
13158
13108
|
}
|
|
13159
|
-
|
|
13109
|
+
let contentTemp = function () {
|
|
13110
|
+
return '<table class = "e-gantt-tooltiptable"><tbody><tr>' + timlineTitleValue + '</tr></tbody></table>';
|
|
13111
|
+
};
|
|
13112
|
+
content$$1 = initializeCSPTemplate(contentTemp);
|
|
13160
13113
|
break;
|
|
13161
13114
|
case 'manualtaskbar':
|
|
13162
13115
|
{
|
|
@@ -13188,8 +13141,11 @@ class Tooltip$1 {
|
|
|
13188
13141
|
let manualEndDate = data.endDate ? '<tr><td class = "e-gantt-tooltip-label">' +
|
|
13189
13142
|
this.parent.localeObj.getConstant('endDate') + '</td><td>:</td>' + '<td class = "e-gantt-tooltip-value">' +
|
|
13190
13143
|
manualEndDateValue + '</td></tr>' : '';
|
|
13191
|
-
|
|
13192
|
-
|
|
13144
|
+
let contentTemp = function () {
|
|
13145
|
+
return '<table class = "e-gantt-tooltiptable"><tbody>' +
|
|
13146
|
+
taskName + manualStartDate + autoStartDate + manualEndDate + autoEndDate + durationValue + '</tbody></table>';
|
|
13147
|
+
};
|
|
13148
|
+
content$$1 = initializeCSPTemplate(contentTemp);
|
|
13193
13149
|
break;
|
|
13194
13150
|
}
|
|
13195
13151
|
case 'manualmilestone':
|
|
@@ -13211,8 +13167,11 @@ class Tooltip$1 {
|
|
|
13211
13167
|
let date = '<tr><td class = "e-gantt-tooltip-label"> Date</td><td>:</td>' +
|
|
13212
13168
|
'<td class = "e-gantt-tooltip-value">' +
|
|
13213
13169
|
dateValue + '</tr>';
|
|
13214
|
-
|
|
13215
|
-
|
|
13170
|
+
let contentTemp = function () {
|
|
13171
|
+
return '<table class = "e-gantt-tooltiptable"><tbody>' +
|
|
13172
|
+
taskName + date + autoStart + autoEnd + '</tbody></table>';
|
|
13173
|
+
};
|
|
13174
|
+
content$$1 = initializeCSPTemplate(contentTemp);
|
|
13216
13175
|
break;
|
|
13217
13176
|
}
|
|
13218
13177
|
}
|
|
@@ -13238,7 +13197,7 @@ class Tooltip$1 {
|
|
|
13238
13197
|
* @private
|
|
13239
13198
|
*/
|
|
13240
13199
|
getPredecessorTooltipData(args) {
|
|
13241
|
-
let predeceesorParent = args.target.
|
|
13200
|
+
let predeceesorParent = args.target.id;
|
|
13242
13201
|
if (this.parent.enableHtmlSanitizer && typeof (predeceesorParent) === 'string') {
|
|
13243
13202
|
predeceesorParent = SanitizeHtmlHelper.sanitize(predeceesorParent);
|
|
13244
13203
|
}
|
|
@@ -13271,7 +13230,7 @@ class Tooltip$1 {
|
|
|
13271
13230
|
/**
|
|
13272
13231
|
* To compile template string.
|
|
13273
13232
|
*
|
|
13274
|
-
* @param {string} template .
|
|
13233
|
+
* @param {string | Function} template .
|
|
13275
13234
|
* @param {Gantt} parent .
|
|
13276
13235
|
* @param {IGanttData|PredecessorTooltip} data .
|
|
13277
13236
|
* @param {string} propName .
|
|
@@ -14333,19 +14292,17 @@ let Gantt = class Gantt extends Component {
|
|
|
14333
14292
|
this.notify('initPredessorDialog', {});
|
|
14334
14293
|
}
|
|
14335
14294
|
this.splitterModule.updateSplitterPosition();
|
|
14336
|
-
if (this.gridLines === 'Vertical' || this.gridLines === 'Both') {
|
|
14337
|
-
|
|
14338
|
-
}
|
|
14295
|
+
// if (this.gridLines === 'Vertical' || this.gridLines === 'Both') {
|
|
14296
|
+
// this.renderChartVerticalLines();
|
|
14297
|
+
// }
|
|
14339
14298
|
}
|
|
14340
14299
|
removeCriticalPathStyles() {
|
|
14341
14300
|
const ganttChartElement = this.ganttChartModule.chartElement;
|
|
14342
14301
|
removeClass(ganttChartElement.querySelectorAll('.e-gantt-child-taskbar-inner-div'), criticalChildTaskBarInnerDiv);
|
|
14343
14302
|
removeClass(ganttChartElement.querySelectorAll('.e-gantt-child-progressbar-inner-div'), criticalChildProgressBarInnerDiv);
|
|
14344
|
-
removeClass(ganttChartElement.querySelectorAll('.e-milestone
|
|
14345
|
-
removeClass(
|
|
14346
|
-
removeClass(this.element.querySelectorAll('.e-line'),
|
|
14347
|
-
removeClass(this.element.querySelectorAll('.e-connector-line-right-arrow'), criticalConnectorLineRightArrow);
|
|
14348
|
-
removeClass(this.element.querySelectorAll('.e-connector-line-left-arrow'), criticalConnectorLineLeftArrow);
|
|
14303
|
+
removeClass(ganttChartElement.querySelectorAll('.e-critical-milestone'), criticalMilestone);
|
|
14304
|
+
removeClass(this.element.querySelectorAll('.e-connector-line'), criticalConnectorLineSVG);
|
|
14305
|
+
removeClass(this.element.querySelectorAll('.e-connector-line-arrow'), criticalConnectorArrowSVG);
|
|
14349
14306
|
}
|
|
14350
14307
|
wireEvents() {
|
|
14351
14308
|
if (this.allowKeyboard) {
|
|
@@ -14357,6 +14314,15 @@ let Gantt = class Gantt extends Component {
|
|
|
14357
14314
|
}
|
|
14358
14315
|
/* eslint-disable-next-line @typescript-eslint/no-explicit-any */
|
|
14359
14316
|
EventHandler.add(window, 'resize', this.windowResize, this);
|
|
14317
|
+
EventHandler.add(document.body, 'keydown', this.keyDownHandler, this);
|
|
14318
|
+
}
|
|
14319
|
+
keyDownHandler(e) {
|
|
14320
|
+
if (e.altKey) {
|
|
14321
|
+
if (e.keyCode === 74) { //alt j
|
|
14322
|
+
this.ganttChartModule.manageFocus(this.treeGrid.element.childNodes[1], 'remove', false);
|
|
14323
|
+
this.ganttChartModule.manageFocus(this.element, 'add', false);
|
|
14324
|
+
}
|
|
14325
|
+
}
|
|
14360
14326
|
}
|
|
14361
14327
|
/**
|
|
14362
14328
|
* Method trigger while user perform window resize.
|
|
@@ -15457,9 +15423,9 @@ let Gantt = class Gantt extends Component {
|
|
|
15457
15423
|
if (!this.element.contains(this.chartVerticalLineContainer)) {
|
|
15458
15424
|
this.chartVerticalLineContainer = createElement('div', {
|
|
15459
15425
|
id: this.element.id + 'line-container',
|
|
15460
|
-
styles: 'position:absolute;height:100%;
|
|
15426
|
+
styles: 'position:absolute;height:100%;'
|
|
15461
15427
|
});
|
|
15462
|
-
this.ganttChartModule.chartBodyContent.
|
|
15428
|
+
this.ganttChartModule.chartBodyContent.insertBefore(this.chartVerticalLineContainer, this.ganttChartModule.chartBodyContent.lastChild);
|
|
15463
15429
|
}
|
|
15464
15430
|
this.chartVerticalLineContainer.innerHTML = '';
|
|
15465
15431
|
let headerTable = this.element.getElementsByClassName('e-timeline-header-table-container')[1];
|
|
@@ -15848,9 +15814,6 @@ let Gantt = class Gantt extends Component {
|
|
|
15848
15814
|
this.timelineModule.updateChartByNewTimeline();
|
|
15849
15815
|
this.ganttChartModule.chartBodyContent.style.width = formatUnit(this.timelineModule.totalTimelineWidth);
|
|
15850
15816
|
this.ganttChartModule.updateLastRowBottomWidth();
|
|
15851
|
-
if (this.gridLines === 'Vertical' || this.gridLines === 'Both') {
|
|
15852
|
-
this.renderChartVerticalLines();
|
|
15853
|
-
}
|
|
15854
15817
|
if (this.taskFields.dependency) {
|
|
15855
15818
|
this.ganttChartModule.reRenderConnectorLines();
|
|
15856
15819
|
}
|
|
@@ -18080,23 +18043,23 @@ class EditTooltip {
|
|
|
18080
18043
|
let duration;
|
|
18081
18044
|
if (!isNullOrUndefined(editRecord.startDate)) {
|
|
18082
18045
|
startDate = '<tr><td class = "e-gantt-tooltip-label">' + this.parent.localeObj.getConstant('startDate') +
|
|
18083
|
-
'</td><td>:</td><td class = "e-gantt-tooltip-value">' +
|
|
18046
|
+
'</td><td style="padding: 2px;">:</td><td class = "e-gantt-tooltip-value">' +
|
|
18084
18047
|
instance.formatDate(editRecord.startDate, { format: this.parent.getDateFormat() }) + '</td></tr>';
|
|
18085
18048
|
}
|
|
18086
18049
|
if (!isNullOrUndefined(editRecord.endDate)) {
|
|
18087
18050
|
endDate = '<tr><td class = "e-gantt-tooltip-label">' + this.parent.localeObj.getConstant('endDate') +
|
|
18088
|
-
'</td><td>:</td><td class = "e-gantt-tooltip-value">' +
|
|
18051
|
+
'</td><td style="padding: 2px;">:</td><td class = "e-gantt-tooltip-value">' +
|
|
18089
18052
|
instance.formatDate(editRecord.endDate, { format: this.parent.getDateFormat() }) + '</td></tr>';
|
|
18090
18053
|
}
|
|
18091
18054
|
if (!isNullOrUndefined(editRecord.duration)) {
|
|
18092
18055
|
duration = '<tr><td class = "e-gantt-tooltip-label">' + this.parent.localeObj.getConstant('duration') +
|
|
18093
|
-
'</td><td>:</td><td class = "e-gantt-tooltip-value">' +
|
|
18056
|
+
'</td><td style="padding: 2px;">:</td><td class = "e-gantt-tooltip-value">' +
|
|
18094
18057
|
this.parent.getDurationString(editRecord.duration, editRecord.durationUnit) + '</td></tr>';
|
|
18095
18058
|
}
|
|
18096
18059
|
switch (this.taskbarEdit.taskBarEditAction) {
|
|
18097
18060
|
case 'ProgressResizing':
|
|
18098
18061
|
const progress = '<tr><td class = "e-gantt-tooltip-label">' + this.parent.localeObj.getConstant('progress') +
|
|
18099
|
-
'</td><td>:</td><td class = "e-gantt-tooltip-value">' + editRecord.progress + '</td></tr>';
|
|
18062
|
+
'</td><td style="padding: 2px;">:</td><td class = "e-gantt-tooltip-value">' + editRecord.progress + '</td></tr>';
|
|
18100
18063
|
tooltipString = '<table class = "e-gantt-tooltiptable"><tbody>' +
|
|
18101
18064
|
progress + '</tbody></table>';
|
|
18102
18065
|
break;
|
|
@@ -18353,8 +18316,7 @@ class TaskbarEdit extends DateProcessor {
|
|
|
18353
18316
|
|| target.classList.contains(manualParentTaskBar)) {
|
|
18354
18317
|
element = parentsUntil$1(target, manualParentMainContainer);
|
|
18355
18318
|
}
|
|
18356
|
-
else if (target.classList.contains(
|
|
18357
|
-
|| target.classList.contains(manualParentMilestone)) {
|
|
18319
|
+
else if (target.classList.contains(manualParentMilestone)) {
|
|
18358
18320
|
element = parentsUntil$1(target, manualParentMilestone);
|
|
18359
18321
|
}
|
|
18360
18322
|
else {
|
|
@@ -18370,18 +18332,60 @@ class TaskbarEdit extends DateProcessor {
|
|
|
18370
18332
|
if (this.parent.editSettings.allowTaskbarEditing && element) {
|
|
18371
18333
|
this.showHideTaskBarEditingElements(element, this.taskBarEditElement);
|
|
18372
18334
|
this.editElement = element;
|
|
18373
|
-
this.
|
|
18374
|
-
const index = this.
|
|
18335
|
+
this.realTaskbarElement = this.editElement;
|
|
18336
|
+
const index = this.editElement.getAttribute('data-segment-index');
|
|
18375
18337
|
if (!isNullOrUndefined(index)) {
|
|
18376
18338
|
this.segmentIndex = Number(index);
|
|
18377
18339
|
}
|
|
18378
18340
|
else {
|
|
18379
18341
|
this.segmentIndex = -1;
|
|
18380
18342
|
}
|
|
18381
|
-
this.taskBarEditRecord = this.parent.ganttChartModule.getRecordByTaskBar(this.
|
|
18343
|
+
this.taskBarEditRecord = this.parent.ganttChartModule.getRecordByTaskBar(this.editElement);
|
|
18382
18344
|
if (e.type === 'mousedown' || e.type === 'touchstart' || e.type === 'click') {
|
|
18383
|
-
this.roundOffDuration = true;
|
|
18384
18345
|
this.taskBarEditAction = this.getTaskBarAction(e);
|
|
18346
|
+
const index = this.editElement.getAttribute('data-segment-index');
|
|
18347
|
+
const currentRecord = this.parent.ganttChartModule.getRecordByTaskBar(element);
|
|
18348
|
+
const ganttprop = currentRecord.ganttProperties;
|
|
18349
|
+
const parentleft = this.editElement.parentElement.offsetLeft;
|
|
18350
|
+
this.currentData = currentRecord;
|
|
18351
|
+
const resizeElement = createElement('div', { styles: 'height:100%;border-style:dashed;border-bottom:none;border-top:none;border-width:1px;position:absolute;z-index:10000' });
|
|
18352
|
+
addClass([resizeElement], 'e-taskbar-resize-div');
|
|
18353
|
+
resizeElement.style.setProperty("width", ganttprop.width + "px");
|
|
18354
|
+
const currentindex = this.editElement.getAttribute('data-segment-index');
|
|
18355
|
+
resizeElement.style.setProperty("left", ((!isNullOrUndefined(ganttprop.segments) ? parentleft + ganttprop.segments[Number(currentindex)].left + "px" : (ganttprop.left) + "px")));
|
|
18356
|
+
const resizeTable = this.parent.createElement('table');
|
|
18357
|
+
const resizetableBody = this.parent.createElement("tbody");
|
|
18358
|
+
resizetableBody.appendChild(resizeElement);
|
|
18359
|
+
resizeTable.appendChild(resizetableBody);
|
|
18360
|
+
var Check = this.parent.ganttChartModule.chartBodyContainer.querySelector('.e-clone-taskbar');
|
|
18361
|
+
let createTable = null;
|
|
18362
|
+
if ((this.taskBarEditAction === 'ChildDrag' || this.taskBarEditAction === 'LeftResizing') && !isNullOrUndefined(index) && !isNullOrUndefined(index) ? Number(index) === 0 : false) {
|
|
18363
|
+
var cloneTaskBar = this.editElement.parentElement.cloneNode(true);
|
|
18364
|
+
}
|
|
18365
|
+
else {
|
|
18366
|
+
var cloneTaskBar = this.editElement.cloneNode(true);
|
|
18367
|
+
}
|
|
18368
|
+
if (!Check) {
|
|
18369
|
+
addClass([cloneTaskBar], 'e-clone-taskbar');
|
|
18370
|
+
cloneTaskBar.style.setProperty("position", "absolute");
|
|
18371
|
+
cloneTaskBar.style.setProperty("top", 0 + "px");
|
|
18372
|
+
createTable = this.parent.createElement('table');
|
|
18373
|
+
const tableBody = this.parent.createElement("tbody");
|
|
18374
|
+
tableBody.appendChild(cloneTaskBar);
|
|
18375
|
+
createTable.appendChild(tableBody);
|
|
18376
|
+
}
|
|
18377
|
+
if ((this.taskBarEditAction === 'ChildDrag' || this.taskBarEditAction === 'LeftResizing') && !isNullOrUndefined(index) && !isNullOrUndefined(index) ? Number(index) === 0 : false) {
|
|
18378
|
+
const segmentedTasks = cloneTaskBar.getElementsByClassName('e-segmented-taskbar');
|
|
18379
|
+
this.cloneTaskbarElement = segmentedTasks[Number(index)];
|
|
18380
|
+
}
|
|
18381
|
+
else {
|
|
18382
|
+
this.cloneTaskbarElement = cloneTaskBar;
|
|
18383
|
+
}
|
|
18384
|
+
this.taskBarEditElement = this.cloneTaskbarElement;
|
|
18385
|
+
this.taskbarElement = createTable;
|
|
18386
|
+
this.taskbarResizer = resizeTable;
|
|
18387
|
+
this.currentIndex = index;
|
|
18388
|
+
this.roundOffDuration = true;
|
|
18385
18389
|
if ((this.taskBarEditAction === 'ConnectorPointLeftDrag' || this.taskBarEditAction === 'ConnectorPointRightDrag') &&
|
|
18386
18390
|
isNullOrUndefined(this.parent.taskFields.dependency)) {
|
|
18387
18391
|
this.taskBarEditAction = null;
|
|
@@ -18412,7 +18416,7 @@ class TaskbarEdit extends DateProcessor {
|
|
|
18412
18416
|
this.initPublicProp();
|
|
18413
18417
|
}
|
|
18414
18418
|
else {
|
|
18415
|
-
this.showHideTaskBarEditingElements(element, this.
|
|
18419
|
+
this.showHideTaskBarEditingElements(element, this.editElement);
|
|
18416
18420
|
}
|
|
18417
18421
|
}
|
|
18418
18422
|
}
|
|
@@ -18447,9 +18451,10 @@ class TaskbarEdit extends DateProcessor {
|
|
|
18447
18451
|
addClass([element.querySelector('.' + taskBarLeftResizer)], [leftResizeGripper]);
|
|
18448
18452
|
addClass([element.querySelector('.' + taskBarRightResizer)], [rightResizeGripper]);
|
|
18449
18453
|
if (isShowProgressResizer) {
|
|
18450
|
-
const
|
|
18451
|
-
if (
|
|
18452
|
-
addClass([
|
|
18454
|
+
const progressElement = element.querySelector('.' + childProgressResizer);
|
|
18455
|
+
if (!isNullOrUndefined(progressElement)) {
|
|
18456
|
+
addClass([progressElement], [progressResizeGripper]);
|
|
18457
|
+
progressElement.style.top = '3px';
|
|
18453
18458
|
}
|
|
18454
18459
|
}
|
|
18455
18460
|
}
|
|
@@ -18530,9 +18535,6 @@ class TaskbarEdit extends DateProcessor {
|
|
|
18530
18535
|
}
|
|
18531
18536
|
else if (mouseDownElement.classList.contains(manualParentTaskBar) ||
|
|
18532
18537
|
mouseDownElement.classList.contains(manualParentMainContainer) ||
|
|
18533
|
-
mouseDownElement.classList.contains(manualParentMilestone) ||
|
|
18534
|
-
mouseDownElement.classList.contains(manualParentMilestoneTop) ||
|
|
18535
|
-
mouseDownElement.classList.contains(manualParentMilestoneBottom) ||
|
|
18536
18538
|
mouseDownElement.classList.contains(manualParentMilestone)) {
|
|
18537
18539
|
action = 'ManualParentDrag';
|
|
18538
18540
|
}
|
|
@@ -18628,6 +18630,21 @@ class TaskbarEdit extends DateProcessor {
|
|
|
18628
18630
|
this.dragMouseLeave = false;
|
|
18629
18631
|
this.isMouseDragCheck();
|
|
18630
18632
|
if (this.isMouseDragged && this.taskBarEditAction) {
|
|
18633
|
+
if (!isNullOrUndefined(this.taskbarElement) && !isNullOrUndefined(this.editElement) && (this.taskBarEditAction !== "ConnectorPointRightDrag" && this.taskBarEditAction !== "ConnectorPointLeftDrag") && !(this.parent.viewType === 'ResourceView' && this.currentData.hasChildRecords)) {
|
|
18634
|
+
var currentElement = this.editElement.parentElement;
|
|
18635
|
+
currentElement.style.setProperty("position", "absolute");
|
|
18636
|
+
if ((this.taskBarEditAction === 'ChildDrag' || this.taskBarEditAction === 'LeftResizing') && !isNullOrUndefined(this.currentIndex) && !isNullOrUndefined(this.currentIndex) ? Number(this.currentIndex) === 0 : false) {
|
|
18637
|
+
this.taskbarElement.childNodes[0].childNodes[0].style.setProperty("top", currentElement.parentElement.offsetTop + "px");
|
|
18638
|
+
currentElement.parentElement.appendChild(this.taskbarElement);
|
|
18639
|
+
}
|
|
18640
|
+
else {
|
|
18641
|
+
currentElement.appendChild(this.taskbarElement);
|
|
18642
|
+
}
|
|
18643
|
+
if (this.taskBarEditAction !== 'ProgressResizing') {
|
|
18644
|
+
const rootElement = this.parent.ganttChartModule.chartBodyContainer.querySelectorAll(".e-chart-rows-container");
|
|
18645
|
+
rootElement[0].appendChild(this.taskbarResizer);
|
|
18646
|
+
}
|
|
18647
|
+
}
|
|
18631
18648
|
const args = {
|
|
18632
18649
|
cancel: false,
|
|
18633
18650
|
requestType: 'taskbarediting',
|
|
@@ -18733,16 +18750,6 @@ class TaskbarEdit extends DateProcessor {
|
|
|
18733
18750
|
merge(this.taskBarEditRecord.ganttProperties, arg.previousData);
|
|
18734
18751
|
}
|
|
18735
18752
|
});
|
|
18736
|
-
this.parent.flatData.map((data) => {
|
|
18737
|
-
if ((!isNullOrUndefined(this.taskBarEditRecord.parentItem)) && data.ganttProperties.taskId === this.taskBarEditRecord.parentItem.taskId) {
|
|
18738
|
-
data.childRecords.map((s) => {
|
|
18739
|
-
if (isNullOrUndefined(s.ganttProperties.startDate) || isNullOrUndefined(s.ganttProperties.endDate) ||
|
|
18740
|
-
isNullOrUndefined(s.ganttProperties.duration)) {
|
|
18741
|
-
this.parent.dataOperation.updateGanttData();
|
|
18742
|
-
}
|
|
18743
|
-
});
|
|
18744
|
-
}
|
|
18745
|
-
});
|
|
18746
18753
|
}
|
|
18747
18754
|
}
|
|
18748
18755
|
/**
|
|
@@ -19547,6 +19554,15 @@ class TaskbarEdit extends DateProcessor {
|
|
|
19547
19554
|
* @private
|
|
19548
19555
|
*/
|
|
19549
19556
|
setItemPosition() {
|
|
19557
|
+
if (!isNullOrUndefined(this.editElement)) {
|
|
19558
|
+
var currentElement = this.editElement.parentElement;
|
|
19559
|
+
if (this.parent.viewType == 'ResourceView' && this.parent.allowTaskbarDragAndDrop && this.taskBarEditAction === 'ChildDrag') {
|
|
19560
|
+
currentElement.style.position = null;
|
|
19561
|
+
}
|
|
19562
|
+
else {
|
|
19563
|
+
currentElement.style.setProperty("position", "absolute");
|
|
19564
|
+
}
|
|
19565
|
+
}
|
|
19550
19566
|
const item = this.taskBarEditRecord.ganttProperties;
|
|
19551
19567
|
let position = this.parent.enableRtl ? "right" : "left";
|
|
19552
19568
|
const segment = !isNullOrUndefined(item.segments) ? item.segments[this.segmentIndex] : null;
|
|
@@ -19556,13 +19572,10 @@ class TaskbarEdit extends DateProcessor {
|
|
|
19556
19572
|
if (!isNullOrUndefined(segment)) {
|
|
19557
19573
|
rightResizer = this.parent.isAdaptive ? (segment.width - 2) : (segment.width - 10);
|
|
19558
19574
|
}
|
|
19559
|
-
|
|
19575
|
+
this.taskBarEditElement.style.setProperty("opacity", '.75');
|
|
19576
|
+
const taskBarMainContainer$$1 = (!this.taskBarEditElement.classList.contains(taskBarMainContainer)) ? ((this.taskBarEditAction === 'ChildDrag' || this.taskBarEditAction === 'LeftResizing') && this.segmentIndex === 0) ? this.taskBarEditElement.parentElement : closest(this.taskBarEditElement, 'tr.' + chartRow)
|
|
19560
19577
|
.querySelector('.' + taskBarMainContainer) : this.taskBarEditElement;
|
|
19561
19578
|
const segmentedTaskBarContainer = this.taskBarEditElement.classList.contains('e-segmented-taskbar');
|
|
19562
|
-
const leftLabelContainer$$1 = closest(this.taskBarEditElement, 'tr.' + chartRow)
|
|
19563
|
-
.querySelector('.' + leftLabelContainer);
|
|
19564
|
-
const rightLabelContainer$$1 = closest(this.taskBarEditElement, 'tr.' + chartRow)
|
|
19565
|
-
.querySelector('.' + rightLabelContainer);
|
|
19566
19579
|
const traceChildProgressBar$$1 = this.taskBarEditElement.querySelector('.' + traceChildProgressBar);
|
|
19567
19580
|
const traceChildTaskBar$$1 = this.taskBarEditElement.querySelector('.' + traceChildTaskBar);
|
|
19568
19581
|
const childProgressResizer$$1 = this.taskBarEditElement.querySelector('.' + childProgressResizer);
|
|
@@ -19574,34 +19587,45 @@ class TaskbarEdit extends DateProcessor {
|
|
|
19574
19587
|
const manualTaskbar = this.taskBarEditElement.querySelector('.' + manualParentTaskBar);
|
|
19575
19588
|
const manualParentRight = this.taskBarEditElement.querySelector('.' + manualParentRightResizer);
|
|
19576
19589
|
const manualParentLeft = this.taskBarEditElement.querySelector('.' + manualParentLeftResizer);
|
|
19590
|
+
const resizeLine = this.parent.ganttChartModule.chartBodyContainer.querySelector('.e-taskbar-resize-div');
|
|
19577
19591
|
if (this.taskBarEditAction !== 'ConnectorPointRightDrag' &&
|
|
19578
19592
|
this.taskBarEditAction !== 'ConnectorPointLeftDrag') {
|
|
19579
19593
|
if (this.taskBarEditAction !== 'ParentResizing' && this.taskBarEditAction !== 'ManualParentDrag') {
|
|
19580
19594
|
if (segmentedTaskBarContainer && !isNullOrUndefined(item.segments)
|
|
19581
19595
|
&& (this.taskBarEditAction === 'RightResizing' || this.segmentIndex !== 0)) {
|
|
19596
|
+
if (!isNullOrUndefined(resizeLine)) {
|
|
19597
|
+
resizeLine.style.width = (segment.width) + "px";
|
|
19598
|
+
}
|
|
19582
19599
|
this.taskBarEditElement.style.width = (segment.width) + 'px';
|
|
19583
19600
|
if (this.parent.enableRtl) {
|
|
19584
19601
|
this.taskBarEditElement.style.right = (segment.left) + 'px';
|
|
19585
19602
|
}
|
|
19586
19603
|
else {
|
|
19587
19604
|
this.taskBarEditElement.style.left = (segment.left) + 'px';
|
|
19605
|
+
if (!isNullOrUndefined(resizeLine)) {
|
|
19606
|
+
resizeLine.style.left = (segment.left + this.editElement.parentElement.offsetLeft) + "px";
|
|
19607
|
+
}
|
|
19588
19608
|
}
|
|
19589
19609
|
}
|
|
19590
|
-
taskBarMainContainer$$1.style.width = (width) + 'px';
|
|
19591
|
-
leftLabelContainer$$1.style.width = (item.left) + 'px';
|
|
19592
19610
|
taskBarMainContainer$$1.style.setProperty(position, (item.left) + 'px');
|
|
19611
|
+
taskBarMainContainer$$1.style.width = (width) + 'px';
|
|
19593
19612
|
if (this.parent.viewType === 'ResourceView' && this.parent.allowTaskbarDragAndDrop && this.parent.rowDragAndDropModule &&
|
|
19594
19613
|
(this.taskBarEditAction === 'ChildDrag' || this.taskBarEditAction === 'MilestoneDrag')) {
|
|
19595
19614
|
taskBarMainContainer$$1.style.setProperty('top', (this.topValue) + 'px');
|
|
19596
19615
|
taskBarMainContainer$$1.style.zIndex = '4';
|
|
19597
19616
|
}
|
|
19598
19617
|
if (this.taskBarEditAction === 'LeftResizing' && this.segmentIndex === 0) {
|
|
19618
|
+
this.taskBarEditElement.style.setProperty("opacity", '.75');
|
|
19599
19619
|
const parent = this.taskBarEditElement.parentElement;
|
|
19600
19620
|
const segmentedTasks = parent.getElementsByClassName('e-segmented-taskbar');
|
|
19601
19621
|
for (let i = 0; i < item.segments.length; i++) {
|
|
19602
19622
|
const segment = item.segments[i];
|
|
19603
19623
|
const segmentElement = segmentedTasks[i];
|
|
19604
19624
|
segmentElement.style.width = (segment.width) + 'px';
|
|
19625
|
+
if (i === 0) {
|
|
19626
|
+
resizeLine.style.width = (segment.width) + "px";
|
|
19627
|
+
resizeLine.style.left = (segment.left + item.left) + "px";
|
|
19628
|
+
}
|
|
19605
19629
|
if (this.parent.enableRtl) {
|
|
19606
19630
|
segmentElement.style.right = (segment.left) + 'px';
|
|
19607
19631
|
}
|
|
@@ -19610,8 +19634,10 @@ class TaskbarEdit extends DateProcessor {
|
|
|
19610
19634
|
}
|
|
19611
19635
|
}
|
|
19612
19636
|
}
|
|
19613
|
-
if (
|
|
19614
|
-
|
|
19637
|
+
if (this.taskBarEditAction === 'ChildDrag' && this.segmentIndex === 0) {
|
|
19638
|
+
resizeLine.style.width = (width) + "px";
|
|
19639
|
+
resizeLine.style.left = (item.left) + "px";
|
|
19640
|
+
taskBarMainContainer$$1.style.setProperty("opacity", '.75');
|
|
19615
19641
|
}
|
|
19616
19642
|
}
|
|
19617
19643
|
if (traceConnectorPointRight) {
|
|
@@ -19624,10 +19650,8 @@ class TaskbarEdit extends DateProcessor {
|
|
|
19624
19650
|
}
|
|
19625
19651
|
if (this.taskBarEditAction === 'MilestoneDrag' || item.isMilestone) {
|
|
19626
19652
|
taskBarMainContainer$$1.style.setProperty(position, (item.left - (width / 2)) + 'px');
|
|
19627
|
-
|
|
19628
|
-
|
|
19629
|
-
rightLabelContainer$$1.style.setProperty(position, (item.left + (width / 2)) + 'px');
|
|
19630
|
-
}
|
|
19653
|
+
resizeLine.style.left = (item.left - (width / 2)) + 'px';
|
|
19654
|
+
resizeLine.style.width = (width) + "px";
|
|
19631
19655
|
}
|
|
19632
19656
|
else if (this.taskBarEditAction === 'ProgressResizing') {
|
|
19633
19657
|
if (this.segmentIndex === -1) {
|
|
@@ -19650,6 +19674,7 @@ class TaskbarEdit extends DateProcessor {
|
|
|
19650
19674
|
}
|
|
19651
19675
|
}
|
|
19652
19676
|
else if (this.taskBarEditAction === 'RightResizing' && !isNullOrUndefined(traceChildTaskBar$$1)) {
|
|
19677
|
+
resizeLine.style.width = (width) + 'px';
|
|
19653
19678
|
traceChildTaskBar$$1.style.width = (width) + 'px';
|
|
19654
19679
|
if (!isNullOrUndefined(traceChildProgressBar$$1)) {
|
|
19655
19680
|
traceChildProgressBar$$1.style.width = (item.progressWidth) + 'px';
|
|
@@ -19660,23 +19685,36 @@ class TaskbarEdit extends DateProcessor {
|
|
|
19660
19685
|
}
|
|
19661
19686
|
}
|
|
19662
19687
|
else if (this.taskBarEditAction === 'ParentDrag') {
|
|
19688
|
+
resizeLine.style.left = (item.left) + 'px';
|
|
19689
|
+
resizeLine.style.width = (width) + "px";
|
|
19690
|
+
resizeLine.style.width = (item.width) + 'px';
|
|
19663
19691
|
if (!isNullOrUndefined(traceParentTaskBar$$1)) {
|
|
19664
19692
|
traceParentTaskBar$$1.style.width = (width) + 'px';
|
|
19693
|
+
resizeLine.style.width = (item.width) + 'px';
|
|
19665
19694
|
}
|
|
19666
19695
|
if (!isNullOrUndefined(traceChildProgressBar$$1)) {
|
|
19667
19696
|
traceParentProgressBar$$1.style.width = (item.progressWidth) + 'px';
|
|
19668
19697
|
}
|
|
19669
19698
|
}
|
|
19670
19699
|
else if (this.taskBarEditAction === 'ParentResizing') {
|
|
19700
|
+
resizeLine.style.width = (item.width) + 'px';
|
|
19701
|
+
resizeLine.style.left = item.left + 'px';
|
|
19671
19702
|
manualParentTaskbar.style.width = manualTaskbar.style.width = (item.width) + 'px';
|
|
19672
19703
|
manualParentRight.style.setProperty(position, item.width - manualParentLeft.offsetLeft + 'px');
|
|
19673
19704
|
}
|
|
19674
19705
|
else if (this.taskBarEditAction === 'ManualParentDrag') {
|
|
19706
|
+
resizeLine.style.width = (item.width) + 'px';
|
|
19707
|
+
resizeLine.style.left = item.left + 'px';
|
|
19675
19708
|
manualParentTaskbar.style.setProperty(position, item.left - item.autoLeft + 'px');
|
|
19676
19709
|
}
|
|
19677
19710
|
else {
|
|
19678
19711
|
if (!isNullOrUndefined(traceChildTaskBar$$1) && !segmentedTaskBarContainer) {
|
|
19679
|
-
traceChildTaskBar$$1.style.width = (width) + 'px';
|
|
19712
|
+
traceChildTaskBar$$1.style.width = (item.width) + 'px';
|
|
19713
|
+
traceChildTaskBar$$1.style.left = (item.left) + 'px';
|
|
19714
|
+
this.taskBarEditElement.style.width = (item.width) + 'px';
|
|
19715
|
+
this.taskBarEditElement.style.left = (item.left) + "px";
|
|
19716
|
+
resizeLine.style.left = (item.left) + 'px';
|
|
19717
|
+
resizeLine.style.width = (item.width) + "px";
|
|
19680
19718
|
}
|
|
19681
19719
|
if (!isNullOrUndefined(traceChildProgressBar$$1)) {
|
|
19682
19720
|
taskBarRightResizer$$1.style.setProperty(position, rightResizer + 'px');
|
|
@@ -20072,21 +20110,21 @@ class TaskbarEdit extends DateProcessor {
|
|
|
20072
20110
|
if ((this.parent.virtualScrollModule && this.parent.enableVirtualization &&
|
|
20073
20111
|
!this.elementOffsetLeft) || !this.parent.enableVirtualization) {
|
|
20074
20112
|
if (!this.parent.allowParentDependency) {
|
|
20075
|
-
this.elementOffsetLeft = this.
|
|
20076
|
-
this.elementOffsetTop = this.
|
|
20113
|
+
this.elementOffsetLeft = this.realTaskbarElement.offsetLeft;
|
|
20114
|
+
this.elementOffsetTop = this.realTaskbarElement.parentElement.offsetTop + this.realTaskbarElement.offsetHeight / 3 + scrollTop;
|
|
20077
20115
|
}
|
|
20078
20116
|
else {
|
|
20079
20117
|
if (this.taskBarEditElement.children[0].classList.contains('e-manualparent-main-container')) {
|
|
20080
|
-
this.elementOffsetLeft = this.
|
|
20081
|
-
this.elementOffsetTop = ((this.
|
|
20118
|
+
this.elementOffsetLeft = this.realTaskbarElement.children[0]['offsetLeft'] + this.realTaskbarElement.offsetLeft;
|
|
20119
|
+
this.elementOffsetTop = ((this.realTaskbarElement.parentElement.offsetTop + this.realTaskbarElement.offsetHeight / 3 - 5) + this.taskBarEditElement.children[0]['offsetTop']) + scrollTop;
|
|
20082
20120
|
}
|
|
20083
20121
|
else {
|
|
20084
|
-
this.elementOffsetLeft = this.
|
|
20085
|
-
this.elementOffsetTop = this.
|
|
20122
|
+
this.elementOffsetLeft = this.realTaskbarElement.offsetLeft;
|
|
20123
|
+
this.elementOffsetTop = this.realTaskbarElement.parentElement.offsetTop + this.realTaskbarElement.offsetHeight / 3 + scrollTop;
|
|
20086
20124
|
}
|
|
20087
20125
|
}
|
|
20088
|
-
this.elementOffsetWidth = this.
|
|
20089
|
-
this.elementOffsetHeight = this.
|
|
20126
|
+
this.elementOffsetWidth = this.realTaskbarElement.offsetWidth;
|
|
20127
|
+
this.elementOffsetHeight = this.realTaskbarElement.offsetHeight;
|
|
20090
20128
|
}
|
|
20091
20129
|
this.showHideTaskBarEditingElements(element, this.highlightedSecondElement, true);
|
|
20092
20130
|
}
|
|
@@ -22621,10 +22659,11 @@ class ConnectorLineEdit {
|
|
|
22621
22659
|
* @private
|
|
22622
22660
|
*/
|
|
22623
22661
|
getConnectorLineHoverElement(target) {
|
|
22624
|
-
const isOnLine = parentsUntil$1(target,
|
|
22625
|
-
const
|
|
22626
|
-
const
|
|
22627
|
-
|
|
22662
|
+
const isOnLine = parentsUntil$1(target, connectorLineSVG);
|
|
22663
|
+
const isArrow = parentsUntil$1(target, connectorLineArrow);
|
|
22664
|
+
const isCriticalLine = parentsUntil$1(target, criticalConnectorLineSVG);
|
|
22665
|
+
var isCriticalArrow = parentsUntil$1(target, criticalConnectorArrowSVG);
|
|
22666
|
+
if (isOnLine || isArrow || isCriticalLine || isCriticalArrow) {
|
|
22628
22667
|
return parentsUntil$1(target, connectorLineContainer);
|
|
22629
22668
|
}
|
|
22630
22669
|
else {
|
|
@@ -22658,16 +22697,13 @@ class ConnectorLineEdit {
|
|
|
22658
22697
|
*/
|
|
22659
22698
|
addHighlight(element) {
|
|
22660
22699
|
this.connectorLineElement = element;
|
|
22661
|
-
|
|
22662
|
-
|
|
22663
|
-
|
|
22664
|
-
|
|
22665
|
-
addClass(element.querySelectorAll('.' + connectorLineLeftArrow), [criticalConnectorLineLeftArrowHover]);
|
|
22700
|
+
const pathElement = element.querySelector('.' + connectorLineSVG);
|
|
22701
|
+
const criticalElement = element.querySelector('.' + criticalConnectorLineSVG);
|
|
22702
|
+
if (pathElement) {
|
|
22703
|
+
pathElement.setAttribute('stroke-width', '2');
|
|
22666
22704
|
}
|
|
22667
22705
|
else {
|
|
22668
|
-
|
|
22669
|
-
addClass(element.querySelectorAll('.' + connectorLineRightArrow), [connectorLineRightArrowHover]);
|
|
22670
|
-
addClass(element.querySelectorAll('.' + connectorLineLeftArrow), [connectorLineLeftArrowHover]);
|
|
22706
|
+
criticalElement.setAttribute('stroke-width', '2');
|
|
22671
22707
|
}
|
|
22672
22708
|
}
|
|
22673
22709
|
/**
|
|
@@ -22677,17 +22713,14 @@ class ConnectorLineEdit {
|
|
|
22677
22713
|
* @private
|
|
22678
22714
|
*/
|
|
22679
22715
|
removeHighlight() {
|
|
22680
|
-
if (
|
|
22681
|
-
|
|
22682
|
-
|
|
22683
|
-
|
|
22684
|
-
|
|
22685
|
-
removeClass(this.connectorLineElement.querySelectorAll('.' + connectorLineLeftArrow), [criticalConnectorLineLeftArrowHover]);
|
|
22716
|
+
if (this.connectorLineElement) {
|
|
22717
|
+
const pathElement = this.connectorLineElement.querySelector('.' + connectorLineSVG);
|
|
22718
|
+
const criticalElement = this.connectorLineElement.querySelector('.' + criticalConnectorLineSVG);
|
|
22719
|
+
if (pathElement) {
|
|
22720
|
+
pathElement.setAttribute('stroke-width', '1');
|
|
22686
22721
|
}
|
|
22687
22722
|
else {
|
|
22688
|
-
|
|
22689
|
-
removeClass(this.connectorLineElement.querySelectorAll('.' + connectorLineRightArrow), [connectorLineRightArrowHover]);
|
|
22690
|
-
removeClass(this.connectorLineElement.querySelectorAll('.' + connectorLineLeftArrow), [connectorLineLeftArrowHover]);
|
|
22723
|
+
criticalElement.setAttribute('stroke-width', '1');
|
|
22691
22724
|
}
|
|
22692
22725
|
this.connectorLineElement = null;
|
|
22693
22726
|
}
|
|
@@ -22754,8 +22787,8 @@ class ConnectorLineEdit {
|
|
|
22754
22787
|
this.parent.connectorLineModule.expandedRecords = this.parent.virtualScrollModule && this.parent.enableVirtualization ?
|
|
22755
22788
|
this.parent.updatedRecords : this.parent.getExpandedRecords(this.parent.updatedRecords);
|
|
22756
22789
|
const editedConnectorLineString = this.getEditedConnectorLineString(editedRecord);
|
|
22757
|
-
this.parent.connectorLineModule.
|
|
22758
|
-
this.parent.connectorLineModule.
|
|
22790
|
+
this.parent.connectorLineModule.svgObject.innerHTML =
|
|
22791
|
+
this.parent.connectorLineModule.svgObject.innerHTML + editedConnectorLineString;
|
|
22759
22792
|
}
|
|
22760
22793
|
idFromPredecessor(pre) {
|
|
22761
22794
|
const preArray = pre.split(',');
|
|
@@ -23375,9 +23408,9 @@ class ConnectorLineEdit {
|
|
|
23375
23408
|
validateTypes(ganttRecord, data) {
|
|
23376
23409
|
const predecessor = this.parent.predecessorModule.getValidPredecessor(ganttRecord);
|
|
23377
23410
|
let parentGanttRecord;
|
|
23378
|
-
let ganttTaskData;
|
|
23379
23411
|
this.validationPredecessor = [];
|
|
23380
23412
|
let violatedParent;
|
|
23413
|
+
let ganttTaskData;
|
|
23381
23414
|
let violateType;
|
|
23382
23415
|
const startDate = this.parent.predecessorModule.getPredecessorDate(ganttRecord, predecessor);
|
|
23383
23416
|
if (data) {
|
|
@@ -24450,6 +24483,10 @@ class Edit$2 {
|
|
|
24450
24483
|
if (data.hasChildRecords && ganttProp.isAutoSchedule) {
|
|
24451
24484
|
this.parent.setRecordValue('startDate', ganttProp.autoStartDate, ganttProp, true);
|
|
24452
24485
|
this.parent.setRecordValue('endDate', ganttProp.autoEndDate, ganttProp, true);
|
|
24486
|
+
this.parent.setRecordValue('StartDate', ganttProp.autoStartDate, data, true);
|
|
24487
|
+
this.parent.setRecordValue('EndDate', ganttProp.autoEndDate, data, true);
|
|
24488
|
+
this.parent.setRecordValue('taskData.StartDate', ganttProp.autoStartDate, data, true);
|
|
24489
|
+
this.parent.setRecordValue('taskData.EndDate', ganttProp.autoEndDate, data, true);
|
|
24453
24490
|
this.parent.setRecordValue('width', this.parent.dataOperation.calculateWidth(data, true), ganttProp, true);
|
|
24454
24491
|
this.parent.setRecordValue('left', this.parent.dataOperation.calculateLeft(ganttProp, true), ganttProp, true);
|
|
24455
24492
|
this.parent.setRecordValue('progressWidth', this.parent.dataOperation.getProgressWidth(ganttProp.width, ganttProp.progress), ganttProp, true);
|
|
@@ -24458,8 +24495,8 @@ class Edit$2 {
|
|
|
24458
24495
|
else if (data.hasChildRecords && !ganttProp.isAutoSchedule) {
|
|
24459
24496
|
this.parent.dataOperation.updateWidthLeft(data);
|
|
24460
24497
|
this.parent.dataOperation.calculateDuration(data);
|
|
24461
|
-
this.parent.setRecordValue('autoStartDate', ganttProp.
|
|
24462
|
-
this.parent.setRecordValue('autoEndDate', ganttProp.
|
|
24498
|
+
this.parent.setRecordValue('autoStartDate', ganttProp.autoStartDate, ganttProp, true);
|
|
24499
|
+
this.parent.setRecordValue('autoEndDate', ganttProp.autoEndDate, ganttProp, true);
|
|
24463
24500
|
this.parent.setRecordValue('autoDuration', this.parent.dataOperation.calculateAutoDuration(data), ganttProp, true);
|
|
24464
24501
|
this.parent.dataOperation.updateAutoWidthLeft(data);
|
|
24465
24502
|
}
|
|
@@ -24684,7 +24721,6 @@ class Edit$2 {
|
|
|
24684
24721
|
}
|
|
24685
24722
|
if (childRecords.length) {
|
|
24686
24723
|
this.parent.dataOperation.updateParentItems(ganttRecord, true);
|
|
24687
|
-
this.parent.dataOperation.updateGanttData();
|
|
24688
24724
|
}
|
|
24689
24725
|
}
|
|
24690
24726
|
/**
|
|
@@ -24896,8 +24932,8 @@ class Edit$2 {
|
|
|
24896
24932
|
}
|
|
24897
24933
|
}
|
|
24898
24934
|
if (this.parent.isConnectorLineUpdate && !isNullOrUndefined(this.parent.connectorLineEditModule)) {
|
|
24899
|
-
this.parent.updatedConnectorLineCollection = [];
|
|
24900
|
-
this.parent.connectorLineIds = [];
|
|
24935
|
+
// this.parent.updatedConnectorLineCollection = [];
|
|
24936
|
+
// this.parent.connectorLineIds = [];
|
|
24901
24937
|
this.parent.connectorLineEditModule.refreshEditedRecordConnectorLine(this.parent.editedRecords);
|
|
24902
24938
|
this.updateScheduleDatesOnEditing(args);
|
|
24903
24939
|
}
|
|
@@ -26411,7 +26447,6 @@ class Edit$2 {
|
|
|
26411
26447
|
let args = {};
|
|
26412
26448
|
args = this.constructTaskAddedEventArgs(cAddedRecord, this.parent.editedRecords, 'beforeAdd');
|
|
26413
26449
|
this.parent.trigger('actionBegin', args, (args) => {
|
|
26414
|
-
this.parent.previousRecords = {};
|
|
26415
26450
|
if (!isNullOrUndefined(this.parent.loadingIndicator) && this.parent.loadingIndicator.indicatorType === "Shimmer") {
|
|
26416
26451
|
this.parent.showMaskRow();
|
|
26417
26452
|
}
|
|
@@ -28953,7 +28988,7 @@ class NonWorkingDay {
|
|
|
28953
28988
|
this.nonworkingContainer = createElement('div', {
|
|
28954
28989
|
className: nonworkingContainer
|
|
28955
28990
|
});
|
|
28956
|
-
this.parent.ganttChartModule.chartBodyContent.
|
|
28991
|
+
this.parent.ganttChartModule.chartBodyContent.insertBefore(this.nonworkingContainer, this.parent.ganttChartModule.chartBodyContent.lastChild);
|
|
28957
28992
|
}
|
|
28958
28993
|
}
|
|
28959
28994
|
/**
|
|
@@ -29102,7 +29137,7 @@ class NonWorkingDay {
|
|
|
29102
29137
|
}
|
|
29103
29138
|
updateHolidayLabelHeight() {
|
|
29104
29139
|
const height = this.parent.getContentHeight();
|
|
29105
|
-
let gantttable =
|
|
29140
|
+
let gantttable = document.getElementById("ganttContainer");
|
|
29106
29141
|
// eslint-disable-next-line
|
|
29107
29142
|
let toolbarHeight = 0;
|
|
29108
29143
|
if (!isNullOrUndefined(this.parent.toolbarModule) && !isNullOrUndefined(this.parent.toolbarModule.element)) {
|
|
@@ -29290,9 +29325,12 @@ class DayMarkers {
|
|
|
29290
29325
|
}
|
|
29291
29326
|
}
|
|
29292
29327
|
refreshMarkers() {
|
|
29293
|
-
this.eventMarkerRender.renderEventMarkers();
|
|
29294
29328
|
this.nonworkingDayRender.renderWeekends();
|
|
29295
29329
|
this.nonworkingDayRender.renderHolidays();
|
|
29330
|
+
if (this.parent.gridLines === 'Vertical' || this.parent.gridLines === 'Both') {
|
|
29331
|
+
this.parent['renderChartVerticalLines']();
|
|
29332
|
+
}
|
|
29333
|
+
this.eventMarkerRender.renderEventMarkers();
|
|
29296
29334
|
}
|
|
29297
29335
|
updateHeight() {
|
|
29298
29336
|
this.nonworkingDayRender.updateContainerHeight();
|
|
@@ -30054,11 +30092,8 @@ class CriticalPath {
|
|
|
30054
30092
|
}
|
|
30055
30093
|
if (element && (this.parent.viewType === 'ProjectView' || (this.parent.viewType === 'ResourceView' &&
|
|
30056
30094
|
!criticalData.hasChildRecords))) {
|
|
30057
|
-
if (element.getElementsByClassName('e-milestone
|
|
30058
|
-
addClass(element.querySelectorAll('.e-milestone
|
|
30059
|
-
}
|
|
30060
|
-
if (element.getElementsByClassName('e-milestone-bottom')[0]) {
|
|
30061
|
-
addClass(element.querySelectorAll('.e-milestone-bottom'), criticalMilestoneBottom);
|
|
30095
|
+
if (element.getElementsByClassName('e-gantt-milestone')[0]) {
|
|
30096
|
+
addClass(element.querySelectorAll('.e-gantt-milestone'), criticalMilestone);
|
|
30062
30097
|
}
|
|
30063
30098
|
if (element.getElementsByClassName('e-gantt-child-taskbar-inner-div').length > 0) {
|
|
30064
30099
|
addClass(element.querySelectorAll('.e-gantt-child-taskbar-inner-div'), criticalChildTaskBarInnerDiv);
|
|
@@ -30094,11 +30129,9 @@ class CriticalPath {
|
|
|
30094
30129
|
currentdata['taskid'] + 'child' + checkint);
|
|
30095
30130
|
if (lineElement.length > 0) {
|
|
30096
30131
|
addClass(this.parent.element.querySelectorAll('#ConnectorLineparent' + currentdata['taskid'] + 'child' +
|
|
30097
|
-
checkint)[0].querySelectorAll('.e-line'),
|
|
30098
|
-
addClass(this.parent.element.querySelectorAll('#ConnectorLineparent' + currentdata['taskid'] + 'child' +
|
|
30099
|
-
checkint)[0].querySelectorAll('.e-connector-line-right-arrow'), criticalConnectorLineRightArrow);
|
|
30132
|
+
checkint)[0].querySelectorAll('.e-connector-line'), criticalConnectorLineSVG);
|
|
30100
30133
|
addClass(this.parent.element.querySelectorAll('#ConnectorLineparent' + currentdata['taskid'] + 'child' +
|
|
30101
|
-
checkint)[0].querySelectorAll('.e-connector-line-
|
|
30134
|
+
checkint)[0].querySelectorAll('.e-connector-line-arrow'), criticalConnectorArrowSVG);
|
|
30102
30135
|
}
|
|
30103
30136
|
}
|
|
30104
30137
|
}
|
|
@@ -30397,7 +30430,7 @@ class ContextMenu$2 {
|
|
|
30397
30430
|
splitTaskDuration = Math.ceil(currentTaskDifference / this.parent.timelineSettings.timelineUnitSize);
|
|
30398
30431
|
splitTaskDuration -= 1;
|
|
30399
30432
|
}
|
|
30400
|
-
const contextMenuClickDate = this.parent.dataOperation.getEndDate(startDate, splitTaskDuration, (this.parent.
|
|
30433
|
+
const contextMenuClickDate = this.parent.dataOperation.getEndDate(startDate, splitTaskDuration, (this.parent.timelineModule.customTimelineSettings.bottomTier.unit !== "None") ? this.parent.timelineModule.customTimelineSettings.bottomTier.unit.toLocaleLowerCase() : this.parent.timelineModule.customTimelineSettings.topTier.unit.toLocaleLowerCase(), this.rowData, false);
|
|
30401
30434
|
return contextMenuClickDate;
|
|
30402
30435
|
}
|
|
30403
30436
|
contextMenuBeforeOpen(args) {
|
|
@@ -30406,7 +30439,7 @@ class ContextMenu$2 {
|
|
|
30406
30439
|
this.parent.ganttChartModule.targetElement;
|
|
30407
30440
|
// Closed edited cell before opening context menu
|
|
30408
30441
|
// eslint-disable-next-line
|
|
30409
|
-
if (!isNullOrUndefined(this.parent.editModule) && this.parent.editModule.cellEditModule && this.parent.editModule.cellEditModule.isCellEdit && target.parentElement.classList.contains('e-row')
|
|
30442
|
+
if (!isNullOrUndefined(this.parent.editModule) && this.parent.editModule.cellEditModule && this.parent.editModule.cellEditModule.isCellEdit && target.parentElement.classList.contains('e-row')) {
|
|
30410
30443
|
this.parent.treeGrid.closeEdit();
|
|
30411
30444
|
}
|
|
30412
30445
|
if (!isNullOrUndefined(args.element) && args.element.id === this.parent.element.id + '_contextmenu') {
|
|
@@ -34101,6 +34134,7 @@ class ExportHelper {
|
|
|
34101
34134
|
predecessor.type = data.type;
|
|
34102
34135
|
predecessor.milestoneParent = data.milestoneParent;
|
|
34103
34136
|
predecessor.milestoneChild = data.milestoneChild;
|
|
34137
|
+
predecessor.parentEndPoint = data.parentEndPoint;
|
|
34104
34138
|
predecessor.lineWidth = this.parent.connectorLineWidth > 5 ? pixelToPoint(5) : pixelToPoint(this.parent.connectorLineWidth);
|
|
34105
34139
|
if (data.isCritical) {
|
|
34106
34140
|
predecessor.connectorLineColor = this.ganttStyle.criticalConnectorLineColor;
|
|
@@ -35086,22 +35120,11 @@ class PdfGanttPredecessor {
|
|
|
35086
35120
|
this.parent = parent;
|
|
35087
35121
|
this.pdfGantt = pdfGantt;
|
|
35088
35122
|
}
|
|
35089
|
-
findindex(num
|
|
35123
|
+
findindex(num) {
|
|
35090
35124
|
var dataindex;
|
|
35091
|
-
if (
|
|
35092
|
-
|
|
35093
|
-
|
|
35094
|
-
dataindex = index;
|
|
35095
|
-
}
|
|
35096
|
-
});
|
|
35097
|
-
}
|
|
35098
|
-
else {
|
|
35099
|
-
this.parent.flatData.map(function (data, index) {
|
|
35100
|
-
if (data.index == num) {
|
|
35101
|
-
dataindex = index;
|
|
35102
|
-
}
|
|
35103
|
-
});
|
|
35104
|
-
}
|
|
35125
|
+
this.parent.currentViewData.map((data, index) => { if (data.index == num) {
|
|
35126
|
+
dataindex = index;
|
|
35127
|
+
} });
|
|
35105
35128
|
return dataindex;
|
|
35106
35129
|
}
|
|
35107
35130
|
/**
|
|
@@ -35111,11 +35134,11 @@ class PdfGanttPredecessor {
|
|
|
35111
35134
|
* @returns {void}
|
|
35112
35135
|
* @private
|
|
35113
35136
|
*/
|
|
35114
|
-
drawPredecessor(pdfGantt
|
|
35137
|
+
drawPredecessor(pdfGantt) {
|
|
35115
35138
|
this.pdfGantt = pdfGantt;
|
|
35116
35139
|
const pages = pdfGantt.result.page.section.getPages();
|
|
35117
|
-
const parentTask = pdfGantt.taskbarCollection[this.findindex(this.parentIndex
|
|
35118
|
-
const childTask = pdfGantt.taskbarCollection[this.findindex(this.childIndex
|
|
35140
|
+
const parentTask = pdfGantt.taskbarCollection[this.findindex(this.parentIndex)];
|
|
35141
|
+
const childTask = pdfGantt.taskbarCollection[this.findindex(this.childIndex)];
|
|
35119
35142
|
let startPage = new PdfPage();
|
|
35120
35143
|
let endPage = new PdfPage();
|
|
35121
35144
|
let predecessorType = '';
|
|
@@ -35125,7 +35148,7 @@ class PdfGanttPredecessor {
|
|
|
35125
35148
|
let childY = 0;
|
|
35126
35149
|
switch (this.type) {
|
|
35127
35150
|
case 'FS':
|
|
35128
|
-
if (
|
|
35151
|
+
if (childTask.startPage > -1 && parentTask.endPage > -1) {
|
|
35129
35152
|
startPage = pages[parentTask.endPage];
|
|
35130
35153
|
endPage = pages[childTask.startPage];
|
|
35131
35154
|
parentPageData = pdfGantt.pdfPageDetail[parentTask.endPage - pdfGantt.chartPageIndex];
|
|
@@ -35152,7 +35175,7 @@ class PdfGanttPredecessor {
|
|
|
35152
35175
|
}
|
|
35153
35176
|
break;
|
|
35154
35177
|
case 'SF':
|
|
35155
|
-
if (
|
|
35178
|
+
if (childTask.endPage > -1 && parentTask.startPage > -1) {
|
|
35156
35179
|
startPage = pages[parentTask.startPage];
|
|
35157
35180
|
endPage = pages[childTask.endPage];
|
|
35158
35181
|
parentPageData = pdfGantt.pdfPageDetail[parentTask.endPage - pdfGantt.chartPageIndex];
|
|
@@ -35179,7 +35202,7 @@ class PdfGanttPredecessor {
|
|
|
35179
35202
|
}
|
|
35180
35203
|
break;
|
|
35181
35204
|
case 'FF':
|
|
35182
|
-
if (
|
|
35205
|
+
if (childTask.endPage > -1 && parentTask.endPage > -1) {
|
|
35183
35206
|
startPage = pages[parentTask.endPage];
|
|
35184
35207
|
endPage = pages[childTask.endPage];
|
|
35185
35208
|
parentPageData = pdfGantt.pdfPageDetail[parentTask.endPage - pdfGantt.chartPageIndex];
|
|
@@ -35206,7 +35229,7 @@ class PdfGanttPredecessor {
|
|
|
35206
35229
|
}
|
|
35207
35230
|
break;
|
|
35208
35231
|
case 'SS':
|
|
35209
|
-
if (
|
|
35232
|
+
if (childTask.startPage > -1 && parentTask.startPage > -1) {
|
|
35210
35233
|
startPage = pages[parentTask.startPage];
|
|
35211
35234
|
endPage = pages[childTask.startPage];
|
|
35212
35235
|
parentPageData = pdfGantt.pdfPageDetail[parentTask.startPage - pdfGantt.chartPageIndex];
|
|
@@ -35533,12 +35556,12 @@ class PdfGantt extends PdfTreeGrid {
|
|
|
35533
35556
|
}
|
|
35534
35557
|
return this.taskbars;
|
|
35535
35558
|
}
|
|
35536
|
-
drawChart(result
|
|
35559
|
+
drawChart(result) {
|
|
35537
35560
|
this.result = result;
|
|
35538
35561
|
this.totalPages = this.result.page.section.count;
|
|
35539
35562
|
this.perColumnPages = this.totalPages / this.layouter.columnRanges.length;
|
|
35540
35563
|
this.calculateRange();
|
|
35541
|
-
this.drawGantttChart(
|
|
35564
|
+
this.drawGantttChart();
|
|
35542
35565
|
this.drawPageBorder();
|
|
35543
35566
|
}
|
|
35544
35567
|
//Calcualte the header range for each pdf page based on schedule start and end date.
|
|
@@ -35687,7 +35710,7 @@ class PdfGantt extends PdfTreeGrid {
|
|
|
35687
35710
|
}
|
|
35688
35711
|
}
|
|
35689
35712
|
//Draw the gantt chart side
|
|
35690
|
-
drawGantttChart(
|
|
35713
|
+
drawGantttChart() {
|
|
35691
35714
|
let taskbarPoint = this.startPoint;
|
|
35692
35715
|
const pagePoint = new PointF();
|
|
35693
35716
|
let pageStartX = 0;
|
|
@@ -35761,7 +35784,7 @@ class PdfGantt extends PdfTreeGrid {
|
|
|
35761
35784
|
// Draw predecessor line.
|
|
35762
35785
|
for (let i = 0; i < this.predecessorCollection.length; i++) {
|
|
35763
35786
|
const predecessor = this.predecessorCollection[i];
|
|
35764
|
-
predecessor.drawPredecessor(this
|
|
35787
|
+
predecessor.drawPredecessor(this);
|
|
35765
35788
|
}
|
|
35766
35789
|
}
|
|
35767
35790
|
}
|
|
@@ -35874,7 +35897,7 @@ class PdfExport {
|
|
|
35874
35897
|
const format = new PdfTreeGridLayoutFormat();
|
|
35875
35898
|
format.break = PdfLayoutBreakType.FitElement;
|
|
35876
35899
|
const layouter = this.gantt.drawGrid(pdfPage, 0, 0, format);
|
|
35877
|
-
this.gantt.drawChart(layouter
|
|
35900
|
+
this.gantt.drawChart(layouter);
|
|
35878
35901
|
if (!isMultipleExport) {
|
|
35879
35902
|
if (!this.isBlob) {
|
|
35880
35903
|
// save the PDF
|