@visactor/vtable-gantt 1.23.3-alpha.0 → 1.24.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (55) hide show
  1. package/cjs/Gantt.d.ts +18 -0
  2. package/cjs/Gantt.js +135 -9
  3. package/cjs/Gantt.js.map +1 -1
  4. package/cjs/gantt-helper.d.ts +7 -0
  5. package/cjs/gantt-helper.js +75 -66
  6. package/cjs/gantt-helper.js.map +1 -1
  7. package/cjs/index.d.ts +1 -1
  8. package/cjs/index.js +1 -1
  9. package/cjs/index.js.map +1 -1
  10. package/cjs/plugins/index.js.map +1 -1
  11. package/cjs/scenegraph/dependency-link.js +28 -38
  12. package/cjs/scenegraph/dependency-link.js.map +1 -1
  13. package/cjs/scenegraph/grid.js +8 -7
  14. package/cjs/scenegraph/grid.js.map +1 -1
  15. package/cjs/scenegraph/mark-line.js +10 -12
  16. package/cjs/scenegraph/mark-line.js.map +1 -1
  17. package/cjs/scenegraph/task-bar.d.ts +4 -1
  18. package/cjs/scenegraph/task-bar.js +73 -23
  19. package/cjs/scenegraph/task-bar.js.map +1 -1
  20. package/cjs/scenegraph/timeline-header.js +1 -4
  21. package/cjs/scenegraph/timeline-header.js.map +1 -1
  22. package/cjs/state/state-manager.js +22 -18
  23. package/cjs/state/state-manager.js.map +1 -1
  24. package/cjs/tools/isx.d.ts +1 -1
  25. package/cjs/ts-types/gantt-engine.d.ts +7 -0
  26. package/cjs/ts-types/gantt-engine.js.map +1 -1
  27. package/dist/vtable-gantt.js +1374 -694
  28. package/dist/vtable-gantt.min.js +2 -2
  29. package/es/Gantt.d.ts +18 -0
  30. package/es/Gantt.js +135 -8
  31. package/es/Gantt.js.map +1 -1
  32. package/es/gantt-helper.d.ts +7 -0
  33. package/es/gantt-helper.js +74 -63
  34. package/es/gantt-helper.js.map +1 -1
  35. package/es/index.d.ts +1 -1
  36. package/es/index.js +1 -1
  37. package/es/index.js.map +1 -1
  38. package/es/plugins/index.js.map +1 -1
  39. package/es/scenegraph/dependency-link.js +29 -27
  40. package/es/scenegraph/dependency-link.js.map +1 -1
  41. package/es/scenegraph/grid.js +6 -8
  42. package/es/scenegraph/grid.js.map +1 -1
  43. package/es/scenegraph/mark-line.js +10 -11
  44. package/es/scenegraph/mark-line.js.map +1 -1
  45. package/es/scenegraph/task-bar.d.ts +4 -1
  46. package/es/scenegraph/task-bar.js +74 -23
  47. package/es/scenegraph/task-bar.js.map +1 -1
  48. package/es/scenegraph/timeline-header.js +2 -3
  49. package/es/scenegraph/timeline-header.js.map +1 -1
  50. package/es/state/state-manager.js +22 -18
  51. package/es/state/state-manager.js.map +1 -1
  52. package/es/tools/isx.d.ts +1 -1
  53. package/es/ts-types/gantt-engine.d.ts +7 -0
  54. package/es/ts-types/gantt-engine.js.map +1 -1
  55. package/package.json +6 -6
package/es/Gantt.d.ts CHANGED
@@ -52,6 +52,7 @@ export declare class Gantt extends EventTarget {
52
52
  taskBarStyle: ITaskBarStyle | ((interactionArgs: TaskBarInteractionArgumentType) => ITaskBarStyle);
53
53
  taskBarMilestoneStyle: IMilestoneStyle;
54
54
  projectBarStyle: ITaskBarStyle | ((interactionArgs: TaskBarInteractionArgumentType) => ITaskBarStyle);
55
+ baselineStyle: ITaskBarStyle | ((interactionArgs: TaskBarInteractionArgumentType) => ITaskBarStyle);
55
56
  taskBarMilestoneHypotenuse: number;
56
57
  taskBarHoverStyle: ITaskBarHoverStyle;
57
58
  taskBarSelectedStyle: ITaskBarSelectedStyle;
@@ -80,6 +81,9 @@ export declare class Gantt extends EventTarget {
80
81
  startDateField: string;
81
82
  endDateField: string;
82
83
  progressField: string;
84
+ baselineStartDateField: string;
85
+ baselineEndDateField: string;
86
+ baselinePosition: 'top' | 'bottom' | 'overlap';
83
87
  minDate: Date;
84
88
  maxDate: Date;
85
89
  _minDateTime: number;
@@ -115,6 +119,10 @@ export declare class Gantt extends EventTarget {
115
119
  };
116
120
  private millisecondsPerPixel;
117
121
  zoomScaleManager?: ZoomScaleManager;
122
+ private _timelineColWidths;
123
+ private _timelineColX;
124
+ private _timelineColStartTimes;
125
+ private _timelineColEndTimes;
118
126
  recalculateTimeScale(): void;
119
127
  zoomByFactor(factor: number, keepCenter?: boolean, centerX?: number): void;
120
128
  taskTableWidth: number;
@@ -131,6 +139,10 @@ export declare class Gantt extends EventTarget {
131
139
  getContainer(): HTMLElement;
132
140
  _sortScales(): void;
133
141
  _generateTimeLineDateMap(): void;
142
+ private _rebuildTimelineColXMap;
143
+ getXByTime(time: number): number;
144
+ getDateIndexByTime(time: number): number;
145
+ getDateIndexByX(x: number): number;
134
146
  getRowHeightByIndex(index: number): number;
135
147
  getRowsHeightByIndex(startIndex: number, endIndex: number): number;
136
148
  getAllRowsHeight(): number;
@@ -149,6 +161,11 @@ export declare class Gantt extends EventTarget {
149
161
  endDate: Date;
150
162
  progress: number;
151
163
  };
164
+ getBaselineInfoByTaskListIndex(taskShowIndex: number, sub_task_index?: number | number[]): {
165
+ baselineStartDate: Date | null;
166
+ baselineEndDate: Date | null;
167
+ baselineDays: number;
168
+ };
152
169
  _updateStartDateToTaskRecord(startDate: Date, index: number, sub_task_index?: number | number[]): void;
153
170
  _updateEndDateToTaskRecord(endDate: Date, index: number, sub_task_index?: number): void;
154
171
  _updateStartEndDateToTaskRecord(startDate: Date, endDate: Date, index: number, sub_task_index?: number): void;
@@ -193,6 +210,7 @@ export declare class Gantt extends EventTarget {
193
210
  };
194
211
  parseTimeFormat(date: string): string;
195
212
  getTaskBarStyle(task_index: number, sub_task_index?: number | number[]): ITaskBarStyle;
213
+ getBaselineStyle(task_index: number, sub_task_index?: number | number[]): ITaskBarStyle;
196
214
  formatDate(date: Date | string, format: string): string;
197
215
  getCurrentMillisecondsPerPixel(): number;
198
216
  setMillisecondsPerPixel(millisecondsPerPixel: number): void;
package/es/Gantt.js CHANGED
@@ -14,7 +14,7 @@ import { computeRowsCountByRecordDate, computeRowsCountByRecordDateForCompact, c
14
14
 
15
15
  import { EventTarget } from "./event/EventTarget";
16
16
 
17
- import { computeCountToTimeScale, createDateAtLastHour, createDateAtLastMillisecond, createDateAtMidnight, formatDate, isPropertyWritable, parseDateFormat } from "./tools/util";
17
+ import { createDateAtLastHour, createDateAtLastMillisecond, createDateAtMidnight, formatDate, isPropertyWritable, parseDateFormat } from "./tools/util";
18
18
 
19
19
  import { DataSource } from "./data/DataSource";
20
20
 
@@ -46,8 +46,9 @@ export class Gantt extends EventTarget {
46
46
  }
47
47
  constructor(container, options) {
48
48
  var _a, _b, _c, _d, _e, _f;
49
- super(), this.parsedOptions = {}, this.container = container, this.options = options,
50
- this.taskTableWidth = "number" == typeof (null === (_a = null == options ? void 0 : options.taskListTable) || void 0 === _a ? void 0 : _a.tableWidth) ? null === (_b = null == options ? void 0 : options.taskListTable) || void 0 === _b ? void 0 : _b.tableWidth : -1,
49
+ super(), this.parsedOptions = {}, this._timelineColWidths = [], this._timelineColX = [],
50
+ this._timelineColStartTimes = [], this._timelineColEndTimes = [], this.container = container,
51
+ this.options = options, this.taskTableWidth = "number" == typeof (null === (_a = null == options ? void 0 : options.taskListTable) || void 0 === _a ? void 0 : _a.tableWidth) ? null === (_b = null == options ? void 0 : options.taskListTable) || void 0 === _b ? void 0 : _b.tableWidth : -1,
51
52
  this.taskTableColumns = null !== (_d = null === (_c = null == options ? void 0 : options.taskListTable) || void 0 === _c ? void 0 : _c.columns) && void 0 !== _d ? _d : [],
52
53
  this.records = null !== (_e = null == options ? void 0 : options.records) && void 0 !== _e ? _e : [],
53
54
  (null === (_f = options.timelineHeader) || void 0 === _f ? void 0 : _f.zoomScale) && !1 !== options.timelineHeader.zoomScale.enabled && (this.zoomScaleManager = new ZoomScaleManager(this, options.timelineHeader.zoomScale)),
@@ -252,6 +253,80 @@ export class Gantt extends EventTarget {
252
253
  }
253
254
  _generateTimeLineDateMap() {
254
255
  if (this.parsedOptions.minDate && this.parsedOptions.maxDate) for (const scale of this.parsedOptions.reverseSortedTimelineScales) scale.timelineDates = generateTimeLineDate(new Date(this.parsedOptions.minDate), this.parsedOptions.maxDate, scale);
256
+ this._rebuildTimelineColXMap();
257
+ }
258
+ _rebuildTimelineColXMap() {
259
+ var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o;
260
+ const minScale = null === (_a = this.parsedOptions.reverseSortedTimelineScales) || void 0 === _a ? void 0 : _a[0], timelineDates = null !== (_b = null == minScale ? void 0 : minScale.timelineDates) && void 0 !== _b ? _b : [], baseWidth = null !== (_c = this.parsedOptions.timelineColWidth) && void 0 !== _c ? _c : 0, hideWeekend = !0 === (null === (_e = null === (_d = this.options) || void 0 === _d ? void 0 : _d.timelineHeader) || void 0 === _e ? void 0 : _e.hideWeekend), weekendColWidth = null === (_g = null === (_f = this.options) || void 0 === _f ? void 0 : _f.timelineHeader) || void 0 === _g ? void 0 : _g.weekendColWidth, enableWeekendWidth = "day" === (null == minScale ? void 0 : minScale.unit) && 1 === (null == minScale ? void 0 : minScale.step) && (hideWeekend || void 0 !== weekendColWidth);
261
+ this._timelineColWidths = new Array(timelineDates.length), this._timelineColX = new Array(timelineDates.length + 1),
262
+ this._timelineColStartTimes = new Array(timelineDates.length), this._timelineColEndTimes = new Array(timelineDates.length),
263
+ this._timelineColX[0] = 0;
264
+ let sumX = 0;
265
+ for (let i = 0; i < timelineDates.length; i++) {
266
+ const d = timelineDates[i], startTime = null !== (_k = null === (_j = null === (_h = d.startDate) || void 0 === _h ? void 0 : _h.getTime) || void 0 === _j ? void 0 : _j.call(_h)) && void 0 !== _k ? _k : 0, endTime = null !== (_o = null === (_m = null === (_l = d.endDate) || void 0 === _l ? void 0 : _l.getTime) || void 0 === _m ? void 0 : _m.call(_l)) && void 0 !== _o ? _o : startTime;
267
+ this._timelineColStartTimes[i] = startTime, this._timelineColEndTimes[i] = endTime;
268
+ let w = baseWidth;
269
+ if (enableWeekendWidth) {
270
+ const day = d.startDate.getDay();
271
+ (0 === day || 6 === day) && (hideWeekend ? w = 0 : "number" == typeof weekendColWidth ? w = weekendColWidth : "function" == typeof weekendColWidth && (w = weekendColWidth(baseWidth)));
272
+ }
273
+ w = Math.max(0, Number.isFinite(w) ? w : baseWidth), this._timelineColWidths[i] = w,
274
+ sumX += w, this._timelineColX[i + 1] = sumX;
275
+ }
276
+ }
277
+ getXByTime(time) {
278
+ var _a, _b, _c, _d, _e;
279
+ const startTimes = this._timelineColStartTimes, endTimes = this._timelineColEndTimes, widths = this._timelineColWidths, xPrefix = this._timelineColX;
280
+ if (!((null == startTimes ? void 0 : startTimes.length) && (null == endTimes ? void 0 : endTimes.length) && (null == widths ? void 0 : widths.length) && (null == xPrefix ? void 0 : xPrefix.length))) return 0;
281
+ if (time <= startTimes[0]) return 0;
282
+ const lastIndex = endTimes.length - 1;
283
+ if (time > endTimes[lastIndex]) return null !== (_a = xPrefix[lastIndex + 1]) && void 0 !== _a ? _a : 0;
284
+ let low = 0, high = lastIndex;
285
+ for (;low <= high; ) {
286
+ const mid = low + high >> 1, st = startTimes[mid], et = endTimes[mid];
287
+ if (time < st) high = mid - 1; else {
288
+ if (!(time > et)) {
289
+ const offset = (time - st) / Math.max(1, et - st + 1);
290
+ return (null !== (_b = xPrefix[mid]) && void 0 !== _b ? _b : 0) + (null !== (_c = widths[mid]) && void 0 !== _c ? _c : 0) * offset;
291
+ }
292
+ low = mid + 1;
293
+ }
294
+ }
295
+ const idx = Math.max(0, Math.min(lastIndex, high)), st = startTimes[idx], et = endTimes[idx], duration = Math.max(1, et - st + 1), offset = Math.max(0, Math.min(1, (time - st) / duration));
296
+ return (null !== (_d = xPrefix[idx]) && void 0 !== _d ? _d : 0) + (null !== (_e = widths[idx]) && void 0 !== _e ? _e : 0) * offset;
297
+ }
298
+ getDateIndexByTime(time) {
299
+ const startTimes = this._timelineColStartTimes, endTimes = this._timelineColEndTimes;
300
+ if (!(null == startTimes ? void 0 : startTimes.length) || !(null == endTimes ? void 0 : endTimes.length)) return 0;
301
+ if (time <= startTimes[0]) return 0;
302
+ const lastIndex = endTimes.length - 1;
303
+ if (time > endTimes[lastIndex]) return lastIndex;
304
+ let low = 0, high = lastIndex;
305
+ for (;low <= high; ) {
306
+ const mid = low + high >> 1, st = startTimes[mid], et = endTimes[mid];
307
+ if (time < st) high = mid - 1; else {
308
+ if (!(time > et)) return mid;
309
+ low = mid + 1;
310
+ }
311
+ }
312
+ return Math.max(0, Math.min(lastIndex, high));
313
+ }
314
+ getDateIndexByX(x) {
315
+ var _a, _b, _c;
316
+ const totalX = x + this.stateManager.scroll.horizontalBarPos, xPrefix = this._timelineColX;
317
+ if (!(null == xPrefix ? void 0 : xPrefix.length)) return 0;
318
+ if (totalX <= 0) return 0;
319
+ const lastIndex = xPrefix.length - 2;
320
+ if (totalX >= (null !== (_a = xPrefix[lastIndex + 1]) && void 0 !== _a ? _a : 0)) return Math.max(0, lastIndex);
321
+ let low = 0, high = lastIndex;
322
+ for (;low <= high; ) {
323
+ const mid = low + high >> 1, left = null !== (_b = xPrefix[mid]) && void 0 !== _b ? _b : 0, right = null !== (_c = xPrefix[mid + 1]) && void 0 !== _c ? _c : left;
324
+ if (totalX < left) high = mid - 1; else {
325
+ if (!(totalX >= right)) return mid;
326
+ low = mid + 1;
327
+ }
328
+ }
329
+ return Math.max(0, Math.min(lastIndex, low));
255
330
  }
256
331
  getRowHeightByIndex(index) {
257
332
  return this.taskListTableInstance ? this.taskListTableInstance.getRowHeight(index + this.taskListTableInstance.columnHeaderLevelCount) : this.parsedOptions.rowHeight;
@@ -266,8 +341,9 @@ export class Gantt extends EventTarget {
266
341
  return this.parsedOptions.timeLineHeaderRowHeights.reduce(((acc, curr, index) => !1 === this.parsedOptions.sortedTimelineScales[index].visible ? acc : acc + curr), 0);
267
342
  }
268
343
  getAllDateColsWidth() {
269
- var _a, _b;
270
- return this.parsedOptions.timelineColWidth * (null !== (_b = null === (_a = this.parsedOptions.reverseSortedTimelineScales[0].timelineDates) || void 0 === _a ? void 0 : _a.length) && void 0 !== _b ? _b : 0);
344
+ var _a, _b, _c;
345
+ const xPrefix = this._timelineColX;
346
+ return (null == xPrefix ? void 0 : xPrefix.length) ? null !== (_a = xPrefix[xPrefix.length - 1]) && void 0 !== _a ? _a : 0 : this.parsedOptions.timelineColWidth * (null !== (_c = null === (_b = this.parsedOptions.reverseSortedTimelineScales[0].timelineDates) || void 0 === _b ? void 0 : _b.length) && void 0 !== _c ? _c : 0);
271
347
  }
272
348
  getAllTaskBarsHeight() {
273
349
  return this.taskListTableInstance ? this.taskListTableInstance.getRowsHeight(this.taskListTableInstance.columnHeaderLevelCount, this.taskListTableInstance.rowCount - 1) : this.itemCount * this.parsedOptions.rowHeight;
@@ -334,6 +410,36 @@ export class Gantt extends EventTarget {
334
410
  progress: progress
335
411
  };
336
412
  }
413
+ getBaselineInfoByTaskListIndex(taskShowIndex, sub_task_index) {
414
+ const taskRecord = this.getRecordByIndex(taskShowIndex, sub_task_index), baselineStartDateField = this.parsedOptions.baselineStartDateField, baselineEndDateField = this.parsedOptions.baselineEndDateField;
415
+ if (!(baselineStartDateField && baselineEndDateField && (null == taskRecord ? void 0 : taskRecord[baselineStartDateField]) && (null == taskRecord ? void 0 : taskRecord[baselineEndDateField]))) return {
416
+ baselineStartDate: null,
417
+ baselineEndDate: null,
418
+ baselineDays: 0
419
+ };
420
+ const rawBaselineStartDateTime = createDateAtMidnight(null == taskRecord ? void 0 : taskRecord[baselineStartDateField]).getTime(), rawBaselineEndDateTime = createDateAtMidnight(null == taskRecord ? void 0 : taskRecord[baselineEndDateField]).getTime();
421
+ if (rawBaselineEndDateTime < this.parsedOptions._minDateTime || rawBaselineStartDateTime > this.parsedOptions._maxDateTime) return {
422
+ baselineStartDate: null,
423
+ baselineEndDate: null,
424
+ baselineDays: 0
425
+ };
426
+ let baselineStartDate, baselineEndDate;
427
+ if (this.parsedOptions.timeScaleIncludeHour) {
428
+ baselineStartDate = createDateAtMidnight(Math.min(Math.max(this.parsedOptions._minDateTime, rawBaselineStartDateTime), this.parsedOptions._maxDateTime));
429
+ const rawEnd = null == taskRecord ? void 0 : taskRecord[baselineEndDateField];
430
+ let hasMillisecondProvided = !1;
431
+ "string" == typeof rawEnd && (hasMillisecondProvided = /:\d{2}\.\d+/.test(rawEnd));
432
+ const shouldForceMillisecond = !hasMillisecondProvided;
433
+ baselineEndDate = createDateAtLastMillisecond(Math.max(Math.min(this.parsedOptions._maxDateTime, rawBaselineEndDateTime), this.parsedOptions._minDateTime), shouldForceMillisecond);
434
+ } else baselineStartDate = createDateAtMidnight(Math.min(Math.max(this.parsedOptions._minDateTime, rawBaselineStartDateTime), this.parsedOptions._maxDateTime), !0),
435
+ baselineEndDate = createDateAtLastHour(Math.max(Math.min(this.parsedOptions._maxDateTime, rawBaselineEndDateTime), this.parsedOptions._minDateTime), !0);
436
+ const baselineDays = (baselineEndDate.getTime() - baselineStartDate.getTime() + 1) / 864e5;
437
+ return {
438
+ baselineStartDate: baselineStartDate,
439
+ baselineEndDate: baselineEndDate,
440
+ baselineDays: baselineDays
441
+ };
442
+ }
337
443
  _updateStartDateToTaskRecord(startDate, index, sub_task_index) {
338
444
  var _a;
339
445
  const taskRecord = this.getRecordByIndex(index, sub_task_index), startDateField = this.parsedOptions.startDateField, dateFormat = null !== (_a = this.parsedOptions.dateFormat) && void 0 !== _a ? _a : parseDateFormat(taskRecord[startDateField]), newStartDate = formatDate(startDate, dateFormat);
@@ -479,13 +585,13 @@ export class Gantt extends EventTarget {
479
585
  }
480
586
  _scrollToMarkLine() {
481
587
  if (this.parsedOptions.scrollToMarkLineDate && this.parsedOptions.minDate) {
482
- const minDate = this.parsedOptions.minDate, {unit: unit, step: step} = this.parsedOptions.reverseSortedTimelineScales[0], left = computeCountToTimeScale(this.parsedOptions.scrollToMarkLineDate, minDate, unit, step) * this.parsedOptions.timelineColWidth - this.tableNoFrameWidth / 2;
588
+ const left = this.getXByTime(this.parsedOptions.scrollToMarkLineDate.getTime()) - this.tableNoFrameWidth / 2;
483
589
  this.stateManager.setScrollLeft(left);
484
590
  }
485
591
  }
486
592
  scrollToMarkLine(date) {
487
593
  if (!date || !this.parsedOptions.minDate) return;
488
- const minDate = this.parsedOptions.minDate, {unit: unit, step: step} = this.parsedOptions.reverseSortedTimelineScales[0], left = computeCountToTimeScale(date, minDate, unit, step) * this.parsedOptions.timelineColWidth - this.tableNoFrameWidth / 2;
594
+ const left = this.getXByTime(date.getTime()) - this.tableNoFrameWidth / 2;
489
595
  this.stateManager.setScrollLeft(left);
490
596
  }
491
597
  addLink(link) {
@@ -524,9 +630,17 @@ export class Gantt extends EventTarget {
524
630
  };
525
631
  }
526
632
  getDateColWidth(dateIndex) {
527
- return this.parsedOptions.timelineColWidth;
633
+ var _a;
634
+ const widths = this._timelineColWidths;
635
+ return (null == widths ? void 0 : widths.length) && dateIndex >= 0 && dateIndex < widths.length ? null !== (_a = widths[dateIndex]) && void 0 !== _a ? _a : 0 : this.parsedOptions.timelineColWidth;
528
636
  }
529
637
  getDateColsWidth(startDateIndex, endDateIndex) {
638
+ var _a, _b;
639
+ const xPrefix = this._timelineColX;
640
+ if (null == xPrefix ? void 0 : xPrefix.length) {
641
+ const start = Math.max(0, Math.min(startDateIndex, xPrefix.length - 1)), end = Math.max(0, Math.min(endDateIndex + 1, xPrefix.length - 1));
642
+ return end <= start ? 0 : (null !== (_a = xPrefix[end]) && void 0 !== _a ? _a : 0) - (null !== (_b = xPrefix[start]) && void 0 !== _b ? _b : 0);
643
+ }
530
644
  return (endDateIndex - startDateIndex + 1) * this.parsedOptions.timelineColWidth;
531
645
  }
532
646
  getDateRangeByIndex(index) {
@@ -557,6 +671,19 @@ export class Gantt extends EventTarget {
557
671
  }
558
672
  return style;
559
673
  }
674
+ getBaselineStyle(task_index, sub_task_index) {
675
+ const {startDate: startDate, endDate: endDate, taskRecord: taskRecord} = this.getTaskInfoByTaskListIndex(task_index, sub_task_index), style = this.parsedOptions.baselineStyle;
676
+ if ("function" == typeof style) {
677
+ return style({
678
+ index: task_index,
679
+ startDate: startDate,
680
+ endDate: endDate,
681
+ taskRecord: taskRecord,
682
+ ganttInstance: this
683
+ });
684
+ }
685
+ return style;
686
+ }
560
687
  formatDate(date, format) {
561
688
  return formatDate(date instanceof Date ? date : new Date(date), format);
562
689
  }