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.
- package/es/gantt/index.js +3 -0
- package/es/gantt/src/emits.js +7 -1
- package/es/gantt/src/gantt-body.js +2 -5
- package/es/gantt/src/gantt-chart.js +64 -35
- package/es/gantt/src/gantt-view.js +23 -10
- package/es/gantt/src/gantt.js +66 -5
- package/es/gantt/src/static.js +22 -0
- package/es/gantt/src/table-emits.js +4 -0
- package/es/gantt/src/util.js +9 -0
- package/es/gantt/style.css +2 -2
- package/es/gantt/style.min.css +1 -1
- package/es/style.css +1 -1
- package/es/style.min.css +1 -1
- package/es/ui/index.js +6 -13
- package/es/ui/src/depend.js +14 -0
- package/es/ui/src/log.js +1 -1
- package/es/vxe-gantt/style.css +2 -2
- package/es/vxe-gantt/style.min.css +1 -1
- package/lib/gantt/index.js +18 -0
- package/lib/gantt/index.min.js +1 -1
- package/lib/gantt/src/emits.js +1 -1
- package/lib/gantt/src/emits.min.js +1 -1
- package/lib/gantt/src/gantt-body.js +2 -5
- package/lib/gantt/src/gantt-body.min.js +1 -1
- package/lib/gantt/src/gantt-chart.js +44 -21
- package/lib/gantt/src/gantt-chart.min.js +1 -1
- package/lib/gantt/src/gantt-view.js +19 -9
- package/lib/gantt/src/gantt-view.min.js +1 -1
- package/lib/gantt/src/gantt.js +88 -5
- package/lib/gantt/src/gantt.min.js +1 -1
- package/lib/gantt/src/static.js +28 -0
- package/lib/gantt/src/static.min.js +1 -0
- package/lib/gantt/src/table-emits.js +1 -1
- package/lib/gantt/src/table-emits.min.js +1 -1
- package/lib/gantt/src/util.js +12 -0
- package/lib/gantt/src/util.min.js +1 -1
- package/lib/gantt/style/style.css +2 -2
- package/lib/gantt/style/style.min.css +1 -1
- package/lib/index.umd.js +226 -69
- package/lib/index.umd.min.js +1 -1
- package/lib/style.css +1 -1
- package/lib/style.min.css +1 -1
- package/lib/ui/index.js +6 -13
- package/lib/ui/index.min.js +1 -1
- package/lib/ui/src/depend.js +19 -0
- package/lib/ui/src/depend.min.js +1 -0
- package/lib/ui/src/log.js +1 -1
- package/lib/ui/src/log.min.js +1 -1
- package/lib/vxe-gantt/style/style.css +2 -2
- package/lib/vxe-gantt/style/style.min.css +1 -1
- package/package.json +3 -7
- package/packages/gantt/index.ts +4 -0
- package/packages/gantt/src/emits.ts +7 -1
- package/packages/gantt/src/gantt-body.ts +2 -5
- package/packages/gantt/src/gantt-chart.ts +65 -36
- package/packages/gantt/src/gantt-view.ts +25 -10
- package/packages/gantt/src/gantt.ts +74 -6
- package/packages/gantt/src/static.ts +21 -0
- package/packages/gantt/src/table-emits.ts +5 -0
- package/packages/gantt/src/util.ts +12 -0
- package/packages/ui/index.ts +5 -12
- package/packages/ui/src/depend.ts +14 -0
- package/styles/components/gantt-module/gantt-chart.scss +3 -2
- package/styles/components/gantt.scss +0 -1
- package/styles/theme/base.scss +2 -0
|
@@ -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",{})
|
|
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",{});var e=(0,_vue.inject)("$xeGanttView",{});let D=C.internalData,{reactData:n,internalData:l}=e,{computeProgressField:M,computeTitleField:B,computeTaskBarOpts:R,computeScaleUnit:O,computeTaskLinkOpts:o}=C.getComputeMaps(),s=(0,_vue.ref)(),i=(0,_vue.ref)(),u=(0,_vue.ref)(),m=(e,t,a,r,n,l)=>{var o=e.props.treeConfig,s=e.reactData.resizeHeightFlag,i=e.internalData.fullAllDataRowIdData,{computeCellOpts:e,computeRowOpts:u,computeDefaultRowHeight:v}=e.getComputeMaps(),e=e.value,u=u.value,v=v.value,c=C.context.slots,c=c.taskBar||c["task-bar"],p=B.value,d=M.value,h=R.value,w=O.value;let g={$gantt:C,row:t,scaleType:w};var{showProgress:h,showContent:m,contentMethod:_,barStyle:x,move:k,showTooltip:f}=h,T=_xeUtils.default.isFunction(x),x=(x?T?x(g):x:{})||{},y=x.round,i=i[a]||{},s=s?(0,_util.getCellRestHeight)(i,e,u,v):0;let E=(0,_utils.getStringValue)(_xeUtils.default.get(t,p));i={},e={width:`${(h?Math.min(100,Math.max(0,_xeUtils.default.toNumber(_xeUtils.default.get(t,d)))):0)||0}%`};T&&({bgColor:u,completedBgColor:v}=x,u&&(i.backgroundColor=u),v)&&(e.backgroundColor=v),_&&(E=(0,_utils.getStringValue)(_({row:t,title:E,scaleType:w})));let b={$gantt:C,source:sourceType,type:viewType,scaleType:w,row:t,$rowIndex:n,rowIndex:r,_rowIndex:l};p={onClick(e){C.handleTaskBarClickEvent(e,g)},onDblclick(e){C.handleTaskBarDblclickEvent(e,g)},onMousedown(e){C.handleTaskBarMousedownEvent&&C.handleTaskBarMousedownEvent(e,g)}};return f&&(p.onMouseover=e=>{var t=D.dragBarRow,a=Object.assign({$event:e},b);t||C.triggerTaskBarTooltipEvent(e,a),C.dispatchEvent("task-bar-mouseenter",a,e)},p.onMouseleave=e=>{var t=D.dragBarRow,a=Object.assign({$event:e},b);t||C.handleTaskBarTooltipLeaveEvent(e,a),C.dispatchEvent("task-bar-mouseleave",a,e)}),(0,_vue.h)("div",{key:o?a:n,rowid:a,class:["vxe-gantt-view--chart-row",{"is--round":y,"is--move":k}],style:{height:s+"px"},onContextmenu(e){C.handleTaskBarContextmenuEvent(e,b)}},[(0,_vue.h)("div",Object.assign({class:c?"vxe-gantt-view--chart-custom-bar":"vxe-gantt-view--chart-bar",style:i,rowid:a},p),C.renderGanttTaskBarContent?C.renderGanttTaskBarContent(b,{title:E,vbStyle:i,vpStyle:e}):c?[(0,_vue.h)("div",{key:"cbc",class:"vxe-gantt-view--chart-custom-bar-content"},C.callSlot(c,g))]:[h?(0,_vue.h)("div",{key:"vcp",class:"vxe-gantt-view--chart-progress",style:e}):renderEmptyElement(C),m?(0,_vue.h)("div",{key:"vcc",class:"vxe-gantt-view--chart-content"},E):renderEmptyElement(C)])])},_=(i,e)=>{let u=i.props.treeConfig,v=i.reactData.treeExpandedFlag,{fullAllDataRowIdData:c,treeExpandedMaps:p}=i.internalData;var t=i.getComputeMaps().computeTreeOpts,t=t.value;let d=t.transform,h=t.children||t.childrenField,w=n.scrollYLoad,g=[];return e.forEach((e,t)=>{var a=i.getRowid(e),r=c[a]||{};let n=t,l=-1,o=(r&&(n=r.index,l=r._index),g.push(m(i,e,a,n,t,l)),!1),s=[];!u||w||d||(s=e[h],o=!!v&&s&&0<s.length&&!!p[a]),o&&g.push(..._(i,s))}),g};return(0,_vue.onMounted)(()=>{var e=l.elemStore,t="main-chart-";e[t+"task-wrapper"]=i,e[t+"line-wrapper"]=u}),(0,_vue.onUnmounted)(()=>{var e=l.elemStore,t="main-chart-";e[t+"task-wrapper"]=null,e[t+"line-wrapper"]=null}),()=>{var e=l.xeTable,t=n.tableData,a=o.value,r=a.showArrow;return(0,_vue.h)("div",{ref:s,class:"vxe-gantt-view--chart-wrapper"},[C.renderGanttTaskLines?(0,_vue.h)("div",{ref:u,class:["vxe-gantt-view--chart-line-wrapper",{"show-arrow":r}]},e&&(0,_utils.isEnableConf)(a)?C.renderGanttTaskLines():[]):renderEmptyElement(C),(0,_vue.h)("div",{ref:i,class:"vxe-gantt-view--chart-task-wrapper"},e?_(e,t):[])])}}});
|
|
@@ -108,7 +108,7 @@ var _default = exports.default = (0, _comp.defineVxeComponent)({
|
|
|
108
108
|
tableData: [],
|
|
109
109
|
tableColumn: [],
|
|
110
110
|
headerGroups: [],
|
|
111
|
-
viewCellWidth:
|
|
111
|
+
viewCellWidth: 40
|
|
112
112
|
});
|
|
113
113
|
const internalData = createInternalData();
|
|
114
114
|
const refMaps = {
|
|
@@ -838,7 +838,7 @@ var _default = exports.default = (0, _comp.defineVxeComponent)({
|
|
|
838
838
|
reactData.overflowX = overflowX;
|
|
839
839
|
}
|
|
840
840
|
};
|
|
841
|
-
const
|
|
841
|
+
const updateTaskChart = () => {
|
|
842
842
|
const {
|
|
843
843
|
dragBarRow
|
|
844
844
|
} = ganttInternalData;
|
|
@@ -850,7 +850,7 @@ var _default = exports.default = (0, _comp.defineVxeComponent)({
|
|
|
850
850
|
chartMaps
|
|
851
851
|
} = internalData;
|
|
852
852
|
const $xeTable = internalData.xeTable;
|
|
853
|
-
const chartWrapper = (0, _util.getRefElem)(elemStore['main-chart-wrapper']);
|
|
853
|
+
const chartWrapper = (0, _util.getRefElem)(elemStore['main-chart-task-wrapper']);
|
|
854
854
|
if (chartWrapper && $xeTable) {
|
|
855
855
|
_xeUtils.default.arrayEach(chartWrapper.children, rowEl => {
|
|
856
856
|
const barEl = rowEl.children[0];
|
|
@@ -861,9 +861,9 @@ var _default = exports.default = (0, _comp.defineVxeComponent)({
|
|
|
861
861
|
if (dragBarRow && $xeTable.getRowid(dragBarRow) === rowid) {
|
|
862
862
|
return;
|
|
863
863
|
}
|
|
864
|
-
const
|
|
865
|
-
barEl.style.left = `${
|
|
866
|
-
barEl.style.width = `${
|
|
864
|
+
const chartRest = rowid ? chartMaps[rowid] : null;
|
|
865
|
+
barEl.style.left = `${(0, _util.getTaskBarLeft)(chartRest, viewCellWidth)}px`;
|
|
866
|
+
barEl.style.width = `${(0, _util.getTaskBarWidth)(chartRest, viewCellWidth)}px`;
|
|
867
867
|
});
|
|
868
868
|
}
|
|
869
869
|
return (0, _vue.nextTick)();
|
|
@@ -884,6 +884,9 @@ var _default = exports.default = (0, _comp.defineVxeComponent)({
|
|
|
884
884
|
if (!el) {
|
|
885
885
|
return;
|
|
886
886
|
}
|
|
887
|
+
if (!$xeGantt) {
|
|
888
|
+
return;
|
|
889
|
+
}
|
|
887
890
|
const scrollbarOpts = computeScrollbarOpts.value;
|
|
888
891
|
const scrollbarXToTop = computeScrollbarXToTop.value;
|
|
889
892
|
const scrollbarYToLeft = computeScrollbarYToLeft.value;
|
|
@@ -983,7 +986,7 @@ var _default = exports.default = (0, _comp.defineVxeComponent)({
|
|
|
983
986
|
bodyTableElem.style.width = `${vmTableWidth}px`;
|
|
984
987
|
}
|
|
985
988
|
reactData.scrollXWidth = viewTableWidth;
|
|
986
|
-
return
|
|
989
|
+
return Promise.all([updateTaskChart(), $xeGantt.handleUpdateTaskLink ? $xeGantt.handleUpdateTaskLink($xeGanttView) : null]);
|
|
987
990
|
};
|
|
988
991
|
const handleRecalculateStyle = () => {
|
|
989
992
|
const el = refElem.value;
|
|
@@ -991,9 +994,11 @@ var _default = exports.default = (0, _comp.defineVxeComponent)({
|
|
|
991
994
|
if (!el || !el.clientWidth) {
|
|
992
995
|
return (0, _vue.nextTick)();
|
|
993
996
|
}
|
|
997
|
+
if (!$xeGantt) {
|
|
998
|
+
return (0, _vue.nextTick)();
|
|
999
|
+
}
|
|
994
1000
|
calcScrollbar();
|
|
995
1001
|
updateStyle();
|
|
996
|
-
updateChart();
|
|
997
1002
|
return computeScrollLoad();
|
|
998
1003
|
};
|
|
999
1004
|
const handleLazyRecalculate = () => {
|
|
@@ -1214,7 +1219,7 @@ var _default = exports.default = (0, _comp.defineVxeComponent)({
|
|
|
1214
1219
|
}
|
|
1215
1220
|
ySpaceHeight = maxYHeight;
|
|
1216
1221
|
}
|
|
1217
|
-
const bodyChartWrapperElem = (0, _util.getRefElem)(elemStore['main-chart-wrapper']);
|
|
1222
|
+
const bodyChartWrapperElem = (0, _util.getRefElem)(elemStore['main-chart-task-wrapper']);
|
|
1218
1223
|
if (bodyTableElem) {
|
|
1219
1224
|
bodyTableElem.style.transform = `translate(${reactData.scrollXLeft || 0}px, ${scrollYTop}px)`;
|
|
1220
1225
|
}
|
|
@@ -1229,6 +1234,11 @@ var _default = exports.default = (0, _comp.defineVxeComponent)({
|
|
|
1229
1234
|
if (scrollYSpaceEl) {
|
|
1230
1235
|
scrollYSpaceEl.style.height = ySpaceHeight ? `${ySpaceHeight}px` : '';
|
|
1231
1236
|
}
|
|
1237
|
+
const lineWrapper = (0, _util.getRefElem)(elemStore['main-chart-line-wrapper']);
|
|
1238
|
+
const svgElem = lineWrapper ? lineWrapper.firstElementChild : null;
|
|
1239
|
+
if (svgElem) {
|
|
1240
|
+
svgElem.style.height = ySpaceHeight ? `${ySpaceHeight}px` : '';
|
|
1241
|
+
}
|
|
1232
1242
|
reactData.scrollYTop = scrollYTop;
|
|
1233
1243
|
reactData.scrollYHeight = scrollYHeight;
|
|
1234
1244
|
reactData.isScrollYBig = isScrollYBig;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=void 0;var _vue=require("vue"),_comp=require("../../ui/src/comp"),_dom=require("../../ui/src/dom"),_core=require("@vxe-ui/core"),_util=require("./util"),_xeUtils=_interopRequireDefault(require("xe-utils")),_ganttHeader=_interopRequireDefault(require("./gantt-header")),_ganttBody=_interopRequireDefault(require("./gantt-body")),_ganttFooter=_interopRequireDefault(require("./gantt-footer"));function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e}}let globalEvents=_core.VxeUI.globalEvents,sourceType="gantt",minuteMs=6e4,dayMs=60*minuteMs*24;function createInternalData(){return{xeTable:null,visibleColumn:[],startMaps:{},endMaps:{},chartMaps:{},todayDateMaps:{},elemStore:{},scrollXStore:{preloadSize:0,offsetSize:0,visibleSize:0,visibleStartIndex:0,visibleEndIndex:0,startIndex:0,endIndex:0},lastScrollTop:0,lastScrollLeft:0}}let maxYHeight=5e6;var _default=exports.default=(0,_comp.defineVxeComponent)({name:"VxeGanttView",setup(r,u){var e=_xeUtils.default.uniqueId();let U=(0,_vue.inject)("$xeGantt",{}),h=U.internalData,{computeTaskOpts:x,computeTaskViewOpts:p,computeStartField:m,computeEndField:y,computeScrollbarOpts:S,computeScrollbarXToTop:T,computeScrollbarYToLeft:b,computeScaleUnit:o,computeWeekScale:W,computeMinScale:E}=U.getComputeMaps(),i=(0,_vue.ref)(),w=(0,_vue.ref)(),M=(0,_vue.ref)(),D=(0,_vue.ref)(),H=(0,_vue.ref)(),L=(0,_vue.ref)(),R=(0,_vue.ref)(),z=(0,_vue.ref)(),k=(0,_vue.ref)(),C=(0,_vue.ref)(),I=(0,_vue.ref)(),d=(0,_vue.ref)(),n=(0,_vue.ref)(),$=(0,_vue.ref)(),Y=(0,_vue.reactive)({scrollXLoad:!1,scrollYLoad:!1,overflowY:!0,overflowX:!0,scrollbarWidth:0,scrollbarHeight:0,lastScrollTime:0,lazScrollLoading:!1,scrollVMLoading:!1,scrollYHeight:0,scrollYTop:0,isScrollYBig:!1,scrollXLeft:0,scrollXWidth:0,isScrollXBig:!1,minViewDate:null,maxViewDate:null,tableData:[],tableColumn:[],headerGroups:[],viewCellWidth:20}),q=createInternalData(),_={refElem:i},V=(0,_vue.computed)(()=>{var{minViewDate:t,maxViewDate:l}=Y,e=p.value,a=E.value,e=e.gridding,r=[];if(t&&l){var i=-_xeUtils.default.toNumber(e&&e.leftSpacing||0),o=_xeUtils.default.toNumber(e&&e.rightSpacing||0);switch(a.type){case"year":{let e=_xeUtils.default.getWhatYear(t,i,"first");for(var s=_xeUtils.default.getWhatYear(l,o,"first");e<=s;){var d=e;r.push(d),e=_xeUtils.default.getWhatYear(e,1)}break}case"quarter":{let e=_xeUtils.default.getWhatQuarter(t,i,"first");for(var u=_xeUtils.default.getWhatQuarter(l,o,"first");e<=u;){var n=e;r.push(n),e=_xeUtils.default.getWhatQuarter(e,1)}break}case"month":{let e=_xeUtils.default.getWhatMonth(t,i,"first");for(var c=_xeUtils.default.getWhatMonth(l,o,"first");e<=c;){var f=e;r.push(f),e=_xeUtils.default.getWhatMonth(e,1)}break}case"week":{let e=_xeUtils.default.getWhatWeek(t,i,a.startDay,a.startDay);for(var v=_xeUtils.default.getWhatWeek(l,o,a.startDay,a.startDay);e<=v;){var h=e;r.push(h),e=_xeUtils.default.getWhatWeek(e,1)}break}case"day":case"date":{let e=_xeUtils.default.getWhatDay(t,i,"first");for(var g=_xeUtils.default.getWhatDay(l,o,"first");e<=g;){var m=e;r.push(m),e=_xeUtils.default.getWhatDay(e,1)}break}case"hour":case"minute":case"second":{var y=(0,_util.getStandardGapTime)(a.type);let e=t.getTime()+i*y;for(var x=l.getTime()+o*y;e<=x;){var _=new Date(e);r.push(_),e+=y}break}}}return r}),O={computeScaleDateList:V},t={xID:e,props:r,context:u,reactData:Y,internalData:q,getRefMaps:()=>_,getComputeMaps:()=>O},g=e=>{var t=x.value.dateFormat;return _xeUtils.default.toStringDate(e,t||null)},F=()=>{var e=U.reactData.taskScaleList,e=e.find(e=>"week"===e.type),t=new Date,[l,a,r,i,o,s]=_xeUtils.default.toDateString(t,"yyyy-M-d-H-m-s").split("-"),d=t.getDay()+1,u=Math.ceil((t.getMonth()+1)/3),t=_xeUtils.default.getYearWeek(t,e?e.startDay:void 0);q.todayDateMaps={year:l,quarter:l+"_q"+u,month:l+"_"+a,week:l+"_W"+t,day:l+`_${a}_${r}_E`+d,date:l+`_${a}_`+r,hour:l+`_${a}_${r}_`+i,minute:l+`_${a}_${r}_${i}_`+o,second:l+`_${a}_${r}_${i}_${o}_`+s}},j=()=>{var e=U.reactData.taskScaleList,t=o.value;let s=E.value;var l=W.value,a=V.value;let r=[],d=[];if(s&&t&&a.length){let i={year:[],quarter:[],month:[],week:[],day:[],date:[],hour:[],minute:[],second:[]},o={year:{},quarter:{},month:{},week:{},day:{},date:{},hour:{},minute:{},second:{}};var u=(t,l,a)=>{if(s.type!==t){var l=l[t],r=""+l.field;let e=o[t][r];e||(e=l,o[t][r]=e,i[t].push(e)),e&&(e.children||(e.children=[]),e.children.push(a))}};for(let e=0;e<a.length;e++){var n=a[e],[c,f,v,h,g,m,y,x,_,p,S,T]=_xeUtils.default.toDateString(n,"yy-yyyy-M-MM-d-dd-H-HH-m-mm-s-ss").split("-"),b=n.getDay(),w=b+1,M=Math.ceil((n.getMonth()+1)/3),D=""+_xeUtils.default.getYearWeek(n,l?l.startDay:void 0),n={date:n,yy:c,yyyy:f,M:v,MM:h,d:g,dd:m,H:y,HH:x,m:_,mm:p,s:S,ss:T,q:M,W:D,WW:_xeUtils.default.padStart(D,2,"0"),E:w,e:b},c={year:{field:f,title:f,dateObj:n},quarter:{field:f+"_q"+M,title:""+M,dateObj:n},month:{field:f+"_"+h,title:h,dateObj:n},week:{field:f+"_W"+D,title:D,dateObj:n},day:{field:f+`_${h}_${m}_E`+w,title:""+w,dateObj:n},date:{field:f+`_${h}_`+m,title:m,dateObj:n},hour:{field:f+`_${h}_${m}_`+x,title:x,dateObj:n},minute:{field:f+`_${h}_${m}_${x}_`+p,title:p,dateObj:n},second:{field:f+`_${h}_${m}_${x}_${p}_`+T,title:T,dateObj:n}},v=c[s.type];s.level<19&&u("year",c,v),s.level<17&&u("quarter",c,v),s.level<15&&u("month",c,v),s.level<13&&u("week",c,v),s.level<11&&u("day",c,v),s.level<9&&u("date",c,v),s.level<7&&u("hour",c,v),s.level<5&&u("minute",c,v),s.level<3&&u("second",c,v),r.push(v)}e.forEach(e=>{var t;e.type===s.type?d.push({scaleItem:e,columns:r}):((t=i[e.type]||[])&&t.forEach(e=>{e.childCount=e.children?e.children.length:0,e.children=void 0}),d.push({scaleItem:e,columns:t}))})}return{fullCols:r,groupCols:d}},B=e=>{let i=Y.minViewDate;var t=E.value,l=o.value;let d=W.value;switch(l){case"year":{let s={};return e.forEach(({dateObj:e},t)=>{e=_xeUtils.default.toDateString(e.date,"yyyy");s[e]=t}),(e,t)=>{var e=g(e),t=g(t),l=_xeUtils.default.toDateString(e,"yyyy"),a=_xeUtils.default.getWhatYear(e,0,"first"),r=_xeUtils.default.toDateString(t,"yyyy"),i=_xeUtils.default.getWhatYear(t,0,"first"),o=Math.floor((_xeUtils.default.getWhatYear(t,1,"first").getTime()-i.getTime())/dayMs),e=(e.getTime()-a.getTime())/dayMs/o,a=Math.max(0,(t.getTime()-i.getTime())/dayMs+1)/o,t=(s[l]||0)+e;return{offsetLeftSize:t,offsetWidthSize:(s[r]||0)-t+a+1}}}case"quarter":{let s={};return e.forEach(({dateObj:e},t)=>{e=_xeUtils.default.toDateString(e.date,"yyyy-q");s[e]=t}),(e,t)=>{var e=g(e),t=g(t),l=_xeUtils.default.toDateString(e,"yyyy-q"),a=_xeUtils.default.getWhatQuarter(e,0,"first"),r=_xeUtils.default.toDateString(t,"yyyy-q"),i=_xeUtils.default.getWhatQuarter(t,0,"first"),o=Math.floor((_xeUtils.default.getWhatQuarter(t,1,"first").getTime()-i.getTime())/dayMs),e=(e.getTime()-a.getTime())/dayMs/o,a=Math.max(0,(t.getTime()-i.getTime())/dayMs+1)/o,t=(s[l]||0)+e;return{offsetLeftSize:t,offsetWidthSize:(s[r]||0)-t+a+1}}}case"month":{let s={};return e.forEach(({dateObj:e},t)=>{e=_xeUtils.default.toDateString(e.date,"yyyy-MM");s[e]=t}),(e,t)=>{var e=g(e),t=g(t),l=_xeUtils.default.toDateString(e,"yyyy-MM"),a=_xeUtils.default.getWhatMonth(e,0,"first"),r=_xeUtils.default.toDateString(t,"yyyy-MM"),i=_xeUtils.default.getWhatMonth(t,0,"first"),o=Math.floor((_xeUtils.default.getWhatMonth(t,1,"first").getTime()-i.getTime())/dayMs),e=(e.getTime()-a.getTime())/dayMs/o,a=Math.max(0,(t.getTime()-i.getTime())/dayMs+1)/o,t=(s[l]||0)+e;return{offsetLeftSize:t,offsetWidthSize:(s[r]||0)-t+a+1}}}case"week":{let s={};return e.forEach(({dateObj:e},t)=>{e=_xeUtils.default.toDateString(e.date,"yyyy-W",{firstDay:d?d.startDay:void 0});s[e]=t}),(e,t)=>{var e=g(e),t=g(t),l=_xeUtils.default.toDateString(e,"yyyy-W",{firstDay:d?d.startDay:void 0}),a=_xeUtils.default.getWhatWeek(e,0,d?d.startDay:void 0,d?d.startDay:void 0),r=_xeUtils.default.toDateString(t,"yyyy-W",{firstDay:d?d.startDay:void 0}),i=_xeUtils.default.getWhatWeek(t,0,d?d.startDay:void 0,d?d.startDay:void 0),o=Math.floor((_xeUtils.default.getWhatWeek(t,1,d?d.startDay:void 0,d?d.startDay:void 0).getTime()-i.getTime())/dayMs),e=(e.getTime()-a.getTime())/dayMs/o,a=Math.max(0,(t.getTime()-i.getTime())/dayMs+1)/o,t=(s[l]||0)+e;return{offsetLeftSize:t,offsetWidthSize:(s[r]||0)-t+a+1}}}case"day":case"date":{let s={};return e.forEach(({dateObj:e},t)=>{e=_xeUtils.default.toDateString(e.date,"yyyy-MM-dd");s[e]=t}),(e,t)=>{var e=g(e),t=g(t),l=_xeUtils.default.toDateString(e,"yyyy-MM-dd"),a=_xeUtils.default.getWhatDay(e,0,"first"),r=_xeUtils.default.toDateString(t,"yyyy-MM-dd"),i=_xeUtils.default.getWhatDay(t,0,"first"),o=Math.floor((_xeUtils.default.getWhatDay(t,1,"first").getTime()-i.getTime())/minuteMs),e=(e.getTime()-a.getTime())/minuteMs/o,a=Math.max(0,(t.getTime()-i.getTime())/minuteMs+1)/o,t=(s[l]||0)+e;return{offsetLeftSize:t,offsetWidthSize:(s[r]||0)-t+a+1}}}case"hour":{let s={};return e.forEach(({dateObj:e},t)=>{e=_xeUtils.default.toDateString(e.date,"yyyy-MM-dd HH");s[e]=t}),(e,t)=>{var e=g(e),t=g(t),l=_xeUtils.default.toDateString(e,"yyyy-MM-dd HH"),a=_xeUtils.default.getWhatHours(e,0,"first"),r=_xeUtils.default.toDateString(t,"yyyy-MM-dd HH"),i=_xeUtils.default.getWhatHours(t,0,"first"),o=Math.floor((_xeUtils.default.getWhatHours(t,1,"first").getTime()-i.getTime())/minuteMs),e=(e.getTime()-a.getTime())/minuteMs/o,a=Math.max(0,(t.getTime()-i.getTime())/minuteMs+1)/o,t=(s[l]||0)+e;return{offsetLeftSize:t,offsetWidthSize:(s[r]||0)-t+a+1}}}case"minute":{let s={};return e.forEach(({dateObj:e},t)=>{e=_xeUtils.default.toDateString(e.date,"yyyy-MM-dd HH:mm");s[e]=t}),(e,t)=>{var e=g(e),t=g(t),l=_xeUtils.default.toDateString(e,"yyyy-MM-dd HH:mm"),a=_xeUtils.default.getWhatMinutes(e,0,"first"),r=_xeUtils.default.toDateString(t,"yyyy-MM-dd HH:mm"),i=_xeUtils.default.getWhatMinutes(t,0,"first"),o=Math.floor((_xeUtils.default.getWhatMinutes(t,1,"first").getTime()-i.getTime())/minuteMs),e=(e.getTime()-a.getTime())/minuteMs/o,a=Math.max(0,(t.getTime()-i.getTime())/minuteMs+1)/o,t=(s[l]||0)+e;return{offsetLeftSize:t,offsetWidthSize:(s[r]||0)-t+a+1}}}case"second":{let r=(0,_util.getStandardGapTime)(t.type);return(e,t)=>{e=g(e),t=g(t);let l=0,a=0;return i&&(l=(e.getTime()-i.getTime())/r,a=(t.getTime()-e.getTime())/r+1),{offsetLeftSize:l,offsetWidthSize:a}}}}return()=>({offsetLeftSize:0,offsetWidthSize:0})},G=()=>{var e=U.props.treeConfig,t=q.scrollXStore,r=q.xeTable;let i=null,o=null;if(r){let l=m.value,a=y.value;var{computeAggregateOpts:s,computeTreeOpts:d}=r.getComputeMaps(),u=r.reactData.isRowGroupStatus,{afterFullData:r,afterTreeFullData:n,afterGroupFullData:c}=r.internalData,s=s.value,d=d.value,f=d.transform,v=d.children||d.childrenField,h=e=>{var t=_xeUtils.default.get(e,l),e=_xeUtils.default.get(e,a);t&&e&&(t=g(t),(!i||i.getTime()>t.getTime())&&(i=t),t=g(e),!o||o.getTime()<t.getTime())&&(o=t)};u?(u=s.mapChildrenField)&&_xeUtils.default.eachTree(c,h,{children:u}):e?_xeUtils.default.eachTree(n,h,{children:f?d.mapChildrenField:v}):r.forEach(h)}t.startIndex=0,t.endIndex=Math.max(1,t.visibleSize),Y.minViewDate=i,Y.maxViewDate=o,q.startMaps={},q.endMaps={},(()=>{var e=U.props.treeConfig,{minViewDate:t,maxViewDate:l}=Y,{fullCols:a,groupCols:r}=j();if(t&&l&&a.length){let d=q.xeTable;if(d){let r=m.value,i=y.value;var{computeAggregateOpts:t,computeTreeOpts:l}=d.getComputeMaps(),u=d.reactData.isRowGroupStatus,{afterFullData:n,afterTreeFullData:c,afterGroupFullData:f}=d.internalData,t=t.value,l=l.value,v=l.transform,h=l.children||l.childrenField;let o={},s=B(a);var g=e=>{var t=d.getRowid(e),l=_xeUtils.default.get(e,r),a=_xeUtils.default.get(e,i);l&&a&&({offsetLeftSize:l,offsetWidthSize:a}=s(l,a),o[t]={row:e,rowid:t,oLeftSize:l,oWidthSize:a})};u?(u=t.mapChildrenField)&&_xeUtils.default.eachTree(f,g,{children:u}):e?_xeUtils.default.eachTree(c,g,{children:v?l.mapChildrenField:h}):n.forEach(g),q.chartMaps=o}}q.visibleColumn=a,Y.headerGroups=r,F(),K(),Z()})()},c=()=>{var{scrollXWidth:e,scrollYHeight:t}=Y,l=q.elemStore,a=S.value,l=(0,_util.getRefElem)(l["main-body-wrapper"]),r=D.value,i=R.value;l&&(t=t>l.clientHeight,i&&(Y.scrollbarWidth=a.width||i.offsetWidth-i.clientWidth||14),Y.overflowY=t,i=e>l.clientWidth,r&&(Y.scrollbarHeight=a.height||r.offsetHeight-r.clientHeight||14),Y.overflowX=i)},A=()=>{let l=h.dragBarRow,a=Y.viewCellWidth,{elemStore:e,chartMaps:r}=q,i=q.xeTable;var t=(0,_util.getRefElem)(e["main-chart-wrapper"]);return t&&i&&_xeUtils.default.arrayEach(t.children,e=>{var t=e.children[0];t&&(e=e.getAttribute("rowid"),l&&i.getRowid(l)===e||(e=e?r[e]:null,t.style.left=`${e?a*e.oLeftSize:0}px`,t.style.width=`${e?a*e.oWidthSize:0}px`))}),(0,_vue.nextTick)()},f=()=>{var{scrollbarWidth:s,scrollbarHeight:d,headerGroups:u,tableColumn:n}=Y,{elemStore:c,visibleColumn:f}=q,v=q.xeTable,h=i.value;if(h){var g=S.value,m=T.value,y=b.value,x=H.value,_=L.value,p=w.value;let e=s;s=d;let t=0,l=0,a=0,r=(v&&(d=v.internalData,t=d.tBodyHeight,l=d.tHeaderHeight,a=d.tFooterHeight),"visible");(y||g.y&&!1===g.y.visible)&&(e=0,r="hidden");v=(0,_util.getRefElem)(c["main-header-scroll"]),d=(v&&(v.style.height=l+"px",v.style.setProperty("--vxe-ui-gantt-view-cell-height",l/u.length+"px")),(0,_util.getRefElem)(c["main-body-scroll"])),y=(d&&(d.style.height=t+"px"),(0,_util.getRefElem)(c["main-footer-scroll"])),g=(y&&(y.style.height=a+"px"),p&&(p.style.height=s+"px",p.style.visibility="visible"),k.value),v=(g&&(g.style.left=m?e+"px":"",g.style.width=h.clientWidth-e+"px"),x&&(x.style.width=m?e+"px":"",x.style.display=m&&s?"block":""),_&&(_.style.width=m?"":e+"px",_.style.display=!m&&s?"block":""),M.value),u=(v&&(v.style.width=e+"px",v.style.height=t+l+a+"px",v.style.visibility=r),z.value),y=(u&&(u.style.height=l+"px",u.style.display=l?"block":""),C.value),p=(y&&(y.style.height=t+"px",y.style.top=l+"px"),I.value),g=(p&&(p.style.height=a+"px",p.style.top=l+t+"px",p.style.display=a?"block":""),$.value);let i=40,o=(i=g?g.clientWidth||40:i)*f.length;d&&0<(x=(h=d.clientWidth)-o)&&(i+=x/f.length,o=h),Y.viewCellWidth=i;_=(0,_util.getRefElem)(c["main-header-table"]),m=(0,_util.getRefElem)(c["main-body-table"]),s=i*n.length;return _&&(_.style.width=o+"px"),m&&(m.style.width=s+"px"),Y.scrollXWidth=o,A()}},s=()=>{var e=i.value;return q.rceRunTime=Date.now(),e&&e.clientWidth?(c(),f(),A(),(0,_vue.nextTick)().then(()=>{var e,t=Y.scrollXLoad,l=q.scrollXStore;t?({toVisibleIndex:t,visibleSize:e}=N(),l.preloadSize=1,l.offsetSize=2,l.visibleSize=e,l.endIndex=Math.max(l.startIndex+l.visibleSize+2,l.endIndex),l.visibleStartIndex=Math.max(l.startIndex,t),l.visibleEndIndex=Math.min(l.endIndex,t+e),J().then(()=>{P()})):a()})):(0,_vue.nextTick)()},Q=()=>new Promise(e=>{var{rceTimeout:t,rceRunTime:l}=q,a=q.xeTable;let r=30;a&&(a=a.getComputeMaps().computeResizeOpts,a=a.value,r=a.refreshDelay||r),!t||(clearTimeout(t),l&&l+(r-5)<Date.now())?e(s()):(0,_vue.nextTick)(()=>{e()}),q.rceTimeout=setTimeout(()=>{q.rceTimeout=void 0,s()},r)}),N=()=>{var e,t=Y.viewCellWidth,l=q.elemStore,l=(0,_util.getRefElem)(l["main-body-scroll"]);return l?(e=l.clientWidth,l=l.scrollLeft,l=Math.floor(l/t)-1,e=Math.ceil(e/t)+1,{toVisibleIndex:Math.max(0,l),visibleSize:Math.max(1,e)}):{toVisibleIndex:0,visibleSize:6}},P=()=>{var e=Y.isScrollXBig,t=q.scrollXStore,{preloadSize:l,startIndex:a,endIndex:r,offsetSize:i}=t,{toVisibleIndex:o,visibleSize:s}=N(),e={startIndex:Math.max(0,e?o-1:o-1-i-l),endIndex:e?o+s:o+s+i+l},{startIndex:i,endIndex:l}=(t.visibleStartIndex=o-1,t.visibleEndIndex=o+s+1,e);!(o<=a||r-s-1<=o)||a===i&&r===l||(t.startIndex=i,t.endIndex=l,J())},J=()=>(Z(),a(),(0,_vue.nextTick)()),K=()=>Y.scrollXLoad=!0,Z=()=>{var e=Y.scrollXLoad,{visibleColumn:t,scrollXStore:l}=q,e=e?t.slice(l.startIndex,l.endIndex):t.slice(0);Y.tableColumn=e},a=()=>{let{scrollXLoad:t,scrollXWidth:l,viewCellWidth:e}=Y,{elemStore:a,scrollXStore:r}=q;var i=(0,_util.getRefElem)(a["main-body-table"]),o=r.startIndex;let s=0;t&&(s=Math.max(0,o*e)),i&&(i.style.transform=`translate(${s}px, ${Y.scrollYTop||0}px)`);["header","body","footer"].forEach(e=>{e=(0,_util.getRefElem)(a[`main-${e}-xSpace`]);e&&(e.style.width=t?l+"px":"")});o=d.value;return o&&(o.style.width=l+"px"),c(),(0,_vue.nextTick)()},ee=()=>{P()},te=(e,t)=>{var l=q.lcsTimeout;Y.lazScrollLoading=!0,l&&clearTimeout(l),q.lcsTimeout=setTimeout(()=>{q.lcsRunTime=Date.now(),q.lcsTimeout=void 0,q.intoRunScroll=!1,q.inVirtualScroll=!1,q.inWheelScroll=!1,q.inHeaderScroll=!1,q.inBodyScroll=!1,q.inFooterScroll=!1,Y.lazScrollLoading=!1},200)},X=(e,t,l,a)=>{t&&(q.lastScrollLeft=a),e&&(q.lastScrollTop=l),Y.lastScrollTime=Date.now(),te(t,e)},v=(u,n,c,f,v)=>{var h=q.xeTable,{lastScrollLeft:g,lastScrollTop:m}=q,y=D.value,x=R.value;if(y&&x&&h){var{computeScrollXThreshold:h,computeScrollYThreshold:_}=h.getComputeMaps(),p=x.clientHeight,S=y.clientWidth,x=x.scrollHeight,y=y.scrollWidth;let e=!1,t=!1,l=!1,a=!1,r="",i=!1,o=!1,s=!1,d=!1;c&&(h=h.value,(l=v<=0)||(a=y-1<=v+S),g<v?(r="right",y-h<=v+S&&(d=!0)):(r="left",v<=h&&(s=!0))),n&&(g=_.value,(e=f<=0)||(t=x-1<=f+p),m<f?(r="bottom",x-g<=f+p&&(o=!0)):(r="top",f<=g&&(i=!0))),X(n,c,f,v);h={source:sourceType,scrollTop:f,scrollLeft:v,bodyHeight:p,bodyWidth:S,scrollHeight:x,scrollWidth:y,isX:c,isY:n,isTop:e,isBottom:t,isLeft:l,isRight:a,direction:r};(o||i||d||s)&&U.dispatchEvent("scroll-boundary",h,u),U.dispatchEvent("scroll",h,u)}},le=e=>{var t=q.xeTable;t&&(t=t.internalData.elemStore,t=(0,_util.getRefElem)(t["main-body-scroll"]))&&(t.scrollTop=e)};e={handleUpdateStyle:f,handleLazyRecalculate:Q,handleUpdateCurrentRow(e){var t,l,a=q.xeTable,r=i.value;a&&r&&(e?(t=a.props,l=a.getComputeMaps().computeRowOpts,(l.value.isCurrent||t.highlightCurrentRow)&&_xeUtils.default.arrayEach(r.querySelectorAll(`.vxe-gantt-view--body-row[rowid="${a.getRowid(e)}"]`),e=>(0,_dom.addClass)(e,"row--current"))):_xeUtils.default.arrayEach(r.querySelectorAll(".vxe-gantt-view--body-row.row--current"),e=>(0,_dom.removeClass)(e,"row--current")))},handleUpdateHoverRow(e){var t=q.xeTable,l=i.value;t&&l&&(e?_xeUtils.default.arrayEach(l.querySelectorAll(`.vxe-gantt-view--body-row[rowid="${t.getRowid(e)}"]`),e=>(0,_dom.addClass)(e,"row--hover")):_xeUtils.default.arrayEach(l.querySelectorAll(".vxe-gantt-view--body-row.row--hover"),e=>(0,_dom.removeClass)(e,"row--hover")))},triggerHeaderScrollEvent(e){var{elemStore:t,inVirtualScroll:l,inBodyScroll:a,inFooterScroll:r}=q;l||a||r||(l=e.currentTarget,a=(0,_util.getRefElem)(t["main-body-scroll"]),r=D.value,a&&l&&(t=l.scrollLeft,q.inHeaderScroll=!0,(0,_dom.setScrollLeft)(r,t),(0,_dom.setScrollLeft)(a,t),v(e,!1,!0,l.scrollTop,t)))},triggerBodyScrollEvent(e){var t,l,a=Y.scrollXLoad,{elemStore:r,inVirtualScroll:i,inHeaderScroll:o,inFooterScroll:s,lastScrollLeft:d,lastScrollTop:u}=q;i||o||s||(i=e.currentTarget,o=(0,_util.getRefElem)(r["main-header-scroll"]),s=D.value,r=R.value,d=(t=i.scrollLeft)!==d,u=(l=i.scrollTop)!==u,q.inBodyScroll=!0,q.scrollRenderType="",u&&((0,_dom.setScrollTop)(r,l),le(l)),d&&(q.inBodyScroll=!0,(0,_dom.setScrollLeft)(s,t),(0,_dom.setScrollLeft)(o,t),a)&&ee(),u&&X(u,d,i.scrollTop,t),d&&v(e,u,d,i.scrollTop,t))},triggerVirtualScrollXEvent(e){var t,l=Y.scrollXLoad,{elemStore:a,inHeaderScroll:r,inBodyScroll:i}=q;r||i||(r=e.currentTarget,i=(0,_util.getRefElem)(a["main-header-scroll"]),a=(0,_util.getRefElem)(a["main-body-scroll"]),r&&(t=r.scrollLeft,q.inVirtualScroll=!0,(0,_dom.setScrollLeft)(i,t),(0,_dom.setScrollLeft)(a,t),l&&ee(),v(e,!1,!0,r.scrollTop,t)))},triggerVirtualScrollYEvent(e){var{elemStore:t,inHeaderScroll:l,inBodyScroll:a}=q;l||a||(l=e.currentTarget,a=(0,_util.getRefElem)(t["main-body-scroll"]),l&&(e=l.scrollTop,q.inVirtualScroll=!0,(0,_dom.setScrollTop)(a,e),le(e),X(!0,!1,e,l.scrollLeft)))},handleUpdateSXSpace(){return a()},handleUpdateSYSpace(){return(()=>{var e=q.elemStore,t=q.xeTable,l=(0,_util.getRefElem)(e["main-body-scroll"]),a=(0,_util.getRefElem)(e["main-body-table"]);let r=0,i=0,o=!1,s=(t&&(t=t.reactData,r=t.scrollYTop,i=t.scrollYHeight,o=t.isScrollYBig),i),d=r,u=0;l&&(u=l.clientHeight),o&&(d=l&&a&&l.scrollTop+u>=maxYHeight?maxYHeight-a.clientHeight:(maxYHeight-u)*(r/(i-u)),s=maxYHeight);t=(0,_util.getRefElem)(e["main-chart-wrapper"]),a&&(a.style.transform=`translate(${Y.scrollXLeft||0}px, ${d}px)`),t&&(t.style.transform=`translate(${Y.scrollXLeft||0}px, ${d}px)`),l=(0,_util.getRefElem)(e["main-body-ySpace"]),l&&(l.style.height=s?s+"px":""),a=n.value;return a&&(a.style.height=s?s+"px":""),Y.scrollYTop=d,Y.scrollYHeight=i,Y.isScrollYBig=o,c(),(0,_vue.nextTick)().then(()=>{f()})})()},handleUpdateSYStatus(e){Y.scrollYLoad=e}};let ae=()=>{Q()},re=(Object.assign(t,{refreshData(){return G(),s(),(0,_vue.nextTick)().then(()=>{var e=q.xeTable;if(s(),e)return e.recalculate()})},updateViewData(){var e=q.xeTable;return e&&(e=e.reactData.tableData,Y.tableData=e),(0,_vue.nextTick)()},connectUpdate({$table:e}){return e&&(q.xeTable=e),(0,_vue.nextTick)()}},e),()=>(0,_vue.h)("div",{key:"vsx",ref:w,class:"vxe-gantt-view--scroll-x-virtual"},[(0,_vue.h)("div",{ref:H,class:"vxe-gantt-view--scroll-x-left-corner"}),(0,_vue.h)("div",{ref:k,class:"vxe-gantt-view--scroll-x-wrapper"},[(0,_vue.h)("div",{ref:D,class:"vxe-gantt-view--scroll-x-handle",onScroll:t.triggerVirtualScrollXEvent},[(0,_vue.h)("div",{ref:d,class:"vxe-gantt-view--scroll-x-space"})]),(0,_vue.h)("div",{class:"vxe-gantt-view--scroll-x-handle-appearance"})]),(0,_vue.h)("div",{ref:L,class:"vxe-gantt-view--scroll-x-right-corner"})])),ie=()=>(0,_vue.h)("div",{ref:M,class:"vxe-gantt-view--scroll-y-virtual"},[(0,_vue.h)("div",{ref:z,class:"vxe-gantt-view--scroll-y-top-corner"}),(0,_vue.h)("div",{ref:C,class:"vxe-gantt-view--scroll-y-wrapper"},[(0,_vue.h)("div",{ref:R,class:"vxe-gantt-view--scroll-y-handle",onScroll:t.triggerVirtualScrollYEvent},[(0,_vue.h)("div",{ref:n,class:"vxe-gantt-view--scroll-y-space"})]),(0,_vue.h)("div",{class:"vxe-gantt-view--scroll-y-handle-appearance"})]),(0,_vue.h)("div",{ref:I,class:"vxe-gantt-view--scroll-y-bottom-corner"})]),oe=()=>(0,_vue.h)("div",{class:"vxe-gantt-view--viewport-wrapper"},[(0,_vue.h)(_ganttHeader.default),(0,_vue.h)(_ganttBody.default),(0,_vue.h)(_ganttFooter.default)]),se=()=>{var e=b.value;return(0,_vue.h)("div",{class:"vxe-gantt-view--layout-wrapper"},e?[ie(),oe()]:[oe(),ie()])};let l=(0,_vue.ref)(0);return(0,_vue.watch)(()=>Y.tableData,()=>{l.value++}),(0,_vue.watch)(()=>Y.tableData.length,()=>{l.value++}),(0,_vue.watch)(l,()=>{G()}),(0,_vue.onMounted)(()=>{globalEvents.on(t,"resize",ae)}),(0,_vue.onUnmounted)(()=>{globalEvents.off(t,"keydown"),_xeUtils.default.assign(q,createInternalData())}),t.renderVN=()=>{var{overflowX:e,overflowY:t,scrollXLoad:l,scrollYLoad:a}=Y,r=T.value;return(0,_vue.h)("div",{ref:i,class:["vxe-gantt-view",{"is--scroll-y":t,"is--scroll-x":e,"is--virtual-x":l,"is--virtual-y":a}]},[(0,_vue.h)("div",{class:"vxe-gantt-view--render-wrapper"},r?[re(),se()]:[se(),re()]),(0,_vue.h)("div",{class:"vxe-gantt-view--render-vars"},[(0,_vue.h)("div",{ref:$,class:"vxe-gantt-view--column-info"})])])},(0,_vue.provide)("$xeGanttView",t),t},render(){return this.renderVN()}});
|
|
1
|
+
Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=void 0;var _vue=require("vue"),_comp=require("../../ui/src/comp"),_dom=require("../../ui/src/dom"),_core=require("@vxe-ui/core"),_util=require("./util"),_xeUtils=_interopRequireDefault(require("xe-utils")),_ganttHeader=_interopRequireDefault(require("./gantt-header")),_ganttBody=_interopRequireDefault(require("./gantt-body")),_ganttFooter=_interopRequireDefault(require("./gantt-footer"));function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e}}let globalEvents=_core.VxeUI.globalEvents,sourceType="gantt",minuteMs=6e4,dayMs=60*minuteMs*24;function createInternalData(){return{xeTable:null,visibleColumn:[],startMaps:{},endMaps:{},chartMaps:{},todayDateMaps:{},elemStore:{},scrollXStore:{preloadSize:0,offsetSize:0,visibleSize:0,visibleStartIndex:0,visibleEndIndex:0,startIndex:0,endIndex:0},lastScrollTop:0,lastScrollLeft:0}}let maxYHeight=5e6;var _default=exports.default=(0,_comp.defineVxeComponent)({name:"VxeGanttView",setup(l,r){var e=_xeUtils.default.uniqueId();let U=(0,_vue.inject)("$xeGantt",{}),u=U.internalData,{computeTaskOpts:h,computeTaskViewOpts:p,computeStartField:m,computeEndField:y,computeScrollbarOpts:S,computeScrollbarXToTop:T,computeScrollbarYToLeft:b,computeScaleUnit:o,computeWeekScale:W,computeMinScale:E}=U.getComputeMaps(),i=(0,_vue.ref)(),w=(0,_vue.ref)(),M=(0,_vue.ref)(),D=(0,_vue.ref)(),H=(0,_vue.ref)(),L=(0,_vue.ref)(),k=(0,_vue.ref)(),R=(0,_vue.ref)(),z=(0,_vue.ref)(),C=(0,_vue.ref)(),I=(0,_vue.ref)(),d=(0,_vue.ref)(),n=(0,_vue.ref)(),Y=(0,_vue.ref)(),$=(0,_vue.reactive)({scrollXLoad:!1,scrollYLoad:!1,overflowY:!0,overflowX:!0,scrollbarWidth:0,scrollbarHeight:0,lastScrollTime:0,lazScrollLoading:!1,scrollVMLoading:!1,scrollYHeight:0,scrollYTop:0,isScrollYBig:!1,scrollXLeft:0,scrollXWidth:0,isScrollXBig:!1,minViewDate:null,maxViewDate:null,tableData:[],tableColumn:[],headerGroups:[],viewCellWidth:40}),q=createInternalData(),_={refElem:i},V=(0,_vue.computed)(()=>{var{minViewDate:t,maxViewDate:l}=$,e=p.value,a=E.value,e=e.gridding,r=[];if(t&&l){var i=-_xeUtils.default.toNumber(e&&e.leftSpacing||0),o=_xeUtils.default.toNumber(e&&e.rightSpacing||0);switch(a.type){case"year":{let e=_xeUtils.default.getWhatYear(t,i,"first");for(var s=_xeUtils.default.getWhatYear(l,o,"first");e<=s;){var d=e;r.push(d),e=_xeUtils.default.getWhatYear(e,1)}break}case"quarter":{let e=_xeUtils.default.getWhatQuarter(t,i,"first");for(var u=_xeUtils.default.getWhatQuarter(l,o,"first");e<=u;){var n=e;r.push(n),e=_xeUtils.default.getWhatQuarter(e,1)}break}case"month":{let e=_xeUtils.default.getWhatMonth(t,i,"first");for(var c=_xeUtils.default.getWhatMonth(l,o,"first");e<=c;){var f=e;r.push(f),e=_xeUtils.default.getWhatMonth(e,1)}break}case"week":{let e=_xeUtils.default.getWhatWeek(t,i,a.startDay,a.startDay);for(var v=_xeUtils.default.getWhatWeek(l,o,a.startDay,a.startDay);e<=v;){var h=e;r.push(h),e=_xeUtils.default.getWhatWeek(e,1)}break}case"day":case"date":{let e=_xeUtils.default.getWhatDay(t,i,"first");for(var g=_xeUtils.default.getWhatDay(l,o,"first");e<=g;){var m=e;r.push(m),e=_xeUtils.default.getWhatDay(e,1)}break}case"hour":case"minute":case"second":{var y=(0,_util.getStandardGapTime)(a.type);let e=t.getTime()+i*y;for(var _=l.getTime()+o*y;e<=_;){var x=new Date(e);r.push(x),e+=y}break}}}return r}),x={computeScaleDateList:V},X={xID:e,props:l,context:r,reactData:$,internalData:q,getRefMaps:()=>_,getComputeMaps:()=>x},g=e=>{var t=h.value.dateFormat;return _xeUtils.default.toStringDate(e,t||null)},F=()=>{var e=U.reactData.taskScaleList,e=e.find(e=>"week"===e.type),t=new Date,[l,a,r,i,o,s]=_xeUtils.default.toDateString(t,"yyyy-M-d-H-m-s").split("-"),d=t.getDay()+1,u=Math.ceil((t.getMonth()+1)/3),t=_xeUtils.default.getYearWeek(t,e?e.startDay:void 0);q.todayDateMaps={year:l,quarter:l+"_q"+u,month:l+"_"+a,week:l+"_W"+t,day:l+`_${a}_${r}_E`+d,date:l+`_${a}_`+r,hour:l+`_${a}_${r}_`+i,minute:l+`_${a}_${r}_${i}_`+o,second:l+`_${a}_${r}_${i}_${o}_`+s}},j=()=>{var e=U.reactData.taskScaleList,t=o.value;let s=E.value;var l=W.value,a=V.value;let r=[],d=[];if(s&&t&&a.length){let i={year:[],quarter:[],month:[],week:[],day:[],date:[],hour:[],minute:[],second:[]},o={year:{},quarter:{},month:{},week:{},day:{},date:{},hour:{},minute:{},second:{}};var u=(t,l,a)=>{if(s.type!==t){var l=l[t],r=""+l.field;let e=o[t][r];e||(e=l,o[t][r]=e,i[t].push(e)),e&&(e.children||(e.children=[]),e.children.push(a))}};for(let e=0;e<a.length;e++){var n=a[e],[c,f,v,h,g,m,y,_,x,p,S,T]=_xeUtils.default.toDateString(n,"yy-yyyy-M-MM-d-dd-H-HH-m-mm-s-ss").split("-"),b=n.getDay(),w=b+1,M=Math.ceil((n.getMonth()+1)/3),D=""+_xeUtils.default.getYearWeek(n,l?l.startDay:void 0),n={date:n,yy:c,yyyy:f,M:v,MM:h,d:g,dd:m,H:y,HH:_,m:x,mm:p,s:S,ss:T,q:M,W:D,WW:_xeUtils.default.padStart(D,2,"0"),E:w,e:b},c={year:{field:f,title:f,dateObj:n},quarter:{field:f+"_q"+M,title:""+M,dateObj:n},month:{field:f+"_"+h,title:h,dateObj:n},week:{field:f+"_W"+D,title:D,dateObj:n},day:{field:f+`_${h}_${m}_E`+w,title:""+w,dateObj:n},date:{field:f+`_${h}_`+m,title:m,dateObj:n},hour:{field:f+`_${h}_${m}_`+_,title:_,dateObj:n},minute:{field:f+`_${h}_${m}_${_}_`+p,title:p,dateObj:n},second:{field:f+`_${h}_${m}_${_}_${p}_`+T,title:T,dateObj:n}},v=c[s.type];s.level<19&&u("year",c,v),s.level<17&&u("quarter",c,v),s.level<15&&u("month",c,v),s.level<13&&u("week",c,v),s.level<11&&u("day",c,v),s.level<9&&u("date",c,v),s.level<7&&u("hour",c,v),s.level<5&&u("minute",c,v),s.level<3&&u("second",c,v),r.push(v)}e.forEach(e=>{var t;e.type===s.type?d.push({scaleItem:e,columns:r}):((t=i[e.type]||[])&&t.forEach(e=>{e.childCount=e.children?e.children.length:0,e.children=void 0}),d.push({scaleItem:e,columns:t}))})}return{fullCols:r,groupCols:d}},B=e=>{let i=$.minViewDate;var t=E.value,l=o.value;let d=W.value;switch(l){case"year":{let s={};return e.forEach(({dateObj:e},t)=>{e=_xeUtils.default.toDateString(e.date,"yyyy");s[e]=t}),(e,t)=>{var e=g(e),t=g(t),l=_xeUtils.default.toDateString(e,"yyyy"),a=_xeUtils.default.getWhatYear(e,0,"first"),r=_xeUtils.default.toDateString(t,"yyyy"),i=_xeUtils.default.getWhatYear(t,0,"first"),o=Math.floor((_xeUtils.default.getWhatYear(t,1,"first").getTime()-i.getTime())/dayMs),e=(e.getTime()-a.getTime())/dayMs/o,a=Math.max(0,(t.getTime()-i.getTime())/dayMs+1)/o,t=(s[l]||0)+e;return{offsetLeftSize:t,offsetWidthSize:(s[r]||0)-t+a+1}}}case"quarter":{let s={};return e.forEach(({dateObj:e},t)=>{e=_xeUtils.default.toDateString(e.date,"yyyy-q");s[e]=t}),(e,t)=>{var e=g(e),t=g(t),l=_xeUtils.default.toDateString(e,"yyyy-q"),a=_xeUtils.default.getWhatQuarter(e,0,"first"),r=_xeUtils.default.toDateString(t,"yyyy-q"),i=_xeUtils.default.getWhatQuarter(t,0,"first"),o=Math.floor((_xeUtils.default.getWhatQuarter(t,1,"first").getTime()-i.getTime())/dayMs),e=(e.getTime()-a.getTime())/dayMs/o,a=Math.max(0,(t.getTime()-i.getTime())/dayMs+1)/o,t=(s[l]||0)+e;return{offsetLeftSize:t,offsetWidthSize:(s[r]||0)-t+a+1}}}case"month":{let s={};return e.forEach(({dateObj:e},t)=>{e=_xeUtils.default.toDateString(e.date,"yyyy-MM");s[e]=t}),(e,t)=>{var e=g(e),t=g(t),l=_xeUtils.default.toDateString(e,"yyyy-MM"),a=_xeUtils.default.getWhatMonth(e,0,"first"),r=_xeUtils.default.toDateString(t,"yyyy-MM"),i=_xeUtils.default.getWhatMonth(t,0,"first"),o=Math.floor((_xeUtils.default.getWhatMonth(t,1,"first").getTime()-i.getTime())/dayMs),e=(e.getTime()-a.getTime())/dayMs/o,a=Math.max(0,(t.getTime()-i.getTime())/dayMs+1)/o,t=(s[l]||0)+e;return{offsetLeftSize:t,offsetWidthSize:(s[r]||0)-t+a+1}}}case"week":{let s={};return e.forEach(({dateObj:e},t)=>{e=_xeUtils.default.toDateString(e.date,"yyyy-W",{firstDay:d?d.startDay:void 0});s[e]=t}),(e,t)=>{var e=g(e),t=g(t),l=_xeUtils.default.toDateString(e,"yyyy-W",{firstDay:d?d.startDay:void 0}),a=_xeUtils.default.getWhatWeek(e,0,d?d.startDay:void 0,d?d.startDay:void 0),r=_xeUtils.default.toDateString(t,"yyyy-W",{firstDay:d?d.startDay:void 0}),i=_xeUtils.default.getWhatWeek(t,0,d?d.startDay:void 0,d?d.startDay:void 0),o=Math.floor((_xeUtils.default.getWhatWeek(t,1,d?d.startDay:void 0,d?d.startDay:void 0).getTime()-i.getTime())/dayMs),e=(e.getTime()-a.getTime())/dayMs/o,a=Math.max(0,(t.getTime()-i.getTime())/dayMs+1)/o,t=(s[l]||0)+e;return{offsetLeftSize:t,offsetWidthSize:(s[r]||0)-t+a+1}}}case"day":case"date":{let s={};return e.forEach(({dateObj:e},t)=>{e=_xeUtils.default.toDateString(e.date,"yyyy-MM-dd");s[e]=t}),(e,t)=>{var e=g(e),t=g(t),l=_xeUtils.default.toDateString(e,"yyyy-MM-dd"),a=_xeUtils.default.getWhatDay(e,0,"first"),r=_xeUtils.default.toDateString(t,"yyyy-MM-dd"),i=_xeUtils.default.getWhatDay(t,0,"first"),o=Math.floor((_xeUtils.default.getWhatDay(t,1,"first").getTime()-i.getTime())/minuteMs),e=(e.getTime()-a.getTime())/minuteMs/o,a=Math.max(0,(t.getTime()-i.getTime())/minuteMs+1)/o,t=(s[l]||0)+e;return{offsetLeftSize:t,offsetWidthSize:(s[r]||0)-t+a+1}}}case"hour":{let s={};return e.forEach(({dateObj:e},t)=>{e=_xeUtils.default.toDateString(e.date,"yyyy-MM-dd HH");s[e]=t}),(e,t)=>{var e=g(e),t=g(t),l=_xeUtils.default.toDateString(e,"yyyy-MM-dd HH"),a=_xeUtils.default.getWhatHours(e,0,"first"),r=_xeUtils.default.toDateString(t,"yyyy-MM-dd HH"),i=_xeUtils.default.getWhatHours(t,0,"first"),o=Math.floor((_xeUtils.default.getWhatHours(t,1,"first").getTime()-i.getTime())/minuteMs),e=(e.getTime()-a.getTime())/minuteMs/o,a=Math.max(0,(t.getTime()-i.getTime())/minuteMs+1)/o,t=(s[l]||0)+e;return{offsetLeftSize:t,offsetWidthSize:(s[r]||0)-t+a+1}}}case"minute":{let s={};return e.forEach(({dateObj:e},t)=>{e=_xeUtils.default.toDateString(e.date,"yyyy-MM-dd HH:mm");s[e]=t}),(e,t)=>{var e=g(e),t=g(t),l=_xeUtils.default.toDateString(e,"yyyy-MM-dd HH:mm"),a=_xeUtils.default.getWhatMinutes(e,0,"first"),r=_xeUtils.default.toDateString(t,"yyyy-MM-dd HH:mm"),i=_xeUtils.default.getWhatMinutes(t,0,"first"),o=Math.floor((_xeUtils.default.getWhatMinutes(t,1,"first").getTime()-i.getTime())/minuteMs),e=(e.getTime()-a.getTime())/minuteMs/o,a=Math.max(0,(t.getTime()-i.getTime())/minuteMs+1)/o,t=(s[l]||0)+e;return{offsetLeftSize:t,offsetWidthSize:(s[r]||0)-t+a+1}}}case"second":{let r=(0,_util.getStandardGapTime)(t.type);return(e,t)=>{e=g(e),t=g(t);let l=0,a=0;return i&&(l=(e.getTime()-i.getTime())/r,a=(t.getTime()-e.getTime())/r+1),{offsetLeftSize:l,offsetWidthSize:a}}}}return()=>({offsetLeftSize:0,offsetWidthSize:0})},G=()=>{var e=U.props.treeConfig,t=q.scrollXStore,r=q.xeTable;let i=null,o=null;if(r){let l=m.value,a=y.value;var{computeAggregateOpts:s,computeTreeOpts:d}=r.getComputeMaps(),u=r.reactData.isRowGroupStatus,{afterFullData:r,afterTreeFullData:n,afterGroupFullData:c}=r.internalData,s=s.value,d=d.value,f=d.transform,v=d.children||d.childrenField,h=e=>{var t=_xeUtils.default.get(e,l),e=_xeUtils.default.get(e,a);t&&e&&(t=g(t),(!i||i.getTime()>t.getTime())&&(i=t),t=g(e),!o||o.getTime()<t.getTime())&&(o=t)};u?(u=s.mapChildrenField)&&_xeUtils.default.eachTree(c,h,{children:u}):e?_xeUtils.default.eachTree(n,h,{children:f?d.mapChildrenField:v}):r.forEach(h)}t.startIndex=0,t.endIndex=Math.max(1,t.visibleSize),$.minViewDate=i,$.maxViewDate=o,q.startMaps={},q.endMaps={},(()=>{var e=U.props.treeConfig,{minViewDate:t,maxViewDate:l}=$,{fullCols:a,groupCols:r}=j();if(t&&l&&a.length){let d=q.xeTable;if(d){let r=m.value,i=y.value;var{computeAggregateOpts:t,computeTreeOpts:l}=d.getComputeMaps(),u=d.reactData.isRowGroupStatus,{afterFullData:n,afterTreeFullData:c,afterGroupFullData:f}=d.internalData,t=t.value,l=l.value,v=l.transform,h=l.children||l.childrenField;let o={},s=B(a);var g=e=>{var t=d.getRowid(e),l=_xeUtils.default.get(e,r),a=_xeUtils.default.get(e,i);l&&a&&({offsetLeftSize:l,offsetWidthSize:a}=s(l,a),o[t]={row:e,rowid:t,oLeftSize:l,oWidthSize:a})};u?(u=t.mapChildrenField)&&_xeUtils.default.eachTree(f,g,{children:u}):e?_xeUtils.default.eachTree(c,g,{children:v?l.mapChildrenField:h}):n.forEach(g),q.chartMaps=o}}q.visibleColumn=a,$.headerGroups=r,F(),K(),Z()})()},c=()=>{var{scrollXWidth:e,scrollYHeight:t}=$,l=q.elemStore,a=S.value,l=(0,_util.getRefElem)(l["main-body-wrapper"]),r=D.value,i=k.value;l&&(t=t>l.clientHeight,i&&($.scrollbarWidth=a.width||i.offsetWidth-i.clientWidth||14),$.overflowY=t,i=e>l.clientWidth,r&&($.scrollbarHeight=a.height||r.offsetHeight-r.clientHeight||14),$.overflowX=i)},A=()=>{let l=u.dragBarRow,a=$.viewCellWidth,{elemStore:e,chartMaps:r}=q,i=q.xeTable;var t=(0,_util.getRefElem)(e["main-chart-task-wrapper"]);return t&&i&&_xeUtils.default.arrayEach(t.children,e=>{var t=e.children[0];t&&(e=e.getAttribute("rowid"),l&&i.getRowid(l)===e||(e=e?r[e]:null,t.style.left=(0,_util.getTaskBarLeft)(e,a)+"px",t.style.width=(0,_util.getTaskBarWidth)(e,a)+"px"))}),(0,_vue.nextTick)()},f=()=>{var{scrollbarWidth:s,scrollbarHeight:d,headerGroups:u,tableColumn:n}=$,{elemStore:c,visibleColumn:f}=q,v=q.xeTable,h=i.value;if(h&&U){var g=S.value,m=T.value,y=b.value,_=H.value,x=L.value,p=w.value;let e=s;s=d;let t=0,l=0,a=0,r=(v&&(d=v.internalData,t=d.tBodyHeight,l=d.tHeaderHeight,a=d.tFooterHeight),"visible");(y||g.y&&!1===g.y.visible)&&(e=0,r="hidden");v=(0,_util.getRefElem)(c["main-header-scroll"]),d=(v&&(v.style.height=l+"px",v.style.setProperty("--vxe-ui-gantt-view-cell-height",l/u.length+"px")),(0,_util.getRefElem)(c["main-body-scroll"])),y=(d&&(d.style.height=t+"px"),(0,_util.getRefElem)(c["main-footer-scroll"])),g=(y&&(y.style.height=a+"px"),p&&(p.style.height=s+"px",p.style.visibility="visible"),z.value),v=(g&&(g.style.left=m?e+"px":"",g.style.width=h.clientWidth-e+"px"),_&&(_.style.width=m?e+"px":"",_.style.display=m&&s?"block":""),x&&(x.style.width=m?"":e+"px",x.style.display=!m&&s?"block":""),M.value),u=(v&&(v.style.width=e+"px",v.style.height=t+l+a+"px",v.style.visibility=r),R.value),y=(u&&(u.style.height=l+"px",u.style.display=l?"block":""),C.value),p=(y&&(y.style.height=t+"px",y.style.top=l+"px"),I.value),g=(p&&(p.style.height=a+"px",p.style.top=l+t+"px",p.style.display=a?"block":""),Y.value);let i=40,o=(i=g?g.clientWidth||40:i)*f.length;d&&0<(_=(h=d.clientWidth)-o)&&(i+=_/f.length,o=h),$.viewCellWidth=i;x=(0,_util.getRefElem)(c["main-header-table"]),m=(0,_util.getRefElem)(c["main-body-table"]),s=i*n.length;return x&&(x.style.width=o+"px"),m&&(m.style.width=s+"px"),$.scrollXWidth=o,Promise.all([A(),U.handleUpdateTaskLink?U.handleUpdateTaskLink(X):null])}},s=()=>{var e=i.value;return q.rceRunTime=Date.now(),e&&e.clientWidth&&U?(c(),f(),(0,_vue.nextTick)().then(()=>{var e,t=$.scrollXLoad,l=q.scrollXStore;t?({toVisibleIndex:t,visibleSize:e}=N(),l.preloadSize=1,l.offsetSize=2,l.visibleSize=e,l.endIndex=Math.max(l.startIndex+l.visibleSize+2,l.endIndex),l.visibleStartIndex=Math.max(l.startIndex,t),l.visibleEndIndex=Math.min(l.endIndex,t+e),J().then(()=>{P()})):a()})):(0,_vue.nextTick)()},Q=()=>new Promise(e=>{var{rceTimeout:t,rceRunTime:l}=q,a=q.xeTable;let r=30;a&&(a=a.getComputeMaps().computeResizeOpts,a=a.value,r=a.refreshDelay||r),!t||(clearTimeout(t),l&&l+(r-5)<Date.now())?e(s()):(0,_vue.nextTick)(()=>{e()}),q.rceTimeout=setTimeout(()=>{q.rceTimeout=void 0,s()},r)}),N=()=>{var e,t=$.viewCellWidth,l=q.elemStore,l=(0,_util.getRefElem)(l["main-body-scroll"]);return l?(e=l.clientWidth,l=l.scrollLeft,l=Math.floor(l/t)-1,e=Math.ceil(e/t)+1,{toVisibleIndex:Math.max(0,l),visibleSize:Math.max(1,e)}):{toVisibleIndex:0,visibleSize:6}},P=()=>{var e=$.isScrollXBig,t=q.scrollXStore,{preloadSize:l,startIndex:a,endIndex:r,offsetSize:i}=t,{toVisibleIndex:o,visibleSize:s}=N(),e={startIndex:Math.max(0,e?o-1:o-1-i-l),endIndex:e?o+s:o+s+i+l},{startIndex:i,endIndex:l}=(t.visibleStartIndex=o-1,t.visibleEndIndex=o+s+1,e);!(o<=a||r-s-1<=o)||a===i&&r===l||(t.startIndex=i,t.endIndex=l,J())},J=()=>(Z(),a(),(0,_vue.nextTick)()),K=()=>$.scrollXLoad=!0,Z=()=>{var e=$.scrollXLoad,{visibleColumn:t,scrollXStore:l}=q,e=e?t.slice(l.startIndex,l.endIndex):t.slice(0);$.tableColumn=e},a=()=>{let{scrollXLoad:t,scrollXWidth:l,viewCellWidth:e}=$,{elemStore:a,scrollXStore:r}=q;var i=(0,_util.getRefElem)(a["main-body-table"]),o=r.startIndex;let s=0;t&&(s=Math.max(0,o*e)),i&&(i.style.transform=`translate(${s}px, ${$.scrollYTop||0}px)`);["header","body","footer"].forEach(e=>{e=(0,_util.getRefElem)(a[`main-${e}-xSpace`]);e&&(e.style.width=t?l+"px":"")});o=d.value;return o&&(o.style.width=l+"px"),c(),(0,_vue.nextTick)()},ee=()=>{P()},te=(e,t)=>{var l=q.lcsTimeout;$.lazScrollLoading=!0,l&&clearTimeout(l),q.lcsTimeout=setTimeout(()=>{q.lcsRunTime=Date.now(),q.lcsTimeout=void 0,q.intoRunScroll=!1,q.inVirtualScroll=!1,q.inWheelScroll=!1,q.inHeaderScroll=!1,q.inBodyScroll=!1,q.inFooterScroll=!1,$.lazScrollLoading=!1},200)},O=(e,t,l,a)=>{t&&(q.lastScrollLeft=a),e&&(q.lastScrollTop=l),$.lastScrollTime=Date.now(),te(t,e)},v=(u,n,c,f,v)=>{var h=q.xeTable,{lastScrollLeft:g,lastScrollTop:m}=q,y=D.value,_=k.value;if(y&&_&&h){var{computeScrollXThreshold:h,computeScrollYThreshold:x}=h.getComputeMaps(),p=_.clientHeight,S=y.clientWidth,_=_.scrollHeight,y=y.scrollWidth;let e=!1,t=!1,l=!1,a=!1,r="",i=!1,o=!1,s=!1,d=!1;c&&(h=h.value,(l=v<=0)||(a=y-1<=v+S),g<v?(r="right",y-h<=v+S&&(d=!0)):(r="left",v<=h&&(s=!0))),n&&(g=x.value,(e=f<=0)||(t=_-1<=f+p),m<f?(r="bottom",_-g<=f+p&&(o=!0)):(r="top",f<=g&&(i=!0))),O(n,c,f,v);h={source:sourceType,scrollTop:f,scrollLeft:v,bodyHeight:p,bodyWidth:S,scrollHeight:_,scrollWidth:y,isX:c,isY:n,isTop:e,isBottom:t,isLeft:l,isRight:a,direction:r};(o||i||d||s)&&U.dispatchEvent("scroll-boundary",h,u),U.dispatchEvent("scroll",h,u)}},le=e=>{var t=q.xeTable;t&&(t=t.internalData.elemStore,t=(0,_util.getRefElem)(t["main-body-scroll"]))&&(t.scrollTop=e)};e={handleUpdateStyle:f,handleLazyRecalculate:Q,handleUpdateCurrentRow(e){var t,l,a=q.xeTable,r=i.value;a&&r&&(e?(t=a.props,l=a.getComputeMaps().computeRowOpts,(l.value.isCurrent||t.highlightCurrentRow)&&_xeUtils.default.arrayEach(r.querySelectorAll(`.vxe-gantt-view--body-row[rowid="${a.getRowid(e)}"]`),e=>(0,_dom.addClass)(e,"row--current"))):_xeUtils.default.arrayEach(r.querySelectorAll(".vxe-gantt-view--body-row.row--current"),e=>(0,_dom.removeClass)(e,"row--current")))},handleUpdateHoverRow(e){var t=q.xeTable,l=i.value;t&&l&&(e?_xeUtils.default.arrayEach(l.querySelectorAll(`.vxe-gantt-view--body-row[rowid="${t.getRowid(e)}"]`),e=>(0,_dom.addClass)(e,"row--hover")):_xeUtils.default.arrayEach(l.querySelectorAll(".vxe-gantt-view--body-row.row--hover"),e=>(0,_dom.removeClass)(e,"row--hover")))},triggerHeaderScrollEvent(e){var{elemStore:t,inVirtualScroll:l,inBodyScroll:a,inFooterScroll:r}=q;l||a||r||(l=e.currentTarget,a=(0,_util.getRefElem)(t["main-body-scroll"]),r=D.value,a&&l&&(t=l.scrollLeft,q.inHeaderScroll=!0,(0,_dom.setScrollLeft)(r,t),(0,_dom.setScrollLeft)(a,t),v(e,!1,!0,l.scrollTop,t)))},triggerBodyScrollEvent(e){var t,l,a=$.scrollXLoad,{elemStore:r,inVirtualScroll:i,inHeaderScroll:o,inFooterScroll:s,lastScrollLeft:d,lastScrollTop:u}=q;i||o||s||(i=e.currentTarget,o=(0,_util.getRefElem)(r["main-header-scroll"]),s=D.value,r=k.value,d=(t=i.scrollLeft)!==d,u=(l=i.scrollTop)!==u,q.inBodyScroll=!0,q.scrollRenderType="",u&&((0,_dom.setScrollTop)(r,l),le(l)),d&&(q.inBodyScroll=!0,(0,_dom.setScrollLeft)(s,t),(0,_dom.setScrollLeft)(o,t),a)&&ee(),u&&O(u,d,i.scrollTop,t),d&&v(e,u,d,i.scrollTop,t))},triggerVirtualScrollXEvent(e){var t,l=$.scrollXLoad,{elemStore:a,inHeaderScroll:r,inBodyScroll:i}=q;r||i||(r=e.currentTarget,i=(0,_util.getRefElem)(a["main-header-scroll"]),a=(0,_util.getRefElem)(a["main-body-scroll"]),r&&(t=r.scrollLeft,q.inVirtualScroll=!0,(0,_dom.setScrollLeft)(i,t),(0,_dom.setScrollLeft)(a,t),l&&ee(),v(e,!1,!0,r.scrollTop,t)))},triggerVirtualScrollYEvent(e){var{elemStore:t,inHeaderScroll:l,inBodyScroll:a}=q;l||a||(l=e.currentTarget,a=(0,_util.getRefElem)(t["main-body-scroll"]),l&&(e=l.scrollTop,q.inVirtualScroll=!0,(0,_dom.setScrollTop)(a,e),le(e),O(!0,!1,e,l.scrollLeft)))},handleUpdateSXSpace(){return a()},handleUpdateSYSpace(){return(()=>{var e=q.elemStore,t=q.xeTable,l=(0,_util.getRefElem)(e["main-body-scroll"]),a=(0,_util.getRefElem)(e["main-body-table"]);let r=0,i=0,o=!1,s=(t&&(t=t.reactData,r=t.scrollYTop,i=t.scrollYHeight,o=t.isScrollYBig),i),d=r,u=0;l&&(u=l.clientHeight),o&&(d=l&&a&&l.scrollTop+u>=maxYHeight?maxYHeight-a.clientHeight:(maxYHeight-u)*(r/(i-u)),s=maxYHeight);t=(0,_util.getRefElem)(e["main-chart-task-wrapper"]),a&&(a.style.transform=`translate(${$.scrollXLeft||0}px, ${d}px)`),t&&(t.style.transform=`translate(${$.scrollXLeft||0}px, ${d}px)`),l=(0,_util.getRefElem)(e["main-body-ySpace"]),l&&(l.style.height=s?s+"px":""),a=n.value,a&&(a.style.height=s?s+"px":""),t=(0,_util.getRefElem)(e["main-chart-line-wrapper"]),l=t?t.firstElementChild:null;return l&&(l.style.height=s?s+"px":""),$.scrollYTop=d,$.scrollYHeight=i,$.isScrollYBig=o,c(),(0,_vue.nextTick)().then(()=>{f()})})()},handleUpdateSYStatus(e){$.scrollYLoad=e}};let ae=()=>{Q()},re=(Object.assign(X,{refreshData(){return G(),s(),(0,_vue.nextTick)().then(()=>{var e=q.xeTable;if(s(),e)return e.recalculate()})},updateViewData(){var e=q.xeTable;return e&&(e=e.reactData.tableData,$.tableData=e),(0,_vue.nextTick)()},connectUpdate({$table:e}){return e&&(q.xeTable=e),(0,_vue.nextTick)()}},e),()=>(0,_vue.h)("div",{key:"vsx",ref:w,class:"vxe-gantt-view--scroll-x-virtual"},[(0,_vue.h)("div",{ref:H,class:"vxe-gantt-view--scroll-x-left-corner"}),(0,_vue.h)("div",{ref:z,class:"vxe-gantt-view--scroll-x-wrapper"},[(0,_vue.h)("div",{ref:D,class:"vxe-gantt-view--scroll-x-handle",onScroll:X.triggerVirtualScrollXEvent},[(0,_vue.h)("div",{ref:d,class:"vxe-gantt-view--scroll-x-space"})]),(0,_vue.h)("div",{class:"vxe-gantt-view--scroll-x-handle-appearance"})]),(0,_vue.h)("div",{ref:L,class:"vxe-gantt-view--scroll-x-right-corner"})])),ie=()=>(0,_vue.h)("div",{ref:M,class:"vxe-gantt-view--scroll-y-virtual"},[(0,_vue.h)("div",{ref:R,class:"vxe-gantt-view--scroll-y-top-corner"}),(0,_vue.h)("div",{ref:C,class:"vxe-gantt-view--scroll-y-wrapper"},[(0,_vue.h)("div",{ref:k,class:"vxe-gantt-view--scroll-y-handle",onScroll:X.triggerVirtualScrollYEvent},[(0,_vue.h)("div",{ref:n,class:"vxe-gantt-view--scroll-y-space"})]),(0,_vue.h)("div",{class:"vxe-gantt-view--scroll-y-handle-appearance"})]),(0,_vue.h)("div",{ref:I,class:"vxe-gantt-view--scroll-y-bottom-corner"})]),oe=()=>(0,_vue.h)("div",{class:"vxe-gantt-view--viewport-wrapper"},[(0,_vue.h)(_ganttHeader.default),(0,_vue.h)(_ganttBody.default),(0,_vue.h)(_ganttFooter.default)]),se=()=>{var e=b.value;return(0,_vue.h)("div",{class:"vxe-gantt-view--layout-wrapper"},e?[ie(),oe()]:[oe(),ie()])};let t=(0,_vue.ref)(0);return(0,_vue.watch)(()=>$.tableData,()=>{t.value++}),(0,_vue.watch)(()=>$.tableData.length,()=>{t.value++}),(0,_vue.watch)(t,()=>{G()}),(0,_vue.onMounted)(()=>{globalEvents.on(X,"resize",ae)}),(0,_vue.onUnmounted)(()=>{globalEvents.off(X,"keydown"),_xeUtils.default.assign(q,createInternalData())}),X.renderVN=()=>{var{overflowX:e,overflowY:t,scrollXLoad:l,scrollYLoad:a}=$,r=T.value;return(0,_vue.h)("div",{ref:i,class:["vxe-gantt-view",{"is--scroll-y":t,"is--scroll-x":e,"is--virtual-x":l,"is--virtual-y":a}]},[(0,_vue.h)("div",{class:"vxe-gantt-view--render-wrapper"},r?[re(),se()]:[se(),re()]),(0,_vue.h)("div",{class:"vxe-gantt-view--render-vars"},[(0,_vue.h)("div",{ref:Y,class:"vxe-gantt-view--column-info"})])])},(0,_vue.provide)("$xeGanttView",X),X},render(){return this.renderVN()}});
|
package/lib/gantt/src/gantt.js
CHANGED
|
@@ -11,6 +11,7 @@ var _utils = require("../../ui/src/utils");
|
|
|
11
11
|
var _dom = require("../../ui/src/dom");
|
|
12
12
|
var _vn = require("../../ui/src/vn");
|
|
13
13
|
var _core = require("@vxe-ui/core");
|
|
14
|
+
var _util = require("./util");
|
|
14
15
|
var _emits = require("./emits");
|
|
15
16
|
var _tableEmits = require("./table-emits");
|
|
16
17
|
var _log = require("../../ui/src/log");
|
|
@@ -35,6 +36,9 @@ const tableComponentMethodKeys = ['clearAll', 'syncData', 'updateData', 'loadDat
|
|
|
35
36
|
const defaultLayouts = [['Form'], ['Toolbar', 'Top', 'Gantt', 'Bottom', 'Pager']];
|
|
36
37
|
function createInternalData() {
|
|
37
38
|
return {
|
|
39
|
+
linkFromConfMaps: {},
|
|
40
|
+
linkFromKeyMaps: {},
|
|
41
|
+
linkUniqueMaps: {},
|
|
38
42
|
uFoot: false,
|
|
39
43
|
resizeTableWidth: 0
|
|
40
44
|
// barTipTimeout: null
|
|
@@ -65,15 +69,17 @@ var _default = exports.default = (0, _comp.defineVxeComponent)({
|
|
|
65
69
|
toolbarConfig: Object,
|
|
66
70
|
formConfig: Object,
|
|
67
71
|
zoomConfig: Object,
|
|
72
|
+
links: Array,
|
|
68
73
|
layouts: Array,
|
|
69
74
|
taskConfig: Object,
|
|
70
75
|
taskViewScaleConfig: Object,
|
|
71
76
|
taskViewConfig: Object,
|
|
77
|
+
taskLinkConfig: Object,
|
|
72
78
|
taskBarConfig: Object,
|
|
73
79
|
taskBarTooltipConfig: Object,
|
|
74
80
|
taskSplitConfig: Object,
|
|
75
81
|
taskBarResizeConfig: Object,
|
|
76
|
-
|
|
82
|
+
taskBarMoveConfig: Object,
|
|
77
83
|
size: {
|
|
78
84
|
type: String,
|
|
79
85
|
default: () => getConfig().gantt.size || getConfig().size
|
|
@@ -100,6 +106,7 @@ var _default = exports.default = (0, _comp.defineVxeComponent)({
|
|
|
100
106
|
tableLoading: false,
|
|
101
107
|
proxyInited: false,
|
|
102
108
|
isZMax: false,
|
|
109
|
+
tableLinks: [],
|
|
103
110
|
tableData: [],
|
|
104
111
|
filterData: [],
|
|
105
112
|
formData: {},
|
|
@@ -119,7 +126,9 @@ var _default = exports.default = (0, _comp.defineVxeComponent)({
|
|
|
119
126
|
content: '',
|
|
120
127
|
visible: false,
|
|
121
128
|
params: null
|
|
122
|
-
}
|
|
129
|
+
},
|
|
130
|
+
linkList: [],
|
|
131
|
+
upLinkFlag: 0
|
|
123
132
|
});
|
|
124
133
|
const internalData = createInternalData();
|
|
125
134
|
const refElem = (0, _vue.ref)();
|
|
@@ -196,8 +205,8 @@ var _default = exports.default = (0, _comp.defineVxeComponent)({
|
|
|
196
205
|
const computeTaskBarOpts = (0, _vue.computed)(() => {
|
|
197
206
|
return Object.assign({}, getConfig().gantt.taskBarConfig, props.taskBarConfig);
|
|
198
207
|
});
|
|
199
|
-
const
|
|
200
|
-
return Object.assign({}, getConfig().gantt.
|
|
208
|
+
const computeTaskBarMoveOpts = (0, _vue.computed)(() => {
|
|
209
|
+
return Object.assign({}, getConfig().gantt.taskBarMoveConfig, props.taskBarMoveConfig);
|
|
201
210
|
});
|
|
202
211
|
const computeTaskBarResizeOpts = (0, _vue.computed)(() => {
|
|
203
212
|
return Object.assign({}, getConfig().gantt.taskBarResizeConfig, props.taskBarResizeConfig);
|
|
@@ -208,6 +217,9 @@ var _default = exports.default = (0, _comp.defineVxeComponent)({
|
|
|
208
217
|
const computeTaskBarTooltipOpts = (0, _vue.computed)(() => {
|
|
209
218
|
return Object.assign({}, getConfig().gantt.taskBarTooltipConfig, props.taskBarTooltipConfig);
|
|
210
219
|
});
|
|
220
|
+
const computeTaskLinkOpts = (0, _vue.computed)(() => {
|
|
221
|
+
return Object.assign({}, getConfig().gantt.taskLinkConfig, props.taskLinkConfig);
|
|
222
|
+
});
|
|
211
223
|
const computeScaleUnit = (0, _vue.computed)(() => {
|
|
212
224
|
const minScale = computeMinScale.value;
|
|
213
225
|
return minScale ? minScale.type : 'date';
|
|
@@ -482,10 +494,11 @@ var _default = exports.default = (0, _comp.defineVxeComponent)({
|
|
|
482
494
|
computeTaskViewScaleOpts,
|
|
483
495
|
computeTaskViewOpts,
|
|
484
496
|
computeTaskBarOpts,
|
|
485
|
-
|
|
497
|
+
computeTaskBarMoveOpts,
|
|
486
498
|
computeTaskBarResizeOpts,
|
|
487
499
|
computeTaskSplitOpts,
|
|
488
500
|
computeTaskBarTooltipOpts,
|
|
501
|
+
computeTaskLinkOpts,
|
|
489
502
|
computeTaskViewScales,
|
|
490
503
|
computeScaleUnit,
|
|
491
504
|
computeMinScale,
|
|
@@ -938,6 +951,62 @@ var _default = exports.default = (0, _comp.defineVxeComponent)({
|
|
|
938
951
|
const handleSplitRightViewEvent = () => {
|
|
939
952
|
reactData.showRightView = !reactData.showRightView;
|
|
940
953
|
};
|
|
954
|
+
const handleTableLinks = () => {
|
|
955
|
+
const {
|
|
956
|
+
linkList
|
|
957
|
+
} = reactData;
|
|
958
|
+
reactData.tableLinks = linkList.slice(0);
|
|
959
|
+
};
|
|
960
|
+
const handleTaskAddLink = (item, linkConfs, fromConfMaps, fromKeyMaps, uniqueMaps) => {
|
|
961
|
+
if (item) {
|
|
962
|
+
const {
|
|
963
|
+
type,
|
|
964
|
+
from,
|
|
965
|
+
to,
|
|
966
|
+
lineStatus,
|
|
967
|
+
lineColor,
|
|
968
|
+
lineTyle,
|
|
969
|
+
lineWidth,
|
|
970
|
+
showArrow
|
|
971
|
+
} = item;
|
|
972
|
+
const tlKey = (0, _util.getTaskLinkKey)(from, to);
|
|
973
|
+
if (from && to && !uniqueMaps[tlKey]) {
|
|
974
|
+
let confs = fromConfMaps[from];
|
|
975
|
+
if (!confs) {
|
|
976
|
+
confs = fromConfMaps[from] = [];
|
|
977
|
+
}
|
|
978
|
+
const confObj = {
|
|
979
|
+
type,
|
|
980
|
+
from,
|
|
981
|
+
to,
|
|
982
|
+
lineStatus,
|
|
983
|
+
lineColor,
|
|
984
|
+
lineTyle,
|
|
985
|
+
lineWidth,
|
|
986
|
+
showArrow
|
|
987
|
+
};
|
|
988
|
+
confs.push(confObj);
|
|
989
|
+
linkConfs.push(confObj);
|
|
990
|
+
fromKeyMaps[from] = confObj;
|
|
991
|
+
uniqueMaps[tlKey] = confObj;
|
|
992
|
+
}
|
|
993
|
+
}
|
|
994
|
+
};
|
|
995
|
+
const handleTaskUpdateLinks = links => {
|
|
996
|
+
const linkConfs = [];
|
|
997
|
+
const fromConfMaps = {};
|
|
998
|
+
const fromKeyMaps = {};
|
|
999
|
+
const uniqueMaps = {};
|
|
1000
|
+
_xeUtils.default.each(links || [], item => {
|
|
1001
|
+
handleTaskAddLink(item, linkConfs, fromConfMaps, fromKeyMaps, uniqueMaps);
|
|
1002
|
+
});
|
|
1003
|
+
reactData.linkList = linkConfs;
|
|
1004
|
+
internalData.linkFromConfMaps = fromConfMaps;
|
|
1005
|
+
internalData.linkFromKeyMaps = fromKeyMaps;
|
|
1006
|
+
internalData.linkUniqueMaps = uniqueMaps;
|
|
1007
|
+
$xeGantt.handleTableLinks();
|
|
1008
|
+
return (0, _vue.nextTick)();
|
|
1009
|
+
};
|
|
941
1010
|
const tableCompEvents = {};
|
|
942
1011
|
_tableEmits.tableEmits.forEach(name => {
|
|
943
1012
|
const type = _xeUtils.default.camelCase(`on-${name}`);
|
|
@@ -1989,6 +2058,9 @@ var _default = exports.default = (0, _comp.defineVxeComponent)({
|
|
|
1989
2058
|
$xeGantt.closeTaskBarTooltip();
|
|
1990
2059
|
}
|
|
1991
2060
|
},
|
|
2061
|
+
handleTableLinks,
|
|
2062
|
+
handleTaskAddLink,
|
|
2063
|
+
handleTaskUpdateLinks,
|
|
1992
2064
|
handleTaskHeaderContextmenuEvent(evnt, params) {
|
|
1993
2065
|
const $xeTable = refTable.value;
|
|
1994
2066
|
if ($xeTable) {
|
|
@@ -2564,9 +2636,20 @@ var _default = exports.default = (0, _comp.defineVxeComponent)({
|
|
|
2564
2636
|
}
|
|
2565
2637
|
}
|
|
2566
2638
|
});
|
|
2639
|
+
if (props.links) {
|
|
2640
|
+
$xeGantt.handleTaskUpdateLinks(props.links);
|
|
2641
|
+
}
|
|
2567
2642
|
handleTaskScaleConfig();
|
|
2568
2643
|
initPages();
|
|
2569
2644
|
(0, _vue.onMounted)(() => {
|
|
2645
|
+
if (!$xeGantt.handleUpdateTaskLink) {
|
|
2646
|
+
if (props.links) {
|
|
2647
|
+
(0, _log.warnLog)('vxe.error.notProp', ['links']);
|
|
2648
|
+
}
|
|
2649
|
+
if (props.taskLinkConfig) {
|
|
2650
|
+
(0, _log.warnLog)('vxe.error.notProp', ['task-link-config']);
|
|
2651
|
+
}
|
|
2652
|
+
}
|
|
2570
2653
|
(0, _vue.nextTick)(() => {
|
|
2571
2654
|
const {
|
|
2572
2655
|
columns
|