vxe-gantt 4.1.2 → 4.1.4

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.
@@ -12,6 +12,7 @@ export default defineVxeComponent({
12
12
  setup() {
13
13
  const $xeGantt = inject('$xeGantt', {});
14
14
  const $xeGanttView = inject('$xeGanttView', {});
15
+ const { internalData: ganttInternalData } = $xeGantt;
15
16
  const { reactData, internalData } = $xeGanttView;
16
17
  const { computeProgressField, computeTitleField, computeTaskBarOpts, computeScaleUnit } = $xeGantt.getComputeMaps();
17
18
  const refElem = ref();
@@ -84,13 +85,19 @@ export default defineVxeComponent({
84
85
  };
85
86
  if (showTooltip) {
86
87
  ons.onMouseover = (evnt) => {
88
+ const { dragBarRow } = ganttInternalData;
87
89
  const ttParams = Object.assign({ $event: evnt }, ctParams);
88
- $xeGantt.triggerTaskBarTooltipEvent(evnt, ttParams);
90
+ if (!dragBarRow) {
91
+ $xeGantt.triggerTaskBarTooltipEvent(evnt, ttParams);
92
+ }
89
93
  $xeGantt.dispatchEvent('task-bar-mouseenter', ttParams, evnt);
90
94
  };
91
95
  ons.onMouseleave = (evnt) => {
96
+ const { dragBarRow } = ganttInternalData;
92
97
  const ttParams = Object.assign({ $event: evnt }, ctParams);
93
- $xeGantt.handleTaskBarTooltipLeaveEvent(evnt, ttParams);
98
+ if (!dragBarRow) {
99
+ $xeGantt.handleTaskBarTooltipLeaveEvent(evnt, ttParams);
100
+ }
94
101
  $xeGantt.dispatchEvent('task-bar-mouseleave', ttParams, evnt);
95
102
  };
96
103
  }
@@ -42,7 +42,8 @@ export default defineVxeComponent({
42
42
  setup(props, context) {
43
43
  const xID = XEUtils.uniqueId();
44
44
  const $xeGantt = inject('$xeGantt', {});
45
- const { computeTaskOpts, computeStartField, computeEndField, computeScrollbarOpts, computeScrollbarXToTop, computeScrollbarYToLeft, computeScaleUnit, computeWeekScale, computeMinScale } = $xeGantt.getComputeMaps();
45
+ const { internalData: ganttInternalData } = $xeGantt;
46
+ const { computeTaskOpts, computeTaskViewOpts, computeStartField, computeEndField, computeScrollbarOpts, computeScrollbarXToTop, computeScrollbarYToLeft, computeScaleUnit, computeWeekScale, computeMinScale } = $xeGantt.getComputeMaps();
46
47
  const refElem = ref();
47
48
  const refScrollXVirtualElem = ref();
48
49
  const refScrollYVirtualElem = ref();
@@ -93,17 +94,20 @@ export default defineVxeComponent({
93
94
  };
94
95
  const computeScaleDateList = computed(() => {
95
96
  const { minViewDate, maxViewDate } = reactData;
97
+ const taskViewOpts = computeTaskViewOpts.value;
96
98
  const minScale = computeMinScale.value;
99
+ const { gridding } = taskViewOpts;
97
100
  const dateList = [];
98
101
  if (!minViewDate || !maxViewDate) {
99
102
  return dateList;
100
103
  }
101
- const startTime = minViewDate.getTime();
102
- const endTime = maxViewDate.getTime();
104
+ const leftSize = -XEUtils.toNumber(gridding ? gridding.leftSpacing || 0 : 0);
105
+ const rightSize = XEUtils.toNumber(gridding ? gridding.rightSpacing || 0 : 0);
103
106
  switch (minScale.type) {
104
107
  case 'year': {
105
- let currDate = XEUtils.getWhatYear(minViewDate, 0, 'first');
106
- while (currDate <= maxViewDate) {
108
+ let currDate = XEUtils.getWhatYear(minViewDate, leftSize, 'first');
109
+ const endDate = XEUtils.getWhatYear(maxViewDate, rightSize, 'first');
110
+ while (currDate <= endDate) {
107
111
  const itemDate = currDate;
108
112
  dateList.push(itemDate);
109
113
  currDate = XEUtils.getWhatYear(currDate, 1);
@@ -111,8 +115,9 @@ export default defineVxeComponent({
111
115
  break;
112
116
  }
113
117
  case 'quarter': {
114
- let currDate = XEUtils.getWhatQuarter(minViewDate, 0, 'first');
115
- while (currDate <= maxViewDate) {
118
+ let currDate = XEUtils.getWhatQuarter(minViewDate, leftSize, 'first');
119
+ const endDate = XEUtils.getWhatQuarter(maxViewDate, rightSize, 'first');
120
+ while (currDate <= endDate) {
116
121
  const itemDate = currDate;
117
122
  dateList.push(itemDate);
118
123
  currDate = XEUtils.getWhatQuarter(currDate, 1);
@@ -120,8 +125,9 @@ export default defineVxeComponent({
120
125
  break;
121
126
  }
122
127
  case 'month': {
123
- let currDate = XEUtils.getWhatMonth(minViewDate, 0, 'first');
124
- while (currDate <= maxViewDate) {
128
+ let currDate = XEUtils.getWhatMonth(minViewDate, leftSize, 'first');
129
+ const endDate = XEUtils.getWhatMonth(maxViewDate, rightSize, 'first');
130
+ while (currDate <= endDate) {
125
131
  const itemDate = currDate;
126
132
  dateList.push(itemDate);
127
133
  currDate = XEUtils.getWhatMonth(currDate, 1);
@@ -129,8 +135,9 @@ export default defineVxeComponent({
129
135
  break;
130
136
  }
131
137
  case 'week': {
132
- let currDate = XEUtils.getWhatWeek(minViewDate, 0, minScale.startDay, minScale.startDay);
133
- while (currDate <= maxViewDate) {
138
+ let currDate = XEUtils.getWhatWeek(minViewDate, leftSize, minScale.startDay, minScale.startDay);
139
+ const endDate = XEUtils.getWhatWeek(maxViewDate, rightSize, minScale.startDay, minScale.startDay);
140
+ while (currDate <= endDate) {
134
141
  const itemDate = currDate;
135
142
  dateList.push(itemDate);
136
143
  currDate = XEUtils.getWhatWeek(currDate, 1);
@@ -138,12 +145,22 @@ export default defineVxeComponent({
138
145
  break;
139
146
  }
140
147
  case 'day':
141
- case 'date':
148
+ case 'date': {
149
+ let currDate = XEUtils.getWhatDay(minViewDate, leftSize, 'first');
150
+ const endDate = XEUtils.getWhatDay(maxViewDate, rightSize, 'first');
151
+ while (currDate <= endDate) {
152
+ const itemDate = currDate;
153
+ dateList.push(itemDate);
154
+ currDate = XEUtils.getWhatDay(currDate, 1);
155
+ }
156
+ break;
157
+ }
142
158
  case 'hour':
143
159
  case 'minute':
144
160
  case 'second': {
145
161
  const gapTime = getStandardGapTime(minScale.type);
146
- let currTime = startTime;
162
+ let currTime = minViewDate.getTime() + (leftSize * gapTime);
163
+ const endTime = maxViewDate.getTime() + (rightSize * gapTime);
147
164
  while (currTime <= endTime) {
148
165
  const itemDate = new Date(currTime);
149
166
  dateList.push(itemDate);
@@ -246,12 +263,13 @@ export default defineVxeComponent({
246
263
  };
247
264
  for (let i = 0; i < scaleDateList.length; i++) {
248
265
  const itemDate = scaleDateList[i];
249
- const [yyyy, MM, dd, HH, mm, ss] = XEUtils.toDateString(itemDate, 'yyyy-M-d-H-m-s').split('-');
266
+ const [yy, yyyy, M, MM, d, dd, H, HH, m, mm, s, ss] = XEUtils.toDateString(itemDate, 'yy-yyyy-M-MM-d-dd-H-HH-m-mm-s-ss').split('-');
250
267
  const e = itemDate.getDay();
251
268
  const E = e + 1;
252
269
  const q = Math.ceil((itemDate.getMonth() + 1) / 3);
253
- const W = XEUtils.getYearWeek(itemDate, weekScale ? weekScale.startDay : undefined);
254
- const dateObj = { date: itemDate, yy: yyyy, M: MM, d: dd, H: HH, m: mm, s: ss, q, W, E, e };
270
+ const W = `${XEUtils.getYearWeek(itemDate, weekScale ? weekScale.startDay : undefined)}`;
271
+ const WW = XEUtils.padStart(W, 2, '0');
272
+ const dateObj = { date: itemDate, yy, yyyy, M, MM, d, dd, H, HH, m, mm, s, ss, q, W, WW, E, e };
255
273
  const colMaps = {
256
274
  year: {
257
275
  field: yyyy,
@@ -380,7 +398,7 @@ export default defineVxeComponent({
380
398
  const offsetLeftSize = (indexMaps[startStr] || 0) + subtract;
381
399
  return {
382
400
  offsetLeftSize,
383
- offsetWidthSize: (indexMaps[endStr] || 0) - offsetLeftSize + addSize
401
+ offsetWidthSize: (indexMaps[endStr] || 0) - offsetLeftSize + addSize + 1
384
402
  };
385
403
  };
386
404
  }
@@ -403,7 +421,7 @@ export default defineVxeComponent({
403
421
  const offsetLeftSize = (indexMaps[startStr] || 0) + subtract;
404
422
  return {
405
423
  offsetLeftSize,
406
- offsetWidthSize: (indexMaps[endStr] || 0) - offsetLeftSize + addSize
424
+ offsetWidthSize: (indexMaps[endStr] || 0) - offsetLeftSize + addSize + 1
407
425
  };
408
426
  };
409
427
  }
@@ -426,7 +444,7 @@ export default defineVxeComponent({
426
444
  const offsetLeftSize = (indexMaps[startStr] || 0) + subtract;
427
445
  return {
428
446
  offsetLeftSize,
429
- offsetWidthSize: (indexMaps[endStr] || 0) - offsetLeftSize + addSize
447
+ offsetWidthSize: (indexMaps[endStr] || 0) - offsetLeftSize + addSize + 1
430
448
  };
431
449
  };
432
450
  }
@@ -449,7 +467,7 @@ export default defineVxeComponent({
449
467
  const offsetLeftSize = (indexMaps[startStr] || 0) + subtract;
450
468
  return {
451
469
  offsetLeftSize,
452
- offsetWidthSize: (indexMaps[endStr] || 0) - offsetLeftSize + addSize
470
+ offsetWidthSize: (indexMaps[endStr] || 0) - offsetLeftSize + addSize + 1
453
471
  };
454
472
  };
455
473
  }
@@ -473,7 +491,7 @@ export default defineVxeComponent({
473
491
  const offsetLeftSize = (indexMaps[startStr] || 0) + subtract;
474
492
  return {
475
493
  offsetLeftSize,
476
- offsetWidthSize: (indexMaps[endStr] || 0) - offsetLeftSize + addSize
494
+ offsetWidthSize: (indexMaps[endStr] || 0) - offsetLeftSize + addSize + 1
477
495
  };
478
496
  };
479
497
  }
@@ -496,7 +514,7 @@ export default defineVxeComponent({
496
514
  const offsetLeftSize = (indexMaps[startStr] || 0) + subtract;
497
515
  return {
498
516
  offsetLeftSize,
499
- offsetWidthSize: (indexMaps[endStr] || 0) - offsetLeftSize + addSize
517
+ offsetWidthSize: (indexMaps[endStr] || 0) - offsetLeftSize + addSize + 1
500
518
  };
501
519
  };
502
520
  }
@@ -519,7 +537,7 @@ export default defineVxeComponent({
519
537
  const offsetLeftSize = (indexMaps[startStr] || 0) + subtract;
520
538
  return {
521
539
  offsetLeftSize,
522
- offsetWidthSize: (indexMaps[endStr] || 0) - offsetLeftSize + addSize
540
+ offsetWidthSize: (indexMaps[endStr] || 0) - offsetLeftSize + addSize + 1
523
541
  };
524
542
  };
525
543
  }
@@ -687,16 +705,21 @@ export default defineVxeComponent({
687
705
  }
688
706
  };
689
707
  const updateChart = () => {
708
+ const { dragBarRow } = ganttInternalData;
690
709
  const { viewCellWidth } = reactData;
691
710
  const { elemStore, chartMaps } = internalData;
711
+ const $xeTable = internalData.xeTable;
692
712
  const chartWrapper = getRefElem(elemStore['main-chart-wrapper']);
693
- if (chartWrapper) {
713
+ if (chartWrapper && $xeTable) {
694
714
  XEUtils.arrayEach(chartWrapper.children, (rowEl) => {
695
715
  const barEl = rowEl.children[0];
696
716
  if (!barEl) {
697
717
  return;
698
718
  }
699
719
  const rowid = rowEl.getAttribute('rowid');
720
+ if (dragBarRow && $xeTable.getRowid(dragBarRow) === rowid) {
721
+ return;
722
+ }
700
723
  const rowRest = rowid ? chartMaps[rowid] : null;
701
724
  barEl.style.left = `${rowRest ? viewCellWidth * rowRest.oLeftSize : 0}px`;
702
725
  barEl.style.width = `${rowRest ? viewCellWidth * rowRest.oWidthSize : 0}px`;
@@ -19,7 +19,8 @@ function createInternalData() {
19
19
  return {
20
20
  uFoot: false,
21
21
  resizeTableWidth: 0
22
- // barTipTimeout: undefined
22
+ // barTipTimeout: null
23
+ // dragBarRow: null
23
24
  };
24
25
  }
25
26
  const viewTypeLevelMaps = {
@@ -379,6 +380,7 @@ export default defineVxeComponent({
379
380
  refForm,
380
381
  refToolbar,
381
382
  refPager,
383
+ refGanttView,
382
384
  refGanttContainerElem,
383
385
  refClassifyWrapperElem,
384
386
  refPopupContainerElem
@@ -423,28 +425,24 @@ export default defineVxeComponent({
423
425
  const taskScaleConfs = computeTaskViewScales.value;
424
426
  const taskViewScaleOpts = computeTaskViewScaleOpts.value;
425
427
  const scaleConfs = [];
426
- if (taskScaleConfs) {
427
- const keyMaps = {};
428
- taskScaleConfs.forEach(conf => {
429
- const sConf = !conf || XEUtils.isString(conf) ? { type: conf } : conf;
430
- const { type } = sConf;
431
- if (!type || !viewTypeLevelMaps[type]) {
432
- errLog('vxe.error.errProp', [`type=${type}`, XEUtils.keys(viewTypeLevelMaps).join(',')]);
433
- return;
434
- }
435
- if (keyMaps[type]) {
436
- errLog('vxe.error.repeatProp', ['type', type]);
437
- return;
438
- }
439
- keyMaps[type] = true;
440
- scaleConfs.push(Object.assign({}, type ? taskViewScaleOpts[type] || {} : {}, sConf, {
441
- level: getViewTypeLevel(type)
442
- }));
443
- });
444
- }
445
- if (!scaleConfs.length) {
446
- scaleConfs.push({ type: 'month', level: viewTypeLevelMaps.month }, { type: 'date', level: viewTypeLevelMaps.date });
447
- }
428
+ const keyMaps = {};
429
+ const scaleList = (taskScaleConfs && taskScaleConfs.length ? taskScaleConfs : ['month', 'date']);
430
+ scaleList.forEach(conf => {
431
+ const sConf = !conf || XEUtils.isString(conf) ? { type: conf } : conf;
432
+ const { type } = sConf;
433
+ if (!type || !viewTypeLevelMaps[type]) {
434
+ errLog('vxe.error.errProp', [`type=${type}`, XEUtils.keys(viewTypeLevelMaps).join(',')]);
435
+ return;
436
+ }
437
+ if (keyMaps[type]) {
438
+ errLog('vxe.error.repeatProp', ['type', type]);
439
+ return;
440
+ }
441
+ keyMaps[type] = true;
442
+ scaleConfs.push(Object.assign({}, type ? taskViewScaleOpts[type] || {} : {}, sConf, {
443
+ level: getViewTypeLevel(type)
444
+ }));
445
+ });
448
446
  reactData.taskScaleList = XEUtils.orderBy(scaleConfs, { field: 'level', order: 'desc' });
449
447
  };
450
448
  const initToolbar = () => {
package/es/ui/index.js CHANGED
@@ -1,7 +1,9 @@
1
1
  import { VxeUI } from '@vxe-ui/core';
2
2
  import { errLog } from './src/log';
3
3
  const { setConfig, setIcon, checkVersion } = VxeUI;
4
- VxeUI.ganttVersion = "4.1.2";
4
+ VxeUI.ganttVersion = "4.1.4";
5
+ const ymdFormat = 'yyyy-MM-dd';
6
+ const ymdhmsFormat = 'yyyy-MM-dd HH:mm:ss';
5
7
  setConfig({
6
8
  gantt: {
7
9
  // size: null,
@@ -44,12 +46,41 @@ setConfig({
44
46
  enterable: true
45
47
  },
46
48
  taskViewScaleConfig: {
49
+ year: {
50
+ valueFormat: ymdFormat
51
+ },
52
+ quarter: {
53
+ valueFormat: ymdFormat
54
+ },
55
+ month: {
56
+ valueFormat: ymdFormat
57
+ },
47
58
  week: {
48
- startDay: 1
59
+ startDay: 1,
60
+ valueFormat: ymdFormat
61
+ },
62
+ day: {
63
+ valueFormat: ymdFormat
64
+ },
65
+ date: {
66
+ valueFormat: ymdFormat
67
+ },
68
+ hour: {
69
+ valueFormat: ymdhmsFormat
70
+ },
71
+ minute: {
72
+ valueFormat: ymdhmsFormat
73
+ },
74
+ second: {
75
+ valueFormat: ymdhmsFormat
49
76
  }
50
77
  },
51
78
  taskViewConfig: {
52
- showNowLine: true
79
+ showNowLine: true,
80
+ gridding: {
81
+ // leftSpacing: 0,
82
+ // rightSpacing: 0
83
+ }
53
84
  },
54
85
  taskSplitConfig: {
55
86
  enabled: true,
package/es/ui/src/log.js CHANGED
@@ -1,5 +1,5 @@
1
1
  import { VxeUI } from '@vxe-ui/core';
2
2
  const { log } = VxeUI;
3
- const version = `gantt v${"4.1.2"}`;
3
+ const version = `gantt v${"4.1.4"}`;
4
4
  export const warnLog = log.create('warn', version);
5
5
  export const errLog = log.create('error', version);
@@ -21,6 +21,9 @@ var _default = exports.default = (0, _comp.defineVxeComponent)({
21
21
  setup() {
22
22
  const $xeGantt = (0, _vue.inject)('$xeGantt', {});
23
23
  const $xeGanttView = (0, _vue.inject)('$xeGanttView', {});
24
+ const {
25
+ internalData: ganttInternalData
26
+ } = $xeGantt;
24
27
  const {
25
28
  reactData,
26
29
  internalData
@@ -131,17 +134,27 @@ var _default = exports.default = (0, _comp.defineVxeComponent)({
131
134
  };
132
135
  if (showTooltip) {
133
136
  ons.onMouseover = evnt => {
137
+ const {
138
+ dragBarRow
139
+ } = ganttInternalData;
134
140
  const ttParams = Object.assign({
135
141
  $event: evnt
136
142
  }, ctParams);
137
- $xeGantt.triggerTaskBarTooltipEvent(evnt, ttParams);
143
+ if (!dragBarRow) {
144
+ $xeGantt.triggerTaskBarTooltipEvent(evnt, ttParams);
145
+ }
138
146
  $xeGantt.dispatchEvent('task-bar-mouseenter', ttParams, evnt);
139
147
  };
140
148
  ons.onMouseleave = evnt => {
149
+ const {
150
+ dragBarRow
151
+ } = ganttInternalData;
141
152
  const ttParams = Object.assign({
142
153
  $event: evnt
143
154
  }, ctParams);
144
- $xeGantt.handleTaskBarTooltipLeaveEvent(evnt, ttParams);
155
+ if (!dragBarRow) {
156
+ $xeGantt.handleTaskBarTooltipLeaveEvent(evnt, ttParams);
157
+ }
145
158
  $xeGantt.dispatchEvent('task-bar-mouseleave', ttParams, evnt);
146
159
  };
147
160
  }
@@ -1 +1 @@
1
- Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=void 0;var _vue=require("vue"),_comp=require("../../ui/src/comp"),_core=require("@vxe-ui/core"),_xeUtils=_interopRequireDefault(require("xe-utils")),_util=require("./util"),_utils=require("../../ui/src/utils");function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e}}let renderEmptyElement=_core.VxeUI.renderEmptyElement,sourceType="gantt",viewType="chart";var _default=exports.default=(0,_comp.defineVxeComponent)({name:"VxeGanttViewChart",setup(){let C=(0,_vue.inject)("$xeGantt",{}),a=(0,_vue.inject)("$xeGanttView",{}),{reactData:r,internalData:t}=a,{computeProgressField:D,computeTitleField:M,computeTaskBarOpts:B,computeScaleUnit:q}=C.getComputeMaps(),l=(0,_vue.ref)(),w=(e,t,a,r,l,n)=>{var o=e.props.treeConfig,u=e.reactData.resizeHeightFlag,i=e.internalData.fullAllDataRowIdData,{computeCellOpts:e,computeRowOpts:s,computeDefaultRowHeight:c}=e.getComputeMaps(),e=e.value,s=s.value,c=c.value,v=C.context.slots,v=v.taskBar||v["task-bar"],d=M.value,p=D.value,g=B.value,h=q.value;let m={$gantt:C,row:t,scaleType:h};var{showProgress:g,showContent:w,contentMethod:x,barStyle:_,drag:f,showTooltip:T}=g,E=_xeUtils.default.isFunction(_),_=(_?E?_(m):_:{})||{},k=_.round,i=i[a]||{},u=0<(u?i.resizeHeight:0),i=(0,_util.getCellRestHeight)(i,e,s,c);let b=(0,_utils.getStringValue)(_xeUtils.default.get(t,d));e={},s={width:`${(g?Math.min(100,Math.max(0,_xeUtils.default.toNumber(_xeUtils.default.get(t,p)))):0)||0}%`};E&&({bgColor:c,completedBgColor:d}=_,c&&(e.backgroundColor=c),d)&&(s.backgroundColor=d),x&&(b=(0,_utils.getStringValue)(x({row:t,title:b,scaleType:h})));let y={$gantt:C,source:sourceType,type:viewType,scaleType:h,row:t,$rowIndex:l,rowIndex:r,_rowIndex:n};p={onClick(e){C.handleTaskBarClickEvent(e,m)},onDblclick(e){C.handleTaskBarDblclickEvent(e,m)},onMousedown(e){C.handleTaskBarMousedownEvent&&C.handleTaskBarMousedownEvent(e,m)}};return T&&(p.onMouseover=e=>{var t=Object.assign({$event:e},y);C.triggerTaskBarTooltipEvent(e,t),C.dispatchEvent("task-bar-mouseenter",t,e)},p.onMouseleave=e=>{var t=Object.assign({$event:e},y);C.handleTaskBarTooltipLeaveEvent(e,t),C.dispatchEvent("task-bar-mouseleave",t,e)}),(0,_vue.h)("div",{key:o?a:l,rowid:a,class:["vxe-gantt-view--chart-row",{"is--round":k,"is--drag":f,"col--rs-height":u}],style:{height:i+"px"},onContextmenu(e){C.handleTaskBarContextmenuEvent(e,y)}},[(0,_vue.h)("div",Object.assign({class:v?"vxe-gantt-view--chart-custom-bar":"vxe-gantt-view--chart-bar",style:e,rowid:a},p),v?C.callSlot(v,m):[g?(0,_vue.h)("div",{class:"vxe-gantt-view--chart-progress",style:s}):renderEmptyElement(C),w?(0,_vue.h)("div",{class:"vxe-gantt-view--chart-content"},b):renderEmptyElement(C)])])},x=(i,e)=>{let s=i.props.treeConfig,c=i.reactData.treeExpandedFlag,{fullAllDataRowIdData:v,treeExpandedMaps:d}=i.internalData;var t=i.getComputeMaps().computeTreeOpts,t=t.value;let p=t.transform,g=t.children||t.childrenField,h=r.scrollYLoad,m=[];return e.forEach((e,t)=>{var a=i?i.getRowid(e):"",r=v[a]||{};let l=t,n=-1,o=(r&&(l=r.index,n=r._index),m.push(w(i,e,a,l,t,n)),!1),u=[];!s||h||p||(u=e[g],o=!!c&&u&&0<u.length&&!!d[a]),o&&m.push(...x(i,u))}),m};return(0,_vue.onMounted)(()=>{var e=t.elemStore;e["main-chart-wrapper"]=l}),(0,_vue.onUnmounted)(()=>{var e=t.elemStore;e["main-chart-wrapper"]=null}),()=>{var e=a.internalData.xeTable,t=r.tableData;return(0,_vue.h)("div",{ref:l,class:"vxe-gantt-view--chart-wrapper"},e?x(e,t):[])}}});
1
+ Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=void 0;var _vue=require("vue"),_comp=require("../../ui/src/comp"),_core=require("@vxe-ui/core"),_xeUtils=_interopRequireDefault(require("xe-utils")),_util=require("./util"),_utils=require("../../ui/src/utils");function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e}}let renderEmptyElement=_core.VxeUI.renderEmptyElement,sourceType="gantt",viewType="chart";var _default=exports.default=(0,_comp.defineVxeComponent)({name:"VxeGanttViewChart",setup(){let C=(0,_vue.inject)("$xeGantt",{}),a=(0,_vue.inject)("$xeGanttView",{}),D=C.internalData,{reactData:r,internalData:t}=a,{computeProgressField:M,computeTitleField:B,computeTaskBarOpts:R,computeScaleUnit:q}=C.getComputeMaps(),l=(0,_vue.ref)(),w=(e,t,a,r,l,n)=>{var o=e.props.treeConfig,u=e.reactData.resizeHeightFlag,i=e.internalData.fullAllDataRowIdData,{computeCellOpts:e,computeRowOpts:s,computeDefaultRowHeight:c}=e.getComputeMaps(),e=e.value,s=s.value,c=c.value,v=C.context.slots,v=v.taskBar||v["task-bar"],d=B.value,p=M.value,g=R.value,h=q.value;let m={$gantt:C,row:t,scaleType:h};var{showProgress:g,showContent:w,contentMethod:x,barStyle:_,drag:f,showTooltip:T}=g,E=_xeUtils.default.isFunction(_),_=(_?E?_(m):_:{})||{},k=_.round,i=i[a]||{},u=0<(u?i.resizeHeight:0),i=(0,_util.getCellRestHeight)(i,e,s,c);let b=(0,_utils.getStringValue)(_xeUtils.default.get(t,d));e={},s={width:`${(g?Math.min(100,Math.max(0,_xeUtils.default.toNumber(_xeUtils.default.get(t,p)))):0)||0}%`};E&&({bgColor:c,completedBgColor:d}=_,c&&(e.backgroundColor=c),d)&&(s.backgroundColor=d),x&&(b=(0,_utils.getStringValue)(x({row:t,title:b,scaleType:h})));let y={$gantt:C,source:sourceType,type:viewType,scaleType:h,row:t,$rowIndex:l,rowIndex:r,_rowIndex:n};p={onClick(e){C.handleTaskBarClickEvent(e,m)},onDblclick(e){C.handleTaskBarDblclickEvent(e,m)},onMousedown(e){C.handleTaskBarMousedownEvent&&C.handleTaskBarMousedownEvent(e,m)}};return T&&(p.onMouseover=e=>{var t=D.dragBarRow,a=Object.assign({$event:e},y);t||C.triggerTaskBarTooltipEvent(e,a),C.dispatchEvent("task-bar-mouseenter",a,e)},p.onMouseleave=e=>{var t=D.dragBarRow,a=Object.assign({$event:e},y);t||C.handleTaskBarTooltipLeaveEvent(e,a),C.dispatchEvent("task-bar-mouseleave",a,e)}),(0,_vue.h)("div",{key:o?a:l,rowid:a,class:["vxe-gantt-view--chart-row",{"is--round":k,"is--drag":f,"col--rs-height":u}],style:{height:i+"px"},onContextmenu(e){C.handleTaskBarContextmenuEvent(e,y)}},[(0,_vue.h)("div",Object.assign({class:v?"vxe-gantt-view--chart-custom-bar":"vxe-gantt-view--chart-bar",style:e,rowid:a},p),v?C.callSlot(v,m):[g?(0,_vue.h)("div",{class:"vxe-gantt-view--chart-progress",style:s}):renderEmptyElement(C),w?(0,_vue.h)("div",{class:"vxe-gantt-view--chart-content"},b):renderEmptyElement(C)])])},x=(i,e)=>{let s=i.props.treeConfig,c=i.reactData.treeExpandedFlag,{fullAllDataRowIdData:v,treeExpandedMaps:d}=i.internalData;var t=i.getComputeMaps().computeTreeOpts,t=t.value;let p=t.transform,g=t.children||t.childrenField,h=r.scrollYLoad,m=[];return e.forEach((e,t)=>{var a=i?i.getRowid(e):"",r=v[a]||{};let l=t,n=-1,o=(r&&(l=r.index,n=r._index),m.push(w(i,e,a,l,t,n)),!1),u=[];!s||h||p||(u=e[g],o=!!c&&u&&0<u.length&&!!d[a]),o&&m.push(...x(i,u))}),m};return(0,_vue.onMounted)(()=>{var e=t.elemStore;e["main-chart-wrapper"]=l}),(0,_vue.onUnmounted)(()=>{var e=t.elemStore;e["main-chart-wrapper"]=null}),()=>{var e=a.internalData.xeTable,t=r.tableData;return(0,_vue.h)("div",{ref:l,class:"vxe-gantt-view--chart-wrapper"},e?x(e,t):[])}}});
@@ -51,8 +51,12 @@ var _default = exports.default = (0, _comp.defineVxeComponent)({
51
51
  setup(props, context) {
52
52
  const xID = _xeUtils.default.uniqueId();
53
53
  const $xeGantt = (0, _vue.inject)('$xeGantt', {});
54
+ const {
55
+ internalData: ganttInternalData
56
+ } = $xeGantt;
54
57
  const {
55
58
  computeTaskOpts,
59
+ computeTaskViewOpts,
56
60
  computeStartField,
57
61
  computeEndField,
58
62
  computeScrollbarOpts,
@@ -115,18 +119,23 @@ var _default = exports.default = (0, _comp.defineVxeComponent)({
115
119
  minViewDate,
116
120
  maxViewDate
117
121
  } = reactData;
122
+ const taskViewOpts = computeTaskViewOpts.value;
118
123
  const minScale = computeMinScale.value;
124
+ const {
125
+ gridding
126
+ } = taskViewOpts;
119
127
  const dateList = [];
120
128
  if (!minViewDate || !maxViewDate) {
121
129
  return dateList;
122
130
  }
123
- const startTime = minViewDate.getTime();
124
- const endTime = maxViewDate.getTime();
131
+ const leftSize = -_xeUtils.default.toNumber(gridding ? gridding.leftSpacing || 0 : 0);
132
+ const rightSize = _xeUtils.default.toNumber(gridding ? gridding.rightSpacing || 0 : 0);
125
133
  switch (minScale.type) {
126
134
  case 'year':
127
135
  {
128
- let currDate = _xeUtils.default.getWhatYear(minViewDate, 0, 'first');
129
- while (currDate <= maxViewDate) {
136
+ let currDate = _xeUtils.default.getWhatYear(minViewDate, leftSize, 'first');
137
+ const endDate = _xeUtils.default.getWhatYear(maxViewDate, rightSize, 'first');
138
+ while (currDate <= endDate) {
130
139
  const itemDate = currDate;
131
140
  dateList.push(itemDate);
132
141
  currDate = _xeUtils.default.getWhatYear(currDate, 1);
@@ -135,8 +144,9 @@ var _default = exports.default = (0, _comp.defineVxeComponent)({
135
144
  }
136
145
  case 'quarter':
137
146
  {
138
- let currDate = _xeUtils.default.getWhatQuarter(minViewDate, 0, 'first');
139
- while (currDate <= maxViewDate) {
147
+ let currDate = _xeUtils.default.getWhatQuarter(minViewDate, leftSize, 'first');
148
+ const endDate = _xeUtils.default.getWhatQuarter(maxViewDate, rightSize, 'first');
149
+ while (currDate <= endDate) {
140
150
  const itemDate = currDate;
141
151
  dateList.push(itemDate);
142
152
  currDate = _xeUtils.default.getWhatQuarter(currDate, 1);
@@ -145,8 +155,9 @@ var _default = exports.default = (0, _comp.defineVxeComponent)({
145
155
  }
146
156
  case 'month':
147
157
  {
148
- let currDate = _xeUtils.default.getWhatMonth(minViewDate, 0, 'first');
149
- while (currDate <= maxViewDate) {
158
+ let currDate = _xeUtils.default.getWhatMonth(minViewDate, leftSize, 'first');
159
+ const endDate = _xeUtils.default.getWhatMonth(maxViewDate, rightSize, 'first');
160
+ while (currDate <= endDate) {
150
161
  const itemDate = currDate;
151
162
  dateList.push(itemDate);
152
163
  currDate = _xeUtils.default.getWhatMonth(currDate, 1);
@@ -155,8 +166,9 @@ var _default = exports.default = (0, _comp.defineVxeComponent)({
155
166
  }
156
167
  case 'week':
157
168
  {
158
- let currDate = _xeUtils.default.getWhatWeek(minViewDate, 0, minScale.startDay, minScale.startDay);
159
- while (currDate <= maxViewDate) {
169
+ let currDate = _xeUtils.default.getWhatWeek(minViewDate, leftSize, minScale.startDay, minScale.startDay);
170
+ const endDate = _xeUtils.default.getWhatWeek(maxViewDate, rightSize, minScale.startDay, minScale.startDay);
171
+ while (currDate <= endDate) {
160
172
  const itemDate = currDate;
161
173
  dateList.push(itemDate);
162
174
  currDate = _xeUtils.default.getWhatWeek(currDate, 1);
@@ -165,12 +177,23 @@ var _default = exports.default = (0, _comp.defineVxeComponent)({
165
177
  }
166
178
  case 'day':
167
179
  case 'date':
180
+ {
181
+ let currDate = _xeUtils.default.getWhatDay(minViewDate, leftSize, 'first');
182
+ const endDate = _xeUtils.default.getWhatDay(maxViewDate, rightSize, 'first');
183
+ while (currDate <= endDate) {
184
+ const itemDate = currDate;
185
+ dateList.push(itemDate);
186
+ currDate = _xeUtils.default.getWhatDay(currDate, 1);
187
+ }
188
+ break;
189
+ }
168
190
  case 'hour':
169
191
  case 'minute':
170
192
  case 'second':
171
193
  {
172
194
  const gapTime = (0, _util.getStandardGapTime)(minScale.type);
173
- let currTime = startTime;
195
+ let currTime = minViewDate.getTime() + leftSize * gapTime;
196
+ const endTime = maxViewDate.getTime() + rightSize * gapTime;
174
197
  while (currTime <= endTime) {
175
198
  const itemDate = new Date(currTime);
176
199
  dateList.push(itemDate);
@@ -279,21 +302,29 @@ var _default = exports.default = (0, _comp.defineVxeComponent)({
279
302
  };
280
303
  for (let i = 0; i < scaleDateList.length; i++) {
281
304
  const itemDate = scaleDateList[i];
282
- const [yyyy, MM, dd, HH, mm, ss] = _xeUtils.default.toDateString(itemDate, 'yyyy-M-d-H-m-s').split('-');
305
+ const [yy, yyyy, M, MM, d, dd, H, HH, m, mm, s, ss] = _xeUtils.default.toDateString(itemDate, 'yy-yyyy-M-MM-d-dd-H-HH-m-mm-s-ss').split('-');
283
306
  const e = itemDate.getDay();
284
307
  const E = e + 1;
285
308
  const q = Math.ceil((itemDate.getMonth() + 1) / 3);
286
- const W = _xeUtils.default.getYearWeek(itemDate, weekScale ? weekScale.startDay : undefined);
309
+ const W = `${_xeUtils.default.getYearWeek(itemDate, weekScale ? weekScale.startDay : undefined)}`;
310
+ const WW = _xeUtils.default.padStart(W, 2, '0');
287
311
  const dateObj = {
288
312
  date: itemDate,
289
- yy: yyyy,
290
- M: MM,
291
- d: dd,
292
- H: HH,
293
- m: mm,
294
- s: ss,
313
+ yy,
314
+ yyyy,
315
+ M,
316
+ MM,
317
+ d,
318
+ dd,
319
+ H,
320
+ HH,
321
+ m,
322
+ mm,
323
+ s,
324
+ ss,
295
325
  q,
296
326
  W,
327
+ WW,
297
328
  E,
298
329
  e
299
330
  };
@@ -430,7 +461,7 @@ var _default = exports.default = (0, _comp.defineVxeComponent)({
430
461
  const offsetLeftSize = (indexMaps[startStr] || 0) + subtract;
431
462
  return {
432
463
  offsetLeftSize,
433
- offsetWidthSize: (indexMaps[endStr] || 0) - offsetLeftSize + addSize
464
+ offsetWidthSize: (indexMaps[endStr] || 0) - offsetLeftSize + addSize + 1
434
465
  };
435
466
  };
436
467
  }
@@ -456,7 +487,7 @@ var _default = exports.default = (0, _comp.defineVxeComponent)({
456
487
  const offsetLeftSize = (indexMaps[startStr] || 0) + subtract;
457
488
  return {
458
489
  offsetLeftSize,
459
- offsetWidthSize: (indexMaps[endStr] || 0) - offsetLeftSize + addSize
490
+ offsetWidthSize: (indexMaps[endStr] || 0) - offsetLeftSize + addSize + 1
460
491
  };
461
492
  };
462
493
  }
@@ -482,7 +513,7 @@ var _default = exports.default = (0, _comp.defineVxeComponent)({
482
513
  const offsetLeftSize = (indexMaps[startStr] || 0) + subtract;
483
514
  return {
484
515
  offsetLeftSize,
485
- offsetWidthSize: (indexMaps[endStr] || 0) - offsetLeftSize + addSize
516
+ offsetWidthSize: (indexMaps[endStr] || 0) - offsetLeftSize + addSize + 1
486
517
  };
487
518
  };
488
519
  }
@@ -514,7 +545,7 @@ var _default = exports.default = (0, _comp.defineVxeComponent)({
514
545
  const offsetLeftSize = (indexMaps[startStr] || 0) + subtract;
515
546
  return {
516
547
  offsetLeftSize,
517
- offsetWidthSize: (indexMaps[endStr] || 0) - offsetLeftSize + addSize
548
+ offsetWidthSize: (indexMaps[endStr] || 0) - offsetLeftSize + addSize + 1
518
549
  };
519
550
  };
520
551
  }
@@ -541,7 +572,7 @@ var _default = exports.default = (0, _comp.defineVxeComponent)({
541
572
  const offsetLeftSize = (indexMaps[startStr] || 0) + subtract;
542
573
  return {
543
574
  offsetLeftSize,
544
- offsetWidthSize: (indexMaps[endStr] || 0) - offsetLeftSize + addSize
575
+ offsetWidthSize: (indexMaps[endStr] || 0) - offsetLeftSize + addSize + 1
545
576
  };
546
577
  };
547
578
  }
@@ -567,7 +598,7 @@ var _default = exports.default = (0, _comp.defineVxeComponent)({
567
598
  const offsetLeftSize = (indexMaps[startStr] || 0) + subtract;
568
599
  return {
569
600
  offsetLeftSize,
570
- offsetWidthSize: (indexMaps[endStr] || 0) - offsetLeftSize + addSize
601
+ offsetWidthSize: (indexMaps[endStr] || 0) - offsetLeftSize + addSize + 1
571
602
  };
572
603
  };
573
604
  }
@@ -593,7 +624,7 @@ var _default = exports.default = (0, _comp.defineVxeComponent)({
593
624
  const offsetLeftSize = (indexMaps[startStr] || 0) + subtract;
594
625
  return {
595
626
  offsetLeftSize,
596
- offsetWidthSize: (indexMaps[endStr] || 0) - offsetLeftSize + addSize
627
+ offsetWidthSize: (indexMaps[endStr] || 0) - offsetLeftSize + addSize + 1
597
628
  };
598
629
  };
599
630
  }
@@ -808,6 +839,9 @@ var _default = exports.default = (0, _comp.defineVxeComponent)({
808
839
  }
809
840
  };
810
841
  const updateChart = () => {
842
+ const {
843
+ dragBarRow
844
+ } = ganttInternalData;
811
845
  const {
812
846
  viewCellWidth
813
847
  } = reactData;
@@ -815,14 +849,18 @@ var _default = exports.default = (0, _comp.defineVxeComponent)({
815
849
  elemStore,
816
850
  chartMaps
817
851
  } = internalData;
852
+ const $xeTable = internalData.xeTable;
818
853
  const chartWrapper = (0, _util.getRefElem)(elemStore['main-chart-wrapper']);
819
- if (chartWrapper) {
854
+ if (chartWrapper && $xeTable) {
820
855
  _xeUtils.default.arrayEach(chartWrapper.children, rowEl => {
821
856
  const barEl = rowEl.children[0];
822
857
  if (!barEl) {
823
858
  return;
824
859
  }
825
860
  const rowid = rowEl.getAttribute('rowid');
861
+ if (dragBarRow && $xeTable.getRowid(dragBarRow) === rowid) {
862
+ return;
863
+ }
826
864
  const rowRest = rowid ? chartMaps[rowid] : null;
827
865
  barEl.style.left = `${rowRest ? viewCellWidth * rowRest.oLeftSize : 0}px`;
828
866
  barEl.style.width = `${rowRest ? viewCellWidth * rowRest.oWidthSize : 0}px`;