@nocobase/plugin-gantt 0.18.0-alpha.8 → 0.19.0-alpha.1

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.
@@ -1,2 +1,2 @@
1
1
  import { SchemaInitializer } from '@nocobase/client';
2
- export declare const GanttActionInitializers: SchemaInitializer<import("antd").ButtonProps, {}>;
2
+ export declare const GanttActionInitializers: SchemaInitializer;
@@ -234,7 +234,7 @@
234
234
  pointerEvents: none,
235
235
  },
236
236
  }
237
- }`})),no=e=>{const{styles:t}=oo(),{task:r,arrowIndent:o,isDelete:n,taskHeight:a,isSelected:s,rtl:i,onEventStart:c}=E({},e),d=u.useRef(null),[p,S]=u.useState(l.jsx("div",{})),[$,v]=u.useState(!0),x=r.typeInternal==="project";u.useEffect(()=>{switch(r.typeInternal){case"milestone":S(l.jsx(Rr,E({},e)));break;case"project":S(l.jsx(ro,E({},e)));break;case"smalltask":S(l.jsx(Kr,E({},e)));break;default:S(l.jsx(_r,E({},e)));break}},[r,s]),u.useEffect(()=>{d.current&&v(d.current.getBBox().width<r.x2-r.x1)},[d,r]);const P=()=>{const g=r.x2-r.x1,y=r.barChildren.length>0;return $?r.x1+g*.5:i&&d.current?r.x1-d.current.getBBox().width-o*+y-o*.2:r.x1+g+o*+y+o*.2};return l.jsxs("g",{className:N.cx(t.nbganttTaskitem),onKeyDown:g=>{switch(g.key){case"Delete":{n&&c("delete",r,g);break}}g.stopPropagation()},onMouseEnter:g=>{c("mouseenter",r,g)},onMouseLeave:g=>{c("mouseleave",r,g)},onDoubleClick:g=>{c("dblclick",r,g)},onClick:g=>{c("click",r,g)},onFocus:()=>{c("select",r)},children:[p,l.jsx("text",{x:x?r.x1:P(),y:x?r.y-8:$?r.y+a*.5:r.y+a*.65,className:x?N.cx("projectLabel"):$?N.cx("barLabel"):N.cx("barLabelOutside"),ref:d,children:x&&Ce(r.start)&&Ce(r.end)?`${r.name}: ${Ce(r.start)} ~ ${Ce(r.end)}`:r.name})]})};let at=null,Ae=null;const ao=({tasks:e,dates:t,ganttEvent:r,selectedTask:o,rowHeight:n,columnWidth:a,timeStep:s,svg:i,taskHeight:c,arrowColor:d,arrowIndent:p,fontFamily:S,fontSize:$,rtl:v,setGanttEvent:x,setFailedTask:P,setSelectedTask:g,onDateChange:y,onProgressChange:C,onDoubleClick:M,onClick:B,onDelete:b})=>{var R;const h=(R=i==null?void 0:i.current)==null?void 0:R.createSVGPoint(),[m,F]=u.useState(0),[L,Q]=u.useState(0),[se,pe]=u.useState(!1);u.useEffect(()=>{var Y,U,X,ee;const A=((Y=t[1])==null?void 0:Y.getTime())-((U=t[0])==null?void 0:U.getTime())-((X=t[1])==null?void 0:X.getTimezoneOffset())*60*1e3+((ee=t[0])==null?void 0:ee.getTimezoneOffset())*60*1e3,H=s*a/A;F(H)},[a,t,s]),u.useEffect(()=>{const A=Y=>ne(this,null,function*(){var ge;if(!r.changedTask||!h||!(i!=null&&i.current))return;Y.preventDefault(),h.x=Y.clientX;const U=h.matrixTransform((ge=i==null?void 0:i.current.getScreenCTM())==null?void 0:ge.inverse()),{isChanged:X,changedTask:ee}=xt(U.x,r.action,r.changedTask,m,s,L,v);X&&x({action:r.action,changedTask:ee})}),H=Y=>ne(this,null,function*(){var je;const{action:U,originalSelectedTask:X,changedTask:ee}=r;if(!ee||!h||!(i!=null&&i.current)||!X)return;Y.preventDefault(),h.x=Y.clientX;const ge=h.matrixTransform((je=i==null?void 0:i.current.getScreenCTM())==null?void 0:je.inverse()),{changedTask:q}=xt(ge.x,U,ee,m,s,L,v),Be=X.start!==q.start||X.end!==q.end||X.progress!==q.progress;i.current.removeEventListener("mousemove",A),i.current.removeEventListener("mouseup",H),x({action:""}),pe(!1);let ie=!0;if((U==="move"||U==="end"||U==="start")&&y&&Be)try{const te=yield y(q,q.barChildren);te!==void 0&&(ie=te)}catch(te){ie=!1}else if(C&&Be)try{const te=yield C(q,q.barChildren);te!==void 0&&(ie=te)}catch(te){ie=!1}ie||P(X)});!se&&(r.action==="move"||r.action==="end"||r.action==="start"||r.action==="progress")&&(i!=null&&i.current)&&(i.current.addEventListener("mousemove",A),i.current.addEventListener("mouseup",H),pe(!0))},[r,m,L,C,s,y,i,se,h,v,P,x]);const Me=(A,H,Y)=>ne(this,null,function*(){var U;if(!Y)A==="select"&&g(H.id);else if(yr(Y)){if(A==="delete"&&b)try{const X=yield b(H);X!==void 0&&X&&x({action:A,changedTask:H})}catch(X){console.error("Error on Delete. "+X)}}else if(A==="mouseenter")r.action||x({action:A,changedTask:H,originalSelectedTask:H});else if(A==="mouseleave")r.action==="mouseenter"&&x({action:""});else if(A==="dblclick")M&&M(H);else if(A==="click")B&&B(H);else if(A==="move"){if(!(i!=null&&i.current)||!h)return;h.x=Y.clientX;const X=h.matrixTransform((U=i.current.getScreenCTM())==null?void 0:U.inverse());Q(X.x-H.x1),x({action:A,changedTask:H,originalSelectedTask:H})}else x({action:A,changedTask:H,originalSelectedTask:H})}),st=(A,H,Y)=>{["click"].includes(A)?(!["start","end","progress"].includes(at)&&(!Ae||Ae===H.start)&&Me(A,H,Y),at=null,Ae=null):["move","select"].includes(A)?(Ae=H.start,Me(A,H,Y)):(Ae=H.start,at=A,Me(A,H,Y))};return l.jsxs("g",{className:"content",children:[l.jsx("g",{className:"arrows",fill:d,stroke:d,children:e.map(A=>A.barChildren.map(H=>l.jsx(qr,{taskFrom:A,taskTo:e[H.index],rowHeight:n,taskHeight:c,arrowIndent:p,rtl:v},`Arrow from ${A.id} to ${e[H.index].id}`)))}),l.jsx("g",{className:"bar",fontFamily:S,fontSize:$,children:e.map(A=>l.jsx(no,{task:A,arrowIndent:p,taskHeight:c,isProgressChangeable:!!C&&!A.isDisabled,isDateChangeable:!!y&&!A.isDisabled,isDelete:!A.isDisabled,onEventStart:st,isSelected:!!o&&A.id===o.id,rtl:v},A.id))})]})},so=u.forwardRef(({gridProps:e,calendarProps:t,barProps:r,ganttHeight:o,scrollY:n,scrollX:a},s)=>{const i=u.useRef(null),c=u.useRef(null),d=ue(E({},r),{svg:i}),{styles:p}=Tt();return u.useEffect(()=>{c.current&&(c.current.scrollTop=n)},[n]),u.useEffect(()=>{s.current&&(s.current.scrollLeft=a)},[a]),l.jsxs("div",{className:p.ganttverticalcontainer,ref:s,dir:"ltr",children:[l.jsx("svg",{xmlns:"http://www.w3.org/2000/svg",width:e.svgWidth,height:t.headerHeight,fontFamily:r.fontFamily,className:"ganttHeader",children:l.jsx(Or,E({},t))}),l.jsx("div",{ref:c,className:p.horizontalcontainer,style:o?{maxHeight:o,width:e.svgWidth}:{width:e.svgWidth},children:l.jsxs("svg",{xmlns:"http://www.w3.org/2000/svg",width:e.svgWidth,height:r.rowHeight*(r.tasks.length||3),fontFamily:r.fontFamily,ref:i,className:"ganttBody",children:[l.jsx(jr,E({},e)),l.jsx(ao,E({},d))]})})]})}),io=(e,t)=>t/e>50?Math.floor(t/e)+20:50,lo=u.createContext({close:()=>{}}),co=e=>{const{visible:t,setVisible:r,record:o}=e;u.useMemo(()=>Je.createForm(),[o]);const a=O.useFieldSchema().properties.detail,s=u.useCallback(()=>{r(!1)},[]);return a&&l.jsx(lo.Provider,{value:{close:s},children:l.jsx(f.ActionContextProvider,{value:{visible:t,setVisible:r},children:l.jsx(f.RecordProvider,{record:o,children:l.jsx(O.RecursionField,{schema:a,name:a.name})})})})},uo=Z.debounce((e,t,r,o,n)=>ne(this,null,function*(){yield t.update({filterByTk:e.id,values:{[r.start]:e.start,[r.end]:e.end}}),we.message.success(n("Saved successfully")),yield o==null?void 0:o.refresh()}),300),fo=Z.debounce((e,t,r,o,n)=>ne(this,null,function*(){yield t.update({filterByTk:e.id,values:{[r.progress]:e.progress/100}}),we.message.success(n("Saved successfully")),yield o==null?void 0:o.refresh()}),300),Te=e=>{var Wt,Qt,_t;const{styles:t}=Tt(),{token:r}=f.useToken(),a=f.useAPIClient().auth.getOption("theme")==="compact"?45:55.56,{headerHeight:s=((Wt=document.querySelector(".ant-table-thead"))==null?void 0:Wt.clientHeight)||0,listCellWidth:i="155px",rowHeight:c=a,ganttHeight:d=0,preStepsCount:p=1,barFill:S=60,barCornerRadius:$=r.borderRadiusXS,barProgressColor:v=r.colorPrimary,barProgressSelectedColor:x=r.colorPrimary,barBackgroundColor:P=r.colorPrimary,barBackgroundSelectedColor:g=r.colorPrimary,projectProgressColor:y=r.colorPrimary,projectProgressSelectedColor:C=r.colorPrimary,projectBackgroundColor:M=r.colorPrimary,projectBackgroundSelectedColor:B=r.colorPrimary,milestoneBackgroundColor:b="#f1c453",milestoneBackgroundSelectedColor:h="#f29e4c",rtl:m=!1,handleWidth:F=8,timeStep:L=3e5,arrowColor:Q="grey",fontFamily:se="-apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, 'Noto Sans', sans-serif, 'Apple Color Emoji', 'Segoe UI Emoji', 'Segoe UI Symbol', 'Noto Color Emoji'",fontSize:pe=r.fontSize,arrowIndent:Me=20,todayColor:st="rgba(252, 248, 227, 0.5)",viewDate:R,TooltipContent:A=Tr,onDoubleClick:H,onClick:Y,onDelete:U,onSelect:X,useProps:ee}=e,{onExpanderClick:ge,tasks:q,expandAndCollapseAll:Be}=ee(),ie=fe(),je=f.useCurrentAppInfo(),{t:te}=me.useTranslation(),yo=(Qt=je.data)==null?void 0:Qt.lang,it=f.useTableBlockContext(),{resource:Ht,service:Ve}=f.useBlockRequestContext(),Et=O.useFieldSchema(),{fieldNames:qe}=ee(e),re=qe.range||"day",Se=u.useRef(null),lt=u.useRef(null),zt=u.useRef(null),[le,vo]=u.useState(()=>{const[w,I]=vt(q,re,p);return{viewMode:re,dates:St(w,I,re)}}),[So,Gt]=u.useState(!1),[wo,Co]=u.useState({}),[Ie,Ot]=u.useState(void 0),[Ue,Xt]=u.useState(0),[To,Mo]=u.useState(0),[Bo,kt]=u.useState(d),[oe,We]=u.useState([]),[Le,Yt]=u.useState({action:""}),ct=u.useMemo(()=>c*S/100,[c,S]),[dt,Do]=u.useState(),[Qe,jt]=u.useState(null),[be,ut]=u.useState(0),[ce,He]=u.useState(-1),[qt,De]=u.useState(!1),J=io(le.dates.length,(_t=zt.current)==null?void 0:_t.clientWidth),de=le.dates.length*J,Ne=oe.length*c,{expandFlag:Ut}=it,[No,Po]=u.useState([]);u.useEffect(()=>{it.field.onExpandClick=Io,it.field.onRowSelect=Lo},[]),u.useEffect(()=>{Be==null||Be(!Ut)},[Ut]),u.useEffect(()=>{let w;ge?w=vr(q):w=q,w=w.sort(Sr);const[I,D]=vt(w,re,p);let V=St(I,D,re);m&&(V=V.reverse(),ce===-1&&He(V.length*J)),vo({dates:V,viewMode:re}),We(ir(w,V,J,c,ct,$,F,m,v,x,P,g,y,C,M,B,b,h))},[q,re,p,c,$,J,ct,F,v,x,P,g,y,C,M,B,b,h,m,ce]),u.useEffect(()=>{if(re===le.viewMode&&(R&&!Ie||R&&(Ie==null?void 0:Ie.valueOf())!==R.valueOf())){const w=le.dates,I=w.findIndex((D,V)=>R.valueOf()>=D.valueOf()&&V+1!==w.length&&R.valueOf()<w[V+1].valueOf());if(I===-1)return;Ot(R),He(J*I)}},[R,J,le.dates,le.viewMode,re,Ie,Ot]),u.useEffect(()=>{const{changedTask:w,action:I}=Le;if(w){if(I==="delete")Yt({action:""}),We(oe.filter(D=>D.id!==w.id));else if(I==="move"||I==="end"||I==="start"||I==="progress"){const D=oe.find(V=>V.id===w.id);if(D&&D.start&&D.end&&(D.start.getTime()!==w.start.getTime()||D.end.getTime()!==w.end.getTime()||D.progress!==w.progress)){const V=oe.map(_=>_.id===w.id?w:_);We(V)}}}},[Le,oe]),u.useEffect(()=>{Qe&&(We(oe.map(w=>w.id!==Qe.id?w:Qe)),jt(null))},[Qe,oe]),u.useEffect(()=>{i||Xt(0),lt.current&&Xt(lt.current.offsetWidth)},[lt,i]),u.useEffect(()=>{Se.current&&Mo(Se.current.offsetWidth-Ue)},[Se,Ue]),u.useEffect(()=>{kt(d?d+s:q.length*c+s)},[d,q,s,c]),u.useEffect(()=>{var I;const w=D=>{if(D.shiftKey||D.deltaX){const V=D.deltaX?D.deltaX:D.deltaY;let _=ce+V;_<0?_=0:_>de&&(_=de),He(_),D.preventDefault()}else if(d){let V=be+D.deltaY;V<0?V=0:V>Ne-d&&(V=Ne-d),V!==be&&(ut(V),D.preventDefault())}De(!0)};return(I=Se.current)==null||I.addEventListener("wheel",w,{passive:!1}),()=>{var D;(D=Se.current)==null||D.removeEventListener("wheel",w)}},[Se,be,ce,d,de,m,Ne]);const Fo=w=>{be!==w.currentTarget.scrollTop&&!qt?(ut(w.currentTarget.scrollTop),De(!0)):De(!1)},Ao=w=>{ce!==w.currentTarget.scrollLeft&&!qt?(He(w.currentTarget.scrollLeft),De(!0)):De(!1)},$o=w=>{w.preventDefault();let I=be,D=ce,V=!0;switch(w.key){case"Down":case"ArrowDown":I+=c,V=!1;break;case"Up":case"ArrowUp":I-=c,V=!1;break;case"Left":case"ArrowLeft":D-=J;break;case"Right":case"ArrowRight":D+=J;break}V?(D<0?D=0:D>de&&(D=de),He(D)):(I<0?I=0:I>Ne-d&&(I=Ne-d),ut(I)),De(!0)},Vo=w=>{const I=oe.find(V=>V.id===w),D=oe.find(V=>!!dt&&V.id===dt.id);X&&(D&&X(D,!1),I&&X(I,!0)),Do(I)},Io=(w,I)=>{var V;const D=(V=ie==null?void 0:ie.field)==null?void 0:V.data.find(_=>_.id===I.id+"");ge&&I.children.length&&ge(ue(E({},D),{hideChildren:!w}))},Lo=w=>{Po(w)},Ho=w=>ne(this,null,function*(){fo(w,Ht,qe,Ve,te)}),Eo=w=>ne(this,null,function*(){uo(w,Ht,qe,Ve,te)}),zo=w=>{var _;const I=ft=>ft.reduce((Kt,_e)=>_e.children?Kt.concat([_e,...I(_e.children)]):Kt.concat(_e),[]),D=I((_=Ve==null?void 0:Ve.data)==null?void 0:_.data),V=D==null?void 0:D.find(ft=>ft.id===+w.id);V&&(Co(V),Gt(!0))},Go={columnWidth:J,svgWidth:de,tasks:q,rowHeight:c,dates:le.dates,todayColor:st,rtl:m,selectedRowKeys:No},Oo={dateSetup:le,locale:yo,viewMode:re,headerHeight:s,columnWidth:J,fontFamily:se,fontSize:pe,rtl:m},Xo={tasks:oe,dates:le.dates,ganttEvent:Le,selectedTask:dt,rowHeight:c,taskHeight:ct,columnWidth:J,arrowColor:Q,timeStep:L,fontFamily:se,fontSize:pe,arrowIndent:Me,svgWidth:de,rtl:m,setGanttEvent:Yt,setFailedTask:jt,setSelectedTask:Vo,onDateChange:Eo,onProgressChange:qe.progress&&Ho,onDoubleClick:H,onClick:zo,onDelete:U};return l.jsxs("div",{className:N.cx(N.css`
237
+ }`})),no=e=>{const{styles:t}=oo(),{task:r,arrowIndent:o,isDelete:n,taskHeight:a,isSelected:s,rtl:i,onEventStart:c}=E({},e),d=u.useRef(null),[p,S]=u.useState(l.jsx("div",{})),[$,v]=u.useState(!0),x=r.typeInternal==="project";u.useEffect(()=>{switch(r.typeInternal){case"milestone":S(l.jsx(Rr,E({},e)));break;case"project":S(l.jsx(ro,E({},e)));break;case"smalltask":S(l.jsx(Kr,E({},e)));break;default:S(l.jsx(_r,E({},e)));break}},[r,s]),u.useEffect(()=>{d.current&&v(d.current.getBBox().width<r.x2-r.x1)},[d,r]);const P=()=>{const g=r.x2-r.x1,y=r.barChildren.length>0;return $?r.x1+g*.5:i&&d.current?r.x1-d.current.getBBox().width-o*+y-o*.2:r.x1+g+o*+y+o*.2};return l.jsxs("g",{className:N.cx(t.nbganttTaskitem),onKeyDown:g=>{switch(g.key){case"Delete":{n&&c("delete",r,g);break}}g.stopPropagation()},onMouseEnter:g=>{c("mouseenter",r,g)},onMouseLeave:g=>{c("mouseleave",r,g)},onDoubleClick:g=>{c("dblclick",r,g)},onClick:g=>{c("click",r,g)},onFocus:()=>{c("select",r)},children:[p,l.jsx("text",{x:x?r.x1:P(),y:x?r.y-8:$?r.y+a*.5:r.y+a*.65,className:x?N.cx("projectLabel"):$?N.cx("barLabel"):N.cx("barLabelOutside"),ref:d,children:x&&Ce(r.start)&&Ce(r.end)?`${r.name}: ${Ce(r.start)} ~ ${Ce(r.end)}`:r.name})]})};let at=null,Ae=null;const ao=({tasks:e,dates:t,ganttEvent:r,selectedTask:o,rowHeight:n,columnWidth:a,timeStep:s,svg:i,taskHeight:c,arrowColor:d,arrowIndent:p,fontFamily:S,fontSize:$,rtl:v,setGanttEvent:x,setFailedTask:P,setSelectedTask:g,onDateChange:y,onProgressChange:C,onDoubleClick:M,onClick:B,onDelete:b})=>{var R;const h=(R=i==null?void 0:i.current)==null?void 0:R.createSVGPoint(),[m,F]=u.useState(0),[L,Q]=u.useState(0),[se,pe]=u.useState(!1);u.useEffect(()=>{var Y,U,X,ee;const A=((Y=t[1])==null?void 0:Y.getTime())-((U=t[0])==null?void 0:U.getTime())-((X=t[1])==null?void 0:X.getTimezoneOffset())*60*1e3+((ee=t[0])==null?void 0:ee.getTimezoneOffset())*60*1e3,H=s*a/A;F(H)},[a,t,s]),u.useEffect(()=>{const A=Y=>ne(this,null,function*(){var ge;if(!r.changedTask||!h||!(i!=null&&i.current))return;Y.preventDefault(),h.x=Y.clientX;const U=h.matrixTransform((ge=i==null?void 0:i.current.getScreenCTM())==null?void 0:ge.inverse()),{isChanged:X,changedTask:ee}=xt(U.x,r.action,r.changedTask,m,s,L,v);X&&x({action:r.action,changedTask:ee})}),H=Y=>ne(this,null,function*(){var je;const{action:U,originalSelectedTask:X,changedTask:ee}=r;if(!ee||!h||!(i!=null&&i.current)||!X)return;Y.preventDefault(),h.x=Y.clientX;const ge=h.matrixTransform((je=i==null?void 0:i.current.getScreenCTM())==null?void 0:je.inverse()),{changedTask:q}=xt(ge.x,U,ee,m,s,L,v),Be=X.start!==q.start||X.end!==q.end||X.progress!==q.progress;i.current.removeEventListener("mousemove",A),i.current.removeEventListener("mouseup",H),x({action:""}),pe(!1);let ie=!0;if((U==="move"||U==="end"||U==="start")&&y&&Be)try{const te=yield y(q,q.barChildren);te!==void 0&&(ie=te)}catch(te){ie=!1}else if(C&&Be)try{const te=yield C(q,q.barChildren);te!==void 0&&(ie=te)}catch(te){ie=!1}ie||P(X)});!se&&(r.action==="move"||r.action==="end"||r.action==="start"||r.action==="progress")&&(i!=null&&i.current)&&(i.current.addEventListener("mousemove",A),i.current.addEventListener("mouseup",H),pe(!0))},[r,m,L,C,s,y,i,se,h,v,P,x]);const Me=(A,H,Y)=>ne(this,null,function*(){var U;if(!Y)A==="select"&&g(H.id);else if(yr(Y)){if(A==="delete"&&b)try{const X=yield b(H);X!==void 0&&X&&x({action:A,changedTask:H})}catch(X){console.error("Error on Delete. "+X)}}else if(A==="mouseenter")r.action||x({action:A,changedTask:H,originalSelectedTask:H});else if(A==="mouseleave")r.action==="mouseenter"&&setTimeout(()=>{x({action:""})},300);else if(A==="dblclick")M&&M(H);else if(A==="click")B&&B(H);else if(A==="move"){if(!(i!=null&&i.current)||!h)return;h.x=Y.clientX;const X=h.matrixTransform((U=i.current.getScreenCTM())==null?void 0:U.inverse());Q(X.x-H.x1),x({action:A,changedTask:H,originalSelectedTask:H})}else x({action:A,changedTask:H,originalSelectedTask:H})}),st=(A,H,Y)=>{["click"].includes(A)?(!["start","end","progress"].includes(at)&&(!Ae||Ae===H.start)&&Me(A,H,Y),at=null,Ae=null):["move","select"].includes(A)?(Ae=H.start,Me(A,H,Y)):(Ae=H.start,at=A,Me(A,H,Y))};return l.jsxs("g",{className:"content",children:[l.jsx("g",{className:"arrows",fill:d,stroke:d,children:e.map(A=>A.barChildren.map(H=>l.jsx(qr,{taskFrom:A,taskTo:e[H.index],rowHeight:n,taskHeight:c,arrowIndent:p,rtl:v},`Arrow from ${A.id} to ${e[H.index].id}`)))}),l.jsx("g",{className:"bar",fontFamily:S,fontSize:$,children:e.map(A=>l.jsx(no,{task:A,arrowIndent:p,taskHeight:c,isProgressChangeable:!!C&&!A.isDisabled,isDateChangeable:!!y&&!A.isDisabled,isDelete:!A.isDisabled,onEventStart:st,isSelected:!!o&&A.id===o.id,rtl:v},A.id))})]})},so=u.forwardRef(({gridProps:e,calendarProps:t,barProps:r,ganttHeight:o,scrollY:n,scrollX:a},s)=>{const i=u.useRef(null),c=u.useRef(null),d=ue(E({},r),{svg:i}),{styles:p}=Tt();return u.useEffect(()=>{c.current&&(c.current.scrollTop=n)},[n]),u.useEffect(()=>{s.current&&(s.current.scrollLeft=a)},[a]),l.jsxs("div",{className:p.ganttverticalcontainer,ref:s,dir:"ltr",children:[l.jsx("svg",{xmlns:"http://www.w3.org/2000/svg",width:e.svgWidth,height:t.headerHeight,fontFamily:r.fontFamily,className:"ganttHeader",children:l.jsx(Or,E({},t))}),l.jsx("div",{ref:c,className:p.horizontalcontainer,style:o?{maxHeight:o,width:e.svgWidth}:{width:e.svgWidth},children:l.jsxs("svg",{xmlns:"http://www.w3.org/2000/svg",width:e.svgWidth,height:r.rowHeight*(r.tasks.length||3),fontFamily:r.fontFamily,ref:i,className:"ganttBody",children:[l.jsx(jr,E({},e)),l.jsx(ao,E({},d))]})})]})}),io=(e,t)=>t/e>50?Math.floor(t/e)+20:50,lo=u.createContext({close:()=>{}}),co=e=>{const{visible:t,setVisible:r,record:o}=e;u.useMemo(()=>Je.createForm(),[o]);const a=O.useFieldSchema().properties.detail,s=u.useCallback(()=>{r(!1)},[]);return a&&l.jsx(lo.Provider,{value:{close:s},children:l.jsx(f.ActionContextProvider,{value:{visible:t,setVisible:r},children:l.jsx(f.RecordProvider,{record:o,children:l.jsx(O.RecursionField,{schema:a,name:a.name})})})})},uo=Z.debounce((e,t,r,o,n)=>ne(this,null,function*(){yield t.update({filterByTk:e.id,values:{[r.start]:e.start,[r.end]:e.end}}),we.message.success(n("Saved successfully")),yield o==null?void 0:o.refresh()}),300),fo=Z.debounce((e,t,r,o,n)=>ne(this,null,function*(){yield t.update({filterByTk:e.id,values:{[r.progress]:e.progress/100}}),we.message.success(n("Saved successfully")),yield o==null?void 0:o.refresh()}),300),Te=e=>{var Wt,Qt,_t;const{styles:t}=Tt(),{token:r}=f.useToken(),a=f.useAPIClient().auth.getOption("theme")==="compact"?45:55.56,{headerHeight:s=((Wt=document.querySelector(".ant-table-thead"))==null?void 0:Wt.clientHeight)||0,listCellWidth:i="155px",rowHeight:c=a,ganttHeight:d=0,preStepsCount:p=1,barFill:S=60,barCornerRadius:$=r.borderRadiusXS,barProgressColor:v=r.colorPrimary,barProgressSelectedColor:x=r.colorPrimary,barBackgroundColor:P=r.colorPrimary,barBackgroundSelectedColor:g=r.colorPrimary,projectProgressColor:y=r.colorPrimary,projectProgressSelectedColor:C=r.colorPrimary,projectBackgroundColor:M=r.colorPrimary,projectBackgroundSelectedColor:B=r.colorPrimary,milestoneBackgroundColor:b="#f1c453",milestoneBackgroundSelectedColor:h="#f29e4c",rtl:m=!1,handleWidth:F=8,timeStep:L=3e5,arrowColor:Q="grey",fontFamily:se="-apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, 'Noto Sans', sans-serif, 'Apple Color Emoji', 'Segoe UI Emoji', 'Segoe UI Symbol', 'Noto Color Emoji'",fontSize:pe=r.fontSize,arrowIndent:Me=20,todayColor:st="rgba(252, 248, 227, 0.5)",viewDate:R,TooltipContent:A=Tr,onDoubleClick:H,onClick:Y,onDelete:U,onSelect:X,useProps:ee}=e,{onExpanderClick:ge,tasks:q,expandAndCollapseAll:Be}=ee(),ie=fe(),je=f.useCurrentAppInfo(),{t:te}=me.useTranslation(),yo=(Qt=je.data)==null?void 0:Qt.lang,it=f.useTableBlockContext(),{resource:Ht,service:Ve}=f.useBlockRequestContext(),Et=O.useFieldSchema(),{fieldNames:qe}=ee(e),re=qe.range||"day",Se=u.useRef(null),lt=u.useRef(null),zt=u.useRef(null),[le,vo]=u.useState(()=>{const[w,I]=vt(q,re,p);return{viewMode:re,dates:St(w,I,re)}}),[So,Gt]=u.useState(!1),[wo,Co]=u.useState({}),[Ie,Ot]=u.useState(void 0),[Ue,Xt]=u.useState(0),[To,Mo]=u.useState(0),[Bo,kt]=u.useState(d),[oe,We]=u.useState([]),[Le,Yt]=u.useState({action:""}),ct=u.useMemo(()=>c*S/100,[c,S]),[dt,Do]=u.useState(),[Qe,jt]=u.useState(null),[be,ut]=u.useState(0),[ce,He]=u.useState(-1),[qt,De]=u.useState(!1),J=io(le.dates.length,(_t=zt.current)==null?void 0:_t.clientWidth),de=le.dates.length*J,Ne=oe.length*c,{expandFlag:Ut}=it,[No,Po]=u.useState([]);u.useEffect(()=>{it.field.onExpandClick=Io,it.field.onRowSelect=Lo},[]),u.useEffect(()=>{Be==null||Be(!Ut)},[Ut]),u.useEffect(()=>{let w;ge?w=vr(q):w=q,w=w.sort(Sr);const[I,D]=vt(w,re,p);let V=St(I,D,re);m&&(V=V.reverse(),ce===-1&&He(V.length*J)),vo({dates:V,viewMode:re}),We(ir(w,V,J,c,ct,$,F,m,v,x,P,g,y,C,M,B,b,h))},[q,re,p,c,$,J,ct,F,v,x,P,g,y,C,M,B,b,h,m,ce]),u.useEffect(()=>{if(re===le.viewMode&&(R&&!Ie||R&&(Ie==null?void 0:Ie.valueOf())!==R.valueOf())){const w=le.dates,I=w.findIndex((D,V)=>R.valueOf()>=D.valueOf()&&V+1!==w.length&&R.valueOf()<w[V+1].valueOf());if(I===-1)return;Ot(R),He(J*I)}},[R,J,le.dates,le.viewMode,re,Ie,Ot]),u.useEffect(()=>{const{changedTask:w,action:I}=Le;if(w){if(I==="delete")Yt({action:""}),We(oe.filter(D=>D.id!==w.id));else if(I==="move"||I==="end"||I==="start"||I==="progress"){const D=oe.find(V=>V.id===w.id);if(D&&D.start&&D.end&&(D.start.getTime()!==w.start.getTime()||D.end.getTime()!==w.end.getTime()||D.progress!==w.progress)){const V=oe.map(_=>_.id===w.id?w:_);We(V)}}}},[Le,oe]),u.useEffect(()=>{Qe&&(We(oe.map(w=>w.id!==Qe.id?w:Qe)),jt(null))},[Qe,oe]),u.useEffect(()=>{i||Xt(0),lt.current&&Xt(lt.current.offsetWidth)},[lt,i]),u.useEffect(()=>{Se.current&&Mo(Se.current.offsetWidth-Ue)},[Se,Ue]),u.useEffect(()=>{kt(d?d+s:q.length*c+s)},[d,q,s,c]),u.useEffect(()=>{var I;const w=D=>{if(D.shiftKey||D.deltaX){const V=D.deltaX?D.deltaX:D.deltaY;let _=ce+V;_<0?_=0:_>de&&(_=de),He(_),D.preventDefault()}else if(d){let V=be+D.deltaY;V<0?V=0:V>Ne-d&&(V=Ne-d),V!==be&&(ut(V),D.preventDefault())}De(!0)};return(I=Se.current)==null||I.addEventListener("wheel",w,{passive:!1}),()=>{var D;(D=Se.current)==null||D.removeEventListener("wheel",w)}},[Se,be,ce,d,de,m,Ne]);const Fo=w=>{be!==w.currentTarget.scrollTop&&!qt?(ut(w.currentTarget.scrollTop),De(!0)):De(!1)},Ao=w=>{ce!==w.currentTarget.scrollLeft&&!qt?(He(w.currentTarget.scrollLeft),De(!0)):De(!1)},$o=w=>{w.preventDefault();let I=be,D=ce,V=!0;switch(w.key){case"Down":case"ArrowDown":I+=c,V=!1;break;case"Up":case"ArrowUp":I-=c,V=!1;break;case"Left":case"ArrowLeft":D-=J;break;case"Right":case"ArrowRight":D+=J;break}V?(D<0?D=0:D>de&&(D=de),He(D)):(I<0?I=0:I>Ne-d&&(I=Ne-d),ut(I)),De(!0)},Vo=w=>{const I=oe.find(V=>V.id===w),D=oe.find(V=>!!dt&&V.id===dt.id);X&&(D&&X(D,!1),I&&X(I,!0)),Do(I)},Io=(w,I)=>{var V;const D=(V=ie==null?void 0:ie.field)==null?void 0:V.data.find(_=>_.id===I.id+"");ge&&I.children.length&&ge(ue(E({},D),{hideChildren:!w}))},Lo=w=>{Po(w)},Ho=w=>ne(this,null,function*(){fo(w,Ht,qe,Ve,te)}),Eo=w=>ne(this,null,function*(){uo(w,Ht,qe,Ve,te)}),zo=w=>{var _;const I=ft=>ft.reduce((Kt,_e)=>_e.children?Kt.concat([_e,...I(_e.children)]):Kt.concat(_e),[]),D=I((_=Ve==null?void 0:Ve.data)==null?void 0:_.data),V=D==null?void 0:D.find(ft=>ft.id===+w.id);V&&(Co(V),Gt(!0))},Go={columnWidth:J,svgWidth:de,tasks:q,rowHeight:c,dates:le.dates,todayColor:st,rtl:m,selectedRowKeys:No},Oo={dateSetup:le,locale:yo,viewMode:re,headerHeight:s,columnWidth:J,fontFamily:se,fontSize:pe,rtl:m},Xo={tasks:oe,dates:le.dates,ganttEvent:Le,selectedTask:dt,rowHeight:c,taskHeight:ct,columnWidth:J,arrowColor:Q,timeStep:L,fontFamily:se,fontSize:pe,arrowIndent:Me,svgWidth:de,rtl:m,setGanttEvent:Yt,setFailedTask:jt,setSelectedTask:Vo,onDateChange:Eo,onProgressChange:qe.progress&&Ho,onDoubleClick:H,onClick:zo,onDelete:U};return l.jsxs("div",{className:N.cx(N.css`
238
238
  .ant-table-container::after {
239
239
  box-shadow: none !important;
240
240
  }
@@ -1,17 +1,17 @@
1
1
  module.exports = {
2
2
  "react": "18.2.0",
3
- "@nocobase/client": "0.18.0-alpha.8",
3
+ "@nocobase/client": "0.19.0-alpha.1",
4
4
  "@formily/react": "2.3.0",
5
5
  "@ant-design/icons": "5.2.6",
6
6
  "@formily/antd-v5": "1.1.9",
7
7
  "react-i18next": "11.18.6",
8
8
  "@formily/shared": "2.3.0",
9
- "@nocobase/server": "0.18.0-alpha.8",
10
- "@nocobase/test": "0.18.0-alpha.8",
9
+ "@nocobase/server": "0.19.0-alpha.1",
10
+ "@nocobase/test": "0.19.0-alpha.1",
11
11
  "@emotion/css": "11.11.2",
12
12
  "antd-style": "3.4.5",
13
13
  "@formily/core": "2.3.0",
14
- "antd": "5.12.2",
14
+ "antd": "5.12.8",
15
15
  "lodash": "4.17.21",
16
- "@nocobase/utils": "0.18.0-alpha.8"
16
+ "@nocobase/utils": "0.19.0-alpha.1"
17
17
  };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@nocobase/plugin-gantt",
3
- "version": "0.18.0-alpha.8",
3
+ "version": "0.19.0-alpha.1",
4
4
  "displayName": "Gantt",
5
5
  "displayName.zh-CN": "甘特图",
6
6
  "description": "Provides Gantt blocks",
@@ -15,5 +15,5 @@
15
15
  "@nocobase/server": "0.x",
16
16
  "@nocobase/test": "0.x"
17
17
  },
18
- "gitHead": "727d42f6f14e5f863831da3dbf3255ba1165b567"
18
+ "gitHead": "64601944412fc4d2e2bd05f4b982118dd28247dc"
19
19
  }