UNPKG

vxe-gantt

Version:
1 lines 26.1 kB
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}}function createReactData(){return{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}}let maxYHeight=5e6;var _default=exports.default=(0,_comp.defineVxeComponent)({name:"VxeGanttView",setup(t,l){var d=_xeUtils.default.uniqueId();let M=(0,_vue.inject)("$xeGantt",{}),{reactData:T,internalData:h}=M,{computeTaskOpts:v,computeTaskViewOpts:w,computeStartField:p,computeEndField:x,computeTypeField:_,computeScrollbarOpts:S,computeScrollbarXToTop:b,computeScrollbarYToLeft:D,computeScaleUnit:a,computeWeekScale:r,computeMinScale:U,computeTaskNowLineOpts:m}=M.getComputeMaps(),i=(0,_vue.ref)(),W=(0,_vue.ref)(),E=(0,_vue.ref)(),L=(0,_vue.ref)(),k=(0,_vue.ref)(),H=(0,_vue.ref)(),R=(0,_vue.ref)(),z=(0,_vue.ref)(),C=(0,_vue.ref)(),$=(0,_vue.ref)(),Y=(0,_vue.ref)(),u=(0,_vue.ref)(),y=(0,_vue.ref)(),F=(0,_vue.ref)(),I=(0,_vue.reactive)(createReactData()),V=createInternalData(),B={refElem:i,refScrollXHandleElem:L,refScrollYHandleElem:R},j=(0,_vue.computed)(()=>{var{minViewDate:t,maxViewDate:l}=I,e=w.value,a=U.value,e=e.gridding,r=[];if(a&&t&&l){var{type:i,startDay:s}=a,o=-(T.currLeftSpacing+_xeUtils.default.toNumber(e&&e.leftSpacing||0)),d=T.currRightSpacing+_xeUtils.default.toNumber(e&&e.rightSpacing||0);switch(i){case"year":{let e=_xeUtils.default.getWhatYear(t,o,"first");for(var u=_xeUtils.default.getWhatYear(l,d,"first");e<=u;){var n=e;r.push(n),e=_xeUtils.default.getWhatYear(e,1)}break}case"quarter":{let e=_xeUtils.default.getWhatQuarter(t,o,"first");for(var c=_xeUtils.default.getWhatQuarter(l,d,"first");e<=c;){var f=e;r.push(f),e=_xeUtils.default.getWhatQuarter(e,1)}break}case"month":{let e=_xeUtils.default.getWhatMonth(t,o,"first");for(var h=_xeUtils.default.getWhatMonth(l,d,"first");e<=h;){var v=e;r.push(v),e=_xeUtils.default.getWhatMonth(e,1)}break}case"week":{let e=_xeUtils.default.getWhatWeek(t,o,s,s);for(var m=_xeUtils.default.getWhatWeek(l,d,s,s);e<=m;){var g=e;r.push(g),e=_xeUtils.default.getWhatWeek(e,1)}break}case"day":case"date":{let e=_xeUtils.default.getWhatDay(t,o,"first");for(var y=_xeUtils.default.getWhatDay(l,d,"first");e<=y;){var p=e;r.push(p),e=_xeUtils.default.getWhatDay(e,1)}break}case"hour":case"minute":case"second":{var x=+(0,_util.getStandardGapTime)(a.type);let e=t.getTime()+o*x;for(var _=l.getTime()+d*x;e<=_;){var S=new Date(e);r.push(S),e+=x}break}}}return r});var e=(0,_vue.computed)(()=>{var e=M.reactData,{minViewDate:a,maxViewDate:t,viewCellWidth:r}=I,{visibleColumn:i,todayDateMaps:s}=V,o=U.value,d=w.value.showNowLine,u=m.value.mode,e=e.nowTime;let n=0;if(d&&o&&a&&t&&e>=a.getTime()&&e<=t.getTime()){var c=s[o.type];let t=null,l=null;for(let e=0;e<i.length;e++){var f=i[e];if(f.field===c){t=f,n=e*r,l=i[e+1];break}}"progress"===u?t&&l&&(d=t.dateObj.date.getTime(),a=Math.max(0,Math.min(1,(e-d)/(l.dateObj.date.getTime()-d))),n+=a*r):"center"===u?n+=r/2:"end"===u&&(n+=r-1)}return n});let G={computeScaleDateList:j,computeNowLineLeft:e},X={xID:d,props:t,context:l,reactData:I,internalData:V,getRefMaps:()=>B,getComputeMaps:()=>G},g=e=>{var t=v.value.dateFormat;return _xeUtils.default.toStringDate(e,t||null)},N=()=>{var o=M.reactData,d=o.taskScaleList,u=U.value;if(u){var d=d.find(e=>"week"===e.type),u="week"===u.type,n=new Date;let[e,t,l,a,r,i,s]=_xeUtils.default.toDateString(n,"yyyy-M-MM-dd-HH-mm-ss").split("-");var c=n.getDay()+1,f=Math.ceil((n.getMonth()+1)/3),d=""+_xeUtils.default.getYearWeek(n,d?d.startDay:void 0);u&&q(d,t)&&(e=""+(Number(e)+1),l="01"),o.nowTime=n.getTime(),V.todayDateMaps={year:e,quarter:e+"_q"+f,month:e+"_"+l,week:e+"_W"+d,day:`${e}_${l}_${a}_E`+c,date:`${e}_${l}_`+a,hour:`${e}_${l}_${a}_`+r,minute:`${e}_${l}_${a}_${r}_`+i,second:`${e}_${l}_${a}_${r}_${i}_`+s}}},A=()=>{var e=M.reactData.taskScaleList,t=a.value;let h=U.value;var v=r.value,m=j.value;let g=[],l=[];if(h&&t&&m.length){let i={year:[],quarter:[],month:[],week:[],day:[],date:[],hour:[],minute:[],second:[]},s={year:{},quarter:{},month:{},week:{},day:{},date:{},hour:{},minute:{},second:{}};var y="week"===h.type,p=(t,l,a)=>{if(h.type!==t){var l=l[t],r=""+l.field;let e=s[t][r];e||(e=l,s[t][r]=e,i[t].push(e)),e&&(e.children||(e.children=[]),e.children.push(a))}};for(let f=0;f<m.length;f++){var x=m[f];let[e,t,l,a,r,i,s,o,d,u,n,c]=_xeUtils.default.toDateString(x,"yy-yyyy-M-MM-d-dd-H-HH-m-mm-s-ss").split("-");var _=x.getDay(),S=_+1,T=Math.ceil((x.getMonth()+1)/3),w=""+_xeUtils.default.getYearWeek(x,v?v.startDay:void 0),b=_xeUtils.default.padStart(w,2,"0"),x=(y&&q(w,l)&&(t=""+(Number(t)+1),l="1",a="0"+l),{date:x,yy:e,yyyy:t,M:l,MM:a,d:r,dd:i,H:s,HH:o,m:d,mm:u,s:n,ss:c,q:T,W:w,WW:b,E:S,e:_}),b={year:{field:t,title:t,dateObj:x},quarter:{field:t+"_q"+T,title:""+T,dateObj:x},month:{field:t+"_"+a,title:a,dateObj:x},week:{field:t+"_W"+w,title:w,dateObj:x},day:{field:`${t}_${a}_${i}_E`+S,title:""+S,dateObj:x},date:{field:`${t}_${a}_`+i,title:i,dateObj:x},hour:{field:`${t}_${a}_${i}_`+o,title:o,dateObj:x},minute:{field:`${t}_${a}_${i}_${o}_`+u,title:u,dateObj:x},second:{field:`${t}_${a}_${i}_${o}_${u}_`+c,title:c,dateObj:x}},_=b[h.type];h.level<19&&p("year",b,_),h.level<17&&p("quarter",b,_),h.level<15&&p("month",b,_),h.level<13&&p("week",b,_),h.level<11&&p("day",b,_),h.level<9&&p("date",b,_),h.level<7&&p("hour",b,_),h.level<5&&p("minute",b,_),h.level<3&&p("second",b,_),g.push(_)}e.forEach(e=>{var t;e.type===h.type?l.push({scaleItem:e,columns:g}):((t=i[e.type]||[])&&t.forEach(e=>{e.childCount=e.children?e.children.length:0,e.children=void 0}),l.push({scaleItem:e,columns:t}))})}return{fullCols:g,groupCols:l}},q=(e,t)=>""+e=="1"&&""+t=="12",Q=(e,t)=>{e=_xeUtils.default.toStringDate(e);let l=e.getFullYear();var a=e.getMonth(),e=_xeUtils.default.getYearWeek(e,t);return q(e,a+1)&&l++,{yyyy:l,W:e}},P=e=>{let i=I.minViewDate;var t=U.value,l=a.value;let d=r.value;if(t)switch(l){case"year":{let o={};return e.forEach(({dateObj:e},t)=>{e=_xeUtils.default.toDateString(e.date,"yyyy");o[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"),s=Math.floor((_xeUtils.default.getWhatYear(t,1,"first").getTime()-i.getTime())/dayMs),e=(e.getTime()-a.getTime())/dayMs/s,a=Math.max(0,(t.getTime()-i.getTime())/dayMs+1)/s,t=(o[l]||0)+e;return{offsetLeftSize:t,offsetWidthSize:(o[r]||0)-t+a}}}case"quarter":{let o={};return e.forEach(({dateObj:e},t)=>{e=_xeUtils.default.toDateString(e.date,"yyyy-q");o[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"),s=Math.floor((_xeUtils.default.getWhatQuarter(t,1,"first").getTime()-i.getTime())/dayMs),e=(e.getTime()-a.getTime())/dayMs/s,a=Math.max(0,(t.getTime()-i.getTime())/dayMs+1)/s,t=(o[l]||0)+e;return{offsetLeftSize:t,offsetWidthSize:(o[r]||0)-t+a}}}case"month":{let o={};return e.forEach(({dateObj:e},t)=>{e=_xeUtils.default.toDateString(e.date,"yyyy-MM");o[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"),s=Math.floor((_xeUtils.default.getWhatMonth(t,1,"first").getTime()-i.getTime())/dayMs),e=(e.getTime()-a.getTime())/dayMs/s,a=Math.max(0,(t.getTime()-i.getTime())/dayMs+1)/s,t=(o[l]||0)+e;return{offsetLeftSize:t,offsetWidthSize:(o[r]||0)-t+a}}}case"week":{let o={};return e.forEach(({dateObj:e},t)=>{e=e.yyyy+"-"+e.W;o[e]=t}),(e,t)=>{var e=g(e),t=g(t),l=Q(e,d?d.startDay:void 0),l=l.yyyy+"-"+l.W,a=_xeUtils.default.getWhatWeek(e,0,d?d.startDay:void 0,d?d.startDay:void 0),r=Q(t,d?d.startDay:void 0),r=r.yyyy+"-"+r.W,i=_xeUtils.default.getWhatWeek(t,0,d?d.startDay:void 0,d?d.startDay:void 0),s=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/s,a=Math.max(0,(t.getTime()-i.getTime())/dayMs+1)/s,t=(o[l]||0)+e;return{offsetLeftSize:t,offsetWidthSize:(o[r]||0)-t+a}}}case"day":case"date":{let o={};return e.forEach(({dateObj:e},t)=>{e=_xeUtils.default.toDateString(e.date,"yyyy-MM-dd");o[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"),s=Math.floor((_xeUtils.default.getWhatDay(t,1,"first").getTime()-i.getTime())/minuteMs),e=(e.getTime()-a.getTime())/minuteMs/s,a=(t.getTime()-i.getTime())/minuteMs/s,t=Math.max(0,(t.getTime()-i.getTime())/minuteMs+1)/s,i=(o[l]||0)+e;return{offsetLeftSize:i,offsetWidthSize:(o[r]||0)-i+t+(e||a?0:1)}}}case"hour":{let o={};return e.forEach(({dateObj:e},t)=>{e=_xeUtils.default.toDateString(e.date,"yyyy-MM-dd HH");o[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"),s=Math.floor((_xeUtils.default.getWhatHours(t,1,"first").getTime()-i.getTime())/minuteMs),e=(e.getTime()-a.getTime())/minuteMs/s,a=(t.getTime()-i.getTime())/minuteMs/s,t=Math.max(0,(t.getTime()-i.getTime())/minuteMs+1)/s,i=(o[l]||0)+e;return{offsetLeftSize:i,offsetWidthSize:(o[r]||0)-i+t+(e||a?0:1)}}}case"minute":{let o={};return e.forEach(({dateObj:e},t)=>{e=_xeUtils.default.toDateString(e.date,"yyyy-MM-dd HH:mm");o[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"),s=Math.floor((_xeUtils.default.getWhatMinutes(t,1,"first").getTime()-i.getTime())/minuteMs),e=(e.getTime()-a.getTime())/minuteMs/s,a=Math.max(0,(t.getTime()-i.getTime())/minuteMs+1)/s,t=(o[l]||0)+e;return{offsetLeftSize:t,offsetWidthSize:(o[r]||0)-t+a}}}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),{offsetLeftSize:l,offsetWidthSize:a}}}}return()=>({offsetLeftSize:0,offsetWidthSize:0})},J=()=>{var e=M.props.treeConfig,t=V.scrollXStore,l=V.xeTable;let s=null,o=null;if(l){let a=p.value,r=x.value,i=_.value;var{computeAggregateOpts:d,computeTreeOpts:u}=l.getComputeMaps(),n=l.reactData.isRowGroupStatus,{afterFullData:l,afterTreeFullData:c,afterGroupFullData:f}=l.internalData,d=d.value,u=u.value,h=u.transform,v=u.children||u.childrenField,m=e=>{let t=_xeUtils.default.get(e,a),l=_xeUtils.default.get(e,r);var e=_xeUtils.default.get(e,i),e=(0,_util.hasMilestoneTask)(e);t=t||l,!e&&l||(l=t),t&&(e=g(t),!s||s.getTime()>e.getTime())&&(s=e),l&&(e=g(l),!o||o.getTime()<e.getTime())&&(o=e)};n?(n=d.mapChildrenField)&&_xeUtils.default.eachTree(f,m,{children:n}):e?_xeUtils.default.eachTree(c,m,{children:h?u.mapChildrenField:v}):l.forEach(m)}t.startIndex=0,t.endIndex=Math.max(1,t.visibleSize),I.minViewDate=s,I.maxViewDate=o,V.startMaps={},V.endMaps={},(()=>{var e=M.props.treeConfig,{minViewDate:t,maxViewDate:l}=I,{fullCols:a,groupCols:r}=A();if(t&&l&&a.length){let c=V.xeTable;if(c){let s=p.value,o=x.value,d=_.value;var{computeAggregateOpts:t,computeTreeOpts:l}=c.getComputeMaps(),i=c.reactData.isRowGroupStatus,{afterFullData:f,afterTreeFullData:h,afterGroupFullData:v}=c.internalData,t=t.value,l=l.value,m=l.transform,g=l.children||l.childrenField;let u={},n=P(a);var y=e=>{var t=c.getRowid(e);let l=_xeUtils.default.get(e,s),a=_xeUtils.default.get(e,o);var r=(0,_util.getTaskType)(_xeUtils.default.get(e,d)),i=(0,_util.hasMilestoneTask)(r),r=(0,_util.hasSubviewTask)(r);i&&(l=l||a,a=l),r?u[t]={row:e,rowid:t,oLeftSize:0,oWidthSize:0}:l&&a&&({offsetLeftSize:i,offsetWidthSize:r}=n(l,a),u[t]={row:e,rowid:t,oLeftSize:i,oWidthSize:r})};i?(i=t.mapChildrenField)&&_xeUtils.default.eachTree(v,y,{children:i}):e?_xeUtils.default.eachTree(h,y,{children:m?l.mapChildrenField:g}):f.forEach(y),V.chartMaps=u}}V.visibleColumn=a,I.headerGroups=r,N(),re(),ie()})()},n=()=>{var{scrollXWidth:e,scrollYHeight:t}=I,l=V.elemStore,a=S.value,l=(0,_util.getRefElem)(l["main-body-wrapper"]),r=L.value,i=R.value;l&&(t=t>l.clientHeight,i&&(I.scrollbarWidth=a.width||i.offsetWidth-i.clientWidth||14),I.overflowY=t,i=e>l.clientWidth,r&&(I.scrollbarHeight=a.height||r.offsetHeight-r.clientHeight||14),I.overflowX=i)},K=(l,e)=>{let a=V.chartMaps;var t=l.getComputeMaps().computeTreeOpts,t=t.value,t=t.children||t.childrenField;let r=_.value,i=0,s=0;return _xeUtils.default.eachTree(e,e=>{var t=l.getRowid(e),e=_xeUtils.default.get(e,r);(0,_util.hasSubviewTask)(e)||(e=t?a[t]:null)&&(s=Math.max(s,e.oLeftSize+e.oWidthSize),i=i?Math.min(i,e.oLeftSize):e.oLeftSize)},{children:t}),{minSize:i,maxSize:s}},Z=()=>{let s=h.dragBarRow,o=I.viewCellWidth,{elemStore:e,chartMaps:d}=V,u=V.xeTable;var t=(0,_util.getRefElem)(e["main-chart-task-wrapper"]);if(t&&u){var l=u.getComputeMaps().computeTreeOpts,l=l.value;let i=l.children||l.childrenField;_xeUtils.default.arrayEach(t.children,e=>{var t,l,a,r=e.children[0];r&&(e=e.getAttribute("rowid"),s&&u.getRowid(s)===e||(l=(e=e?d[e]:null)?e.row:null,(0,_dom.hasClass)(r,"is--subview")?(t=r.firstElementChild)&&((0,_dom.hasClass)(t,"is--inline")?_xeUtils.default.arrayEach(t.children,e=>{var t,l,e=e.children[0],a=e.getAttribute("rowid")||"",a=a?d[a]:null;a&&(t=a.row,(0,_dom.hasClass)(e,"is--subview")?(t=t[i],{minSize:t,maxSize:l}=K(u,t),e.style.left=o*t+"px",e.style.width=o*(l-t)+"px"):(e.style.left=(0,_util.getTaskBarLeft)(a,o)+"px",(0,_dom.hasClass)(e,"is--milestone")||(e.style.width=(0,_util.getTaskBarWidth)(a,o)+"px")))}):(t=(t=t.children[0])?t.children[0]:null)&&(l=l?l[i]:[],{minSize:l,maxSize:a}=K(u,l),t.style.left=o*l+"px",t.style.width=o*(a-l)+"px")):(r.style.left=(0,_util.getTaskBarLeft)(e,o)+"px",(0,_dom.hasClass)(r,"is--milestone")||(r.style.width=(0,_util.getTaskBarWidth)(e,o)+"px"))))})}return(0,_vue.nextTick)()},c=()=>{var{scrollbarWidth:o,scrollbarHeight:d,headerGroups:u,tableColumn:n}=I,{elemStore:c,visibleColumn:f}=V,h=V.xeTable,v=i.value;if(v&&M){var m=S.value,g=b.value,y=D.value,p=k.value,x=H.value,_=W.value;let e=o;o=d;let t=0,l=0,a=0,r=(h&&(d=h.internalData,t=d.tBodyHeight,l=d.tHeaderHeight,a=d.tFooterHeight),"visible");(y||m.y&&!1===m.y.visible)&&(e=0,r="hidden");h=(0,_util.getRefElem)(c["main-header-scroll"]),d=(h&&(h.style.height=l+"px",h.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"])),m=(y&&(y.style.height=a+"px"),_&&(_.style.height=o+"px",_.style.visibility="visible"),C.value),h=(m&&(m.style.left=g?e+"px":"",m.style.width=v.clientWidth-e+"px"),p&&(p.style.width=g?e+"px":"",p.style.display=g&&o?"block":""),x&&(x.style.width=g?"":e+"px",x.style.display=!g&&o?"block":""),E.value),u=(h&&(h.style.width=e+"px",h.style.height=t+l+a+"px",h.style.visibility=r),z.value),y=(u&&(u.style.height=l+"px",u.style.display=l?"block":""),$.value),_=(y&&(y.style.height=t+"px",y.style.top=l+"px"),Y.value),m=(_&&(_.style.height=a+"px",_.style.top=l+t+"px",_.style.display=a?"block":""),F.value);let i=40,s=i=m?m.clientWidth||40:i;f.length&&(s=Math.max(0,i*f.length),d)&&0<(p=(v=d.clientWidth)-s)&&(i+=Math.max(0,p/f.length),s=v),I.viewCellWidth=i;x=(0,_util.getRefElem)(c["main-header-table"]),g=(0,_util.getRefElem)(c["main-body-table"]),o=i*n.length;return x&&(x.style.width=s+"px"),g&&(g.style.width=o+"px"),I.scrollXWidth=s,Promise.all([Z(),M.handleUpdateTaskLinkStyle?M.handleUpdateTaskLinkStyle(X):null])}},s=()=>{var e=i.value;return V.rceRunTime=Date.now(),e&&e.clientWidth&&M?(n(),c(),(0,_vue.nextTick)().then(()=>{var e,t=I.scrollXLoad,l=V.scrollXStore;t?({toVisibleIndex:t,visibleSize:e}=te(),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),ae().then(()=>{le()})):o()})):(0,_vue.nextTick)()},ee=()=>new Promise(e=>{var{rceTimeout:t,rceRunTime:l}=V,a=V.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()}),V.rceTimeout=setTimeout(()=>{V.rceTimeout=void 0,s()},r)}),te=()=>{var e,t=I.viewCellWidth,l=V.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}},le=()=>{var e=I.isScrollXBig,t=V.scrollXStore,{preloadSize:l,startIndex:a,endIndex:r,offsetSize:i}=t,{toVisibleIndex:s,visibleSize:o}=te(),e={startIndex:Math.max(0,e?s-1:s-1-i-l),endIndex:e?s+o:s+o+i+l},{startIndex:i,endIndex:l}=(t.visibleStartIndex=s-1,t.visibleEndIndex=s+o+1,e);!(s<=a||r-o-1<=s)||a===i&&r===l||(t.startIndex=i,t.endIndex=l,ae())},ae=()=>(ie(),o(),(0,_vue.nextTick)()),re=()=>I.scrollXLoad=!0,ie=()=>{var e=I.scrollXLoad,{visibleColumn:t,scrollXStore:l}=V,e=e?t.slice(l.startIndex,l.endIndex):t.slice(0);I.tableColumn=e},o=()=>{let{scrollXLoad:t,scrollXWidth:e,viewCellWidth:l}=I,{elemStore:a,scrollXStore:r}=V;var i=(0,_util.getRefElem)(a["main-body-table"]),s=r.startIndex;let o=0,d=(t&&(o=Math.max(0,s*l)),i&&(i.style.transform=`translate(${o}px, ${I.scrollYTop||0}px)`),e);["header","body","footer"].forEach(e=>{e=(0,_util.getRefElem)(a[`main-${e}-xSpace`]);e&&(e.style.width=t?d+"px":"")});s=u.value,s&&(s.style.width=d+"px"),i=(0,_util.getRefElem)(a["main-chart-before-wrapper"]),s=i?i.firstElementChild:null,s&&(s.style.width=d+"px"),i=(0,_util.getRefElem)(a["main-chart-after-wrapper"]),s=i?i.firstElementChild:null;return s&&(s.style.width=d+"px"),I.scrollXLeft=o,I.scrollXWidth=d,n(),(0,_vue.nextTick)()},se=()=>{le()},oe=(e,t)=>{var l=V.lcsTimeout;I.lazScrollLoading=!0,l&&clearTimeout(l),V.lcsTimeout=setTimeout(()=>{V.lcsRunTime=Date.now(),V.lcsTimeout=void 0,V.intoRunScroll=!1,V.inVirtualScroll=!1,V.inWheelScroll=!1,V.inHeaderScroll=!1,V.inBodyScroll=!1,V.inFooterScroll=!1,I.lazScrollLoading=!1},200)},O=(e,t,l,a)=>{t&&(V.lastScrollLeft=a),e&&(V.lastScrollTop=l),I.lastScrollTime=Date.now(),oe(t,e)},f=(u,n,c,f,h)=>{var v=V.xeTable,{lastScrollLeft:m,lastScrollTop:g}=V,y=L.value,p=R.value;if(y&&p&&v){var{computeScrollXThreshold:v,computeScrollYThreshold:x}=v.getComputeMaps(),_=p.clientHeight,S=y.clientWidth,p=p.scrollHeight,y=y.scrollWidth;let e=!1,t=!1,l=!1,a=!1,r="",i=!1,s=!1,o=!1,d=!1;c&&(v=v.value,(l=h<=0)||(a=y-1<=h+S),m<h?(r="right",y-v<=h+S&&(d=!0)):(r="left",h<=v&&(o=!0))),n&&(m=x.value,(e=f<=0)||(t=p-1<=f+_),g<f?(r="bottom",p-m<=f+_&&(s=!0)):(r="top",f<=m&&(i=!0))),O(n,c,f,h);v={source:sourceType,scrollTop:f,scrollLeft:h,bodyHeight:_,bodyWidth:S,scrollHeight:p,scrollWidth:y,isX:c,isY:n,isTop:e,isBottom:t,isLeft:l,isRight:a,direction:r};(s||i||d||o)&&M.dispatchEvent("scroll-boundary",v,u),M.dispatchEvent("scroll",v,u)}},de=e=>{var t=V.xeTable;t&&(t=t.internalData.elemStore,t=(0,_util.getRefElem)(t["main-body-scroll"]))&&(t.scrollTop=e)};e={handleUpdateStyle:c,handleLazyRecalculate:ee,handleUpdateCurrentRow(e){var t,l,a=V.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=V.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}=V;l||a||r||(l=e.currentTarget,a=(0,_util.getRefElem)(t["main-body-scroll"]),r=L.value,a&&l&&(t=l.scrollLeft,V.inHeaderScroll=!0,(0,_dom.setScrollLeft)(r,t),(0,_dom.setScrollLeft)(a,t),f(e,!1,!0,l.scrollTop,t)))},triggerBodyScrollEvent(e){var t,l,a=I.scrollXLoad,{elemStore:r,inVirtualScroll:i,inHeaderScroll:s,inFooterScroll:o,lastScrollLeft:d,lastScrollTop:u}=V;i||s||o||(i=e.currentTarget,s=(0,_util.getRefElem)(r["main-header-scroll"]),o=L.value,r=R.value,d=(t=i.scrollLeft)!==d,u=(l=i.scrollTop)!==u,V.inBodyScroll=!0,V.scrollRenderType="",u&&((0,_dom.setScrollTop)(r,l),de(l)),d&&(V.inBodyScroll=!0,(0,_dom.setScrollLeft)(o,t),(0,_dom.setScrollLeft)(s,t),a)&&se(),u&&O(u,d,i.scrollTop,t),d&&f(e,u,d,i.scrollTop,t))},triggerVirtualScrollXEvent(e){var t,l=I.scrollXLoad,{elemStore:a,inHeaderScroll:r,inBodyScroll:i}=V;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,V.inVirtualScroll=!0,(0,_dom.setScrollLeft)(i,t),(0,_dom.setScrollLeft)(a,t),l&&se(),f(e,!1,!0,r.scrollTop,t)))},triggerVirtualScrollYEvent(e){var{elemStore:t,inHeaderScroll:l,inBodyScroll:a}=V;l||a||(l=e.currentTarget,a=(0,_util.getRefElem)(t["main-body-scroll"]),l&&(e=l.scrollTop,V.inVirtualScroll=!0,(0,_dom.setScrollTop)(a,e),de(e),O(!0,!1,e,l.scrollLeft)))},handleUpdateSXSpace(){return o()},handleUpdateSYSpace(){return(()=>{var e=V.elemStore,t=V.xeTable,l=(0,_util.getRefElem)(e["main-body-scroll"]),a=(0,_util.getRefElem)(e["main-body-table"]);let r=0,i=0,s=!1,o=(t&&(t=t.reactData,r=t.scrollYTop,i=t.scrollYHeight,s=t.isScrollYBig),i),d=r,u=0;l&&(u=l.clientHeight),s&&(d=l&&a&&l.scrollTop+u>=maxYHeight?maxYHeight-a.clientHeight:(maxYHeight-u)*(r/(i-u)),o=maxYHeight);t=(0,_util.getRefElem)(e["main-chart-task-wrapper"]),a&&(a.style.transform=`translate(${I.scrollXLeft||0}px, ${d}px)`),t&&(t.style.transform=`translateY(${d}px)`),l=(0,_util.getRefElem)(e["main-body-ySpace"]),l&&(l.style.height=o?o+"px":""),a=y.value,a&&(a.style.height=o?o+"px":""),t=(0,_util.getRefElem)(e["main-chart-before-wrapper"]),l=t?t.firstElementChild:null,l&&(l.style.height=o?o+"px":""),a=(0,_util.getRefElem)(e["main-chart-after-wrapper"]),t=a?a.firstElementChild:null,t&&(t.style.height=o?o+"px":""),l=(0,_util.getRefElem)(e["main-chart-now-line"]);return l&&(l.style.height=o?o+"px":""),I.scrollYTop=d,I.scrollYHeight=i,I.isScrollYBig=s,n(),(0,_vue.nextTick)().then(()=>{c()})})()},handleUpdateSYStatus(e){I.scrollYLoad=e}};let ue=()=>{ee()},ne=(Object.assign(X,{refreshData(){return J(),s(),(0,_vue.nextTick)().then(()=>{var e=V.xeTable;if(s(),e)return e.recalculate()})},updateViewData(e){var t=V.xeTable;return t&&(t=t.reactData.tableData,I.tableData=t,e&&(T.currLeftSpacing=0,T.currRightSpacing=0,J()),s()),(0,_vue.nextTick)()},connectUpdate({$table:e}){return e&&(V.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:k,class:"vxe-gantt-view--scroll-x-left-corner"}),(0,_vue.h)("div",{ref:C,class:"vxe-gantt-view--scroll-x-wrapper"},[(0,_vue.h)("div",{ref:L,class:"vxe-gantt-view--scroll-x-handle",onScroll:X.triggerVirtualScrollXEvent},[(0,_vue.h)("div",{ref:u,class:"vxe-gantt-view--scroll-x-space"})]),(0,_vue.h)("div",{class:"vxe-gantt-view--scroll-x-handle-appearance"})]),(0,_vue.h)("div",{ref:H,class:"vxe-gantt-view--scroll-x-right-corner"})])),ce=()=>(0,_vue.h)("div",{ref:E,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:$,class:"vxe-gantt-view--scroll-y-wrapper"},[(0,_vue.h)("div",{ref:R,class:"vxe-gantt-view--scroll-y-handle",onScroll:X.triggerVirtualScrollYEvent},[(0,_vue.h)("div",{ref:y,class:"vxe-gantt-view--scroll-y-space"})]),(0,_vue.h)("div",{class:"vxe-gantt-view--scroll-y-handle-appearance"})]),(0,_vue.h)("div",{ref:Y,class:"vxe-gantt-view--scroll-y-bottom-corner"})]),fe=()=>(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)]),he=()=>{var e=D.value;return(0,_vue.h)("div",{class:"vxe-gantt-view--layout-wrapper"},e?[ce(),fe()]:[fe(),ce()])};return(0,_vue.onMounted)(()=>{globalEvents.on(X,"resize",ue)}),(0,_vue.onBeforeUnmount)(()=>{_xeUtils.default.assign(I,createReactData()),_xeUtils.default.assign(V,createInternalData())}),(0,_vue.onUnmounted)(()=>{globalEvents.off(X,"keydown")}),X.renderVN=()=>{var{overflowX:e,overflowY:t,scrollXLoad:l,scrollYLoad:a}=I,r=b.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?[ne(),he()]:[he(),ne()]),(0,_vue.h)("div",{class:"vxe-gantt-view--render-vars"},[(0,_vue.h)("div",{ref:F,class:"vxe-gantt-view--column-info"})])])},(0,_vue.provide)("$xeGanttView",X),X},render(){return this.renderVN()}});