@nocobase/plugin-gantt 0.21.0-alpha.7 → 0.21.0-alpha.8
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/dist/client/index.js +4 -4
- package/dist/externalVersion.js +4 -4
- package/package.json +2 -2
package/dist/client/index.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
(function(I,c){typeof exports=="object"&&typeof module!="undefined"?c(exports,require("react/jsx-runtime"),require("@nocobase/client"),require("react"),require("@formily/react"),require("react-i18next"),require("@ant-design/icons"),require("@formily/antd-v5"),require("@formily/shared"),require("@emotion/css"),require("antd"),require("lodash"),require("antd-style"),require("@nocobase/utils/client")):typeof define=="function"&&define.amd?define(["exports","react/jsx-runtime","@nocobase/client","react","@formily/react","react-i18next","@ant-design/icons","@formily/antd-v5","@formily/shared","@emotion/css","antd","lodash","antd-style","@nocobase/utils/client"],c):(I=typeof globalThis!="undefined"?globalThis:I||self,c(I["@nocobase/plugin-gantt"]={},I.jsxRuntime,I["@nocobase/client"],I.react,I["@formily/react"],I["react-i18next"],I["@ant-design/icons"],I["@formily/antd-v5"],I["@formily/shared"],I["@emotion/css"],I.antd,I.lodash,I["antd-style"],I["@nocobase/utils"]))})(this,function(I,c,d,g,P,Be,Qe,Fe,ae,N,pt,ft,ze,Ke){"use strict";var Ho=Object.defineProperty,zo=Object.defineProperties;var Go=Object.getOwnPropertyDescriptors;var er=Object.getOwnPropertySymbols;var Oo=Object.prototype.hasOwnProperty,Xo=Object.prototype.propertyIsEnumerable;var tr=(I,c,d)=>c in I?Ho(I,c,{enumerable:!0,configurable:!0,writable:!0,value:d}):I[c]=d,G=(I,c)=>{for(var d in c||(c={}))Oo.call(c,d)&&tr(I,d,c[d]);if(er)for(var d of er(c))Xo.call(c,d)&&tr(I,d,c[d]);return I},be=(I,c)=>zo(I,Go(c));var ne=(I,c,d)=>new Promise((g,P)=>{var Be=ae=>{try{Fe(d.next(ae))}catch(N){P(N)}},Qe=ae=>{try{Fe(d.throw(ae))}catch(N){P(N)}},Fe=ae=>ae.done?g(ae.value):Promise.resolve(ae.value).then(Be,Qe);Fe((d=d.apply(I,c)).next())});const rr=()=>{const{name:e,title:t}=d.useCollection_deprecated(),r=d.useSchemaTemplate();return c.jsx(d.GeneralSchemaDesigner,{schemaSettings:"blockSettings:gantt",template:r,title:t||e})},Je=g.createContext({});Je.displayName="GanttBlockContext";const Ze=(e=[],t,r=[],o=void 0,n=!1,a,i)=>(e.forEach(s=>{var h,v;const l=a(s),u=parseFloat((s[t.progress]*100).toFixed(2));s.children&&s.children.length?(r.push({start:new Date((h=s[t.start])!=null?h:void 0),end:new Date((v=s[t.end])!=null?v:void 0),name:s[t.title],id:s[i]+"",type:"project",progress:u>100?100:u||0,hideChildren:n,project:o,color:s.color,isDisabled:l}),Ze(s.children,t,r,s.id+"",n,a,i)):r.push({start:s[t.start]?new Date(s[t.start]):void 0,end:new Date(s[t.end]||s[t.start]),name:s[t.title],id:s[i]+"",type:t.end?"task":"milestone",progress:u>100?100:u||0,project:o,color:s.color,isDisabled:l})}),r),or=e=>{const{fieldNames:t,timeRange:r,resource:o}=e,n=P.useField(),{service:a}=d.useBlockRequestContext();return c.jsx(Je.Provider,{value:{field:n,service:a,resource:o,fieldNames:t,timeRange:r},children:e.children})},nr=e=>{const t={filter:e.params.filter,paginate:!1,sort:e.fieldNames.start},r=d.useCollection_deprecated();return r!=null&&r.tree&&(t.tree=!0),c.jsx("div",{"aria-label":"block-item-gantt",role:"button",children:c.jsx(d.BlockProvider,be(G({name:"gantt"},e),{params:t,children:c.jsx(d.TableBlockProvider,be(G({},e),{params:t,children:c.jsx(or,G({},e))}))}))})},K=()=>g.useContext(Je),ht=()=>{var C;const e=K(),[t,r]=g.useState([]),{getPrimaryKey:o,name:n,template:a,writableView:i}=d.useCollection_deprecated(),{parseAction:s}=d.useACLRoleContext(),l=d.useTableBlockContext(),u=o(),h=x=>{const F=`${n}:update`,p={},y=x==null?void 0:x[u],S=s(F,{schema:p,recordPkValue:y});return a==="view"&&!i||!S},v=x=>{const p=e.field.data.map(y=>y.id===x.id?x:y);r(p),e.field.data=p},V=x=>{var p;const F=Ze((p=e.service.data)==null?void 0:p.data,e.fieldNames,[],void 0,x,h,u);r(F),e.field.data=F};return g.useEffect(()=>{var x,F;if(!((x=e==null?void 0:e.service)!=null&&x.loading)){const p=Ze((F=e.service.data)==null?void 0:F.data,e.fieldNames,[],void 0,!1,h,u);r(p),e.field.data=p,t.length>0&&l.setExpandFlag(!0)}},[(C=e==null?void 0:e.service)==null?void 0:C.loading]),console.log(t),{fieldNames:e.fieldNames,timeRange:e.timeRange,onExpanderClick:v,expandAndCollapseAll:V,tasks:t}},ee=()=>Be.useTranslation("gantt"),pe=(e="string")=>{var n;const t=d.useCompile(),{fields:r}=d.useCollection_deprecated();return(n=r==null?void 0:r.filter(a=>a.type===e))==null?void 0:n.map(a=>{var i;return{value:a.name,label:t((i=a==null?void 0:a.uiSchema)==null?void 0:i.title)}})},ar=new d.SchemaSettings({name:"GanttBlockSettings",items:[{name:"title",Component:d.SchemaSettingsBlockTitleItem},{name:"titleField",Component:d.SchemaSettingsSelectItem,useComponentProps(){var i;const{t:e}=ee(),t=P.useFieldSchema(),r=((i=t==null?void 0:t["x-decorator-props"])==null?void 0:i.fieldNames)||{},{service:o}=K(),n=P.useField(),{dn:a}=d.useDesignable();return{title:e("Title field"),value:r.title,options:pe("string"),onChange:s=>{const l=n.decoratorProps.fieldNames||{};l.title=s,n.decoratorProps.params=l,t["x-decorator-props"].params=l,t["x-decorator-props"].fieldNames=l,o.refresh(),a.emit("patch",{schema:{"x-uid":t["x-uid"],"x-decorator-props":n.decoratorProps}}),a.refresh()}}}},{name:"timeScale",Component:d.SchemaSettingsSelectItem,useComponentProps(){var s;const{t:e}=ee(),t=P.useFieldSchema(),r=((s=t==null?void 0:t["x-decorator-props"])==null?void 0:s.fieldNames)||{},o=P.useField(),{service:n}=K(),{dn:a}=d.useDesignable(),i=d.useCompile();return{title:e("Time scale"),value:r.range||"day",options:[{label:i('{{t("Hour")}}'),value:"hour",color:"orange"},{label:i('{{t("Quarter of day")}}'),value:"quarterDay",color:"default"},{label:i('{{t("Half of day")}}'),value:"halfDay",color:"blue"},{label:i('{{t("Day")}}'),value:"day",color:"yellow"},{label:i('{{t("Week")}}'),value:"week",color:"pule"},{label:i('{{t("Month")}}'),value:"month",color:"green"},{label:i('{{t("QuarterYear")}}'),value:"quarterYear",color:"red"},{label:i('{{t("Year")}}'),value:"year",color:"green"}],onChange:l=>{const u=o.decoratorProps.fieldNames||{};u.range=l,o.decoratorProps.params=u,t["x-decorator-props"].params=u,t["x-decorator-props"].fieldNames=u,n.refresh(),a.emit("patch",{schema:{"x-uid":t["x-uid"],"x-decorator-props":o.decoratorProps}}),a.refresh()}}}},{name:"startDateField",Component:d.SchemaSettingsSelectItem,useComponentProps(){var i;const{t:e}=ee(),t=P.useFieldSchema(),r=((i=t==null?void 0:t["x-decorator-props"])==null?void 0:i.fieldNames)||{},o=P.useField(),{dn:n}=d.useDesignable(),{service:a}=K();return{title:e("Start date field"),value:r.start,options:pe("date"),onChange:s=>{const l=o.decoratorProps.fieldNames||{};l.start=s,o.decoratorProps.fieldNames=l,t["x-decorator-props"].fieldNames=l,a.refresh(),n.emit("patch",{schema:{"x-uid":t["x-uid"],"x-decorator-props":o.decoratorProps}}),n.refresh()}}}},{name:"endDateField",Component:d.SchemaSettingsSelectItem,useComponentProps(){var i;const{t:e}=ee(),t=P.useFieldSchema(),r=P.useField(),{service:o}=K(),{dn:n}=d.useDesignable(),a=((i=t==null?void 0:t["x-decorator-props"])==null?void 0:i.fieldNames)||{};return{title:e("End date field"),value:a.end,options:pe("date"),onChange:s=>{const l=r.decoratorProps.fieldNames||{};l.end=s,r.decoratorProps.fieldNames=l,t["x-decorator-props"].fieldNames=l,o.refresh(),n.emit("patch",{schema:{"x-uid":t["x-uid"],"x-decorator-props":r.decoratorProps}}),n.refresh()}}}},{name:"processField",Component:d.SchemaSettingsSelectItem,useComponentProps(){var i;const{t:e}=ee(),t=P.useFieldSchema(),r=((i=t==null?void 0:t["x-decorator-props"])==null?void 0:i.fieldNames)||{},{service:o}=K(),{dn:n}=d.useDesignable(),a=P.useField();return{title:e("Progress field"),value:r.progress,options:pe("float"),onChange:s=>{const l=a.decoratorProps.fieldNames||{};l.progress=s,a.decoratorProps.fieldNames=l,t["x-decorator-props"].fieldNames=l,o.refresh(),n.emit("patch",{schema:{"x-uid":t["x-uid"],"x-decorator-props":a.decoratorProps}}),n.refresh()}}}},{name:"dataScope",Component:d.SchemaSettingsDataScope,useComponentProps(){var a,i;const{name:e}=d.useCollection_deprecated(),t=P.useFieldSchema(),{form:r}=d.useFormBlockContext(),o=P.useField(),{dn:n}=d.useDesignable();return{collectionName:e,defaultFilter:((i=(a=t==null?void 0:t["x-decorator-props"])==null?void 0:a.params)==null?void 0:i.filter)||{},form:r,onSubmit:({filter:s})=>{s=d.removeNullCondition(s);const l=o.decoratorProps.params||{};l.filter=s,o.decoratorProps.params=l,t["x-decorator-props"].params=l,n.emit("patch",{schema:{"x-uid":t["x-uid"],"x-decorator-props":t["x-decorator-props"]}})}}}},{name:"divider",type:"divider"},{name:"template",Component:d.SchemaSettingsTemplate,useComponentProps(){const{name:e}=d.useCollection_deprecated();return{componentName:"Gantt",collectionName:e}}},{name:"divider2",type:"divider"},{name:"remove",type:"remove",componentProps:{removeParentsIfNoChildren:!0,breakRemoveOn:{"x-component":"Grid"}}}]}),sr=new d.SchemaSettings({name:"blockSettings:gantt",items:[{name:"title",Component:d.SchemaSettingsBlockTitleItem},{name:"titleField",Component:d.SchemaSettingsSelectItem,useComponentProps(){var i;const{t:e}=ee(),t=P.useFieldSchema(),r=((i=t==null?void 0:t["x-decorator-props"])==null?void 0:i.fieldNames)||{},{service:o}=K(),n=P.useField(),{dn:a}=d.useDesignable();return{title:e("Title field"),value:r.title,options:pe("string"),onChange:s=>{const l=n.decoratorProps.fieldNames||{};l.title=s,n.decoratorProps.params=l,t["x-decorator-props"].params=l,t["x-decorator-props"].fieldNames=l,o.refresh(),a.emit("patch",{schema:{"x-uid":t["x-uid"],"x-decorator-props":n.decoratorProps}}),a.refresh()}}}},{name:"timeScale",Component:d.SchemaSettingsSelectItem,useComponentProps(){var s;const{t:e}=ee(),t=P.useFieldSchema(),r=((s=t==null?void 0:t["x-decorator-props"])==null?void 0:s.fieldNames)||{},o=P.useField(),{service:n}=K(),{dn:a}=d.useDesignable(),i=d.useCompile();return{title:e("Time scale"),value:r.range||"day",options:[{label:i('{{t("Hour")}}'),value:"hour",color:"orange"},{label:i('{{t("Quarter of day")}}'),value:"quarterDay",color:"default"},{label:i('{{t("Half of day")}}'),value:"halfDay",color:"blue"},{label:i('{{t("Day")}}'),value:"day",color:"yellow"},{label:i('{{t("Week")}}'),value:"week",color:"pule"},{label:i('{{t("Month")}}'),value:"month",color:"green"},{label:i('{{t("QuarterYear")}}'),value:"quarterYear",color:"red"},{label:i('{{t("Year")}}'),value:"year",color:"green"}],onChange:l=>{const u=o.decoratorProps.fieldNames||{};u.range=l,o.decoratorProps.params=u,t["x-decorator-props"].params=u,t["x-decorator-props"].fieldNames=u,n.refresh(),a.emit("patch",{schema:{"x-uid":t["x-uid"],"x-decorator-props":o.decoratorProps}}),a.refresh()}}}},{name:"startDateField",Component:d.SchemaSettingsSelectItem,useComponentProps(){var i;const{t:e}=ee(),t=P.useFieldSchema(),r=((i=t==null?void 0:t["x-decorator-props"])==null?void 0:i.fieldNames)||{},o=P.useField(),{dn:n}=d.useDesignable(),{service:a}=K();return{title:e("Start date field"),value:r.start,options:pe("date"),onChange:s=>{const l=o.decoratorProps.fieldNames||{};l.start=s,o.decoratorProps.fieldNames=l,t["x-decorator-props"].fieldNames=l,a.refresh(),n.emit("patch",{schema:{"x-uid":t["x-uid"],"x-decorator-props":o.decoratorProps}}),n.refresh()}}}},d.setDataLoadingModeSettingsItem,{name:"endDateField",Component:d.SchemaSettingsSelectItem,useComponentProps(){var i;const{t:e}=ee(),t=P.useFieldSchema(),r=P.useField(),{service:o}=K(),{dn:n}=d.useDesignable(),a=((i=t==null?void 0:t["x-decorator-props"])==null?void 0:i.fieldNames)||{};return{title:e("End date field"),value:a.end,options:pe("date"),onChange:s=>{const l=r.decoratorProps.fieldNames||{};l.end=s,r.decoratorProps.fieldNames=l,t["x-decorator-props"].fieldNames=l,o.refresh(),n.emit("patch",{schema:{"x-uid":t["x-uid"],"x-decorator-props":r.decoratorProps}}),n.refresh()}}}},{name:"processField",Component:d.SchemaSettingsSelectItem,useComponentProps(){var i;const{t:e}=ee(),t=P.useFieldSchema(),r=((i=t==null?void 0:t["x-decorator-props"])==null?void 0:i.fieldNames)||{},{service:o}=K(),{dn:n}=d.useDesignable(),a=P.useField();return{title:e("Progress field"),value:r.progress,options:pe("float"),onChange:s=>{const l=a.decoratorProps.fieldNames||{};l.progress=s,a.decoratorProps.fieldNames=l,t["x-decorator-props"].fieldNames=l,o.refresh(),n.emit("patch",{schema:{"x-uid":t["x-uid"],"x-decorator-props":a.decoratorProps}}),n.refresh()}}}},{name:"dataScope",Component:d.SchemaSettingsDataScope,useComponentProps(){var a,i;const{name:e}=d.useCollection(),t=P.useFieldSchema(),{form:r}=d.useFormBlockContext(),o=P.useField(),{dn:n}=d.useDesignable();return{collectionName:e,defaultFilter:((i=(a=t==null?void 0:t["x-decorator-props"])==null?void 0:a.params)==null?void 0:i.filter)||{},form:r,onSubmit:({filter:s})=>{s=d.removeNullCondition(s);const l=o.decoratorProps.params||{};l.filter=s,o.decoratorProps.params=l,t["x-decorator-props"].params=l,n.emit("patch",{schema:{"x-uid":t["x-uid"],"x-decorator-props":t["x-decorator-props"]}})}}}},{name:"divider",type:"divider"},{name:"template",Component:d.SchemaSettingsTemplate,useComponentProps(){const{name:e}=d.useCollection();return{componentName:"Gantt",collectionName:e}}},{name:"divider2",type:"divider"},{name:"remove",type:"remove",componentProps:{removeParentsIfNoChildren:!0,breakRemoveOn:{"x-component":"Grid"}}}]}),gt=new d.CompatibleSchemaInitializer({name:"GanttActionInitializers",title:"{{t('Configure actions')}}",icon:"SettingOutlined",style:{marginLeft:8},items:[{type:"itemGroup",name:"enableActions",title:"{{t('Enable actions')}}",children:[{type:"item",name:"filter",title:"{{t('Filter')}}",Component:"FilterActionInitializer",schema:{"x-align":"left"}},{type:"item",title:"{{t('Add new')}}",name:"addNew",Component:"CreateActionInitializer",schema:{"x-align":"right","x-decorator":"ACLActionProvider","x-acl-action-props":{skipScopeCheck:!0}},useVisible(){const e=d.useCollection_deprecated();return!["view","file","sql"].includes(e.template)||(e==null?void 0:e.writableView)}},{type:"item",title:"{{t('Delete')}}",name:"delete",Component:"BulkDestroyActionInitializer",schema:{"x-align":"right","x-decorator":"ACLActionProvider"},useVisible(){const e=d.useCollection_deprecated();return!["view","sql"].includes(e.template)||(e==null?void 0:e.writableView)}},{type:"item",title:"{{t('Refresh')}}",name:"refresh",Component:"RefreshActionInitializer",schema:{"x-align":"right"}},{name:"toggle",title:"{{t('Expand/Collapse')}}",Component:"ExpandableActionInitializer",schema:{"x-align":"right"},useVisible(){var o;const e=P.useFieldSchema(),t=d.useCollection_deprecated(),{treeTable:r}=((o=e==null?void 0:e.parent)==null?void 0:o["x-decorator-props"])||{};return t.tree&&r}}]},{name:"divider",type:"divider",useVisible(){const e=d.useCollection_deprecated();return!["view","sql"].includes(e.template)||(e==null?void 0:e.writableView)}},{type:"subMenu",name:"customize",title:'{{t("Customize")}}',children:[{type:"item",title:'{{t("Add record")}}',name:"addRecord",Component:"CustomizeAddRecordActionInitializer",schema:{"x-align":"right","x-decorator":"ACLActionProvider","x-acl-action":"create","x-acl-action-props":{skipScopeCheck:!0}}}],useVisible(){const e=d.useCollection_deprecated();return!["view","sql"].includes(e.template)||(e==null?void 0:e.writableView)}}]}),ir=new d.CompatibleSchemaInitializer({name:"gantt:configureActions",title:"{{t('Configure actions')}}",icon:"SettingOutlined",style:{marginLeft:8},items:[{type:"itemGroup",name:"enableActions",title:"{{t('Enable actions')}}",children:[{type:"item",name:"filter",title:"{{t('Filter')}}",Component:"FilterActionInitializer",schema:{"x-align":"left"}},{type:"item",title:"{{t('Add new')}}",name:"addNew",Component:"CreateActionInitializer",schema:{"x-align":"right","x-decorator":"ACLActionProvider","x-acl-action-props":{skipScopeCheck:!0}},useVisible(){const e=d.useCollection_deprecated();return!["view","file","sql"].includes(e.template)||(e==null?void 0:e.writableView)}},{type:"item",title:"{{t('Delete')}}",name:"delete",Component:"BulkDestroyActionInitializer",schema:{"x-align":"right","x-decorator":"ACLActionProvider"},useVisible(){const e=d.useCollection_deprecated();return!["view","sql"].includes(e.template)||(e==null?void 0:e.writableView)}},{type:"item",title:"{{t('Refresh')}}",name:"refresh",Component:"RefreshActionInitializer",schema:{"x-align":"right"}},{name:"toggle",title:"{{t('Expand/Collapse')}}",Component:"ExpandableActionInitializer",schema:{"x-align":"right"},useVisible(){var o;const e=P.useFieldSchema(),t=d.useCollection_deprecated(),{treeTable:r}=((o=e==null?void 0:e.parent)==null?void 0:o["x-decorator-props"])||{};return t.tree&&r}}]},{name:"divider",type:"divider",useVisible(){const e=d.useCollection_deprecated();return!["view","sql"].includes(e.template)||(e==null?void 0:e.writableView)}},{type:"subMenu",name:"customize",title:'{{t("Customize")}}',children:[{type:"item",title:'{{t("Add record")}}',name:"addRecord",Component:"CustomizeAddRecordActionInitializer",schema:{"x-align":"right","x-decorator":"ACLActionProvider","x-acl-action":"create","x-acl-action-props":{skipScopeCheck:!0}}}],useVisible(){const e=d.useCollection_deprecated();return!["view","sql"].includes(e.template)||(e==null?void 0:e.writableView)}}]},gt),lr=e=>{const{collectionName:t,fieldNames:r,dataSource:o}=e;return{type:"void","x-acl-action":`${t}:list`,"x-decorator":"GanttBlockProvider","x-decorator-props":{collection:t,dataSource:o,action:"list",fieldNames:r,params:{paginate:!1}},"x-toolbar":"BlockSchemaToolbar","x-settings":"blockSettings:gantt","x-component":"CardItem",properties:{[ae.uid()]:{type:"void","x-component":"Gantt","x-use-component-props":"useGanttBlockProps",properties:{toolBar:{type:"void","x-component":"ActionBar","x-component-props":{style:{marginBottom:24}},"x-initializer":"gantt:configureActions",properties:{}},table:{type:"array","x-decorator":"div","x-decorator-props":{style:{float:"left",maxWidth:"35%"}},"x-initializer":"table:configureColumns","x-component":"TableV2","x-use-component-props":"useTableBlockProps","x-component-props":{rowKey:"id",rowSelection:{type:"checkbox"},pagination:!1},properties:{actions:{type:"void",title:'{{ t("Actions") }}',"x-action-column":"actions","x-decorator":"TableV2.Column.ActionBar","x-component":"TableV2.Column","x-designer":"TableV2.ActionColumnDesigner","x-initializer":"table:configureItemActions",properties:{actions:{type:"void","x-decorator":"DndContext","x-component":"Space","x-component-props":{split:"|"}}}}}},detail:{type:"void","x-component":"Gantt.Event",properties:{drawer:{type:"void","x-component":"Action.Drawer","x-component-props":{className:"nb-action-popup"},title:'{{ t("View record") }}',properties:{tabs:{type:"void","x-component":"Tabs","x-component-props":{},"x-initializer":"popup:addTab",properties:{tab1:{type:"void",title:'{{t("Details")}}',"x-component":"Tabs.TabPane","x-designer":"Tabs.Designer","x-component-props":{},properties:{grid:{type:"void","x-component":"Grid","x-initializer":"popup:common:addBlock"}}}}}}}}}}}}}},cr=()=>{const{insert:e}=d.useSchemaInitializer(),{t}=Be.useTranslation(),{getCollectionFields:r}=d.useCollectionManager_deprecated(),o=g.useContext(P.SchemaOptionsContext),{theme:n}=d.useGlobalTheme(),a=d.useSchemaInitializerItem();return c.jsx(d.DataBlockInitializer,be(G({},a),{componentType:"Gantt",icon:c.jsx(Qe.FormOutlined,{}),onCreateBlockSchema:s=>ne(this,[s],function*({item:i}){var C,x,F;const l=r(i.name,i.dataSource),u=(C=l==null?void 0:l.filter(p=>p.type==="string"))==null?void 0:C.map(p=>{var y;return{label:(y=p==null?void 0:p.uiSchema)==null?void 0:y.title,value:p.name}}),h=(x=l==null?void 0:l.filter(p=>p.type==="date"))==null?void 0:x.map(p=>{var y;return{label:(y=p==null?void 0:p.uiSchema)==null?void 0:y.title,value:p.name}}),v=(F=l==null?void 0:l.filter(p=>p.type==="float"))==null?void 0:F.map(p=>{var y;return{label:(y=p==null?void 0:p.uiSchema)==null?void 0:y.title,value:p.name}}),V=yield d.FormDialog(t("Create gantt block"),()=>c.jsx(d.SchemaComponentOptions,{scope:o.scope,components:G({},o.components),children:c.jsx(Fe.FormLayout,{layout:"vertical",children:c.jsx(d.SchemaComponent,{schema:{properties:{title:{title:t("Title field"),enum:u,required:!0,"x-component":"Select","x-decorator":"FormItem"},start:{title:t("Start date field"),enum:h,required:!0,default:"createdAt","x-component":"Select","x-decorator":"FormItem"},end:{title:t("End date field"),enum:h,required:!0,"x-component":"Select","x-decorator":"FormItem"},progress:{title:t("Progress field"),enum:v,"x-component":"Select","x-decorator":"FormItem"},range:{title:t("Time scale"),enum:[{label:'{{t("Hour")}}',value:"hour",color:"orange"},{label:'{{t("Quarter of day")}}',value:"quarterDay",color:"default"},{label:'{{t("Half of day")}}',value:"halfDay",color:"blue"},{label:'{{t("Day")}}',value:"day",color:"yellow"},{label:'{{t("Week")}}',value:"week",color:"pule"},{label:'{{t("Month")}}',value:"month",color:"green"},{label:'{{t("Year")}}',value:"year",color:"green"},{label:'{{t("QuarterYear")}}',value:"quarterYear",color:"red"}],default:"day","x-component":"Select","x-decorator":"FormItem"}}}})})}),n).open({initialValues:{}});e(lr({collectionName:i.name,dataSource:i.dataSource,fieldNames:G({},V)}))})}))},dr=P.observer(e=>c.jsx(c.Fragment,{children:e.children}),{displayName:"Event"}),ur=(e,t,r,o,n,a,i,s,l,u,h,v,V,C,x,F,p,y)=>{let S=e.map((T,M)=>pr(T,M,t,r,o,n,a,i,s,l,u,h,v,V,C,x,F,p,y));return S=S.map(T=>{const M=T.dependencies||[];for(let m=0;m<M.length;m++){const f=S.findIndex(b=>b.id===M[m]);f!==-1&&S[f].barChildren.push(T)}return T}),S},pr=(e,t,r,o,n,a,i,s,l,u,h,v,V,C,x,F,p,y,S)=>{let T;switch(e.type){case"milestone":T=fr(e,t,r,o,n,a,i,s,y,S);break;case"project":T=mt(e,t,r,o,n,a*.5,i,s,l,C,x,F,p);break;default:T=mt(e,t,r,o,n,a,i,s,l,u,h,v,V);break}return T},mt=(e,t,r,o,n,a,i,s,l,u,h,v,V)=>{let C,x;l?(x=bt(e.start,r,o),C=bt(e.end,r,o)):(C=Ge(e.start,r,o),x=Ge(e.end,r,o));let F=e.type;F==="task"&&x-C<s*2&&(F="smalltask",x=C>0?C+s*2:C);const[p,y]=Ae(C,x,e.progress,l),S=e.type==="project"?Re(t,n,a)+8:Re(t,n,a),T=e.type==="project"?e.hideChildren:void 0,M=G({backgroundColor:v,backgroundSelectedColor:V,progressColor:u,progressSelectedColor:h},e.styles);return be(G({},e),{typeInternal:F,x1:C,x2:x,y:S,index:t,progressX:y,progressWidth:p,barCornerRadius:i,handleWidth:s,hideChildren:T,height:a,barChildren:[],styles:M})},fr=(e,t,r,o,n,a,i,s,l,u)=>{const h=Ge(e.start,r,o),v=Re(t,n,a),V=h-a*.5,C=h+a*.5,x=a/1.414,F=G({backgroundColor:l,backgroundSelectedColor:u,progressColor:"",progressSelectedColor:""},e.styles);return be(G({},e),{end:e.start,x1:V,x2:C,y:v,index:t,progressX:0,progressWidth:0,barCornerRadius:i,handleWidth:s,typeInternal:e.type,progress:0,height:x,hideChildren:void 0,barChildren:[],styles:F})},Ge=(e,t,r)=>{var s,l,u;const o=t.findIndex(h=>(h==null?void 0:h.getTime())>=(e==null?void 0:e.getTime()))-1,a=((e==null?void 0:e.getTime())-((s=t[o])==null?void 0:s.getTime()))/(((l=t[o+1])==null?void 0:l.getTime())-((u=t[o])==null?void 0:u.getTime())),i=o*r+a*r;return isNaN(i)?0:i},bt=(e,t,r)=>{let o=Ge(e,t,r);return o+=r,isNaN(o)?0:o},Re=(e,t,r)=>{const o=e*t+(t-r)/2;return isNaN(o)?0:o},Ae=(e,t,r,o)=>{const n=(t-e)*r*.01;let a;return o?a=t-n:a=e,[n,a]},hr=(e,t)=>{if(e>=t.x2)return 100;if(e<=t.x1)return 0;{const r=t.x2-t.x1;return Math.round((e-t.x1)*100/r)}},gr=(e,t)=>{if(e>=t.x2)return 0;if(e<=t.x1)return 100;{const r=t.x2-t.x1;return Math.round((t.x2-e)*100/r)}},xt=(e,t,r)=>[e-5,t+r,e+5,t+r,e,t+r-8.66].join(","),mr=(e,t,r)=>{e>=r.x2-r.handleWidth*2&&(e=r.x2-r.handleWidth*2);const n=Math.round((e-r.x1)/t)*t;return r.x1+n},br=(e,t,r)=>{e<=r.x1+r.handleWidth*2&&(e=r.x1+r.handleWidth*2);const n=Math.round((e-r.x2)/t)*t;return r.x2+n},yt=(e,t,r)=>{const n=Math.round((e-r.x1)/t)*t,a=r.x1+n,i=a+r.x2-r.x1;return[a,i]},xe=(e,t,r,o,n)=>{var i,s;let a=new Date((e-t)/o*n+((i=r==null?void 0:r.getTime)==null?void 0:i.call(r)));return a=new Date(((s=a==null?void 0:a.getTime)==null?void 0:s.call(a))+((a==null?void 0:a.getTimezoneOffset())-(r==null?void 0:r.getTimezoneOffset()))*6e4),a},vt=(e,t,r,o,n,a,i)=>{let s;switch(r.type){case"milestone":s=yr(e,t,r,o,n,a);break;default:s=xr(e,t,r,o,n,a,i);break}return s},xr=(e,t,r,o,n,a,i)=>{const s=G({},r);let l=!1;switch(t){case"progress":if(i?s.progress=gr(e,r):s.progress=hr(e,r),l=s.progress!==r.progress,l){const[u,h]=Ae(s.x1,s.x2,s.progress,i);s.progressWidth=u,s.progressX=h}break;case"start":{const u=mr(e,o,r);if(s.x1=u,l=s.x1!==r.x1,l){i?s.end=xe(u,r.x1,r.end,o,n):s.start=xe(u,r.x1,r.start,o,n);const[h,v]=Ae(s.x1,s.x2,s.progress,i);s.progressWidth=h,s.progressX=v}break}case"end":{const u=br(e,o,r);if(s.x2=u,l=s.x2!==r.x2,l){i?s.start=xe(u,r.x2,r.start,o,n):s.end=xe(u,r.x2,r.end,o,n);const[h,v]=Ae(s.x1,s.x2,s.progress,i);s.progressWidth=h,s.progressX=v}break}case"move":{const[u,h]=yt(e-a,o,r);if(l=u!==r.x1,l){s.start=xe(u,r.x1,r.start,o,n),s.end=xe(h,r.x2,r.end,o,n),s.x1=u,s.x2=h;const[v,V]=Ae(s.x1,s.x2,s.progress,i);s.progressWidth=v,s.progressX=V}break}}return{isChanged:l,changedTask:s}},yr=(e,t,r,o,n,a)=>{const i=G({},r);let s=!1;switch(t){case"move":{const[l,u]=yt(e-a,o,r);s=l!==r.x1,s&&(i.start=xe(l,r.x1,r.start,o,n),i.end=i.start,i.x1=l,i.x2=u);break}}return{isChanged:s,changedTask:i}};var H=(e=>(e.Hour="hour",e.QuarterDay="quarterDay",e.HalfDay="halfDay",e.Day="day",e.Week="week",e.Month="month",e.QuarterYear="quarterYear",e.Year="year",e))(H||{});const St={},Oe=(e,t={})=>{const r=JSON.stringify([e,t]);let o=St[r];return o||(o=new Intl.DateTimeFormat(e,t),St[r]=o),o},z=(e,t,r)=>new Date(e.getFullYear()+(r==="year"?t:0),e.getMonth()+(r==="month"?t:0),e.getDate()+(r==="day"?t:0),e.getHours()+(r==="hour"?t:0),e.getMinutes()+(r==="minute"?t:0),e.getSeconds()+(r==="second"?t:0),e.getMilliseconds()+(r==="millisecond"?t:0)),j=(e,t)=>{const r=["millisecond","second","minute","hour","day","month","year"],o=a=>{const i=r.indexOf(t);return r.indexOf(a)<=i};return new Date(e==null?void 0:e.getFullYear(),o("year")?0:e.getMonth(),o("month")?1:e.getDate(),o("day")?0:e.getHours(),o("hour")?0:e.getMinutes(),o("minute")?0:e.getSeconds(),o("second")?0:e.getMilliseconds())},wt=(e,t,r)=>{var a,i;let o=((a=e[0])==null?void 0:a.start)||new Date,n=((i=e[0])==null?void 0:i.start)||new Date;for(const s of e)s.start<o&&(o=s.start),s.end>n&&(n=s.end);switch(t){case H.Year:o=z(o,-1,"year"),o=j(o,"year"),n=z(n,1,"year"),n=j(n,"year");break;case H.QuarterYear:o=z(o,-3,"month"),o=j(o,"month"),n=z(n,3,"year"),n=j(n,"year");break;case H.Month:o=z(o,-1*r,"month"),o=j(o,"month"),n=z(n,1,"year"),n=j(n,"year");break;case H.Week:o=j(o,"day"),o=z(vr(o),-7*r,"day"),n=j(n,"day"),n=z(n,1.5,"month");break;case H.Day:o=j(o,"day"),o=z(o,-1*r,"day"),n=j(n,"day"),n=z(n,19,"day");break;case H.QuarterDay:o=j(o,"day"),o=z(o,-1*r,"day"),n=j(n,"day"),n=z(n,66,"hour");break;case H.HalfDay:o=j(o,"day"),o=z(o,-1*r,"day"),n=j(n,"day"),n=z(n,108,"hour");break;case H.Hour:o=j(o,"hour"),o=z(o,-1*r,"hour"),n=j(n,"day"),n=z(n,1,"day");break}return[o,n]},Ct=(e,t,r)=>{let o=new Date(e);const n=[o];for(;o<t;){switch(r){case H.Year:o=z(o,1,"year");break;case H.QuarterYear:o=z(o,3,"month");break;case H.Month:o=z(o,1,"month");break;case H.Week:o=z(o,7,"day");break;case H.Day:o=z(o,1,"day");break;case H.HalfDay:o=z(o,12,"hour");break;case H.QuarterDay:o=z(o,6,"hour");break;case H.Hour:o=z(o,1,"hour");break}n.push(o)}return n},$e=(e,t)=>{let r=Oe(t,{month:"long"}).format(e);return r=r.replace(r[0],r[0].toLocaleUpperCase()),r},Tt=(e,t,r)=>{let o=Oe(t,{weekday:r}).format(e);return o=o.replace(o[0],o[0].toLocaleUpperCase()),o},vr=e=>{const t=e.getDay(),r=e.getDate()-t+(t===0?-6:1);return new Date(e.setDate(r))},Sr=e=>{const t=new Date(e.valueOf()),r=(t.getDay()+6)%7;t.setDate(t.getDate()-r+3);const o=t.valueOf();t.setMonth(0,1),t.getDay()!==4&&t.setMonth(0,1+(4-t.getDay()+7)%7);const n=(1+Math.ceil((o-t.valueOf())/6048e5)).toString();return n.length===1?`0${n}`:n},wr=(e,t)=>new Date(t,e+1,0).getDate();function Cr(e){return e.key!==void 0}function Tr(e){const t=e.filter(r=>r.hideChildren&&r.type==="project");if(t.length>0)for(let r=0;t.length>r;r++){const o=t[r],n=Nt(e,o);e=e.filter(a=>n.indexOf(a)===-1)}return e}function Nt(e,t){let r=[];t.type!=="project"?r=e.filter(n=>n.dependencies&&n.dependencies.indexOf(t.id)!==-1):r=e.filter(n=>n.project&&n.project===t.id);const o=[];return r.forEach(n=>{o.push(...Nt(e,n))}),r=r.concat(r,o),r}const Nr=(e,t)=>{const r=e.displayOrder||Number.MAX_VALUE,o=t.displayOrder||Number.MAX_VALUE;return r>o?1:r<o?-1:0},Ce=e=>{var t;return isNaN((t=e==null?void 0:e.getTime)==null?void 0:t.call(e))?0:e.getFullYear()+`/${e.getMonth()+1}/`+e.getDate()},Xe=ze.createStyles(({token:e,css:t})=>({scrollWrapper:t`
|
|
1
|
+
(function(I,c){typeof exports=="object"&&typeof module!="undefined"?c(exports,require("react/jsx-runtime"),require("@nocobase/client"),require("react"),require("@formily/react"),require("react-i18next"),require("@ant-design/icons"),require("@formily/antd-v5"),require("@formily/shared"),require("@emotion/css"),require("antd"),require("lodash"),require("antd-style"),require("@nocobase/utils/client")):typeof define=="function"&&define.amd?define(["exports","react/jsx-runtime","@nocobase/client","react","@formily/react","react-i18next","@ant-design/icons","@formily/antd-v5","@formily/shared","@emotion/css","antd","lodash","antd-style","@nocobase/utils/client"],c):(I=typeof globalThis!="undefined"?globalThis:I||self,c(I["@nocobase/plugin-gantt"]={},I.jsxRuntime,I["@nocobase/client"],I.react,I["@formily/react"],I["react-i18next"],I["@ant-design/icons"],I["@formily/antd-v5"],I["@formily/shared"],I["@emotion/css"],I.antd,I.lodash,I["antd-style"],I["@nocobase/utils"]))})(this,function(I,c,d,g,P,Ce,Qe,Fe,ae,N,pt,ft,ze,Ke){"use strict";var Ho=Object.defineProperty,zo=Object.defineProperties;var Go=Object.getOwnPropertyDescriptors;var er=Object.getOwnPropertySymbols;var Oo=Object.prototype.hasOwnProperty,Xo=Object.prototype.propertyIsEnumerable;var tr=(I,c,d)=>c in I?Ho(I,c,{enumerable:!0,configurable:!0,writable:!0,value:d}):I[c]=d,G=(I,c)=>{for(var d in c||(c={}))Oo.call(c,d)&&tr(I,d,c[d]);if(er)for(var d of er(c))Xo.call(c,d)&&tr(I,d,c[d]);return I},be=(I,c)=>zo(I,Go(c));var ne=(I,c,d)=>new Promise((g,P)=>{var Ce=ae=>{try{Fe(d.next(ae))}catch(N){P(N)}},Qe=ae=>{try{Fe(d.throw(ae))}catch(N){P(N)}},Fe=ae=>ae.done?g(ae.value):Promise.resolve(ae.value).then(Ce,Qe);Fe((d=d.apply(I,c)).next())});const rr=()=>{const{name:e,title:t}=d.useCollection_deprecated(),r=d.useSchemaTemplate();return c.jsx(d.GeneralSchemaDesigner,{schemaSettings:"blockSettings:gantt",template:r,title:t||e})},Je=g.createContext({});Je.displayName="GanttBlockContext";const Ze=(e=[],t,r=[],o=void 0,n=!1,a,i)=>(e.forEach(s=>{var h,v;const l=a(s),u=parseFloat((s[t.progress]*100).toFixed(2));s.children&&s.children.length?(r.push({start:new Date((h=s[t.start])!=null?h:void 0),end:new Date((v=s[t.end])!=null?v:void 0),name:s[t.title],id:s[i]+"",type:"project",progress:u>100?100:u||0,hideChildren:n,project:o,color:s.color,isDisabled:l}),Ze(s.children,t,r,s.id+"",n,a,i)):r.push({start:s[t.start]?new Date(s[t.start]):void 0,end:new Date(s[t.end]||s[t.start]),name:s[t.title],id:s[i]+"",type:t.end?"task":"milestone",progress:u>100?100:u||0,project:o,color:s.color,isDisabled:l})}),r),or=e=>{const{fieldNames:t,timeRange:r,resource:o}=e,n=P.useField(),{service:a}=d.useBlockRequestContext();return c.jsx(Je.Provider,{value:{field:n,service:a,resource:o,fieldNames:t,timeRange:r},children:e.children})},nr=e=>{const t={filter:e.params.filter,paginate:!1,sort:e.fieldNames.start},r=d.useCollection_deprecated();return r!=null&&r.tree&&(t.tree=!0),c.jsx("div",{"aria-label":"block-item-gantt",role:"button",children:c.jsx(d.BlockProvider,be(G({name:"gantt"},e),{params:t,children:c.jsx(d.TableBlockProvider,be(G({},e),{params:t,children:c.jsx(or,G({},e))}))}))})},K=()=>g.useContext(Je),ht=()=>{var C;const e=K(),[t,r]=g.useState([]),{getPrimaryKey:o,name:n,template:a,writableView:i}=d.useCollection_deprecated(),{parseAction:s}=d.useACLRoleContext(),l=d.useTableBlockContext(),u=o(),h=x=>{const F=`${n}:update`,p={},y=x==null?void 0:x[u],S=s(F,{schema:p,recordPkValue:y});return a==="view"&&!i||!S},v=x=>{const p=e.field.data.map(y=>y.id===x.id?x:y);r(p),e.field.data=p},V=x=>{var p;const F=Ze((p=e.service.data)==null?void 0:p.data,e.fieldNames,[],void 0,x,h,u);r(F),e.field.data=F};return g.useEffect(()=>{var x,F;if(!((x=e==null?void 0:e.service)!=null&&x.loading)){const p=Ze((F=e.service.data)==null?void 0:F.data,e.fieldNames,[],void 0,!1,h,u);r(p),e.field.data=p,t.length>0&&l.setExpandFlag(!0)}},[(C=e==null?void 0:e.service)==null?void 0:C.loading]),console.log(t),{fieldNames:e.fieldNames,timeRange:e.timeRange,onExpanderClick:v,expandAndCollapseAll:V,tasks:t}},ee=()=>Ce.useTranslation("gantt"),pe=(e="string")=>{var n;const t=d.useCompile(),{fields:r}=d.useCollection_deprecated();return(n=r==null?void 0:r.filter(a=>a.type===e))==null?void 0:n.map(a=>{var i;return{value:a.name,label:t((i=a==null?void 0:a.uiSchema)==null?void 0:i.title)}})},ar=new d.SchemaSettings({name:"GanttBlockSettings",items:[{name:"title",Component:d.SchemaSettingsBlockTitleItem},{name:"titleField",Component:d.SchemaSettingsSelectItem,useComponentProps(){var i;const{t:e}=ee(),t=P.useFieldSchema(),r=((i=t==null?void 0:t["x-decorator-props"])==null?void 0:i.fieldNames)||{},{service:o}=K(),n=P.useField(),{dn:a}=d.useDesignable();return{title:e("Title field"),value:r.title,options:pe("string"),onChange:s=>{const l=n.decoratorProps.fieldNames||{};l.title=s,n.decoratorProps.params=l,t["x-decorator-props"].params=l,t["x-decorator-props"].fieldNames=l,o.refresh(),a.emit("patch",{schema:{"x-uid":t["x-uid"],"x-decorator-props":n.decoratorProps}}),a.refresh()}}}},{name:"timeScale",Component:d.SchemaSettingsSelectItem,useComponentProps(){var s;const{t:e}=ee(),t=P.useFieldSchema(),r=((s=t==null?void 0:t["x-decorator-props"])==null?void 0:s.fieldNames)||{},o=P.useField(),{service:n}=K(),{dn:a}=d.useDesignable(),i=d.useCompile();return{title:e("Time scale"),value:r.range||"day",options:[{label:i('{{t("Hour")}}'),value:"hour",color:"orange"},{label:i('{{t("Quarter of day")}}'),value:"quarterDay",color:"default"},{label:i('{{t("Half of day")}}'),value:"halfDay",color:"blue"},{label:i('{{t("Day")}}'),value:"day",color:"yellow"},{label:i('{{t("Week")}}'),value:"week",color:"pule"},{label:i('{{t("Month")}}'),value:"month",color:"green"},{label:i('{{t("QuarterYear")}}'),value:"quarterYear",color:"red"},{label:i('{{t("Year")}}'),value:"year",color:"green"}],onChange:l=>{const u=o.decoratorProps.fieldNames||{};u.range=l,o.decoratorProps.params=u,t["x-decorator-props"].params=u,t["x-decorator-props"].fieldNames=u,n.refresh(),a.emit("patch",{schema:{"x-uid":t["x-uid"],"x-decorator-props":o.decoratorProps}}),a.refresh()}}}},{name:"startDateField",Component:d.SchemaSettingsSelectItem,useComponentProps(){var i;const{t:e}=ee(),t=P.useFieldSchema(),r=((i=t==null?void 0:t["x-decorator-props"])==null?void 0:i.fieldNames)||{},o=P.useField(),{dn:n}=d.useDesignable(),{service:a}=K();return{title:e("Start date field"),value:r.start,options:pe("date"),onChange:s=>{const l=o.decoratorProps.fieldNames||{};l.start=s,o.decoratorProps.fieldNames=l,t["x-decorator-props"].fieldNames=l,a.refresh(),n.emit("patch",{schema:{"x-uid":t["x-uid"],"x-decorator-props":o.decoratorProps}}),n.refresh()}}}},{name:"endDateField",Component:d.SchemaSettingsSelectItem,useComponentProps(){var i;const{t:e}=ee(),t=P.useFieldSchema(),r=P.useField(),{service:o}=K(),{dn:n}=d.useDesignable(),a=((i=t==null?void 0:t["x-decorator-props"])==null?void 0:i.fieldNames)||{};return{title:e("End date field"),value:a.end,options:pe("date"),onChange:s=>{const l=r.decoratorProps.fieldNames||{};l.end=s,r.decoratorProps.fieldNames=l,t["x-decorator-props"].fieldNames=l,o.refresh(),n.emit("patch",{schema:{"x-uid":t["x-uid"],"x-decorator-props":r.decoratorProps}}),n.refresh()}}}},{name:"processField",Component:d.SchemaSettingsSelectItem,useComponentProps(){var i;const{t:e}=ee(),t=P.useFieldSchema(),r=((i=t==null?void 0:t["x-decorator-props"])==null?void 0:i.fieldNames)||{},{service:o}=K(),{dn:n}=d.useDesignable(),a=P.useField();return{title:e("Progress field"),value:r.progress,options:pe("float"),onChange:s=>{const l=a.decoratorProps.fieldNames||{};l.progress=s,a.decoratorProps.fieldNames=l,t["x-decorator-props"].fieldNames=l,o.refresh(),n.emit("patch",{schema:{"x-uid":t["x-uid"],"x-decorator-props":a.decoratorProps}}),n.refresh()}}}},{name:"dataScope",Component:d.SchemaSettingsDataScope,useComponentProps(){var a,i;const{name:e}=d.useCollection_deprecated(),t=P.useFieldSchema(),{form:r}=d.useFormBlockContext(),o=P.useField(),{dn:n}=d.useDesignable();return{collectionName:e,defaultFilter:((i=(a=t==null?void 0:t["x-decorator-props"])==null?void 0:a.params)==null?void 0:i.filter)||{},form:r,onSubmit:({filter:s})=>{s=d.removeNullCondition(s);const l=o.decoratorProps.params||{};l.filter=s,o.decoratorProps.params=l,t["x-decorator-props"].params=l,n.emit("patch",{schema:{"x-uid":t["x-uid"],"x-decorator-props":t["x-decorator-props"]}})}}}},{name:"divider",type:"divider"},{name:"template",Component:d.SchemaSettingsTemplate,useComponentProps(){const{name:e}=d.useCollection_deprecated();return{componentName:"Gantt",collectionName:e}}},{name:"divider2",type:"divider"},{name:"remove",type:"remove",componentProps:{removeParentsIfNoChildren:!0,breakRemoveOn:{"x-component":"Grid"}}}]}),sr=new d.SchemaSettings({name:"blockSettings:gantt",items:[{name:"title",Component:d.SchemaSettingsBlockTitleItem},{name:"titleField",Component:d.SchemaSettingsSelectItem,useComponentProps(){var i;const{t:e}=ee(),t=P.useFieldSchema(),r=((i=t==null?void 0:t["x-decorator-props"])==null?void 0:i.fieldNames)||{},{service:o}=K(),n=P.useField(),{dn:a}=d.useDesignable();return{title:e("Title field"),value:r.title,options:pe("string"),onChange:s=>{const l=n.decoratorProps.fieldNames||{};l.title=s,n.decoratorProps.params=l,t["x-decorator-props"].params=l,t["x-decorator-props"].fieldNames=l,o.refresh(),a.emit("patch",{schema:{"x-uid":t["x-uid"],"x-decorator-props":n.decoratorProps}}),a.refresh()}}}},{name:"timeScale",Component:d.SchemaSettingsSelectItem,useComponentProps(){var s;const{t:e}=ee(),t=P.useFieldSchema(),r=((s=t==null?void 0:t["x-decorator-props"])==null?void 0:s.fieldNames)||{},o=P.useField(),{service:n}=K(),{dn:a}=d.useDesignable(),i=d.useCompile();return{title:e("Time scale"),value:r.range||"day",options:[{label:i('{{t("Hour")}}'),value:"hour",color:"orange"},{label:i('{{t("Quarter of day")}}'),value:"quarterDay",color:"default"},{label:i('{{t("Half of day")}}'),value:"halfDay",color:"blue"},{label:i('{{t("Day")}}'),value:"day",color:"yellow"},{label:i('{{t("Week")}}'),value:"week",color:"pule"},{label:i('{{t("Month")}}'),value:"month",color:"green"},{label:i('{{t("QuarterYear")}}'),value:"quarterYear",color:"red"},{label:i('{{t("Year")}}'),value:"year",color:"green"}],onChange:l=>{const u=o.decoratorProps.fieldNames||{};u.range=l,o.decoratorProps.params=u,t["x-decorator-props"].params=u,t["x-decorator-props"].fieldNames=u,n.refresh(),a.emit("patch",{schema:{"x-uid":t["x-uid"],"x-decorator-props":o.decoratorProps}}),a.refresh()}}}},{name:"startDateField",Component:d.SchemaSettingsSelectItem,useComponentProps(){var i;const{t:e}=ee(),t=P.useFieldSchema(),r=((i=t==null?void 0:t["x-decorator-props"])==null?void 0:i.fieldNames)||{},o=P.useField(),{dn:n}=d.useDesignable(),{service:a}=K();return{title:e("Start date field"),value:r.start,options:pe("date"),onChange:s=>{const l=o.decoratorProps.fieldNames||{};l.start=s,o.decoratorProps.fieldNames=l,t["x-decorator-props"].fieldNames=l,a.refresh(),n.emit("patch",{schema:{"x-uid":t["x-uid"],"x-decorator-props":o.decoratorProps}}),n.refresh()}}}},d.setDataLoadingModeSettingsItem,{name:"endDateField",Component:d.SchemaSettingsSelectItem,useComponentProps(){var i;const{t:e}=ee(),t=P.useFieldSchema(),r=P.useField(),{service:o}=K(),{dn:n}=d.useDesignable(),a=((i=t==null?void 0:t["x-decorator-props"])==null?void 0:i.fieldNames)||{};return{title:e("End date field"),value:a.end,options:pe("date"),onChange:s=>{const l=r.decoratorProps.fieldNames||{};l.end=s,r.decoratorProps.fieldNames=l,t["x-decorator-props"].fieldNames=l,o.refresh(),n.emit("patch",{schema:{"x-uid":t["x-uid"],"x-decorator-props":r.decoratorProps}}),n.refresh()}}}},{name:"processField",Component:d.SchemaSettingsSelectItem,useComponentProps(){var i;const{t:e}=ee(),t=P.useFieldSchema(),r=((i=t==null?void 0:t["x-decorator-props"])==null?void 0:i.fieldNames)||{},{service:o}=K(),{dn:n}=d.useDesignable(),a=P.useField();return{title:e("Progress field"),value:r.progress,options:pe("float"),onChange:s=>{const l=a.decoratorProps.fieldNames||{};l.progress=s,a.decoratorProps.fieldNames=l,t["x-decorator-props"].fieldNames=l,o.refresh(),n.emit("patch",{schema:{"x-uid":t["x-uid"],"x-decorator-props":a.decoratorProps}}),n.refresh()}}}},{name:"dataScope",Component:d.SchemaSettingsDataScope,useComponentProps(){var a,i;const{name:e}=d.useCollection(),t=P.useFieldSchema(),{form:r}=d.useFormBlockContext(),o=P.useField(),{dn:n}=d.useDesignable();return{collectionName:e,defaultFilter:((i=(a=t==null?void 0:t["x-decorator-props"])==null?void 0:a.params)==null?void 0:i.filter)||{},form:r,onSubmit:({filter:s})=>{s=d.removeNullCondition(s);const l=o.decoratorProps.params||{};l.filter=s,o.decoratorProps.params=l,t["x-decorator-props"].params=l,n.emit("patch",{schema:{"x-uid":t["x-uid"],"x-decorator-props":t["x-decorator-props"]}})}}}},{name:"divider",type:"divider"},{name:"template",Component:d.SchemaSettingsTemplate,useComponentProps(){const{name:e}=d.useCollection();return{componentName:"Gantt",collectionName:e}}},{name:"divider2",type:"divider"},{name:"remove",type:"remove",componentProps:{removeParentsIfNoChildren:!0,breakRemoveOn:{"x-component":"Grid"}}}]}),gt=new d.CompatibleSchemaInitializer({name:"GanttActionInitializers",title:"{{t('Configure actions')}}",icon:"SettingOutlined",style:{marginLeft:8},items:[{type:"itemGroup",name:"enableActions",title:"{{t('Enable actions')}}",children:[{type:"item",name:"filter",title:"{{t('Filter')}}",Component:"FilterActionInitializer",schema:{"x-align":"left"}},{type:"item",title:"{{t('Add new')}}",name:"addNew",Component:"CreateActionInitializer",schema:{"x-align":"right","x-decorator":"ACLActionProvider","x-acl-action-props":{skipScopeCheck:!0}},useVisible(){const e=d.useCollection_deprecated();return!["view","file","sql"].includes(e.template)||(e==null?void 0:e.writableView)}},{type:"item",title:"{{t('Delete')}}",name:"delete",Component:"BulkDestroyActionInitializer",schema:{"x-align":"right","x-decorator":"ACLActionProvider"},useVisible(){const e=d.useCollection_deprecated();return!["view","sql"].includes(e.template)||(e==null?void 0:e.writableView)}},{type:"item",title:"{{t('Refresh')}}",name:"refresh",Component:"RefreshActionInitializer",schema:{"x-align":"right"}},{name:"toggle",title:"{{t('Expand/Collapse')}}",Component:"ExpandableActionInitializer",schema:{"x-align":"right"},useVisible(){var o;const e=P.useFieldSchema(),t=d.useCollection_deprecated(),{treeTable:r}=((o=e==null?void 0:e.parent)==null?void 0:o["x-decorator-props"])||{};return t.tree&&r}}]},{name:"divider",type:"divider",useVisible(){const e=d.useCollection_deprecated();return!["view","sql"].includes(e.template)||(e==null?void 0:e.writableView)}},{type:"subMenu",name:"customize",title:'{{t("Customize")}}',children:[{type:"item",title:'{{t("Add record")}}',name:"addRecord",Component:"CustomizeAddRecordActionInitializer",schema:{"x-align":"right","x-decorator":"ACLActionProvider","x-acl-action":"create","x-acl-action-props":{skipScopeCheck:!0}}}],useVisible(){const e=d.useCollection_deprecated();return!["view","sql"].includes(e.template)||(e==null?void 0:e.writableView)}}]}),ir=new d.CompatibleSchemaInitializer({name:"gantt:configureActions",title:"{{t('Configure actions')}}",icon:"SettingOutlined",style:{marginLeft:8},items:[{type:"itemGroup",name:"enableActions",title:"{{t('Enable actions')}}",children:[{type:"item",name:"filter",title:"{{t('Filter')}}",Component:"FilterActionInitializer",schema:{"x-align":"left"}},{type:"item",title:"{{t('Add new')}}",name:"addNew",Component:"CreateActionInitializer",schema:{"x-align":"right","x-decorator":"ACLActionProvider","x-acl-action-props":{skipScopeCheck:!0}},useVisible(){const e=d.useCollection_deprecated();return!["view","file","sql"].includes(e.template)||(e==null?void 0:e.writableView)}},{type:"item",title:"{{t('Delete')}}",name:"delete",Component:"BulkDestroyActionInitializer",schema:{"x-align":"right","x-decorator":"ACLActionProvider"},useVisible(){const e=d.useCollection_deprecated();return!["view","sql"].includes(e.template)||(e==null?void 0:e.writableView)}},{type:"item",title:"{{t('Refresh')}}",name:"refresh",Component:"RefreshActionInitializer",schema:{"x-align":"right"}},{name:"toggle",title:"{{t('Expand/Collapse')}}",Component:"ExpandableActionInitializer",schema:{"x-align":"right"},useVisible(){var o;const e=P.useFieldSchema(),t=d.useCollection_deprecated(),{treeTable:r}=((o=e==null?void 0:e.parent)==null?void 0:o["x-decorator-props"])||{};return t.tree&&r}}]},{name:"divider",type:"divider",useVisible(){const e=d.useCollection_deprecated();return!["view","sql"].includes(e.template)||(e==null?void 0:e.writableView)}},{type:"subMenu",name:"customize",title:'{{t("Customize")}}',children:[{type:"item",title:'{{t("Add record")}}',name:"addRecord",Component:"CustomizeAddRecordActionInitializer",schema:{"x-align":"right","x-decorator":"ACLActionProvider","x-acl-action":"create","x-acl-action-props":{skipScopeCheck:!0}}}],useVisible(){const e=d.useCollection_deprecated();return!["view","sql"].includes(e.template)||(e==null?void 0:e.writableView)}}]},gt),lr=e=>{const{collectionName:t,fieldNames:r,dataSource:o}=e;return{type:"void","x-acl-action":`${t}:list`,"x-decorator":"GanttBlockProvider","x-decorator-props":{collection:t,dataSource:o,action:"list",fieldNames:r,params:{paginate:!1}},"x-toolbar":"BlockSchemaToolbar","x-settings":"blockSettings:gantt","x-component":"CardItem",properties:{[ae.uid()]:{type:"void","x-component":"Gantt","x-use-component-props":"useGanttBlockProps",properties:{toolBar:{type:"void","x-component":"ActionBar","x-component-props":{style:{marginBottom:24}},"x-initializer":"gantt:configureActions",properties:{}},table:{type:"array","x-decorator":"div","x-decorator-props":{style:{float:"left",maxWidth:"35%"}},"x-initializer":"table:configureColumns","x-component":"TableV2","x-use-component-props":"useTableBlockProps","x-component-props":{rowKey:"id",rowSelection:{type:"checkbox"},pagination:!1},properties:{actions:{type:"void",title:'{{ t("Actions") }}',"x-action-column":"actions","x-decorator":"TableV2.Column.ActionBar","x-component":"TableV2.Column","x-designer":"TableV2.ActionColumnDesigner","x-initializer":"table:configureItemActions",properties:{actions:{type:"void","x-decorator":"DndContext","x-component":"Space","x-component-props":{split:"|"}}}}}},detail:{type:"void","x-component":"Gantt.Event",properties:{drawer:{type:"void","x-component":"Action.Drawer","x-component-props":{className:"nb-action-popup"},title:'{{ t("View record") }}',properties:{tabs:{type:"void","x-component":"Tabs","x-component-props":{},"x-initializer":"popup:addTab",properties:{tab1:{type:"void",title:'{{t("Details")}}',"x-component":"Tabs.TabPane","x-designer":"Tabs.Designer","x-component-props":{},properties:{grid:{type:"void","x-component":"Grid","x-initializer":"popup:common:addBlock"}}}}}}}}}}}}}},cr=()=>{const{insert:e}=d.useSchemaInitializer(),{t}=Ce.useTranslation(),{getCollectionFields:r}=d.useCollectionManager_deprecated(),o=g.useContext(P.SchemaOptionsContext),{theme:n}=d.useGlobalTheme(),a=d.useSchemaInitializerItem();return c.jsx(d.DataBlockInitializer,be(G({},a),{componentType:"Gantt",icon:c.jsx(Qe.FormOutlined,{}),onCreateBlockSchema:s=>ne(this,[s],function*({item:i}){var C,x,F;const l=r(i.name,i.dataSource),u=(C=l==null?void 0:l.filter(p=>p.type==="string"))==null?void 0:C.map(p=>{var y;return{label:(y=p==null?void 0:p.uiSchema)==null?void 0:y.title,value:p.name}}),h=(x=l==null?void 0:l.filter(p=>p.type==="date"))==null?void 0:x.map(p=>{var y;return{label:(y=p==null?void 0:p.uiSchema)==null?void 0:y.title,value:p.name}}),v=(F=l==null?void 0:l.filter(p=>p.type==="float"))==null?void 0:F.map(p=>{var y;return{label:(y=p==null?void 0:p.uiSchema)==null?void 0:y.title,value:p.name}}),V=yield d.FormDialog(t("Create gantt block"),()=>c.jsx(d.SchemaComponentOptions,{scope:o.scope,components:G({},o.components),children:c.jsx(Fe.FormLayout,{layout:"vertical",children:c.jsx(d.SchemaComponent,{schema:{properties:{title:{title:t("Title field"),enum:u,required:!0,"x-component":"Select","x-decorator":"FormItem"},start:{title:t("Start date field"),enum:h,required:!0,default:"createdAt","x-component":"Select","x-decorator":"FormItem"},end:{title:t("End date field"),enum:h,required:!0,"x-component":"Select","x-decorator":"FormItem"},progress:{title:t("Progress field"),enum:v,"x-component":"Select","x-decorator":"FormItem"},range:{title:t("Time scale"),enum:[{label:'{{t("Hour")}}',value:"hour",color:"orange"},{label:'{{t("Quarter of day")}}',value:"quarterDay",color:"default"},{label:'{{t("Half of day")}}',value:"halfDay",color:"blue"},{label:'{{t("Day")}}',value:"day",color:"yellow"},{label:'{{t("Week")}}',value:"week",color:"pule"},{label:'{{t("Month")}}',value:"month",color:"green"},{label:'{{t("Year")}}',value:"year",color:"green"},{label:'{{t("QuarterYear")}}',value:"quarterYear",color:"red"}],default:"day","x-component":"Select","x-decorator":"FormItem"}}}})})}),n).open({initialValues:{}});e(lr({collectionName:i.name,dataSource:i.dataSource,fieldNames:G({},V)}))})}))},dr=P.observer(e=>c.jsx(c.Fragment,{children:e.children}),{displayName:"Event"}),ur=(e,t,r,o,n,a,i,s,l,u,h,v,V,C,x,F,p,y)=>{let S=e.map((T,M)=>pr(T,M,t,r,o,n,a,i,s,l,u,h,v,V,C,x,F,p,y));return S=S.map(T=>{const M=T.dependencies||[];for(let m=0;m<M.length;m++){const f=S.findIndex(b=>b.id===M[m]);f!==-1&&S[f].barChildren.push(T)}return T}),S},pr=(e,t,r,o,n,a,i,s,l,u,h,v,V,C,x,F,p,y,S)=>{let T;switch(e.type){case"milestone":T=fr(e,t,r,o,n,a,i,s,y,S);break;case"project":T=mt(e,t,r,o,n,a*.5,i,s,l,C,x,F,p);break;default:T=mt(e,t,r,o,n,a,i,s,l,u,h,v,V);break}return T},mt=(e,t,r,o,n,a,i,s,l,u,h,v,V)=>{let C,x;l?(x=bt(e.start,r,o),C=bt(e.end,r,o)):(C=Ge(e.start,r,o),x=Ge(e.end,r,o));let F=e.type;F==="task"&&x-C<s*2&&(F="smalltask",x=C>0?C+s*2:C);const[p,y]=Ae(C,x,e.progress,l),S=e.type==="project"?Re(t,n,a)+8:Re(t,n,a),T=e.type==="project"?e.hideChildren:void 0,M=G({backgroundColor:v,backgroundSelectedColor:V,progressColor:u,progressSelectedColor:h},e.styles);return be(G({},e),{typeInternal:F,x1:C,x2:x,y:S,index:t,progressX:y,progressWidth:p,barCornerRadius:i,handleWidth:s,hideChildren:T,height:a,barChildren:[],styles:M})},fr=(e,t,r,o,n,a,i,s,l,u)=>{const h=Ge(e.start,r,o),v=Re(t,n,a),V=h-a*.5,C=h+a*.5,x=a/1.414,F=G({backgroundColor:l,backgroundSelectedColor:u,progressColor:"",progressSelectedColor:""},e.styles);return be(G({},e),{end:e.start,x1:V,x2:C,y:v,index:t,progressX:0,progressWidth:0,barCornerRadius:i,handleWidth:s,typeInternal:e.type,progress:0,height:x,hideChildren:void 0,barChildren:[],styles:F})},Ge=(e,t,r)=>{var s,l,u;const o=t.findIndex(h=>(h==null?void 0:h.getTime())>=(e==null?void 0:e.getTime()))-1,a=((e==null?void 0:e.getTime())-((s=t[o])==null?void 0:s.getTime()))/(((l=t[o+1])==null?void 0:l.getTime())-((u=t[o])==null?void 0:u.getTime())),i=o*r+a*r;return isNaN(i)?0:i},bt=(e,t,r)=>{let o=Ge(e,t,r);return o+=r,isNaN(o)?0:o},Re=(e,t,r)=>{const o=e*t+(t-r)/2;return isNaN(o)?0:o},Ae=(e,t,r,o)=>{const n=(t-e)*r*.01;let a;return o?a=t-n:a=e,[n,a]},hr=(e,t)=>{if(e>=t.x2)return 100;if(e<=t.x1)return 0;{const r=t.x2-t.x1;return Math.round((e-t.x1)*100/r)}},gr=(e,t)=>{if(e>=t.x2)return 0;if(e<=t.x1)return 100;{const r=t.x2-t.x1;return Math.round((t.x2-e)*100/r)}},xt=(e,t,r)=>[e-5,t+r,e+5,t+r,e,t+r-8.66].join(","),mr=(e,t,r)=>{e>=r.x2-r.handleWidth*2&&(e=r.x2-r.handleWidth*2);const n=Math.round((e-r.x1)/t)*t;return r.x1+n},br=(e,t,r)=>{e<=r.x1+r.handleWidth*2&&(e=r.x1+r.handleWidth*2);const n=Math.round((e-r.x2)/t)*t;return r.x2+n},yt=(e,t,r)=>{const n=Math.round((e-r.x1)/t)*t,a=r.x1+n,i=a+r.x2-r.x1;return[a,i]},xe=(e,t,r,o,n)=>{var i,s;let a=new Date((e-t)/o*n+((i=r==null?void 0:r.getTime)==null?void 0:i.call(r)));return a=new Date(((s=a==null?void 0:a.getTime)==null?void 0:s.call(a))+((a==null?void 0:a.getTimezoneOffset())-(r==null?void 0:r.getTimezoneOffset()))*6e4),a},vt=(e,t,r,o,n,a,i)=>{let s;switch(r.type){case"milestone":s=yr(e,t,r,o,n,a);break;default:s=xr(e,t,r,o,n,a,i);break}return s},xr=(e,t,r,o,n,a,i)=>{const s=G({},r);let l=!1;switch(t){case"progress":if(i?s.progress=gr(e,r):s.progress=hr(e,r),l=s.progress!==r.progress,l){const[u,h]=Ae(s.x1,s.x2,s.progress,i);s.progressWidth=u,s.progressX=h}break;case"start":{const u=mr(e,o,r);if(s.x1=u,l=s.x1!==r.x1,l){i?s.end=xe(u,r.x1,r.end,o,n):s.start=xe(u,r.x1,r.start,o,n);const[h,v]=Ae(s.x1,s.x2,s.progress,i);s.progressWidth=h,s.progressX=v}break}case"end":{const u=br(e,o,r);if(s.x2=u,l=s.x2!==r.x2,l){i?s.start=xe(u,r.x2,r.start,o,n):s.end=xe(u,r.x2,r.end,o,n);const[h,v]=Ae(s.x1,s.x2,s.progress,i);s.progressWidth=h,s.progressX=v}break}case"move":{const[u,h]=yt(e-a,o,r);if(l=u!==r.x1,l){s.start=xe(u,r.x1,r.start,o,n),s.end=xe(h,r.x2,r.end,o,n),s.x1=u,s.x2=h;const[v,V]=Ae(s.x1,s.x2,s.progress,i);s.progressWidth=v,s.progressX=V}break}}return{isChanged:l,changedTask:s}},yr=(e,t,r,o,n,a)=>{const i=G({},r);let s=!1;switch(t){case"move":{const[l,u]=yt(e-a,o,r);s=l!==r.x1,s&&(i.start=xe(l,r.x1,r.start,o,n),i.end=i.start,i.x1=l,i.x2=u);break}}return{isChanged:s,changedTask:i}};var H=(e=>(e.Hour="hour",e.QuarterDay="quarterDay",e.HalfDay="halfDay",e.Day="day",e.Week="week",e.Month="month",e.QuarterYear="quarterYear",e.Year="year",e))(H||{});const St={},Oe=(e,t={})=>{const r=JSON.stringify([e,t]);let o=St[r];return o||(o=new Intl.DateTimeFormat(e,t),St[r]=o),o},z=(e,t,r)=>new Date(e.getFullYear()+(r==="year"?t:0),e.getMonth()+(r==="month"?t:0),e.getDate()+(r==="day"?t:0),e.getHours()+(r==="hour"?t:0),e.getMinutes()+(r==="minute"?t:0),e.getSeconds()+(r==="second"?t:0),e.getMilliseconds()+(r==="millisecond"?t:0)),j=(e,t)=>{const r=["millisecond","second","minute","hour","day","month","year"],o=a=>{const i=r.indexOf(t);return r.indexOf(a)<=i};return new Date(e==null?void 0:e.getFullYear(),o("year")?0:e.getMonth(),o("month")?1:e.getDate(),o("day")?0:e.getHours(),o("hour")?0:e.getMinutes(),o("minute")?0:e.getSeconds(),o("second")?0:e.getMilliseconds())},wt=(e,t,r)=>{var a,i;let o=((a=e[0])==null?void 0:a.start)||new Date,n=((i=e[0])==null?void 0:i.start)||new Date;for(const s of e)s.start<o&&(o=s.start),s.end>n&&(n=s.end);switch(t){case H.Year:o=z(o,-1,"year"),o=j(o,"year"),n=z(n,1,"year"),n=j(n,"year");break;case H.QuarterYear:o=z(o,-3,"month"),o=j(o,"month"),n=z(n,3,"year"),n=j(n,"year");break;case H.Month:o=z(o,-1*r,"month"),o=j(o,"month"),n=z(n,1,"year"),n=j(n,"year");break;case H.Week:o=j(o,"day"),o=z(vr(o),-7*r,"day"),n=j(n,"day"),n=z(n,1.5,"month");break;case H.Day:o=j(o,"day"),o=z(o,-1*r,"day"),n=j(n,"day"),n=z(n,19,"day");break;case H.QuarterDay:o=j(o,"day"),o=z(o,-1*r,"day"),n=j(n,"day"),n=z(n,66,"hour");break;case H.HalfDay:o=j(o,"day"),o=z(o,-1*r,"day"),n=j(n,"day"),n=z(n,108,"hour");break;case H.Hour:o=j(o,"hour"),o=z(o,-1*r,"hour"),n=j(n,"day"),n=z(n,1,"day");break}return[o,n]},Ct=(e,t,r)=>{let o=new Date(e);const n=[o];for(;o<t;){switch(r){case H.Year:o=z(o,1,"year");break;case H.QuarterYear:o=z(o,3,"month");break;case H.Month:o=z(o,1,"month");break;case H.Week:o=z(o,7,"day");break;case H.Day:o=z(o,1,"day");break;case H.HalfDay:o=z(o,12,"hour");break;case H.QuarterDay:o=z(o,6,"hour");break;case H.Hour:o=z(o,1,"hour");break}n.push(o)}return n},$e=(e,t)=>{let r=Oe(t,{month:"long"}).format(e);return r=r.replace(r[0],r[0].toLocaleUpperCase()),r},Tt=(e,t,r)=>{let o=Oe(t,{weekday:r}).format(e);return o=o.replace(o[0],o[0].toLocaleUpperCase()),o},vr=e=>{const t=e.getDay(),r=e.getDate()-t+(t===0?-6:1);return new Date(e.setDate(r))},Sr=e=>{const t=new Date(e.valueOf()),r=(t.getDay()+6)%7;t.setDate(t.getDate()-r+3);const o=t.valueOf();t.setMonth(0,1),t.getDay()!==4&&t.setMonth(0,1+(4-t.getDay()+7)%7);const n=(1+Math.ceil((o-t.valueOf())/6048e5)).toString();return n.length===1?`0${n}`:n},wr=(e,t)=>new Date(t,e+1,0).getDate();function Cr(e){return e.key!==void 0}function Tr(e){const t=e.filter(r=>r.hideChildren&&r.type==="project");if(t.length>0)for(let r=0;t.length>r;r++){const o=t[r],n=Nt(e,o);e=e.filter(a=>n.indexOf(a)===-1)}return e}function Nt(e,t){let r=[];t.type!=="project"?r=e.filter(n=>n.dependencies&&n.dependencies.indexOf(t.id)!==-1):r=e.filter(n=>n.project&&n.project===t.id);const o=[];return r.forEach(n=>{o.push(...Nt(e,n))}),r=r.concat(r,o),r}const Nr=(e,t)=>{const r=e.displayOrder||Number.MAX_VALUE,o=t.displayOrder||Number.MAX_VALUE;return r>o?1:r<o?-1:0},Te=e=>{var t;return isNaN((t=e==null?void 0:e.getTime)==null?void 0:t.call(e))?0:e.getFullYear()+`/${e.getMonth()+1}/`+e.getDate()},Xe=ze.createStyles(({token:e,css:t})=>({scrollWrapper:t`
|
|
2
2
|
overflow: auto;
|
|
3
3
|
position: absolute;
|
|
4
4
|
bottom: -4px;
|
|
@@ -73,7 +73,7 @@
|
|
|
73
73
|
},
|
|
74
74
|
}
|
|
75
75
|
}
|
|
76
|
-
`})),Mr=({scroll:e,svgWidth:t,taskListWidth:r,rtl:o,onScroll:n})=>{const{styles:a}=Xe(),i=g.useRef(null);return g.useEffect(()=>{i.current&&(i.current.scrollLeft=e)},[e]),c.jsx("div",{dir:"ltr",style:{margin:o?`0px ${r}px 0px 0px`:`0px 0px 0px ${r}px`},className:N.cx(a.nbGridOther,a.scrollWrapper,"gantt-horizontal-scoll"),onScroll:n,ref:i,children:c.jsx("div",{style:{width:t,height:1},className:"horizontalScroll"})})},Dr=({task:e,rowHeight:t,rtl:r,svgContainerHeight:o,svgContainerWidth:n,scrollX:a,scrollY:i,arrowIndent:s,fontSize:l,fontFamily:u,headerHeight:h,taskListWidth:v,TooltipContent:V})=>{const{styles:C}=Xe(),x=g.useRef(null),[F,p]=g.useState(0),[y,S]=g.useState(0);return g.useEffect(()=>{if(x.current){const T=x.current.offsetHeight*1.1,M=x.current.offsetWidth*1.1;let m=e.index*t-i+h,f;if(r)f=e.x1-s*1.5-M-a,f<0&&(f=e.x2+s*1.5-a),M+f>n&&(f=n-M,m+=t);else{f=e.x2+s*1.5+v-a;const B=M+f,E=v+n;B>E&&(f=e.x1+v-s*1.5-a-M),f<v&&(f=n+v-M,m+=t)}T+m-i>o-i&&(m=o-T),p(m),S(f)}},[x,e,s,a,i,h,v,t,o,n,r]),c.jsx("div",{ref:x,className:N.cx(y?C.tooltipDetailsContainer:C.tooltipDetailsContainerHidden,C.nbGridOther),style:{left:y,top:F},children:c.jsx(V,{task:e,fontSize:l,fontFamily:u})})},Pr=({task:e,fontSize:t,fontFamily:r})=>{var a,i,s,l,u,h,v,V;const{styles:o}=Xe(),n={fontSize:t,fontFamily:r};return c.jsxs("div",{className:N.cx(o.nbGridOther,o.tooltipDefaultContainer),"aria-label":"nb-gantt-tooltip",style:n,children:[c.jsxs("b",{style:{fontSize:t},children:[e.name,": ",
|
|
76
|
+
`})),Mr=({scroll:e,svgWidth:t,taskListWidth:r,rtl:o,onScroll:n})=>{const{styles:a}=Xe(),i=g.useRef(null);return g.useEffect(()=>{i.current&&(i.current.scrollLeft=e)},[e]),c.jsx("div",{dir:"ltr",style:{margin:o?`0px ${r}px 0px 0px`:`0px 0px 0px ${r}px`},className:N.cx(a.nbGridOther,a.scrollWrapper,"gantt-horizontal-scoll"),onScroll:n,ref:i,children:c.jsx("div",{style:{width:t,height:1},className:"horizontalScroll"})})},Dr=({task:e,rowHeight:t,rtl:r,svgContainerHeight:o,svgContainerWidth:n,scrollX:a,scrollY:i,arrowIndent:s,fontSize:l,fontFamily:u,headerHeight:h,taskListWidth:v,TooltipContent:V})=>{const{styles:C}=Xe(),x=g.useRef(null),[F,p]=g.useState(0),[y,S]=g.useState(0);return g.useEffect(()=>{if(x.current){const T=x.current.offsetHeight*1.1,M=x.current.offsetWidth*1.1;let m=e.index*t-i+h,f;if(r)f=e.x1-s*1.5-M-a,f<0&&(f=e.x2+s*1.5-a),M+f>n&&(f=n-M,m+=t);else{f=e.x2+s*1.5+v-a;const B=M+f,E=v+n;B>E&&(f=e.x1+v-s*1.5-a-M),f<v&&(f=n+v-M,m+=t)}T+m-i>o-i&&(m=o-T),p(m),S(f)}},[x,e,s,a,i,h,v,t,o,n,r]),c.jsx("div",{ref:x,className:N.cx(y?C.tooltipDetailsContainer:C.tooltipDetailsContainerHidden,C.nbGridOther),style:{left:y,top:F},children:c.jsx(V,{task:e,fontSize:l,fontFamily:u})})},Pr=({task:e,fontSize:t,fontFamily:r})=>{var a,i,s,l,u,h,v,V;const{styles:o}=Xe(),n={fontSize:t,fontFamily:r};return c.jsxs("div",{className:N.cx(o.nbGridOther,o.tooltipDefaultContainer),"aria-label":"nb-gantt-tooltip",style:n,children:[c.jsxs("b",{style:{fontSize:t},children:[e.name,": ",Te(e.start)," ~ ",Te(e.end)]}),((i=(a=e.end)==null?void 0:a.getTime)==null?void 0:i.call(a))-((l=(s=e.start)==null?void 0:s.getTime)==null?void 0:l.call(s))!==0&&c.jsx("p",{className:"tooltipDefaultContainerParagraph",children:`Duration: ${Math.round((((h=(u=e.end)==null?void 0:u.getTime)==null?void 0:h.call(u))-((V=(v=e.start)==null?void 0:v.getTime)==null?void 0:V.call(v)))/(1e3*60*60*24)*10)/10||""} day(s)`}),c.jsx("p",{className:"tooltipDefaultContainerParagraph",children:!!e.progress&&`Progress: ${e.progress}%`})]})},Br=({scroll:e,ganttHeight:t,ganttFullHeight:r,headerHeight:o,rtl:n,onScroll:a})=>{const{styles:i}=Xe(),s=g.useRef(null);return g.useEffect(()=>{s.current&&(s.current.scrollTop=e)},[e]),c.jsx("div",{style:{maxHeight:t,marginTop:o,marginLeft:n?"":"-1rem"},className:N.cx(i.nbGridOther,"verticalScroll"),onScroll:a,ref:s,children:c.jsx("div",{style:{height:r,width:1}})})},Mt=d.createStyles(({token:e,css:t})=>({ganttverticalcontainer:t`
|
|
77
77
|
overflow: hidden;
|
|
78
78
|
font-size: 0;
|
|
79
79
|
margin: 0;
|
|
@@ -234,11 +234,11 @@
|
|
|
234
234
|
pointerEvents: none,
|
|
235
235
|
},
|
|
236
236
|
}
|
|
237
|
-
}`})),lo=e=>{const{styles:t}=io(),{task:r,arrowIndent:o,isDelete:n,taskHeight:a,isSelected:i,rtl:s,onEventStart:l}=G({},e),u=g.useRef(null),[h,v]=g.useState(c.jsx("div",{})),[V,C]=g.useState(!0),x=r.typeInternal==="project";g.useEffect(()=>{switch(r.typeInternal){case"milestone":v(c.jsx(oo,G({},e)));break;case"project":v(c.jsx(so,G({},e)));break;case"smalltask":v(c.jsx(eo,G({},e)));break;default:v(c.jsx(Rr,G({},e)));break}},[r,i]),g.useEffect(()=>{u.current&&C(u.current.getBBox().width<r.x2-r.x1)},[u,r]);const F=()=>{const p=r.x2-r.x1,y=r.barChildren.length>0;return V?r.x1+p*.5:s&&u.current?r.x1-u.current.getBBox().width-o*+y-o*.2:r.x1+p+o*+y+o*.2};return c.jsxs("g",{className:N.cx(t.nbganttTaskitem),onKeyDown:p=>{switch(p.key){case"Delete":{n&&l("delete",r,p);break}}p.stopPropagation()},onMouseEnter:p=>{l("mouseenter",r,p)},onMouseLeave:p=>{l("mouseleave",r,p)},onDoubleClick:p=>{l("dblclick",r,p)},onClick:p=>{l("click",r,p)},onFocus:()=>{l("select",r)},children:[h,c.jsx("text",{x:x?r.x1:F(),y:x?r.y-8:V?r.y+a*.5:r.y+a*.65,className:x?N.cx("projectLabel"):V?N.cx("barLabel"):N.cx("barLabelOutside"),ref:u,children:x&&Ce(r.start)&&Ce(r.end)?`${r.name}: ${Ce(r.start)} ~ ${Ce(r.end)}`:r.name})]})};let nt=null,Ve=null;const co=({tasks:e,dates:t,ganttEvent:r,selectedTask:o,rowHeight:n,columnWidth:a,timeStep:i,svg:s,taskHeight:l,arrowColor:u,arrowIndent:h,fontFamily:v,fontSize:V,rtl:C,setGanttEvent:x,setFailedTask:F,setSelectedTask:p,onDateChange:y,onProgressChange:S,onDoubleClick:T,onClick:M,onDelete:m})=>{var te;const f=(te=s==null?void 0:s.current)==null?void 0:te.createSVGPoint(),[b,B]=g.useState(0),[E,W]=g.useState(0),[ie,he]=g.useState(!1);g.useEffect(()=>{var X,q,O,_;const A=((X=t[1])==null?void 0:X.getTime())-((q=t[0])==null?void 0:q.getTime())-((O=t[1])==null?void 0:O.getTimezoneOffset())*60*1e3+((_=t[0])==null?void 0:_.getTimezoneOffset())*60*1e3,k=i*a/A;B(k)},[a,t,i]),g.useEffect(()=>{const A=X=>ne(this,null,function*(){var ge;if(!r.changedTask||!f||!(s!=null&&s.current))return;X.preventDefault(),f.x=X.clientX;const q=f.matrixTransform((ge=s==null?void 0:s.current.getScreenCTM())==null?void 0:ge.inverse()),{isChanged:O,changedTask:_}=vt(q.x,r.action,r.changedTask,b,i,E,C);O&&x({action:r.action,changedTask:_})}),k=X=>ne(this,null,function*(){var Ie;const{action:q,originalSelectedTask:O,changedTask:_}=r;if(!_||!f||!(s!=null&&s.current)||!O)return;X.preventDefault(),f.x=X.clientX;const ge=f.matrixTransform((Ie=s==null?void 0:s.current.getScreenCTM())==null?void 0:Ie.inverse()),{changedTask:J}=vt(ge.x,q,_,b,i,E,C),Me=O.start!==J.start||O.end!==J.end||O.progress!==J.progress;s.current.removeEventListener("mousemove",A),s.current.removeEventListener("mouseup",k),x({action:""}),he(!1);let Se=!0;if((q==="move"||q==="end"||q==="start")&&y&&Me)try{const le=yield y(J,J.barChildren);le!==void 0&&(Se=le)}catch(le){Se=!1}else if(S&&Me)try{const le=yield S(J,J.barChildren);le!==void 0&&(Se=le)}catch(le){Se=!1}Se||F(O)});!ie&&(r.action==="move"||r.action==="end"||r.action==="start"||r.action==="progress")&&(s!=null&&s.current)&&(s.current.addEventListener("mousemove",A),s.current.addEventListener("mouseup",k),he(!0))},[r,b,E,S,i,y,s,ie,f,C,F,x]);const Ne=(A,k,X)=>ne(this,null,function*(){var q;if(!X)A==="select"&&p(k.id);else if(Cr(X)){if(A==="delete"&&m)try{const O=yield m(k);O!==void 0&&O&&x({action:A,changedTask:k})}catch(O){console.error("Error on Delete. "+O)}}else if(A==="mouseenter")r.action||x({action:A,changedTask:k,originalSelectedTask:k});else if(A==="mouseleave")r.action==="mouseenter"&&setTimeout(()=>{x({action:""})},300);else if(A==="dblclick")T&&T(k);else if(A==="click")M&&M(k);else if(A==="move"){if(!(s!=null&&s.current)||!f)return;f.x=X.clientX;const O=f.matrixTransform((q=s.current.getScreenCTM())==null?void 0:q.inverse());W(O.x-k.x1),x({action:A,changedTask:k,originalSelectedTask:k})}else x({action:A,changedTask:k,originalSelectedTask:k})}),at=(A,k,X)=>{["click"].includes(A)?(!["start","end","progress"].includes(nt)&&(!Ve||Ve===k.start)&&Ne(A,k,X),nt=null,Ve=null):["move","select"].includes(A)?(Ve=k.start,Ne(A,k,X)):(Ve=k.start,nt=A,Ne(A,k,X))};return c.jsxs("g",{className:"content",children:[c.jsx("g",{className:"arrows",fill:u,stroke:u,children:e.map(A=>A.barChildren.map(k=>c.jsx(Qr,{taskFrom:A,taskTo:e[k.index],rowHeight:n,taskHeight:l,arrowIndent:h,rtl:C},`Arrow from ${A.id} to ${e[k.index].id}`)))}),c.jsx("g",{className:"bar",fontFamily:v,fontSize:V,children:e.map(A=>c.jsx(lo,{task:A,arrowIndent:h,taskHeight:l,isProgressChangeable:!!S&&!A.isDisabled,isDateChangeable:!!y&&!A.isDisabled,isDelete:!A.isDisabled,onEventStart:at,isSelected:!!o&&A.id===o.id,rtl:C},A.id))})]})},Et=g.forwardRef(({gridProps:e,calendarProps:t,barProps:r,ganttHeight:o,scrollY:n,scrollX:a},i)=>{const s=g.useRef(null),l=g.useRef(null),u=be(G({},r),{svg:s}),{styles:h}=Mt();return g.useEffect(()=>{l.current&&(l.current.scrollTop=n)},[n]),g.useEffect(()=>{i.current&&(i.current.scrollLeft=a)},[a]),c.jsxs("div",{className:h.ganttverticalcontainer,ref:i,dir:"ltr",children:[c.jsx("svg",{xmlns:"http://www.w3.org/2000/svg",width:e.svgWidth,height:t.headerHeight,fontFamily:r.fontFamily,className:"ganttHeader",children:c.jsx(jr,G({},t))}),c.jsx("div",{ref:l,className:h.horizontalcontainer,style:o?{maxHeight:o,width:e.svgWidth}:{width:e.svgWidth},children:c.jsxs("svg",{xmlns:"http://www.w3.org/2000/svg",width:e.svgWidth,height:r.rowHeight*(r.tasks.length||3),fontFamily:r.fontFamily,ref:s,className:"ganttBody",children:[c.jsx(Wr,G({},e)),c.jsx(co,G({},u))]})})]})});Et.displayName="TaskGantt";const uo=(e,t)=>t/e>50?Math.floor(t/e)+20:50,po=g.createContext({close:()=>{}}),fo=e=>{const{visible:t,setVisible:r,record:o}=e,n=d.useCollectionParentRecordData(),i=P.useFieldSchema().properties.detail,s=g.useCallback(()=>{r(!1)},[]);return i&&c.jsx(po.Provider,{value:{close:s},children:c.jsx(d.ActionContextProvider,{value:{visible:t,setVisible:r},children:c.jsx(d.RecordProvider,{record:o,parent:n,children:c.jsx(P.RecursionField,{schema:i,name:i.name})})})})},ho=ft.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}}),pt.message.success(n("Saved successfully")),yield o==null?void 0:o.refresh()}),300),go=ft.debounce((e,t,r,o,n)=>ne(this,null,function*(){yield t.update({filterByTk:e.id,values:{[r.progress]:e.progress/100}}),pt.message.success(n("Saved successfully")),yield o==null?void 0:o.refresh()}),300),Te=d.withDynamicSchemaProps(e=>{var Kt,Jt,Zt;const{styles:t}=Mt(),{token:r}=d.useToken(),a=d.useAPIClient().auth.getOption("theme")==="compact"?45:55.56,{headerHeight:i=((Kt=document.querySelector(".ant-table-thead"))==null?void 0:Kt.clientHeight)||0,listCellWidth:s="155px",rowHeight:l=a,ganttHeight:u=0,preStepsCount:h=1,barFill:v=60,barCornerRadius:V=r.borderRadiusXS,barProgressColor:C=r.colorPrimary,barProgressSelectedColor:x=r.colorPrimary,barBackgroundColor:F=r.colorPrimary,barBackgroundSelectedColor:p=r.colorPrimary,projectProgressColor:y=r.colorPrimary,projectProgressSelectedColor:S=r.colorPrimary,projectBackgroundColor:T=r.colorPrimary,projectBackgroundSelectedColor:M=r.colorPrimary,milestoneBackgroundColor:m="#f1c453",milestoneBackgroundSelectedColor:f="#f29e4c",rtl:b=!1,handleWidth:B=8,timeStep:E=3e5,arrowColor:W="grey",fontFamily:ie="-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:he=r.fontSize,arrowIndent:Ne=20,todayColor:at="rgba(252, 248, 227, 0.5)",viewDate:te,TooltipContent:A=Pr,onDoubleClick:k,onDelete:X,onSelect:q,onExpanderClick:O,tasks:_,expandAndCollapseAll:ge,fieldNames:J}=d.useProps(e),Me=K(),Se=d.useCurrentAppInfo(),{t:Ie}=Be.useTranslation(),le=(Jt=Se.data)==null?void 0:Jt.lang,st=d.useTableBlockContext(),{resource:zt,service:Le}=d.useBlockRequestContext(),Gt=P.useFieldSchema(),re=J.range||"day",we=g.useRef(null),it=g.useRef(null),Ot=g.useRef(null),[ce,mo]=g.useState(()=>{const[w,L]=wt(_,re,h);return{viewMode:re,dates:Ct(w,L,re)}}),[bo,Xt]=g.useState(!1),[xo,yo]=g.useState({}),[Ee,Yt]=g.useState(void 0),[qe,jt]=g.useState(0),[vo,So]=g.useState(0),[wo,qt]=g.useState(u),[oe,_e]=g.useState([]),[ke,_t]=g.useState({action:""}),lt=g.useMemo(()=>l*v/100,[l,v]),[ct,Co]=g.useState(),[Ue,Ut]=g.useState(null),[me,dt]=g.useState(0),[de,He]=g.useState(-1),[Wt,De]=g.useState(!1),R=uo(ce.dates.length,(Zt=Ot.current)==null?void 0:Zt.clientWidth),ue=ce.dates.length*R,Pe=oe.length*l,{expandFlag:Qt}=st,[To,No]=g.useState([]);g.useEffect(()=>{st.field.onExpandClick=Fo,st.field.onRowSelect=Ao},[]),g.useEffect(()=>{ge==null||ge(!Qt)},[Qt]),g.useEffect(()=>{let w;O?w=Tr(_):w=_,w=w.sort(Nr);const[L,D]=wt(w,re,h);let $=Ct(L,D,re);b&&($=$.reverse(),de===-1&&He($.length*R)),mo({dates:$,viewMode:re}),_e(ur(w,$,R,l,lt,V,B,b,C,x,F,p,y,S,T,M,m,f))},[_,re,h,l,V,R,lt,B,C,x,F,p,y,S,T,M,m,f,b,de]),g.useEffect(()=>{if(re===ce.viewMode&&(te&&!Ee||te&&(Ee==null?void 0:Ee.valueOf())!==te.valueOf())){const w=ce.dates,L=w.findIndex((D,$)=>te.valueOf()>=D.valueOf()&&$+1!==w.length&&te.valueOf()<w[$+1].valueOf());if(L===-1)return;Yt(te),He(R*L)}},[te,R,ce.dates,ce.viewMode,re,Ee,Yt]),g.useEffect(()=>{const{changedTask:w,action:L}=ke;if(w){if(L==="delete")_t({action:""}),_e(oe.filter(D=>D.id!==w.id));else if(L==="move"||L==="end"||L==="start"||L==="progress"){const D=oe.find($=>$.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 $=oe.map(Q=>Q.id===w.id?w:Q);_e($)}}}},[ke,oe]),g.useEffect(()=>{Ue&&(_e(oe.map(w=>w.id!==Ue.id?w:Ue)),Ut(null))},[Ue,oe]),g.useEffect(()=>{s||jt(0),it.current&&jt(it.current.offsetWidth)},[it,s]),g.useEffect(()=>{we.current&&So(we.current.offsetWidth-qe)},[we,qe]),g.useEffect(()=>{qt(u?u+i:_.length*l+i)},[u,_,i,l]),g.useEffect(()=>{var L;const w=D=>{if(D.shiftKey||D.deltaX){const $=D.deltaX?D.deltaX:D.deltaY;let Q=de+$;Q<0?Q=0:Q>ue&&(Q=ue),He(Q),D.preventDefault()}else if(u){let $=me+D.deltaY;$<0?$=0:$>Pe-u&&($=Pe-u),$!==me&&(dt($),D.preventDefault())}De(!0)};return(L=we.current)==null||L.addEventListener("wheel",w,{passive:!1}),()=>{var D;(D=we.current)==null||D.removeEventListener("wheel",w)}},[we,me,de,u,ue,b,Pe]);const Mo=w=>{me!==w.currentTarget.scrollTop&&!Wt?(dt(w.currentTarget.scrollTop),De(!0)):De(!1)},Do=w=>{de!==w.currentTarget.scrollLeft&&!Wt?(He(w.currentTarget.scrollLeft),De(!0)):De(!1)},Po=w=>{w.preventDefault();let L=me,D=de,$=!0;switch(w.key){case"Down":case"ArrowDown":L+=l,$=!1;break;case"Up":case"ArrowUp":L-=l,$=!1;break;case"Left":case"ArrowLeft":D-=R;break;case"Right":case"ArrowRight":D+=R;break}$?(D<0?D=0:D>ue&&(D=ue),He(D)):(L<0?L=0:L>Pe-u&&(L=Pe-u),dt(L)),De(!0)},Bo=w=>{const L=oe.find($=>$.id===w),D=oe.find($=>!!ct&&$.id===ct.id);q&&(D&&q(D,!1),L&&q(L,!0)),Co(L)},Fo=(w,L)=>{var $;const D=($=Me==null?void 0:Me.field)==null?void 0:$.data.find(Q=>Q.id===L.id+"");O&&L.children.length&&O(be(G({},D),{hideChildren:!w}))},Ao=w=>{No(w)},$o=w=>ne(this,null,function*(){go(w,zt,J,Le,Ie)}),Vo=w=>ne(this,null,function*(){ho(w,zt,J,Le,Ie)}),Io=w=>{var Q;const L=ut=>ut.reduce((Rt,We)=>We.children?Rt.concat([We,...L(We.children)]):Rt.concat(We),[]),D=L((Q=Le==null?void 0:Le.data)==null?void 0:Q.data),$=D==null?void 0:D.find(ut=>ut.id===+w.id);$&&(yo($),Xt(!0))},Lo={columnWidth:R,svgWidth:ue,tasks:_,rowHeight:l,dates:ce.dates,todayColor:at,rtl:b,selectedRowKeys:To},Eo={dateSetup:ce,locale:le,viewMode:re,headerHeight:i,columnWidth:R,fontFamily:ie,fontSize:he,rtl:b},ko={tasks:oe,dates:ce.dates,ganttEvent:ke,selectedTask:ct,rowHeight:l,taskHeight:lt,columnWidth:R,arrowColor:W,timeStep:E,fontFamily:ie,fontSize:he,arrowIndent:Ne,svgWidth:ue,rtl:b,setGanttEvent:_t,setFailedTask:Ut,setSelectedTask:Bo,onDateChange:Vo,onProgressChange:J.progress&&$o,onDoubleClick:k,onClick:Io,onDelete:X};return c.jsxs("div",{className:N.cx(N.css`
|
|
237
|
+
}`})),lo=e=>{const{styles:t}=io(),{task:r,arrowIndent:o,isDelete:n,taskHeight:a,isSelected:i,rtl:s,onEventStart:l}=G({},e),u=g.useRef(null),[h,v]=g.useState(c.jsx("div",{})),[V,C]=g.useState(!0),x=r.typeInternal==="project";g.useEffect(()=>{switch(r.typeInternal){case"milestone":v(c.jsx(oo,G({},e)));break;case"project":v(c.jsx(so,G({},e)));break;case"smalltask":v(c.jsx(eo,G({},e)));break;default:v(c.jsx(Rr,G({},e)));break}},[r,i]),g.useEffect(()=>{u.current&&C(u.current.getBBox().width<r.x2-r.x1)},[u,r]);const F=()=>{const p=r.x2-r.x1,y=r.barChildren.length>0;return V?r.x1+p*.5:s&&u.current?r.x1-u.current.getBBox().width-o*+y-o*.2:r.x1+p+o*+y+o*.2};return c.jsxs("g",{className:N.cx(t.nbganttTaskitem),onKeyDown:p=>{switch(p.key){case"Delete":{n&&l("delete",r,p);break}}p.stopPropagation()},onMouseEnter:p=>{l("mouseenter",r,p)},onMouseLeave:p=>{l("mouseleave",r,p)},onDoubleClick:p=>{l("dblclick",r,p)},onClick:p=>{l("click",r,p)},onFocus:()=>{l("select",r)},children:[h,c.jsx("text",{x:x?r.x1:F(),y:x?r.y-8:V?r.y+a*.5:r.y+a*.65,className:x?N.cx("projectLabel"):V?N.cx("barLabel"):N.cx("barLabelOutside"),ref:u,children:x&&Te(r.start)&&Te(r.end)?`${r.name}: ${Te(r.start)} ~ ${Te(r.end)}`:r.name})]})};let nt=null,Ve=null;const co=({tasks:e,dates:t,ganttEvent:r,selectedTask:o,rowHeight:n,columnWidth:a,timeStep:i,svg:s,taskHeight:l,arrowColor:u,arrowIndent:h,fontFamily:v,fontSize:V,rtl:C,setGanttEvent:x,setFailedTask:F,setSelectedTask:p,onDateChange:y,onProgressChange:S,onDoubleClick:T,onClick:M,onDelete:m})=>{var te;const f=(te=s==null?void 0:s.current)==null?void 0:te.createSVGPoint(),[b,B]=g.useState(0),[E,W]=g.useState(0),[ie,he]=g.useState(!1);g.useEffect(()=>{var X,q,O,_;const A=((X=t[1])==null?void 0:X.getTime())-((q=t[0])==null?void 0:q.getTime())-((O=t[1])==null?void 0:O.getTimezoneOffset())*60*1e3+((_=t[0])==null?void 0:_.getTimezoneOffset())*60*1e3,k=i*a/A;B(k)},[a,t,i]),g.useEffect(()=>{const A=X=>ne(this,null,function*(){var ge;if(!r.changedTask||!f||!(s!=null&&s.current))return;X.preventDefault(),f.x=X.clientX;const q=f.matrixTransform((ge=s==null?void 0:s.current.getScreenCTM())==null?void 0:ge.inverse()),{isChanged:O,changedTask:_}=vt(q.x,r.action,r.changedTask,b,i,E,C);O&&x({action:r.action,changedTask:_})}),k=X=>ne(this,null,function*(){var Ie;const{action:q,originalSelectedTask:O,changedTask:_}=r;if(!_||!f||!(s!=null&&s.current)||!O)return;X.preventDefault(),f.x=X.clientX;const ge=f.matrixTransform((Ie=s==null?void 0:s.current.getScreenCTM())==null?void 0:Ie.inverse()),{changedTask:J}=vt(ge.x,q,_,b,i,E,C),De=O.start!==J.start||O.end!==J.end||O.progress!==J.progress;s.current.removeEventListener("mousemove",A),s.current.removeEventListener("mouseup",k),x({action:""}),he(!1);let Se=!0;if((q==="move"||q==="end"||q==="start")&&y&&De)try{const le=yield y(J,J.barChildren);le!==void 0&&(Se=le)}catch(le){Se=!1}else if(S&&De)try{const le=yield S(J,J.barChildren);le!==void 0&&(Se=le)}catch(le){Se=!1}Se||F(O)});!ie&&(r.action==="move"||r.action==="end"||r.action==="start"||r.action==="progress")&&(s!=null&&s.current)&&(s.current.addEventListener("mousemove",A),s.current.addEventListener("mouseup",k),he(!0))},[r,b,E,S,i,y,s,ie,f,C,F,x]);const Me=(A,k,X)=>ne(this,null,function*(){var q;if(!X)A==="select"&&p(k.id);else if(Cr(X)){if(A==="delete"&&m)try{const O=yield m(k);O!==void 0&&O&&x({action:A,changedTask:k})}catch(O){console.error("Error on Delete. "+O)}}else if(A==="mouseenter")r.action||x({action:A,changedTask:k,originalSelectedTask:k});else if(A==="mouseleave")r.action==="mouseenter"&&setTimeout(()=>{x({action:""})},300);else if(A==="dblclick")T&&T(k);else if(A==="click")M&&M(k);else if(A==="move"){if(!(s!=null&&s.current)||!f)return;f.x=X.clientX;const O=f.matrixTransform((q=s.current.getScreenCTM())==null?void 0:q.inverse());W(O.x-k.x1),x({action:A,changedTask:k,originalSelectedTask:k})}else x({action:A,changedTask:k,originalSelectedTask:k})}),at=(A,k,X)=>{["click"].includes(A)?(!["start","end","progress"].includes(nt)&&(!Ve||Ve===k.start)&&Me(A,k,X),nt=null,Ve=null):["move","select"].includes(A)?(Ve=k.start,Me(A,k,X)):(Ve=k.start,nt=A,Me(A,k,X))};return c.jsxs("g",{className:"content",children:[c.jsx("g",{className:"arrows",fill:u,stroke:u,children:e.map(A=>A.barChildren.map(k=>c.jsx(Qr,{taskFrom:A,taskTo:e[k.index],rowHeight:n,taskHeight:l,arrowIndent:h,rtl:C},`Arrow from ${A.id} to ${e[k.index].id}`)))}),c.jsx("g",{className:"bar",fontFamily:v,fontSize:V,children:e.map(A=>c.jsx(lo,{task:A,arrowIndent:h,taskHeight:l,isProgressChangeable:!!S&&!A.isDisabled,isDateChangeable:!!y&&!A.isDisabled,isDelete:!A.isDisabled,onEventStart:at,isSelected:!!o&&A.id===o.id,rtl:C},A.id))})]})},Et=g.forwardRef(({gridProps:e,calendarProps:t,barProps:r,ganttHeight:o,scrollY:n,scrollX:a},i)=>{const s=g.useRef(null),l=g.useRef(null),u=be(G({},r),{svg:s}),{styles:h}=Mt();return g.useEffect(()=>{l.current&&(l.current.scrollTop=n)},[n]),g.useEffect(()=>{i.current&&(i.current.scrollLeft=a)},[a]),c.jsxs("div",{className:h.ganttverticalcontainer,ref:i,dir:"ltr",children:[c.jsx("svg",{xmlns:"http://www.w3.org/2000/svg",width:e.svgWidth,height:t.headerHeight,fontFamily:r.fontFamily,className:"ganttHeader",children:c.jsx(jr,G({},t))}),c.jsx("div",{ref:l,className:h.horizontalcontainer,style:o?{maxHeight:o,width:e.svgWidth}:{width:e.svgWidth},children:c.jsxs("svg",{xmlns:"http://www.w3.org/2000/svg",width:e.svgWidth,height:r.rowHeight*(r.tasks.length||3),fontFamily:r.fontFamily,ref:s,className:"ganttBody",children:[c.jsx(Wr,G({},e)),c.jsx(co,G({},u))]})})]})});Et.displayName="TaskGantt";const uo=(e,t)=>t/e>50?Math.floor(t/e)+20:50,po=g.createContext({close:()=>{}}),fo=e=>{const{visible:t,setVisible:r,record:o}=e,{t:n}=Ce.useTranslation(),a=d.useCollection(),i=d.useCollectionParentRecordData(),l=P.useFieldSchema().properties.detail,u=g.useCallback(()=>{r(!1)},[]);return l&&c.jsx(po.Provider,{value:{close:u},children:c.jsx(d.ActionContextProvider,{value:{visible:t,setVisible:r},children:c.jsx(d.RecordProvider,{record:o,parent:i,children:c.jsx(d.DeclareVariable,{name:"$nPopupRecord",title:n("Current popup record"),value:o,collection:a,children:c.jsx(P.RecursionField,{schema:l,name:l.name})})})})})},ho=ft.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}}),pt.message.success(n("Saved successfully")),yield o==null?void 0:o.refresh()}),300),go=ft.debounce((e,t,r,o,n)=>ne(this,null,function*(){yield t.update({filterByTk:e.id,values:{[r.progress]:e.progress/100}}),pt.message.success(n("Saved successfully")),yield o==null?void 0:o.refresh()}),300),Ne=d.withDynamicSchemaProps(e=>{var Kt,Jt,Zt;const{styles:t}=Mt(),{token:r}=d.useToken(),a=d.useAPIClient().auth.getOption("theme")==="compact"?45:55.56,{headerHeight:i=((Kt=document.querySelector(".ant-table-thead"))==null?void 0:Kt.clientHeight)||0,listCellWidth:s="155px",rowHeight:l=a,ganttHeight:u=0,preStepsCount:h=1,barFill:v=60,barCornerRadius:V=r.borderRadiusXS,barProgressColor:C=r.colorPrimary,barProgressSelectedColor:x=r.colorPrimary,barBackgroundColor:F=r.colorPrimary,barBackgroundSelectedColor:p=r.colorPrimary,projectProgressColor:y=r.colorPrimary,projectProgressSelectedColor:S=r.colorPrimary,projectBackgroundColor:T=r.colorPrimary,projectBackgroundSelectedColor:M=r.colorPrimary,milestoneBackgroundColor:m="#f1c453",milestoneBackgroundSelectedColor:f="#f29e4c",rtl:b=!1,handleWidth:B=8,timeStep:E=3e5,arrowColor:W="grey",fontFamily:ie="-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:he=r.fontSize,arrowIndent:Me=20,todayColor:at="rgba(252, 248, 227, 0.5)",viewDate:te,TooltipContent:A=Pr,onDoubleClick:k,onDelete:X,onSelect:q,onExpanderClick:O,tasks:_,expandAndCollapseAll:ge,fieldNames:J}=d.useProps(e),De=K(),Se=d.useCurrentAppInfo(),{t:Ie}=Ce.useTranslation(),le=(Jt=Se.data)==null?void 0:Jt.lang,st=d.useTableBlockContext(),{resource:zt,service:Le}=d.useBlockRequestContext(),Gt=P.useFieldSchema(),re=J.range||"day",we=g.useRef(null),it=g.useRef(null),Ot=g.useRef(null),[ce,mo]=g.useState(()=>{const[w,L]=wt(_,re,h);return{viewMode:re,dates:Ct(w,L,re)}}),[bo,Xt]=g.useState(!1),[xo,yo]=g.useState({}),[Ee,Yt]=g.useState(void 0),[qe,jt]=g.useState(0),[vo,So]=g.useState(0),[wo,qt]=g.useState(u),[oe,_e]=g.useState([]),[ke,_t]=g.useState({action:""}),lt=g.useMemo(()=>l*v/100,[l,v]),[ct,Co]=g.useState(),[Ue,Ut]=g.useState(null),[me,dt]=g.useState(0),[de,He]=g.useState(-1),[Wt,Pe]=g.useState(!1),R=uo(ce.dates.length,(Zt=Ot.current)==null?void 0:Zt.clientWidth),ue=ce.dates.length*R,Be=oe.length*l,{expandFlag:Qt}=st,[To,No]=g.useState([]);g.useEffect(()=>{st.field.onExpandClick=Fo,st.field.onRowSelect=Ao},[]),g.useEffect(()=>{ge==null||ge(!Qt)},[Qt]),g.useEffect(()=>{let w;O?w=Tr(_):w=_,w=w.sort(Nr);const[L,D]=wt(w,re,h);let $=Ct(L,D,re);b&&($=$.reverse(),de===-1&&He($.length*R)),mo({dates:$,viewMode:re}),_e(ur(w,$,R,l,lt,V,B,b,C,x,F,p,y,S,T,M,m,f))},[_,re,h,l,V,R,lt,B,C,x,F,p,y,S,T,M,m,f,b,de]),g.useEffect(()=>{if(re===ce.viewMode&&(te&&!Ee||te&&(Ee==null?void 0:Ee.valueOf())!==te.valueOf())){const w=ce.dates,L=w.findIndex((D,$)=>te.valueOf()>=D.valueOf()&&$+1!==w.length&&te.valueOf()<w[$+1].valueOf());if(L===-1)return;Yt(te),He(R*L)}},[te,R,ce.dates,ce.viewMode,re,Ee,Yt]),g.useEffect(()=>{const{changedTask:w,action:L}=ke;if(w){if(L==="delete")_t({action:""}),_e(oe.filter(D=>D.id!==w.id));else if(L==="move"||L==="end"||L==="start"||L==="progress"){const D=oe.find($=>$.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 $=oe.map(Q=>Q.id===w.id?w:Q);_e($)}}}},[ke,oe]),g.useEffect(()=>{Ue&&(_e(oe.map(w=>w.id!==Ue.id?w:Ue)),Ut(null))},[Ue,oe]),g.useEffect(()=>{s||jt(0),it.current&&jt(it.current.offsetWidth)},[it,s]),g.useEffect(()=>{we.current&&So(we.current.offsetWidth-qe)},[we,qe]),g.useEffect(()=>{qt(u?u+i:_.length*l+i)},[u,_,i,l]),g.useEffect(()=>{var L;const w=D=>{if(D.shiftKey||D.deltaX){const $=D.deltaX?D.deltaX:D.deltaY;let Q=de+$;Q<0?Q=0:Q>ue&&(Q=ue),He(Q),D.preventDefault()}else if(u){let $=me+D.deltaY;$<0?$=0:$>Be-u&&($=Be-u),$!==me&&(dt($),D.preventDefault())}Pe(!0)};return(L=we.current)==null||L.addEventListener("wheel",w,{passive:!1}),()=>{var D;(D=we.current)==null||D.removeEventListener("wheel",w)}},[we,me,de,u,ue,b,Be]);const Mo=w=>{me!==w.currentTarget.scrollTop&&!Wt?(dt(w.currentTarget.scrollTop),Pe(!0)):Pe(!1)},Do=w=>{de!==w.currentTarget.scrollLeft&&!Wt?(He(w.currentTarget.scrollLeft),Pe(!0)):Pe(!1)},Po=w=>{w.preventDefault();let L=me,D=de,$=!0;switch(w.key){case"Down":case"ArrowDown":L+=l,$=!1;break;case"Up":case"ArrowUp":L-=l,$=!1;break;case"Left":case"ArrowLeft":D-=R;break;case"Right":case"ArrowRight":D+=R;break}$?(D<0?D=0:D>ue&&(D=ue),He(D)):(L<0?L=0:L>Be-u&&(L=Be-u),dt(L)),Pe(!0)},Bo=w=>{const L=oe.find($=>$.id===w),D=oe.find($=>!!ct&&$.id===ct.id);q&&(D&&q(D,!1),L&&q(L,!0)),Co(L)},Fo=(w,L)=>{var $;const D=($=De==null?void 0:De.field)==null?void 0:$.data.find(Q=>Q.id===L.id+"");O&&L.children.length&&O(be(G({},D),{hideChildren:!w}))},Ao=w=>{No(w)},$o=w=>ne(this,null,function*(){go(w,zt,J,Le,Ie)}),Vo=w=>ne(this,null,function*(){ho(w,zt,J,Le,Ie)}),Io=w=>{var Q;const L=ut=>ut.reduce((Rt,We)=>We.children?Rt.concat([We,...L(We.children)]):Rt.concat(We),[]),D=L((Q=Le==null?void 0:Le.data)==null?void 0:Q.data),$=D==null?void 0:D.find(ut=>ut.id===+w.id);$&&(yo($),Xt(!0))},Lo={columnWidth:R,svgWidth:ue,tasks:_,rowHeight:l,dates:ce.dates,todayColor:at,rtl:b,selectedRowKeys:To},Eo={dateSetup:ce,locale:le,viewMode:re,headerHeight:i,columnWidth:R,fontFamily:ie,fontSize:he,rtl:b},ko={tasks:oe,dates:ce.dates,ganttEvent:ke,selectedTask:ct,rowHeight:l,taskHeight:lt,columnWidth:R,arrowColor:W,timeStep:E,fontFamily:ie,fontSize:he,arrowIndent:Me,svgWidth:ue,rtl:b,setGanttEvent:_t,setFailedTask:Ut,setSelectedTask:Bo,onDateChange:Vo,onProgressChange:J.progress&&$o,onDoubleClick:k,onClick:Io,onDelete:X};return c.jsxs("div",{className:N.cx(N.css`
|
|
238
238
|
.ant-table-container::after {
|
|
239
239
|
box-shadow: none !important;
|
|
240
240
|
}
|
|
241
241
|
.ant-table-row {
|
|
242
242
|
height: ${a}px;
|
|
243
243
|
}
|
|
244
|
-
`),children:[c.jsx(fo,{visible:bo,setVisible:Xt,record:xo}),c.jsx(P.RecursionField,{name:"anctionBar",schema:Gt.properties.toolBar}),c.jsx(P.RecursionField,{name:"table",schema:Gt.properties.table}),c.jsxs("div",{className:t.wrapper,onKeyDown:Po,tabIndex:0,ref:we,children:[c.jsx(Et,{gridProps:Lo,calendarProps:Eo,barProps:ko,ganttHeight:u,scrollY:me,scrollX:de,ref:Ot}),ke.changedTask&&c.jsx(Dr,{arrowIndent:
|
|
244
|
+
`),children:[c.jsx(fo,{visible:bo,setVisible:Xt,record:xo}),c.jsx(P.RecursionField,{name:"anctionBar",schema:Gt.properties.toolBar}),c.jsx(P.RecursionField,{name:"table",schema:Gt.properties.table}),c.jsxs("div",{className:t.wrapper,onKeyDown:Po,tabIndex:0,ref:we,children:[c.jsx(Et,{gridProps:Lo,calendarProps:Eo,barProps:ko,ganttHeight:u,scrollY:me,scrollX:de,ref:Ot}),ke.changedTask&&c.jsx(Dr,{arrowIndent:Me,rowHeight:l,svgContainerHeight:wo,svgContainerWidth:vo,fontFamily:ie,fontSize:he,scrollX:de,scrollY:me,task:ke.changedTask,headerHeight:i,taskListWidth:qe,TooltipContent:A,rtl:b,svgWidth:ue}),c.jsx(Br,{ganttFullHeight:Be,ganttHeight:u,headerHeight:i,scroll:me,onScroll:Mo,rtl:b}),c.jsx(Mr,{svgWidth:ue,taskListWidth:qe,scroll:de,rtl:b,onScroll:Do})]})]})});Ne.ActionBar=d.ActionBar,Ne.ViewMode=H,Ne.Designer=rr,Ne.Event=dr;const kt=g.memo(e=>c.jsx(d.SchemaComponentOptions,{components:{Gantt:Ne,GanttBlockInitializer:cr,GanttBlockProvider:nr},scope:{useGanttBlockProps:ht},children:e.children}));kt.displayName="GanttProvider";class Ht extends d.Plugin{load(){return ne(this,null,function*(){this.app.use(kt),this.app.schemaSettingsManager.add(ar),this.app.schemaSettingsManager.add(sr),this.app.schemaInitializerManager.add(gt),this.app.schemaInitializerManager.add(ir);const t=this.app.schemaInitializerManager.get("page:addBlock");t==null||t.add("dataBlocks.gantt",{title:"{{t('Gantt')}}",Component:"GanttBlockInitializer"}),this.app.addScopes({useGanttBlockProps:ht})})}}I.Gantt=Ne,I.PluginGanttClient=Ht,I.default=Ht,Object.defineProperties(I,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}})});
|
package/dist/externalVersion.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
module.exports = {
|
|
2
|
-
"@nocobase/client": "0.21.0-alpha.
|
|
2
|
+
"@nocobase/client": "0.21.0-alpha.8",
|
|
3
3
|
"react": "18.2.0",
|
|
4
4
|
"@formily/react": "2.3.0",
|
|
5
5
|
"@ant-design/icons": "5.2.6",
|
|
@@ -7,10 +7,10 @@ module.exports = {
|
|
|
7
7
|
"react-i18next": "11.18.6",
|
|
8
8
|
"lodash": "4.17.21",
|
|
9
9
|
"@formily/shared": "2.3.0",
|
|
10
|
-
"@nocobase/server": "0.21.0-alpha.
|
|
11
|
-
"@nocobase/test": "0.21.0-alpha.
|
|
10
|
+
"@nocobase/server": "0.21.0-alpha.8",
|
|
11
|
+
"@nocobase/test": "0.21.0-alpha.8",
|
|
12
12
|
"@emotion/css": "11.11.2",
|
|
13
13
|
"antd-style": "3.4.5",
|
|
14
14
|
"antd": "5.12.8",
|
|
15
|
-
"@nocobase/utils": "0.21.0-alpha.
|
|
15
|
+
"@nocobase/utils": "0.21.0-alpha.8"
|
|
16
16
|
};
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@nocobase/plugin-gantt",
|
|
3
|
-
"version": "0.21.0-alpha.
|
|
3
|
+
"version": "0.21.0-alpha.8",
|
|
4
4
|
"displayName": "Block: Gantt",
|
|
5
5
|
"displayName.zh-CN": "区块:甘特图",
|
|
6
6
|
"description": "Provides Gantt block.",
|
|
@@ -17,7 +17,7 @@
|
|
|
17
17
|
"@nocobase/server": "0.x",
|
|
18
18
|
"@nocobase/test": "0.x"
|
|
19
19
|
},
|
|
20
|
-
"gitHead": "
|
|
20
|
+
"gitHead": "bed69485709bc8e268285b50debfc1ebfd7a30c7",
|
|
21
21
|
"keywords": [
|
|
22
22
|
"Blocks"
|
|
23
23
|
]
|