@ebuilding/base 2.3.3 → 2.3.6
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/components/codemirror/src/index.module.d.ts +1 -1
- package/components/codemirror/src/main/common-enhanced.d.ts +51 -0
- package/components/codemirror/src/{tools/formula.d.ts → main/common-formula.d.ts} +2 -2
- package/components/codemirror/src/main/formula-enhanced.d.ts +84 -0
- package/components/codemirror/src/main/index.component.d.ts +75 -0
- package/components/codemirror/src/public_api.d.ts +1 -1
- package/fesm2022/components.codemirror.mjs +1068 -1478
- package/fesm2022/components.codemirror.mjs.map +1 -1
- package/package.json +244 -244
- package/components/codemirror/src/default/index.d.ts +0 -210
- package/components/codemirror/src/tools/common.d.ts +0 -17
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"components.codemirror.mjs","sources":["../../../../packages/base/components/codemirror/src/tools/formula.ts","../../../../packages/base/components/codemirror/src/tools/common.ts","../../../../packages/base/components/codemirror/src/default/index.ts","../../../../packages/base/components/codemirror/src/default/index.html","../../../../packages/base/components/codemirror/src/index.module.ts","../../../../packages/base/components/codemirror/src/public_api.ts","../../../../packages/base/components/codemirror/components.codemirror.ts"],"sourcesContent":["import { InjectionToken } from \"@angular/core\";\r\nexport const KRE_CODEMIRROR_TOKEN = new InjectionToken<any>(\r\n \"KRE_CODEMIRROR_TOKEN\"\r\n);\r\nexport class Formula {\r\n\r\n FormulaUsage = [\r\n {\r\n category: \"数学函数\",\r\n contains: [\r\n {\r\n name: \"ABS\",\r\n intro: \"ABS函数可以获取一个数的绝对值\",\r\n usage: \"ABS(数字)\",\r\n example: \"ABS(-1)可以返回1,也就是-1的绝对值\",\r\n },\r\n {\r\n name: \"AVERAGE\",\r\n intro: \"AVERAGE函数可以获取一组数值的算术平均值\",\r\n usage: \"AVERAGE(数字1,数字2,...)\",\r\n example:\r\n \"AVERAGE({语文成绩},{数学成绩}, {英语成绩})返回三门课程的平均分\",\r\n },\r\n {\r\n name: \"CEILING\",\r\n intro: \"CEILING函数可以将数字增大到最接近原值的指定因数的倍数\",\r\n usage: \"CEILING(数字,因数)\",\r\n example:\r\n \"CEILING(7,6)返回12,因为12比7大的同时,也是6的倍数中最接近7的数字\",\r\n },\r\n {\r\n name: \"COUNT\",\r\n intro: \"COUNT函数可以获取参数的数量\",\r\n usage: \"COUNT(值,值,...)\",\r\n example: \"COUNT(小明,小王,小张,小李)返回4,也就是人员的数量\",\r\n },\r\n {\r\n name: \"COUNTIF\",\r\n intro: \"COUNTIF函数可以获取数组中满足条件的参数个数\",\r\n usage: 'COUNTIF(数组,\"条件\")',\r\n example:\r\n 'COUNTIF(子表单.性别, \"女\"),可得到子表单中性别填的是\"女\"的数据条数;COUNTIF([1,2,3,4],\">2\"),可得到1,2,3,4中大于2的数字数量,结果为2。',\r\n },\r\n {\r\n name: \"FIXED\",\r\n intro: \"FIXED函数可将数字舍入到指定的小数位数并输出为文本\",\r\n usage: \"FIXED(数字,小数位数)\",\r\n example: 'FIXED(3.1415,2)返回\"3.14\"',\r\n },\r\n {\r\n name: \"FLOOR\",\r\n intro: \"FLOOR函数可将数字减小到最接近原值的指定因数的倍数\",\r\n usage: \"FLOOR(数字,因数)\",\r\n example:\r\n \"FLOOR(7,6)返回6,因为6比7小的同时,也是6的倍数中最接近7的数字\",\r\n },\r\n {\r\n name: \"INT\",\r\n intro: \"INT函数可以获取一个数的整数部分\",\r\n usage: \"INT(数字)\",\r\n example: \"INT(3.1415)返回3,也就是3.1415的整数部分\",\r\n },\r\n {\r\n name: \"LARGE\",\r\n intro: \"LARGE函数可以获取数据集中第k个最大值\",\r\n usage: \"LARGE(数组,k)\",\r\n example:\r\n 'LARGE({学生成绩.数学成绩},1)返回子表单\"学生成绩\"中排名第1的\"数学成绩\"',\r\n },\r\n {\r\n name: \"LOG\",\r\n intro: \"LOG函数可以根据指定底数返回数字的对数\",\r\n usage: \"LOG(数字,底数)\",\r\n example: \"LOG(100,10)返回2,也就是以10为底数100的对数\",\r\n },\r\n {\r\n name: \"MAX\",\r\n intro: \"MAX函数可以获取一组数值的最大值\",\r\n usage: \"MAX(数字1,数字2,...)\",\r\n example:\r\n \"MAX({语文成绩},{数学成绩},{英语成绩})返回三门课程中的最高分\",\r\n },\r\n {\r\n name: \"MIN\",\r\n intro: \"MIN函数可以获取一组数值的最小值\",\r\n usage: \"MIN(数字1,数字2,...)\",\r\n example:\r\n \"MAX({语文成绩},{数学成绩},{英语成绩})返回三门课程中的最低分\",\r\n },\r\n {\r\n name: \"MOD\",\r\n intro: \"MOD函数可以获取两数相除的余数\",\r\n usage: \"MOD(被除数,除数)\",\r\n example: \"MOD(4,3)返回1,也就是4/3的余数\",\r\n },\r\n {\r\n name: \"POWER\",\r\n intro: \"POWER函数可以获取数字乘幂的结果\",\r\n usage: \"POWER(数字,指数)\",\r\n example: \"POWER(3,2)返回9,也就是3的2次方\",\r\n },\r\n {\r\n name: \"PRODUCT\",\r\n intro: \"PRODUCT函数可以获取一组数值的乘积\",\r\n usage: \"PRODUCT(数字1,数字2,...)\",\r\n example: \"PRODUCT({单价}, {数量})获取总价,也就是单价和数量的乘积\",\r\n },\r\n {\r\n name: \"ROUND\",\r\n intro: \"ROUND函数可以将数字四舍五入到指定的位数\",\r\n usage: \"ROUND(数字,数字位数)\",\r\n example: \"ROUND(3.1485,2)返回3.15\",\r\n },\r\n {\r\n name: \"SQRT\",\r\n intro: \"SQRT函数可以获取一个数字的正平方根\",\r\n usage: \"SQRT(数字)\",\r\n example: \"SQRT(9)返回3,也就是9的正平方根\",\r\n },\r\n {\r\n name: \"SUM\",\r\n intro: \"SUM函数可以获取一组数值的总和\",\r\n usage: \"SUM(数字1,数字2,...)\",\r\n example: \"SUM({语文成绩},{数学成绩}, {英语成绩})返回三门课程的总分\",\r\n },\r\n {\r\n name: \"SUMPRODUCT\",\r\n intro:\r\n \"SUMPRODUCT函数可以将数组间对应的元素相乘,并返回乘积之和,适用于加权求和\",\r\n usage: \"SUMPRODUCT(数组,数组...)\",\r\n example:\r\n \"SUMPRODUCT([1,2,3],[0.1,0.2,0.3])返回1.4,也就是 1×0.1 + 2×0.2 + 3×0.3的值\",\r\n },\r\n ],\r\n },\r\n {\r\n category: \"文本函数\",\r\n contains: [\r\n {\r\n name: \"CONCATENATE\",\r\n intro: \"CONCATENATE函数可以将多个文本合并成一个文本\",\r\n usage: \"CONCATENATE(文本1,文本2,...)\",\r\n example:\r\n 'CONCATENATE(\"小小人力资源科技股份有限公司\",\"张三\")会返回\"小小人力资源科技股份有限公司张三\"',\r\n },\r\n {\r\n name: \"EXACT\",\r\n intro:\r\n \"EXACT函数可以比较两个文本是否完全相同,完全相同则返回true,否则返回false\",\r\n usage: \"EXACT(文本1, 文本2)\",\r\n example:\r\n \"EXACT({手机号},{中奖手机号}),如果两者相同,返回true,如果不相同,返回false\",\r\n },\r\n {\r\n name: \"GETUSERNAME\",\r\n intro: \"GETUSERNAME函数可以获取当前用户的昵称\",\r\n usage: \"GETUSERNAME()\",\r\n example: \"略\",\r\n },\r\n {\r\n name: \"ISEMPTY\",\r\n intro: \"ISEMPTY函数可以用来判断值是否为空文本、空对象或者空数组\",\r\n usage: \"ISEMPTY(文本)\",\r\n example: \"略\",\r\n },\r\n {\r\n name: \"LEFT\",\r\n intro: \"LEFT函数可以从一个文本的第一个字符开始返回指定个数的字符\",\r\n usage: \"LEFT(文本,文本长度)\",\r\n example:\r\n 'LEFT(\"上海小小人力资源科技股份有限公司张三\",2)返回\"上海\",也就是\"上海小小人力资源科技股份有限公司张三\"的从左往右的前2个字符',\r\n },\r\n {\r\n name: \"LEN\",\r\n intro: \"LEN函数可以获取文本中的字符个数\",\r\n usage: \"LEN(文本)\",\r\n example: 'LEN(\"朝辞白帝彩云间\")返回7,因为这句诗中有7个字符',\r\n },\r\n {\r\n name: \"LOWER\",\r\n intro: \"LOWER函数可以将一个文本中的所有大写字母转换为小写字母\",\r\n usage: \"LOWER(文本)\",\r\n example: 'LOWER(\"JAYZ\")返回\"jayz\"',\r\n },\r\n {\r\n name: \"SUBSTRING\",\r\n intro: \"SUBSTRING返回文本中从指定位置开始到指定位置结束的字符\",\r\n usage: \"SUBSTRING(文本,开始位置_数字,结束位置_数字)\",\r\n example:\r\n 'SUBSTRING(\"小小数字化组织效能提升专家\",3,5)返回\"数字化\"',\r\n },\r\n {\r\n name: \"REPLACE\",\r\n intro: \"REPLACE函数可以根据指定的字符数,将部分文本替换为不同的文本\",\r\n usage: \"REPLACE(文本,开始位置,替换长度,新文本)\",\r\n example:\r\n 'REPLACE(\"小小应用定制工具\",5,6,\"企业数据管理平台\")返回\"小小企业数据管理平台\"',\r\n },\r\n {\r\n name: \"REPT\",\r\n intro: \"REPT函数可以将文本重复一定次数\",\r\n usage: \"REPT(文本,重复次数)\",\r\n example: 'REPT(\"小小\",3)返回\"小小小小小小\"',\r\n },\r\n {\r\n name: \"RIGHT\",\r\n intro: \"RIGHT函数可以获取由给定文本右端指定数量的字符构成的文本值\",\r\n usage: \"RIGHT(文本,文本长度)\",\r\n example:\r\n 'RIGHT(\"三年二班周杰伦\",3)返回\"周杰伦\",也就是\"三年二班周杰伦\"从右往左的前3个字符',\r\n },\r\n {\r\n name: \"SEARCH\",\r\n intro: \"SEARCH函数可以获取文本1在文本2中的开始位置\",\r\n usage: \"SEARCH(文本1,文本2)\",\r\n example: 'SEARCH(\"2021\",\"小小2021\")返回4',\r\n },\r\n {\r\n name: \"SPLIT\",\r\n intro: \"SPLIT函数可以将文本按指定分割符分割成数组\",\r\n usage: \"SPLIT(文本,分隔符_文本)\",\r\n example:\r\n 'SPLIT(\"小小-应用定制工具\",\"-\")返回\"小小,应用定制工具\"',\r\n },\r\n {\r\n name: \"TEXT\",\r\n intro: \"TEXT函数可以将数字转化成文本\",\r\n usage: \"TEXT(数字)\",\r\n example: 'TEXT(3.1415)返回\"3.1415\"',\r\n },\r\n {\r\n name: \"TRIM\",\r\n intro: \"TRIM函数可以删除文本首尾的空格\",\r\n usage: \"TRIM(文本)\",\r\n example: 'TRIM(\" 小小 \")返回\"小小\"',\r\n },\r\n {\r\n name: \"UPPER\",\r\n intro: \"UPPER函数可以将一个文本中的所有小写字母转换为大写字母\",\r\n usage: \"UPPER(文本)\",\r\n example: 'UPPER(\"jayz\")返回\"JAYZ\"',\r\n },\r\n {\r\n name: \"VALUE\",\r\n intro: \"VALUE函数可以将文本转化为数字\",\r\n usage: \"VALUE(文本)\",\r\n example: 'VALUE(\"3.1415\")返回3.1415',\r\n },\r\n ],\r\n },\r\n {\r\n category: \"日期函数\",\r\n contains: [\r\n {\r\n name: \"DATE\",\r\n intro: \"DATE函数可以将时间戳转换为日期对象\",\r\n usage: \"DATE(时间戳)\",\r\n example: \"略\",\r\n },\r\n {\r\n name: \"DATEDELTA\",\r\n intro: \"DATEDELTA函数可以将指定日期加/减指定天数\",\r\n usage: \"DATEDELTA(指定日期,需要加减的天数)\",\r\n example: \"略\",\r\n },\r\n {\r\n name: \"DAY\",\r\n intro: \"DAY函数可以获取某日期是当月的第几日\",\r\n usage: \"DAY(时间戳)\",\r\n example: \"略\",\r\n },\r\n {\r\n name: \"DAYS\",\r\n intro: \"DAYS函数可以返回两个日期之间相差的天数。\",\r\n usage: \"DAYS(结束日期,开始日期)\",\r\n example: \"略\",\r\n },\r\n {\r\n name: \"HOUR\",\r\n intro: \"HOUR函数可以返回某日期的小时数\",\r\n usage: \"HOUR(时间戳)\",\r\n example: \"略\",\r\n },\r\n {\r\n name: \"ISOWEEKNUM\",\r\n intro: \"ISOWEEKNUM函数可以返回指定日期在全年中的ISO周数\",\r\n usage: \"ISOWEEKNUM(指定日期)\",\r\n example: \"略\",\r\n },\r\n {\r\n name: \"MINUTE\",\r\n intro: \"MINUTE函数可以返回某日期的分钟数\",\r\n usage: \"MINUTE(日期)\",\r\n example: \"略\",\r\n },\r\n {\r\n name: \"MONTH\",\r\n intro: \"MONTH返回某日期的月份\",\r\n usage: \"MONTH(日期)\",\r\n example: \"略\",\r\n },\r\n {\r\n name: \"NOW\",\r\n intro: \"NOW函数可以获取当前时间\",\r\n usage: \"NOW()\",\r\n example: \"略\",\r\n },\r\n {\r\n name: \"SECOND\",\r\n intro: \"SECOND函数可以返回某日期的秒数\",\r\n usage: \"SECOND(日期)\",\r\n example: \"略\",\r\n },\r\n {\r\n name: \"SYSTIME\",\r\n intro: \"SYSTIME函数可以获取当前服务器时间\",\r\n usage: \"SYSTIME()\",\r\n example: \"略\",\r\n },\r\n {\r\n name: \"TIME\",\r\n intro: \"TIME函数可以返回特定时间的十进制数字\",\r\n usage: \"TIME(时_数字,分_数字,秒_数字)\",\r\n example: \"略\",\r\n },\r\n {\r\n name: \"TIMESTAMP\",\r\n intro: \"TIMESTAMP函数可以将日期对象转换成时间戳。\",\r\n usage: \"TIMESTAMP(日期)\",\r\n example: \"略\",\r\n },\r\n {\r\n name: \"TODAY\",\r\n intro: \"TODAY函数可以返回今天\",\r\n usage: \"TODAY()\",\r\n example: \"略\",\r\n },\r\n {\r\n name: \"WEEKNUM\",\r\n intro: \"WEEKNUM函数可以返回指定日期在当年是第几周\",\r\n usage: \"WEEKNUM(指定日期)\",\r\n example: \"略\",\r\n },\r\n {\r\n name: \"YEAR\",\r\n intro: \"YEAR函数可以返回某日期的年份\",\r\n usage: \"YEAR(时间戳)\",\r\n example: \"略\",\r\n },\r\n {\r\n name: \"STRDATE\",\r\n intro: \"STRDATE函数可以将字符串转换为日期\",\r\n usage: \"STRDATE(年月日)\",\r\n example: 'STRDATE(\"19860913\") 返回1986-09-13',\r\n },\r\n {\r\n name: \"DATEMINUS\",\r\n intro: \"DATEMINUS函数可以求2个日期相差的年、月、天、小时数\",\r\n usage: \"DATEMINUS(开始日期,结束日期,'1')\",\r\n example: 'DATEMINUS(\"2020-01-01\",\"2021-01-02\",\"3\") 返回1,单位为天。第三个参数1为年,2为月,3为天,4为小时',\r\n },\r\n\r\n\r\n ],\r\n },\r\n {\r\n category: \"逻辑函数\",\r\n contains: [\r\n {\r\n name: \"AND\",\r\n intro:\r\n \"如果所有参数都为真,AND函数返回布尔值true,否则返回布尔值 false\",\r\n usage: \"AND(逻辑表达式1,逻辑表达式2,...)\",\r\n example:\r\n \"AND({语文成绩}>90,{数学成绩}>90,{英语成绩}>90),如果三门课成绩都> 90,返回true,否则返回false\",\r\n },\r\n {\r\n name: \"FALSE\",\r\n intro: \"FALSE函数返回布尔值false\",\r\n usage: \"FALSE()\",\r\n example: \"略\",\r\n },\r\n {\r\n name: \"IF\",\r\n intro:\r\n \"IF函数判断一个条件能否满足;如果满足返回一个值,如果不满足则返回另外一个值\",\r\n usage: \"IF(逻辑表达式,为true时返回的值,为false时返回的值)\",\r\n example:\r\n 'IF({语文成绩}>60,\"及格\",\"不及格\"),当语文成绩>60时返回及格,否则返回不及格。',\r\n },\r\n {\r\n name: \"NOT\",\r\n intro: \"NOT函数返回与指定表达式相反的布尔值。\",\r\n usage: \"NOT(逻辑表达式)\",\r\n example:\r\n \"NOT({语文成绩}>60),如果语文成绩大于60返回false,否则返回true\",\r\n },\r\n {\r\n name: \"OR\",\r\n intro:\r\n \"如果任意参数为真,OR 函数返回布尔值true;如果所有参数为假,返回布尔值false。\",\r\n usage: \"OR(逻辑表达式1,逻辑表达式2,...)\",\r\n example:\r\n \"OR({语文成绩}>90,{数学成绩}>90,{英语成绩}>90),任何一门课成绩> 90,返回true,否则返回false\",\r\n },\r\n {\r\n name: \"TRUE\",\r\n intro: \"TRUE函数返回布尔值true\",\r\n usage: \"TRUE()\",\r\n example: \"略\",\r\n },\r\n {\r\n name: \"XOR\",\r\n intro: \"XOR函数可以返回所有参数的异或值\",\r\n usage: \"XOR(逻辑表达式1, 逻辑表达式2,...)\",\r\n example:\r\n \"XOR({语文成绩}>90,{数学成绩}>90),如果两门成绩都>90,返回false;如果两门成绩都<90,返回false;如果其中一门>90,另外一门<90,返回true\",\r\n },\r\n ],\r\n },\r\n {\r\n category: \"高级函数\",\r\n contains: [\r\n {\r\n name: \"MAPX\",\r\n intro: \"MAPX函数是一个可以用来进行跨表单取数的高级函数\",\r\n usage: \"MAPX(operation,map_value,map_field,result_field)\",\r\n example: \"略\",\r\n },\r\n {\r\n name: \"RECNO\",\r\n intro: \"RECNO函数依据当前表单被新打开的次数进行不断累计,起始值为1。\",\r\n usage: \"RECNO()\",\r\n example: \"略\",\r\n },\r\n {\r\n name: \"UUID\",\r\n intro: \"UUID函数随机码生成器。可适用于随机流水号的使用场景等\",\r\n usage: \"UUID()\",\r\n example: \"略\",\r\n },\r\n ],\r\n },\r\n ];\r\n\r\n\r\n FormulaEditor = {\r\n CONST: {\r\n NAME_FILED_CLS: \"cm-field-name\",\r\n VALUE_FIELD_CLS: \"cm-field-value\",\r\n INVALID_FIELD_CLS: \"cm-field-invalid\",\r\n DEPRECATE_FIELD_CLS: \"cm-deprecate\",\r\n NEGATIVE_FIELD_CLS: \"cm-negative\",\r\n FIELD_REG:\r\n /^\\$({*|_formula_[0-9]{13}|ext|createTime|updateTime|creator|wx_open_id|wx_nickname|wx_gender)/,\r\n },\r\n COMMON_REG: {\r\n VALIDATOR_FORMULA: \"(\\\\$[{0-9a-zA-Z._]+})\",\r\n FORM_FORMULA: \"(\\\\$[{0-9a-zA-Z._}@]+)\",\r\n NEW_LINE: \"[\\\\r\\\\n]\",\r\n },\r\n };\r\n\r\n Utils: any = {};\r\n\r\n Formula: any = {};\r\n\r\n constructor() {\r\n let that = this;\r\n that.Utils = {\r\n isString: function (a) {\r\n return \"string\" == typeof a;\r\n },\r\n isNumber: function (b) {\r\n return this.isNumeric(b);\r\n },\r\n isFunction: function (b) {\r\n return this.isFunction(b);\r\n },\r\n isDate: function (a) {\r\n return a instanceof Date;\r\n },\r\n isArray: function (b) {\r\n return this.isArray(b);\r\n },\r\n isEmpty: function (a) {\r\n return \"\" === a || this.Utils.isNull(a);\r\n },\r\n isBlank: function (a) {\r\n return this.Utils.isNull(a) || \"\" === a.trim();\r\n },\r\n isNull: function (a) {\r\n return null == a;\r\n },\r\n isObjectEmpty: function (a) {\r\n if (null == a) return !0;\r\n if (a.length > 0) return !1;\r\n if (0 === a.length) return !0;\r\n for (var b in a) {\r\n if (this.hasOwnProperty.call(a, b)) {\r\n return !1;\r\n }\r\n return isNaN(a);\r\n }\r\n return null;\r\n },\r\n isValueWidget: function (a) {\r\n return !!this.ValueWidgets[a];\r\n },\r\n address2Str: function (a, b, c) {\r\n if (c && a) {\r\n b = \"\";\r\n var d = !0;\r\n /p/.test(c) &&\r\n a.province &&\r\n ((b += a.province), a.province === a.city && (d = !1)),\r\n /c/.test(c) && a.city && d && (b += a.city),\r\n /d/.test(c) && a.district && (b += a.district),\r\n /a/.test(c) && a.detail && (b += a.detail);\r\n }\r\n return b;\r\n },\r\n num2Str: function (a, b) {\r\n if (this.Utils.isEmpty(a)) return \"\";\r\n var c = a + \"\";\r\n if (this.Utils.isEmpty(b)) return c;\r\n var d = /\\[Num0\\]/;\r\n if (d.test(b)) return b.replace(d, c);\r\n if (((d = /\\[Num1\\]/), d.test(b)))\r\n return b.replace(d, this.Utils._num2CN(c, !1));\r\n if (((d = /\\[Num2\\]/), d.test(b)))\r\n return b.replace(d, this.Utils._num2CN(c, !0));\r\n d = /[#0]+,?[#0]*\\.?[#0]*%?/;\r\n var e = b.match(d);\r\n if (e && e.length > 0) {\r\n var f = e[0];\r\n return (c = this.Utils._numberFormat(a, f)), b.replace(d, c);\r\n }\r\n return b;\r\n },\r\n _numberFormat: function (a, b) {\r\n var c = \"\",\r\n d = a + \"\";\r\n if (/%$/.test(b)) {\r\n (c = \"%\"), (a = 100 * a), (b = b.replace(\"%\", \"\"));\r\n var e = d.indexOf(\".\");\r\n if (e > -1) {\r\n var f = d.length - 3 - e;\r\n (f = f < 0 ? 0 : f > 8 ? 8 : f), (a = parseFloat(a.toFixed(f)));\r\n }\r\n d = a + \"\";\r\n }\r\n var g = b.split(\".\"),\r\n h = g[0],\r\n i = g[1];\r\n if (\"\" !== i) {\r\n var j = i ? i.length : 0;\r\n d = parseFloat(a).toFixed(j);\r\n for (\r\n var k: any = d.split(\"\"), l = j;\r\n l > 0 && \"#\" === i.charAt(l - 1);\r\n l--\r\n ) {\r\n var m = k.pop();\r\n if (\"0\" !== m) {\r\n k.push(m);\r\n break;\r\n }\r\n }\r\n var n = k.pop();\r\n \".\" === n && (n = \"\"), (d = k.join(\"\") + n);\r\n }\r\n var o = d.split(\".\"),\r\n p = o[0];\r\n if (/,/.test(h))\r\n o[0] = p.replace(/(\\d{1,3})(?=(?:\\d{3})+(?!\\d))/g, \"$1,\");\r\n else {\r\n var q = h.match(/[0]+[0#]*$/);\r\n q && q.length > 0 && (o[0] = this.Utils.leftPad(p, q[0].length, \"0\"));\r\n }\r\n return o.join(\".\") + c;\r\n },\r\n _num2CN: function (a, b) {\r\n var c = \"〇一二三四五六七八九\",\r\n d = \"个十百千万亿\";\r\n b && ((c = \"零壹贰叁肆伍陆柒捌玖\"), (d = \"个拾佰仟万亿\"));\r\n var e = Math.floor(Math.abs(a)),\r\n f = Math.abs(a).toString(),\r\n g = f.replace(/\\..*$/, \"\"),\r\n h = f.split(\".\"),\r\n i = c,\r\n j = d,\r\n k = \"-.\",\r\n l = i[0],\r\n m = new RegExp(i[0] + \"*$\"),\r\n n = new RegExp(i[0] + \"+\", \"g\"),\r\n o = \"\",\r\n p = \"\";\r\n if (((o = a < 0 ? k[0] : \"\"), h.length >= 2)) {\r\n var q = h[1];\r\n if (q) {\r\n p = k[1];\r\n for (var r = 0; r < q.length; r++) p += i[+q[r]];\r\n }\r\n }\r\n if (1 == g.length) return o + i[e] + p;\r\n if (g.length <= 5) {\r\n for (var s = \"\", t = 0, e = g.length; e--;) {\r\n var u = +g[t];\r\n (s += this._num2CN(g[t], b) + (u && e ? j[e] : \"\")), t++;\r\n }\r\n return (s = s.replace(n, l)), (s = s.replace(m, \"\")), o + s + p;\r\n }\r\n for (\r\n var v = (g.length / 4) >> 0, w = g.length % 4, s = \"\";\r\n 0 == w || !j[3 + v];\r\n\r\n )\r\n (w += 4), v--;\r\n if (+g.substr(0, w)) {\r\n s = this._num2CN(g.substr(0, w), b) + j[3 + v];\r\n var x = g.substr(w);\r\n \"0\" === x[0] && (s += i[0]), (s += this._num2CN(x, b));\r\n } else s = this._num2CN(g.substr(0, w), b) + this._num2CN(g.substr(w), b);\r\n return (s = s.replace(n, l)), (s = s.replace(m, \"\")), o + s + p;\r\n },\r\n date2Str: function (a, b) {\r\n if (!a) return \"\";\r\n var c = b.length,\r\n d = \"\";\r\n if (c > 0) {\r\n for (var e = b.charAt(0), f = 0, g = e, h = 1; h < c; h++) {\r\n var i = b.charAt(h);\r\n e !== i\r\n ? ((d += this.Utils._compileDateFormat(\r\n {\r\n char: e,\r\n str: g,\r\n len: h - f,\r\n },\r\n a\r\n )),\r\n (e = i),\r\n (f = h),\r\n (g = e))\r\n : (g += i);\r\n }\r\n d += this.Utils._compileDateFormat(\r\n {\r\n char: e,\r\n str: g,\r\n len: c - f,\r\n },\r\n a\r\n );\r\n }\r\n return d;\r\n },\r\n _compileDateFormat: function (a, b) {\r\n var c = a.str,\r\n d = a.len,\r\n e = a.char;\r\n switch (e) {\r\n case \"E\":\r\n // c =\r\n // d > 2\r\n // ? Date._DN[b.getDay()]\r\n // : d > 1\r\n // ? Date._SDN[b.getDay()]\r\n // : b.getDay() + \"\";\r\n break;\r\n case \"y\":\r\n c = d <= 3 ? (b.getFullYear() + \"\").slice(2, 4) : b.getFullYear();\r\n break;\r\n case \"M\":\r\n // c =\r\n // d > 2\r\n // ? Date._MN[b.getMonth()]\r\n // : d < 2\r\n // ? b.getMonth() + 1\r\n // : this.Utils.leftPad(b.getMonth() + 1 + \"\", 2, \"0\");\r\n break;\r\n case \"d\":\r\n c =\r\n d > 1 ? this.Utils.leftPad(b.getDate() + \"\", 2, \"0\") : b.getDate();\r\n break;\r\n case \"h\":\r\n var f = b.getHours() % 12;\r\n 0 === f && (f = 12),\r\n (c = d > 1 ? this.Utils.leftPad(f + \"\", 2, \"0\") : f);\r\n break;\r\n case \"H\":\r\n c =\r\n d > 1\r\n ? this.Utils.leftPad(b.getHours() + \"\", 2, \"0\")\r\n : b.getHours();\r\n break;\r\n case \"m\":\r\n c =\r\n d > 1\r\n ? this.Utils.leftPad(b.getMinutes() + \"\", 2, \"0\")\r\n : b.getMinutes();\r\n break;\r\n case \"s\":\r\n c =\r\n d > 1\r\n ? this.Utils.leftPad(b.getSeconds() + \"\", 2, \"0\")\r\n : b.getSeconds();\r\n break;\r\n case \"a\":\r\n c = b.getHours() < 12 ? \"am\" : \"pm\";\r\n break;\r\n default:\r\n c = a.str;\r\n }\r\n return c;\r\n },\r\n pick: function (a, b) {\r\n var c = {};\r\n return (\r\n this.Utils.forEach(b, function (b, d) {\r\n d in a && (c[d] = a[d]);\r\n }),\r\n c\r\n );\r\n },\r\n applyFunc: function (a, b, c, d) {\r\n return this.Utils.isFunction(b) ? b.apply(a, c ? c : []) : d;\r\n },\r\n forEach(a: any, b: any) {\r\n if (Array.isArray(a))\r\n for (var c = 0, d = a.length; c < d && b.apply(a[c], [c, a[c]]) !== !1; c++);\r\n else if (a && 'object' == typeof a)\r\n for (var e in a) if (a.hasOwnProperty(e) && b.apply(a[e], [e, a[e]]) === !1) break;\r\n },\r\n flatten: function (a, b, c) {\r\n if ((c || (c = []), a))\r\n for (var d = 0, e = a.length; d < e; d++) {\r\n var f = a[d];\r\n Array.isArray(f)\r\n ? this.Utils.flatten(f, b, c)\r\n : (b && !b(f)) || c.push(f);\r\n }\r\n return c;\r\n },\r\n applyCss: function (a, b) {\r\n this.Utils.isEmpty(b) ||\r\n (this.Utils.isString(b) ? a.addClass(b) : a.css(b));\r\n },\r\n getServerDate: function (a) {\r\n if (a && a.getResponseHeader) {\r\n var b = a.getResponseHeader(\"date\");\r\n b &&\r\n ((this.STATIC._st = new Date(b).getTime()),\r\n (this.STATIC._ct = new Date().getTime()));\r\n }\r\n },\r\n getUrlParameter: function (a) {\r\n for (\r\n var b = window.location.search.substring(1), c = b.split(\"&\"), d = 0;\r\n d < c.length;\r\n d++\r\n ) {\r\n var e = c[d].split(\"=\");\r\n if (e[0] == a) return e[1];\r\n }\r\n return null;\r\n },\r\n validateEmail: function (a) {\r\n return /^([a-zA-Z0-9_\\.\\-])+\\@(([a-zA-Z0-9\\-])+\\.)+([a-zA-Z0-9]{2,4})+$/.test(\r\n a\r\n );\r\n },\r\n redirectTo: function (a) {\r\n window.location.href = a;\r\n },\r\n isCanvasSupported: function () {\r\n var a = document.createElement(\"canvas\");\r\n return !(!a.getContext || !a.getContext(\"2d\"));\r\n },\r\n isFormDataSupported: function () {\r\n return void 0 !== window.FormData;\r\n },\r\n getFileDownloadURL: function (a, b, c) {\r\n switch (a.bucket) {\r\n case this.CONST.QN_BUCKET.PUBLIC_IMAGE:\r\n var d = \"\",\r\n e = a.thumb;\r\n return (\r\n e &&\r\n (d =\r\n \"?imageView2/\" + e.mode + \"/w/\" + e.width + \"/h/\" + e.height),\r\n b(this.CONFIG.HOST.IMAGE_HOST + \"/\" + a.qnKey + d)\r\n );\r\n case this.CONST.OSS_BUCKET.PUBLIC_IMAGE:\r\n return b(this.CONFIG.HOST.OSS_IMAGE_HOST + \"/\" + a.ossKey);\r\n case this.CONST.QN_BUCKET.PRIVATE_FILE:\r\n default:\r\n return c();\r\n }\r\n },\r\n evalFormula: function (a) {\r\n var b: any = [];\r\n this.Utils.forEach(Object.keys(this.Formula), function (a, c) {\r\n b.push(`var ${c}=fml.Formula.${c}`);\r\n });\r\n var it = b.join(\";\") + \";\";\r\n var c = new Function(it + \"return \" + a)();\r\n return c;\r\n },\r\n createEntryAttributeField: function (b, c) {\r\n var d = {\r\n id: c.entryId,\r\n };\r\n switch (b) {\r\n case \"ext\":\r\n this.extend(d, {\r\n name: \"ext\",\r\n type: \"text\",\r\n text: \"扩展字段\",\r\n items: c.extParams,\r\n });\r\n break;\r\n case \"createTime\":\r\n this.extend(d, {\r\n name: \"createTime\",\r\n type: \"datetime\",\r\n format: \"yyyy-MM-dd HH:mm:ss\",\r\n text: \"提交时间\",\r\n });\r\n break;\r\n case \"updateTime\":\r\n this.extend(d, {\r\n name: \"updateTime\",\r\n type: \"datetime\",\r\n format: \"yyyy-MM-dd HH:mm:ss\",\r\n text: \"更新时间\",\r\n });\r\n break;\r\n case \"creator\":\r\n this.extend(d, {\r\n name: \"creator\",\r\n type: \"text\",\r\n text: \"提交人\",\r\n });\r\n break;\r\n case \"flowState\":\r\n this.extend(d, {\r\n name: \"flowState\",\r\n type: \"flowState\",\r\n text: \"流程状态\",\r\n });\r\n break;\r\n case \"chargers\":\r\n this.extend(d, {\r\n name: \"chargers\",\r\n type: \"chargers\",\r\n text: \"当前节点/负责人\",\r\n });\r\n break;\r\n case \"deleter\":\r\n this.extend(d, {\r\n name: \"deleter\",\r\n type: \"text\",\r\n text: \"删除人\",\r\n });\r\n break;\r\n case \"deleteTime\":\r\n this.extend(d, {\r\n name: \"deleteTime\",\r\n type: \"datetime\",\r\n format: \"yyyy-MM-dd HH:mm:ss\",\r\n text: \"删除时间\",\r\n });\r\n break;\r\n default:\r\n return null;\r\n }\r\n return d;\r\n },\r\n createWidgetName: function () {\r\n return \"{\" + this.STATIC.IDBase++;\r\n },\r\n formatFileSize: function (a) {\r\n return this.Utils.isNumber(a)\r\n ? a >= 1e9\r\n ? (a / 1e9).toFixed(2) + \" GB\"\r\n : a >= 1e6\r\n ? (a / 1e6).toFixed(2) + \" MB\"\r\n : (a / 1e3).toFixed(2) + \" KB\"\r\n : \"未知\";\r\n },\r\n chunkArray: function (a, b) {\r\n var c: any = [];\r\n if (!b || !a.length) return c;\r\n for (var d = 0, e = a.length; d < e; d += b) {\r\n var f = a.slice(d, d + b);\r\n c.push(f);\r\n }\r\n return c;\r\n },\r\n UUID: function (a) {\r\n return null;\r\n },\r\n GCD: function (a, b) {\r\n return b ? this.GCD(b, a % b) : a;\r\n },\r\n LCM: function (a, b) {\r\n return (a * b) / this.GCD(a, b);\r\n },\r\n fixDecimalPrecision: function (a, b) {\r\n let c: any = null;\r\n if ((b || (b = 8), !this.isEmpty(a))) {\r\n let d = parseFloat(a);\r\n if (!isNaN(d)) {\r\n let e: any = (d + \"\").split(\".\")[1];\r\n c == e && e.length > b ? parseFloat(d.toFixed(b)) : d,\r\n b > 6 &&\r\n Math.abs(c) < 1 &&\r\n /e-/.test(c + \"\") &&\r\n (c = parseFloat(d.toFixed(6)));\r\n }\r\n }\r\n return c;\r\n },\r\n getSelectionText: function () {\r\n // return window.getSelection\r\n // ? window.getSelection().toString()\r\n // : document.selection && document.selection.createRange\r\n // ? document.selection.createRange().text\r\n // : \"\";\r\n return null;\r\n },\r\n getCorpType: function (a) {\r\n return a\r\n ? ((a = a.toLowerCase()),\r\n /^ding/.test(a) ? \"dingtalk\" : /^w/.test(a) ? \"wechat\" : \"internal\")\r\n : null;\r\n },\r\n isCorpSuiteAdmin: function (a) {\r\n return a && (\"dingtalk\" === a || \"wechat\" === a);\r\n },\r\n getWeekStartDate: function (a) {\r\n var b = a.getDay();\r\n return (\r\n 0 === b && (b = 7),\r\n new Date(a.getFullYear(), a.getMonth(), a.getDate() - (b - 1))\r\n );\r\n },\r\n getWeekEndDate: function (a) {\r\n var b = a.getDay();\r\n return (\r\n 0 === b && (b = 7),\r\n new Date(a.getFullYear(), a.getMonth(), a.getDate() + (7 - b))\r\n );\r\n },\r\n getMonthStartDate: function (a) {\r\n return new Date(a.getFullYear(), a.getMonth(), 1);\r\n },\r\n getMonthEndDate: function (a) {\r\n return new Date(a.getFullYear(), a.getMonth() + 1, 0);\r\n },\r\n setPageTitle: function (a) {\r\n this.Utils.isEmpty(a) || (document.title = a);\r\n },\r\n createMask: function (b, c) {\r\n var d = this('<div class=\"x-window-mask\"/>'),\r\n e = c || {};\r\n if (\r\n (e.isModal && d.addClass(\"modal\"),\r\n e.isLight ? d.addClass(\"light\") : e.isDark && d.addClass(\"dark\"),\r\n e.hasLoader)\r\n ) {\r\n var f = !e.isDark;\r\n this.createLoadIcon(d, f);\r\n }\r\n return (\r\n b &&\r\n d\r\n .css({\r\n \"z-index\": this.STATIC.zIndex++,\r\n })\r\n .appendTo(b),\r\n d\r\n );\r\n },\r\n createLoadIcon: function (b, c) {\r\n var d = this('<div class=\"x-loader-icon\"/>').appendTo(b);\r\n return c && d.addClass(\"colorful\"), this(\"<div/>\").appendTo(d), d;\r\n },\r\n doPrint: function (b, c) {\r\n this(\"body\").children(\"div\").addClass(\"x-ui-notprint\");\r\n var d = this(\"#x-printer\").removeClass().empty();\r\n 0 === d.length && (d = this('<div id=\"x-printer\"/>').appendTo(\"body\")),\r\n b && d.append(b),\r\n (c = this.Utils.isNull(c) ? 0 : c),\r\n setTimeout(function () {\r\n window.print();\r\n }, c);\r\n },\r\n cancelPrint: function () {\r\n this(\"body\").children(\".x-ui-notprint\").removeClass(\"x-ui-notprint\"),\r\n this(\"#x-printer\").remove();\r\n },\r\n copyToClipboard: function (a, b) {\r\n if (a && a.length) {\r\n var c = document.createElement(\"textarea\");\r\n (c.style.background = \"transparent\"),\r\n (c.style.color = \"transparent\"),\r\n (c.value = a),\r\n document.body.appendChild(c),\r\n c.select();\r\n var d;\r\n try {\r\n d = document.execCommand(\"copy\");\r\n } catch (a) {\r\n d = !1;\r\n }\r\n document.body.removeChild(c),\r\n d && this.Utils.applyFunc(this, b, [], !1);\r\n }\r\n },\r\n getColorNumber: function (a) {\r\n return this.Utils.isEmpty(a)\r\n ? 1\r\n : (parseInt(a.toString().substring(0, 8), 16) % 6) + 1;\r\n },\r\n getFieldAttr: function (b, c) {\r\n if (!this.Utils.isValueWidget(b.widget.type)) return null;\r\n if (c && c.indexOf(b.widget.type) < 0) return null;\r\n var d = {\r\n id: b.formId,\r\n text: b.label,\r\n name: b.widget.widgetName,\r\n type: b.widget.type,\r\n };\r\n switch (b.widget.type) {\r\n case \"subform\":\r\n var e: any = [];\r\n this.Utils.forEach(b.widget.items, function (d, f) {\r\n this.extend(f, {\r\n formId: b.formId,\r\n });\r\n var g = this.Utils.getFieldAttr(f, c);\r\n g &&\r\n (this.extend(g, {\r\n subform: b.widget.widgetName,\r\n }),\r\n e.push(g));\r\n }),\r\n this.extend(d, {\r\n items: e,\r\n });\r\n break;\r\n case \"linkdata\":\r\n this.extend(d, {\r\n linkForm: b.widget.linkForm,\r\n linkFields: b.widget.linkFields,\r\n refAppId: b.widget.refAppId,\r\n });\r\n break;\r\n case \"combo\":\r\n case \"combocheck\":\r\n case \"radiogroup\":\r\n case \"checkboxgroup\":\r\n this.extend(d, {\r\n async: b.widget.async,\r\n items: b.widget.items,\r\n });\r\n break;\r\n case \"datetime\":\r\n this.extend(d, {\r\n format: b.widget.format,\r\n });\r\n }\r\n return d;\r\n },\r\n leftPad: function (a, b, c) {\r\n var d = String(a);\r\n for (c || (c = \" \"); d.length < b;) d = c + d;\r\n return d.toString();\r\n },\r\n startWith: function (a, b) {\r\n var c = a.length;\r\n return (\r\n !(null == b || \"\" == b || 0 === c || b.length > c) &&\r\n a.substr(0, b.length) == b\r\n );\r\n },\r\n getFieldInfoByFormula: function (a) {\r\n var b = {},\r\n c = a + \"\",\r\n d = c.match(/(\\$[0-9a-zA-Z\\._]+)(#[0-9a-f]+)?(@[0-9a-f]+)?/),\r\n e = [\"\", \"field\", \"entryId\", \"appId\"];\r\n return (\r\n this.Utils.forEach(d, function (a, c) {\r\n 0 !== a && c && (b[e[a]] = c.substr(1));\r\n }),\r\n b\r\n );\r\n },\r\n getFieldInfoById: function (a) {\r\n var b = {};\r\n a = \"#\" + a;\r\n var c = a.match(/(#[0-9a-f]+)(@[0-9a-f]+)?/),\r\n d = [\"\", \"entryId\", \"appId\"];\r\n return (\r\n this.Utils.forEach(c, function (a, c) {\r\n 0 !== a && c && (b[d[a]] = c.substr(1));\r\n }),\r\n b\r\n );\r\n },\r\n isWpsWebView: function () {\r\n return /wpscloudform/.test(navigator.userAgent);\r\n },\r\n callWPSAPI: function (a) {\r\n // var b = \"jsAsynCall(\" + JSON.stringify(a) + \")\";\r\n // window.cefQuery &&\r\n // window.cefQuery({\r\n // request: b,\r\n // });\r\n },\r\n onWPSPageUnload: function (a, b) {\r\n a\r\n ? this.Msg.alert({\r\n type: \"warning\",\r\n msg: \"当å‰é¡µé¢æœªä¿å˜ï¼Œæ˜¯å¦ç¡®å®šç¦»å¼€ï¼Ÿ\",\r\n text4Ok: \"离开\",\r\n text4Cancel: \"å–æ¶ˆ\",\r\n onOk: function () {\r\n this.Utils.applyFunc(this, b, [], !1);\r\n },\r\n })\r\n : this.Utils.applyFunc(this, b, [], !1);\r\n },\r\n fileDownload: function (a, b) {\r\n // if (this.Utils.isWpsWebView()) {\r\n // var c = {\r\n // method: \"downloadUrl\",\r\n // url: a,\r\n // filename: b,\r\n // },\r\n // d = b && b.split(\".\").pop();\r\n // (c.filter = \"(*.\" + (d || \"*\") + \")\"), fml.Utils.callWPSAPI(c);\r\n // } else fml.Utils.redirectTo(a);\r\n },\r\n isSupportPdf: function () {\r\n return \"undefined\" != typeof navigator.mimeTypes[\"application/pdf\"];\r\n },\r\n dt: function (a, b) {\r\n if (a) {\r\n var c = [\"e=\" + a, \"t=\" + new Date().getTime()];\r\n this.Utils.isEmpty(b) || c.push(\"ext=\" + b),\r\n this.STATIC.user &&\r\n this.STATIC.user.username &&\r\n c.push(\"u=\" + this.STATIC.user.username);\r\n var d = new Image();\r\n d.src = this.CONFIG.HOST.TRACK_HOST + \"/log?\" + c.join(\"&\");\r\n }\r\n },\r\n };\r\n\r\n this.Formula = {\r\n AND: function () {\r\n for (\r\n var a = this.Utils.flatten(arguments), b = 0, c = a.length;\r\n b < c;\r\n b++\r\n )\r\n if (!a[b]) return !1;\r\n return !0;\r\n },\r\n OR: function () {\r\n for (\r\n var a = this.Utils.flatten(arguments), b = 0, c = a.length;\r\n b < c;\r\n b++\r\n )\r\n if (a[b]) return !0;\r\n return !1;\r\n },\r\n FALSE: function () {\r\n return !1;\r\n },\r\n TRUE: function () {\r\n return !0;\r\n },\r\n IF: function (a, b, c) {\r\n return a ? b : c;\r\n },\r\n NOT: function (a) {\r\n return !a;\r\n },\r\n XOR: function () {\r\n for (\r\n var a = 0, b = this.Utils.flatten(arguments), c = 0, d = b.length;\r\n c < d;\r\n c++\r\n )\r\n b[c] && a++;\r\n return !!(1 & Math.floor(Math.abs(a)));\r\n },\r\n CONCATENATE: function () {\r\n for (\r\n var a = this.Utils.flatten(arguments), b = 0;\r\n (b = a.indexOf(!0)) > -1;\r\n\r\n )\r\n a[b] = \"TRUE\";\r\n for (var c = 0; (c = a.indexOf(!1)) > -1;) a[c] = \"FALSE\";\r\n return a.join(\"\");\r\n },\r\n EXACT: function (a, b) {\r\n return a === b;\r\n },\r\n LEFT: function (a, b) {\r\n return (b = this.Utils.isEmpty(b) ? 1 : b), a ? a.substring(0, b) : \"\";\r\n },\r\n LEN: function (a) {\r\n return this.Utils.isString(a)\r\n ? a\r\n ? a.length\r\n : 0\r\n : a && a.length\r\n ? a.length\r\n : 0;\r\n },\r\n SUBSTRING: function (a, b, c) {\r\n return (\r\n (a = a || \"\"),\r\n this.Utils.isNumber(b) && this.Utils.isNumber(c)\r\n ? a.substr(b - 1, c)\r\n : a\r\n );\r\n },\r\n LOWER: function (a) {\r\n return this.Utils.isString(a) ? (a ? a.toLowerCase() : a) : \"\";\r\n },\r\n REPLACE: function (a, b, c, d) {\r\n return this.Utils.isNumber(b) && this.Utils.isNumber(c)\r\n ? ((a = a || \"\"),\r\n (d = d || \"\"),\r\n a.substr(0, b - 1) + d + a.substr(b - 1 + c))\r\n : a;\r\n },\r\n REPT: function (a, b) {\r\n return (b = b || 0), new Array(b + 1).join(a);\r\n },\r\n RIGHT: function (a, b) {\r\n return (b = void 0 === b ? 1 : b), a ? a.substring(a.length - b) : \"\";\r\n },\r\n SEARCH: function (a, b, c) {\r\n var d;\r\n return this.Utils.isString(a) && this.Utils.isString(b)\r\n ? ((c = this.Utils.isNull(c) ? 0 : c),\r\n (d = b.toLowerCase().indexOf(a.toLowerCase(), c - 1) + 1))\r\n : 0;\r\n },\r\n SPLIT: function (a, b) {\r\n return this.Utils.isString(a) ? a.split(b) : [];\r\n },\r\n TRIM: function (a) {\r\n return this.Utils.isString(a) ? a.replace(/ +/g, \" \").trim() : \"\";\r\n },\r\n UPPER: function (a) {\r\n return this.Utils.isString(a) ? a.toUpperCase() : \"\";\r\n },\r\n MID: function (a, b, c) {\r\n return (\r\n (a = a || \"\"),\r\n this.Utils.isNumber(b) && this.Utils.isNumber(c)\r\n ? a.substr(b - 1, c)\r\n : a\r\n );\r\n },\r\n AVERAGE: function () {\r\n for (\r\n var a = this.Utils.flatten(arguments, function (a) {\r\n return this.Utils.isNumber(a);\r\n }),\r\n b = a.length,\r\n c = 0,\r\n d = 0,\r\n e = 0;\r\n e < b;\r\n e++\r\n )\r\n (c += a[e]), (d += 1);\r\n return c / d;\r\n },\r\n COUNT: function () {\r\n return this.Utils.flatten(arguments).length;\r\n },\r\n COUNTIF: function () {\r\n var arr = arguments[0],\r\n condition = arguments[1];\r\n var len = 0;\r\n if (\r\n condition.indexOf(\">\") == -1 &&\r\n condition.indexOf(\"=\") == -1 &&\r\n condition.indexOf(\"<\") == -1\r\n ) {\r\n for (var i = 0; i < arr.length; i++) {\r\n var a = arr[i];\r\n if (a == condition) {\r\n len++;\r\n }\r\n }\r\n return len;\r\n } else {\r\n for (var i = 0; i < arr.length; i++) {\r\n var a = arr[i];\r\n if (\r\n typeof a == \"number\" &&\r\n !!new Function(\"return \" + a + condition)()\r\n ) {\r\n len++;\r\n }\r\n }\r\n return len;\r\n }\r\n },\r\n LARGE: function (a, b) {\r\n return (\r\n (a = this.Utils.flatten(a, function (a) {\r\n return this.Utils.isNumber(a);\r\n })),\r\n a.sort(function (a, b) {\r\n return b - a;\r\n })[b - 1]\r\n );\r\n },\r\n MAX: function () {\r\n var a = this.Utils.flatten(arguments, function (a) {\r\n return this.Utils.isNumber(a);\r\n });\r\n return 0 === a.length ? 0 : Math.max.apply(Math, a);\r\n },\r\n MIN: function () {\r\n var a = this.Utils.flatten(arguments, function (a) {\r\n return this.Utils.isNumber(a);\r\n });\r\n return 0 === a.length ? 0 : Math.min.apply(Math, a);\r\n },\r\n SMALL: function (a, b) {\r\n return (\r\n (a = this.Utils.flatten(a, function (a) {\r\n return this.Utils.isNumber(a);\r\n })),\r\n a.sort(function (a, b) {\r\n return a - b;\r\n })[b - 1]\r\n );\r\n },\r\n ABS: function (a) {\r\n return this.Utils.isNumber(a) ? Math.abs(a) : 0;\r\n },\r\n ROUND: function (a, b) {\r\n return Math.round(a * Math.pow(10, b)) / Math.pow(10, b);\r\n },\r\n CEILING: function (a, b) {\r\n if (0 === b) return 0;\r\n var c = b < 0 ? -1 : 0;\r\n b = Math.abs(b);\r\n var d = b - Math.floor(b),\r\n e = 0;\r\n return (\r\n d > 0 && (e = -Math.floor(Math.log(d) / Math.log(10))),\r\n a >= 0\r\n ? this.Formula.ROUND(Math.ceil(a / b) * b, e)\r\n : 0 === c\r\n ? -this.Formula.ROUND(Math.floor(Math.abs(a) / b) * b, e)\r\n : -this.Formula.ROUND(Math.ceil(Math.abs(a) / b) * b, e)\r\n );\r\n },\r\n FLOOR: function (a, b) {\r\n if (0 === b) return 0;\r\n if (!((a > 0 && b > 0) || (a < 0 && b < 0))) return 0;\r\n b = Math.abs(b);\r\n var c = b - Math.floor(b),\r\n d = 0;\r\n return (\r\n c > 0 && (d = -Math.floor(Math.log(c) / Math.log(10))),\r\n a >= 0\r\n ? this.Formula.ROUND(Math.floor(a / b) * b, d)\r\n : -this.Formula.ROUND(Math.floor(Math.abs(a) / b) * b, d)\r\n );\r\n },\r\n INT: function (a) {\r\n return this.Utils.isNumber(a) ? Math.floor(a) : 0;\r\n },\r\n LOG: function (a, b) {\r\n return (\r\n (b = void 0 === b ? 10 : b),\r\n this.Utils.isNumber(b) ? Math.log(a) / Math.log(b) : 0\r\n );\r\n },\r\n MOD: function (a, b) {\r\n if (0 === b) return 0;\r\n var c = Math.abs(a % b);\r\n return b > 0 ? c : -c;\r\n },\r\n POWER: function (a, b) {\r\n var c = Math.pow(a, b);\r\n return isNaN(c) ? 0 : c;\r\n },\r\n PRODUCT: function () {\r\n for (\r\n var a = this.Utils.flatten(arguments, function (a) {\r\n return this.Utils.isNumber(a);\r\n }),\r\n b = 1,\r\n c = 0;\r\n c < a.length;\r\n c++\r\n )\r\n b *= a[c];\r\n return b;\r\n },\r\n SQRT: function (a) {\r\n return a < 0 ? 0 : Math.sqrt(a);\r\n },\r\n SUM: function () {\r\n for (\r\n var a = 0,\r\n b = this.Utils.flatten(arguments, function (a) {\r\n return this.Utils.isNumber(a);\r\n }),\r\n c = 0,\r\n d = b.length;\r\n c < d;\r\n ++c\r\n )\r\n a += b[c];\r\n return a;\r\n },\r\n SUMPRODUCT: function () {\r\n for (var a = 0, b: any = [], c = -1, d = 0; d < arguments.length; d++)\r\n arguments[d] instanceof Array &&\r\n ((c = c < 0 ? arguments[d].length : Math.min(arguments[d].length, c)),\r\n b.push(arguments[d]));\r\n for (var e, f, g, h = 0; h < c; h++) {\r\n for (e = 1, f = 0; f < b.length; f++)\r\n (g = parseFloat(b[f][h])), isNaN(g) && (g = 0), (e *= g);\r\n a += e;\r\n }\r\n return a;\r\n },\r\n FIXED: function (a, b) {\r\n return (\r\n (b = void 0 === b ? 0 : b),\r\n this.Utils.isNumber(b) && b >= 0 ? Number(a).toFixed(b) : \"\"\r\n );\r\n },\r\n DATE: function () {\r\n return 6 === arguments.length\r\n ? new Date(\r\n parseInt(arguments[0], 10),\r\n parseInt(arguments[1], 10) - 1,\r\n parseInt(arguments[2], 10),\r\n parseInt(arguments[3], 10),\r\n parseInt(arguments[4], 10),\r\n parseInt(arguments[5], 10)\r\n )\r\n : 3 === arguments.length\r\n ? new Date(\r\n parseInt(arguments[0], 10),\r\n parseInt(arguments[1], 10) - 1,\r\n parseInt(arguments[2], 10)\r\n )\r\n : new Date(arguments[0]);\r\n },\r\n TIME: function (a, b, c) {\r\n return (3600 * a + 60 * b + c) / 86400;\r\n },\r\n TIMESTAMP: function (a) {\r\n return this.Utils.isDate(a) ? a.getTime() : 0;\r\n },\r\n TODAY: function () {\r\n return new Date();\r\n },\r\n NOW: function () {\r\n return new Date();\r\n },\r\n SYSTIME: function () {\r\n var a = this.STATIC._st,\r\n b = new Date().getTime() - this.STATIC._ct;\r\n return b > 0 && b < 36e5 && (a += b), new Date(a);\r\n },\r\n DAY: function (a) {\r\n return a.getDate();\r\n },\r\n MONTH: function (a) {\r\n return a.getMonth() + 1;\r\n },\r\n YEAR: function (a) {\r\n return a.getFullYear();\r\n },\r\n HOUR: function (a) {\r\n return a.getHours();\r\n },\r\n MINUTE: function (a) {\r\n return a.getMinutes();\r\n },\r\n SECOND: function (a) {\r\n return a.getSeconds();\r\n },\r\n DAYS: function (a, b) {\r\n var c = new Date(a.getFullYear(), a.getMonth(), a.getDate()),\r\n d = new Date(b.getFullYear(), b.getMonth(), b.getDate());\r\n return null; //(c - d) / 864e5\r\n },\r\n DATEMINUS: function (a, b, c) {\r\n var d,\r\n e,\r\n f = b.getMonth(),\r\n g = a.getMonth();\r\n if (c)\r\n (d = 31 === b.getDate() ? 30 : b.getDate()),\r\n (e = 31 === a.getDate() ? 30 : a.getDate());\r\n else {\r\n var h = new Date(b.getFullYear(), f + 1, 0).getDate(),\r\n i = new Date(a.getFullYear(), g + 1, 0).getDate();\r\n (d = b.getDate() === h ? 30 : b.getDate()),\r\n a.getDate() === i\r\n ? d < 30\r\n ? (g++, (e = 1))\r\n : (e = 30)\r\n : (e = a.getDate());\r\n }\r\n return 360 * (a.getFullYear() - b.getFullYear()) + 30 * (g - f) + (e - d);\r\n },\r\n DATEDELTA: function (a, b) {\r\n return (\r\n this.Utils.isNumber(b) || (b = 0), new Date(a.getTime() + 864e5 * b)\r\n );\r\n },\r\n ISOWEEKNUM: function (a) {\r\n a.setHours(0, 0, 0), a.setDate(a.getDate() + 4 - (a.getDay() || 7));\r\n var b = new Date(a.getFullYear(), 0, 1);\r\n //return Math.ceil(((a - b) / 864e5 + 1) / 7);\r\n return null;\r\n },\r\n WEEKNUM: function (a, b) {\r\n var c = 2 === b ? 1 : 0,\r\n d = new Date(a.getFullYear(), 0, 1),\r\n e = (c + 7 - d.getDay()) % 7,\r\n f = e > 0 ? 1 : 0,\r\n g = d.getTime() + 24 * e * 60 * 60 * 1e3;\r\n return Math.floor((a.getTime() - g) / 864e5 / 7 + 1) + f;\r\n },\r\n STRDATE: function (a) {\r\n return a.getFullYear() + \"-\" + a.getMonth() + 1 + '-' + a.getDate();\r\n },\r\n TEXT: function (a, b) {\r\n return this.Utils.isNull(a)\r\n ? \"\"\r\n : this.Utils.isDate(a) && !this.Utils.isEmpty(b)\r\n ? this.Utils.date2Str(a, b)\r\n : this.Utils.num2Str(a, b);\r\n },\r\n VALUE: function (a) {\r\n return this.Utils.isEmpty(a) ? 0 : isNaN(a) ? 0 : parseFloat(a);\r\n },\r\n UUID: function () {\r\n return this.Utils.UUID();\r\n },\r\n RECNO: function () {\r\n //需修改\r\n // return this.Utils.isNull(this.STATIC.EntryRecNo) ? this.STATIC.APPID && this.STATIC.ENTRYID ? (this.Utils.dataAjax({\r\n // url: \"/data/formula/recno\",\r\n // async: !1,\r\n // data: {\r\n // appId: fml.STATIC.APPID,\r\n // formId: fml.STATIC.ENTRYID,\r\n // hasIncLock: fml.STATIC.RecnoLock\r\n // }\r\n // }, function (a) {\r\n // fml.STATIC.EntryRecNo = a.incId\r\n // }), fml.STATIC.EntryRecNo) : \"\" : fml.STATIC.EntryRecNo\r\n return null;\r\n },\r\n ISEMPTY: function (a) {\r\n return this.Utils.isObjectEmpty(a);\r\n },\r\n MAPX: function (a, b, c, d) {\r\n var e = null;\r\n if (this.Utils.isEmpty(a) || this.Utils.isObjectEmpty(b)) return e;\r\n // a = a.toLowerCase();\r\n // var f = this.Utils.getFieldInfoByFormula(c),\r\n // g = this.Utils.getFieldInfoByFormula(d);\r\n // if (/^sum|avg|max|min|count|first|last$/.test(a) && f.entryId && f.entryId === g.entryId) {\r\n // var h = this.Utils.isDate(b),\r\n // i = h ? b.getTime() : b;\r\n // fml.Utils.dataAjax({\r\n // url: \"/data/formula/aggregate\",\r\n // async: !1,\r\n // data: {\r\n // op: a,\r\n // formId: f.entryId,\r\n // lookup_value: i,\r\n // lookup_field: f.field,\r\n // result_field: g.field,\r\n // date_type: h,\r\n // refAppId: f.appId\r\n // }\r\n // }, function (a) {\r\n // a.result && a.result[0] && (e = a.result[0].result)\r\n // })\r\n // }\r\n return e;\r\n },\r\n MAP: function (a, b, c) {\r\n // var d = [];\r\n // if (fml.Utils.isObjectEmpty(a))\r\n // return d;\r\n // var e = fml.Utils.getFieldInfoByFormula(b),\r\n // f = fml.Utils.getFieldInfoByFormula(c);\r\n // return e.entryId && e.entryId === f.entryId && fml.Utils.dataAjax({\r\n // url: \"/data/formula/map\",\r\n // async: !1,\r\n // data: {\r\n // formId: e.entryId,\r\n // lookup_value: a,\r\n // lookup_field: e.field,\r\n // result_field: f.field,\r\n // refAppId: e.appId\r\n // }\r\n // }, function (a) {\r\n // fml.Utils.forEach(a.result, function (a, b) {\r\n // d.push(b[f.field])\r\n // })\r\n // }, function () {}),\r\n // d\r\n return [];\r\n },\r\n GETUSERNAME: function () {\r\n //需修改\r\n return this.STATIC.user ? this.STATIC.user.nickname : \"\";\r\n },\r\n };\r\n }\r\n}\r\n","import { Formula } from \"./formula\";\r\n/**\r\n * 根据关键字匹配变量\r\n * @param key\r\n * @param fieldVariable\r\n */\r\nexport function searchVariable(key: string, fieldVariable: any) {\r\n let result: any[] = [];\r\n if (key != null && key !== \"\") {\r\n if (\r\n fieldVariable.formFields &&\r\n fieldVariable.formFields !== null &&\r\n fieldVariable.formFields.length > 0\r\n ) {\r\n fieldVariable.formFields.forEach((item: any) => {\r\n if (item.label.indexOf(key) > -1) {\r\n result.push(item);\r\n }\r\n });\r\n }\r\n if (\r\n fieldVariable.tableList &&\r\n fieldVariable.tableList !== null &&\r\n fieldVariable.tableList.length > 0\r\n ) {\r\n fieldVariable.tableList.forEach((table: any) => {\r\n table.fields.forEach((item: any) => {\r\n if (item.label.indexOf(key) > -1) {\r\n result.push(item);\r\n }\r\n });\r\n });\r\n }\r\n }\r\n\r\n return result;\r\n}\r\n/**\r\n * 根据关键字匹配变量 fieldVariable 为数组\r\n * @param key\r\n * @param fieldVariable\r\n */\r\nexport function searchArrayVariable(key: string, groupArray: any) {\r\n let result: any[] = [];\r\n groupArray.map((group: any) => {\r\n const tableList = searchVariable(key, group);\r\n\r\n if (tableList.length > 0) {\r\n result = [...result, ...tableList];\r\n }\r\n });\r\n\r\n return result;\r\n}\r\n\r\n/**\r\n * 根据关键字匹配函数\r\n * @param key\r\n */\r\nexport function searchUsageFun(key: string, formulaUsage: any[]) {\r\n let result: any[] = [];\r\n if (key != null && key !== \"\") {\r\n let fml = new Formula();\r\n formulaUsage.forEach((usage: any) => {\r\n usage.contains.forEach((item: any) => {\r\n if (item.name.toUpperCase().indexOf(key.toUpperCase()) > -1) {\r\n result.push(item);\r\n }\r\n });\r\n });\r\n }\r\n return result;\r\n}\r\n","import {\r\n AfterViewInit,\r\n ChangeDetectionStrategy,\r\n Component,\r\n DoCheck,\r\n ElementRef,\r\n EventEmitter,\r\n forwardRef,\r\n Inject,\r\n Input,\r\n KeyValueDiffer,\r\n KeyValueDiffers,\r\n NgZone,\r\n OnChanges,\r\n OnDestroy,\r\n OnInit,\r\n Output,\r\n SimpleChanges,\r\n ViewChild,\r\n} from \"@angular/core\";\r\n\r\nimport { CommonModule } from \"@angular/common\";\r\nimport { ReactiveFormsModule, FormsModule, ControlValueAccessor, NG_VALUE_ACCESSOR } from \"@angular/forms\";\r\nimport { NzInputModule } from \"ng-zorro-antd/input\";\r\nimport { NzCollapseModule } from \"ng-zorro-antd/collapse\";\r\nimport { NzIconModule } from \"ng-zorro-antd/icon\";\r\nimport { NzButtonModule } from \"ng-zorro-antd/button\";\r\nimport { NzToolTipModule } from \"ng-zorro-antd/tooltip\";\r\nimport { NzConfigService } from \"ng-zorro-antd/core/config\";\r\nimport { NzMessageService } from \"ng-zorro-antd/message\";\r\nimport CodeMirror from 'codemirror';\r\nimport { Editor, EditorFromTextArea, ScrollInfo } from \"codemirror\";\r\nimport { GramPipeModule } from \"@ebuilding/base/shared.pipe\";\r\nimport { Formula } from \"../tools/formula\";\r\nimport { searchUsageFun, searchVariable, searchArrayVariable } from \"../tools/common\";\r\nimport _ from \"lodash\";\r\n\r\ndeclare var require: any;\r\n\r\ntype FormulaType = (a?: any, b?: any, c?: any, d?: any) => boolean;\r\nexport declare interface IFormulaClass {\r\n FormulaUsage?: {\r\n category: string;\r\n categoryCode: string;\r\n contains: {\r\n name: string;\r\n intro: string;\r\n usage: string;\r\n example: string;\r\n }[];\r\n }[];\r\n Formula?: {\r\n [funcName: string]: FormulaType;\r\n };\r\n}\r\n\r\n@Component({\r\n selector: \"deon-codemirror\",\r\n templateUrl: \"./index.html\",\r\n styleUrls: ['./index.less'],\r\n providers: [\r\n {\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => GramCodemirrorComponent),\r\n multi: true,\r\n },\r\n Formula\r\n ],\r\n preserveWhitespaces: false,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n imports: [CommonModule, ReactiveFormsModule, FormsModule, NzInputModule, NzCollapseModule, NzIconModule, NzButtonModule, NzToolTipModule, GramPipeModule]\r\n})\r\nexport class GramCodemirrorComponent\r\n implements\r\n AfterViewInit,\r\n OnDestroy,\r\n ControlValueAccessor,\r\n OnChanges,\r\n DoCheck,\r\n OnInit {\r\n @Input() itemTitle = {};\r\n\r\n @Input()\r\n set options(value: { [key: string]: any }) {\r\n if (value!!) {\r\n this._options = value;\r\n if (!this._differ && value) {\r\n this._differ = this._differs.find(value).create();\r\n }\r\n }\r\n }\r\n /**\r\n * 可用变量对象\r\n * {\r\n * formFields:[],tableList:[]\r\n * }\r\n */\r\n @Input()\r\n set fieldData(value: any) {\r\n this._fieldData = value;\r\n if (Array.isArray(value) && value.length > 0) {\r\n value.forEach((t: any) => {\r\n if (Array.isArray(t.listField) && t.listField.length > 0) {\r\n t.listField.forEach((f: any) => {\r\n this.labelMap['$' + `{${f.key}}`] = f.label;\r\n });\r\n }\r\n })\r\n }\r\n }\r\n get fieldData() {\r\n return this._fieldData;\r\n }\r\n /**\r\n * 黑名单 值为函数名数组\r\n */\r\n @Input() blacklist: Array<string>;\r\n\r\n /**\r\n * 启用默认黑名单\r\n * 默认黑名单与blackList合并\r\n */\r\n @Input() enableDefaultBlack = true;\r\n\r\n /**\r\n * 显示的公式 值显示列表内指定公式\r\n */\r\n @Input() showList: Array<string>;\r\n\r\n\r\n\r\n get dateType(): string {\r\n const t = Array.isArray(this.fieldData);\r\n\r\n return t ? \"array\" : \"object\";\r\n }\r\n set variableSearch(value: string) {\r\n let variableSearchList;\r\n if (\"array\" === this.dateType) {\r\n variableSearchList = searchArrayVariable(value, this.fieldData);\r\n } else {\r\n variableSearchList = searchVariable(value, this.fieldData);\r\n }\r\n this.variableSearchList = variableSearchList;\r\n this._variableSearch = value;\r\n }\r\n get variableSearch() {\r\n return this._variableSearch;\r\n }\r\n set usageFunSearch(value: string) {\r\n // TODO 只显示当前公式编辑器支持的函数\r\n this.usageFunSearchList = searchUsageFun(value, this.FormulaUsage);\r\n this._usageFunSearch = value;\r\n }\r\n get usageFunSearch() {\r\n return this._usageFunSearch;\r\n }\r\n /**\r\n * 所有支持函数分组信息\r\n * name 分组名称 string\r\n * code 分组code string\r\n * items 函数名集合 string[]\r\n */\r\n public get globalCategorys() {\r\n var info: any[] = [];\r\n _.forEach(this.fml.FormulaUsage, function (item: any) {\r\n info.push({\r\n // name 分组名称 string\r\n name: item.category,\r\n // code 分组code string\r\n code: item.categoryCode,\r\n // items 函数名集合 string[]\r\n items: _.flatMap(item.contains, function (c) {\r\n return c.name;\r\n }),\r\n });\r\n });\r\n return info;\r\n }\r\n\r\n /**\r\n * 获取全局CodeMirror\r\n */\r\n get codeMirrorGlobal(): any {\r\n if (this._codeMirror) {\r\n return this._codeMirror;\r\n }\r\n\r\n this._codeMirror =\r\n typeof CodeMirror !== \"undefined\" ? CodeMirror : require(\"codemirror\");\r\n return this._codeMirror;\r\n }\r\n // fml = new Formula();\r\n @Input() name = \"codemirror\";\r\n @Input() title = \"\";\r\n\r\n @Input() autoFocus = false;\r\n /**\r\n * 函数显示类型\r\n * 班次 attendance 所有 // attendance-items 精度 进位规则\r\n *\r\n * 与categorys互斥,有type时使用type\r\n */\r\n @Input() type: string = \"\";\r\n /**\r\n * 显示的函数组\r\n * 与type 互斥,如果type有值,当前参数无效。\r\n */\r\n @Input() categorys: Array<string>;\r\n /**\r\n * 自定义公式\r\n */\r\n @Input() formulaClass: IFormulaClass;\r\n\r\n typeList: any = {\r\n \"attendance-items\": [\r\n \"MANHOURS\",\r\n \"CalendarDay\",\r\n \"PRECISION\",\r\n \"DepartmentScope\",\r\n \"AND\",\r\n \"OR\",\r\n \"IF\",\r\n \"IN\",\r\n \"AttendanceType\",\r\n \"MinusSupport\",\r\n ],\r\n Daycalculation: [\r\n \"Daycalculation\",\r\n \"Hourcalculation\",\r\n \"SUM\",\r\n \"Daycompute\",\r\n \"PositionHeadcount\",\r\n ],\r\n };\r\n @Input() preserveScrollPosition = false;\r\n\r\n labelMap: any = {};\r\n _fieldData: any = null;\r\n\r\n @Output()\r\n cursorActivity = new EventEmitter<Editor>();\r\n\r\n @Output() focusChange = new EventEmitter<boolean>();\r\n\r\n @Output() scroll = new EventEmitter<ScrollInfo>();\r\n\r\n @Output() drop = new EventEmitter<[Editor, DragEvent]>();\r\n\r\n @Output() textChange = new EventEmitter<any>();\r\n\r\n @ViewChild(\"ref\", { static: true }) ref!: ElementRef;\r\n\r\n fml: any;\r\n value = \"\";\r\n disabled = false;\r\n isFocused = false;\r\n codeMirror?: EditorFromTextArea;\r\n\r\n /**\r\n * 存放匹配的变量集合\r\n */\r\n variableSearchList: any[] = [];\r\n\r\n /**\r\n * 存放匹配的函数集合\r\n */\r\n usageFunSearchList: any[] = [];\r\n FormulaUsage: any[] = [];\r\n\r\n /**\r\n * 查询可用变量\r\n */\r\n _variableSearch: any = null;\r\n\r\n /**\r\n * 查询可用函数\r\n */\r\n _usageFunSearch: any = null;\r\n /**\r\n * 函数描述\r\n */\r\n usageDescription = `\r\n <ul class=\"intro-wrapper default\">\r\n <li>从左侧面板选择字段名和函数,或输入函数</li>\r\n <li>公式编辑举例:\r\n <span class=\"formula-name\">AVERAGE</span>\r\n (\r\n <span class=\"formula-field\">语文成绩</span>\r\n ,\r\n <span class=\"formula-field\">数学成绩</span>\r\n )\r\n </li>\r\n </ul>\r\n `;\r\n\r\n private _codeMirror: any;\r\n\r\n private _differ?: KeyValueDiffer<string, any>;\r\n\r\n private _options: any = {\r\n autoCloseBrackets: true,\r\n keywords: [],\r\n textWrapping: true,\r\n lineWrapping: true,\r\n lineNumbers: false,\r\n matchBrackets: true,\r\n specialChars:\r\n /[\\u0000-\\u001f\\u007f\\u00ad\\u200c-\\u200f\\u2028\\u2029\\ufeff]/,\r\n mode: \"text/fx-formula\",\r\n labelMap: null,\r\n };\r\n private _fomulaContext: string[];\r\n\r\n /**\r\n * 默认公式\r\n */\r\n private defaultFml: any;\r\n constructor(\r\n private _differs: KeyValueDiffers,\r\n private _ngZone: NgZone,\r\n public el: ElementRef,\r\n private message: NzMessageService,\r\n private nzConfigService: NzConfigService,\r\n private fmlService: Formula\r\n ) {\r\n this.defaultFml = _.cloneDeep({\r\n FormulaUsage: fmlService.FormulaUsage,\r\n Formula: fmlService.Formula,\r\n });\r\n this.fml = fmlService;\r\n }\r\n\r\n ngOnInit() {\r\n this.nzConfigService.set(\"message\", {\r\n nzMaxStack: 1,\r\n nzAnimate: false,\r\n });\r\n }\r\n\r\n /**\r\n * 根据黑名单过滤公式\r\n */\r\n filterUsageByBlackList(formulaUsage: any) {\r\n let FormulaUsageList: any[] = [];\r\n\r\n formulaUsage.forEach((el: any) => {\r\n el.contains.forEach((formula: any) => {\r\n // 黑名单列表内的Index。\r\n const blackIndex = _.indexOf(this.blacklist, formula.name);\r\n if (blackIndex < 0) {\r\n if (\r\n FormulaUsageList.findIndex((ele) => ele.category === el.category) >\r\n -1\r\n ) {\r\n let index = FormulaUsageList.findIndex(\r\n (ele) => ele.category === el.category\r\n );\r\n (FormulaUsageList[index].contains as any[]).push(formula);\r\n } else {\r\n let item: any = {\r\n category: el.category,\r\n contains: [],\r\n };\r\n item.contains.push(formula);\r\n FormulaUsageList.push(item);\r\n }\r\n }\r\n });\r\n });\r\n return FormulaUsageList;\r\n }\r\n\r\n /**\r\n * 组装显示的函数\r\n */\r\n resolveDisplayFormula(): string[] {\r\n let displayFormula: string[] = [];\r\n if (this.showList) {\r\n return _.cloneDeep(this.showList);\r\n }\r\n if (this.type && !_.isEmpty(this.type)) {\r\n displayFormula = this.typeList[this.type];\r\n\r\n return displayFormula || [];\r\n }\r\n /**\r\n * this.categorys 显示的函数组\r\n * 与this.type 互斥,this.type优先级最高。\r\n */\r\n if (this.categorys && Array.isArray(this.categorys)) {\r\n // 显示函数组数组转对象\r\n const displayCategory = _.keyBy(this.categorys, function (o) {\r\n return o;\r\n });\r\n // 过滤出需显示的函数\r\n this.globalCategorys.map((c: any) => {\r\n if (c.items && displayCategory[c.code]) {\r\n displayFormula = displayFormula.concat(c.items);\r\n }\r\n });\r\n }\r\n return displayFormula || [];\r\n }\r\n\r\n /**\r\n * 组装FomulaContext\r\n */\r\n resolveFomulaContext() {\r\n const fomlaArray: string[] = [];\r\n if (!this.FormulaUsage) {\r\n return fomlaArray;\r\n }\r\n this.FormulaUsage.map((usage) => {\r\n const contains = _.flatMap(usage.contains, function (c) {\r\n return c.name;\r\n });\r\n fomlaArray.push(...contains);\r\n });\r\n this._fomulaContext = fomlaArray;\r\n return fomlaArray;\r\n }\r\n\r\n /**\r\n * 组装 this.FormulaUsage\r\n */\r\n setFormulaUsage() {\r\n var FormulaUsage = _.cloneDeep(this.fml.FormulaUsage);\r\n this.FormulaUsage = FormulaUsage;\r\n\r\n }\r\n ngAfterViewInit(): void {\r\n this.setFormulaUsage();\r\n if (!this.ref) {\r\n return;\r\n }\r\n this._ngZone.runOutsideAngular(() => {\r\n this.codeMirror = this.codeMirrorGlobal.fromTextArea(\r\n this.ref.nativeElement,\r\n this._options\r\n ) as EditorFromTextArea;\r\n this.codeMirror.on(\"cursorActivity\", (cm) =>\r\n this._ngZone.run(() => this.cursorActive(cm))\r\n );\r\n this.codeMirror.on(\"scroll\", this.scrollChanged.bind(this));\r\n this.codeMirror.on(\"blur\", () =>\r\n this._ngZone.run(() => this.focusChanged(false))\r\n );\r\n this.codeMirror.on(\"focus\", () =>\r\n this._ngZone.run(() => this.focusChanged(true))\r\n );\r\n this.codeMirror.on(\"change\", (cm: any, change: any) => {\r\n this._ngZone.run(() => this.codemirrorValueChanged(cm, change));\r\n });\r\n this.codeMirror.on(\"drop\", (cm: Editor, e: DragEvent) => {\r\n this._ngZone.run(() => this.dropFiles(cm, e));\r\n });\r\n this.codeMirror.setValue(this.value);\r\n\r\n (CodeMirror as any).fomulaContext = Object.keys(this.fml.Formula);\r\n\r\n this.codeMirror.setOption(\"mode\", \"text/fx-formula\");\r\n });\r\n }\r\n ngOnChanges(changes: SimpleChanges): void {\r\n if (changes && changes[\"formulaClass\"]) {\r\n const change = changes[\"formulaClass\"];\r\n if (change && (change.currentValue || change.previousValue)) {\r\n this.setFormulaClass(change.currentValue);\r\n this.setFormulaUsage();\r\n }\r\n }\r\n }\r\n ngDoCheck(): void {\r\n if (!this._differ) {\r\n return;\r\n }\r\n const changes = this._differ.diff(this._options);\r\n if (changes) {\r\n changes.forEachChangedItem((option) =>\r\n this.setOptionIfChanged(option.key, option.currentValue)\r\n );\r\n changes.forEachAddedItem((option) =>\r\n this.setOptionIfChanged(option.key, option.currentValue)\r\n );\r\n changes.forEachRemovedItem((option) =>\r\n this.setOptionIfChanged(option.key, option.currentValue)\r\n );\r\n }\r\n }\r\n ngOnDestroy(): void {\r\n if (this.codeMirror) {\r\n this.codeMirror.toTextArea();\r\n }\r\n }\r\n /**\r\n * set FormulaClass\r\n * @param formulaCalss\r\n */\r\n setFormulaClass(formulaCalss: any): void {\r\n const fml: IFormulaClass = new formulaCalss(this.fml);\r\n const { FormulaUsage, Formula } = fml;\r\n\r\n if (Formula) {\r\n this._ngZone.runOutsideAngular(() => {\r\n Object.keys(Formula).forEach((key) => {\r\n this.fml.Formula[key] = Formula[key].bind(this.fml);\r\n });\r\n // CodeMirror.fomulaContext = this.resolveFomulaContext();\r\n (CodeMirror as any).fomulaContext = Object.keys(this.fml.Formula);\r\n });\r\n }\r\n if (FormulaUsage) {\r\n const oldIndexs: any = {};\r\n this.fml.FormulaUsage.forEach((category: any, index: number) => {\r\n oldIndexs[category.categoryCode] = index;\r\n });\r\n const newCategorys: any = {};\r\n FormulaUsage.forEach((category: any) => {\r\n newCategorys[category.categoryCode] = category;\r\n });\r\n\r\n Object.keys(newCategorys).forEach((categoryCode: any) => {\r\n const oldIndex = _.get(oldIndexs, categoryCode, undefined);\r\n const newCategory = newCategorys[categoryCode];\r\n if (undefined === oldIndex) {\r\n // 新增分类\r\n this.fml.FormulaUsage.push(newCategorys[categoryCode]);\r\n } else {\r\n // 已有分类 添加新函数\r\n let oldContains = this.fml.FormulaUsage[oldIndex].contains;\r\n oldContains = oldContains.concat(newCategory.contains);\r\n oldContains.reverse();\r\n _.uniqWith(oldContains, (a: any, b: any) => {\r\n return a.name === b.name;\r\n });\r\n this.fml.FormulaUsage[oldIndex].contains = oldContains.reverse();\r\n }\r\n });\r\n }\r\n }\r\n\r\n codemirrorValueChanged(cm: any, change: any): void {\r\n if (change.origin !== \"complete\") {\r\n cm.showHint({\r\n hint: (CodeMirror as any).hint.formula,\r\n completeSingle: false,\r\n shown: function () { },\r\n select: function (cpt: any, ele: any) { },\r\n pick: function (item: any) { },\r\n });\r\n } else {\r\n this.insertBarcket();\r\n }\r\n setTimeout(() => {\r\n this.getValue();\r\n }, 0);\r\n\r\n }\r\n setOptionIfChanged(optionName: string, newValue: any): void {\r\n if (!this.codeMirror) {\r\n return;\r\n }\r\n this.codeMirror.setOption(optionName as any, newValue);\r\n }\r\n focusChanged(focused: boolean): void {\r\n this.onTouched();\r\n this.isFocused = focused;\r\n // CodeMirror.fomulaContext = this._fomulaContext;\r\n this.focusChange.emit(focused);\r\n }\r\n scrollChanged(cm: Editor): void {\r\n this.scroll.emit(cm.getScrollInfo());\r\n }\r\n cursorActive(cm: Editor): void {\r\n this.cursorActivity.emit(cm);\r\n }\r\n dropFiles(cm: Editor, e: DragEvent): void {\r\n this.drop.emit([cm, e]);\r\n }\r\n\r\n writeValue(value: string): void {\r\n if (value === null || value === undefined) {\r\n if (this.codeMirror) {\r\n this.codeMirror.setValue(\"\");\r\n }\r\n return;\r\n }\r\n this.value = value;\r\n\r\n this.setValue();\r\n }\r\n\r\n registerOnChange(fn: (value: string) => void): void {\r\n this.onChange = fn;\r\n }\r\n\r\n registerOnTouched(fn: () => void): void {\r\n this.onTouched = fn;\r\n }\r\n\r\n setDisabledState(isDisabled: boolean): void {\r\n this.disabled = isDisabled;\r\n this.setOptionIfChanged(\"readOnly\", this.disabled);\r\n }\r\n\r\n /**\r\n * 函数鼠标滑动时事件\r\n * @param e\r\n */\r\n usageMouseover(e: any) {\r\n let usage = e.usage ? `<li class=\"usage\"> 用法:${e.usage} </li>` : \"\";\r\n this.usageDescription = `\r\n <div class=\"formula-title\">${e.name}</div>\r\n <ul class=\"intro-wrapper\">\r\n <li class=\"intro\">\r\n ${e.intro}\r\n </li>\r\n ${usage}\r\n <li class=\"example\">示例:${e.example}</li>\r\n </ul>\r\n `;\r\n }\r\n\r\n /**\r\n * 插入函数\r\n * @param e\r\n */\r\n insertUsageFun(e: any) {\r\n if (this.codeMirror && this.codeMirror !== null) {\r\n let c = this.codeMirror.getCursor();\r\n this.codeMirror.replaceSelection(`${e.name}`);\r\n let d = this.codeMirror.getCursor();\r\n this.insertBarcket();\r\n this.getValue();\r\n }\r\n }\r\n\r\n /**\r\n * 插入可用变量\r\n * @param event\r\n */\r\n insertField(event: any) {\r\n if (this.codeMirror && this.codeMirror !== null) {\r\n let c = this.codeMirror.getCursor();\r\n this.codeMirror.replaceSelection(\"\" + event.label + \"\");\r\n let d = this.codeMirror.getCursor();\r\n let e = {\r\n from: c,\r\n to: d,\r\n key: '$' + `{${event.key}}`, // 工作项ID\r\n label: event.label,\r\n };\r\n this.markField(e);\r\n this.codeMirror.focus();\r\n this.getValue();\r\n }\r\n }\r\n\r\n /**\r\n * 复制\r\n */\r\n btnCopy() {\r\n if (!!`${this.value}`) {\r\n let value = (_.cloneDeep(this.value) as string).replace(\"↵\", \"\");\r\n localStorage.setItem(\"codemirror\", value);\r\n this.message.success(`复制成功`);\r\n } else {\r\n this.message.warning(`公式为空,请配置公式后复制`);\r\n }\r\n }\r\n\r\n /**\r\n * 粘贴\r\n */\r\n btnPaste() {\r\n if (!!localStorage.getItem(\"codemirror\")) {\r\n if (!this.value) {\r\n this.value = localStorage.getItem(\"codemirror\") as string;\r\n } else {\r\n this.value = `${this.value}${localStorage.getItem(\"codemirror\") as string}`;\r\n }\r\n\r\n this.setValue();\r\n this.message.success(`粘贴成功`);\r\n } else {\r\n this.message.warning(`没有需要粘贴的数据,请先复制`);\r\n }\r\n }\r\n\r\n /**\r\n * 清空\r\n */\r\n btnClear() {\r\n this.value = null;\r\n if (this.codeMirror) {\r\n this.codeMirror.setValue(\"\");\r\n }\r\n this.message.success(`清空成功`);\r\n }\r\n\r\n private onChange = (_: any) => { };\r\n\r\n private onTouched = () => { };\r\n\r\n private markField(e: any) {\r\n if (this.codeMirror && this.codeMirror !== null) {\r\n let node = document.createElement(\"span\");\r\n node.innerHTML = e.label;\r\n node.className = \"cm-field cm-field-value\";\r\n node.setAttribute(\"field-key\", e.key);\r\n this.codeMirror.markText(e.from, e.to, {\r\n handleMouseEvents: !0,\r\n atomic: !0,\r\n replacedWith: node,\r\n });\r\n let d = this.codeMirror.getCursor();\r\n }\r\n }\r\n private insertBarcket() {\r\n if (this.codeMirror && this.codeMirror !== null) {\r\n let c = this.codeMirror.getCursor();\r\n this.codeMirror.replaceSelection(\"(\");\r\n let d = this.codeMirror.getCursor();\r\n\r\n let c1 = this.codeMirror.getCursor();\r\n this.codeMirror.replaceSelection(\")\");\r\n let d1 = this.codeMirror.getCursor();\r\n this.codeMirror.setCursor(d);\r\n this.codeMirror.focus();\r\n }\r\n }\r\n\r\n private getValue() {\r\n let result: any = [];\r\n let codeContent =\r\n this.el.nativeElement.querySelectorAll(\".CodeMirror-line\");\r\n this.fml.Utils.forEach(codeContent, (t: any, e: any) => {\r\n this.fml.Utils.forEach(e.children, (t1: any, e1: any) => {\r\n this.fml.Utils.forEach(e1.children, (t2: any, e2: any) => {\r\n if (\r\n e2.getAttribute(\"cm-text\") !== undefined &&\r\n e2.getAttribute(\"cm-text\") !== null\r\n ) {\r\n result.push(\"↵\");\r\n } else {\r\n if (e2.className === \"CodeMirror-widget\") {\r\n this.fml.Utils.forEach(e2.children, (t3: any, e3: any) => {\r\n if (\r\n e3.getAttribute(\"field-key\") !== undefined &&\r\n e3.getAttribute(\"field-key\") !== null\r\n ) {\r\n result.push(e3.getAttribute(\"field-key\"));\r\n } else {\r\n result.push(e3.innerText);\r\n }\r\n });\r\n } else {\r\n result.push(e2.innerText);\r\n }\r\n }\r\n });\r\n });\r\n });\r\n\r\n if (result[0] === \"↵\") {\r\n result.splice(0, 1);\r\n }\r\n this.value = result.join(\"\");\r\n if (this.codeMirror) {\r\n this.textChange.emit(this.codeMirror.getValue());\r\n }\r\n\r\n this.onChange(this.value);\r\n }\r\n\r\n private fakeLabel(t: any) {\r\n return t ? t.replace(/[\\[\\]()'\"]/g, \" \") : \"\";\r\n }\r\n\r\n private setValue() {\r\n if (this.value === undefined || this.value === null || this.value === \"\") {\r\n return;\r\n }\r\n let e: any = [];\r\n let p: any = [];\r\n let t: any[] = this.value.split(\"\\n\");\r\n this.fml.Utils.forEach(t, (c: any, t1: any) => {\r\n let d: any = \"\",\r\n t = t1.split(\r\n new RegExp(this.fml.FormulaEditor.COMMON_REG.FORM_FORMULA, \"g\")\r\n );\r\n this.fml.Utils.forEach(t, (t: any, e: any) => {\r\n let i: any, a: any, n: any, s: any, o: any, r: any, l: any;\r\n this.fml.FormulaEditor.CONST.FIELD_REG.test(e)\r\n ? ((a = !1),\r\n this.labelMap &&\r\n (i = this.labelMap[e] ? this.labelMap[e] : \" \") &&\r\n ((i = this.fakeLabel(i)), (a = !0)),\r\n (n = !1),\r\n this.fml.Utils.isNull(i) && ((i = 1), (n = !0)),\r\n (s = (l = e.replace(\"$\", \"\").split(\"}\"))[0]),\r\n (o = l[1]),\r\n (r = CodeMirror.Pos(c, d.length)),\r\n (d += i),\r\n (l = CodeMirror.Pos(c, d.length)),\r\n p.push({\r\n from: r,\r\n to: l,\r\n key: `$${s}}`,\r\n label: a ? (this.labelMap[e] ? this.labelMap[e] : \"\") : null,\r\n }))\r\n : (d += e);\r\n });\r\n e.push(d);\r\n });\r\n if (this.codeMirror) {\r\n this.codeMirror.setValue(e.join(\"\\n\"));\r\n this.fml.Utils.forEach(p, (t: any, e: any) => {\r\n this.markField(e);\r\n });\r\n }\r\n }\r\n}\r\n","<div class=\"formula-head\">\r\n <div class=\"formula-title\">\r\n <span class=\"formula-name\">{{ title }}</span><span class=\"formula-equal\">=</span>\r\n </div>\r\n <div class=\"formula-body\">\r\n <textarea [name]=\"name\" autocomplete=\"off\" [autofocus]=\"autoFocus\" #ref>\r\n </textarea>\r\n <div class=\"button-body\">\r\n <button nz-button type=\"button\" nzSize=\"small\" (click)=\"btnCopy()\">复制</button>\r\n <button nz-button type=\"button\" nzSize=\"small\" (click)=\"btnPaste()\">粘贴</button>\r\n <button nz-button type=\"button\" nzSize=\"small\" (click)=\"btnClear()\">清空</button>\r\n </div>\r\n </div>\r\n</div>\r\n<div class=\"formula-wrapper\">\r\n <div class=\"field-list\">\r\n <div class=\"title\">可用变量</div>\r\n <div class=\"field-wrapper\">\r\n <div class=\"search\">\r\n <input type=\"text\" nz-input placeholder=\"搜索可用变量\" [(ngModel)]=\"variableSearch\" />\r\n </div>\r\n <div class=\"collapse-wrapper\">\r\n <ng-container *ngIf=\"fieldData!! && fieldData.length>0\">\r\n <nz-collapse [nzBordered]=\"false\">\r\n <ng-container *ngFor=\"let item of fieldData\">\r\n <nz-collapse-panel [nzHeader]=\"item.label\">\r\n <div class=\"item\" *ngFor=\"let field of item.listField\" (click)=\"insertField(field)\">\r\n {{ field.label }}\r\n </div>\r\n </nz-collapse-panel>\r\n </ng-container>\r\n </nz-collapse>\r\n </ng-container>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"field-list\">\r\n <div class=\"title\">函数</div>\r\n <div class=\"field-wrapper\">\r\n <div class=\"search\">\r\n <input type=\"text\" nz-input placeholder=\"搜索函数\" [(ngModel)]=\"usageFunSearch\" />\r\n </div>\r\n <div class=\"collapse-wrapper\">\r\n\r\n <ng-container *ngIf=\"FormulaUsage!! && FormulaUsage.length>0\">\r\n <nz-collapse [nzBordered]=\"false\">\r\n <ng-container *ngFor=\"let item of FormulaUsage\">\r\n <nz-collapse-panel [nzHeader]=\"item.category\">\r\n <div class=\"item\" *ngFor=\"let field of item.contains\" (mouseover)=\"usageMouseover(field)\"\r\n (click)=\"insertUsageFun(field)\">\r\n {{ field.name }}\r\n </div>\r\n </nz-collapse-panel>\r\n </ng-container>\r\n </nz-collapse>\r\n </ng-container>\r\n\r\n\r\n <ng-template #searchPanel>\r\n <ul>\r\n <li *ngFor=\"let item of usageFunSearchList\" (mouseover)=\"usageMouseover(item)\"\r\n (click)=\"insertUsageFun(item)\">\r\n {{ item.name }}\r\n </li>\r\n </ul>\r\n </ng-template>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"formula-intro\" [innerHtml]=\"usageDescription | safeHtml\"></div>\r\n</div>","\r\nimport {\r\n NgModule\r\n} from \"@angular/core\";\r\nimport { GramCodemirrorComponent } from './default/index';\r\n\r\nconst components: any[] = [GramCodemirrorComponent];\r\n\r\n@NgModule({\r\n exports: [...components],\r\n imports: [...components],\r\n})\r\nexport class GramCodemirrorModule {\r\n}\r\n","// /**\r\n// * Public API surface of GramCodemirror\r\n// */\r\n\r\n// // Components\r\n// export * from './default/index';\r\n\r\n// // Module\r\n// export * from './index.module';\r\n\r\n// // Types\r\n// export * from './tools/formula'; // Assuming this exists\r\n\r\nexport { GramCodemirrorModule } from './index.module';\r\nexport { GramCodemirrorComponent } from './default/index';\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i3.Formula"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"components.codemirror.mjs","sources":["../../../../packages/base/components/codemirror/src/main/common-formula.ts","../../../../packages/base/components/codemirror/src/main/formula-enhanced.ts","../../../../packages/base/components/codemirror/src/main/common-enhanced.ts","../../../../packages/base/components/codemirror/src/main/index.component.ts","../../../../packages/base/components/codemirror/src/main/index.component.html","../../../../packages/base/components/codemirror/src/index.module.ts","../../../../packages/base/components/codemirror/components.codemirror.ts"],"sourcesContent":["export class Formula {\r\n FormulaUsage = [\r\n {\r\n category: \"数学函数\",\r\n contains: [\r\n {\r\n name: \"ABS\",\r\n intro: \"ABS函数可以获取一个数的绝对值\",\r\n usage: \"ABS(数字)\",\r\n example: \"ABS(-1)可以返回1,也就是-1的绝对值\",\r\n },\r\n {\r\n name: \"AVERAGE\",\r\n intro: \"AVERAGE函数可以获取一组数值的算术平均值\",\r\n usage: \"AVERAGE(数字1,数字2,...)\",\r\n example: \"AVERAGE({语文成绩},{数学成绩}, {英语成绩})返回三门课程的平均分\",\r\n },\r\n {\r\n name: \"CEILING\",\r\n intro: \"CEILING函数可以将数字增大到最接近原值的指定因数的倍数\",\r\n usage: \"CEILING(数字,因数)\",\r\n example: \"CEILING(7,6)返回12,因为12比7大的同时,也是6的倍数中最接近7的数字\",\r\n },\r\n {\r\n name: \"COUNT\",\r\n intro: \"COUNT函数可以获取参数的数量\",\r\n usage: \"COUNT(值,值,...)\",\r\n example: \"COUNT(小明,小王,小张,小李)返回4,也就是人员的数量\",\r\n },\r\n {\r\n name: \"COUNTIF\",\r\n intro: \"COUNTIF函数可以获取数组中满足条件的参数个数\",\r\n usage: 'COUNTIF(数组,\"条件\")',\r\n example: 'COUNTIF(子表单.性别, \"女\"),可得到子表单中性别填的是\"女\"的数据条数;COUNTIF([1,2,3,4],\">2\"),可得到1,2,3,4中大于2的数字数量,结果为2。',\r\n },\r\n {\r\n name: \"FIXED\",\r\n intro: \"FIXED函数可将数字舍入到指定的小数位数并输出为文本\",\r\n usage: \"FIXED(数字,小数位数)\",\r\n example: 'FIXED(3.1415,2)返回\"3.14\"',\r\n },\r\n {\r\n name: \"FLOOR\",\r\n intro: \"FLOOR函数可将数字减小到最接近原值的指定因数的倍数\",\r\n usage: \"FLOOR(数字,因数)\",\r\n example: \"FLOOR(7,6)返回6,因为6比7小的同时,也是6的倍数中最接近7的数字\",\r\n },\r\n {\r\n name: \"INT\",\r\n intro: \"INT函数可以获取一个数的整数部分\",\r\n usage: \"INT(数字)\",\r\n example: \"INT(3.1415)返回3,也就是3.1415的整数部分\",\r\n },\r\n {\r\n name: \"LARGE\",\r\n intro: \"LARGE函数可以获取数据集中第k个最大值\",\r\n usage: \"LARGE(数组,k)\",\r\n example: 'LARGE({学生成绩.数学成绩},1)返回子表单\"学生成绩\"中排名第1的\"数学成绩\"',\r\n },\r\n {\r\n name: \"LOG\",\r\n intro: \"LOG函数可以根据指定底数返回数字的对数\",\r\n usage: \"LOG(数字,底数)\",\r\n example: \"LOG(100,10)返回2,也就是以10为底数100的对数\",\r\n },\r\n {\r\n name: \"MAX\",\r\n intro: \"MAX函数可以获取一组数值的最大值\",\r\n usage: \"MAX(数字1,数字2,...)\",\r\n example: \"MAX({语文成绩},{数学成绩},{英语成绩})返回三门课程中的最高分\",\r\n },\r\n {\r\n name: \"MIN\",\r\n intro: \"MIN函数可以获取一组数值的最小值\",\r\n usage: \"MIN(数字1,数字2,...)\",\r\n example: \"MAX({语文成绩},{数学成绩},{英语成绩})返回三门课程中的最低分\",\r\n },\r\n {\r\n name: \"MOD\",\r\n intro: \"MOD函数可以获取两数相除的余数\",\r\n usage: \"MOD(被除数,除数)\",\r\n example: \"MOD(4,3)返回1,也就是4/3的余数\",\r\n },\r\n {\r\n name: \"POWER\",\r\n intro: \"POWER函数可以获取数字乘幂的结果\",\r\n usage: \"POWER(数字,指数)\",\r\n example: \"POWER(3,2)返回9,也就是3的2次方\",\r\n },\r\n {\r\n name: \"PRODUCT\",\r\n intro: \"PRODUCT函数可以获取一组数值的乘积\",\r\n usage: \"PRODUCT(数字1,数字2,...)\",\r\n example: \"PRODUCT({单价}, {数量})获取总价,也就是单价和数量的乘积\",\r\n },\r\n {\r\n name: \"ROUND\",\r\n intro: \"ROUND函数可以将数字四舍五入到指定的位数\",\r\n usage: \"ROUND(数字,数字位数)\",\r\n example: \"ROUND(3.1485,2)返回3.15\",\r\n },\r\n {\r\n name: \"SQRT\",\r\n intro: \"SQRT函数可以获取一个数字的正平方根\",\r\n usage: \"SQRT(数字)\",\r\n example: \"SQRT(9)返回3,也就是9的正平方根\",\r\n },\r\n {\r\n name: \"SUM\",\r\n intro: \"SUM函数可以获取一组数值的总和\",\r\n usage: \"SUM(数字1,数字2,...)\",\r\n example: \"SUM({语文成绩},{数学成绩}, {英语成绩})返回三门课程的总分\",\r\n },\r\n {\r\n name: \"SUMPRODUCT\",\r\n intro: \"SUMPRODUCT函数可以将数组间对应的元素相乘,并返回乘积之和,适用于加权求和\",\r\n usage: \"SUMPRODUCT(数组,数组...)\",\r\n example: \"SUMPRODUCT([1,2,3],[0.1,0.2,0.3])返回1.4,也就是 1×0.1 + 2×0.2 + 3×0.3的值\",\r\n },\r\n ],\r\n },\r\n {\r\n category: \"文本函数\",\r\n contains: [\r\n {\r\n name: \"CONCATENATE\",\r\n intro: \"CONCATENATE函数可以将多个文本合并成一个文本\",\r\n usage: \"CONCATENATE(文本1,文本2,...)\",\r\n example: 'CONCATENATE(\"小小人力资源科技股份有限公司\",\"张三\")会返回\"小小人力资源科技股份有限公司张三\"',\r\n },\r\n {\r\n name: \"EXACT\",\r\n intro: \"EXACT函数可以比较两个文本是否完全相同,完全相同则返回true,否则返回false\",\r\n usage: \"EXACT(文本1, 文本2)\",\r\n example: \"EXACT({手机号},{中奖手机号}),如果两者相同,返回true,如果不相同,返回false\",\r\n },\r\n {\r\n name: \"GETUSERNAME\",\r\n intro: \"GETUSERNAME函数可以获取当前用户的昵称\",\r\n usage: \"GETUSERNAME()\",\r\n example: \"略\",\r\n },\r\n {\r\n name: \"ISEMPTY\",\r\n intro: \"ISEMPTY函数可以用来判断值是否为空文本、空对象或者空数组\",\r\n usage: \"ISEMPTY(文本)\",\r\n example: \"略\",\r\n },\r\n {\r\n name: \"LEFT\",\r\n intro: \"LEFT函数可以从一个文本的第一个字符开始返回指定个数的字符\",\r\n usage: \"LEFT(文本,文本长度)\",\r\n example: 'LEFT(\"上海小小人力资源科技股份有限公司张三\",2)返回\"上海\",也就是\"上海小小人力资源科技股份有限公司张三\"的从左往右的前2个字符',\r\n },\r\n {\r\n name: \"LEN\",\r\n intro: \"LEN函数可以获取文本中的字符个数\",\r\n usage: \"LEN(文本)\",\r\n example: 'LEN(\"朝辞白帝彩云间\")返回7,因为这句诗中有7个字符',\r\n },\r\n {\r\n name: \"LOWER\",\r\n intro: \"LOWER函数可以将一个文本中的所有大写字母转换为小写字母\",\r\n usage: \"LOWER(文本)\",\r\n example: 'LOWER(\"JAYZ\")返回\"jayz\"',\r\n },\r\n {\r\n name: \"SUBSTRING\",\r\n intro: \"SUBSTRING返回文本中从指定位置开始到指定位置结束的字符\",\r\n usage: \"SUBSTRING(文本,开始位置_数字,结束位置_数字)\",\r\n example: 'SUBSTRING(\"小小数字化组织效能提升专家\",3,5)返回\"数字化\"',\r\n },\r\n {\r\n name: \"REPLACE\",\r\n intro: \"REPLACE函数可以根据指定的字符数,将部分文本替换为不同的文本\",\r\n usage: \"REPLACE(文本,开始位置,替换长度,新文本)\",\r\n example: 'REPLACE(\"小小应用定制工具\",5,6,\"企业数据管理平台\")返回\"小小企业数据管理平台\"',\r\n },\r\n {\r\n name: \"REPT\",\r\n intro: \"REPT函数可以将文本重复一定次数\",\r\n usage: \"REPT(文本,重复次数)\",\r\n example: 'REPT(\"小小\",3)返回\"小小小小小小\"',\r\n },\r\n {\r\n name: \"RIGHT\",\r\n intro: \"RIGHT函数可以获取由给定文本右端指定数量的字符构成的文本值\",\r\n usage: \"RIGHT(文本,文本长度)\",\r\n example: 'RIGHT(\"三年二班周杰伦\",3)返回\"周杰伦\",也就是\"三年二班周杰伦\"从右往左的前3个字符',\r\n },\r\n {\r\n name: \"SEARCH\",\r\n intro: \"SEARCH函数可以获取文本1在文本2中的开始位置\",\r\n usage: \"SEARCH(文本1,文本2)\",\r\n example: 'SEARCH(\"2021\",\"小小2021\")返回4',\r\n },\r\n {\r\n name: \"SPLIT\",\r\n intro: \"SPLIT函数可以将文本按指定分割符分割成数组\",\r\n usage: \"SPLIT(文本,分隔符_文本)\",\r\n example: 'SPLIT(\"小小-应用定制工具\",\"-\")返回\"小小,应用定制工具\"',\r\n },\r\n {\r\n name: \"TEXT\",\r\n intro: \"TEXT函数可以将数字转化成文本\",\r\n usage: \"TEXT(数字)\",\r\n example: 'TEXT(3.1415)返回\"3.1415\"',\r\n },\r\n {\r\n name: \"TRIM\",\r\n intro: \"TRIM函数可以删除文本首尾的空格\",\r\n usage: \"TRIM(文本)\",\r\n example: 'TRIM(\" 小小 \")返回\"小小\"',\r\n },\r\n {\r\n name: \"UPPER\",\r\n intro: \"UPPER函数可以将一个文本中的所有小写字母转换为大写字母\",\r\n usage: \"UPPER(文本)\",\r\n example: 'UPPER(\"jayz\")返回\"JAYZ\"',\r\n },\r\n {\r\n name: \"VALUE\",\r\n intro: \"VALUE函数可以将文本转化为数字\",\r\n usage: \"VALUE(文本)\",\r\n example: 'VALUE(\"3.1415\")返回3.1415',\r\n },\r\n ],\r\n },\r\n {\r\n category: \"日期函数\",\r\n contains: [\r\n {\r\n name: \"DATE\",\r\n intro: \"DATE函数可以将时间戳转换为日期对象\",\r\n usage: \"DATE(时间戳)\",\r\n example: \"略\",\r\n },\r\n {\r\n name: \"DATEDELTA\",\r\n intro: \"DATEDELTA函数可以将指定日期加/减指定天数\",\r\n usage: \"DATEDELTA(指定日期,需要加减的天数)\",\r\n example: \"略\",\r\n },\r\n {\r\n name: \"DAY\",\r\n intro: \"DAY函数可以获取某日期是当月的第几日\",\r\n usage: \"DAY(时间戳)\",\r\n example: \"略\",\r\n },\r\n {\r\n name: \"DAYS\",\r\n intro: \"DAYS函数可以返回两个日期之间相差的天数。\",\r\n usage: \"DAYS(结束日期,开始日期)\",\r\n example: \"略\",\r\n },\r\n {\r\n name: \"HOUR\",\r\n intro: \"HOUR函数可以返回某日期的小时数\",\r\n usage: \"HOUR(时间戳)\",\r\n example: \"略\",\r\n },\r\n {\r\n name: \"ISOWEEKNUM\",\r\n intro: \"ISOWEEKNUM函数可以返回指定日期在全年中的ISO周数\",\r\n usage: \"ISOWEEKNUM(指定日期)\",\r\n example: \"略\",\r\n },\r\n {\r\n name: \"MINUTE\",\r\n intro: \"MINUTE函数可以返回某日期的分钟数\",\r\n usage: \"MINUTE(日期)\",\r\n example: \"略\",\r\n },\r\n {\r\n name: \"MONTH\",\r\n intro: \"MONTH返回某日期的月份\",\r\n usage: \"MONTH(日期)\",\r\n example: \"略\",\r\n },\r\n {\r\n name: \"NOW\",\r\n intro: \"NOW函数可以获取当前时间\",\r\n usage: \"NOW()\",\r\n example: \"略\",\r\n },\r\n {\r\n name: \"SECOND\",\r\n intro: \"SECOND函数可以返回某日期的秒数\",\r\n usage: \"SECOND(日期)\",\r\n example: \"略\",\r\n },\r\n {\r\n name: \"SYSTIME\",\r\n intro: \"SYSTIME函数可以获取当前服务器时间\",\r\n usage: \"SYSTIME()\",\r\n example: \"略\",\r\n },\r\n {\r\n name: \"TIME\",\r\n intro: \"TIME函数可以返回特定时间的十进制数字\",\r\n usage: \"TIME(时_数字,分_数字,秒_数字)\",\r\n example: \"略\",\r\n },\r\n {\r\n name: \"TIMESTAMP\",\r\n intro: \"TIMESTAMP函数可以将日期对象转换成时间戳。\",\r\n usage: \"TIMESTAMP(日期)\",\r\n example: \"略\",\r\n },\r\n {\r\n name: \"TODAY\",\r\n intro: \"TODAY函数可以返回今天\",\r\n usage: \"TODAY()\",\r\n example: \"略\",\r\n },\r\n {\r\n name: \"WEEKNUM\",\r\n intro: \"WEEKNUM函数可以返回指定日期在当年是第几周\",\r\n usage: \"WEEKNUM(指定日期)\",\r\n example: \"略\",\r\n },\r\n {\r\n name: \"YEAR\",\r\n intro: \"YEAR函数可以返回某日期的年份\",\r\n usage: \"YEAR(时间戳)\",\r\n example: \"略\",\r\n },\r\n {\r\n name: \"STRDATE\",\r\n intro: \"STRDATE函数可以将字符串转换为日期\",\r\n usage: \"STRDATE(年月日)\",\r\n example: 'STRDATE(\"19860913\") 返回1986-09-13',\r\n },\r\n {\r\n name: \"DATEMINUS\",\r\n intro: \"DATEMINUS函数可以求2个日期相差的年、月、天、小时数\",\r\n usage: \"DATEMINUS(开始日期,结束日期,'1')\",\r\n example: 'DATEMINUS(\"2020-01-01\",\"2021-01-02\",\"3\") 返回1,单位为天。第三个参数1为年,2为月,3为天,4为小时',\r\n },\r\n ],\r\n },\r\n {\r\n category: \"逻辑函数\",\r\n contains: [\r\n {\r\n name: \"AND\",\r\n intro: \"如果所有参数都为真,AND函数返回布尔值true,否则返回布尔值 false\",\r\n usage: \"AND(逻辑表达式1,逻辑表达式2,...)\",\r\n example: \"AND({语文成绩}>90,{数学成绩}>90,{英语成绩}>90),如果三门课成绩都> 90,返回true,否则返回false\",\r\n },\r\n {\r\n name: \"FALSE\",\r\n intro: \"FALSE函数返回布尔值false\",\r\n usage: \"FALSE()\",\r\n example: \"略\",\r\n },\r\n {\r\n name: \"IF\",\r\n intro: \"IF函数判断一个条件能否满足;如果满足返回一个值,如果不满足则返回另外一个值\",\r\n usage: \"IF(逻辑表达式,为true时返回的值,为false时返回的值)\",\r\n example: 'IF({语文成绩}>60,\"及格\",\"不及格\"),当语文成绩>60时返回及格,否则返回不及格。',\r\n },\r\n {\r\n name: \"NOT\",\r\n intro: \"NOT函数返回与指定表达式相反的布尔值。\",\r\n usage: \"NOT(逻辑表达式)\",\r\n example: \"NOT({语文成绩}>60),如果语文成绩大于60返回false,否则返回true\",\r\n },\r\n {\r\n name: \"OR\",\r\n intro: \"如果任意参数为真,OR 函数返回布尔值true;如果所有参数为假,返回布尔值false。\",\r\n usage: \"OR(逻辑表达式1,逻辑表达式2,...)\",\r\n example: \"OR({语文成绩}>90,{数学成绩}>90,{英语成绩}>90),任何一门课成绩> 90,返回true,否则返回false\",\r\n },\r\n {\r\n name: \"TRUE\",\r\n intro: \"TRUE函数返回布尔值true\",\r\n usage: \"TRUE()\",\r\n example: \"略\",\r\n },\r\n {\r\n name: \"XOR\",\r\n intro: \"XOR函数可以返回所有参数的异或值\",\r\n usage: \"XOR(逻辑表达式1, 逻辑表达式2,...)\",\r\n example: \"XOR({语文成绩}>90,{数学成绩}>90),如果两门成绩都>90,返回false;如果两门成绩都<90,返回false;如果其中一门>90,另外一门<90,返回true\",\r\n },\r\n ],\r\n },\r\n {\r\n category: \"高级函数\",\r\n contains: [\r\n {\r\n name: \"MAPX\",\r\n intro: \"MAPX函数是一个可以用来进行跨表单取数的高级函数\",\r\n usage: \"MAPX(operation,map_value,map_field,result_field)\",\r\n example: \"略\",\r\n },\r\n {\r\n name: \"RECNO\",\r\n intro: \"RECNO函数依据当前表单被新打开的次数进行不断累计,起始值为1。\",\r\n usage: \"RECNO()\",\r\n example: \"略\",\r\n },\r\n {\r\n name: \"UUID\",\r\n intro: \"UUID函数随机码生成器。可适用于随机流水号的使用场景等\",\r\n usage: \"UUID()\",\r\n example: \"略\",\r\n },\r\n ],\r\n },\r\n ];\r\n\r\n FormulaEditor = {\r\n CONST: {\r\n NAME_FILED_CLS: \"cm-field-name\",\r\n VALUE_FIELD_CLS: \"cm-field-value\",\r\n INVALID_FIELD_CLS: \"cm-field-invalid\",\r\n DEPRECATE_FIELD_CLS: \"cm-deprecate\",\r\n NEGATIVE_FIELD_CLS: \"cm-negative\",\r\n FIELD_REG: /^\\$({*|_formula_[0-9]{13}|ext|createTime|updateTime|creator|wx_open_id|wx_nickname|wx_gender)/,\r\n },\r\n COMMON_REG: {\r\n VALIDATOR_FORMULA: \"(\\\\$[{0-9a-zA-Z._]+})\",\r\n FORM_FORMULA: \"(\\\\$[{0-9a-zA-Z._}@]+)\",\r\n NEW_LINE: \"[\\\\r\\\\n]\",\r\n },\r\n };\r\n\r\n Utils: any = {};\r\n Formula: any = {};\r\n\r\n constructor() {\r\n this.initUtils();\r\n this.initFormula();\r\n }\r\n\r\n private initUtils(): void {\r\n this.Utils = {\r\n isString: function (a: any): boolean {\r\n return typeof a === \"string\";\r\n },\r\n isNumber: function (b: any): boolean {\r\n return !isNaN(parseFloat(b)) && isFinite(b);\r\n },\r\n isFunction: function (b: any): boolean {\r\n return typeof b === \"function\";\r\n },\r\n isDate: function (a: any): boolean {\r\n return a instanceof Date;\r\n },\r\n isArray: function (b: any): boolean {\r\n return Array.isArray(b);\r\n },\r\n isEmpty: function (a: any): boolean {\r\n return a === \"\" || this.isNull(a);\r\n },\r\n isBlank: function (a: any): boolean {\r\n return this.isNull(a) || (typeof a === \"string\" && a.trim() === \"\");\r\n },\r\n isNull: function (a: any): boolean {\r\n return a == null;\r\n },\r\n isObjectEmpty: function (a: any): boolean {\r\n if (null == a) return true;\r\n if (a.length > 0) return false;\r\n if (a.length === 0) return true;\r\n for (var key in a) {\r\n if (Object.prototype.hasOwnProperty.call(a, key)) {\r\n return false;\r\n }\r\n }\r\n return true;\r\n },\r\n isValueWidget: function (a: any): boolean {\r\n return !!a;\r\n },\r\n forEach: function (a: any, b: Function): void {\r\n if (Array.isArray(a)) {\r\n for (var c = 0, d = a.length; c < d; c++) {\r\n if (b(a[c], c, a) === false) break;\r\n }\r\n } else if (a && typeof a === \"object\") {\r\n for (var e in a) {\r\n if (Object.prototype.hasOwnProperty.call(a, e)) {\r\n if (b(a[e], e, a) === false) break;\r\n }\r\n }\r\n }\r\n },\r\n flatten: function (a: any, b?: Function, c?: any[]): any[] {\r\n if (!c) c = [];\r\n if (a) {\r\n for (var d = 0, e = a.length; d < e; d++) {\r\n var f = a[d];\r\n Array.isArray(f)\r\n ? this.flatten(f, b, c)\r\n : (b && !b(f)) || c.push(f);\r\n }\r\n }\r\n return c;\r\n },\r\n applyFunc: function (a: any, b: Function, c?: any[], d?: any): any {\r\n return this.isFunction(b) ? b.apply(a, c || []) : d;\r\n },\r\n leftPad: function (a: string, b: number, c?: string): string {\r\n var d = String(a);\r\n for (c || (c = \" \"); d.length < b;) d = c + d;\r\n return d.toString();\r\n },\r\n startWith: function (a: string, b: string): boolean {\r\n var c = a.length;\r\n return !(null == b || \"\" == b || 0 === c || b.length > c) && a.substr(0, b.length) == b;\r\n },\r\n extend: function (target: any, source: any): any {\r\n for (var key in source) {\r\n if (source.hasOwnProperty(key)) {\r\n target[key] = source[key];\r\n }\r\n }\r\n return target;\r\n },\r\n fakeLabel: function (t: any): string {\r\n return t ? t.replace(/[\\[\\]()'\"]/g, \" \") : \"\";\r\n }\r\n };\r\n }\r\n\r\n private initFormula(): void {\r\n this.Formula = {\r\n AND: function () {\r\n for (\r\n var a = this.Utils.flatten(arguments), b = 0, c = a.length;\r\n b < c;\r\n b++\r\n )\r\n if (!a[b]) return !1;\r\n return !0;\r\n }.bind(this),\r\n OR: function () {\r\n for (\r\n var a = this.Utils.flatten(arguments), b = 0, c = a.length;\r\n b < c;\r\n b++\r\n )\r\n if (a[b]) return !0;\r\n return !1;\r\n }.bind(this),\r\n FALSE: function () {\r\n return !1;\r\n }.bind(this),\r\n TRUE: function () {\r\n return !0;\r\n }.bind(this),\r\n IF: function (a: any, b: any, c: any) {\r\n return a ? b : c;\r\n }.bind(this),\r\n NOT: function (a: any) {\r\n return !a;\r\n }.bind(this),\r\n XOR: function () {\r\n for (\r\n var a = 0,\r\n b = this.Utils.flatten(arguments),\r\n c = 0,\r\n d = b.length;\r\n c < d;\r\n c++\r\n )\r\n b[c] && a++;\r\n return !!(1 & Math.floor(Math.abs(a)));\r\n }.bind(this),\r\n CONCATENATE: function () {\r\n for (\r\n var a = this.Utils.flatten(arguments), b = 0;\r\n (b = a.indexOf(!0)) > -1;\r\n\r\n )\r\n a[b] = \"TRUE\";\r\n for (var c = 0; (c = a.indexOf(!1)) > -1;) a[c] = \"FALSE\";\r\n return a.join(\"\");\r\n }.bind(this),\r\n EXACT: function (a: any, b: any) {\r\n return a === b;\r\n }.bind(this),\r\n LEFT: function (a: string, b: number) {\r\n return (b = this.Utils.isEmpty(b) ? 1 : b), a ? a.substring(0, b) : \"\";\r\n }.bind(this),\r\n LEN: function (a: any) {\r\n return this.Utils.isString(a)\r\n ? a\r\n ? a.length\r\n : 0\r\n : a && a.length\r\n ? a.length\r\n : 0;\r\n }.bind(this),\r\n SUBSTRING: function (a: string, b: number, c: number) {\r\n return (\r\n (a = a || \"\"),\r\n this.Utils.isNumber(b) && this.Utils.isNumber(c)\r\n ? a.substr(b - 1, c - b + 1)\r\n : a\r\n );\r\n }.bind(this),\r\n LOWER: function (a: string) {\r\n return this.Utils.isString(a) ? (a ? a.toLowerCase() : a) : \"\";\r\n }.bind(this),\r\n REPLACE: function (a: string, b: number, c: number, d: string) {\r\n return this.Utils.isNumber(b) && this.Utils.isNumber(c)\r\n ? ((a = a || \"\"),\r\n (d = d || \"\"),\r\n a.substr(0, b - 1) + d + a.substr(b - 1 + c))\r\n : a;\r\n }.bind(this),\r\n REPT: function (a: string, b: number) {\r\n return (b = b || 0), new Array(b + 1).join(a);\r\n }.bind(this),\r\n RIGHT: function (a: string, b: number) {\r\n return (b = void 0 === b ? 1 : b), a ? a.substring(a.length - b) : \"\";\r\n }.bind(this),\r\n SEARCH: function (a: string, b: string, c?: number) {\r\n var d;\r\n return this.Utils.isString(a) && this.Utils.isString(b)\r\n ? ((c = this.Utils.isNull(c) ? 0 : c),\r\n (d = b.toLowerCase().indexOf(a.toLowerCase(), c - 1) + 1))\r\n : 0;\r\n }.bind(this),\r\n SPLIT: function (a: string, b: string) {\r\n return this.Utils.isString(a) ? a.split(b) : [];\r\n }.bind(this),\r\n TRIM: function (a: string) {\r\n return this.Utils.isString(a) ? a.replace(/ +/g, \" \").trim() : \"\";\r\n }.bind(this),\r\n UPPER: function (a: string) {\r\n return this.Utils.isString(a) ? a.toUpperCase() : \"\";\r\n }.bind(this),\r\n MID: function (a: string, b: number, c: number) {\r\n return (\r\n (a = a || \"\"),\r\n this.Utils.isNumber(b) && this.Utils.isNumber(c)\r\n ? a.substr(b - 1, c)\r\n : a\r\n );\r\n }.bind(this),\r\n AVERAGE: function () {\r\n for (\r\n var a = this.Utils.flatten(arguments, function (a: any) {\r\n return this.Utils.isNumber(a);\r\n }.bind(this)),\r\n b = a.length,\r\n c = 0,\r\n d = 0,\r\n e = 0;\r\n e < b;\r\n e++\r\n )\r\n (c += a[e]), (d += 1);\r\n return d > 0 ? c / d : 0;\r\n }.bind(this),\r\n COUNT: function () {\r\n return this.Utils.flatten(arguments).length;\r\n }.bind(this),\r\n COUNTIF: function (arr: any[], condition: string) {\r\n var len = 0;\r\n if (\r\n condition.indexOf(\">\") == -1 &&\r\n condition.indexOf(\"=\") == -1 &&\r\n condition.indexOf(\"<\") == -1\r\n ) {\r\n for (var i = 0; i < arr.length; i++) {\r\n var a = arr[i];\r\n if (a == condition) {\r\n len++;\r\n }\r\n }\r\n return len;\r\n } else {\r\n for (var i = 0; i < arr.length; i++) {\r\n var a = arr[i];\r\n if (\r\n typeof a == \"number\" &&\r\n !!new Function(\"return \" + a + condition)()\r\n ) {\r\n len++;\r\n }\r\n }\r\n return len;\r\n }\r\n }.bind(this),\r\n LARGE: function (a: any[], b: number) {\r\n return (\r\n (a = this.Utils.flatten(a, function (a: any) {\r\n return this.Utils.isNumber(a);\r\n }.bind(this))),\r\n a.sort(function (a: number, b: number) {\r\n return b - a;\r\n })[b - 1]\r\n );\r\n }.bind(this),\r\n MAX: function () {\r\n var a = this.Utils.flatten(arguments, function (a: any) {\r\n return this.Utils.isNumber(a);\r\n }.bind(this));\r\n return 0 === a.length ? 0 : Math.max.apply(Math, a);\r\n }.bind(this),\r\n MIN: function () {\r\n var a = this.Utils.flatten(arguments, function (a: any) {\r\n return this.Utils.isNumber(a);\r\n }.bind(this));\r\n return 0 === a.length ? 0 : Math.min.apply(Math, a);\r\n }.bind(this),\r\n ABS: function (a: number) {\r\n return this.Utils.isNumber(a) ? Math.abs(a) : 0;\r\n }.bind(this),\r\n ROUND: function (a: number, b: number) {\r\n return Math.round(a * Math.pow(10, b)) / Math.pow(10, b);\r\n }.bind(this),\r\n CEILING: function (a: number, b: number) {\r\n if (0 === b) return 0;\r\n var c = b < 0 ? -1 : 0;\r\n b = Math.abs(b);\r\n var d = b - Math.floor(b),\r\n e = 0;\r\n return (\r\n d > 0 && (e = -Math.floor(Math.log(d) / Math.log(10))),\r\n a >= 0\r\n ? this.Formula.ROUND(Math.ceil(a / b) * b, e)\r\n : 0 === c\r\n ? -this.Formula.ROUND(Math.floor(Math.abs(a) / b) * b, e)\r\n : -this.Formula.ROUND(Math.ceil(Math.abs(a) / b) * b, e)\r\n );\r\n }.bind(this),\r\n FLOOR: function (a: number, b: number) {\r\n if (0 === b) return 0;\r\n if (!((a > 0 && b > 0) || (a < 0 && b < 0))) return 0;\r\n b = Math.abs(b);\r\n var c = b - Math.floor(b),\r\n d = 0;\r\n return (\r\n c > 0 && (d = -Math.floor(Math.log(c) / Math.log(10))),\r\n a >= 0\r\n ? this.Formula.ROUND(Math.floor(a / b) * b, d)\r\n : -this.Formula.ROUND(Math.floor(Math.abs(a) / b) * b, d)\r\n );\r\n }.bind(this),\r\n INT: function (a: number) {\r\n return this.Utils.isNumber(a) ? Math.floor(a) : 0;\r\n }.bind(this),\r\n LOG: function (a: number, b?: number) {\r\n return (\r\n (b = void 0 === b ? 10 : b),\r\n this.Utils.isNumber(b) ? Math.log(a) / Math.log(b) : 0\r\n );\r\n }.bind(this),\r\n MOD: function (a: number, b: number) {\r\n if (0 === b) return 0;\r\n var c = Math.abs(a % b);\r\n return b > 0 ? c : -c;\r\n }.bind(this),\r\n POWER: function (a: number, b: number) {\r\n var c = Math.pow(a, b);\r\n return isNaN(c) ? 0 : c;\r\n }.bind(this),\r\n PRODUCT: function () {\r\n for (\r\n var a = this.Utils.flatten(arguments, function (a: any) {\r\n return this.Utils.isNumber(a);\r\n }.bind(this)),\r\n b = 1,\r\n c = 0;\r\n c < a.length;\r\n c++\r\n )\r\n b *= a[c];\r\n return b;\r\n }.bind(this),\r\n SQRT: function (a: number) {\r\n return a < 0 ? 0 : Math.sqrt(a);\r\n }.bind(this),\r\n SUM: function () {\r\n for (\r\n var a = 0,\r\n b = this.Utils.flatten(arguments, function (a: any) {\r\n return this.Utils.isNumber(a);\r\n }.bind(this)),\r\n c = 0,\r\n d = b.length;\r\n c < d;\r\n ++c\r\n )\r\n a += b[c];\r\n return a;\r\n }.bind(this),\r\n SUMPRODUCT: function () {\r\n for (var a = 0, b: any = [], c = -1, d = 0; d < arguments.length; d++)\r\n arguments[d] instanceof Array &&\r\n ((c = c < 0 ? arguments[d].length : Math.min(arguments[d].length, c)),\r\n b.push(arguments[d]));\r\n for (var e, f, g, h = 0; h < c; h++) {\r\n for (e = 1, f = 0; f < b.length; f++)\r\n (g = parseFloat(b[f][h])), isNaN(g) && (g = 0), (e *= g);\r\n a += e;\r\n }\r\n return a;\r\n }.bind(this),\r\n FIXED: function (a: number, b?: number) {\r\n return (\r\n (b = void 0 === b ? 0 : b),\r\n this.Utils.isNumber(b) && b >= 0 ? Number(a).toFixed(b) : \"\"\r\n );\r\n }.bind(this),\r\n DATE: function (year: number, month: number, day: number, hour?: number, minute?: number, second?: number) {\r\n if (arguments.length === 6) {\r\n return new Date(year, month - 1, day, hour || 0, minute || 0, second || 0);\r\n } else if (arguments.length === 3) {\r\n return new Date(year, month - 1, day);\r\n } else if (arguments.length === 1) {\r\n return new Date(year);\r\n }\r\n return new Date();\r\n }.bind(this),\r\n TIME: function (a: number, b: number, c: number) {\r\n return (3600 * a + 60 * b + c) / 86400;\r\n }.bind(this),\r\n TIMESTAMP: function (a: Date) {\r\n return this.Utils.isDate(a) ? a.getTime() : 0;\r\n }.bind(this),\r\n TODAY: function () {\r\n return new Date();\r\n }.bind(this),\r\n NOW: function () {\r\n return new Date();\r\n }.bind(this),\r\n DAY: function (a: Date) {\r\n return a.getDate();\r\n }.bind(this),\r\n MONTH: function (a: Date) {\r\n return a.getMonth() + 1;\r\n }.bind(this),\r\n YEAR: function (a: Date) {\r\n return a.getFullYear();\r\n }.bind(this),\r\n HOUR: function (a: Date) {\r\n return a.getHours();\r\n }.bind(this),\r\n MINUTE: function (a: Date) {\r\n return a.getMinutes();\r\n }.bind(this),\r\n SECOND: function (a: Date) {\r\n return a.getSeconds();\r\n }.bind(this),\r\n DAYS: function (a: Date, b: Date) {\r\n const c = new Date(a.getFullYear(), a.getMonth(), a.getDate());\r\n const d = new Date(b.getFullYear(), b.getMonth(), b.getDate());\r\n return Math.round((c.getTime() - d.getTime()) / (1000 * 60 * 60 * 24));\r\n }.bind(this),\r\n DATEDELTA: function (a: Date, b: number) {\r\n return (\r\n this.Utils.isNumber(b) || (b = 0), new Date(a.getTime() + 864e5 * b)\r\n );\r\n }.bind(this),\r\n TEXT: function (a: any, b?: string) {\r\n return this.Utils.isNull(a)\r\n ? \"\"\r\n : this.Utils.isDate(a) && !this.Utils.isEmpty(b)\r\n ? a.toLocaleString()\r\n : String(a);\r\n }.bind(this),\r\n VALUE: function (a: any) {\r\n return this.Utils.isEmpty(a) ? 0 : isNaN(a) ? 0 : parseFloat(a);\r\n }.bind(this),\r\n UUID: function () {\r\n return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function (c) {\r\n var r = Math.random() * 16 | 0,\r\n v = c == 'x' ? r : (r & 0x3 | 0x8);\r\n return v.toString(16);\r\n });\r\n }.bind(this),\r\n ISEMPTY: function (a: any) {\r\n return this.Utils.isObjectEmpty(a);\r\n }.bind(this),\r\n GETUSERNAME: function () {\r\n return \"当前用户\";\r\n }.bind(this),\r\n };\r\n }\r\n}\r\n","\r\nimport CodeMirror from 'codemirror';\r\n\r\nimport { Formula } from './common-formula';\r\n\r\n// 类型定义\r\nexport interface ValidationError {\r\n message: string;\r\n severity: 'error' | 'warning' | 'info';\r\n line?: number;\r\n column?: number;\r\n type?: 'syntax' | 'semantic' | 'runtime';\r\n}\r\n\r\nexport interface ValidationResult {\r\n isValid: boolean;\r\n errors: ValidationError[];\r\n warnings: ValidationError[];\r\n ast?: any;\r\n}\r\n\r\nexport interface SuggestionItem {\r\n text: string;\r\n displayText: string;\r\n className?: string;\r\n type?: 'function' | 'variable' | 'keyword';\r\n description?: string;\r\n usage?: string;\r\n category?: string;\r\n}\r\n\r\n/**\r\n * 公式增强器 - 通过组合而不是继承来扩展 Formula 类\r\n */\r\nexport class FormulaEnhancer {\r\n private formulaInstance: Formula;\r\n private validationCache = new Map<string, ValidationResult>();\r\n private functionNamesCache: string[] | null = null;\r\n\r\n constructor(formulaInstance: Formula) {\r\n this.formulaInstance = formulaInstance;\r\n }\r\n\r\n /**\r\n * 获取底层 Formula 实例(用于访问原有功能)\r\n */\r\n get formula(): Formula {\r\n return this.formulaInstance;\r\n }\r\n\r\n /**\r\n * 验证公式\r\n */\r\n validate(formula: string): ValidationResult {\r\n // 检查缓存\r\n const cacheKey = formula;\r\n if (this.validationCache.has(cacheKey)) {\r\n return this.validationCache.get(cacheKey)!;\r\n }\r\n\r\n const availableFunctions = this.getAllFunctionNames();\r\n const result: ValidationResult = {\r\n isValid: true,\r\n errors: [],\r\n warnings: []\r\n };\r\n\r\n // 基础验证\r\n if (!formula || formula.trim() === '') {\r\n result.errors.push({\r\n message: '公式不能为空',\r\n severity: 'error',\r\n type: 'syntax'\r\n });\r\n result.isValid = false;\r\n return result;\r\n }\r\n\r\n // 检查未闭合的括号\r\n const openParen = (formula.match(/\\(/g) || []).length;\r\n const closeParen = (formula.match(/\\)/g) || []).length;\r\n if (openParen !== closeParen) {\r\n result.errors.push({\r\n message: `括号不匹配: 有 ${openParen} 个左括号,${closeParen} 个右括号`,\r\n severity: 'error',\r\n type: 'syntax'\r\n });\r\n result.isValid = false;\r\n }\r\n\r\n // 检查引号匹配\r\n let inString = false;\r\n let quoteChar = '';\r\n for (let i = 0; i < formula.length; i++) {\r\n const char = formula[i];\r\n if ((char === '\"' || char === \"'\") && (i === 0 || formula[i - 1] !== '\\\\')) {\r\n if (!inString) {\r\n inString = true;\r\n quoteChar = char;\r\n } else if (char === quoteChar) {\r\n inString = false;\r\n }\r\n }\r\n }\r\n if (inString) {\r\n result.errors.push({\r\n message: '字符串未闭合',\r\n severity: 'error',\r\n type: 'syntax'\r\n });\r\n result.isValid = false;\r\n }\r\n\r\n // 检查未知函数\r\n const functionMatches = formula.match(/\\b([A-Z][A-Z0-9_]*)\\s*\\(/gi) || [];\r\n functionMatches.forEach(match => {\r\n const funcName = match.replace(/\\s*\\(/, '').toUpperCase();\r\n if (!availableFunctions.includes(funcName)) {\r\n result.errors.push({\r\n message: `未知函数: ${funcName}`,\r\n severity: 'error',\r\n type: 'semantic'\r\n });\r\n result.isValid = false;\r\n }\r\n });\r\n\r\n // 检查函数调用格式\r\n const invalidCalls = formula.match(/\\b[A-Z][A-Z0-9_]*\\s*\\(\\s*,/g);\r\n if (invalidCalls) {\r\n result.warnings.push({\r\n message: '函数参数格式可能有误',\r\n severity: 'warning',\r\n type: 'syntax'\r\n });\r\n }\r\n\r\n // 检查连续逗号\r\n if (formula.includes(',,')) {\r\n result.warnings.push({\r\n message: '参数之间不应有连续的逗号',\r\n severity: 'warning',\r\n type: 'syntax'\r\n });\r\n }\r\n\r\n // 缓存结果\r\n this.validationCache.set(cacheKey, result);\r\n return result;\r\n }\r\n\r\n /**\r\n * 获取所有可用函数名\r\n */\r\n getAllFunctionNames(): string[] {\r\n if (this.functionNamesCache) {\r\n return this.functionNamesCache;\r\n }\r\n\r\n const functionNames: string[] = [];\r\n\r\n // 从 FormulaUsage 获取函数名\r\n if (this.formulaInstance.FormulaUsage) {\r\n this.formulaInstance.FormulaUsage.forEach((category: any) => {\r\n if (category.contains) {\r\n category.contains.forEach((func: any) => {\r\n if (func.name) {\r\n functionNames.push(func.name.toUpperCase());\r\n }\r\n });\r\n }\r\n });\r\n }\r\n\r\n // 从 Formula 对象获取函数名\r\n if (this.formulaInstance.Formula) {\r\n Object.keys(this.formulaInstance.Formula).forEach(funcName => {\r\n functionNames.push(funcName.toUpperCase());\r\n });\r\n }\r\n\r\n // 去重并缓存\r\n this.functionNamesCache = [...new Set(functionNames)];\r\n return this.functionNamesCache;\r\n }\r\n\r\n /**\r\n * 获取函数详情\r\n */\r\n getFunctionDetails(name: string): any {\r\n const upperName = name.toUpperCase();\r\n\r\n // 从 FormulaUsage 中查找\r\n if (this.formulaInstance.FormulaUsage) {\r\n for (const category of this.formulaInstance.FormulaUsage) {\r\n if (category.contains) {\r\n const func = category.contains.find((f: any) =>\r\n f.name && f.name.toUpperCase() === upperName\r\n );\r\n if (func) {\r\n return {\r\n ...func,\r\n category: category.category\r\n };\r\n }\r\n }\r\n }\r\n }\r\n\r\n // 从 Formula 对象中查找\r\n if (this.formulaInstance.Formula && this.formulaInstance.Formula[upperName]) {\r\n return {\r\n name: upperName,\r\n intro: '内置函数',\r\n usage: `${upperName}(...)`,\r\n example: '请参考文档',\r\n category: '内置函数'\r\n };\r\n }\r\n\r\n return null;\r\n }\r\n\r\n /**\r\n * 获取函数签名\r\n */\r\n getFunctionSignature(name: string): string {\r\n const func = this.getFunctionDetails(name);\r\n if (func && func.usage) {\r\n return func.usage;\r\n }\r\n return `${name}(...)`;\r\n }\r\n\r\n /**\r\n * 清理验证缓存\r\n */\r\n clearValidationCache(): void {\r\n this.validationCache.clear();\r\n this.functionNamesCache = null;\r\n }\r\n\r\n /**\r\n * 获取公式中使用的所有变量\r\n */\r\n extractVariables(formula: string): string[] {\r\n const variableRegex = /\\${([^}]+)}/g;\r\n const variables: string[] = [];\r\n let match;\r\n\r\n while ((match = variableRegex.exec(formula)) !== null) {\r\n variables.push(match[1]);\r\n }\r\n\r\n return [...new Set(variables)];\r\n }\r\n\r\n /**\r\n * 获取公式中使用的所有函数\r\n */\r\n extractFunctions(formula: string): string[] {\r\n const functionRegex = /\\b([A-Z][A-Z0-9_]*)\\s*\\(/gi;\r\n const functions: string[] = [];\r\n let match;\r\n\r\n while ((match = functionRegex.exec(formula)) !== null) {\r\n functions.push(match[1].toUpperCase());\r\n }\r\n\r\n return [...new Set(functions)];\r\n }\r\n\r\n /**\r\n * 格式化公式\r\n */\r\n format(formula: string): string {\r\n if (!formula) return '';\r\n\r\n // 简单的格式化逻辑\r\n return formula\r\n .replace(/\\s+/g, ' ')\r\n .replace(/\\s*\\(\\s*/g, '(')\r\n .replace(/\\s*\\)\\s*/g, ')')\r\n .replace(/\\s*,\\s*/g, ', ')\r\n .replace(/\\s*=\\s*/g, ' = ')\r\n .replace(/\\s*\\+\\s*/g, ' + ')\r\n .replace(/\\s*-\\s*/g, ' - ')\r\n .replace(/\\s*\\*\\s*/g, ' * ')\r\n .replace(/\\s*\\/\\s*/g, ' / ')\r\n .trim();\r\n }\r\n\r\n /**\r\n * 获取智能建议\r\n */\r\n getSuggestions(\r\n text: string,\r\n cursorPos: number,\r\n availableVariables: any[] = []\r\n ): SuggestionItem[] {\r\n const suggestions: SuggestionItem[] = [];\r\n const lineText = this.getLineText(text, cursorPos);\r\n\r\n // 获取函数建议\r\n suggestions.push(...this.getFunctionSuggestions(lineText));\r\n\r\n // 获取变量建议\r\n if (availableVariables.length > 0) {\r\n suggestions.push(...this.getVariableSuggestions(lineText, availableVariables));\r\n }\r\n\r\n return this.sortSuggestions(suggestions, lineText);\r\n }\r\n\r\n private getLineText(text: string, cursorPos: number): string {\r\n const lines = text.substring(0, cursorPos).split('\\n');\r\n return lines[lines.length - 1];\r\n }\r\n\r\n private getFunctionSuggestions(lineText: string): SuggestionItem[] {\r\n const suggestions: SuggestionItem[] = [];\r\n const functionMatch = lineText.match(/\\b([A-Z][A-Z0-9_]*)$/i);\r\n const prefix = functionMatch ? functionMatch[1].toUpperCase() : '';\r\n\r\n if (this.formulaInstance.FormulaUsage) {\r\n this.formulaInstance.FormulaUsage.forEach((category: any) => {\r\n if (category.contains) {\r\n category.contains.forEach((func: any) => {\r\n if (!prefix || func.name.toUpperCase().startsWith(prefix)) {\r\n suggestions.push({\r\n text: func.name,\r\n displayText: `${func.name}()`,\r\n className: 'cm-function',\r\n type: 'function',\r\n description: func.intro,\r\n usage: func.usage,\r\n category: category.category\r\n });\r\n }\r\n });\r\n }\r\n });\r\n }\r\n\r\n return suggestions;\r\n }\r\n\r\n private getVariableSuggestions(lineText: string, availableVariables: any[]): SuggestionItem[] {\r\n const suggestions: SuggestionItem[] = [];\r\n\r\n // 检测是否在输入变量\r\n if (lineText.includes('$') || lineText.includes('{')) {\r\n availableVariables.forEach(variable => {\r\n if (variable.key && variable.label) {\r\n suggestions.push({\r\n text: variable.key,\r\n displayText: variable.label,\r\n className: 'cm-variable',\r\n type: 'variable',\r\n description: variable.description || ''\r\n });\r\n }\r\n });\r\n }\r\n\r\n return suggestions;\r\n }\r\n\r\n private sortSuggestions(suggestions: SuggestionItem[], currentText: string): SuggestionItem[] {\r\n return suggestions.sort((a, b) => {\r\n const currentLower = currentText.toLowerCase();\r\n const aLower = a.text.toLowerCase();\r\n const bLower = b.text.toLowerCase();\r\n\r\n // 精确匹配优先\r\n if (aLower === currentLower) return -1;\r\n if (bLower === currentLower) return 1;\r\n\r\n // 开头匹配优先\r\n const aStartsWith = aLower.startsWith(currentLower);\r\n const bStartsWith = bLower.startsWith(currentLower);\r\n if (aStartsWith && !bStartsWith) return -1;\r\n if (!aStartsWith && bStartsWith) return 1;\r\n\r\n // 包含匹配\r\n const aContains = aLower.includes(currentLower);\r\n const bContains = bLower.includes(currentLower);\r\n if (aContains && !bContains) return -1;\r\n if (!aContains && bContains) return 1;\r\n\r\n // 按字母顺序\r\n return a.text.localeCompare(b.text);\r\n });\r\n }\r\n}\r\n\r\n/**\r\n * 公式高亮器\r\n */\r\nexport class FormulaHighlighter {\r\n static highlightErrors(codeMirror: any, errors: ValidationError[]): void {\r\n if (!codeMirror) return;\r\n\r\n // 清除之前的高亮\r\n this.clearHighlights(codeMirror);\r\n\r\n errors.forEach((error: any) => {\r\n if (error.line !== undefined && error.column !== undefined) {\r\n const from = CodeMirror.Pos(error.line, error.column);\r\n const to = CodeMirror.Pos(\r\n error.endLine || error.line,\r\n error.endColumn || error.column + 1\r\n );\r\n\r\n // 添加错误高亮\r\n codeMirror.markText(from, to, {\r\n className: 'formula-error-highlight',\r\n title: error.message\r\n });\r\n\r\n // 添加错误线标记\r\n const lineHandle = codeMirror.getLineHandle(error.line);\r\n if (lineHandle) {\r\n codeMirror.addLineClass(lineHandle, 'wrap', 'formula-error-line');\r\n }\r\n }\r\n });\r\n }\r\n\r\n static clearHighlights(codeMirror: any): void {\r\n if (!codeMirror) return;\r\n\r\n // 清除所有标记\r\n codeMirror.getAllMarks().forEach((mark: any) => mark.clear());\r\n\r\n // 清除所有行类\r\n for (let i = 0; i < codeMirror.lineCount(); i++) {\r\n const lineHandle = codeMirror.getLineHandle(i);\r\n if (lineHandle) {\r\n codeMirror.removeLineClass(lineHandle, 'wrap', 'formula-error-line');\r\n }\r\n }\r\n }\r\n\r\n static highlightVariable(codeMirror: any, variable: string, label: string): void {\r\n if (!codeMirror) return;\r\n\r\n const content = codeMirror.getValue();\r\n const escapedVariable = variable.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\$&');\r\n const regex = new RegExp(`\\\\$\\\\{${escapedVariable}\\\\}`, 'g');\r\n let match;\r\n\r\n while ((match = regex.exec(content)) !== null) {\r\n const from = codeMirror.posFromIndex(match.index);\r\n const to = codeMirror.posFromIndex(match.index + match[0].length);\r\n\r\n codeMirror.markText(from, to, {\r\n className: 'formula-variable-highlight',\r\n title: label\r\n });\r\n }\r\n }\r\n}","import _ from 'lodash';\r\n\r\n// 原有的搜索函数(保持不变)\r\nexport function searchUsageFun(value: string, formulaList: any[]): any[] {\r\n let result: any[] = [];\r\n if (!value || value.trim() === '' || !formulaList || formulaList.length === 0) {\r\n return result;\r\n }\r\n\r\n const searchText = value.toLowerCase();\r\n\r\n formulaList.forEach(category => {\r\n if (category && category.contains) {\r\n category.contains.forEach((fun: any) => {\r\n if (fun.name.toLowerCase().includes(searchText) ||\r\n fun.intro.toLowerCase().includes(searchText)) {\r\n result.push(fun);\r\n }\r\n });\r\n }\r\n });\r\n\r\n return result;\r\n}\r\n\r\n// 原有的搜索变量函数(保持不变)\r\nexport function searchVariable(value: string, fieldData: any): any[] {\r\n let result: any[] = [];\r\n if (!value || value.trim() === '' || !fieldData) {\r\n return result;\r\n }\r\n\r\n const searchText = value.toLowerCase();\r\n\r\n function searchFields(fields: any[], prefix: string = ''): void {\r\n if (!fields || !Array.isArray(fields)) return;\r\n\r\n fields.forEach(field => {\r\n const fullPath = prefix ? `${prefix}.${field.name || field.label}` : (field.name || field.label);\r\n\r\n if (field.label && field.label.toLowerCase().includes(searchText)) {\r\n result.push({\r\n ...field,\r\n fullPath\r\n });\r\n }\r\n\r\n if (field.items && Array.isArray(field.items)) {\r\n searchFields(field.items, fullPath);\r\n }\r\n\r\n if (field.subform && field.subform.items) {\r\n searchFields(field.subform.items, fullPath);\r\n }\r\n });\r\n }\r\n\r\n if (Array.isArray(fieldData)) {\r\n searchFields(fieldData);\r\n } else if (typeof fieldData === 'object') {\r\n const fieldsArray = Object.keys(fieldData).map(key => ({\r\n ...fieldData[key],\r\n name: key\r\n }));\r\n searchFields(fieldsArray);\r\n }\r\n\r\n return result;\r\n}\r\n\r\n// 原有的搜索数组变量函数(保持不变)\r\nexport function searchArrayVariable(value: string, fieldDataArray: any[]): any[] {\r\n let result: any[] = [];\r\n if (!value || value.trim() === '' || !fieldDataArray || !Array.isArray(fieldDataArray)) {\r\n return result;\r\n }\r\n\r\n const searchText = value.toLowerCase();\r\n\r\n fieldDataArray.forEach(item => {\r\n if (item && item.listField && Array.isArray(item.listField)) {\r\n item.listField.forEach((field: any) => {\r\n if (field.label && field.label.toLowerCase().includes(searchText)) {\r\n result.push({\r\n ...field,\r\n group: item.label\r\n });\r\n }\r\n });\r\n }\r\n });\r\n\r\n return result;\r\n}\r\n\r\n// ============= 新增的增强功能 =============\r\n\r\nexport interface ValidationError {\r\n message: string;\r\n severity: 'error' | 'warning' | 'info';\r\n line?: number;\r\n column?: number;\r\n type?: 'syntax' | 'semantic' | 'runtime';\r\n}\r\n\r\nexport interface ValidationResult {\r\n isValid: boolean;\r\n errors: ValidationError[];\r\n warnings: ValidationError[];\r\n ast?: any;\r\n}\r\n\r\nexport interface SuggestionItem {\r\n text: string;\r\n displayText: string;\r\n className?: string;\r\n type?: 'function' | 'variable' | 'keyword';\r\n description?: string;\r\n usage?: string;\r\n category?: string;\r\n}\r\n\r\n/**\r\n * 增强的公式验证器\r\n */\r\nexport class FormulaValidator {\r\n static validateSyntax(formula: string): ValidationError[] {\r\n const errors: ValidationError[] = [];\r\n\r\n // 检查括号匹配\r\n const stack: number[] = [];\r\n for (let i = 0; i < formula.length; i++) {\r\n if (formula[i] === '(') {\r\n stack.push(i);\r\n } else if (formula[i] === ')') {\r\n if (stack.length === 0) {\r\n errors.push({\r\n message: '多余的右括号',\r\n severity: 'error',\r\n column: i,\r\n type: 'syntax'\r\n });\r\n } else {\r\n stack.pop();\r\n }\r\n }\r\n }\r\n\r\n stack.forEach(pos => {\r\n errors.push({\r\n message: '缺少右括号',\r\n severity: 'error',\r\n column: pos,\r\n type: 'syntax'\r\n });\r\n });\r\n\r\n // 检查引号匹配\r\n let inString = false;\r\n let quoteChar = '';\r\n for (let i = 0; i < formula.length; i++) {\r\n const char = formula[i];\r\n if ((char === '\"' || char === \"'\") && (i === 0 || formula[i - 1] !== '\\\\')) {\r\n if (!inString) {\r\n inString = true;\r\n quoteChar = char;\r\n } else if (char === quoteChar) {\r\n inString = false;\r\n }\r\n }\r\n }\r\n\r\n if (inString) {\r\n errors.push({\r\n message: '字符串未闭合',\r\n severity: 'error',\r\n type: 'syntax'\r\n });\r\n }\r\n\r\n return errors;\r\n }\r\n\r\n static validateSemantics(formula: string, availableFunctions: string[]): ValidationError[] {\r\n const errors: ValidationError[] = [];\r\n const warnings: ValidationError[] = [];\r\n\r\n // 提取所有函数名\r\n const functionRegex = /\\b([A-Z][A-Z0-9_]*)\\s*\\(/gi;\r\n let match;\r\n const foundFunctions = new Set<string>();\r\n\r\n while ((match = functionRegex.exec(formula)) !== null) {\r\n const funcName = match[1].toUpperCase();\r\n foundFunctions.add(funcName);\r\n\r\n // 检查函数是否存在\r\n if (!availableFunctions.includes(funcName)) {\r\n errors.push({\r\n message: `未知函数: ${funcName}`,\r\n severity: 'error',\r\n type: 'semantic'\r\n });\r\n }\r\n }\r\n\r\n // 检查函数参数\r\n const paramRegex = /,\\s*,/g;\r\n if (paramRegex.test(formula)) {\r\n warnings.push({\r\n message: '函数参数格式可能有误',\r\n severity: 'warning',\r\n type: 'semantic'\r\n });\r\n }\r\n\r\n return [...errors, ...warnings];\r\n }\r\n\r\n static validateFormula(formula: string, availableFunctions: string[]): ValidationResult {\r\n const syntaxErrors = this.validateSyntax(formula);\r\n const semanticErrors = this.validateSemantics(formula, availableFunctions);\r\n\r\n const errors = [...syntaxErrors, ...semanticErrors].filter(e => e.severity === 'error');\r\n const warnings = [...syntaxErrors, ...semanticErrors].filter(e => e.severity === 'warning');\r\n\r\n return {\r\n isValid: errors.length === 0,\r\n errors,\r\n warnings\r\n };\r\n }\r\n}\r\n\r\n/**\r\n * 增强的智能提示服务\r\n */\r\nexport class SmartSuggestionService {\r\n static getSuggestions(\r\n text: string,\r\n cursorPos: number,\r\n formulaList: any[],\r\n fieldData: any,\r\n searchType: 'variable' | 'function' | 'all' = 'all'\r\n ): SuggestionItem[] {\r\n const suggestions: SuggestionItem[] = [];\r\n const lineText = this.getLineText(text, cursorPos);\r\n\r\n if (searchType === 'variable' || searchType === 'all') {\r\n suggestions.push(...this.getVariableSuggestions(lineText, fieldData));\r\n }\r\n\r\n if (searchType === 'function' || searchType === 'all') {\r\n suggestions.push(...this.getFunctionSuggestions(lineText, formulaList));\r\n }\r\n\r\n return this.sortSuggestions(suggestions, lineText);\r\n }\r\n\r\n private static getLineText(text: string, cursorPos: number): string {\r\n const lines = text.substring(0, cursorPos).split('\\n');\r\n return lines[lines.length - 1];\r\n }\r\n\r\n private static getVariableSuggestions(lineText: string, fieldData: any): SuggestionItem[] {\r\n const suggestions: SuggestionItem[] = [];\r\n\r\n // 检测是否在输入变量\r\n if (lineText.includes('$') || lineText.includes('{')) {\r\n // 使用原有的搜索函数\r\n const variableResults = searchVariable('', fieldData);\r\n variableResults.forEach(variable => {\r\n suggestions.push({\r\n text: `\\${${variable.key}}`,\r\n displayText: variable.label,\r\n className: 'cm-variable',\r\n type: 'variable',\r\n description: variable.description || ''\r\n });\r\n });\r\n }\r\n\r\n return suggestions;\r\n }\r\n\r\n private static getFunctionSuggestions(lineText: string, formulaList: any[]): SuggestionItem[] {\r\n const suggestions: SuggestionItem[] = [];\r\n\r\n // 提取当前输入的函数前缀\r\n const functionMatch = lineText.match(/\\b([A-Z][A-Z0-9_]*)$/i);\r\n const prefix = functionMatch ? functionMatch[1].toUpperCase() : '';\r\n\r\n formulaList.forEach(category => {\r\n if (category && category.contains) {\r\n category.contains.forEach((func: any) => {\r\n if (!prefix || func.name.toUpperCase().startsWith(prefix)) {\r\n suggestions.push({\r\n text: func.name,\r\n displayText: `${func.name}()`,\r\n className: 'cm-function',\r\n type: 'function',\r\n description: func.intro,\r\n usage: func.usage,\r\n category: category.category\r\n });\r\n }\r\n });\r\n }\r\n });\r\n\r\n return suggestions;\r\n }\r\n\r\n private static sortSuggestions(suggestions: SuggestionItem[], currentText: string): SuggestionItem[] {\r\n return suggestions.sort((a, b) => {\r\n // 精确匹配优先\r\n if (a.text.toLowerCase() === currentText.toLowerCase()) return -1;\r\n if (b.text.toLowerCase() === currentText.toLowerCase()) return 1;\r\n\r\n // 开头匹配优先\r\n const aStartsWith = a.text.toLowerCase().startsWith(currentText.toLowerCase());\r\n const bStartsWith = b.text.toLowerCase().startsWith(currentText.toLowerCase());\r\n if (aStartsWith && !bStartsWith) return -1;\r\n if (!aStartsWith && bStartsWith) return 1;\r\n\r\n // 包含匹配\r\n const aContains = a.text.toLowerCase().includes(currentText.toLowerCase());\r\n const bContains = b.text.toLowerCase().includes(currentText.toLowerCase());\r\n if (aContains && !bContains) return -1;\r\n if (!aContains && bContains) return 1;\r\n\r\n // 按字母顺序\r\n return a.text.localeCompare(b.text);\r\n });\r\n }\r\n}\r\n\r\n/**\r\n * 公式高亮服务\r\n */\r\nexport class FormulaHighlighter {\r\n static highlightErrors(codeMirror: any, errors: ValidationError[]): void {\r\n // 清除之前的高亮\r\n this.clearHighlights(codeMirror);\r\n\r\n errors.forEach((error: any) => {\r\n if (error.line !== undefined && error.column !== undefined) {\r\n const from = { line: error.line, ch: error.column };\r\n const to = {\r\n line: error.endLine || error.line,\r\n ch: error.endColumn || error.column + 1\r\n };\r\n\r\n // 添加错误高亮\r\n codeMirror.markText(from, to, {\r\n className: 'formula-error-highlight',\r\n title: error.message\r\n });\r\n\r\n // 添加错误线标记\r\n const lineHandle = codeMirror.getLineHandle(error.line);\r\n if (lineHandle) {\r\n codeMirror.addLineClass(lineHandle, 'wrap', 'formula-error-line');\r\n }\r\n }\r\n });\r\n }\r\n\r\n static clearHighlights(codeMirror: any): void {\r\n // 清除所有标记\r\n codeMirror.getAllMarks().forEach((mark: any) => mark.clear());\r\n\r\n // 清除所有行类\r\n for (let i = 0; i < codeMirror.lineCount(); i++) {\r\n const lineHandle = codeMirror.getLineHandle(i);\r\n if (lineHandle) {\r\n codeMirror.removeLineClass(lineHandle, 'wrap', 'formula-error-line');\r\n }\r\n }\r\n }\r\n\r\n static highlightVariable(codeMirror: any, variable: string, label: string): void {\r\n const content = codeMirror.getValue();\r\n const regex = new RegExp(`\\\\$\\\\{${variable}\\\\}`, 'g');\r\n let match;\r\n\r\n while ((match = regex.exec(content)) !== null) {\r\n const from = codeMirror.posFromIndex(match.index);\r\n const to = codeMirror.posFromIndex(match.index + match[0].length);\r\n\r\n codeMirror.markText(from, to, {\r\n className: 'formula-variable-highlight',\r\n title: label\r\n });\r\n }\r\n }\r\n}","import {\r\n AfterViewInit,\r\n Component,\r\n ElementRef,\r\n EventEmitter,\r\n forwardRef,\r\n Input,\r\n OnDestroy,\r\n OnInit,\r\n Output,\r\n ViewChild,\r\n HostListener,\r\n ChangeDetectorRef\r\n} from \"@angular/core\";\r\n\r\nimport { CommonModule } from \"@angular/common\";\r\nimport { ReactiveFormsModule, FormsModule, ControlValueAccessor, NG_VALUE_ACCESSOR } from \"@angular/forms\";\r\n\r\nimport { NzInputModule } from \"ng-zorro-antd/input\";\r\nimport { NzCollapseModule } from \"ng-zorro-antd/collapse\";\r\nimport { NzIconModule } from \"ng-zorro-antd/icon\";\r\nimport { NzButtonModule } from \"ng-zorro-antd/button\";\r\nimport { NzToolTipModule } from \"ng-zorro-antd/tooltip\";\r\nimport { NzMessageService } from 'ng-zorro-antd/message';\r\n\r\nimport * as CodeMirror from 'codemirror';\r\nimport 'codemirror/mode/javascript/javascript';\r\nimport 'codemirror/addon/edit/matchbrackets';\r\nimport _ from 'lodash';\r\n\r\nimport { Formula } from './common-formula';\r\nimport { FormulaEnhancer, FormulaHighlighter, ValidationResult, SuggestionItem } from './formula-enhanced';\r\nimport { searchUsageFun, searchVariable, searchArrayVariable } from './common-enhanced';\r\n\r\nimport { GramPipeModule } from \"@ebuilding/base/shared.pipe\";\r\n\r\n@Component({\r\n selector: 'deon-codemirror',\r\n templateUrl: './index.component.html',\r\n styleUrls: ['./index.component.less'],\r\n providers: [\r\n {\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => GramCodemirrorComponent),\r\n multi: true\r\n },\r\n Formula\r\n ],\r\n imports: [CommonModule, ReactiveFormsModule, FormsModule, NzInputModule, NzCollapseModule, NzIconModule, NzButtonModule, NzToolTipModule, GramPipeModule]\r\n})\r\nexport class GramCodemirrorComponent implements OnInit, AfterViewInit, OnDestroy, ControlValueAccessor {\r\n\r\n @ViewChild('ref', { static: true }) ref!: ElementRef<HTMLTextAreaElement>;\r\n\r\n @Input() title = '';\r\n @Input() name = 'formula';\r\n @Input() autoFocus = false;\r\n @Input() fieldData: any[] = [];\r\n @Input() options: CodeMirror.EditorConfiguration = {};\r\n\r\n @Output() validationResult = new EventEmitter<ValidationResult>();\r\n\r\n codeMirror!: CodeMirror.EditorFromTextArea;\r\n\r\n value = '';\r\n disabled = false;\r\n\r\n FormulaUsage: any[] = [];\r\n usageDescription = '';\r\n\r\n suggestions: SuggestionItem[] = [];\r\n showSuggestionBox = false;\r\n selectedSuggestionIndex = 0;\r\n\r\n private fieldLabelMap = new Map<string, string>();\r\n private labelKeyMap = new Map<string, string>();\r\n showVariableLabels = true;\r\n\r\n private variableMarkers: CodeMirror.TextMarker[] = [];\r\n\r\n // ===== 查询 =====\r\n _variableSearch: any = null;\r\n variableSearchList: any[] = [];\r\n\r\n _usageFunSearch: any = null;\r\n usageFunSearchList: any[] = [];\r\n\r\n set variableSearch(value: string) {\r\n if (\"array\" === this.dateType) {\r\n this.variableSearchList = searchArrayVariable(value, this.fieldData);\r\n } else {\r\n this.variableSearchList = searchVariable(value, this.fieldData);\r\n }\r\n this._variableSearch = value;\r\n }\r\n get variableSearch() { return this._variableSearch; }\r\n\r\n set usageFunSearch(value: string) {\r\n this.usageFunSearchList = searchUsageFun(value, this.FormulaUsage);\r\n this._usageFunSearch = value;\r\n }\r\n get usageFunSearch() { return this._usageFunSearch; }\r\n\r\n get dateType(): string {\r\n return Array.isArray(this.fieldData) ? \"array\" : \"object\";\r\n }\r\n\r\n constructor(\r\n private el: ElementRef,\r\n private msg: NzMessageService,\r\n private cdr: ChangeDetectorRef,\r\n private formula: Formula\r\n ) { }\r\n\r\n ngOnInit() {\r\n this.FormulaUsage = _.cloneDeep(this.formula.FormulaUsage);\r\n this.buildVariableMap();\r\n }\r\n\r\n ngAfterViewInit() {\r\n this.defineMode();\r\n this.initEditor();\r\n }\r\n\r\n ngOnDestroy() {\r\n this.codeMirror?.toTextArea();\r\n }\r\n\r\n // ===== 工具方法 =====\r\n private escapeRegExp(str: string) {\r\n return str.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\$&');\r\n }\r\n\r\n // ===== Variable Map =====\r\n private buildVariableMap() {\r\n this.fieldData?.forEach(g =>\r\n g.listField?.forEach((f: any) => {\r\n const key = `\\${${f.key}}`;\r\n this.fieldLabelMap.set(key, f.label);\r\n this.labelKeyMap.set(f.label, key);\r\n })\r\n );\r\n }\r\n\r\n private displayToFormula(text: string) {\r\n let result = text;\r\n this.labelKeyMap.forEach((key, label) => {\r\n const escapedLabel = this.escapeRegExp(label);\r\n result = result.replace(new RegExp(escapedLabel, 'g'), key);\r\n });\r\n return result;\r\n }\r\n\r\n private formulaToDisplay(text: string) {\r\n let result = text;\r\n this.fieldLabelMap.forEach((label, key) => {\r\n const escapedKey = this.escapeRegExp(key);\r\n result = result.replace(new RegExp(escapedKey, 'g'), label);\r\n });\r\n return result;\r\n }\r\n\r\n // ===== CodeMirror =====\r\n private defineMode() {\r\n const self = this; // 保留 this 引用\r\n CodeMirror.defineMode('fx-formula', () => ({\r\n token: (stream: any) => {\r\n if (stream.eatSpace()) return null;\r\n\r\n // 1. 匹配 ${xxx} 变量\r\n if (stream.match(/\\$\\{[^}]+\\}/)) return 'variable';\r\n\r\n // 2. 匹配标签变量(中文/字母/数字/下划线)\r\n if (stream.match(/[^\\s\\(\\)\\+\\-\\*\\/%,]+/)) {\r\n const word = stream.current();\r\n if (self.labelKeyMap.has(word) || Array.from(self.labelKeyMap.values()).includes(word)) {\r\n return 'variable'; // 标签变量高亮\r\n } else {\r\n return 'function'; // 函数名\r\n }\r\n }\r\n\r\n // 3. 括号或运算符\r\n if (stream.match(/[\\(\\)\\+\\-\\*\\/%,]/)) return 'operator';\r\n\r\n // 4. 跳过一个字符\r\n stream.next();\r\n return null;\r\n }\r\n }));\r\n }\r\n\r\n // private initEditor() {\r\n // this.codeMirror = CodeMirror.fromTextArea(this.ref.nativeElement, {\r\n // mode: 'fx-formula',\r\n // lineWrapping: true,\r\n // matchBrackets: true,\r\n // extraKeys: {\r\n // 'Ctrl-Space': () => this.updateSuggestions(),\r\n // Enter: () => this.applySuggestion()\r\n // }\r\n // });\r\n\r\n // this.codeMirror.on('change', () => this.onEditorChange());\r\n\r\n // if (this.autoFocus) setTimeout(() => this.codeMirror.focus(), 100);\r\n // }\r\n private initEditor() {\r\n const defaultOptions: CodeMirror.EditorConfiguration = {\r\n mode: 'fx-formula', // 始终使用自定义公式 mode\r\n lineWrapping: true,\r\n matchBrackets: true,\r\n lineNumbers: false,\r\n extraKeys: {\r\n 'Ctrl-Space': () => this.updateSuggestions(),\r\n Enter: () => this.applySuggestion()\r\n }\r\n };\r\n\r\n const finalOptions: CodeMirror.EditorConfiguration = {\r\n ...defaultOptions,\r\n ...this.options,\r\n mode: 'fx-formula'\r\n };\r\n\r\n this.codeMirror = CodeMirror.fromTextArea(\r\n this.ref.nativeElement,\r\n finalOptions\r\n );\r\n\r\n this.codeMirror.on('change', () => this.onEditorChange());\r\n\r\n if (this.autoFocus) {\r\n setTimeout(() => this.codeMirror.focus(), 100);\r\n }\r\n }\r\n\r\n private onEditorChange() {\r\n const display = this.codeMirror.getValue();\r\n this.value = this.showVariableLabels\r\n ? this.displayToFormula(display)\r\n : display;\r\n\r\n this.onChange(this.value);\r\n this.updateSuggestions();\r\n this.highlightVariables();\r\n }\r\n\r\n private highlightVariables() {\r\n if (!this.codeMirror) return;\r\n\r\n // 清除原来的标记\r\n this.variableMarkers.forEach(m => m.clear());\r\n this.variableMarkers = [];\r\n\r\n const text = this.codeMirror.getValue();\r\n this.fieldLabelMap.forEach((label, key) => {\r\n const escapedKey = this.escapeRegExp(this.showVariableLabels ? label : key);\r\n const regex = new RegExp(escapedKey, 'g');\r\n let match;\r\n while ((match = regex.exec(text)) !== null) {\r\n const from = this.codeMirror.posFromIndex(match.index);\r\n const to = this.codeMirror.posFromIndex(match.index + match[0].length);\r\n const marker = this.codeMirror.markText(from, to, {\r\n className: 'formula-variable-highlight',\r\n title: `${label} (${key})`\r\n });\r\n this.variableMarkers.push(marker);\r\n }\r\n });\r\n }\r\n\r\n // ===== Insert =====\r\n insertField(f: any) {\r\n const text = this.showVariableLabels ? f.label : `\\${${f.key}}`;\r\n const cursor = this.codeMirror.getCursor();\r\n const prevChar = this.codeMirror.getRange({ line: cursor.line, ch: cursor.ch - 1 }, cursor);\r\n const nextChar = this.codeMirror.getRange(cursor, { line: cursor.line, ch: cursor.ch + 1 });\r\n\r\n let insertText = text;\r\n if (prevChar && !/\\s|[\\(\\)\\+\\-\\*\\/%,]/.test(prevChar)) insertText = ' ' + insertText;\r\n if (nextChar && !/\\s|[\\(\\)\\+\\-\\*\\/%,]/.test(nextChar)) insertText += ' ';\r\n\r\n this.codeMirror.replaceSelection(insertText);\r\n }\r\n\r\n insertUsageFun(f: any) {\r\n const text = `${f.name}()`;\r\n const cursor = this.codeMirror.getCursor();\r\n const prevChar = this.codeMirror.getRange({ line: cursor.line, ch: cursor.ch - 1 }, cursor);\r\n const nextChar = this.codeMirror.getRange(cursor, { line: cursor.line, ch: cursor.ch + 1 });\r\n\r\n let insertText = text;\r\n if (prevChar && !/\\s|[\\(\\)\\+\\-\\*\\/%,]/.test(prevChar)) insertText = ' ' + insertText;\r\n if (nextChar && !/\\s|[\\(\\)\\+\\-\\*\\/%,]/.test(nextChar)) insertText += ' ';\r\n\r\n this.codeMirror.replaceSelection(insertText);\r\n\r\n const c = this.codeMirror.getCursor();\r\n this.codeMirror.setCursor({ line: c.line, ch: c.ch - 1 }); // 光标放在括号里面\r\n }\r\n\r\n // ===== Suggestions =====\r\n updateSuggestions() {\r\n const cursor = this.codeMirror.getCursor();\r\n const idx = this.codeMirror.indexFromPos(cursor);\r\n const enhancer = new FormulaEnhancer(this.formula);\r\n this.suggestions = enhancer.getSuggestions(this.value, idx, []);\r\n this.showSuggestionBox = this.suggestions.length > 0;\r\n this.selectedSuggestionIndex = 0;\r\n this.cdr.detectChanges();\r\n }\r\n\r\n applySuggestion() {\r\n if (!this.showSuggestionBox) return;\r\n this.insertSuggestion(this.suggestions[this.selectedSuggestionIndex]);\r\n }\r\n\r\n insertSuggestion(s: SuggestionItem) {\r\n this.codeMirror.replaceSelection(\r\n this.showVariableLabels && s.type === 'variable'\r\n ? this.fieldLabelMap.get(s.text) || s.text\r\n : s.text\r\n );\r\n this.showSuggestionBox = false;\r\n }\r\n\r\n btnValidate() {\r\n let res: any = this.validateFormula();\r\n if (res && res?.isValid && res?.isValid == true) {\r\n this.msg.success(\"校验成功\");\r\n } else {\r\n this.msg.error(\"校验失败\");\r\n }\r\n }\r\n\r\n // ===== Validation =====\r\n validateFormula() {\r\n const enhancer = new FormulaEnhancer(this.formula);\r\n const res = enhancer.validate(this.value);\r\n FormulaHighlighter.highlightErrors(this.codeMirror, res.errors);\r\n this.validationResult.emit(res);\r\n return res;\r\n }\r\n\r\n // ===== Buttons =====\r\n toggleVariableDisplay() {\r\n this.showVariableLabels = !this.showVariableLabels;\r\n const text = this.showVariableLabels\r\n ? this.formulaToDisplay(this.value)\r\n : this.value;\r\n this.codeMirror.setValue(text);\r\n this.highlightVariables();\r\n }\r\n\r\n btnCopy() {\r\n navigator.clipboard.writeText(this.value);\r\n this.msg.success('复制成功');\r\n }\r\n\r\n btnPaste() {\r\n navigator.clipboard.readText().then(v => {\r\n this.value += v;\r\n this.codeMirror.setValue(\r\n this.showVariableLabels ? this.formulaToDisplay(this.value) : this.value\r\n );\r\n this.highlightVariables();\r\n });\r\n }\r\n\r\n btnClear() {\r\n this.value = '';\r\n this.codeMirror.setValue('');\r\n }\r\n\r\n // ===== CVA =====\r\n writeValue(v: string) {\r\n this.value = v || '';\r\n if (this.codeMirror) {\r\n this.codeMirror.setValue(\r\n this.showVariableLabels ? this.formulaToDisplay(this.value) : this.value\r\n );\r\n this.highlightVariables();\r\n }\r\n }\r\n onChange = (_: any) => { };\r\n registerOnChange(fn: any) { this.onChange = fn; }\r\n registerOnTouched() { }\r\n setDisabledState(d: boolean) {\r\n this.disabled = d;\r\n this.codeMirror?.setOption('readOnly', d);\r\n }\r\n\r\n @HostListener('document:click', ['$event'])\r\n closeSuggest(e: MouseEvent) {\r\n if (!this.el.nativeElement.contains(e.target)) {\r\n this.showSuggestionBox = false;\r\n }\r\n }\r\n\r\n usageMouseover(e: any) {\r\n let usage = e.usage ? `<li class=\"usage\"> 用法:${e.usage} </li>` : \"\";\r\n this.usageDescription = `\r\n <div class=\"formula-title\">${e.name}</div>\r\n <ul class=\"intro-wrapper\">\r\n <li class=\"intro\">${e.intro}</li>\r\n ${usage}\r\n <li class=\"example\">示例:${e.example}</li>\r\n </ul>`;\r\n }\r\n}\r\n","<div class=\"formula-head\">\r\n <div class=\"formula-title\">\r\n <span class=\"formula-name\">{{ title }}</span>\r\n <span class=\"formula-equal\">=</span>\r\n </div>\r\n\r\n <div class=\"formula-body\">\r\n <textarea #ref [name]=\"name\" autocomplete=\"off\" [autofocus]=\"autoFocus\"></textarea>\r\n\r\n <div class=\"button-body\">\r\n <button nz-button nzSize=\"small\" (click)=\"toggleVariableDisplay()\">切换显示</button>\r\n <button nz-button nzSize=\"small\" (click)=\"btnValidate()\">基础校验</button>\r\n <button nz-button nzSize=\"small\" (click)=\"btnCopy()\">复制</button>\r\n <button nz-button nzSize=\"small\" (click)=\"btnPaste()\">粘贴</button>\r\n <button nz-button nzSize=\"small\" (click)=\"btnClear()\">清空</button>\r\n </div>\r\n </div>\r\n</div>\r\n\r\n<div class=\"formula-wrapper\">\r\n <!-- 变量 -->\r\n <div class=\"field-list\">\r\n <div class=\"title\">可用变量</div>\r\n <div class=\"field-wrapper\">\r\n <input nz-input placeholder=\"搜索变量\" [(ngModel)]=\"variableSearch\" />\r\n <div class=\"field-data\">\r\n <ng-container\r\n *ngIf=\"variableSearch && variableSearchList && variableSearchList.length>0;else tmpFieldPanel\">\r\n <ul>\r\n <li *ngFor=\"let item of variableSearchList\" (click)=\"insertField(item)\">\r\n {{ item.label }}\r\n </li>\r\n </ul>\r\n </ng-container>\r\n <ng-template #tmpFieldPanel>\r\n <nz-collapse nzBordered=\"false\">\r\n <nz-collapse-panel *ngFor=\"let g of fieldData\" [nzHeader]=\"g.label\">\r\n <div class=\"item\" *ngFor=\"let f of g.listField\" (click)=\"insertField(f)\">\r\n {{ f.label }}\r\n </div>\r\n </nz-collapse-panel>\r\n </nz-collapse>\r\n </ng-template>\r\n\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <!-- 函数 -->\r\n <div class=\"field-list\">\r\n <div class=\"title\">函数</div>\r\n <div class=\"field-wrapper\">\r\n <input nz-input placeholder=\"搜索函数\" [(ngModel)]=\"usageFunSearch\" />\r\n <div class=\"field-data\">\r\n <ng-container\r\n *ngIf=\"usageFunSearch && usageFunSearchList && usageFunSearchList.length>0;else tmpFunPanel\">\r\n <ul>\r\n <li *ngFor=\"let item of usageFunSearchList\" (click)=\"insertUsageFun(item)\">\r\n {{ item.name }}\r\n </li>\r\n </ul>\r\n </ng-container>\r\n\r\n <ng-template #tmpFunPanel>\r\n <nz-collapse nzBordered=\"false\">\r\n <nz-collapse-panel *ngFor=\"let g of FormulaUsage\" [nzHeader]=\"g.category\">\r\n <div class=\"item\" *ngFor=\"let f of g.contains\" (click)=\"insertUsageFun(f)\"\r\n (mouseover)=\"usageMouseover(f)\">\r\n {{ f.name }}\r\n </div>\r\n </nz-collapse-panel>\r\n </nz-collapse>\r\n </ng-template>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <!-- 提示 -->\r\n <div class=\"formula-intro\" [innerHTML]=\"usageDescription | safeHtml\"></div>\r\n</div>","\r\nimport {\r\n NgModule\r\n} from \"@angular/core\";\r\nimport { GramCodemirrorComponent } from './main/index.component';\r\n\r\nconst components: any[] = [GramCodemirrorComponent];\r\n\r\n@NgModule({\r\n exports: [...components],\r\n imports: [...components],\r\n})\r\nexport class GramCodemirrorModule {\r\n}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["CodeMirror","FormulaHighlighter","i2.Formula"],"mappings":"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"}
|