@nocobase/plugin-field-formula 1.5.0-alpha.5 → 1.5.0-beta.2
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 +8 -1
- package/dist/externalVersion.js +6 -6
- package/package.json +2 -2
package/dist/client/index.js
CHANGED
|
@@ -7,4 +7,11 @@
|
|
|
7
7
|
* For more information, please refer to: https://www.nocobase.com/agreement.
|
|
8
8
|
*/
|
|
9
9
|
|
|
10
|
-
!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t(require("react-i18next"),require("@nocobase/evaluators/client"),require("@nocobase/utils/client"),require("@formily/core"),require("lodash"),require("@nocobase/client"),require("@formily/react"),require("@formily/reactive"),require("react")):"function"==typeof define&&define.amd?define("@nocobase/plugin-field-formula",["react-i18next","@nocobase/evaluators/client","@nocobase/utils/client","@formily/core","lodash","@nocobase/client","@formily/react","@formily/reactive","react"],t):"object"==typeof exports?exports["@nocobase/plugin-field-formula"]=t(require("react-i18next"),require("@nocobase/evaluators/client"),require("@nocobase/utils/client"),require("@formily/core"),require("lodash"),require("@nocobase/client"),require("@formily/react"),require("@formily/reactive"),require("react")):e["@nocobase/plugin-field-formula"]=t(e["react-i18next"],e["@nocobase/evaluators/client"],e["@nocobase/utils/client"],e["@formily/core"],e.lodash,e["@nocobase/client"],e["@formily/react"],e["@formily/reactive"],e.react)}(self,function(e,t,r,n,o,u,i,a,l){return function(){"use strict";var c={563:function(e){e.exports=n},505:function(e){e.exports=i},229:function(e){e.exports=a},772:function(e){e.exports=u},47:function(e){e.exports=t},584:function(e){e.exports=r},467:function(e){e.exports=o},156:function(e){e.exports=l},238:function(t){t.exports=e}},s={};function f(e){var t=s[e];if(void 0!==t)return t.exports;var r=s[e]={exports:{}};return c[e](r,r.exports,f),r.exports}f.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return f.d(t,{a:t}),t},f.d=function(e,t){for(var r in t)f.o(t,r)&&!f.o(e,r)&&Object.defineProperty(e,r,{enumerable:!0,get:t[r]})},f.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},f.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})};var p={};f.r(p),f.d(p,{PluginFieldFormulaClient:function(){return et},default:function(){return er}});var b=f("772"),m=f("505"),d=f("156"),y=f.n(d),v=f("563"),h=f("229"),g=f("467"),O=f.n(g),S=f("47"),x=f("584"),j={boolean:Boolean,integer:{boolean:function(e){return Number(e)},number:function(e){return e>=0?Math.floor(e):Math.ceil(e)},bigint:function(e){return Number(e)},string:function(e){var t=Number.parseInt(e,10);return Number.isNaN(t)||!Number.isFinite(t)?null:t},date:function(e){var t=e.valueOf();return Number.isNaN(t)?null:t}},bigInt:{boolean:function(e){return Number(e)},number:function(e){return Math.floor(e>=0?Math.floor(e):Math.ceil(e))},bigint:function(e){return Number(e)},string:function(e){var t=Number.parseInt(e,10);return Number.isNaN(t)||!Number.isFinite(t)?null:t},date:function(e){var t=e.valueOf();return Number.isNaN(t)?null:t}},double:{boolean:function(e){return Number(e)},number:function(e){return e},bigint:function(e){return Number(e)},string:function(e){var t=Number.parseFloat(e);return Number.isNaN(t)||!Number.isFinite(t)?null:t},date:function(e){var t=e.valueOf();return Number.isNaN(t)?null:t}},decimal:{boolean:function(e){return Number(e)},number:function(e){return e},bigint:function(e){return e},date:function(e){var t=e.valueOf();return Number.isNaN(t)?null:t}},string:{boolean:function(e){return e.toString()},number:function(e){return e.toString()},bigint:function(e){return e.toString()},string:function(e){return e},date:function(e){return e.toISOString()}},date:{boolean:function(e){return null},number:function(e){var t=new Date(e);return Number.isNaN(t.valueOf())?null:t},bigint:function(e){var t=new Date(Number(e));return Number.isNaN(t.valueOf())?null:t},string:function(e){var t=Date.parse(e);return Number.isNaN(t)?null:new Date(t)},date:function(e){return new Date(e)}}};function P(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=Array(t);r<t;r++)n[r]=e[r];return n}var w={boolean:b.Checkbox.ReadPretty,integer:b.InputNumber.ReadPretty,bigInt:b.InputNumber.ReadPretty,double:b.InputNumber.ReadPretty,decimal:b.InputNumber.ReadPretty,date:b.DatePicker.ReadPretty,string:b.Input.ReadPretty};function N(e){for(var t=(0,m.useFieldSchema)(),r=(0,b.useCollection_deprecated)(),n=(0,b.useCollectionManager_deprecated)(),o=n.getCollection,u=n.getCollectionField,i=(e||t).name.split("."),a=r,l=0;l<i.length-1;l++)a=o(a.getField(i[l]).target);return u("".concat(a.name,".").concat(i[i.length-1]))}var F=function(){return null};F.Expression=function(e){var t,r=e.value,n=e.supports,o=void 0===n?[]:n,u=e.useCurrentFields,i=e.onChange,a=(0,b.useCompile)(),l=(0,b.useCollectionManager_deprecated)().interfaces,c=(null!==(t=null==u?void 0:u())&&void 0!==t?t:[]).filter(function(e){return o.includes(e.interface)}).map(function(e){var t,r;return{label:a(e.uiSchema.title),value:e.name,children:null===(t=(r=l[e.interface]).usePathOptions)||void 0===t?void 0:t.call(r,e)}});return y().createElement(b.Variable.TextArea,{value:void 0===r?"":r,onChange:i,scope:c})},F.Result=(0,m.connect)(function(e){var t,r,n,o,u,i,a=e.value,l=function(e,t){if(null==e)return{};var r,n,o=function(e,t){if(null==e)return{};var r,n,o={},u=Object.keys(e);for(n=0;n<u.length;n++)r=u[n],!(t.indexOf(r)>=0)&&(o[r]=e[r]);return o}(e,t);if(Object.getOwnPropertySymbols){var u=Object.getOwnPropertySymbols(e);for(n=0;n<u.length;n++){if(r=u[n],!(t.indexOf(r)>=0))Object.prototype.propertyIsEnumerable.call(e,r)&&(o[r]=e[r])}}return o}(e,["value"]),c=(0,m.useFieldSchema)(),s=null!==(u=N())&&void 0!==u?u:{},f=s.dataType,p=s.expression,g=s.engine;var F=(t=(0,d.useState)(a),r=2,function(e){if(Array.isArray(e))return e}(t)||function(e,t){var r,n,o=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=o){var u=[],i=!0,a=!1;try{for(o=o.call(e);!(i=(r=o.next()).done)&&(u.push(r.value),!t||u.length!==t);i=!0);}catch(e){a=!0,n=e}finally{try{!i&&null!=o.return&&o.return()}finally{if(a)throw n}}return u}}(t,2)||function(e,t){if(e){if("string"==typeof e)return P(e,t);var r=Object.prototype.toString.call(e).slice(8,-1);if("Object"===r&&e.constructor&&(r=e.constructor.name),"Map"===r||"Set"===r)return Array.from(r);if("Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r))return P(e,t)}}(t,r)||function(){throw TypeError("Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()),I=F[0],E=F[1],D=S.evaluators.get(void 0===g?"math.js":g).evaluate,C=(0,b.useFormBlockContext)(),T=(0,m.useField)(),_=T.path.entire,q=null==_?void 0:_.replace(".".concat(c.name),"");(0,d.useEffect)(function(){E(a)},[a]),(0,m.useFormEffects)(function(){(0,v.onFormValuesChange)(function(e){if(!(c.name.indexOf(".")>=0)&&!!(null==C?void 0:C.form)&&(null===(t=C.form)||void 0===t?!void 0:!t.readPretty)&&"FormItem"===c["x-decorator"]){var t,r,n=(0,h.toJS)(function(e,t){for(var r=t.split("."),n=0,o=e;n<r.length;){var u=r[n],i=parseInt(null==r?void 0:r[n+1]);o=function(e,t,r){var n,o=e[t];if(Array.isArray(o))return o[r];return o&&(void 0===o?"undefined":(n=o)&&"undefined"!=typeof Symbol&&n.constructor===Symbol?"symbol":typeof n)=="object"?o:e}(o,u,i),n+=i>=0?2:1}return o}(e.values,q));try{r=(r=D(p,n))&&function(e,t){if(null==e)return null;var r,n,o,u=void 0===e?"undefined":(r=e)&&"undefined"!=typeof Symbol&&r.constructor===Symbol?"symbol":typeof r;if("object"==u&&(n=e,null!=(o=Date)&&"undefined"!=typeof Symbol&&o[Symbol.hasInstance]?!!o[Symbol.hasInstance](n):n instanceof o))u="date";var i=j[t];if(!i)return null;if("function"==typeof i)return i(e);var a=i[u];return a?a(e):null}(r,f)}catch(e){r=null}null==r&&null==I&&E(r),E(r)}})}),(0,d.useEffect)(function(){var e,t;if(e=T.value,t=I,(O().isString(e)&&!isNaN(Date.parse(e))&&(e=new Date(e)),O().isString(t)&&!isNaN(Date.parse(t))&&(t=new Date(t)),O().isDate(e)&&O().isDate(t))?e.getTime()!==t.getTime():!O().isEqual(e,t))setTimeout(function(){T.value=I})},[I]);var A=null!==(i=w[f])&&void 0!==i?i:b.Input;return y().createElement(A,(n=function(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{},n=Object.keys(r);"function"==typeof Object.getOwnPropertySymbols&&(n=n.concat(Object.getOwnPropertySymbols(r).filter(function(e){return Object.getOwnPropertyDescriptor(r,e).enumerable}))),n.forEach(function(t){var n,o,u;n=e,o=t,u=r[t],o in n?Object.defineProperty(n,o,{value:u,enumerable:!0,configurable:!0,writable:!0}):n[o]=u})}return e}({},l),o=(o={value:"double"===f?(0,x.toFixedByStep)(I,e.step):I},o),Object.getOwnPropertyDescriptors?Object.defineProperties(n,Object.getOwnPropertyDescriptors(o)):(function(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);r.push.apply(r,n)}return r})(Object(o)).forEach(function(e){Object.defineProperty(n,e,Object.getOwnPropertyDescriptor(o,e))}),n))}),f("238");var I="field-formula";function E(){var e,t,r=(e=["\n &:after {\n content: ':';\n }\n & + a {\n margin-left: 0.25em;\n }\n "],!t&&(t=e.slice(0)),Object.freeze(Object.defineProperties(e,{raw:{value:Object.freeze(t)}})));return E=function(){return r},r}function D(e){var t=S.evaluators.get(e);return(null==t?void 0:t.link)?y().createElement(y().Fragment,null,y().createElement("span",{className:(0,b.css)(E())},b.i18n.t("Syntax references",{ns:I})),y().createElement("a",{href:t.link,target:"_blank",rel:"noreferrer"},t.label)):null}function C(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=Array(t);r<t;r++)n[r]=e[r];return n}function T(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function _(e){return(_=Object.setPrototypeOf?Object.getPrototypeOf:function(e){return e.__proto__||Object.getPrototypeOf(e)})(e)}function q(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{},n=Object.keys(r);"function"==typeof Object.getOwnPropertySymbols&&(n=n.concat(Object.getOwnPropertySymbols(r).filter(function(e){return Object.getOwnPropertyDescriptor(r,e).enumerable}))),n.forEach(function(t){T(e,t,r[t])})}return e}function A(e,t){return t=null!=t?t:{},Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(t)):(function(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);r.push.apply(r,n)}return r})(Object(t)).forEach(function(r){Object.defineProperty(e,r,Object.getOwnPropertyDescriptor(t,r))}),e}function k(e,t){return(k=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e})(e,t)}function R(e){return function(e){if(Array.isArray(e))return C(e)}(e)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(e)||M(e)||function(){throw TypeError("Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function M(e,t){if(e){if("string"==typeof e)return C(e,t);var r=Object.prototype.toString.call(e).slice(8,-1);if("Object"===r&&e.constructor&&(r=e.constructor.name),"Map"===r||"Set"===r)return Array.from(r);if("Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r))return C(e,t)}}function B(){try{var e=!Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){}))}catch(e){}return(B=function(){return!!e})()}var $=[{dependencies:["dataType"],fulfill:{state:{display:'{{["double", "decimal"].includes($deps[0]) ? "visible" : "none"}}'}}}],G=[{dependencies:["dataType"],fulfill:{state:{display:'{{$deps[0] === "date" ? "visible" : "none"}}'}}}],U=b.interfacesProperties.defaultProps,V=b.interfacesProperties.dateTimeProps,z=b.interfacesProperties.operators,J={"uiSchema.x-component-props.dateFormat":A(q({},x.lodash.cloneDeep(V["uiSchema.x-component-props.dateFormat"])),{"x-reactions":G}),"uiSchema.x-component-props.showTime":A(q({},x.lodash.cloneDeep(V["uiSchema.x-component-props.showTime"])),{"x-reactions":R(V["uiSchema.x-component-props.showTime"]["x-reactions"]).concat(R(G))}),"uiSchema.x-component-props.timeFormat":q({},x.lodash.cloneDeep(V["uiSchema.x-component-props.timeFormat"]))},H=function(e){function t(){var e,r,n,o;return!function(e,t){if(!(e instanceof t))throw TypeError("Cannot call a class as a function")}(this,t),r=this,n=t,o=arguments,n=_(n),T(e=function(e,t){return t&&("object"===function(e){return e&&"undefined"!=typeof Symbol&&e.constructor===Symbol?"symbol":typeof e}(t)||"function"==typeof t)?t:function(e){if(void 0===e)throw ReferenceError("this hasn't been initialised - super() hasn't been called");return e}(e)}(r,B()?Reflect.construct(n,o||[],_(r).constructor):n.apply(r,o)),"name","formula"),T(e,"type","object"),T(e,"group","advanced"),T(e,"order",1),T(e,"title",'{{t("Formula", { ns: "'.concat(I,'" })}}')),T(e,"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: "'.concat(I,'" })}}')),T(e,"sortable",!0),T(e,"default",{type:"formula",uiSchema:{type:"string","x-component":"Formula.Result","x-component-props":{stringMode:!0,step:"1"},"x-read-pretty":!0}}),T(e,"properties",A(q(A(q({},U),{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":$}}),J),{engine:{type:"string",title:'{{t("Calculation engine", { ns: "'.concat(I,'" })}}'),"x-decorator":"FormItem","x-component":"Radio.Group",enum:Array.from(S.evaluators.getEntities()).reduce(function(e,t){var r,n,o=(n=2,function(e){if(Array.isArray(e))return e}(r=t)||function(e,t){var r,n,o=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=o){var u=[],i=!0,a=!1;try{for(o=o.call(e);!(i=(r=o.next()).done)&&(u.push(r.value),!t||u.length!==t);i=!0);}catch(e){a=!0,n=e}finally{try{!i&&null!=o.return&&o.return()}finally{if(a)throw n}}return u}}(r,2)||M(r,n)||function(){throw TypeError("Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()),u=o[0],i=o[1];return e.concat(q({value:u},i))},[]),required:!0,default:"math.js"},expression:T({type:"string",title:'{{t("Expression", { ns: "'.concat(I,'" })}}'),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",function(e,t,r){var n=r.form.values,o=S.evaluators.get(n.engine).evaluate,u=e.trim().replace(/{{\s*([^{}]+)\s*}}/g,"1");try{return o(u),""}catch(e){return b.i18n.t("Expression syntax error",{ns:I})}})})),T(e,"filterable",{operators:z.number}),T(e,"titleUsable",!0),e}return!function(e,t){if("function"!=typeof t&&null!==t)throw TypeError("Super expression must either be null or a function");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),t&&k(e,t)}(t,e),t}(b.CollectionFieldInterface),K=new b.SchemaSettings({name:"fieldSettings:component:Formula.Result",items:[{name:"displayFormat",Component:b.SchemaSettingsNumberFormat,useComponentProps:function(){var e=(0,m.useFieldSchema)(),t=(0,b.useColumnSchema)().fieldSchema;return{fieldSchema:t||e}},useVisible:function(){var e=(0,m.useFieldSchema)(),t=(0,b.useColumnSchema)().fieldSchema,r=["integer","bigInt","double","decimal"].includes((N(t||e)||{}).dataType);return(0,b.useIsFieldReadPretty)()&&r}}]});function L(e,t,r,n,o,u,i){try{var a=e[u](i),l=a.value}catch(e){r(e);return}a.done?t(l):Promise.resolve(l).then(n,o)}function Q(e,t,r){return(Q=ee()?Reflect.construct:function(e,t,r){var n=[null];n.push.apply(n,t);var o=new(Function.bind.apply(e,n));return r&&Y(o,r.prototype),o}).apply(null,arguments)}function W(e,t){for(var r=0;r<t.length;r++){var n=t[r];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(e,n.key,n)}}function X(e){return(X=Object.setPrototypeOf?Object.getPrototypeOf:function(e){return e.__proto__||Object.getPrototypeOf(e)})(e)}function Y(e,t){return(Y=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e})(e,t)}function Z(e){var t="function"==typeof Map?new Map:void 0;return(Z=function(e){var r;if(null===e||(r=e,-1===Function.toString.call(r).indexOf("[native code]")))return e;if("function"!=typeof e)throw TypeError("Super expression must either be null or a function");if(void 0!==t){if(t.has(e))return t.get(e);t.set(e,n)}function n(){return Q(e,arguments,X(this).constructor)}return n.prototype=Object.create(e.prototype,{constructor:{value:n,enumerable:!1,writable:!0,configurable:!0}}),Y(n,e)})(e)}function ee(){try{var e=!Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){}))}catch(e){}return(ee=function(){return!!e})()}var et=function(e){var t,r,n;function o(){var e,t,r;return!function(e,t){if(!(e instanceof t))throw TypeError("Cannot call a class as a function")}(this,o),e=this,t=o,r=arguments,t=X(t),function(e,t){return t&&("object"===function(e){return e&&"undefined"!=typeof Symbol&&e.constructor===Symbol?"symbol":typeof e}(t)||"function"==typeof t)?t:function(e){if(void 0===e)throw ReferenceError("this hasn't been initialised - super() hasn't been called");return e}(e)}(e,ee()?Reflect.construct(t,r||[],X(e).constructor):t.apply(e,r))}return!function(e,t){if("function"!=typeof t&&null!==t)throw TypeError("Super expression must either be null or a function");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),t&&Y(e,t)}(o,e),t=o,r=[{key:"load",value:function(){var e,t=this;return(e=function(){return function(e,t){var r,n,o,u,i={label:0,sent:function(){if(1&o[0])throw o[1];return o[1]},trys:[],ops:[]};return u={next:a(0),throw:a(1),return:a(2)},"function"==typeof Symbol&&(u[Symbol.iterator]=function(){return this}),u;function a(u){return function(a){return function(u){if(r)throw TypeError("Generator is already executing.");for(;i;)try{if(r=1,n&&(o=2&u[0]?n.return:u[0]?n.throw||((o=n.return)&&o.call(n),0):n.next)&&!(o=o.call(n,u[1])).done)return o;switch(n=0,o&&(u=[2&u[0],o.value]),u[0]){case 0:case 1:o=u;break;case 4:return i.label++,{value:u[1],done:!1};case 5:i.label++,n=u[1],u=[0];continue;case 7:u=i.ops.pop(),i.trys.pop();continue;default:if(!(o=(o=i.trys).length>0&&o[o.length-1])&&(6===u[0]||2===u[0])){i=0;continue}if(3===u[0]&&(!o||u[1]>o[0]&&u[1]<o[3])){i.label=u[1];break}if(6===u[0]&&i.label<o[1]){i.label=o[1],o=u;break}if(o&&i.label<o[2]){i.label=o[2],i.ops.push(u);break}o[2]&&i.ops.pop(),i.trys.pop();continue}u=t.call(e,i)}catch(e){u=[6,e],n=0}finally{r=o=0}if(5&u[0])throw u[1];return{value:u[0]?u[1]:void 0,done:!0}}([u,a])}}}(this,function(e){return t.app.addComponents({Formula:F}),t.app.addScopes({renderExpressionDescription:D}),t.app.dataSourceManager.addFieldInterfaces([H]),t.app.schemaSettingsManager.add(K),[2]})},function(){var t=this,r=arguments;return new Promise(function(n,o){var u=e.apply(t,r);function i(e){L(u,n,o,i,a,"next",e)}function a(e){L(u,n,o,i,a,"throw",e)}i(void 0)})})()}}],W(t.prototype,r),o}(Z(b.Plugin)),er=et;return p}()});
|
|
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,a,u,I,E,x,h,m,N){"use strict";var ue=Object.defineProperty,le=Object.defineProperties;var ce=Object.getOwnPropertyDescriptors;var T=Object.getOwnPropertySymbols;var B=Object.prototype.hasOwnProperty,G=Object.prototype.propertyIsEnumerable;var M=(n,r,a)=>r in n?ue(n,r,{enumerable:!0,configurable:!0,writable:!0,value:a}):n[r]=a,y=(n,r)=>{for(var a in r||(r={}))B.call(r,a)&&M(n,a,r[a]);if(T)for(var a of T(r))G.call(r,a)&&M(n,a,r[a]);return n},P=(n,r)=>le(n,ce(r));var _=(n,r)=>{var a={};for(var u in n)B.call(n,u)&&r.indexOf(u)<0&&(a[u]=n[u]);if(n!=null&&T)for(var u of T(n))r.indexOf(u)<0&&G.call(n,u)&&(a[u]=n[u]);return a};var d=(n,r,a)=>(M(n,typeof r!="symbol"?r+"":r,a),a);var $=(n,r,a)=>new Promise((u,I)=>{var E=m=>{try{h(a.next(m))}catch(N){I(N)}},x=m=>{try{h(a.throw(m))}catch(N){I(N)}},h=m=>m.done?u(m.value):Promise.resolve(m.value).then(E,x);h((a=a.apply(n,r)).next())});const J=e=>{var F;const{value:t="",supports:s=[],useCurrentFields:o,onChange:i}=e,f=r.useCompile(),{interfaces:l}=r.useCollectionManager_deprecated(),b=((F=o==null?void 0:o())!=null?F:[]).filter(p=>s.includes(p.interface)).map(p=>{var v,C;return{label:f(p.uiSchema.title),value:p.name,children:(C=(v=l[p.interface]).usePathOptions)==null?void 0:C.call(v,p)}});return u.jsx(r.Variable.TextArea,{value:t,onChange:i,scope:b})},K={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 U(e,t){if(e==null)return null;let s=typeof e;s=="object"&&e instanceof Date&&(s="date");const o=K[t];if(!o)return null;if(typeof o=="function")return o(e);const i=o[s];return i?i(e):null}const z={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=a.useFieldSchema(),s=e||t,o=r.useCollection_deprecated(),{getCollection:i,getCollectionField:f}=r.useCollectionManager_deprecated(),l=s.name.split(".");let c=o;for(let b=0;b<l.length-1;b++){const F=c.getField(l[b]);c=i(F.target)}return f(`${c.name}.${l[l.length-1]}`)}function H(e,t,s){const o=e[t];return Array.isArray(o)?o[s]:o&&typeof o=="object"?o:e}function L(e,t){const s=t.split(".");let o=0,i=e;for(;o<s.length;){const f=s[o],l=parseInt(s==null?void 0:s[o+1]);i=H(i,f,l),o=o+(l>=0?2:1)}return i}function Q(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 W(e){var V,A;const O=e,{value:t}=O,s=_(O,["value"]),o=a.useFieldSchema(),{dataType:i,expression:f,engine:l="math.js"}=(V=R())!=null?V:{},[c,b]=N.useState(t),{evaluate:F}=h.evaluators.get(l),p=r.useFormBlockContext(),v=a.useField(),C=v.path.entire,oe=C==null?void 0:C.replace(`.${o.name}`,"");N.useEffect(()=>{b(t)},[t]),a.useFormEffects(()=>{I.onFormValuesChange(se=>{var k;if(o.name.indexOf(".")>=0||!(p!=null&&p.form)||(k=p.form)!=null&&k.readPretty||o["x-decorator"]!=="FormItem")return;const ie=E.toJS(L(se.values,oe));let g;try{g=F(f,ie),g=g&&U(g,i)}catch(me){g=null}g==null&&c==null&&b(g),b(g)})}),N.useEffect(()=>{Q(v.value,c)||setTimeout(()=>{v.value=c})},[c]);const ae=(A=z[i])!=null?A:r.Input;return u.jsx(ae,P(y({},s),{value:i==="double"?m.toFixedByStep(c,e.step):c}))}const q=()=>null;q.Expression=J,q.Result=a.connect(W);const S="field-formula";function X(e){const t=h.evaluators.get(e);return t!=null&&t.link?u.jsxs(u.Fragment,{children:[u.jsx("span",{className:r.css`
|
|
11
|
+
&:after {
|
|
12
|
+
content: ':';
|
|
13
|
+
}
|
|
14
|
+
& + a {
|
|
15
|
+
margin-left: 0.25em;
|
|
16
|
+
}
|
|
17
|
+
`,children:r.i18n.t("Syntax references",{ns:S})}),u.jsx("a",{href:t.link,target:"_blank",rel:"noreferrer",children:t.label})]}):null}const Y=[{dependencies:["dataType"],fulfill:{state:{display:'{{["double", "decimal"].includes($deps[0]) ? "visible" : "none"}}'}}}],j=[{dependencies:["dataType"],fulfill:{state:{display:'{{$deps[0] === "date" ? "visible" : "none"}}'}}}],{defaultProps:Z,dateTimeProps:D,operators:ee}=r.interfacesProperties,te={"uiSchema.x-component-props.dateFormat":P(y({},m.lodash.cloneDeep(D["uiSchema.x-component-props.dateFormat"])),{"x-reactions":j}),"uiSchema.x-component-props.showTime":P(y({},m.lodash.cloneDeep(D["uiSchema.x-component-props.showTime"])),{"x-reactions":[...D["uiSchema.x-component-props.showTime"]["x-reactions"],...j]}),"uiSchema.x-component-props.timeFormat":y({},m.lodash.cloneDeep(D["uiSchema.x-component-props.timeFormat"]))};class re extends r.CollectionFieldInterface{constructor(){super(...arguments);d(this,"name","formula");d(this,"type","object");d(this,"group","advanced");d(this,"order",1);d(this,"title",`{{t("Formula", { ns: "${S}" })}}`);d(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}" })}}`);d(this,"sortable",!0);d(this,"default",{type:"formula",uiSchema:{type:"string","x-component":"Formula.Result","x-component-props":{stringMode:!0,step:"1"},"x-read-pretty":!0}});d(this,"properties",P(y(P(y({},Z),{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":Y}}),te),{engine:{type:"string",title:`{{t("Calculation engine", { ns: "${S}" })}}`,"x-decorator":"FormItem","x-component":"Radio.Group",enum:Array.from(h.evaluators.getEntities()).reduce((s,[o,i])=>s.concat(y({value:o},i)),[]),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"(s,o,{form:i}){const{values:f}=i,{evaluate:l}=h.evaluators.get(f.engine),c=s.trim().replace(/{{\s*([^{}]+)\s*}}/g,"1");try{return l(c),""}catch(b){return r.i18n.t("Expression syntax error",{ns:S})}}}}));d(this,"filterable",{operators:ee.number});d(this,"titleUsable",!0)}}const ne=new r.SchemaSettings({name:"fieldSettings:component:Formula.Result",items:[{name:"displayFormat",Component:r.SchemaSettingsNumberFormat,useComponentProps(){const e=a.useFieldSchema(),{fieldSchema:t}=r.useColumnSchema();return{fieldSchema:t||e}},useVisible(){const e=a.useFieldSchema(),{fieldSchema:t}=r.useColumnSchema(),s=t||e,{dataType:o}=R(s)||{},i=["integer","bigInt","double","decimal"].includes(o);return r.useIsFieldReadPretty()&&i}}]});class w extends r.Plugin{load(){return $(this,null,function*(){this.app.addComponents({Formula:q}),this.app.addScopes({renderExpressionDescription:X}),this.app.dataSourceManager.addFieldInterfaces([re]),this.app.schemaSettingsManager.add(ne)})}}n.PluginFieldFormulaClient=w,n.default=w,Object.defineProperties(n,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}})});
|
package/dist/externalVersion.js
CHANGED
|
@@ -9,13 +9,13 @@
|
|
|
9
9
|
|
|
10
10
|
module.exports = {
|
|
11
11
|
"@formily/react": "2.3.0",
|
|
12
|
-
"@nocobase/client": "1.5.0-
|
|
13
|
-
"@nocobase/evaluators": "1.5.0-
|
|
14
|
-
"@nocobase/utils": "1.5.0-
|
|
12
|
+
"@nocobase/client": "1.5.0-beta.2",
|
|
13
|
+
"@nocobase/evaluators": "1.5.0-beta.2",
|
|
14
|
+
"@nocobase/utils": "1.5.0-beta.2",
|
|
15
15
|
"react": "18.2.0",
|
|
16
|
-
"@nocobase/database": "1.5.0-
|
|
17
|
-
"@nocobase/server": "1.5.0-
|
|
18
|
-
"@nocobase/test": "1.5.0-
|
|
16
|
+
"@nocobase/database": "1.5.0-beta.2",
|
|
17
|
+
"@nocobase/server": "1.5.0-beta.2",
|
|
18
|
+
"@nocobase/test": "1.5.0-beta.2",
|
|
19
19
|
"react-i18next": "11.18.6",
|
|
20
20
|
"@formily/core": "2.3.0",
|
|
21
21
|
"@formily/reactive": "2.3.0",
|
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.5.0-
|
|
7
|
+
"version": "1.5.0-beta.2",
|
|
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": "8a9c29fdac5c6295dcc7abf00c3fa81bd9e01a36",
|
|
29
29
|
"keywords": [
|
|
30
30
|
"Collection fields"
|
|
31
31
|
]
|