vxe-gantt 4.1.5 → 4.1.7

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 (65) hide show
  1. package/es/gantt/index.js +3 -0
  2. package/es/gantt/src/emits.js +7 -1
  3. package/es/gantt/src/gantt-body.js +2 -5
  4. package/es/gantt/src/gantt-chart.js +64 -35
  5. package/es/gantt/src/gantt-view.js +23 -10
  6. package/es/gantt/src/gantt.js +66 -5
  7. package/es/gantt/src/static.js +22 -0
  8. package/es/gantt/src/table-emits.js +4 -0
  9. package/es/gantt/src/util.js +9 -0
  10. package/es/gantt/style.css +2 -2
  11. package/es/gantt/style.min.css +1 -1
  12. package/es/style.css +1 -1
  13. package/es/style.min.css +1 -1
  14. package/es/ui/index.js +6 -13
  15. package/es/ui/src/depend.js +14 -0
  16. package/es/ui/src/log.js +1 -1
  17. package/es/vxe-gantt/style.css +2 -2
  18. package/es/vxe-gantt/style.min.css +1 -1
  19. package/lib/gantt/index.js +18 -0
  20. package/lib/gantt/index.min.js +1 -1
  21. package/lib/gantt/src/emits.js +1 -1
  22. package/lib/gantt/src/emits.min.js +1 -1
  23. package/lib/gantt/src/gantt-body.js +2 -5
  24. package/lib/gantt/src/gantt-body.min.js +1 -1
  25. package/lib/gantt/src/gantt-chart.js +44 -21
  26. package/lib/gantt/src/gantt-chart.min.js +1 -1
  27. package/lib/gantt/src/gantt-view.js +19 -9
  28. package/lib/gantt/src/gantt-view.min.js +1 -1
  29. package/lib/gantt/src/gantt.js +88 -5
  30. package/lib/gantt/src/gantt.min.js +1 -1
  31. package/lib/gantt/src/static.js +28 -0
  32. package/lib/gantt/src/static.min.js +1 -0
  33. package/lib/gantt/src/table-emits.js +1 -1
  34. package/lib/gantt/src/table-emits.min.js +1 -1
  35. package/lib/gantt/src/util.js +12 -0
  36. package/lib/gantt/src/util.min.js +1 -1
  37. package/lib/gantt/style/style.css +2 -2
  38. package/lib/gantt/style/style.min.css +1 -1
  39. package/lib/index.umd.js +226 -69
  40. package/lib/index.umd.min.js +1 -1
  41. package/lib/style.css +1 -1
  42. package/lib/style.min.css +1 -1
  43. package/lib/ui/index.js +6 -13
  44. package/lib/ui/index.min.js +1 -1
  45. package/lib/ui/src/depend.js +19 -0
  46. package/lib/ui/src/depend.min.js +1 -0
  47. package/lib/ui/src/log.js +1 -1
  48. package/lib/ui/src/log.min.js +1 -1
  49. package/lib/vxe-gantt/style/style.css +2 -2
  50. package/lib/vxe-gantt/style/style.min.css +1 -1
  51. package/package.json +3 -7
  52. package/packages/gantt/index.ts +4 -0
  53. package/packages/gantt/src/emits.ts +7 -1
  54. package/packages/gantt/src/gantt-body.ts +2 -5
  55. package/packages/gantt/src/gantt-chart.ts +65 -36
  56. package/packages/gantt/src/gantt-view.ts +25 -10
  57. package/packages/gantt/src/gantt.ts +74 -6
  58. package/packages/gantt/src/static.ts +21 -0
  59. package/packages/gantt/src/table-emits.ts +5 -0
  60. package/packages/gantt/src/util.ts +12 -0
  61. package/packages/ui/index.ts +5 -12
  62. package/packages/ui/src/depend.ts +14 -0
  63. package/styles/components/gantt-module/gantt-chart.scss +3 -2
  64. package/styles/components/gantt.scss +0 -1
  65. package/styles/theme/base.scss +2 -0
package/lib/index.umd.js CHANGED
@@ -2740,6 +2740,7 @@ __webpack_require__.r(__webpack_exports__);
2740
2740
  __webpack_require__.d(__webpack_exports__, {
2741
2741
  Gantt: function() { return /* reexport */ Gantt; },
2742
2742
  VxeGantt: function() { return /* reexport */ VxeGantt; },
2743
+ VxeGanttDependencyType: function() { return /* reexport */ VxeGanttDependencyType; },
2743
2744
  VxeUI: function() { return /* reexport */ ui; },
2744
2745
  "default": function() { return /* binding */ entry_lib; },
2745
2746
  install: function() { return /* reexport */ install; }
@@ -2751,6 +2752,7 @@ __webpack_require__.r(components_namespaceObject);
2751
2752
  __webpack_require__.d(components_namespaceObject, {
2752
2753
  Gantt: function() { return Gantt; },
2753
2754
  VxeGantt: function() { return VxeGantt; },
2755
+ VxeGanttDependencyType: function() { return VxeGanttDependencyType; },
2754
2756
  VxeUI: function() { return ui; },
2755
2757
  install: function() { return install; }
2756
2758
  });
@@ -2775,23 +2777,13 @@ if (typeof window !== 'undefined') {
2775
2777
 
2776
2778
  // EXTERNAL MODULE: external {"root":"VxeUI","commonjs":"@vxe-ui/core","commonjs2":"@vxe-ui/core","amd":"@vxe-ui/core"}
2777
2779
  var core_ = __webpack_require__(4345);
2778
- ;// ./packages/ui/src/log.ts
2779
-
2780
- const {
2781
- log
2782
- } = core_.VxeUI;
2783
- const version = `gantt v${"4.1.5"}`;
2784
- const warnLog = log.create('warn', version);
2785
- const errLog = log.create('error', version);
2786
2780
  ;// ./packages/ui/index.ts
2787
2781
 
2788
-
2789
2782
  const {
2790
2783
  setConfig,
2791
- setIcon,
2792
- checkVersion
2784
+ setIcon
2793
2785
  } = core_.VxeUI;
2794
- core_.VxeUI.ganttVersion = "4.1.5";
2786
+ core_.VxeUI.ganttVersion = "4.1.7";
2795
2787
  const ymdFormat = 'yyyy-MM-dd';
2796
2788
  const ymdhmsFormat = 'yyyy-MM-dd HH:mm:ss';
2797
2789
  setConfig({
@@ -2835,6 +2827,10 @@ setConfig({
2835
2827
  taskBarTooltipConfig: {
2836
2828
  enterable: true
2837
2829
  },
2830
+ taskLinkConfig: {
2831
+ enabled: true,
2832
+ showArrow: true
2833
+ },
2838
2834
  taskViewScaleConfig: {
2839
2835
  year: {
2840
2836
  valueFormat: ymdFormat
@@ -2888,17 +2884,30 @@ setIcon({
2888
2884
  GANTT_VIEW_RIGHT_OPEN: iconPrefix + 'arrow-right',
2889
2885
  GANTT_VIEW_RIGHT_CLOSE: iconPrefix + 'arrow-left'
2890
2886
  });
2891
- const pVersion = 4;
2892
- const sVersion = 16;
2893
- if (checkVersion) {
2894
- if (!checkVersion(core_.VxeUI.tableVersion, pVersion, sVersion)) {
2895
- errLog('vxe.error.errorVersion', [`vxe-table@${core_.VxeUI.tableVersion || '?'}`, `vxe-table v${pVersion}.${sVersion}+`]);
2896
- }
2897
- } else {
2898
- errLog(`Requires vxe-table v${pVersion}.${sVersion}+`);
2899
- }
2900
2887
 
2901
2888
  /* harmony default export */ var ui = (core_.VxeUI);
2889
+ ;// ./packages/ui/src/log.ts
2890
+
2891
+ const {
2892
+ log
2893
+ } = core_.VxeUI;
2894
+ const version = `gantt v${"4.1.7"}`;
2895
+ const warnLog = log.create('warn', version);
2896
+ const errLog = log.create('error', version);
2897
+ ;// ./packages/ui/src/depend.ts
2898
+
2899
+
2900
+ function checkDependVersion() {
2901
+ const pVersion = 4;
2902
+ const sVersion = 17;
2903
+ if (core_.VxeUI.checkVersion) {
2904
+ if (!core_.VxeUI.checkVersion(core_.VxeUI.tableVersion, pVersion, sVersion)) {
2905
+ errLog('vxe.error.errorVersion', [`vxe-table@${core_.VxeUI.tableVersion || '?'}`, `vxe-table v${pVersion}.${sVersion}+`]);
2906
+ }
2907
+ } else {
2908
+ errLog(`Requires vxe-table v${pVersion}.${sVersion}+`);
2909
+ }
2910
+ }
2902
2911
  // EXTERNAL MODULE: ./node_modules/core-js/modules/es.array.push.js
2903
2912
  var es_array_push = __webpack_require__(4114);
2904
2913
  // EXTERNAL MODULE: ./node_modules/core-js/modules/es.iterator.constructor.js
@@ -3324,14 +3333,6 @@ function getSlotVNs(vns) {
3324
3333
  }
3325
3334
  return vns ? [vns] : [];
3326
3335
  }
3327
- ;// ./packages/gantt/src/table-emits.ts
3328
- const tableEmits = ['update:data', 'keydown-start', 'keydown', 'keydown-end', 'paste', 'copy', 'cut', 'columns-change', 'data-change', 'footer-data-change', 'current-change', 'current-row-change', 'current-row-disabled', 'current-column-change', 'current-column-disabled', 'radio-change', 'checkbox-change', 'checkbox-all', 'checkbox-range-start', 'checkbox-range-change', 'checkbox-range-end', 'checkbox-range-select', 'cell-click', 'cell-dblclick', 'cell-menu', 'cell-mouseenter', 'cell-mouseleave', 'cell-selected', 'cell-delete-value', 'cell-backspace-value', 'header-cell-click', 'header-cell-dblclick', 'header-cell-menu', 'footer-cell-click', 'footer-cell-dblclick', 'footer-cell-menu', 'clear-merge', 'sort-change', 'clear-sort', 'clear-all-sort', 'filter-change', 'filter-visible', 'clear-filter', 'clear-all-filter', 'resizable-change', 'column-resizable-change', 'row-resizable-change', 'toggle-row-group-expand', 'toggle-row-expand', 'toggle-tree-expand', 'menu-click', 'edit-closed', 'row-dragstart', 'row-dragover', 'row-dragend', 'row-remove-dragend', 'row-insert-dragend', 'column-dragstart', 'column-dragover', 'column-dragend', 'enter-append-row', 'edit-actived', 'edit-activated', 'edit-disabled', 'valid-error', 'scroll', 'scroll-boundary', 'custom', 'custom-visible-change', 'custom-visible-all', 'custom-fixed-change', 'custom-sort-change', 'change-fnr', 'open-fnr', 'show-fnr', 'hide-fnr', 'fnr-change', 'fnr-find', 'fnr-find-all', 'fnr-replace', 'fnr-replace-all', 'cell-area-copy', 'cell-area-cut', 'cell-area-paste', 'cell-area-merge', 'clear-cell-area-selection', 'clear-cell-area-merge', 'header-cell-area-selection', 'cell-area-selection-invalid', 'cell-area-selection-start', 'cell-area-selection-drag', 'cell-area-selection-end', 'cell-area-extension-start', 'cell-area-extension-drag', 'cell-area-extension-end', 'cell-area-extension-fill', 'cell-area-selection-all-start', 'cell-area-selection-all-end', 'cell-area-arrows-start', 'cell-area-arrows-end', 'active-cell-change-start', 'active-cell-change-end'];
3329
- ;// ./packages/gantt/src/grid-emits.ts
3330
-
3331
- const gridEmits = [...tableEmits, 'page-change', 'form-submit', 'form-submit-invalid', 'form-reset', 'form-collapse', 'form-toggle-collapse', 'proxy-query', 'proxy-delete', 'proxy-save', 'toolbar-button-click', 'toolbar-tool-click', 'zoom'];
3332
- ;// ./packages/gantt/src/emits.ts
3333
-
3334
- const ganttEmits = [...gridEmits, 'task-cell-click', 'task-cell-dblclick', 'task-bar-mouseenter', 'task-bar-mouseleave', 'task-bar-click', 'task-bar-dblclick', 'task-view-cell-click', 'task-view-cell-dblclick'];
3335
3336
  ;// ./packages/gantt/src/util.ts
3336
3337
  function getRefElem(refEl) {
3337
3338
  if (refEl) {
@@ -3362,6 +3363,23 @@ function getStandardGapTime(type) {
3362
3363
  }
3363
3364
  return 1000 * 60 * 60 * 24;
3364
3365
  }
3366
+ function getTaskBarLeft(chartRest, viewCellWidth) {
3367
+ return chartRest ? viewCellWidth * chartRest.oLeftSize : 0;
3368
+ }
3369
+ function getTaskBarWidth(chartRest, viewCellWidth) {
3370
+ return Math.max(1, chartRest ? Math.floor(viewCellWidth * chartRest.oWidthSize) - 1 : 0);
3371
+ }
3372
+ function getTaskLinkKey(from, to) {
3373
+ return `${from}_${to}`;
3374
+ }
3375
+ ;// ./packages/gantt/src/table-emits.ts
3376
+ const tableEmits = ['ready', 'init-rendered', 'data-rendered', 'update:data', 'keydown-start', 'keydown', 'keydown-end', 'paste', 'copy', 'cut', 'context-menu', 'columns-change', 'data-change', 'footer-data-change', 'current-change', 'current-row-change', 'current-row-disabled', 'current-column-change', 'current-column-disabled', 'radio-change', 'checkbox-change', 'checkbox-all', 'checkbox-range-start', 'checkbox-range-change', 'checkbox-range-end', 'checkbox-range-select', 'cell-click', 'cell-dblclick', 'cell-menu', 'cell-mouseenter', 'cell-mouseleave', 'cell-selected', 'cell-delete-value', 'cell-backspace-value', 'header-cell-click', 'header-cell-dblclick', 'header-cell-menu', 'footer-cell-click', 'footer-cell-dblclick', 'footer-cell-menu', 'clear-merge', 'sort-change', 'clear-sort', 'clear-all-sort', 'filter-change', 'filter-visible', 'clear-filter', 'clear-all-filter', 'resizable-change', 'column-resizable-change', 'row-resizable-change', 'toggle-row-group-expand', 'toggle-row-expand', 'toggle-tree-expand', 'menu-click', 'edit-closed', 'row-dragstart', 'row-dragover', 'row-dragend', 'row-remove-dragend', 'row-insert-dragend', 'column-dragstart', 'column-dragover', 'column-dragend', 'enter-append-row', 'edit-actived', 'edit-activated', 'edit-disabled', 'valid-error', 'scroll', 'scroll-boundary', 'custom', 'custom-visible-change', 'custom-visible-all', 'custom-fixed-change', 'custom-sort-change', 'change-fnr', 'open-fnr', 'show-fnr', 'hide-fnr', 'fnr-change', 'fnr-find', 'fnr-find-all', 'fnr-replace', 'fnr-replace-all', 'cell-area-copy', 'cell-area-cut', 'cell-area-paste', 'cell-area-merge', 'clear-cell-area-selection', 'clear-cell-area-merge', 'header-cell-area-selection', 'cell-area-selection-invalid', 'cell-area-selection-start', 'cell-area-selection-drag', 'cell-area-selection-end', 'cell-area-extension-start', 'cell-area-extension-drag', 'cell-area-extension-end', 'cell-area-extension-fill', 'cell-area-selection-all-start', 'cell-area-selection-all-end', 'cell-area-arrows-start', 'cell-area-arrows-end', 'active-cell-change-start', 'active-cell-change-end'];
3377
+ ;// ./packages/gantt/src/grid-emits.ts
3378
+
3379
+ const gridEmits = [...tableEmits, 'page-change', 'form-submit', 'form-submit-invalid', 'form-reset', 'form-collapse', 'form-toggle-collapse', 'proxy-query', 'proxy-delete', 'proxy-save', 'toolbar-button-click', 'toolbar-tool-click', 'zoom'];
3380
+ ;// ./packages/gantt/src/emits.ts
3381
+
3382
+ const ganttEmits = [...gridEmits, 'task-cell-click', 'task-cell-dblclick', 'task-bar-mouseenter', 'task-bar-mouseleave', 'task-bar-click', 'task-bar-dblclick', 'task-view-cell-click', 'task-view-cell-dblclick', 'task-move-start', 'task-move-drag', 'task-move-end', 'task-resize-start', 'task-resize-drag', 'task-resize-end'];
3365
3383
  ;// ./packages/gantt/src/gantt-header.ts
3366
3384
 
3367
3385
 
@@ -3546,16 +3564,19 @@ const gantt_chart_viewType = 'chart';
3546
3564
  internalData: ganttInternalData
3547
3565
  } = $xeGantt;
3548
3566
  const {
3549
- reactData,
3550
- internalData
3567
+ reactData: ganttViewReactData,
3568
+ internalData: ganttViewInternalData
3551
3569
  } = $xeGanttView;
3552
3570
  const {
3553
3571
  computeProgressField,
3554
3572
  computeTitleField,
3555
3573
  computeTaskBarOpts,
3556
- computeScaleUnit
3574
+ computeScaleUnit,
3575
+ computeTaskLinkOpts
3557
3576
  } = $xeGantt.getComputeMaps();
3558
3577
  const refElem = (0,external_commonjs_vue_commonjs2_vue_root_Vue_.ref)();
3578
+ const refTaskWrapperElem = (0,external_commonjs_vue_commonjs2_vue_root_Vue_.ref)();
3579
+ const reflineWrapperElem = (0,external_commonjs_vue_commonjs2_vue_root_Vue_.ref)();
3559
3580
  const renderTaskBar = ($xeTable, row, rowid, rowIndex, $rowIndex, _rowIndex) => {
3560
3581
  const tableProps = $xeTable.props;
3561
3582
  const {
@@ -3593,7 +3614,7 @@ const gantt_chart_viewType = 'chart';
3593
3614
  showContent,
3594
3615
  contentMethod,
3595
3616
  barStyle,
3596
- drag,
3617
+ move,
3597
3618
  showTooltip
3598
3619
  } = taskBarOpts;
3599
3620
  const isBarRowStyle = external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().isFunction(barStyle);
@@ -3602,9 +3623,7 @@ const gantt_chart_viewType = 'chart';
3602
3623
  round
3603
3624
  } = barStyObj;
3604
3625
  const rowRest = fullAllDataRowIdData[rowid] || {};
3605
- const resizeHeight = resizeHeightFlag ? rowRest.resizeHeight : 0;
3606
- const isRsHeight = resizeHeight > 0;
3607
- const cellHeight = getCellRestHeight(rowRest, cellOpts, rowOpts, defaultRowHeight);
3626
+ const cellHeight = resizeHeightFlag ? getCellRestHeight(rowRest, cellOpts, rowOpts, defaultRowHeight) : 0;
3608
3627
  let title = getStringValue(external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().get(row, titleField));
3609
3628
  const progressValue = showProgress ? Math.min(100, Math.max(0, external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().toNumber(external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().get(row, progressField)))) : 0;
3610
3629
  const vbStyle = {};
@@ -3684,8 +3703,7 @@ const gantt_chart_viewType = 'chart';
3684
3703
  rowid,
3685
3704
  class: ['vxe-gantt-view--chart-row', {
3686
3705
  'is--round': round,
3687
- 'is--drag': drag,
3688
- 'col--rs-height': isRsHeight
3706
+ 'is--move': move
3689
3707
  }],
3690
3708
  style: {
3691
3709
  height: `${cellHeight}px`
@@ -3698,14 +3716,23 @@ const gantt_chart_viewType = 'chart';
3698
3716
  style: vbStyle,
3699
3717
  rowid,
3700
3718
  ...ons
3701
- }, taskBarSlot ? $xeGantt.callSlot(taskBarSlot, barParams) : [showProgress ? (0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)('div', {
3719
+ }, $xeGantt.renderGanttTaskBarContent ? $xeGantt.renderGanttTaskBarContent(ctParams, {
3720
+ title,
3721
+ vbStyle,
3722
+ vpStyle
3723
+ }) : taskBarSlot ? [(0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)('div', {
3724
+ key: 'cbc',
3725
+ class: 'vxe-gantt-view--chart-custom-bar-content'
3726
+ }, $xeGantt.callSlot(taskBarSlot, barParams))] : [showProgress ? (0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)('div', {
3727
+ key: 'vcp',
3702
3728
  class: 'vxe-gantt-view--chart-progress',
3703
3729
  style: vpStyle
3704
3730
  }) : renderEmptyElement($xeGantt), showContent ? (0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)('div', {
3731
+ key: 'vcc',
3705
3732
  class: 'vxe-gantt-view--chart-content'
3706
3733
  }, title) : renderEmptyElement($xeGantt)])]);
3707
3734
  };
3708
- const renderRows = ($xeTable, tableData) => {
3735
+ const renderTaskRows = ($xeTable, tableData) => {
3709
3736
  const tableProps = $xeTable.props;
3710
3737
  const {
3711
3738
  treeConfig
@@ -3729,10 +3756,10 @@ const gantt_chart_viewType = 'chart';
3729
3756
  const childrenField = treeOpts.children || treeOpts.childrenField;
3730
3757
  const {
3731
3758
  scrollYLoad
3732
- } = reactData;
3759
+ } = ganttViewReactData;
3733
3760
  const trVNs = [];
3734
3761
  tableData.forEach((row, $rowIndex) => {
3735
- const rowid = $xeTable ? $xeTable.getRowid(row) : '';
3762
+ const rowid = $xeTable.getRowid(row);
3736
3763
  const rowRest = fullAllDataRowIdData[rowid] || {};
3737
3764
  let rowIndex = $rowIndex;
3738
3765
  let _rowIndex = -1;
@@ -3749,34 +3776,48 @@ const gantt_chart_viewType = 'chart';
3749
3776
  }
3750
3777
  // 如果是树形表格
3751
3778
  if (isExpandTree) {
3752
- trVNs.push(...renderRows($xeTable, rowChildren));
3779
+ trVNs.push(...renderTaskRows($xeTable, rowChildren));
3753
3780
  }
3754
3781
  });
3755
3782
  return trVNs;
3756
3783
  };
3757
3784
  const renderVN = () => {
3758
- const $xeTable = $xeGanttView.internalData.xeTable;
3785
+ const $xeTable = ganttViewInternalData.xeTable;
3759
3786
  const {
3760
3787
  tableData
3761
- } = reactData;
3788
+ } = ganttViewReactData;
3789
+ const taskLinkOpts = computeTaskLinkOpts.value;
3790
+ const {
3791
+ showArrow
3792
+ } = taskLinkOpts;
3762
3793
  return (0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)('div', {
3763
3794
  ref: refElem,
3764
3795
  class: 'vxe-gantt-view--chart-wrapper'
3765
- }, $xeTable ? renderRows($xeTable, tableData) : []);
3796
+ }, [$xeGantt.renderGanttTaskLines ? (0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)('div', {
3797
+ ref: reflineWrapperElem,
3798
+ class: ['vxe-gantt-view--chart-line-wrapper', {
3799
+ 'show-arrow': showArrow
3800
+ }]
3801
+ }, $xeTable && isEnableConf(taskLinkOpts) ? $xeGantt.renderGanttTaskLines() : []) : renderEmptyElement($xeGantt), (0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)('div', {
3802
+ ref: refTaskWrapperElem,
3803
+ class: 'vxe-gantt-view--chart-task-wrapper'
3804
+ }, $xeTable ? renderTaskRows($xeTable, tableData) : [])]);
3766
3805
  };
3767
3806
  (0,external_commonjs_vue_commonjs2_vue_root_Vue_.onMounted)(() => {
3768
3807
  const {
3769
3808
  elemStore
3770
- } = internalData;
3809
+ } = ganttViewInternalData;
3771
3810
  const prefix = 'main-chart-';
3772
- elemStore[`${prefix}wrapper`] = refElem;
3811
+ elemStore[`${prefix}task-wrapper`] = refTaskWrapperElem;
3812
+ elemStore[`${prefix}line-wrapper`] = reflineWrapperElem;
3773
3813
  });
3774
3814
  (0,external_commonjs_vue_commonjs2_vue_root_Vue_.onUnmounted)(() => {
3775
3815
  const {
3776
3816
  elemStore
3777
- } = internalData;
3817
+ } = ganttViewInternalData;
3778
3818
  const prefix = 'main-chart-';
3779
- elemStore[`${prefix}wrapper`] = null;
3819
+ elemStore[`${prefix}task-wrapper`] = null;
3820
+ elemStore[`${prefix}line-wrapper`] = null;
3780
3821
  });
3781
3822
  return renderVN;
3782
3823
  }
@@ -3860,9 +3901,7 @@ const gantt_body_viewType = 'body';
3860
3901
  } = viewStyle || {};
3861
3902
  const todayValue = showNowLine && scaleItem ? todayDateMaps[scaleItem.type] : null;
3862
3903
  const rowRest = fullAllDataRowIdData[rowid] || {};
3863
- const resizeHeight = resizeHeightFlag ? rowRest.resizeHeight : 0;
3864
- const isRsHeight = resizeHeight > 0;
3865
- const cellHeight = getCellRestHeight(rowRest, cellOpts, rowOpts, defaultRowHeight);
3904
+ const cellHeight = resizeHeightFlag ? getCellRestHeight(rowRest, cellOpts, rowOpts, defaultRowHeight) : 0;
3866
3905
  const tdVNs = [];
3867
3906
  if (isAllRowDrag && rowOpts.resizable) {
3868
3907
  const cellParams = {
@@ -3911,8 +3950,7 @@ const gantt_body_viewType = 'body';
3911
3950
  return (0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)('td', {
3912
3951
  key: $columnIndex,
3913
3952
  class: ['vxe-gantt-view--body-column', {
3914
- 'is--now': showNowLine && todayValue === field,
3915
- 'col--rs-height': isRsHeight
3953
+ 'is--now': showNowLine && todayValue === field
3916
3954
  }, getClass(cellClassName, ctParams)],
3917
3955
  style: cellStyle ? Object.assign({}, external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().isFunction(cellStyle) ? cellStyle(ctParams) : cellStyle, {
3918
3956
  height: `${cellHeight}px`
@@ -4278,7 +4316,7 @@ const maxYHeight = 5e6;
4278
4316
  tableData: [],
4279
4317
  tableColumn: [],
4280
4318
  headerGroups: [],
4281
- viewCellWidth: 20
4319
+ viewCellWidth: 40
4282
4320
  });
4283
4321
  const internalData = createInternalData();
4284
4322
  const refMaps = {
@@ -5008,7 +5046,7 @@ const maxYHeight = 5e6;
5008
5046
  reactData.overflowX = overflowX;
5009
5047
  }
5010
5048
  };
5011
- const updateChart = () => {
5049
+ const updateTaskChart = () => {
5012
5050
  const {
5013
5051
  dragBarRow
5014
5052
  } = ganttInternalData;
@@ -5020,7 +5058,7 @@ const maxYHeight = 5e6;
5020
5058
  chartMaps
5021
5059
  } = internalData;
5022
5060
  const $xeTable = internalData.xeTable;
5023
- const chartWrapper = getRefElem(elemStore['main-chart-wrapper']);
5061
+ const chartWrapper = getRefElem(elemStore['main-chart-task-wrapper']);
5024
5062
  if (chartWrapper && $xeTable) {
5025
5063
  external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().arrayEach(chartWrapper.children, rowEl => {
5026
5064
  const barEl = rowEl.children[0];
@@ -5031,9 +5069,9 @@ const maxYHeight = 5e6;
5031
5069
  if (dragBarRow && $xeTable.getRowid(dragBarRow) === rowid) {
5032
5070
  return;
5033
5071
  }
5034
- const rowRest = rowid ? chartMaps[rowid] : null;
5035
- barEl.style.left = `${rowRest ? viewCellWidth * rowRest.oLeftSize : 0}px`;
5036
- barEl.style.width = `${rowRest ? viewCellWidth * rowRest.oWidthSize : 0}px`;
5072
+ const chartRest = rowid ? chartMaps[rowid] : null;
5073
+ barEl.style.left = `${getTaskBarLeft(chartRest, viewCellWidth)}px`;
5074
+ barEl.style.width = `${getTaskBarWidth(chartRest, viewCellWidth)}px`;
5037
5075
  });
5038
5076
  }
5039
5077
  return (0,external_commonjs_vue_commonjs2_vue_root_Vue_.nextTick)();
@@ -5054,6 +5092,9 @@ const maxYHeight = 5e6;
5054
5092
  if (!el) {
5055
5093
  return;
5056
5094
  }
5095
+ if (!$xeGantt) {
5096
+ return;
5097
+ }
5057
5098
  const scrollbarOpts = computeScrollbarOpts.value;
5058
5099
  const scrollbarXToTop = computeScrollbarXToTop.value;
5059
5100
  const scrollbarYToLeft = computeScrollbarYToLeft.value;
@@ -5153,7 +5194,7 @@ const maxYHeight = 5e6;
5153
5194
  bodyTableElem.style.width = `${vmTableWidth}px`;
5154
5195
  }
5155
5196
  reactData.scrollXWidth = viewTableWidth;
5156
- return updateChart();
5197
+ return Promise.all([updateTaskChart(), $xeGantt.handleUpdateTaskLink ? $xeGantt.handleUpdateTaskLink($xeGanttView) : null]);
5157
5198
  };
5158
5199
  const handleRecalculateStyle = () => {
5159
5200
  const el = refElem.value;
@@ -5161,9 +5202,11 @@ const maxYHeight = 5e6;
5161
5202
  if (!el || !el.clientWidth) {
5162
5203
  return (0,external_commonjs_vue_commonjs2_vue_root_Vue_.nextTick)();
5163
5204
  }
5205
+ if (!$xeGantt) {
5206
+ return (0,external_commonjs_vue_commonjs2_vue_root_Vue_.nextTick)();
5207
+ }
5164
5208
  calcScrollbar();
5165
5209
  updateStyle();
5166
- updateChart();
5167
5210
  return computeScrollLoad();
5168
5211
  };
5169
5212
  const handleLazyRecalculate = () => {
@@ -5384,7 +5427,7 @@ const maxYHeight = 5e6;
5384
5427
  }
5385
5428
  ySpaceHeight = maxYHeight;
5386
5429
  }
5387
- const bodyChartWrapperElem = getRefElem(elemStore['main-chart-wrapper']);
5430
+ const bodyChartWrapperElem = getRefElem(elemStore['main-chart-task-wrapper']);
5388
5431
  if (bodyTableElem) {
5389
5432
  bodyTableElem.style.transform = `translate(${reactData.scrollXLeft || 0}px, ${scrollYTop}px)`;
5390
5433
  }
@@ -5399,6 +5442,11 @@ const maxYHeight = 5e6;
5399
5442
  if (scrollYSpaceEl) {
5400
5443
  scrollYSpaceEl.style.height = ySpaceHeight ? `${ySpaceHeight}px` : '';
5401
5444
  }
5445
+ const lineWrapper = getRefElem(elemStore['main-chart-line-wrapper']);
5446
+ const svgElem = lineWrapper ? lineWrapper.firstElementChild : null;
5447
+ if (svgElem) {
5448
+ svgElem.style.height = ySpaceHeight ? `${ySpaceHeight}px` : '';
5449
+ }
5402
5450
  reactData.scrollYTop = scrollYTop;
5403
5451
  reactData.scrollYHeight = scrollYHeight;
5404
5452
  reactData.isScrollYBig = isScrollYBig;
@@ -5890,6 +5938,7 @@ var external_root_VxeUITable_commonjs_vxe_table_commonjs2_vxe_table_amd_vxe_tabl
5890
5938
 
5891
5939
 
5892
5940
 
5941
+
5893
5942
  const {
5894
5943
  getConfig,
5895
5944
  getIcon,
@@ -5908,6 +5957,9 @@ const tableComponentMethodKeys = ['clearAll', 'syncData', 'updateData', 'loadDat
5908
5957
  const defaultLayouts = [['Form'], ['Toolbar', 'Top', 'Gantt', 'Bottom', 'Pager']];
5909
5958
  function gantt_createInternalData() {
5910
5959
  return {
5960
+ linkFromConfMaps: {},
5961
+ linkFromKeyMaps: {},
5962
+ linkUniqueMaps: {},
5911
5963
  uFoot: false,
5912
5964
  resizeTableWidth: 0
5913
5965
  // barTipTimeout: null
@@ -5939,15 +5991,17 @@ function getViewTypeLevel(type) {
5939
5991
  toolbarConfig: Object,
5940
5992
  formConfig: Object,
5941
5993
  zoomConfig: Object,
5994
+ links: Array,
5942
5995
  layouts: Array,
5943
5996
  taskConfig: Object,
5944
5997
  taskViewScaleConfig: Object,
5945
5998
  taskViewConfig: Object,
5999
+ taskLinkConfig: Object,
5946
6000
  taskBarConfig: Object,
5947
6001
  taskBarTooltipConfig: Object,
5948
6002
  taskSplitConfig: Object,
5949
6003
  taskBarResizeConfig: Object,
5950
- taskBarDragConfig: Object,
6004
+ taskBarMoveConfig: Object,
5951
6005
  size: {
5952
6006
  type: String,
5953
6007
  default: () => getConfig().gantt.size || getConfig().size
@@ -5973,6 +6027,7 @@ function getViewTypeLevel(type) {
5973
6027
  tableLoading: false,
5974
6028
  proxyInited: false,
5975
6029
  isZMax: false,
6030
+ tableLinks: [],
5976
6031
  tableData: [],
5977
6032
  filterData: [],
5978
6033
  formData: {},
@@ -5992,7 +6047,9 @@ function getViewTypeLevel(type) {
5992
6047
  content: '',
5993
6048
  visible: false,
5994
6049
  params: null
5995
- }
6050
+ },
6051
+ linkList: [],
6052
+ upLinkFlag: 0
5996
6053
  });
5997
6054
  const internalData = gantt_createInternalData();
5998
6055
  const refElem = (0,external_commonjs_vue_commonjs2_vue_root_Vue_.ref)();
@@ -6069,8 +6126,8 @@ function getViewTypeLevel(type) {
6069
6126
  const computeTaskBarOpts = (0,external_commonjs_vue_commonjs2_vue_root_Vue_.computed)(() => {
6070
6127
  return Object.assign({}, getConfig().gantt.taskBarConfig, props.taskBarConfig);
6071
6128
  });
6072
- const computeTaskBarDragOpts = (0,external_commonjs_vue_commonjs2_vue_root_Vue_.computed)(() => {
6073
- return Object.assign({}, getConfig().gantt.taskBarDragConfig, props.taskBarDragConfig);
6129
+ const computeTaskBarMoveOpts = (0,external_commonjs_vue_commonjs2_vue_root_Vue_.computed)(() => {
6130
+ return Object.assign({}, getConfig().gantt.taskBarMoveConfig, props.taskBarMoveConfig);
6074
6131
  });
6075
6132
  const computeTaskBarResizeOpts = (0,external_commonjs_vue_commonjs2_vue_root_Vue_.computed)(() => {
6076
6133
  return Object.assign({}, getConfig().gantt.taskBarResizeConfig, props.taskBarResizeConfig);
@@ -6081,6 +6138,9 @@ function getViewTypeLevel(type) {
6081
6138
  const computeTaskBarTooltipOpts = (0,external_commonjs_vue_commonjs2_vue_root_Vue_.computed)(() => {
6082
6139
  return Object.assign({}, getConfig().gantt.taskBarTooltipConfig, props.taskBarTooltipConfig);
6083
6140
  });
6141
+ const computeTaskLinkOpts = (0,external_commonjs_vue_commonjs2_vue_root_Vue_.computed)(() => {
6142
+ return Object.assign({}, getConfig().gantt.taskLinkConfig, props.taskLinkConfig);
6143
+ });
6084
6144
  const computeScaleUnit = (0,external_commonjs_vue_commonjs2_vue_root_Vue_.computed)(() => {
6085
6145
  const minScale = computeMinScale.value;
6086
6146
  return minScale ? minScale.type : 'date';
@@ -6355,10 +6415,11 @@ function getViewTypeLevel(type) {
6355
6415
  computeTaskViewScaleOpts,
6356
6416
  computeTaskViewOpts,
6357
6417
  computeTaskBarOpts,
6358
- computeTaskBarDragOpts,
6418
+ computeTaskBarMoveOpts,
6359
6419
  computeTaskBarResizeOpts,
6360
6420
  computeTaskSplitOpts,
6361
6421
  computeTaskBarTooltipOpts,
6422
+ computeTaskLinkOpts,
6362
6423
  computeTaskViewScales,
6363
6424
  computeScaleUnit,
6364
6425
  computeMinScale,
@@ -6813,6 +6874,62 @@ function getViewTypeLevel(type) {
6813
6874
  const handleSplitRightViewEvent = () => {
6814
6875
  reactData.showRightView = !reactData.showRightView;
6815
6876
  };
6877
+ const handleTableLinks = () => {
6878
+ const {
6879
+ linkList
6880
+ } = reactData;
6881
+ reactData.tableLinks = linkList.slice(0);
6882
+ };
6883
+ const handleTaskAddLink = (item, linkConfs, fromConfMaps, fromKeyMaps, uniqueMaps) => {
6884
+ if (item) {
6885
+ const {
6886
+ type,
6887
+ from,
6888
+ to,
6889
+ lineStatus,
6890
+ lineColor,
6891
+ lineTyle,
6892
+ lineWidth,
6893
+ showArrow
6894
+ } = item;
6895
+ const tlKey = getTaskLinkKey(from, to);
6896
+ if (from && to && !uniqueMaps[tlKey]) {
6897
+ let confs = fromConfMaps[from];
6898
+ if (!confs) {
6899
+ confs = fromConfMaps[from] = [];
6900
+ }
6901
+ const confObj = {
6902
+ type,
6903
+ from,
6904
+ to,
6905
+ lineStatus,
6906
+ lineColor,
6907
+ lineTyle,
6908
+ lineWidth,
6909
+ showArrow
6910
+ };
6911
+ confs.push(confObj);
6912
+ linkConfs.push(confObj);
6913
+ fromKeyMaps[from] = confObj;
6914
+ uniqueMaps[tlKey] = confObj;
6915
+ }
6916
+ }
6917
+ };
6918
+ const handleTaskUpdateLinks = links => {
6919
+ const linkConfs = [];
6920
+ const fromConfMaps = {};
6921
+ const fromKeyMaps = {};
6922
+ const uniqueMaps = {};
6923
+ external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().each(links || [], item => {
6924
+ handleTaskAddLink(item, linkConfs, fromConfMaps, fromKeyMaps, uniqueMaps);
6925
+ });
6926
+ reactData.linkList = linkConfs;
6927
+ internalData.linkFromConfMaps = fromConfMaps;
6928
+ internalData.linkFromKeyMaps = fromKeyMaps;
6929
+ internalData.linkUniqueMaps = uniqueMaps;
6930
+ $xeGantt.handleTableLinks();
6931
+ return (0,external_commonjs_vue_commonjs2_vue_root_Vue_.nextTick)();
6932
+ };
6816
6933
  const tableCompEvents = {};
6817
6934
  tableEmits.forEach(name => {
6818
6935
  const type = external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().camelCase(`on-${name}`);
@@ -7876,6 +7993,9 @@ function getViewTypeLevel(type) {
7876
7993
  $xeGantt.closeTaskBarTooltip();
7877
7994
  }
7878
7995
  },
7996
+ handleTableLinks,
7997
+ handleTaskAddLink,
7998
+ handleTaskUpdateLinks,
7879
7999
  handleTaskHeaderContextmenuEvent(evnt, params) {
7880
8000
  const $xeTable = refTable.value;
7881
8001
  if ($xeTable) {
@@ -8455,9 +8575,20 @@ function getViewTypeLevel(type) {
8455
8575
  }
8456
8576
  }
8457
8577
  });
8578
+ if (props.links) {
8579
+ $xeGantt.handleTaskUpdateLinks(props.links);
8580
+ }
8458
8581
  handleTaskScaleConfig();
8459
8582
  initPages();
8460
8583
  (0,external_commonjs_vue_commonjs2_vue_root_Vue_.onMounted)(() => {
8584
+ if (!$xeGantt.handleUpdateTaskLink) {
8585
+ if (props.links) {
8586
+ warnLog('vxe.error.notProp', ['links']);
8587
+ }
8588
+ if (props.taskLinkConfig) {
8589
+ warnLog('vxe.error.notProp', ['task-link-config']);
8590
+ }
8591
+ }
8461
8592
  (0,external_commonjs_vue_commonjs2_vue_root_Vue_.nextTick)(() => {
8462
8593
  const {
8463
8594
  columns
@@ -8506,11 +8637,36 @@ function getViewTypeLevel(type) {
8506
8637
  return this.renderVN();
8507
8638
  }
8508
8639
  }));
8640
+ ;// ./packages/gantt/src/static.ts
8641
+ /**
8642
+ * 依赖线枚举类型
8643
+ */
8644
+ var VxeGanttDependencyType;
8645
+ (function (VxeGanttDependencyType) {
8646
+ /**
8647
+ * 结束后才开始,表示一个任务必须在另一个任务开始之前完成
8648
+ */
8649
+ VxeGanttDependencyType[VxeGanttDependencyType["FinishToStart"] = 0] = "FinishToStart";
8650
+ /**
8651
+ * 开始到结束,表示从某个过程的开始到结束的整个过程
8652
+ */
8653
+ VxeGanttDependencyType[VxeGanttDependencyType["StartToFinish"] = 1] = "StartToFinish";
8654
+ /**
8655
+ * 开始后才开始,表示一个活动结束了,另一个活动才能开始,它们之间按先后顺序进行
8656
+ */
8657
+ VxeGanttDependencyType[VxeGanttDependencyType["StartToStart"] = 2] = "StartToStart";
8658
+ /**
8659
+ * 完成到完成,表示一个任务必须在另一个任务完成之后才能完成
8660
+ */
8661
+ VxeGanttDependencyType[VxeGanttDependencyType["FinishToFinish"] = 3] = "FinishToFinish";
8662
+ })(VxeGanttDependencyType || (VxeGanttDependencyType = {}));
8509
8663
  ;// ./packages/gantt/index.ts
8510
8664
 
8511
8665
 
8666
+
8512
8667
  const VxeGantt = Object.assign({}, gantt, {
8513
8668
  install(app) {
8669
+ checkDependVersion();
8514
8670
  app.component(gantt.name, gantt);
8515
8671
  }
8516
8672
  });
@@ -8518,6 +8674,7 @@ if (core_.VxeUI.dynamicApp) {
8518
8674
  core_.VxeUI.dynamicApp.use(VxeGantt);
8519
8675
  }
8520
8676
  core_.VxeUI.component(gantt);
8677
+
8521
8678
  const Gantt = VxeGantt;
8522
8679
  /* harmony default export */ var packages_gantt = (VxeGantt);
8523
8680
  ;// ./packages/components.ts