@nocobase/plugin-field-formula 1.3.13-beta → 1.3.14-beta
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 +2 -2
- package/dist/externalVersion.js +8 -7
- package/dist/utils/index.js +1 -1
- package/package.json +2 -2
package/dist/client/index.js
CHANGED
|
@@ -7,11 +7,11 @@
|
|
|
7
7
|
* For more information, please refer to: https://www.nocobase.com/agreement.
|
|
8
8
|
*/
|
|
9
9
|
|
|
10
|
-
(function(n,r){typeof exports=="object"&&typeof module!="undefined"?r(exports,require("@nocobase/client"),require("@formily/react"),require("react/jsx-runtime"),require("@formily/core"),require("@formily/reactive"),require("@nocobase/evaluators/client"),require("@nocobase/utils/client"),require("react"),require("react-i18next")):typeof define=="function"&&define.amd?define(["exports","@nocobase/client","@formily/react","react/jsx-runtime","@formily/core","@formily/reactive","@nocobase/evaluators/client","@nocobase/utils/client","react","react-i18next"],r):(n=typeof globalThis!="undefined"?globalThis:n||self,r(n["@nocobase/plugin-field-formula"]={},n["@nocobase/client"],n["@formily/react"],n.jsxRuntime,n["@formily/core"],n["@formily/reactive"],n["@nocobase/evaluators"],n["@nocobase/utils"],n.react))})(this,function(n,r,o,s,I,E,x,
|
|
10
|
+
(function(n,r){typeof exports=="object"&&typeof module!="undefined"?r(exports,require("@nocobase/client"),require("@formily/react"),require("react/jsx-runtime"),require("@formily/core"),require("@formily/reactive"),require("lodash"),require("@nocobase/evaluators/client"),require("@nocobase/utils/client"),require("react"),require("react-i18next")):typeof define=="function"&&define.amd?define(["exports","@nocobase/client","@formily/react","react/jsx-runtime","@formily/core","@formily/reactive","lodash","@nocobase/evaluators/client","@nocobase/utils/client","react","react-i18next"],r):(n=typeof globalThis!="undefined"?globalThis:n||self,r(n["@nocobase/plugin-field-formula"]={},n["@nocobase/client"],n["@formily/react"],n.jsxRuntime,n["@formily/core"],n["@formily/reactive"],n.lodash,n["@nocobase/evaluators"],n["@nocobase/utils"],n.react))})(this,function(n,r,o,s,I,E,x,b,c,y){"use strict";var ce=Object.defineProperty,me=Object.defineProperties;var de=Object.getOwnPropertyDescriptors;var T=Object.getOwnPropertySymbols;var _=Object.prototype.hasOwnProperty,$=Object.prototype.propertyIsEnumerable;var M=(n,r,o)=>r in n?ce(n,r,{enumerable:!0,configurable:!0,writable:!0,value:o}):n[r]=o,g=(n,r)=>{for(var o in r||(r={}))_.call(r,o)&&M(n,o,r[o]);if(T)for(var o of T(r))$.call(r,o)&&M(n,o,r[o]);return n},P=(n,r)=>me(n,de(r));var J=(n,r)=>{var o={};for(var s in n)_.call(n,s)&&r.indexOf(s)<0&&(o[s]=n[s]);if(n!=null&&T)for(var s of T(n))r.indexOf(s)<0&&$.call(n,s)&&(o[s]=n[s]);return o};var m=(n,r,o)=>(M(n,typeof r!="symbol"?r+"":r,o),o);var U=(n,r,o)=>new Promise((s,I)=>{var E=c=>{try{b(o.next(c))}catch(y){I(y)}},x=c=>{try{b(o.throw(c))}catch(y){I(y)}},b=c=>c.done?s(c.value):Promise.resolve(c.value).then(E,x);b((o=o.apply(n,r)).next())});const z=e=>{var F;const{value:t="",supports:i=[],useCurrentFields:a,onChange:u}=e,h=r.useCompile(),{interfaces:p}=r.useCollectionManager_deprecated(),f=((F=a==null?void 0:a())!=null?F:[]).filter(d=>i.includes(d.interface)).map(d=>{var C,v;return{label:h(d.uiSchema.title),value:d.name,children:(v=(C=p[d.interface]).usePathOptions)==null?void 0:v.call(C,d)}});return s.jsx(r.Variable.TextArea,{value:t,onChange:u,scope:f})},H={boolean:Boolean,integer:{boolean(e){return Number(e)},number(e){return e>=0?Math.floor(e):Math.ceil(e)},bigint(e){return Number(e)},string(e){const t=Number.parseInt(e,10);return Number.isNaN(t)||!Number.isFinite(t)?null:t},date(e){const t=e.valueOf();return Number.isNaN(t)?null:t}},bigInt:{boolean(e){return Number(e)},number(e){return Math.floor(e>=0?Math.floor(e):Math.ceil(e))},bigint(e){return Number(e)},string(e){const t=Number.parseInt(e,10);return Number.isNaN(t)||!Number.isFinite(t)?null:t},date(e){const t=e.valueOf();return Number.isNaN(t)?null:t}},double:{boolean(e){return Number(e)},number(e){return e},bigint(e){return Number(e)},string(e){const t=Number.parseFloat(e);return Number.isNaN(t)||!Number.isFinite(t)?null:t},date(e){const t=e.valueOf();return Number.isNaN(t)?null:t}},decimal:{boolean(e){return Number(e)},number(e){return e},bigint(e){return e},date(e){const t=e.valueOf();return Number.isNaN(t)?null:t}},string:{boolean(e){return e.toString()},number(e){return e.toString()},bigint(e){return e.toString()},string(e){return e},date(e){return e.toISOString()}},date:{boolean(e){return null},number(e){const t=new Date(e);return Number.isNaN(t.valueOf())?null:t},bigint(e){const t=new Date(Number(e));return Number.isNaN(t.valueOf())?null:t},string(e){const t=Date.parse(e);return Number.isNaN(t)?null:new Date(t)},date(e){return new Date(e)}}};function K(e,t){if(e==null||!e&&t==="date")return null;let i=typeof e;i=="object"&&e instanceof Date&&(i="date");const a=H[t];if(!a)return null;if(typeof a=="function")return a(e);const u=a[i];return u?u(e):null}const L={boolean:r.Checkbox.ReadPretty,integer:r.InputNumber.ReadPretty,bigInt:r.InputNumber.ReadPretty,double:r.InputNumber.ReadPretty,decimal:r.InputNumber.ReadPretty,date:r.DatePicker.ReadPretty,string:r.Input.ReadPretty};function R(e){const t=o.useFieldSchema(),i=e||t,a=r.useCollection_deprecated(),{getCollection:u,getCollectionField:h}=r.useCollectionManager_deprecated(),p=i.name.split(".");let l=a;for(let f=0;f<p.length-1;f++){const F=l.getField(p[f]);l=u(F.target)}return h(`${l.name}.${p[p.length-1]}`)}function Q(e,t,i){const a=e[t];return Array.isArray(a)?a[i]:a&&typeof a=="object"?a:e}function W(e,t){return x.isString(e)&&!isNaN(Date.parse(e))&&(e=new Date(e)),x.isString(t)&&!isNaN(Date.parse(t))&&(t=new Date(t)),x.isDate(e)&&x.isDate(t)?e.getTime()===t.getTime():x.isEqual(e,t)}function X(e){var V,k,B;const A=e,{value:t}=A,i=J(A,["value"]),a=o.useFieldSchema(),{dataType:u,expression:h,engine:p="math.js"}=(V=R())!=null?V:{},[l,f]=y.useState(t),{evaluate:F}=b.evaluators.get(p),d=r.useFormBlockContext(),C=o.useField(),v=C.path.entire,O=v==null?void 0:v.replace(`.${a.name}`,""),ae=O.split(".")[0],se=parseInt((k=O.split("."))==null?void 0:k[1]);y.useEffect(()=>{f(t)},[t]),o.useFormEffects(()=>{I.onFormValuesChange(ue=>{var G;if(a.name.indexOf(".")>=0||!(d!=null&&d.form)||(G=d.form)!=null&&G.readPretty||a["x-decorator"]!=="FormItem")return;const le=E.toJS(Q(ue.values,ae,se));let N;try{N=F(h,le),N=K(N,u)}catch(pe){N=null}N==null&&l==null&&f(N),f(N)})}),y.useEffect(()=>{W(C.value,l)||setTimeout(()=>{C.value=l})},[l]);const ie=(B=L[u])!=null?B:r.Input;return s.jsx(ie,P(g({},i),{value:u==="double"?c.toFixedByStep(l,e.step):l}))}const q=()=>null;q.Expression=z,q.Result=o.connect(X);const S="field-formula";function Y(e){const t=b.evaluators.get(e);return t!=null&&t.link?s.jsxs(s.Fragment,{children:[s.jsx("span",{className:r.css`
|
|
11
11
|
&:after {
|
|
12
12
|
content: ':';
|
|
13
13
|
}
|
|
14
14
|
& + a {
|
|
15
15
|
margin-left: 0.25em;
|
|
16
16
|
}
|
|
17
|
-
`,children:r.i18n.t("Syntax references",{ns:
|
|
17
|
+
`,children:r.i18n.t("Syntax references",{ns:S})}),s.jsx("a",{href:t.link,target:"_blank",rel:"noreferrer",children:t.label})]}):null}const Z=[{dependencies:["dataType"],fulfill:{state:{display:'{{["double", "decimal"].includes($deps[0]) ? "visible" : "none"}}'}}}],j=[{dependencies:["dataType"],fulfill:{state:{display:'{{$deps[0] === "date" ? "visible" : "none"}}'}}}],{defaultProps:ee,dateTimeProps:D,operators:te}=r.interfacesProperties,re={"uiSchema.x-component-props.dateFormat":P(g({},c.lodash.cloneDeep(D["uiSchema.x-component-props.dateFormat"])),{"x-reactions":j}),"uiSchema.x-component-props.showTime":P(g({},c.lodash.cloneDeep(D["uiSchema.x-component-props.showTime"])),{"x-reactions":[...D["uiSchema.x-component-props.showTime"]["x-reactions"],...j]}),"uiSchema.x-component-props.timeFormat":g({},c.lodash.cloneDeep(D["uiSchema.x-component-props.timeFormat"]))};class ne extends r.CollectionFieldInterface{constructor(){super(...arguments);m(this,"name","formula");m(this,"type","object");m(this,"group","advanced");m(this,"order",1);m(this,"title",`{{t("Formula", { ns: "${S}" })}}`);m(this,"description",`{{t("Configure and store the results of calculations between multiple field values in the same record, supporting both Math.js and Excel formula functions.", { ns: "${S}" })}}`);m(this,"sortable",!0);m(this,"default",{type:"formula",uiSchema:{type:"string","x-component":"Formula.Result","x-component-props":{stringMode:!0,step:"1"},"x-read-pretty":!0}});m(this,"properties",P(g(P(g({},ee),{dataType:{type:"string",title:'{{t("Storage type")}}',"x-decorator":"FormItem","x-component":"Select","x-disabled":"{{ !createOnly }}",enum:[{value:"boolean",label:"Boolean"},{value:"integer",label:"Integer"},{value:"bigInt",label:"Big integer"},{value:"double",label:"Double"},{value:"string",label:"String"},{value:"date",label:"Datetime"}],required:!0,default:"double"},"uiSchema.x-component-props.step":{type:"string",title:'{{t("Precision")}}',"x-component":"Select","x-decorator":"FormItem",required:!0,default:"0",enum:[{value:"0",label:"1"},{value:"0.1",label:"1.0"},{value:"0.01",label:"1.00"},{value:"0.001",label:"1.000"},{value:"0.0001",label:"1.0000"},{value:"0.00001",label:"1.00000"}],"x-reactions":Z}}),re),{engine:{type:"string",title:`{{t("Calculation engine", { ns: "${S}" })}}`,"x-decorator":"FormItem","x-component":"Radio.Group",enum:Array.from(b.evaluators.getEntities()).reduce((i,[a,u])=>i.concat(g({value:a},u)),[]),required:!0,default:"math.js"},expression:{type:"string",title:`{{t("Expression", { ns: "${S}" })}}`,required:!0,"x-component":"Formula.Expression","x-decorator":"FormItem","x-component-props":{supports:["checkbox","number","percent","integer","number","percent","input","textarea","email","phone","datetime","createdAt","updatedAt","radioGroup","checkboxGroup","select","multipleSelect"],useCurrentFields:"{{ useCurrentFields }}"},"x-reactions":{dependencies:["engine"],fulfill:{schema:{description:"{{renderExpressionDescription($deps[0])}}"}}},"x-validator"(i,a,{form:u}){const{values:h}=u,{evaluate:p}=b.evaluators.get(h.engine),l=i.trim().replace(/{{\s*([^{}]+)\s*}}/g,"1");try{return p(l),""}catch(f){return r.i18n.t("Expression syntax error",{ns:S})}}}}));m(this,"filterable",{operators:te.number});m(this,"titleUsable",!0)}}const oe=new r.SchemaSettings({name:"fieldSettings:component:Formula.Result",items:[{name:"displayFormat",Component:r.SchemaSettingsNumberFormat,useComponentProps(){const e=o.useFieldSchema(),{fieldSchema:t}=r.useColumnSchema();return{fieldSchema:t||e}},useVisible(){const e=o.useFieldSchema(),{fieldSchema:t}=r.useColumnSchema(),i=t||e,{dataType:a}=R(i)||{},u=["integer","bigInt","double","decimal"].includes(a);return r.useIsFieldReadPretty()&&u}}]});class w extends r.Plugin{load(){return U(this,null,function*(){this.app.addComponents({Formula:q}),this.app.addScopes({renderExpressionDescription:Y}),this.app.dataSourceManager.addFieldInterfaces([ne]),this.app.schemaSettingsManager.add(oe)})}}n.PluginFieldFormulaClient=w,n.default=w,Object.defineProperties(n,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}})});
|
package/dist/externalVersion.js
CHANGED
|
@@ -9,14 +9,15 @@
|
|
|
9
9
|
|
|
10
10
|
module.exports = {
|
|
11
11
|
"@formily/react": "2.3.0",
|
|
12
|
-
"@nocobase/client": "1.3.
|
|
13
|
-
"@nocobase/evaluators": "1.3.
|
|
14
|
-
"@nocobase/utils": "1.3.
|
|
12
|
+
"@nocobase/client": "1.3.14-beta",
|
|
13
|
+
"@nocobase/evaluators": "1.3.14-beta",
|
|
14
|
+
"@nocobase/utils": "1.3.14-beta",
|
|
15
15
|
"react": "18.2.0",
|
|
16
|
-
"@nocobase/database": "1.3.
|
|
17
|
-
"@nocobase/server": "1.3.
|
|
18
|
-
"@nocobase/test": "1.3.
|
|
16
|
+
"@nocobase/database": "1.3.14-beta",
|
|
17
|
+
"@nocobase/server": "1.3.14-beta",
|
|
18
|
+
"@nocobase/test": "1.3.14-beta",
|
|
19
19
|
"react-i18next": "11.18.6",
|
|
20
20
|
"@formily/core": "2.3.0",
|
|
21
|
-
"@formily/reactive": "2.3.0"
|
|
21
|
+
"@formily/reactive": "2.3.0",
|
|
22
|
+
"lodash": "4.17.21"
|
|
22
23
|
};
|
package/dist/utils/index.js
CHANGED
package/package.json
CHANGED
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
"displayName.zh-CN": "数据表字段:公式",
|
|
5
5
|
"description": "Configure and store the results of calculations between multiple field values in the same record, supporting both Math.js and Excel formula functions.",
|
|
6
6
|
"description.zh-CN": "可以配置并存储同一条记录的多字段值之间的计算结果,支持 Math.js 和 Excel formula functions 两种引擎",
|
|
7
|
-
"version": "1.3.
|
|
7
|
+
"version": "1.3.14-beta",
|
|
8
8
|
"license": "AGPL-3.0",
|
|
9
9
|
"main": "./dist/server/index.js",
|
|
10
10
|
"homepage": "https://docs.nocobase.com/handbook/field-formula",
|
|
@@ -25,7 +25,7 @@
|
|
|
25
25
|
"@nocobase/test": "1.x",
|
|
26
26
|
"@nocobase/utils": "1.x"
|
|
27
27
|
},
|
|
28
|
-
"gitHead": "
|
|
28
|
+
"gitHead": "bc4aa249f4963d1f5b1b69f1c121d14e18c22b1c",
|
|
29
29
|
"keywords": [
|
|
30
30
|
"Collection fields"
|
|
31
31
|
]
|