@ecan-bi/datav 1.0.88 → 1.0.90
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.es.js +146 -48
- package/dist/index.es.js.map +1 -1
- package/dist/index.umd.js +145 -47
- package/dist/index.umd.js.map +1 -1
- package/dist/style.css +13 -17
- package/es/container/modal/Modal.js +1 -4
- package/es/container/modal/Modal.js.map +1 -1
- package/es/container/modal/index.js.map +1 -1
- package/es/container/modal/props.js +1 -1
- package/es/container/modal/props.js.map +1 -1
- package/es/graph/bar/Bar.js +33 -2
- package/es/graph/bar/Bar.js.map +1 -1
- package/es/graph/bar/index.js.map +1 -1
- package/es/graph/bar/props.js +1 -2
- package/es/graph/bar/props.js.map +1 -1
- package/es/graph/combo-graph/ComboGraph.js +44 -12
- package/es/graph/combo-graph/ComboGraph.js.map +1 -1
- package/es/graph/combo-graph/props.js +1 -1
- package/es/graph/combo-graph/props.js.map +1 -1
- package/es/graph/line/Line.js +37 -3
- package/es/graph/line/Line.js.map +1 -1
- package/es/graph/line/props.js +7 -6
- package/es/graph/line/props.js.map +1 -1
- package/es/graph/pie/Pie.js +22 -1
- package/es/graph/pie/Pie.js.map +1 -1
- package/es/graph/pie/props.js +1 -1
- package/es/graph/pie/props.js.map +1 -1
- package/es/graph/scatter/Scatter.js +10 -1
- package/es/graph/scatter/Scatter.js.map +1 -1
- package/es/graph/scatter/props.js +1 -1
- package/es/graph/scatter/props.js.map +1 -1
- package/es/hooks/useRequestData.js +1 -1
- package/es/hooks/useRequestData.js.map +1 -1
- package/es/hooks/useValueFormatter.js +2 -1
- package/es/hooks/useValueFormatter.js.map +1 -1
- package/es/hooks/useVariablesInText.js +32 -11
- package/es/hooks/useVariablesInText.js.map +1 -1
- package/es/setting/provider-config/ProviderConfig.js +3 -1
- package/es/setting/provider-config/ProviderConfig.js.map +1 -1
- package/es/table/table/Table.js +87 -28
- package/es/table/table/Table.js.map +1 -1
- package/es/table/table/index.js.map +1 -1
- package/es/table/table/props.js +1 -0
- package/es/table/table/props.js.map +1 -1
- package/es/text/text/Text.js +21 -1
- package/es/text/text/Text.js.map +1 -1
- package/es/text/text/props.js +4 -1
- package/es/text/text/props.js.map +1 -1
- package/lib/container/modal/Modal.js +1 -4
- package/lib/container/modal/Modal.js.map +1 -1
- package/lib/container/modal/index.js.map +1 -1
- package/lib/container/modal/props.js +1 -1
- package/lib/container/modal/props.js.map +1 -1
- package/lib/graph/bar/Bar.js +33 -2
- package/lib/graph/bar/Bar.js.map +1 -1
- package/lib/graph/bar/index.js.map +1 -1
- package/lib/graph/bar/props.js +1 -2
- package/lib/graph/bar/props.js.map +1 -1
- package/lib/graph/combo-graph/ComboGraph.js +44 -12
- package/lib/graph/combo-graph/ComboGraph.js.map +1 -1
- package/lib/graph/combo-graph/props.js +1 -1
- package/lib/graph/combo-graph/props.js.map +1 -1
- package/lib/graph/line/Line.js +37 -3
- package/lib/graph/line/Line.js.map +1 -1
- package/lib/graph/line/props.js +7 -6
- package/lib/graph/line/props.js.map +1 -1
- package/lib/graph/pie/Pie.js +22 -1
- package/lib/graph/pie/Pie.js.map +1 -1
- package/lib/graph/pie/props.js +1 -1
- package/lib/graph/pie/props.js.map +1 -1
- package/lib/graph/scatter/Scatter.js +10 -1
- package/lib/graph/scatter/Scatter.js.map +1 -1
- package/lib/graph/scatter/props.js +1 -1
- package/lib/graph/scatter/props.js.map +1 -1
- package/lib/hooks/useRequestData.js +1 -1
- package/lib/hooks/useRequestData.js.map +1 -1
- package/lib/hooks/useValueFormatter.js +2 -1
- package/lib/hooks/useValueFormatter.js.map +1 -1
- package/lib/hooks/useVariablesInText.js +33 -11
- package/lib/hooks/useVariablesInText.js.map +1 -1
- package/lib/setting/provider-config/ProviderConfig.js +3 -1
- package/lib/setting/provider-config/ProviderConfig.js.map +1 -1
- package/lib/style.css +6503 -6503
- package/lib/table/table/Table.js +87 -28
- package/lib/table/table/Table.js.map +1 -1
- package/lib/table/table/index.js.map +1 -1
- package/lib/table/table/props.js +1 -0
- package/lib/table/table/props.js.map +1 -1
- package/lib/text/text/Text.js +21 -1
- package/lib/text/text/Text.js.map +1 -1
- package/lib/text/text/props.js +4 -1
- package/lib/text/text/props.js.map +1 -1
- package/package.json +1 -1
- package/types/container/modal/index.d.ts +1 -1
- package/types/control/select/Select.vue.d.ts +1 -0
- package/types/control/select/index.d.ts +1 -0
- package/types/table/table/Table.vue.d.ts +124 -5
- package/types/table/table/index.d.ts +125 -6
- package/types/table/table/props.d.ts +63 -0
- package/types/text/text/Text.vue.d.ts +66 -0
- package/types/text/text/index.d.ts +66 -0
- package/types/text/text/props.d.ts +36 -0
- package/types/hooks/usePickEchartsData.d.ts +0 -2
- package/types/hooks/useTooltipFormatter.d.ts +0 -4
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useRequestData.js","sources":["../../src/hooks/useRequestData.ts"],"sourcesContent":["import { inject, onUnmounted, unref } from 'vue'\nimport axios from 'axios'\nimport { GLOBAL_MODEL, GLOBAL_CONFIG } from '@/utils/constant'\nimport { lowerCaseIncludes } from '@/utils/util'\nimport useVariablesInText from './useVariablesInText'\n// import dayjs from 'dayjs'\n\nexport const useRequestData = (props: { [key:string]: any }, callBack: Function = () => {}) => {\n const {\n requestUrl: url,\n requestMethod: method,\n requestHeaders: headers,\n requestParams,\n requestInterval,\n isOpenRequestTimer\n } = props\n const { contextRequestUrl, pageMode, touchEventId } = inject(GLOBAL_CONFIG, {\n contextRequestUrl: '',\n pageMode: 'normal',\n touchEventId: ''\n })\n const { getGlobalModel } = inject(GLOBAL_MODEL, {\n // @ts-ignore\n // eslint-disable-next-line no-void\n getGlobalModel: (key: string) => void 0\n })\n const requestData = async (params: { [key: string]: any } = {}) => {\n if (!url || !method || !headers || unref(pageMode) === 'design') return\n let _params = {} as { [key: string]: any }\n requestParams.forEach((param) => {\n const { key, value } = param\n if ((typeof value === 'object' && value.id)) {\n // 传入数据可能是这样\n // {\n // key: 'record',\n // value: {\n // id: 'T7hid3K4kg7UR9Q-44u1-',\n // prop: 'record',\n // propKey: 'id'\n // }\n // }\n // 获取到组件数据\n let record = {} as { [key:string]: any }\n const { id, prop, propKey } = value\n if (id === 'THIS') {\n // THIS 使用当前触发事件组件的ID\n record = getGlobalModel(unref(touchEventId)) || {}\n } else {\n record = getGlobalModel(id) || {}\n }\n const p = unref(record[prop])\n // 如果传入响应式数据优取响应式\n let v = ''\n // 需要格式日期的组件\n const isNeedFormat = ['date', 'range'].some((item) => lowerCaseIncludes(record?.type, item))\n // 格式化时间\n if (isNeedFormat) {\n // 此时 v 是 dayjs 对象\n // 此时 propKey 是格式化值\n v = unref(p)?.format(propKey?.trim() || record.format) || ''\n } else {\n // 因为 model[prop] 可能为 ref\n // 判断他是不是对象\n if (Object.prototype.toString.call(p) === '[object Object]') {\n v = p[propKey || 'value']\n } else {\n v = p\n }\n // v = p != null && typeof p === 'object' ? p[propKey || 'value'] : p\n }\n _params[key] = v\n } else if (typeof value === 'string') {\n _params[key] = useVariablesInText(value)\n }\n })\n // @ts-ignore\n _params = { ...window.requestParams, ..._params, ...params }\n let urlParams = ''\n const keys = Object.keys(_params)\n const last = keys.length - 1\n const keysLen = keys.length\n keys.forEach((key, index) => {\n if (index === 0) {\n if (keysLen !== 1) {\n urlParams += `?${key}=${_params[key]}&`\n } else {\n urlParams += `?${key}=${_params[key]}`\n }\n } else if (index === last) {\n urlParams += `${key}=${_params[key]}`\n } else {\n urlParams += `${key}=${_params[key]}&`\n }\n })\n try {\n const isSetUrlParams = ['get', 'head'].includes(method)\n const res = await axios({\n baseURL: unref(contextRequestUrl),\n url: isSetUrlParams ? url + urlParams : url,\n method,\n headers,\n data: isSetUrlParams ? {} : _params\n })\n callBack(res)\n return res\n } catch (e) {\n console.error(e)\n }\n }\n\n const requestDataTimer = isOpenRequestTimer && setInterval(requestData, requestInterval * 1000)\n\n onUnmounted(() => {\n clearInterval(requestDataTimer)\n })\n\n return requestData\n}\n\nexport default useRequestData\n"],"names":["inject","GLOBAL_CONFIG","GLOBAL_MODEL","unref","lowerCaseIncludes","useVariablesInText","index","axios","onUnmounted"],"mappings":";;;;;;;AAOO,MAAM,iBAAiB,CAAC,OAA8B,WAAqB,MAAM;AAAC,MAAM;AACvF,QAAA;AAAA,IACJ,YAAY;AAAA,IACZ,eAAe;AAAA,IACf,gBAAgB;AAAA,IAChB;AAAA,IACA;AAAA,IACA;AAAA,EACE,IAAA;AACJ,QAAM,EAAE,mBAAmB,UAAU,aAAa,IAAIA,IAAAA,OAAOC,SAAAA,eAAe;AAAA,IAC1E,mBAAmB;AAAA,IACnB,UAAU;AAAA,IACV,cAAc;AAAA,EAAA,CACf;AACD,QAAM,EAAE,eAAA,IAAmBD,IAAA,OAAOE,uBAAc;AAAA,IAG9C,gBAAgB,CAAC,QAAgB;AAAA,EAAA,CAClC;AACD,QAAM,cAAc,OAAO,SAAiC,OAAO;AAC7D,QAAA,CAAC,OAAO,CAAC,UAAU,CAAC,WAAWC,IAAA,MAAM,QAAQ,MAAM;AAAU;AACjE,QAAI,UAAU,CAAA;AACA,kBAAA,QAAQ,CAAC,UAAU;;AACzB,YAAA,EAAE,KAAK,MAAU,IAAA;AACvB,UAAK,OAAO,UAAU,YAAY,MAAM,IAAK;AAW3C,YAAI,SAAS,CAAA;AACb,cAAM,EAAE,IAAI,MAAM,QAAA,IAAY;AAC9B,YAAI,OAAO,QAAQ;AAEjB,mBAAS,eAAeA,IAAAA,MAAM,YAAY,CAAC,KAAK,CAAA;AAAA,QAAC,OAC5C;AACI,mBAAA,eAAe,EAAE,KAAK;QACjC;AACM,cAAA,IAAIA,IAAM,MAAA,OAAO,KAAK;AAE5B,YAAI,IAAI;AAER,cAAM,eAAe,CAAC,QAAQ,OAAO,EAAE,KAAK,CAAC,SAASC,KAAkB,kBAAA,iCAAQ,MAAM,IAAI,CAAC;AAE3F,YAAI,cAAc;AAGZ,gBAAAD,SAAA,MAAM,CAAC,MAAPA,mBAAU,QAAO,mCAAS,WAAU,OAAO,YAAW;AAAA,QAAA,OACrD;AAGL,cAAI,OAAO,UAAU,SAAS,KAAK,CAAC,MAAM,mBAAmB;AAC3D,gBAAI,EAAE,WAAW;AAAA,UAAA,OACZ;AACD,gBAAA;AAAA,UACN;AAAA,QAEF;AACA,gBAAQ,OAAO;AAAA,MAAA,WACN,OAAO,UAAU,UAAU;AAC5B,gBAAA,OAAOE,sCAAmB,KAAK;AAAA,MACzC;AAAA,IAAA,CACD;
|
|
1
|
+
{"version":3,"file":"useRequestData.js","sources":["../../src/hooks/useRequestData.ts"],"sourcesContent":["import { inject, onUnmounted, unref } from 'vue'\nimport axios from 'axios'\nimport { GLOBAL_MODEL, GLOBAL_CONFIG } from '@/utils/constant'\nimport { lowerCaseIncludes } from '@/utils/util'\nimport useVariablesInText from './useVariablesInText'\n// import dayjs from 'dayjs'\n\nexport const useRequestData = (props: { [key:string]: any }, callBack: Function = () => {}) => {\n const {\n requestUrl: url,\n requestMethod: method,\n requestHeaders: headers,\n requestParams,\n requestInterval,\n isOpenRequestTimer\n } = props\n const { contextRequestUrl, pageMode, touchEventId } = inject(GLOBAL_CONFIG, {\n contextRequestUrl: '',\n pageMode: 'normal',\n touchEventId: ''\n })\n const { getGlobalModel } = inject(GLOBAL_MODEL, {\n // @ts-ignore\n // eslint-disable-next-line no-void\n getGlobalModel: (key: string) => void 0\n })\n const requestData = async (params: { [key: string]: any } = {}) => {\n if (!url || !method || !headers || unref(pageMode) === 'design') return\n let _params = {} as { [key: string]: any }\n requestParams.forEach((param) => {\n const { key, value } = param\n if ((typeof value === 'object' && value.id)) {\n // 传入数据可能是这样\n // {\n // key: 'record',\n // value: {\n // id: 'T7hid3K4kg7UR9Q-44u1-',\n // prop: 'record',\n // propKey: 'id'\n // }\n // }\n // 获取到组件数据\n let record = {} as { [key:string]: any }\n const { id, prop, propKey } = value\n if (id === 'THIS') {\n // THIS 使用当前触发事件组件的ID\n record = getGlobalModel(unref(touchEventId)) || {}\n } else {\n record = getGlobalModel(id) || {}\n }\n const p = unref(record[prop])\n // 如果传入响应式数据优取响应式\n let v = ''\n // 需要格式日期的组件\n const isNeedFormat = ['date', 'range'].some((item) => lowerCaseIncludes(record?.type, item))\n // 格式化时间\n if (isNeedFormat) {\n // 此时 v 是 dayjs 对象\n // 此时 propKey 是格式化值\n v = unref(p)?.format(propKey?.trim() || record.format) || ''\n } else {\n // 因为 model[prop] 可能为 ref\n // 判断他是不是对象\n if (Object.prototype.toString.call(p) === '[object Object]') {\n v = p[propKey || 'value']\n } else {\n v = p\n }\n // v = p != null && typeof p === 'object' ? p[propKey || 'value'] : p\n }\n _params[key] = v\n } else if (typeof value === 'string') {\n _params[key] = useVariablesInText(value)\n }\n })\n // @ts-ignore\n _params = { ...window.config.requestParams, ..._params, ...params }\n let urlParams = ''\n const keys = Object.keys(_params)\n const last = keys.length - 1\n const keysLen = keys.length\n keys.forEach((key, index) => {\n if (index === 0) {\n if (keysLen !== 1) {\n urlParams += `?${key}=${_params[key]}&`\n } else {\n urlParams += `?${key}=${_params[key]}`\n }\n } else if (index === last) {\n urlParams += `${key}=${_params[key]}`\n } else {\n urlParams += `${key}=${_params[key]}&`\n }\n })\n try {\n const isSetUrlParams = ['get', 'head'].includes(method)\n const res = await axios({\n baseURL: unref(contextRequestUrl),\n url: isSetUrlParams ? url + urlParams : url,\n method,\n headers,\n data: isSetUrlParams ? {} : _params\n })\n callBack(res)\n return res\n } catch (e) {\n console.error(e)\n }\n }\n\n const requestDataTimer = isOpenRequestTimer && setInterval(requestData, requestInterval * 1000)\n\n onUnmounted(() => {\n clearInterval(requestDataTimer)\n })\n\n return requestData\n}\n\nexport default useRequestData\n"],"names":["inject","GLOBAL_CONFIG","GLOBAL_MODEL","unref","lowerCaseIncludes","useVariablesInText","index","axios","onUnmounted"],"mappings":"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"}
|
|
@@ -7,7 +7,8 @@ const useValueFormatter = (formatter, value) => {
|
|
|
7
7
|
if (variables == null || variables.length === 0) {
|
|
8
8
|
return value;
|
|
9
9
|
}
|
|
10
|
-
|
|
10
|
+
const len = variables.length;
|
|
11
|
+
for (let i = 0; i < len; i++) {
|
|
11
12
|
const variable = variables[i];
|
|
12
13
|
if (variable == null || variable === "")
|
|
13
14
|
break;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useValueFormatter.js","sources":["../../src/hooks/useValueFormatter.ts"],"sourcesContent":["export const useValueFormatter = (formatter: string, value:string) => {\n if (formatter == null) return value\n const variables = (formatter).match(/\\{.*\\}/g)\n if (variables == null || variables.length === 0) {\n return value\n }\n for (let i = 0; i <
|
|
1
|
+
{"version":3,"file":"useValueFormatter.js","sources":["../../src/hooks/useValueFormatter.ts"],"sourcesContent":["export const useValueFormatter = (formatter: string, value:string) => {\n if (formatter == null) return value\n const variables = (formatter).match(/\\{.*\\}/g)\n if (variables == null || variables.length === 0) {\n return value\n }\n const len = variables.length\n for (let i = 0; i < len; i++) {\n const variable = variables[i]\n if (variable == null || variable === '') break\n let statement = variable.slice(1, -1)\n statement = statement?.replace(/value/g, value)\n if ((/[+\\-*/%]+/g).test(value)) {\n formatter = formatter.replace(variable, statement)\n } else {\n try {\n // 匹配加减乘除\n let result = statement\n if ((/[+\\-*/%]+/g).test(statement)) {\n // eslint-disable-next-line no-eval\n const eval2 = eval\n result = eval2(statement)\n }\n formatter = formatter.replace(variable, result)\n } catch (e) {\n console.error(e)\n return value\n }\n }\n }\n return formatter\n}\n\nexport default useValueFormatter\n"],"names":[],"mappings":";;AAAa,MAAA,oBAAoB,CAAC,WAAmB,UAAiB;AACpE,MAAI,aAAa;AAAa,WAAA;AACxB,QAAA,YAAa,UAAW,MAAM,SAAS;AAC7C,MAAI,aAAa,QAAQ,UAAU,WAAW,GAAG;AACxC,WAAA;AAAA,EACT;AACA,QAAM,MAAM,UAAU;AACtB,WAAS,IAAI,GAAG,IAAI,KAAK,KAAK;AAC5B,UAAM,WAAW,UAAU;AACvB,QAAA,YAAY,QAAQ,aAAa;AAAI;AACzC,QAAI,YAAY,SAAS,MAAM,GAAG,EAAE;AACxB,gBAAA,uCAAW,QAAQ,UAAU;AACpC,QAAA,aAAc,KAAK,KAAK,GAAG;AAClB,kBAAA,UAAU,QAAQ,UAAU,SAAS;AAAA,IAAA,OAC5C;AACD,UAAA;AAEF,YAAI,SAAS;AACR,YAAA,aAAc,KAAK,SAAS,GAAG;AAElC,gBAAM,QAAQ;AACd,mBAAS,MAAM,SAAS;AAAA,QAC1B;AACY,oBAAA,UAAU,QAAQ,UAAU,MAAM;AAAA,eACvC;AACP,gBAAQ,MAAM,CAAC;AACR,eAAA;AAAA,MACT;AAAA,IACF;AAAA,EACF;AACO,SAAA;AACT;;;"}
|
|
@@ -1,22 +1,44 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperties(exports, { __esModule: { value: true }, [Symbol.toStringTag]: { value: "Module" } });
|
|
3
|
-
const useVariablesInText = (
|
|
3
|
+
const useVariablesInText = (formatter = "", data = {}, { useNewline = false, useSpace = false } = {}) => {
|
|
4
4
|
const config = window.config || {};
|
|
5
5
|
data = { ...config, ...data };
|
|
6
|
-
const variables =
|
|
7
|
-
if (variables == null || variables.length === 0)
|
|
8
|
-
return
|
|
6
|
+
const variables = formatter.match(/\{(.+?)\}/g);
|
|
7
|
+
if (variables == null || variables.length === 0) {
|
|
8
|
+
return formatter;
|
|
9
|
+
}
|
|
9
10
|
for (let i = 0; i < variables.length; i++) {
|
|
10
11
|
const variable = variables[i];
|
|
11
|
-
|
|
12
|
-
const
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
12
|
+
let statement = variable.slice(1, -1);
|
|
13
|
+
const reg = /[\u4e00-\u9fa5_a-zA-Z_]+[0-9]*/g;
|
|
14
|
+
const textVariables = statement.match(reg);
|
|
15
|
+
for (let j = 0; j < textVariables.length; j++) {
|
|
16
|
+
const textVariable = textVariables[j];
|
|
17
|
+
const usedVariable = data[textVariable];
|
|
18
|
+
if (usedVariable != null) {
|
|
19
|
+
statement = statement.replace(textVariable, usedVariable);
|
|
20
|
+
} else {
|
|
21
|
+
statement = statement.replace(textVariable, "");
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
try {
|
|
25
|
+
if (/[0-9]+(.*)[|+|-|*|/](.*)[0-9]+/g.test(statement)) {
|
|
26
|
+
const eval2 = eval;
|
|
27
|
+
statement = eval2(statement);
|
|
28
|
+
}
|
|
29
|
+
} catch (e) {
|
|
30
|
+
console.error(e);
|
|
17
31
|
}
|
|
32
|
+
formatter = formatter.replace(variable, statement);
|
|
33
|
+
}
|
|
34
|
+
if (useNewline) {
|
|
35
|
+
formatter = formatter == null ? void 0 : formatter.replace(/\n|\\n/g, "<br/>");
|
|
36
|
+
}
|
|
37
|
+
if (useSpace) {
|
|
38
|
+
formatter = formatter == null ? void 0 : formatter.replace(/\s{2,}?/g, " ");
|
|
18
39
|
}
|
|
19
|
-
|
|
40
|
+
console.log("formatter", formatter);
|
|
41
|
+
return formatter;
|
|
20
42
|
};
|
|
21
43
|
exports.default = useVariablesInText;
|
|
22
44
|
exports.useVariablesInText = useVariablesInText;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useVariablesInText.js","sources":["../../src/hooks/useVariablesInText.ts"],"sourcesContent":["export const useVariablesInText = (
|
|
1
|
+
{"version":3,"file":"useVariablesInText.js","sources":["../../src/hooks/useVariablesInText.ts"],"sourcesContent":["export const useVariablesInText = (\n formatter: string = '',\n data: { [key: string]:any } = {},\n { useNewline = false, useSpace = false } = {}\n) => {\n // 引入全局变量\n // @ts-ignore\n const config = window.config || {}\n data = { ...config, ...data }\n const variables = (formatter).match(/\\{(.+?)\\}/g)\n if (variables == null || variables.length === 0) {\n return formatter\n }\n for (let i = 0; i < variables.length; i++) {\n const variable = variables[i]\n let statement = variable.slice(1, -1)\n const reg = /[\\u4e00-\\u9fa5_a-zA-Z_]+[0-9]*/g\n const textVariables = statement.match(reg)\n for (let j = 0; j < textVariables.length; j++) {\n const textVariable = textVariables[j]\n const usedVariable = data[textVariable]\n if (usedVariable != null) {\n // 使用的变量\n statement = statement.replace(textVariable, usedVariable)\n } else {\n // 过滤未使用的变量\n statement = statement.replace(textVariable, '')\n }\n }\n try {\n // 匹配加减乘除\n if ((/[0-9]+(.*)[|+|-|*|/](.*)[0-9]+/g).test(statement)) {\n // eslint-disable-next-line no-eval\n const eval2 = eval\n statement = eval2(statement)\n }\n } catch (e) {\n console.error(e)\n }\n formatter = formatter.replace(variable, statement)\n }\n // 替换换行\n if (useNewline) {\n formatter = formatter?.replace(/\\n|\\\\n/g, '<br/>')\n }\n // 替换空格\n if (useSpace) {\n formatter = formatter?.replace(/\\s{2,}?/g, ' ')\n }\n console.log('formatter', formatter)\n return formatter\n}\n\nexport default useVariablesInText\n"],"names":[],"mappings":";;AAAO,MAAM,qBAAqB,CAChC,YAAoB,IACpB,OAA8B,CAAC,GAC/B,EAAE,aAAa,OAAO,WAAW,MAAM,IAAI,CAAA,MACxC;AAGG,QAAA,SAAS,OAAO,UAAU;AAChC,SAAO,EAAE,GAAG,QAAQ,GAAG,KAAK;AACtB,QAAA,YAAa,UAAW,MAAM,YAAY;AAChD,MAAI,aAAa,QAAQ,UAAU,WAAW,GAAG;AACxC,WAAA;AAAA,EACT;AACA,WAAS,IAAI,GAAG,IAAI,UAAU,QAAQ,KAAK;AACzC,UAAM,WAAW,UAAU;AAC3B,QAAI,YAAY,SAAS,MAAM,GAAG,EAAE;AACpC,UAAM,MAAM;AACN,UAAA,gBAAgB,UAAU,MAAM,GAAG;AACzC,aAAS,IAAI,GAAG,IAAI,cAAc,QAAQ,KAAK;AAC7C,YAAM,eAAe,cAAc;AACnC,YAAM,eAAe,KAAK;AAC1B,UAAI,gBAAgB,MAAM;AAEZ,oBAAA,UAAU,QAAQ,cAAc,YAAY;AAAA,MAAA,OACnD;AAEO,oBAAA,UAAU,QAAQ,cAAc,EAAE;AAAA,MAChD;AAAA,IACF;AACI,QAAA;AAEG,UAAA,kCAAmC,KAAK,SAAS,GAAG;AAEvD,cAAM,QAAQ;AACd,oBAAY,MAAM,SAAS;AAAA,MAC7B;AAAA,aACO;AACP,cAAQ,MAAM,CAAC;AAAA,IACjB;AACY,gBAAA,UAAU,QAAQ,UAAU,SAAS;AAAA,EACnD;AAEA,MAAI,YAAY;AACF,gBAAA,uCAAW,QAAQ,WAAW;AAAA,EAC5C;AAEA,MAAI,UAAU;AACA,gBAAA,uCAAW,QAAQ,YAAY;AAAA,EAC7C;AACQ,UAAA,IAAI,aAAa,SAAS;AAC3B,SAAA;AACT;;;"}
|
|
@@ -31,7 +31,9 @@ const _sfc_main = vue.defineComponent({
|
|
|
31
31
|
vue.onMounted(() => {
|
|
32
32
|
setTheme();
|
|
33
33
|
});
|
|
34
|
-
const contextRequestUrl = vue.computed(() =>
|
|
34
|
+
const contextRequestUrl = vue.computed(() => {
|
|
35
|
+
return useVariablesInText.useVariablesInText(props2.contextRequestUrl);
|
|
36
|
+
});
|
|
35
37
|
const pageMode = vue.computed(() => props2.pageMode);
|
|
36
38
|
const theme = vue.computed(() => props2.theme);
|
|
37
39
|
const touchEventId = vue.ref("");
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ProviderConfig.js","sources":["../../../src/setting/provider-config/ProviderConfig.vue"],"sourcesContent":["<template>\n <!-- 请勿去除属性id -->\n <div id=\"ProviderConfig\" ref=\"providerConfig\">\n <slot></slot>\n </div>\n</template>\n\n<script lang=\"ts\">\nimport { defineComponent, provide, onUnmounted, ref, onMounted, watch, computed, unref } from 'vue'\nimport mitt from 'mitt'\nimport { EVENT_BUS, GLOBAL_CONFIG, GLOBAL_MODEL, REQUEST_MODEL, INDICATOR_URL, GLOBAL_TOKEN, REFRESH_PAGE } from '@/utils/constant'\nimport { providerConfigComponentProps } from './props'\nimport { useVariablesInText, useHrefParamsToGlobalVariables } from '@/hooks'\nimport axios from 'axios'\n\nexport default defineComponent({\n name: 'EcanProviderConfig',\n inheritAttrs: false,\n props: {\n ...providerConfigComponentProps\n },\n setup (props, { expose }) {\n useHrefParamsToGlobalVariables()\n\n const providerConfig = ref<HTMLElement>()\n const setTheme = () => {\n providerConfig.value.setAttribute('datav-theme', props.theme as string)\n }\n watch(() => props.theme, () => {\n setTheme()\n })\n onMounted(() => {\n setTheme()\n })\n const contextRequestUrl = computed(() => useVariablesInText(props.contextRequestUrl as string))\n const pageMode = computed(() => props.pageMode)\n const theme = computed(() => props.theme)\n // 当前组件主动触发ID\n const touchEventId = ref<string>('')\n // 提供全局设置\n provide(GLOBAL_CONFIG, {\n // 请求地址\n contextRequestUrl,\n // 模式(设计、预览、正常):目前主要配置初始化是否发起请求\n pageMode,\n // 主题\n theme,\n touchEventId\n })\n\n // 提供全局变量\n const globalModel = new Map()\n const getGlobalModel = (key: string) => {\n return globalModel.get(key)\n }\n const setGlobalModel = (key: string, value: any) => {\n globalModel.set(key, value)\n }\n provide(GLOBAL_MODEL, {\n getGlobalModel,\n setGlobalModel\n })\n\n // 提供事件\n const eventBus = mitt()\n const onEvent = (key: string, events: { [key:string]: any }) => {\n eventBus.on(key, (k: string) => {\n return Object.prototype.toString.call(events[k]) === '[object Function]' && events[k]()\n })\n onUnmounted(() => {\n eventBus.off(key)\n })\n }\n const offEvent = (key) => {\n eventBus.off(key)\n }\n const emitEvent = (key: string, eventName: string) => {\n eventBus.emit(key, eventName)\n }\n provide(EVENT_BUS, {\n onEvent,\n offEvent,\n emitEvent\n })\n\n // 设置是否请求 token\n const tokenNum = ref(0)\n const requestToken = () => {\n tokenNum.value = unref(tokenNum) + 1\n }\n provide(GLOBAL_TOKEN, {\n requestToken\n })\n // 请求排序\n const requestModel = new Map()\n const setRequest = (requestFn: Function = () => {}, sortNum: number = 0) => {\n if (requestModel.has(sortNum)) {\n const requestFnList = requestModel.get(sortNum)\n requestFnList?.push(requestFn)\n } else {\n requestModel.set(sortNum, [requestFn])\n }\n }\n const handleRequestFnList = (requestFnList: Array<Function>) => {\n return new Promise((resolve, reject) => {\n const resultList = requestFnList.map(requestFn => requestFn())\n Promise.all(resultList)\n .then(list => {\n resolve(list)\n })\n .catch(err => {\n reject(err)\n })\n })\n }\n // 指标库模块请求 token\n const queryUserToken = async () => {\n const res = await axios.get(`${INDICATOR_URL}/user/anonymous?username=admin`, {\n headers: {\n systemCode: 'F72FC50A3D97372514A6AC33333D28FD',\n current_context: 'ygt'\n }\n })\n // 设置 token 挂载在 window.config 上\n // @ts-ignore\n // eslint-disable-next-line\n config.indicatorToken = res.data.data?.token\n }\n const touchRequest = async () => {\n const requestModelArr = Array.from(requestModel)\n // 排序\n requestModelArr.sort((a, b) => b[0] - a[0])\n const len = requestModelArr.length\n try {\n // 指标库模块需要 token\n // 页面不为design 请求次数 token 不为0\n if (props.pageMode !== 'design' && unref(tokenNum) > 0) {\n await queryUserToken()\n }\n for (let i = 0; i < len; i++) {\n const requestFnList = requestModelArr[i][1]\n await handleRequestFnList(requestFnList)\n }\n } catch (e) {\n console.error(e)\n } finally {\n // 执行完直接清空\n requestModel.clear()\n }\n }\n\n provide(REQUEST_MODEL, {\n setRequest,\n touchRequest\n })\n\n const emitRefreshPage = () => {\n eventBus.emit(REFRESH_PAGE)\n }\n provide(REFRESH_PAGE, {\n emitRefreshPage\n })\n // const notRenderSet = ref(new Set())\n // const refreshEventBus = mitt()\n const onRefreshPage = (callBack: Function) => {\n eventBus.on(REFRESH_PAGE, () => callBack())\n onMounted(() => {\n eventBus.off(REFRESH_PAGE)\n })\n }\n\n expose({\n touchRequest,\n getGlobalModel,\n onRefreshPage\n })\n\n return {\n providerConfig\n }\n }\n})\n</script>\n\n<style scoped>\n\n</style>\n"],"names":["defineComponent","providerConfigComponentProps","props","useHrefParamsToGlobalVariables","ref","watch","onMounted","computed","useVariablesInText","provide","GLOBAL_CONFIG","GLOBAL_MODEL","mitt","onUnmounted","EVENT_BUS","unref","GLOBAL_TOKEN","axios","INDICATOR_URL","REQUEST_MODEL","REFRESH_PAGE","_openBlock","_createElementBlock","_renderSlot"],"mappings":";;;;;;;;;;;;;;;AAeA,MAAK,YAAaA,IAAAA,gBAAa;AAAA,EAC7B,MAAM;AAAA,EACN,cAAc;AAAA,EACd,OAAO;AAAA,IACL,GAAGC,MAAA;AAAA,EACL;AAAA,EACA,MAAOC,QAAO,EAAE,UAAU;AACOC,mCAAAA;AAE/B,UAAM,iBAAiBC,IAAAA;AACvB,UAAM,WAAW,MAAM;AACrB,qBAAe,MAAM,aAAa,eAAeF,OAAM,KAAe;AAAA,IAAA;AAElEG,cAAA,MAAMH,OAAM,OAAO,MAAM;AACpB;IAAA,CACV;AACDI,QAAAA,UAAU,MAAM;AACL;IAAA,CACV;
|
|
1
|
+
{"version":3,"file":"ProviderConfig.js","sources":["../../../src/setting/provider-config/ProviderConfig.vue"],"sourcesContent":["<template>\n <!-- 请勿去除属性id -->\n <div id=\"ProviderConfig\" ref=\"providerConfig\">\n <slot></slot>\n </div>\n</template>\n\n<script lang=\"ts\">\nimport { defineComponent, provide, onUnmounted, ref, onMounted, watch, computed, unref } from 'vue'\nimport mitt from 'mitt'\nimport { EVENT_BUS, GLOBAL_CONFIG, GLOBAL_MODEL, REQUEST_MODEL, INDICATOR_URL, GLOBAL_TOKEN, REFRESH_PAGE } from '@/utils/constant'\nimport { providerConfigComponentProps } from './props'\nimport { useVariablesInText, useHrefParamsToGlobalVariables } from '@/hooks'\nimport axios from 'axios'\n\nexport default defineComponent({\n name: 'EcanProviderConfig',\n inheritAttrs: false,\n props: {\n ...providerConfigComponentProps\n },\n setup (props, { expose }) {\n useHrefParamsToGlobalVariables()\n\n const providerConfig = ref<HTMLElement>()\n const setTheme = () => {\n providerConfig.value.setAttribute('datav-theme', props.theme as string)\n }\n watch(() => props.theme, () => {\n setTheme()\n })\n onMounted(() => {\n setTheme()\n })\n const contextRequestUrl = computed(() => {\n return useVariablesInText(props.contextRequestUrl as string)\n })\n const pageMode = computed(() => props.pageMode)\n const theme = computed(() => props.theme)\n // 当前组件主动触发ID\n const touchEventId = ref<string>('')\n // 提供全局设置\n provide(GLOBAL_CONFIG, {\n // 请求地址\n contextRequestUrl,\n // 模式(设计、预览、正常):目前主要配置初始化是否发起请求\n pageMode,\n // 主题\n theme,\n touchEventId\n })\n\n // 提供全局变量\n const globalModel = new Map()\n const getGlobalModel = (key: string) => {\n return globalModel.get(key)\n }\n const setGlobalModel = (key: string, value: any) => {\n globalModel.set(key, value)\n }\n provide(GLOBAL_MODEL, {\n getGlobalModel,\n setGlobalModel\n })\n\n // 提供事件\n const eventBus = mitt()\n const onEvent = (key: string, events: { [key:string]: any }) => {\n eventBus.on(key, (k: string) => {\n return Object.prototype.toString.call(events[k]) === '[object Function]' && events[k]()\n })\n onUnmounted(() => {\n eventBus.off(key)\n })\n }\n const offEvent = (key) => {\n eventBus.off(key)\n }\n const emitEvent = (key: string, eventName: string) => {\n eventBus.emit(key, eventName)\n }\n provide(EVENT_BUS, {\n onEvent,\n offEvent,\n emitEvent\n })\n\n // 设置是否请求 token\n const tokenNum = ref(0)\n const requestToken = () => {\n tokenNum.value = unref(tokenNum) + 1\n }\n provide(GLOBAL_TOKEN, {\n requestToken\n })\n // 请求排序\n const requestModel = new Map()\n const setRequest = (requestFn: Function = () => {}, sortNum: number = 0) => {\n if (requestModel.has(sortNum)) {\n const requestFnList = requestModel.get(sortNum)\n requestFnList?.push(requestFn)\n } else {\n requestModel.set(sortNum, [requestFn])\n }\n }\n const handleRequestFnList = (requestFnList: Array<Function>) => {\n return new Promise((resolve, reject) => {\n const resultList = requestFnList.map(requestFn => requestFn())\n Promise.all(resultList)\n .then(list => {\n resolve(list)\n })\n .catch(err => {\n reject(err)\n })\n })\n }\n // 指标库模块请求 token\n const queryUserToken = async () => {\n const res = await axios.get(`${INDICATOR_URL}/user/anonymous?username=admin`, {\n headers: {\n systemCode: 'F72FC50A3D97372514A6AC33333D28FD',\n current_context: 'ygt'\n }\n })\n // 设置 token 挂载在 window.config 上\n // @ts-ignore\n // eslint-disable-next-line\n config.indicatorToken = res.data.data?.token\n }\n const touchRequest = async () => {\n const requestModelArr = Array.from(requestModel)\n // 排序\n requestModelArr.sort((a, b) => b[0] - a[0])\n const len = requestModelArr.length\n try {\n // 指标库模块需要 token\n // 页面不为design 请求次数 token 不为0\n if (props.pageMode !== 'design' && unref(tokenNum) > 0) {\n await queryUserToken()\n }\n for (let i = 0; i < len; i++) {\n const requestFnList = requestModelArr[i][1]\n await handleRequestFnList(requestFnList)\n }\n } catch (e) {\n console.error(e)\n } finally {\n // 执行完直接清空\n requestModel.clear()\n }\n }\n\n provide(REQUEST_MODEL, {\n setRequest,\n touchRequest\n })\n\n const emitRefreshPage = () => {\n eventBus.emit(REFRESH_PAGE)\n }\n provide(REFRESH_PAGE, {\n emitRefreshPage\n })\n // const notRenderSet = ref(new Set())\n // const refreshEventBus = mitt()\n const onRefreshPage = (callBack: Function) => {\n eventBus.on(REFRESH_PAGE, () => callBack())\n onMounted(() => {\n eventBus.off(REFRESH_PAGE)\n })\n }\n\n expose({\n touchRequest,\n getGlobalModel,\n onRefreshPage\n })\n\n return {\n providerConfig\n }\n }\n})\n</script>\n\n<style scoped>\n\n</style>\n"],"names":["defineComponent","providerConfigComponentProps","props","useHrefParamsToGlobalVariables","ref","watch","onMounted","computed","useVariablesInText","provide","GLOBAL_CONFIG","GLOBAL_MODEL","mitt","onUnmounted","EVENT_BUS","unref","GLOBAL_TOKEN","axios","INDICATOR_URL","REQUEST_MODEL","REFRESH_PAGE","_openBlock","_createElementBlock","_renderSlot"],"mappings":"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"}
|