@ecan-bi/tools 1.0.7 → 1.0.9
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 +1740 -0
- package/dist/index.es.js.map +1 -0
- package/dist/index.umd.js +6 -0
- package/dist/index.umd.js.map +1 -0
- package/package.json +26 -5
- package/types/hooks/useTransformChartDataByAttrKey.d.ts +25 -0
- package/types/hooks/useTransformChartDataByAttrValue.d.ts +23 -0
- package/types/hooks/useValueFormatter.d.ts +2 -0
- package/types/hooks/useVariablesInText.d.ts +12 -0
- package/types/index.d.ts +53 -0
- package/types/indicator.d.ts +4 -0
- package/types/utils/constant.d.ts +1 -0
- package/types/utils/runCode.d.ts +4 -0
- package/types/utils/transformProps.d.ts +21 -0
- package/types/utils/util.d.ts +31 -0
- package/.babelrc +0 -8
- package/index.js +0 -35
- package/src/hooks/useTransformChartDataByAttrKey.ts +0 -77
- package/src/hooks/useTransformChartDataByAttrValue.ts +0 -61
- package/src/hooks/useValueFormatter.js +0 -28
- package/src/hooks/useVariablesInText.ts +0 -44
- package/src/indicator.ts +0 -1228
- package/src/utils/constant.ts +0 -1
- package/src/utils/runCode.ts +0 -26
- package/src/utils/transformProps.ts +0 -901
- package/src/utils/util.ts +0 -192
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.es.js","sources":["../src/utils/runCode.ts","../src/hooks/useVariablesInText.ts","../src/utils/util.ts","../src/utils/constant.ts","../src/indicator.ts","../src/hooks/useTransformChartDataByAttrKey.ts","../src/hooks/useTransformChartDataByAttrValue.ts","../src/hooks/useValueFormatter.ts","../src/utils/transformProps.ts","../src/index.ts"],"sourcesContent":["import dayjs from 'dayjs'\nconst runCode = (code: string, data?: { [key:string]: any }) => {\n const useFn = {\n dayjs,\n ...data\n }\n let paramsStr = ''\n const params: any = []\n for (const key in useFn) {\n paramsStr += `${key},`\n params.push(useFn[key])\n }\n paramsStr = paramsStr.replace(/,$/, '')\n const runFn = `function (${paramsStr}){return ${code}}`\n let result\n try {\n // eslint-disable-next-line no-new-func\n result = Function(`\"use strict\";return (${runFn})`)()(...params)\n } catch (e) {\n // console.error()\n return code\n }\n return result\n}\n\nexport default runCode\n","import runCode from '../utils/runCode'\nexport const useVariablesInText = (\n formatter: string = '',\n { textData, codeData }: { textData?: { [key:string]: any }, codeData?: { [key:string]: any } } = {},\n { useNewline = false, useSpace = false } = {}\n) => {\n // 引入全局变量\n const data = { ...textData }\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).trim()\n const reg = /[\\u4e00-\\u9fa5a-z-_A-Z0-9]*/g\n const textVariables: any = 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 }\n }\n if ((/\\(.*\\)/g).test(statement) || (/[+/\\\\*]/g).test(statement)) {\n statement = runCode(statement, codeData)\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 // 千分位格式化\n formatter = formatter.replace(/Qfw\\((.*?)\\)/, (res, str) => textData?.Qfw ? textData?.Qfw(str) : str)\n return formatter\n}\n\nexport default useVariablesInText\n","import useVariablesInText from '../hooks/useVariablesInText'\r\nimport { unref } from 'vue'\r\n/**\r\n * 字符串1 中是否包含 字符串2 (会全部转成小写)\r\n * @param v1 字符串1\r\n * @param v2 字符串2\r\n * @constructor\r\n */\r\nexport const lowerCaseIncludes = (v1:any, v2:any): boolean => {\r\n if (typeof v1 === 'string' && typeof v2 === 'string') {\r\n return v1.toLocaleLowerCase().includes(v2.toLocaleLowerCase())\r\n } else if (typeof v1 === 'string' && Array.isArray(v2)) {\r\n const len = v2.length\r\n for (let i = 0; i < len; i++) {\r\n const s = v2[i]\r\n if (typeof s === 'string' && v1.toLocaleLowerCase().includes(s.toLocaleLowerCase())) {\r\n return true\r\n }\r\n }\r\n }\r\n return false\r\n}\r\n\r\n/**\r\n * 判断 key 是否在对象上\r\n * @param v\r\n * @param k\r\n */\r\nexport const hasOwn = (v: object, k: string | symbol): k is keyof typeof v => Object.prototype.hasOwnProperty.call(v, k)\r\n\r\nexport const getConditions = (conditions) => {\r\n const result: any = []\r\n for (const item of conditions) {\r\n if (item.conditions) {\r\n result.push(...getConditions(item.conditions))\r\n } else if (item?.dataType === 'component') {\r\n result.push(item)\r\n }\r\n }\r\n return result\r\n}\r\n\r\nexport function getFormatStep (format: string) {\r\n const value = format.split('-')\r\n let formatStep = ''\r\n if (value?.length) {\r\n switch (value[value.length - 1]) {\r\n case 'YYYY':\r\n formatStep = 'year'\r\n break\r\n case 'MM':\r\n formatStep = 'month'\r\n break\r\n case 'DD':\r\n formatStep = 'day'\r\n break\r\n default:\r\n break\r\n }\r\n }\r\n return formatStep\r\n}\r\n\r\nexport const handleFormatter = (formatter: string) => {\r\n return formatter.replace(/\\\\n/g, '\\n')\r\n}\r\n\r\n/**\r\n * 图表的图例格式化\r\n * @param format 表达式\r\n * @param textData 传入参数\r\n * @returns 显示的图例文本\r\n */\r\nexport const getLegendFormat = (format: string = '', textData: any) => {\r\n const variables = format.match(/\\{(.+?)\\}/g)\r\n // 换行符个数\r\n const lineBreakCount = format.split('\\n')?.length - 1\r\n let lineBreakStr = ''\r\n if (lineBreakCount) {\r\n for (let i = 0; i < lineBreakCount; i++) {\r\n lineBreakStr += '\\n'\r\n }\r\n }\r\n let text = format\r\n if (variables?.length) {\r\n for (const item of variables) {\r\n const str = useVariablesInText(\r\n item,\r\n {\r\n textData\r\n },\r\n {\r\n useNewline: false,\r\n useSpace: false\r\n }\r\n )\r\n if (str) {\r\n text = text.replace(item, str)\r\n }\r\n }\r\n return `${lineBreakStr}{text|${text}}`\r\n } else {\r\n return format\r\n }\r\n}\r\n\r\n// 千分位转换\r\nexport function formatQfw (str: string) {\r\n let result = ''\r\n let str1 = ''\r\n let str2 = ''\r\n let value = ''\r\n if (str.indexOf('.') > -1) {\r\n str1 = str.split('.')[0] // 千分位处理部分\r\n str2 = str.split('.')[1] // 小数值\r\n } else {\r\n str1 = str\r\n }\r\n let index = 0\r\n let len = 0\r\n len = str1.length - 1\r\n while (len >= 0) {\r\n index % 3 === 0 && index !== 0\r\n ? str1[len] === '-'\r\n ? (result += str1[len])\r\n : (result += ',' + str1[len])\r\n : (result += str1[len])\r\n len--\r\n index++\r\n }\r\n result = result\r\n .split('')\r\n .reverse()\r\n .join('')\r\n if (str.indexOf('.') > -1) {\r\n value = result + '.' + str2\r\n } else {\r\n value = result\r\n }\r\n return value\r\n}\r\n\r\n// 根据指标获取其他参数-用于条件查询\r\nexport async function getIndicatorParams ({ graphicConfig, request, INDICATOR_URL = '', PAGE_ID, dataSourceId }) {\r\n try {\r\n const { leftAxisList = [], rightAxisList = [], queryColumnList = [], indicators = [] } = unref(graphicConfig)\r\n const otherList = [...leftAxisList, ...rightAxisList, ...queryColumnList, ...indicators]\r\n const idMap: any = {}\r\n for (const item of otherList) {\r\n const { indexCode = '', parentId = '' } = item\r\n if (parentId && !hasOwn(item, 'calcType') && !idMap[parentId]) {\r\n idMap[parentId] = indexCode\r\n }\r\n }\r\n if (Object.keys(idMap)?.length) {\r\n const promiseList: any = []\r\n for (const id in idMap) {\r\n promiseList.push(\r\n new Promise((resolve, reject) => {\r\n request\r\n .post(\r\n `${INDICATOR_URL}/diagram/hrpIndexWithComplex`,\r\n {\r\n pageId: PAGE_ID,\r\n indexGuid: id,\r\n indexCode: idMap[id],\r\n dataSourceId\r\n }\r\n )\r\n .then((res: any) => {\r\n const { success, data = [] } = res.data\r\n if (success && data?.dataViewColumns?.length) {\r\n resolve(data.dataViewColumns)\r\n } else {\r\n reject(data)\r\n }\r\n })\r\n .catch((e) => {\r\n reject(e)\r\n })\r\n })\r\n )\r\n }\r\n const res = await Promise.all(promiseList)\r\n const resultList = res.reduce((a: any, b: any) =>\r\n a.filter((c: any) => b.find((v: any) => v.typeGuid === c.typeGuid))\r\n )\r\n return resultList.filter((v: any) => v.typeGuid)\r\n }\r\n } catch (err) { }\r\n return ([])\r\n}\r\n","export const MODEL_KEY_LIST = ['table', 'bar', 'combograph', 'line', 'pie', 'radar', 'scatter', 'list', 'circulate']\r\n","import { unref } from 'vue'\r\nimport dayjs from 'dayjs'\r\nimport { cloneDeep } from 'lodash-es'\r\nimport { hasOwn, lowerCaseIncludes, getConditions, getFormatStep } from './utils/util'\r\nimport { MODEL_KEY_LIST } from './utils/constant'\r\n\r\nlet modelValue = new Map()\r\nconst excludeAttr = [\r\n 'keyValue',\r\n 'conditionKey',\r\n 'conditionLabel',\r\n 'conditionName',\r\n 'conditionValueType',\r\n 'customValue',\r\n 'id',\r\n 'keyName'\r\n]\r\n\r\nconst getGlobalModel = (key: string) => {\r\n return modelValue.get(key)\r\n}\r\n\r\n// 日期计算\r\nconst getCalcWays = (data: { [key:string]:any }, props: { [key:string]: any } = {}) => {\r\n const { around, unit, id } = data\r\n let result = ''\r\n const { pageMode = '', componentList = [] } = props?.graphicConfig || {}\r\n let sTime: any = null\r\n let eTime: any = null\r\n if (pageMode === 'design') {\r\n const component: any = componentList?.find((v: { [key:string]:any }) => v.id === id)\r\n if (!component) {\r\n return []\r\n }\r\n const { interval, intervalUnit, startTime, endTime, operate, useCurrentTime } = component || {}\r\n if (useCurrentTime) {\r\n sTime = dayjs().subtract(interval, intervalUnit)\r\n eTime = dayjs()\r\n }\r\n if (startTime) {\r\n sTime = dayjs(startTime)\r\n }\r\n if (endTime) {\r\n eTime = dayjs(endTime)\r\n }\r\n if (operate) {\r\n const { type, value, mode } = operate\r\n switch (type) {\r\n case 'add':\r\n sTime = sTime ? sTime.add(value, mode) : sTime\r\n eTime = eTime ? eTime.add(value, mode) : eTime\r\n break\r\n case 'minus':\r\n sTime = sTime ? sTime.subtract(value, mode) : sTime\r\n eTime = eTime ? eTime.subtract(value, mode) : eTime\r\n }\r\n }\r\n } else {\r\n const model = getGlobalModel(id) || {}\r\n if (unref(model.startTime)) {\r\n sTime = dayjs(unref(model.startTime))\r\n }\r\n if (unref(model.endTime)) {\r\n eTime = dayjs(unref(model.endTime))\r\n }\r\n }\r\n if (sTime && eTime) {\r\n const diffValue = eTime.diff(sTime, unit.toLowerCase())\r\n result = `${around === 'before' ? '-' : ''}${diffValue + 1}`\r\n }\r\n return result ? [result] : []\r\n}\r\n\r\nconst handleParams = (params: any, type: string | undefined) => {\r\n if (type) {\r\n // 处理sqlConditions中的sqlConditon\r\n if (hasOwn(params, 'indexCode')) {\r\n params.hrpIndexCode = params.indexCode\r\n delete params.indexCode\r\n }\r\n if (hasOwn(params, 'indexCodeNum')) {\r\n params.hrpIndexCodeNum = params.indexCodeNum\r\n delete params.indexCodeNum\r\n }\r\n if (hasOwn(params, 'dataType')) {\r\n delete params.dataType\r\n }\r\n } else {\r\n const { calcWays = [], dateCalcTypes = [], activeKey, componentId = '' } = params\r\n if (activeKey === 5 && calcWays?.length && dateCalcTypes?.length && componentId) {\r\n const vals = calcWays[0].split('-')\r\n if (vals?.length > 1) {\r\n if (vals[0] === 'rangeValue') {\r\n // 范围差值\r\n params.calcWays = getCalcWays({\r\n around: vals[1],\r\n unit: dateCalcTypes[0],\r\n id: componentId\r\n })\r\n }\r\n }\r\n delete params.radioValue\r\n }\r\n if (hasOwn(params, 'dataType')) {\r\n if (params.fieldType === 'DATE') {\r\n params.label = params.fieldName\r\n }\r\n if (params.dataType === 'component') {\r\n if (params.fieldValue === 'PARENT') {\r\n let fieldVal = params.modelKey\r\n if (fieldVal && params.prop) {\r\n fieldVal += `-${params.prop}`\r\n }\r\n params.fieldValue = '${' + fieldVal + '}'\r\n } else {\r\n params.fieldValue = '${' + params.fieldValue + '}'\r\n }\r\n }\r\n delete params.dataType\r\n }\r\n if (hasOwn(params, 'activeKey')) {\r\n delete params.activeKey\r\n }\r\n if (hasOwn(params, 'radioValue')) {\r\n delete params.radioValue\r\n }\r\n if (hasOwn(params, 'indexCode')) {\r\n params.hrpIndexCode = params.indexCode\r\n delete params.indexCode\r\n }\r\n if (hasOwn(params, 'indexCodeNum')) {\r\n params.hrpIndexCodeNum = params.indexCodeNum\r\n delete params.indexCodeNum\r\n }\r\n if (params.dataType !== 'component' && params.useCurrentTime) {\r\n // 时间值为当前时间\r\n params.fieldValue = dayjs().format(params.dateFormat)\r\n }\r\n if (hasOwn(params, 'modelKey')) {\r\n delete params.modelKey\r\n }\r\n if (hasOwn(params, 'prop')) {\r\n delete params.prop\r\n }\r\n delete params.useCurrentTime\r\n }\r\n}\r\n\r\n// 递归格式化conditions的数据\r\nconst handleConditions = (list: { [key: string]: any } [], type?: string) => {\r\n const result: any = []\r\n if (list?.length) {\r\n cloneDeep(list).forEach((item) => {\r\n if (item.join && item.conditions) {\r\n const isSameLevel = !item.conditions.some((v: any) => v.join && v.conditions)\r\n item.conditions.forEach((cs: any, index: number) => {\r\n handleParams(cs, type)\r\n const joinParams: { [key: string]: any } = {}\r\n if (index < item.conditions.length - 1) {\r\n joinParams.join = item.join\r\n }\r\n if (isSameLevel) {\r\n result.push({\r\n ...joinParams,\r\n ...cs\r\n })\r\n } else {\r\n if (cs.join && cs.conditions) {\r\n const conKey = type ? 'sqlConditions' : 'conditions'\r\n result.push({\r\n [conKey]: handleConditions([cs], type),\r\n ...joinParams\r\n })\r\n } else {\r\n result.push({\r\n ...joinParams,\r\n ...cs\r\n })\r\n }\r\n }\r\n })\r\n } else {\r\n handleParams(item, type)\r\n result.push(item)\r\n }\r\n })\r\n }\r\n return result\r\n}\r\n\r\nconst handleIndicator = (indicator: { [key:string]: any } = {}, classification: any) => {\r\n if (indicator?.sortCpnts && classification) {\r\n const sortData = getCpntSortData(indicator)\r\n if (sortData) {\r\n classification.sort = sortData\r\n }\r\n }\r\n const {\r\n label,\r\n name,\r\n location,\r\n show,\r\n indexCode,\r\n indexCodeNum,\r\n calcType = 'COLUMN',\r\n builtInFormula,\r\n builtInValueSource,\r\n builtInCalcWay,\r\n formula,\r\n conditions,\r\n aggregate,\r\n distinct,\r\n dimByCount,\r\n dataTo\r\n } = indicator\r\n let conditionData\r\n if (conditions) {\r\n conditionData = handleConditions(conditions)\r\n }\r\n if (calcType === 'COMPONENT') {\r\n const componentField: any = {}\r\n setFieldValue(componentField, builtInValueSource)\r\n return {\r\n label: label.trim(),\r\n columnName: name,\r\n show,\r\n calcType,\r\n componentAlias: builtInCalcWay,\r\n componentValue: componentField.fieldValue || null\r\n }\r\n }\r\n const itemObj: any = {\r\n label: label.trim(),\r\n columnName: name,\r\n location,\r\n show,\r\n calcType: dataTo === '1' ? 'VIEW' : calcType,\r\n hrpIndexCode: indexCode,\r\n hrpIndexCodeNum: indexCodeNum,\r\n aggregate,\r\n builtInFormula,\r\n builtInValueSource,\r\n formula,\r\n conditions: conditionData\r\n }\r\n if (builtInFormula === 'DATE_OFFSET') {\r\n const list = builtInCalcWay.split('-')\r\n if (list?.length === 3) {\r\n let calcWays = list[0]\r\n if (list[2] === 'before' && list[0] !== '0') {\r\n calcWays = `-${list[0]}`\r\n }\r\n return {\r\n ...itemObj,\r\n calcWays: [calcWays],\r\n dateCalcTypes: [list[1]]\r\n }\r\n }\r\n } else {\r\n if (name === 'the_count') {\r\n itemObj.calcType = 'AGGREGATE'\r\n itemObj.distinct = !!distinct\r\n itemObj.typeGuid = dimByCount\r\n }\r\n return {\r\n ...itemObj,\r\n builtInCalcWay\r\n }\r\n }\r\n}\r\n\r\nconst handleSqlConditions = (graphicConfig: { [key:string]: any }) => {\r\n if (!graphicConfig) {\r\n return []\r\n }\r\n const controlList = cloneDeep(graphicConfig?.controlList || [])\r\n .filter((v: any) => v.conditionKey !== 'parentCode')\r\n const {\r\n classificationList = [],\r\n rowHeaderList = [],\r\n dimensionList = [],\r\n seriesList = [],\r\n leftAxisList = [],\r\n rightAxisList = [],\r\n queryColumnList = [],\r\n indicators = []\r\n } = graphicConfig\r\n handleControlList(controlList)\r\n const otherList = [\r\n ...classificationList,\r\n ...rowHeaderList,\r\n ...dimensionList,\r\n ...seriesList,\r\n ...leftAxisList,\r\n ...rightAxisList,\r\n ...queryColumnList,\r\n ...indicators\r\n ]\r\n const conditionList: any = []\r\n for (const ol of otherList) {\r\n const conditions = getConditions(ol?.conditions || [])\r\n if (conditions?.length) {\r\n const list = conditions\r\n .filter((v: any) => v?.dataType === 'component')\r\n .map((item: any) => {\r\n const params: any = {}\r\n if (item?.dateFormat) {\r\n params.format = item.dateFormat\r\n }\r\n if (item.fieldValue === 'PARENT') {\r\n // 使用父页面的组件\r\n params.id = 'PARENT'\r\n params.keyName = item.modelKey\r\n params.modelKey = item.modelKey\r\n params.prop = item.prop\r\n }\r\n return {\r\n conditionKey: item.fieldName,\r\n conditionLabel: item.fieldName,\r\n conditionName: item.fieldName,\r\n conditionValueType: item.fieldType,\r\n id: item.componentId,\r\n keyName: item.fieldValue,\r\n rule: item.rule,\r\n notGlobal: true,\r\n indexCode: item.indexCode,\r\n typeGuid: item.typeGuid,\r\n indexCodeNum: item.indexCodeNum,\r\n ...params\r\n }\r\n })\r\n if (list?.length) {\r\n for (const l of list) {\r\n if (!conditionList.find((cItem: any) => cItem.keyName === l.keyName)) {\r\n conditionList.push(l)\r\n }\r\n }\r\n }\r\n }\r\n }\r\n const len = conditionList.length\r\n const sqlConditions = controlList\r\n for (let i = 0; i < len; i++) {\r\n const control = conditionList[i]\r\n if (control?.conditionKey === 'parentCode') {\r\n continue\r\n }\r\n const {\r\n id,\r\n keyName,\r\n prop,\r\n format: dateFormat,\r\n modelKey,\r\n dataType = 'component',\r\n customValue\r\n } = control\r\n const sqlCondition: { [key:string]: any } = getConditionItem(control)\r\n // console.log('model', model)\r\n setFieldValue(sqlCondition, id, { prop, dateFormat, modelKey, keyName })\r\n if (dataType === '') {\r\n sqlCondition.fieldValue = customValue || ''\r\n }\r\n sqlConditions.push(sqlCondition)\r\n }\r\n for (let j = sqlConditions.length - 1; j >= 0; j--) {\r\n const item = sqlConditions[j]\r\n if (!item.globalCondition) {\r\n const cond = getConditions(sqlConditions).find(v => v.alias === item.alias && v.globalCondition)\r\n if (cond) {\r\n sqlConditions.splice(j, 1)\r\n }\r\n }\r\n }\r\n return sqlConditions\r\n}\r\n\r\nfunction getConditionItem (control: { [key:string]:any }) {\r\n const {\r\n id,\r\n keyName,\r\n conditionLabel,\r\n conditionKey,\r\n conditionValueType,\r\n prop,\r\n rule = 'NONE',\r\n notGlobal = false,\r\n indexCode,\r\n typeGuid,\r\n indexCodeNum,\r\n dataType = 'component'\r\n } = control\r\n let alias = keyName || id\r\n if (alias && prop) {\r\n alias += `-${prop}`\r\n }\r\n let ruleValue = rule\r\n if (ruleValue === 'NONE') {\r\n if (['startTime', 'endTime'].includes(prop)) {\r\n ruleValue = prop === 'startTime' ? 'GREATER_EQUAL' : 'LESS_EQUAL'\r\n } else if (keyName?.includes('startTime')) {\r\n ruleValue = prop === 'GREATER_EQUAL'\r\n } else if (keyName?.includes('endTime')) {\r\n ruleValue = prop === 'LESS_EQUAL'\r\n } else {\r\n ruleValue = 'EQUAL'\r\n }\r\n }\r\n if (id === 'PARENT') {\r\n alias = control.modelKey\r\n if (alias && prop) {\r\n alias += `-${prop}`\r\n }\r\n ruleValue = rule\r\n }\r\n return {\r\n rule: ruleValue,\r\n label: conditionLabel,\r\n fieldName: conditionKey,\r\n fieldValue: '', // 在关联控件中取\r\n // dateFormat: 'YYYY-MM',\r\n valueType: conditionValueType,\r\n alias,\r\n globalCondition: !notGlobal,\r\n indexCode,\r\n typeGuid,\r\n indexCodeNum,\r\n dataType\r\n }\r\n}\r\n\r\nfunction handleControlList (controlList: { [key:string]:any }[]) {\r\n if (controlList?.length) {\r\n for (const control of controlList) {\r\n if (control?.conditions) {\r\n handleControlList(control.conditions)\r\n } else {\r\n const {\r\n id,\r\n keyName,\r\n prop,\r\n modelKey,\r\n format: dateFormat,\r\n dataType = 'component',\r\n customValue\r\n } = control\r\n let alias = keyName || id\r\n if (alias && prop) {\r\n alias += `-${prop}`\r\n }\r\n const sqlCondition: { [key:string]: any } = getConditionItem(control)\r\n setFieldValue(sqlCondition, id, { prop, dateFormat, modelKey, keyName })\r\n if (dataType === '') {\r\n sqlCondition.fieldValue = customValue || ''\r\n }\r\n for (const key in sqlCondition) {\r\n control[key] = sqlCondition[key]\r\n }\r\n for (const attr of excludeAttr) {\r\n delete control[attr]\r\n }\r\n }\r\n }\r\n }\r\n}\r\n\r\nfunction handleVariableList (variableList: { [key: string]: any }[]) {\r\n const handleVarList: any = []\r\n if (variableList?.length) {\r\n for (const item of variableList) {\r\n if (item.variableName) {\r\n const variableItem: any = {\r\n variateName: item.variableName,\r\n globalCondition: false,\r\n valueType: item.variableType,\r\n alias: item.keyName || ''\r\n }\r\n setFieldValue(variableItem, item.id, {\r\n dateFormat: item.format,\r\n prop: item.dateTypeValue,\r\n keyName: item.keyName,\r\n operateType: item.operateType,\r\n operateMode: item.operateMode,\r\n operateValue: item.operateValue\r\n })\r\n if (item.dataType === '') {\r\n variableItem.fieldValue = item.variableValue\r\n }\r\n if (item.format) {\r\n // 日期格式化\r\n variableItem.dateFormat = item.format\r\n }\r\n if (item.label) {\r\n variableItem.label = item.label\r\n }\r\n handleVarList.push(variableItem)\r\n }\r\n }\r\n }\r\n return handleVarList\r\n}\r\n\r\n// 设置sqlCondition的fieldValue值\r\nfunction setFieldValue (data: any, id: string, params?: any) {\r\n const { prop = '', dateFormat = '', modelKey = '', keyName = '', operateValue, operateMode, operateType } = params || {}\r\n const rKey = modelKey || keyName\r\n if (id === 'PARENT' && rKey && prop) {\r\n // @ts-ignore\r\n const record = window.config.record\r\n let propKey = prop\r\n let format = dateFormat\r\n const variables = (prop).match(/\\{(.+?)\\}/g)\r\n if (variables?.length) {\r\n const variable = variables[0].slice(1, -1).trim()\r\n propKey = prop.replace(variables[0], '')\r\n format = variable\r\n data.dateFormat = format\r\n }\r\n if (record && record[rKey]) {\r\n const recordValue = unref(record[rKey][propKey])\r\n if (dayjs.isDayjs(recordValue)) {\r\n data.fieldValue = recordValue.format(format || 'YYYY-MM-DD')\r\n } else {\r\n data.fieldValue = recordValue\r\n }\r\n }\r\n return\r\n }\r\n // 获取组件属性\r\n const model = getGlobalModel(id) || {}\r\n // console.log('model', model)\r\n const { value, format = 'YYYY-MM-DD', type = '', useCurrentTime, RECORD } = model || {}\r\n const customFormat = dateFormat || format\r\n if (lowerCaseIncludes(model.type, 'date')) {\r\n let dateValue\r\n if (useCurrentTime) {\r\n if (value) {\r\n dateValue = unref(value)\r\n } else {\r\n dateValue = dayjs()\r\n }\r\n } else {\r\n dateValue = unref(value)\r\n }\r\n if (operateValue && operateMode && operateType) {\r\n switch (operateType) {\r\n case 'add':\r\n dateValue = dateValue.add(operateValue, operateMode)\r\n break\r\n case 'minus':\r\n dateValue = dateValue.subtract(operateValue, operateMode)\r\n break\r\n }\r\n }\r\n data.fieldValue = dateValue?.format(customFormat)\r\n data.dateFormat = customFormat\r\n } else if (type === 'ecanRangePicker') {\r\n let propValue = prop\r\n if (!prop) {\r\n const knList = keyName && keyName.split('-')\r\n if (knList?.length) {\r\n propValue = knList[knList.length - 1]\r\n }\r\n }\r\n if (!propValue) {\r\n return\r\n }\r\n let _time: any = null\r\n if (unref(model[propValue])) {\r\n _time = dayjs(unref(model[propValue]))\r\n }\r\n\r\n if (operateValue && operateMode && operateType) {\r\n if (operateValue === 'rangeValue') {\r\n // 自定义偏移,目前只有范围差\r\n if (model.startTime && model.endTime) {\r\n const interval = unref(model.endTime).diff(unref(model.startTime), operateMode) + 1\r\n switch (operateType) {\r\n case 'add':\r\n _time = _time ? _time.add(interval, operateMode) : _time\r\n break\r\n case 'minus':\r\n _time = _time ? _time.subtract(interval, operateMode) : _time\r\n }\r\n }\r\n } else if (!isNaN(+operateValue)) {\r\n switch (operateType) {\r\n case 'add':\r\n _time = _time ? _time.add(operateValue, operateMode) : _time\r\n break\r\n case 'minus':\r\n _time = _time ? _time.subtract(operateValue, operateMode) : _time\r\n }\r\n }\r\n }\r\n\r\n if (_time) {\r\n data.fieldValue = _time?.format(customFormat)\r\n }\r\n if (propValue === 'rangeValue') {\r\n // 全局变量的日期范围间隔值计算\r\n if (model.startTime && model.endTime) {\r\n const step: any = getFormatStep(customFormat)\r\n if (step) {\r\n data.fieldValue = unref(model.endTime).diff(unref(model.startTime), step) + 1\r\n }\r\n }\r\n }\r\n data.dateFormat = customFormat\r\n } else if (lowerCaseIncludes(type, MODEL_KEY_LIST)) {\r\n if (modelKey && RECORD) {\r\n data.fieldValue = RECORD[modelKey]\r\n } else if (!modelKey && RECORD) {\r\n data.fieldValue = RECORD.value\r\n } else {\r\n data.fieldValue = unref(value)\r\n }\r\n } else {\r\n data.fieldValue = unref(value)\r\n }\r\n}\r\n\r\nconst handleSort = (sort: any) => {\r\n if (sort) {\r\n const sortData: any = Array.isArray(sort) ? cloneDeep(sort) : [cloneDeep(sort)]\r\n let type = ''\r\n let customOrderColumns = []\r\n const labels: any = []\r\n const columnNames: any = []\r\n const orders: any = []\r\n for (const item of sortData) {\r\n if (item.defaultCode) {\r\n item.label = item.columnName\r\n delete item.defaultCode\r\n }\r\n if (item.type === 'CUSTOM') {\r\n customOrderColumns = item.customOrderColumns\r\n }\r\n type = item.type\r\n labels.push(item.label)\r\n if (item.columnName?.includes('_ecanrepeat_')) {\r\n // 处理多个一样的指标或维度\r\n const list = item.columnName.split('_ecanrepeat_')\r\n columnNames.push(list[0])\r\n } else {\r\n columnNames.push(item.columnName)\r\n }\r\n orders.push(item.order)\r\n }\r\n if (type !== 'CUSTOM' && labels?.length > 1) {\r\n type = 'COMBINATION'\r\n }\r\n if (type === 'CUSTOM') {\r\n return {\r\n label: labels.join(','),\r\n columnName: columnNames.join(','),\r\n type,\r\n customOrderColumns\r\n }\r\n } else {\r\n return {\r\n label: labels.join(','),\r\n columnName: columnNames.join(','),\r\n order: orders.join(','),\r\n type\r\n }\r\n }\r\n } else {\r\n return sort\r\n }\r\n}\r\n\r\n// 获取关联控件排序的排序信息\r\nconst getCpntSortData = (data: any) => {\r\n const { sortCpnts = [] } = data\r\n let customSort: any\r\n let order = ''\r\n for (const id of sortCpnts) {\r\n const model = getGlobalModel(id) || {}\r\n const { type, RECORD } = model\r\n if (lowerCaseIncludes(type, 'image') && lowerCaseIncludes(RECORD?.value, ['asc', 'desc'])) {\r\n order = RECORD.value.toUpperCase()\r\n break\r\n }\r\n }\r\n if (order) {\r\n customSort = {\r\n label: data.label,\r\n columnName: data.name,\r\n order,\r\n type: 'NORMAL'\r\n }\r\n }\r\n return customSort\r\n}\r\n\r\nconst formatIndicatorParams = (props: any, otherParams: any = {}) => {\r\n const { graphicConfig, type, globalModel, isGroupTable = false } = props\r\n if (globalModel) {\r\n modelValue = globalModel\r\n }\r\n let pageId = props.pageId\r\n const isPivotTable = lowerCaseIncludes(type, 'pivottable')\r\n\r\n let {\r\n source,\r\n dataViewId,\r\n plugin = '1', // 插件类型\r\n layer, // 后台图表类型,值分0,1\r\n chartType, // 前端图表类型\r\n classificationList = [],\r\n rowHeaderList = [],\r\n dimensionList = [], // 文本组件的维度列表\r\n seriesList = [],\r\n leftAxisList = [],\r\n rightAxisList = [],\r\n queryColumnList = [],\r\n indicators = [],\r\n controlList = [],\r\n formFields = {},\r\n variableList = [],\r\n variableConditions = [],\r\n // dataSourceId, // 所属数据源ID\r\n idxLibMode, // 指标库模式, source= INDICATOR_LIB时候必填, NORMAL_YEAR_TABLE = 普通年表, WITH_DATE_DIM_TABLE = 带有时间维度表\r\n preview = false, // 预览开关\r\n edvDataSetId // 数据集id\r\n } = graphicConfig || {}\r\n\r\n let sqlConditions: any = []\r\n if (graphicConfig?.pageMode === 'design') {\r\n // relativeList 在设计模式下,由于联动无法直接获取,已经处理好数据直接获取\r\n sqlConditions = (graphicConfig.sqlConditions ?? []).map((v: any) => {\r\n const gParams: any = {}\r\n if (!hasOwn(v, 'globalCondition') && !v.join) {\r\n gParams.globalCondition = true\r\n }\r\n if (!v.join) {\r\n const ruleVaule = v.rule || 'EQUAL'\r\n gParams.rule = ruleVaule === 'NONE' ? 'EQUAL' : ruleVaule\r\n }\r\n return {\r\n ...v,\r\n ...gParams\r\n }\r\n })\r\n if (variableConditions?.length) {\r\n sqlConditions = sqlConditions.concat(variableConditions)\r\n }\r\n } else {\r\n sqlConditions = handleSqlConditions(graphicConfig)\r\n if (variableList?.length) {\r\n sqlConditions = sqlConditions.concat(handleVariableList(variableList))\r\n }\r\n }\r\n\r\n if (sqlConditions?.length) {\r\n const globalList = sqlConditions.filter((v: any) => v.globalCondition)\r\n const notGlobalList = sqlConditions.filter((v: any) => !v.globalCondition)\r\n if (globalList?.length > 1) {\r\n sqlConditions = [\r\n {\r\n join: '&&',\r\n conditions: globalList\r\n },\r\n ...notGlobalList\r\n ]\r\n }\r\n }\r\n\r\n // 把sqlConditions转成接口要求的数据格式\r\n if (sqlConditions?.length) {\r\n sqlConditions = handleConditions(sqlConditions, '1')\r\n }\r\n\r\n // 图类型,1=表 2=图\r\n if (layer == null) {\r\n if (lowerCaseIncludes(type, ['table', 'card']) || (lowerCaseIncludes(type, ['list', 'circulate']) && classificationList?.length > 1)) {\r\n layer = '1'\r\n } else if (lowerCaseIncludes(type, ['select', 'checkbox', 'radio'])) {\r\n layer = '3'\r\n } else {\r\n layer = '2'\r\n }\r\n }\r\n\r\n let classification\r\n const classifications: any = []\r\n let typeGuidString = ''\r\n if (\r\n Array.isArray(classificationList) &&\r\n classificationList.length > 0 &&\r\n (!['ecanList', 'ecanCirculate'].includes(type) || classificationList?.length === 1)\r\n ) {\r\n const len = classificationList.length\r\n for (let i = 0; i < len; i++) {\r\n const item = classificationList[i] || {}\r\n const {\r\n label = '',\r\n name = '',\r\n show = false,\r\n sort,\r\n customGroup,\r\n conditions,\r\n dateFormat,\r\n typeGuid = '',\r\n truncations = []\r\n } = item\r\n // 如果是 show 直接提取 classification,停止遍历\r\n if (show || len === 1) {\r\n typeGuidString = typeGuid\r\n classification = {\r\n label: label.trim(),\r\n columnName: name,\r\n show,\r\n sort: getCpntSortData(item) || handleSort(sort) || sort,\r\n customGroup,\r\n conditions: handleConditions(conditions),\r\n typeGuid\r\n }\r\n if (dateFormat) {\r\n classification.dateFormat = dateFormat\r\n }\r\n if (name === 'the_date' && !classification.dateFormat) {\r\n classification.dateFormat = 'YYYY-MM'\r\n }\r\n // truncation\r\n const truncation: any = {}\r\n if (Array.isArray(truncations) && truncations.length > 0) {\r\n const len = truncations.length\r\n for (let i = 0; i < len; i++) {\r\n const item = truncations[i] || {}\r\n const { rule = '', num = 0, name = '' } = item\r\n if (rule && num) {\r\n truncation.num = num\r\n truncation.rule = rule\r\n if (name) {\r\n truncation.otherGroupName = name\r\n }\r\n }\r\n }\r\n }\r\n if (Object.keys(truncation)?.length) {\r\n classification.truncation = truncation\r\n }\r\n if (lowerCaseIncludes(type, ['scatter', 'valueline'])) {\r\n classifications.push(classification)\r\n } else {\r\n break\r\n }\r\n }\r\n }\r\n }\r\n // seriesList (取第一项) => series\r\n let series\r\n if (Array.isArray(seriesList) && seriesList.length > 0) {\r\n const len = seriesList.length\r\n for (let i = 0; i < len; i++) {\r\n const item = seriesList[i] || {}\r\n const { label = '', name = '', show = false, sort, customGroup, conditions, typeGuid } = item\r\n // 如果是 show 直接提取 seriesList,停止遍历\r\n if (show || len === 1) {\r\n series = {\r\n label: label.trim(),\r\n columnName: name,\r\n show,\r\n sort: handleSort(sort),\r\n customGroup,\r\n conditions: handleConditions(conditions),\r\n typeGuid\r\n }\r\n break\r\n }\r\n }\r\n }\r\n\r\n // leftAxisList + rightAxisList + indicators => indicatorList\r\n const indicatorList: any = []\r\n leftAxisList?.forEach((leftAxis: { [key:string]: any }) => {\r\n leftAxis.location = 'LEFT'\r\n indicatorList.push(handleIndicator(leftAxis, classification))\r\n })\r\n rightAxisList?.forEach((rightAxis: { [key:string]: any }) => {\r\n rightAxis.location = 'RIGHT'\r\n indicatorList.push(handleIndicator(rightAxis, classification))\r\n })\r\n\r\n let indicatorsData = indicators\r\n if (otherParams?.pivotTableCal?.indicators?.length) {\r\n // 透视表全设计模式,替换设计态拖拽的指标\r\n indicatorsData = otherParams.pivotTableCal.indicators\r\n }\r\n indicatorsData?.forEach((indicator: { [key:string]: any }) => {\r\n indicator.location = 'LEFT'\r\n indicatorList.push(handleIndicator(indicator, classification))\r\n })\r\n\r\n // queryColumnList => queryColumns\r\n const queryColumns: any = []\r\n if (['ecanList', 'ecanCirculate'].includes(type) && classificationList?.length > 1) {\r\n queryColumnList = classificationList\r\n }\r\n if (otherParams?.pivotTableCal?.dimensions?.length) {\r\n // 透视表全设计模式,替换设计态拖拽的维度\r\n queryColumnList = otherParams.pivotTableCal.dimensions\r\n }\r\n queryColumnList?.forEach((queryColumn: { [key:string]: any }) => {\r\n const { label, name, location, show, indexCode, sort, typeGuid, indexCodeNum, dateFormat, conditions } = queryColumn\r\n let customSort = handleSort(sort)\r\n if (otherParams.sort) {\r\n // 表格的表头排序\r\n const { field, order } = otherParams.sort\r\n let indicator = indicatorList.find(v => v.label === field)\r\n if (!indicator && label === field) {\r\n indicator = queryColumn\r\n }\r\n if (indicator) {\r\n customSort = {\r\n columnName: indicator.columnName,\r\n label: otherParams.sort.field,\r\n order: order.toUpperCase(),\r\n type: 'NORMAL'\r\n }\r\n }\r\n }\r\n const itemObj: any = {\r\n label,\r\n columnName: name,\r\n location,\r\n show,\r\n sort: customSort,\r\n calcType: 'COLUMN',\r\n hrpIndexCode: indexCode,\r\n hrpIndexCodeNum: indexCodeNum,\r\n conditions: handleConditions(conditions),\r\n typeGuid\r\n }\r\n if (dateFormat) {\r\n itemObj.dateFormat = dateFormat\r\n }\r\n if (name === 'the_date' && !itemObj.dateFormat) {\r\n itemObj.dateFormat = 'YYYY-MM'\r\n }\r\n queryColumns.push(itemObj)\r\n })\r\n\r\n // 行表头\r\n let rowHeaders: any = []\r\n let resultRowHeaderList: any = []\r\n if (Array.isArray(rowHeaderList) && rowHeaderList.length > 0) {\r\n resultRowHeaderList = rowHeaderList\r\n } else if (Array.isArray(dimensionList) && dimensionList.length > 0) {\r\n resultRowHeaderList = dimensionList\r\n }\r\n if (resultRowHeaderList?.length) {\r\n const len = resultRowHeaderList.length\r\n for (let i = 0; i < len; i++) {\r\n const item = resultRowHeaderList[i] || {}\r\n const { label = '', name = '', show = false, sort, customGroup, conditions, truncations, typeGuid = '', dateFormat } = item\r\n let customSort = handleSort(sort)\r\n if (otherParams.sort) {\r\n // 表格的表头排序\r\n const { field, order } = otherParams.sort\r\n let indicator = indicatorList.find(v => v.label === field)\r\n if (!indicator && item.label === field) {\r\n indicator = item\r\n }\r\n if (indicator) {\r\n customSort = {\r\n columnName: indicator.columnName,\r\n label: otherParams.sort.field,\r\n order: order.toUpperCase(),\r\n type: 'NORMAL'\r\n }\r\n }\r\n }\r\n const itemObj: any = {\r\n label: label.trim(),\r\n columnName: name,\r\n show,\r\n sort: customSort,\r\n customGroup,\r\n conditions: handleConditions(conditions),\r\n typeGuid\r\n }\r\n if (dateFormat) {\r\n itemObj.dateFormat = dateFormat\r\n }\r\n if (name === 'the_date' && !itemObj.dateFormat) {\r\n itemObj.dateFormat = 'YYYY-MM'\r\n }\r\n // truncation\r\n const truncation: any = {}\r\n if (Array.isArray(truncations) && truncations.length > 0) {\r\n const len = truncations.length\r\n for (let i = 0; i < len; i++) {\r\n const item = truncations[i] || {}\r\n const { rule = '', num = 0, name = '' } = item\r\n if (rule && num) {\r\n truncation.num = num\r\n truncation.rule = rule\r\n if (name) {\r\n truncation.otherGroupName = name\r\n }\r\n }\r\n }\r\n }\r\n if (Object.keys(truncation)?.length) {\r\n itemObj.truncation = truncation\r\n }\r\n rowHeaders.push(itemObj)\r\n }\r\n }\r\n\r\n // 透视表指标排序要用到的\r\n let pivotColumnHeader: any = []\r\n let pivotColumnData: any\r\n // 透视表\r\n if (otherParams?.pivotTableCal) {\r\n let resultList: any = []\r\n const {\r\n calc = [],\r\n filter = [],\r\n truncations = [],\r\n sorts = [],\r\n aggregateMethod = [],\r\n rowDimensionKeys = [],\r\n colDimensionKeys = []\r\n } = otherParams.pivotTableCal\r\n // 计算\r\n indicatorList.push(...calc)\r\n // 筛选\r\n if (filter?.length) {\r\n for (const fl of filter) {\r\n const { type, ...flParams } = fl\r\n if (type === 'indicators') {\r\n // 指标筛选\r\n resultList = indicatorList\r\n } else if (type === 'dimension') {\r\n // 维度筛选\r\n resultList = queryColumns\r\n }\r\n const target = resultList.find((v: any) => v.columnName === fl.fieldName)\r\n if (target) {\r\n if (!target.conditions) {\r\n target.conditions = []\r\n }\r\n target.conditions.push(flParams)\r\n }\r\n }\r\n }\r\n // 取top\r\n if (truncations?.length) {\r\n for (const item of truncations) {\r\n const target = queryColumns.find(v => v.columnName === item.key)\r\n if (target) {\r\n target.truncation = {\r\n num: item.num,\r\n rule: item.rule\r\n }\r\n }\r\n }\r\n }\r\n\r\n // 维度/指标排序\r\n if (sorts?.length) {\r\n for (const item of sorts) {\r\n const { fieldType, columnData, ...sortParams } = item\r\n if (fieldType === 'indicators') {\r\n // 指标排序\r\n resultList = indicatorList\r\n pivotColumnData = columnData\r\n } else if (fieldType === 'dimension') {\r\n // 维度排序\r\n resultList = queryColumns\r\n }\r\n const target = resultList.find(v => v.label === sortParams.label)\r\n if (target) {\r\n target.sort = {\r\n ...sortParams,\r\n columnName: target.columnName\r\n }\r\n }\r\n }\r\n }\r\n\r\n // 聚合\r\n if (Object.keys(aggregateMethod)?.length) {\r\n for (const key in aggregateMethod) {\r\n const target = queryColumns.find(v => v.label === key)\r\n if (target && aggregateMethod[key]?.length) {\r\n target.aggregateMethod = aggregateMethod[key]\r\n }\r\n }\r\n }\r\n\r\n rowHeaders = []\r\n pivotColumnHeader = []\r\n for (const q of queryColumns) {\r\n if (rowDimensionKeys.includes(q.columnName)) {\r\n rowHeaders.push(q)\r\n } else if (colDimensionKeys.includes(q.columnName)) {\r\n pivotColumnHeader.push(q)\r\n }\r\n }\r\n }\r\n\r\n if (lowerCaseIncludes(type, ['text', 'proportion', 'counter'])) {\r\n chartType = 'zb'\r\n } else if (lowerCaseIncludes(type, ['valueline'])) {\r\n chartType = 'valueline'\r\n }\r\n\r\n // queryColumns 表格配置为空返回\r\n if (isGroupTable || type === 'card') {\r\n if (rowHeaders.length === 0 || indicatorList.length === 0) {\r\n return\r\n } else {\r\n chartType = 'grouptable'\r\n }\r\n } else if (layer === '1' && queryColumns.length === 0) {\r\n return\r\n // queryColumns 图表配置为空返回\r\n } else if (layer === '2' && indicatorList.length === 0) {\r\n return\r\n } else if (layer === '3' && ((!typeGuidString && source !== 'EDV_DATA_SET') || !formFields.labelField || !formFields.valueField)) {\r\n return\r\n } else if (layer === '3' && type === 'ecanDataSelect' && indicatorList.length === 0) {\r\n return\r\n }\r\n\r\n // 文本维度\r\n if (dimensionList?.length) {\r\n layer = '1'\r\n chartType = 'grouptable'\r\n }\r\n\r\n if (!pageId) {\r\n const { pathname } = (window as any)?.location\r\n if (pathname) {\r\n const list = pathname.split('/')\r\n if (list?.length) {\r\n pageId = list[list.length - 1]\r\n }\r\n }\r\n }\r\n\r\n let resultParams: any\r\n if (!lowerCaseIncludes(type, ['scatter', 'valueline']) && Object.keys(formFields)?.length) {\r\n const cascadeControl = getConditions(controlList).find((v: any) => v.conditionKey === 'parentCode')\r\n const someParams: any = {}\r\n if (cascadeControl) {\r\n const model = getGlobalModel(cascadeControl.id) || {}\r\n if (model?.itemCodes) {\r\n someParams.parentItemCodes = model.itemCodes\r\n } else {\r\n return\r\n }\r\n }\r\n if (type === 'ecanDataSelect') {\r\n someParams.indicatorList = indicatorList.filter(v => v.show)\r\n }\r\n if (source === 'EDV_DATA_SET') {\r\n someParams.edvDataSetId = edvDataSetId\r\n }\r\n resultParams = {\r\n url: '/diagram/formData',\r\n source,\r\n dataViewId,\r\n plugin: '4',\r\n layer,\r\n chartType: 'normalSelect',\r\n rangeIndexTypeGuid: typeGuidString,\r\n type: type === 'ecanDataSelect' ? 'normalSelectData' : 'normalSelect',\r\n labelField: formFields.labelField,\r\n valueField: formFields.valueField,\r\n pageId,\r\n sqlConditions,\r\n idxLibMode: 'WITH_DATE_DIM_TABLE',\r\n keyName: props.keyName,\r\n ...someParams\r\n }\r\n } else {\r\n let classParams = {}\r\n if (lowerCaseIncludes(type, ['scatter', 'valueline'])) {\r\n // 散点图多个维度\r\n classParams = {\r\n classifications\r\n }\r\n } else {\r\n classParams = {\r\n classification\r\n }\r\n }\r\n resultParams = {\r\n url: '/diagram',\r\n source,\r\n dataViewId,\r\n plugin: isPivotTable ? '5' : plugin,\r\n layer,\r\n chartType: isPivotTable ? 'pivot-table' : chartType,\r\n series,\r\n indicatorList,\r\n queryColumns: isGroupTable ? [] : queryColumns,\r\n pageFlag: true,\r\n pageId,\r\n edvDataSetId: edvDataSetId || '',\r\n sqlConditions: sqlConditions.map(v => {\r\n const { fieldValue } = v\r\n const params: any = {}\r\n if (fieldValue && Array.isArray(fieldValue)) {\r\n params.fieldValue = JSON.stringify(fieldValue)\r\n }\r\n return {\r\n ...v,\r\n ...params\r\n }\r\n }),\r\n idxLibMode,\r\n preview,\r\n rowHeaders,\r\n keyName: props.keyName,\r\n // 透视表指标排序相关入参\r\n columnData: pivotColumnData,\r\n columnHeaders: pivotColumnHeader,\r\n ...classParams,\r\n }\r\n }\r\n return resultParams\r\n}\r\n\r\nexport default {\r\n formatIndicatorParams\r\n}","interface DataItem {\n name: string | number\n value: string | number\n type?: string\n}\n\nexport type Data = DataItem []\n\nexport interface KeyTypeDataFieldNames {\n name: string\n types: {\n label: string\n value: string\n } []\n}\n\n/**\n * 图形转化数据\n * @param data 数据\n * @param dataFieldNames 字段映射\n */\nexport const useTransformChartDataByAttrKey = (data: Data = [], dataFieldNames: KeyTypeDataFieldNames) => {\n let { name = 'name', types = [] } = dataFieldNames || {}\n name = name?.trim() || name\n const set = new Set()\n const map = new Map<string, any []>()\n const dataLen = data.length\n const typesLen = types.length\n // 只有一条记录\n if (dataLen === 1) {\n const vs: any = []\n // data 为一个值取第一个\n for (let i = 0; i < typesLen; i++) {\n const type = types[i]\n const { label, value } = type\n const v = { ...data[0], value: data[0][value] }\n set.add(label)\n // 值列表\n vs.push(v)\n }\n const n = data[0][name] || ''\n map.set(n, vs)\n } else {\n for (let i = 0; i < dataLen; i++) {\n const item = data[i]\n const x = item[name]\n set.add(x)\n for (let j = 0; j < typesLen; j++) {\n const type = types[j]\n const { label, value } = type\n const v = { ...item, value: item[value] }\n if (map.has(label)) {\n const m: any = map.get(label)\n m.push(v)\n map.set(label, m)\n } else {\n map.set(label, [v])\n }\n }\n }\n }\n\n const dimensions = Array.from(set)\n const dataset: { [key:string]:any } [] = []\n for (const [name, data] of map) {\n dataset.push({\n name,\n data\n })\n }\n return {\n dimensions,\n dataset\n }\n}\n\nexport default useTransformChartDataByAttrKey\n","interface DataItem {\n name: string | number\n value: string | number\n type?: string\n}\n\nexport type Data = DataItem []\n\nexport interface ValueTypeDataFieldNames {\n name: string\n value: string\n type: string\n}\n\n/**\n * 图形转化数据\n * @param data 数据\n * @param dataFieldNames 字段映射\n */\nexport const useTransformChartDataByAttrValue = (data: Data, dataFieldNames?: ValueTypeDataFieldNames) => {\n let { name = 'name', value = 'value', type = 'type' } = dataFieldNames || {}\n // 处去字符串\n name = name?.trim()\n value = value?.trim()\n type = type?.trim()\n const set = new Set()\n const map = new Map()\n const len = data.length\n for (let i = 0; i < len; i++) {\n const item = data[i]\n // x轴\n const x = item[name] || ''\n // y轴\n const y = item[value] || ''\n // 系列(类型)\n const t = item[type] || ''\n set.add(x)\n if (map.has(t)) {\n const arr = map.get(t)\n // @ts-ignore\n arr.push({ name: x, value: y, ...item })\n map.set(t, arr)\n } else {\n // @ts-ignore\n map.set(t, [{ name: x, value: y, ...item }])\n }\n }\n const dimensions = Array.from(set)\n const dataset: { [key:string]:any } [] = []\n for (const [name, data] of map) {\n dataset.push({\n name,\n data\n })\n }\n return {\n dimensions,\n dataset\n }\n}\nexport default useTransformChartDataByAttrValue\n","import runCode from '../utils/runCode'\nexport const useValueFormatter = (formatter: string, value:string) => {\n console.log('This is useValueFormatter')\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)?.trim()\n statement = statement?.replace(/value/g, value)\n try {\n let result = statement\n if ((/\\(.*\\)/g).test(statement) || (/[+/\\\\*]/g).test(statement)) {\n result = runCode(statement)\n }\n formatter = formatter.replace(variable, result)\n } catch (e) {\n formatter = formatter.replace(variable, statement)\n }\n }\n return formatter\n}\n\nexport default useValueFormatter\n","import { computed, unref } from 'vue'\r\nimport useVariablesInText from '../hooks/useVariablesInText'\r\nimport useValueFormatter from '../hooks/useValueFormatter'\r\nimport { handleFormatter, getLegendFormat, formatQfw } from './util'\r\nfunction getMarkLineData (chartsOptions: any) {\r\n if (chartsOptions.isShowMarkLine) {\r\n return {\r\n markLine: {\r\n data: [{ type: chartsOptions.markLineType }]\r\n }\r\n }\r\n } else {\r\n return {}\r\n }\r\n}\r\nconst getTransformProps = (chartsOptions, chartData, fontSize) => {\r\n switch (chartsOptions.type) {\r\n case 'bar':\r\n return getBarTransformProps(chartsOptions, chartData, fontSize)\r\n case 'line':\r\n return getLineTransformProps(chartsOptions, chartData, fontSize)\r\n case 'pie':\r\n return getPieTransformProps(chartsOptions, chartData, fontSize)\r\n case 'comboGraph':\r\n return getComboGraphTransformProps(chartsOptions, chartData, fontSize)\r\n default:\r\n return {}\r\n }\r\n}\r\n\r\nconst getBarTransformProps = (chartsOptions, chartData, fontSize) => {\r\n const yAxisLabelFormatter = chartsOptions.yAxisLabelFormatter\r\n const xAxisLabelFormatter = chartsOptions.xAxisLabelFormatter\r\n const { dimensions = [], dataset = [] } = chartData\r\n const series = computed(() => {\r\n const { gradientShow, gradientColors, gradientOffset, barBorderRadius } = chartsOptions\r\n const ds = dataset\r\n const len = ds.length\r\n const series: any = []\r\n for (let i = 0; i < len; i++) {\r\n const item = {\r\n ...ds[i],\r\n type: 'bar',\r\n barWidth: chartsOptions.barWidth,\r\n showBackground: chartsOptions.showBarBackground\r\n } as { [key: string]: any }\r\n const { isStack, stackColumns } = chartsOptions\r\n if (isStack && (stackColumns.includes(ds[i].name || !stackColumns))) {\r\n item.stack = 'stack'\r\n }\r\n item.label = {\r\n show: chartsOptions.labelShow,\r\n fontSize: chartsOptions.labelFontSize,\r\n position: chartsOptions.labelPosition,\r\n color: chartsOptions.labelColor,\r\n width: chartsOptions.labelWidth,\r\n overflow: chartsOptions.labelOverflow,\r\n formatter: (params) => {\r\n let formatter = ''\r\n let labelFormatter = chartsOptions.labelFormatter\r\n if (labelFormatter === '') {\r\n labelFormatter = '{c}'\r\n }\r\n const { seriesName, name, value, data } = params || {}\r\n formatter += useVariablesInText(\r\n labelFormatter,\r\n {\r\n textData: {\r\n name,\r\n value,\r\n a: seriesName,\r\n b: name,\r\n c: value || 0,\r\n ...data\r\n }\r\n },\r\n {\r\n useNewline: true,\r\n useSpace: true\r\n })\r\n return formatter\r\n }\r\n }\r\n item.itemStyle = {}\r\n if (gradientShow) {\r\n item.itemStyle = {\r\n color: {\r\n x: chartsOptions.isUseHorizontalAxis ? 1 : 0,\r\n y: 0,\r\n x2: 0,\r\n y2: chartsOptions.isUseHorizontalAxis ? 0 : 1,\r\n colorStops: [{\r\n offset: 0,\r\n color: chartsOptions.colors[i]\r\n }, {\r\n offset: gradientOffset,\r\n color: gradientColors[i]\r\n }, {\r\n offset: 1,\r\n color: gradientColors[i]\r\n }]\r\n }\r\n }\r\n }\r\n if (barBorderRadius) {\r\n const radius = barBorderRadius.split(',')\r\n if (radius?.length) {\r\n const radiusItems: any = []\r\n for (const rs of radius) {\r\n const value = parseFloat(rs)\r\n if (!isNaN(value)) {\r\n radiusItems.push(value)\r\n }\r\n }\r\n // item.itemStyle.borderRadius = radiusItems\r\n // echart4.4版本圆角属性名变更\r\n item.itemStyle.barBorderRadius = radiusItems\r\n }\r\n }\r\n if (chartsOptions.isShowMarkLine) {\r\n item.markLine = {\r\n data: [{ type: chartsOptions.markLineType }]\r\n }\r\n }\r\n series.push(item)\r\n }\r\n return series\r\n })\r\n const xAxisData = computed(() => {\r\n return dimensions.map((item) => {\r\n let result = {}\r\n if (item && typeof item === 'object') {\r\n result = {\r\n ...item,\r\n textStyle: {\r\n fontSize: fontSize\r\n }\r\n }\r\n } else {\r\n result = {\r\n value: item,\r\n textStyle: {\r\n fontSize: fontSize\r\n }\r\n }\r\n }\r\n return result\r\n })\r\n })\r\n return {\r\n tooltip: {\r\n trigger: 'axis',\r\n show: chartsOptions.tooltipShow,\r\n formatter: (params) => {\r\n const len = params.length\r\n let formatter = ''\r\n let tooltipFormatter = chartsOptions.tooltipFormatter\r\n // currentData = params[0]?.data\r\n if (tooltipFormatter === '') {\r\n tooltipFormatter = '{marker} {a} {c}'\r\n }\r\n for (let i = 0; i < len; i++) {\r\n const { marker, seriesName, name, value, data } = params[i] || {}\r\n if (i === 0) {\r\n let formatName = name\r\n if (typeof name === 'string' && name[0] === '0' && !isNaN(+name)) {\r\n formatName = (+name).toString()\r\n }\r\n formatter += `${useValueFormatter(xAxisLabelFormatter, formatName)}<br/>`\r\n }\r\n formatter += useVariablesInText(\r\n tooltipFormatter,\r\n {\r\n textData: {\r\n marker,\r\n name,\r\n value,\r\n Qfw: formatQfw,\r\n a: seriesName,\r\n b: name,\r\n c: value || 0,\r\n ...data\r\n }\r\n },\r\n {\r\n useNewline: true,\r\n useSpace: true\r\n }\r\n )\r\n formatter += '<br/>'\r\n }\r\n return formatter\r\n },\r\n // valueFormatter: (value) => {\r\n // return useVariablesInText(chartsOptions.tooltipValueFormatter as string, { value })\r\n // },\r\n textStyle: {\r\n color: chartsOptions.tooltipTextStyleColor,\r\n fontSize: fontSize\r\n },\r\n position: chartsOptions.tooltipPosition || undefined,\r\n backgroundColor: chartsOptions.tooltipBackgroundColor || '#fff'\r\n },\r\n legend: {\r\n type: chartsOptions.legendScroll ? 'scroll' : 'plain',\r\n width: chartsOptions.legendWidth,\r\n height: chartsOptions.legendHeight,\r\n show: chartsOptions.legendShow,\r\n orient: chartsOptions.legendOrient,\r\n top: chartsOptions.legendTop,\r\n left: chartsOptions.legendLeft,\r\n textStyle: {\r\n // lineHeight: parseFloat(chartsOptions.legendFontSize) + 8,\r\n rich: {\r\n text: {\r\n width: chartsOptions.legendTextWidth,\r\n color: chartsOptions.legendTextStyleColor,\r\n fontSize: chartsOptions.legendFontSize\r\n }\r\n }\r\n },\r\n itemHeight: chartsOptions.legendItemHeight,\r\n itemWidth: chartsOptions.legendItemWidth,\r\n itemGap: chartsOptions.legendItemGap,\r\n data: dataset.map((value, index) => {\r\n return {\r\n name: value.name,\r\n itemStyle: {\r\n color: chartsOptions.colors[index]\r\n },\r\n icon: chartsOptions.legendType\r\n }\r\n }),\r\n formatter: (name: string) => {\r\n return getLegendFormat(chartsOptions.legendFormatter, {\r\n name\r\n })\r\n }\r\n },\r\n xAxis: {\r\n type: chartsOptions.isUseHorizontalAxis ? 'value' : 'category',\r\n data: chartsOptions.isUseHorizontalAxis ? null : unref(xAxisData),\r\n inverse: chartsOptions.isUseHorizontalAxis ? chartsOptions.xAxisInverse : chartsOptions.axisInverse,\r\n minInterval: chartsOptions.xAxisMinInterval,\r\n splitLine: {\r\n show: chartsOptions.xAxisSplitLineShow,\r\n lineStyle: {\r\n color: chartsOptions.xAxisSplitLineStyleColor,\r\n type: chartsOptions.xAxisSplitLineType\r\n },\r\n interval: chartsOptions.xAxisSplitLineInterval\r\n },\r\n splitArea: {\r\n show: chartsOptions.xAxisSplitAreaShow\r\n },\r\n axisLabel: {\r\n color: chartsOptions.xAxisLabelColor,\r\n interval: chartsOptions.xAxisLabelInterval || 0,\r\n rotate: chartsOptions.xAxisLabelRotate,\r\n width: chartsOptions.xAxisLabelWidth,\r\n overflow: chartsOptions.xAxisLabelOverflow,\r\n fontSize: chartsOptions.xAxisLabelFontSize,\r\n formatter (value: string) {\r\n if (typeof value === 'string' && value[0] === '0' && !isNaN(+value)) {\r\n value = (+value).toString()\r\n }\r\n return useValueFormatter(xAxisLabelFormatter, value)\r\n }\r\n },\r\n axisLine: {\r\n show: chartsOptions.xAxisLineShow,\r\n lineStyle: {\r\n color: chartsOptions.xAxisLineStyleColor\r\n }\r\n },\r\n axisTick: {\r\n show: chartsOptions.xAxisTickShow\r\n },\r\n name: chartsOptions.xAxisName,\r\n nameTextStyle: {\r\n fontSize: chartsOptions.xAxisLabelFontSize,\r\n color: chartsOptions.xAxisLabelColor,\r\n align: 'left'\r\n },\r\n max: chartsOptions.xAxisMaxValue || null\r\n },\r\n yAxis: {\r\n type: chartsOptions.isUseHorizontalAxis ? 'category' : 'value',\r\n data: chartsOptions.isUseHorizontalAxis ? unref(dimensions) : null,\r\n inverse: chartsOptions.isUseHorizontalAxis ? chartsOptions.axisInverse : chartsOptions.yAxisInverse,\r\n minInterval: chartsOptions.yAxisMinInterval,\r\n splitLine: {\r\n show: chartsOptions.yAxisSplitLineShow,\r\n lineStyle: {\r\n color: chartsOptions.yAxisSplitLineStyleColor,\r\n type: chartsOptions.yAxisSplitLineType\r\n }\r\n },\r\n splitArea: {\r\n show: chartsOptions.yAxisSplitAreaShow\r\n },\r\n axisLabel: {\r\n show: chartsOptions.yAxisLabelShow,\r\n fontSize: chartsOptions.yAxisLabelFontSize,\r\n color: chartsOptions.yAxisLabelColor,\r\n rotate: chartsOptions.yAxisLabelRotate,\r\n width: chartsOptions.yAxisLabelWidth,\r\n overflow: chartsOptions.yAxisLabelOverflow,\r\n formatter (value: string) {\r\n return useValueFormatter(yAxisLabelFormatter, value)\r\n }\r\n },\r\n axisLine: {\r\n show: chartsOptions.yAxisLineAlwaysDisplay,\r\n lineStyle: {\r\n color: chartsOptions.yAxisLineStyleColor\r\n }\r\n },\r\n name: chartsOptions.yAxisName,\r\n nameTextStyle: {\r\n fontSize: chartsOptions.yAxisLabelFontSize,\r\n color: chartsOptions.yAxisLabelColor,\r\n align: 'right'\r\n },\r\n max: chartsOptions.yAxisMaxValue || null\r\n },\r\n series: unref(series)\r\n }\r\n}\r\n\r\nconst getLineTransformProps = (chartsOptions, chartData, fontSize) => {\r\n // console.log('xAxisName', chartsOptions, chartsOptions.xAxisName)\r\n const yAxisLabelFormatter = chartsOptions.yAxisLabelFormatter\r\n const xAxisLabelFormatter = chartsOptions.xAxisLabelFormatter\r\n const { dimensions = [], dataset = [] } = chartData\r\n const xAxisData = computed(() => {\r\n return dimensions.map((item) => {\r\n let result = {}\r\n if (item && typeof item === 'object') {\r\n result = {\r\n ...item,\r\n textStyle: {\r\n fontSize: fontSize\r\n }\r\n }\r\n } else {\r\n result = {\r\n value: item,\r\n textStyle: {\r\n fontSize: fontSize\r\n }\r\n }\r\n }\r\n return result\r\n })\r\n })\r\n const series = computed(() => {\r\n const temp = [] as { [key: string]: any }[]\r\n const len = dataset.length\r\n for (let i = 0; i < len; i++) {\r\n const shadowStyle: any = {}\r\n if (chartsOptions.shadowColor) {\r\n shadowStyle.shadowColor = chartsOptions.shadowColor\r\n shadowStyle.shadowBlur = chartsOptions.shadowBlur\r\n shadowStyle.shadowOffsetY = chartsOptions.shadowOffsetY\r\n shadowStyle.shadowOffsetX = chartsOptions.shadowOffsetX\r\n }\r\n temp.push({\r\n type: 'line',\r\n ...dataset[i],\r\n symbolSize: chartsOptions.symbolSize,\r\n smooth: chartsOptions.smooth,\r\n areaStyle: {\r\n color: chartsOptions.areaGradientShow\r\n ? {\r\n type: 'linear',\r\n x: 0,\r\n y: 0,\r\n x2: 0,\r\n y2: 1,\r\n colorStops: [{\r\n offset: 0,\r\n color: chartsOptions.colors[i]\r\n }, {\r\n offset: 1,\r\n color: chartsOptions.areaGradientColor || 'transparent'\r\n }],\r\n global: false\r\n }\r\n : chartsOptions.colors[i],\r\n opacity: chartsOptions.areaStyleOpacity\r\n },\r\n lineStyle: {\r\n width: chartsOptions.lineStyleWidth,\r\n ...shadowStyle\r\n },\r\n ...getMarkLineData(chartsOptions)\r\n })\r\n }\r\n return temp\r\n })\r\n return {\r\n tooltip: {\r\n trigger: 'axis',\r\n show: chartsOptions.tooltipShow,\r\n formatter: (params) => {\r\n const len = params.length\r\n let formatter = ''\r\n let tooltipFormatter = chartsOptions.tooltipFormatter\r\n if (tooltipFormatter === '') {\r\n tooltipFormatter = '{marker} {a} {c}'\r\n }\r\n for (let i = 0; i < len; i++) {\r\n const { marker, seriesName, name, value, data } = params[i] || {}\r\n if (i === 0) {\r\n formatter += `${name}<br/>`\r\n }\r\n formatter += useVariablesInText(\r\n tooltipFormatter,\r\n {\r\n textData: {\r\n marker,\r\n name,\r\n value,\r\n a: seriesName,\r\n b: name,\r\n c: value,\r\n ...data\r\n }\r\n },\r\n {\r\n useNewline: true,\r\n useSpace: true\r\n }\r\n )\r\n formatter += '<br/>'\r\n }\r\n return formatter\r\n },\r\n textStyle: {\r\n color: chartsOptions.tooltipTextStyleColor,\r\n fontSize: fontSize.value\r\n },\r\n position: chartsOptions.tooltipPosition || undefined,\r\n backgroundColor: chartsOptions.tooltipBackgroundColor || '#fff'\r\n },\r\n xAxis: {\r\n name: chartsOptions.xAxisName,\r\n type: 'category',\r\n data: unref(xAxisData),\r\n minInterval: chartsOptions.xAxisMinInterval,\r\n splitLine: {\r\n show: chartsOptions.xAxisSplitLineShow,\r\n lineStyle: {\r\n color: chartsOptions.xAxisSplitLineStyleColor\r\n }\r\n },\r\n axisLabel: {\r\n color: chartsOptions.xAxisLabelColor,\r\n interval: chartsOptions.xAxisLabelInterval || 0,\r\n rotate: chartsOptions.xAxisLabelRotate,\r\n width: chartsOptions.xAxisLabelWidth,\r\n overflow: chartsOptions.xAxisLabelOverflow,\r\n formatter (value: string) {\r\n return useValueFormatter(xAxisLabelFormatter, value)\r\n }\r\n },\r\n axisLine: {\r\n lineStyle: {\r\n color: chartsOptions.xAxisLineStyleColor\r\n }\r\n },\r\n axisTick: {\r\n show: chartsOptions.xAxisTickShow\r\n }\r\n },\r\n yAxis: {\r\n type: 'value',\r\n name: chartsOptions.yAxisName,\r\n minInterval: chartsOptions.yAxisMinInterval,\r\n splitLine: {\r\n show: chartsOptions.yAxisSplitLineShow,\r\n lineStyle: {\r\n color: chartsOptions.yAxisSplitLineStyleColor\r\n }\r\n },\r\n axisLabel: {\r\n fontSize: fontSize,\r\n color: chartsOptions.yAxisLabelColor,\r\n formatter (value: string) {\r\n return useValueFormatter(yAxisLabelFormatter, value)\r\n }\r\n },\r\n axisLine: {\r\n show: chartsOptions.yAxisLineAlwaysDisplay,\r\n lineStyle: {\r\n color: chartsOptions.yAxisLineStyleColor\r\n }\r\n }\r\n },\r\n // 图例\r\n legend: {\r\n show: chartsOptions.legendShow,\r\n orient: chartsOptions.legendOrient,\r\n top: chartsOptions.legendTop,\r\n left: chartsOptions.legendLeft,\r\n textStyle: {\r\n fontSize: fontSize\r\n }\r\n },\r\n series: unref(series)\r\n }\r\n}\r\n\r\nconst getPieTransformProps = (chartsOptions, chartData, fontSize) => {\r\n const { dataset = [] } = chartData\r\n let { data = [] } = dataset[0] || {}\r\n if (Array.isArray(chartsOptions.colors)) {\r\n const isUseLabelColors = chartsOptions.isUseLabelColors\r\n const colors = chartsOptions.colors\r\n data = data.map((item, index) => ({\r\n label: isUseLabelColors ? { color: colors[index] } : {},\r\n ...item\r\n }))\r\n }\r\n return {\r\n title: {\r\n text: chartsOptions.titleText,\r\n subtext: chartsOptions.titleSubtext,\r\n textStyle: {\r\n fontSize: chartsOptions.titleFontSize,\r\n fontWeight: chartsOptions.fontWeight,\r\n color: chartsOptions.titleColor\r\n },\r\n left: chartsOptions.textAlign || 'center'\r\n },\r\n // 提示\r\n tooltip: {\r\n show: chartsOptions.tooltipShow,\r\n trigger: chartsOptions.tooltipTrigger,\r\n formatter: (params) => {\r\n const { marker, seriesName, name, value, percent, data } = params || {}\r\n return useVariablesInText(\r\n chartsOptions.tooltipFormatter,\r\n {\r\n textData: {\r\n marker,\r\n name,\r\n value,\r\n percent,\r\n a: seriesName,\r\n b: name,\r\n c: value,\r\n d: percent,\r\n ...data\r\n }\r\n },\r\n {\r\n useNewline: true,\r\n useSpace: true\r\n }\r\n )\r\n },\r\n textStyle: {\r\n color: chartsOptions.tooltipTextStyleColor || '#333'\r\n },\r\n backgroundColor: chartsOptions.tooltipBackgroundColor || '#fff',\r\n borderColor: chartsOptions.tooltipBorderColor || '#eee'\r\n },\r\n // 图例\r\n legend: {\r\n show: chartsOptions.legendShow,\r\n orient: chartsOptions.legendOrient,\r\n top: chartsOptions.legendTop,\r\n left: chartsOptions.legendLeft,\r\n textStyle: {\r\n color: chartsOptions.legendTextStyleColor,\r\n fontSize: fontSize === 18 ? fontSize : chartsOptions.labelFontSize\r\n }\r\n },\r\n series: [\r\n {\r\n data,\r\n type: 'pie',\r\n radius: [chartsOptions.innerRadius, chartsOptions.outerRadius],\r\n center: [chartsOptions.centerLeft, chartsOptions.centerTop],\r\n roseType: chartsOptions.roseType,\r\n avoidLabelOverlap: false,\r\n minAngle: chartsOptions.minAngle,\r\n label: {\r\n show: chartsOptions.labelPosition !== 'center' && chartsOptions.labelShow,\r\n color: chartsOptions.labelColor,\r\n fontSize: fontSize === 18 ? fontSize : chartsOptions.labelFontSize,\r\n position: chartsOptions.labelPosition,\r\n formatter: handleFormatter(chartsOptions.labelFormatter)\r\n },\r\n labelLine: {\r\n show: chartsOptions.labelLineShow,\r\n length: chartsOptions.labelLineLength,\r\n length2: chartsOptions.labelLineLength2\r\n },\r\n emphasis: {\r\n itemStyle: {\r\n shadowBlur: 10,\r\n shadowOffsetX: 0,\r\n shadowColor: 'rgba(0, 0, 0, 0.5)'\r\n },\r\n label: {}\r\n }\r\n }\r\n ]\r\n }\r\n}\r\n\r\nconst getComboGraphTransformProps = (chartsOptions, chartData, fontSize) => {\r\n const { dimensions = [], dataset = [] } = chartData\r\n const xAxisData = computed(() => {\r\n return dimensions.map((item) => {\r\n let result = {}\r\n if (item && typeof item === 'object') {\r\n result = {\r\n ...item,\r\n textStyle: {\r\n fontSize: fontSize\r\n }\r\n }\r\n } else {\r\n result = {\r\n value: item,\r\n textStyle: {\r\n fontSize: fontSize\r\n }\r\n }\r\n }\r\n return result\r\n })\r\n })\r\n const series = computed(() => {\r\n const temp = [] as { [key: string]: any }[]\r\n const len = dataset.length\r\n const seriesTypes = chartsOptions.seriesTypes\r\n for (let i = 0; i < len; i++) {\r\n const seriesType = seriesTypes[i]\r\n const { type, axisIndex } = seriesType || {}\r\n let series = {\r\n type: type,\r\n yAxisIndex: axisIndex,\r\n ...dataset[i]\r\n } as { [key: string]: any }\r\n if (type === 'line') {\r\n const shadowStyle: any = {}\r\n if (chartsOptions.shadowColor) {\r\n shadowStyle.shadowColor = chartsOptions.shadowColor\r\n shadowStyle.shadowBlur = chartsOptions.shadowBlur\r\n shadowStyle.shadowOffsetY = chartsOptions.shadowOffsetY\r\n shadowStyle.shadowOffsetX = chartsOptions.shadowOffsetX\r\n }\r\n series = {\r\n ...series,\r\n symbolSize: chartsOptions.symbolSize,\r\n smooth: chartsOptions.smooth,\r\n itemStyle: {\r\n color: chartsOptions.colors[i]\r\n },\r\n areaStyle: {\r\n color: chartsOptions.areaGradientShow\r\n ? {\r\n type: 'linear',\r\n x: 0,\r\n y: 0,\r\n x2: 0,\r\n y2: 1,\r\n colorStops: [{\r\n offset: 0,\r\n color: chartsOptions.colors[i]\r\n }, {\r\n offset: 1,\r\n color: chartsOptions.areaGradientColor || 'transparent'\r\n }],\r\n global: false\r\n }\r\n : chartsOptions.colors[i],\r\n opacity: chartsOptions.areaStyleOpacity\r\n },\r\n lineStyle: {\r\n width: chartsOptions.lineStyleWidth,\r\n ...shadowStyle\r\n }\r\n }\r\n }\r\n if (type === 'bar') {\r\n const { gradientShow, gradientColors, gradientOffset } = chartsOptions\r\n const itemStyle: any = {}\r\n if (chartsOptions.barBorderRadius) {\r\n const radius = chartsOptions.barBorderRadius.split(',')\r\n if (radius?.length) {\r\n const radiusItems: any = []\r\n for (const rs of radius) {\r\n const value = parseFloat(rs)\r\n if (!isNaN(value)) {\r\n radiusItems.push(value)\r\n }\r\n }\r\n itemStyle.borderRadius = radiusItems\r\n }\r\n }\r\n if (gradientShow) {\r\n itemStyle.color = {\r\n x: 0,\r\n y: 0,\r\n x2: 0,\r\n y2: 1,\r\n colorStops: [{\r\n offset: 0,\r\n color: chartsOptions.colors[i]\r\n }, {\r\n offset: gradientOffset,\r\n color: gradientColors[i]\r\n }, {\r\n offset: 1,\r\n color: gradientColors[i]\r\n }]\r\n }\r\n }\r\n series = {\r\n ...series,\r\n barWidth: chartsOptions.barWidth,\r\n itemStyle\r\n }\r\n }\r\n if (chartsOptions.isShowMarkLine) {\r\n series.markLine = {\r\n data: [{ type: chartsOptions.markLineType }]\r\n }\r\n }\r\n temp.push(series)\r\n }\r\n return temp\r\n })\r\n const yAxis = computed(() => {\r\n const yAxis = chartsOptions.yAxis\r\n return yAxis?.map((axis, index) => {\r\n return {\r\n type: 'value',\r\n minInterval: chartsOptions.yAxisMinInterval,\r\n splitLine: {\r\n show: index === 0 ? chartsOptions.yAxisLeftSplitLineShow : chartsOptions.yAxisRightSplitLineShow,\r\n lineStyle: {\r\n color: chartsOptions.yAxisSplitLineStyleColor,\r\n type: index === 0 ? chartsOptions.yAxisLeftSplitLineType : chartsOptions.yAxisRightSplitLineType\r\n }\r\n },\r\n splitArea: {\r\n show: chartsOptions.yAxisSplitAreaShow\r\n },\r\n axisLabel: {\r\n fontSize: fontSize,\r\n show: chartsOptions.yAxisLabelShow,\r\n color: chartsOptions.yAxisLabelColor,\r\n formatter (value: string) {\r\n return useValueFormatter(axis.axisLabelFormatter, value)\r\n }\r\n },\r\n axisLine: {\r\n show: chartsOptions.yAxisLineAlwaysDisplay,\r\n lineStyle: {\r\n color: chartsOptions.yAxisLineStyleColor\r\n }\r\n },\r\n name: index === 0 ? chartsOptions.yAxisLeftName : chartsOptions.yAxisRightName,\r\n nameTextStyle: {\r\n fontSize: chartsOptions.yAxisLabelFontSize,\r\n color: chartsOptions.yAxisLabelColor,\r\n align: index === 0 ? 'right' : 'left'\r\n },\r\n max: chartsOptions.yAxisMaxValue || null\r\n }\r\n })\r\n })\r\n return {\r\n legend: {\r\n show: chartsOptions.legendShow,\r\n orient: chartsOptions.legendOrient,\r\n top: chartsOptions.legendTop,\r\n left: chartsOptions.legendLeft,\r\n textStyle: {\r\n color: chartsOptions.legendTextStyleColor,\r\n fontSize: fontSize\r\n }\r\n },\r\n tooltip: {\r\n trigger: 'axis',\r\n show: chartsOptions.tooltipShow,\r\n formatter: (params) => {\r\n const len = params.length\r\n let formatter = ''\r\n let tooltipFormatter = chartsOptions.tooltipFormatter\r\n if (tooltipFormatter === '') {\r\n tooltipFormatter = '{marker} {a} {c}'\r\n }\r\n const seriesTypes = chartsOptions.seriesTypes\r\n for (let i = 0; i < len; i++) {\r\n const seriesType = seriesTypes[i]\r\n const { tooltipFormatter: _tooltipFormatter } = seriesType || {}\r\n const { marker, seriesName, name, value, data } = params[i] || {}\r\n if (i === 0) {\r\n formatter += `${name}<br/>`\r\n }\r\n formatter += useVariablesInText(\r\n // 如果系列有提示框组件就使用自定义,没有就用默认的\r\n _tooltipFormatter || tooltipFormatter,\r\n {\r\n textData: {\r\n marker,\r\n name,\r\n value,\r\n seriesName,\r\n a: seriesName,\r\n b: name,\r\n c: value,\r\n ...data\r\n }\r\n },\r\n {\r\n useNewline: true,\r\n useSpace: true\r\n }\r\n )\r\n formatter += '<br/>'\r\n }\r\n return formatter\r\n },\r\n textStyle: {\r\n color: chartsOptions.tooltipTextStyleColor || '#333',\r\n fontSize: fontSize\r\n },\r\n backgroundColor: chartsOptions.tooltipBackgroundColor || '#fff',\r\n borderColor: chartsOptions.tooltipBorderColor || '#eee'\r\n },\r\n xAxis: {\r\n name: chartsOptions.xAxisName,\r\n minInterval: chartsOptions.xAxisMinInterval,\r\n type: 'category',\r\n data: unref(xAxisData),\r\n splitLine: {\r\n show: chartsOptions.xAxisSplitLineShow,\r\n lineStyle: {\r\n color: chartsOptions.xAxisSplitLineStyleColor\r\n }\r\n },\r\n axisLabel: {\r\n color: chartsOptions.xAxisLabelColor,\r\n interval: chartsOptions.xAxisLabelInterval || 0,\r\n rotate: chartsOptions.xAxisLabelRotate,\r\n width: chartsOptions.xAxisLabelWidth,\r\n overflow: chartsOptions.xAxisLabelOverflow\r\n },\r\n axisLine: {\r\n lineStyle: {\r\n color: chartsOptions.xAxisLineStyleColor\r\n }\r\n },\r\n axisTick: {\r\n show: chartsOptions.xAxisTickShow\r\n }\r\n },\r\n yAxis: unref(yAxis),\r\n series: unref(series)\r\n }\r\n}\r\n\r\nconst getCommonTransformProps = (chartsOptions) => {\r\n return {\r\n title: {\r\n text: chartsOptions.titleText,\r\n subtext: chartsOptions.titleSubtext,\r\n textStyle: {\r\n fontSize: chartsOptions.titleFontSize,\r\n fontWeight: chartsOptions.fontWeight,\r\n color: chartsOptions.titleColor\r\n },\r\n left: chartsOptions.textAlign || 'center'\r\n },\r\n grid: {\r\n top: chartsOptions.gridTop,\r\n bottom: chartsOptions.gridBottom,\r\n left: chartsOptions.gridLeft,\r\n right: chartsOptions.gridRight,\r\n containLabel: chartsOptions.gridContainLabel\r\n },\r\n color: chartsOptions.colors\r\n }\r\n}\r\n\r\nconst transformProps = (chartsOptions, chartData, fontSize = 12) => {\r\n return {\r\n ...getCommonTransformProps(chartsOptions),\r\n ...getTransformProps(chartsOptions, chartData, fontSize)\r\n }\r\n}\r\nexport default transformProps\r\n","// 指标库相关内容\r\nimport indicators from './indicator'\r\n// 通用函数\r\nimport runCode from './utils/runCode'\r\n// 工作台专用\r\nimport useTransformChartDataByAttrKey from './hooks/useTransformChartDataByAttrKey'\r\nimport useTransformChartDataByAttrValue from './hooks/useTransformChartDataByAttrValue'\r\nimport useValueFormatter from './hooks/useValueFormatter'\r\nimport useVariablesInText from './hooks/useVariablesInText'\r\nimport transformProps from './utils/transformProps'\r\nimport { getIndicatorParams } from './utils/util'\r\n\r\nexport default {\r\n ...indicators,\r\n runCode,\r\n useTransformChartDataByAttrKey,\r\n useTransformChartDataByAttrValue,\r\n useValueFormatter,\r\n useVariablesInText,\r\n transformProps,\r\n getIndicatorParams\r\n}"],"names":["runCode","code","data","useFn","dayjs","paramsStr","params","key","runFn","result","useVariablesInText","formatter","textData","codeData","useNewline","useSpace","variables","i","variable","statement","reg","textVariables","j","textVariable","usedVariable","res","str","lowerCaseIncludes","v1","v2","len","s","hasOwn","v","k","getConditions","conditions","item","getFormatStep","format","value","formatStep","handleFormatter","getLegendFormat","lineBreakCount","_a","lineBreakStr","text","formatQfw","str1","str2","index","getIndicatorParams","graphicConfig","request","INDICATOR_URL","PAGE_ID","dataSourceId","leftAxisList","rightAxisList","queryColumnList","indicators","unref","otherList","idMap","indexCode","parentId","promiseList","id","resolve","reject","success","e","a","b","MODEL_KEY_LIST","modelValue","excludeAttr","getGlobalModel","getCalcWays","props","around","unit","pageMode","componentList","sTime","eTime","component","interval","intervalUnit","startTime","endTime","operate","useCurrentTime","type","mode","model","diffValue","handleParams","calcWays","dateCalcTypes","activeKey","componentId","vals","fieldVal","handleConditions","list","cloneDeep","isSameLevel","cs","joinParams","conKey","handleIndicator","indicator","classification","sortData","getCpntSortData","label","name","location","show","indexCodeNum","calcType","builtInFormula","builtInValueSource","builtInCalcWay","formula","aggregate","distinct","dimByCount","dataTo","conditionData","componentField","setFieldValue","itemObj","handleSqlConditions","controlList","classificationList","rowHeaderList","dimensionList","seriesList","handleControlList","conditionList","ol","l","cItem","sqlConditions","control","keyName","prop","dateFormat","modelKey","dataType","customValue","sqlCondition","getConditionItem","conditionLabel","conditionKey","conditionValueType","rule","notGlobal","typeGuid","alias","ruleValue","attr","handleVariableList","variableList","handleVarList","variableItem","operateValue","operateMode","operateType","rKey","record","propKey","recordValue","RECORD","customFormat","dateValue","propValue","knList","_time","step","handleSort","sort","customOrderColumns","labels","columnNames","orders","sortCpnts","customSort","order","formatIndicatorParams","otherParams","globalModel","isGroupTable","pageId","isPivotTable","source","dataViewId","plugin","layer","chartType","formFields","variableConditions","idxLibMode","preview","edvDataSetId","gParams","ruleVaule","globalList","notGlobalList","classifications","typeGuidString","customGroup","truncations","truncation","num","series","indicatorList","leftAxis","rightAxis","indicatorsData","_c","_b","queryColumns","_e","_d","queryColumn","field","rowHeaders","resultRowHeaderList","_f","pivotColumnHeader","pivotColumnData","resultList","calc","filter","sorts","aggregateMethod","rowDimensionKeys","colDimensionKeys","fl","flParams","target","fieldType","columnData","sortParams","_g","_h","q","pathname","resultParams","_i","cascadeControl","someParams","classParams","fieldValue","useTransformChartDataByAttrKey","dataFieldNames","types","set","map","dataLen","typesLen","vs","x","dimensions","dataset","useTransformChartDataByAttrValue","y","t","arr","useValueFormatter","getMarkLineData","chartsOptions","getTransformProps","chartData","fontSize","getBarTransformProps","getLineTransformProps","getPieTransformProps","getComboGraphTransformProps","yAxisLabelFormatter","xAxisLabelFormatter","computed","gradientShow","gradientColors","gradientOffset","barBorderRadius","ds","isStack","stackColumns","labelFormatter","seriesName","radius","radiusItems","rs","xAxisData","tooltipFormatter","marker","formatName","temp","shadowStyle","isUseLabelColors","colors","percent","seriesTypes","seriesType","axisIndex","itemStyle","yAxis","axis","_tooltipFormatter","getCommonTransformProps","transformProps"],"mappings":"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"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
/*! @ecan-bi/tools@1.0.7 */
|
|
2
|
+
(function(P,p){typeof exports=="object"&&typeof module<"u"?p(exports,require("vue"),require("dayjs"),require("lodash-es")):typeof define=="function"&&define.amd?define(["exports","vue","dayjs","lodash-es"],p):(P=typeof globalThis<"u"?globalThis:P||self,p(P["@ecan/bi-tools"]={},P.Vue,P.Dayjs,P.LodashEs))})(this,function(P,p,W,ne){"use strict";const ue=(e,o)=>{const l={dayjs:W,...o};let t="";const m=[];for(const s in l)t+=`${s},`,m.push(l[s]);t=t.replace(/,$/,"");const d=`function (${t}){return ${e}}`;let a;try{a=Function(`"use strict";return (${d})`)()(...m)}catch{return e}return a},J=(e="",{textData:o,codeData:l}={},{useNewline:t=!1,useSpace:m=!1}={})=>{const d={...o},a=(e||"").match(/\{(.+?)\}/g);if(a==null||a.length===0)return e;for(let s=0;s<a.length;s++){const r=a[s];let n=r.slice(1,-1).trim();const f=/[\u4e00-\u9fa5a-z-_A-Z0-9]*/g,i=n.match(f);for(let g=0;g<i.length;g++){const u=i[g],x=d[u];x!=null&&(n=n.replace(u,x))}(/\(.*\)/g.test(n)||/[+/\\*]/g.test(n))&&(n=ue(n,l)),e=e.replace(r,n)}return t&&(e=e==null?void 0:e.replace(/\n|\\n/g,"<br/>")),m&&(e=e==null?void 0:e.replace(/\s{2,}?/g," ")),e=e.replace(/Qfw\((.*?)\)/,(s,r)=>o!=null&&o.Qfw?o==null?void 0:o.Qfw(r):r),e},Y=(e,o)=>{if(typeof e=="string"&&typeof o=="string")return e.toLocaleLowerCase().includes(o.toLocaleLowerCase());if(typeof e=="string"&&Array.isArray(o)){const l=o.length;for(let t=0;t<l;t++){const m=o[t];if(typeof m=="string"&&e.toLocaleLowerCase().includes(m.toLocaleLowerCase()))return!0}}return!1},K=(e,o)=>Object.prototype.hasOwnProperty.call(e,o),ie=e=>{const o=[];for(const l of e)l.conditions?o.push(...ie(l.conditions)):(l==null?void 0:l.dataType)==="component"&&o.push(l);return o};function Ye(e){const o=e.split("-");let l="";if(o!=null&&o.length)switch(o[o.length-1]){case"YYYY":l="year";break;case"MM":l="month";break;case"DD":l="day";break}return l}const Be=e=>e.replace(/\\n/g,`
|
|
3
|
+
`),Ke=(e="",o)=>{var a;const l=e.match(/\{(.+?)\}/g),t=((a=e.split(`
|
|
4
|
+
`))==null?void 0:a.length)-1;let m="";if(t)for(let s=0;s<t;s++)m+=`
|
|
5
|
+
`;let d=e;if(l!=null&&l.length){for(const s of l){const r=J(s,{textData:o},{useNewline:!1,useSpace:!1});r&&(d=d.replace(s,r))}return`${m}{text|${d}}`}else return e};function Ue(e){let o="",l="",t="",m="";e.indexOf(".")>-1?(l=e.split(".")[0],t=e.split(".")[1]):l=e;let d=0,a=0;for(a=l.length-1;a>=0;)d%3===0&&d!==0?l[a]==="-"?o+=l[a]:o+=","+l[a]:o+=l[a],a--,d++;return o=o.split("").reverse().join(""),e.indexOf(".")>-1?m=o+"."+t:m=o,m}async function We({graphicConfig:e,request:o,INDICATOR_URL:l="",PAGE_ID:t,dataSourceId:m}){var d;try{const{leftAxisList:a=[],rightAxisList:s=[],queryColumnList:r=[],indicators:n=[]}=p.unref(e),f=[...a,...s,...r,...n],i={};for(const g of f){const{indexCode:u="",parentId:x=""}=g;x&&!K(g,"calcType")&&!i[x]&&(i[x]=u)}if((d=Object.keys(i))!=null&&d.length){const g=[];for(const b in i)g.push(new Promise((S,c)=>{o.post(`${l}/diagram/hrpIndexWithComplex`,{pageId:t,indexGuid:b,indexCode:i[b],dataSourceId:m}).then(y=>{var F;const{success:A,data:L=[]}=y.data;A&&((F=L==null?void 0:L.dataViewColumns)!=null&&F.length)?S(L.dataViewColumns):c(L)}).catch(y=>{c(y)})}));return(await Promise.all(g)).reduce((b,S)=>b.filter(c=>S.find(y=>y.typeGuid===c.typeGuid))).filter(b=>b.typeGuid)}}catch{}return[]}const je=["table","bar","combograph","line","pie","radar","scatter","list","circulate"];let be=new Map;const _e=["keyValue","conditionKey","conditionLabel","conditionName","conditionValueType","customValue","id","keyName"],re=e=>be.get(e),ze=(e,o={})=>{const{around:l,unit:t,id:m}=e;let d="";const{pageMode:a="",componentList:s=[]}=(o==null?void 0:o.graphicConfig)||{};let r=null,n=null;if(a==="design"){const f=s==null?void 0:s.find(c=>c.id===m);if(!f)return[];const{interval:i,intervalUnit:g,startTime:u,endTime:x,operate:b,useCurrentTime:S}=f||{};if(S&&(r=W().subtract(i,g),n=W()),u&&(r=W(u)),x&&(n=W(x)),b){const{type:c,value:y,mode:A}=b;switch(c){case"add":r=r&&r.add(y,A),n=n&&n.add(y,A);break;case"minus":r=r&&r.subtract(y,A),n=n&&n.subtract(y,A)}}}else{const f=re(m)||{};p.unref(f.startTime)&&(r=W(p.unref(f.startTime))),p.unref(f.endTime)&&(n=W(p.unref(f.endTime)))}if(r&&n){const f=n.diff(r,t.toLowerCase());d=`${l==="before"?"-":""}${f+1}`}return d?[d]:[]},Se=(e,o)=>{if(o)K(e,"indexCode")&&(e.hrpIndexCode=e.indexCode,delete e.indexCode),K(e,"indexCodeNum")&&(e.hrpIndexCodeNum=e.indexCodeNum,delete e.indexCodeNum),K(e,"dataType")&&delete e.dataType;else{const{calcWays:l=[],dateCalcTypes:t=[],activeKey:m,componentId:d=""}=e;if(m===5&&(l!=null&&l.length)&&(t!=null&&t.length)&&d){const a=l[0].split("-");(a==null?void 0:a.length)>1&&a[0]==="rangeValue"&&(e.calcWays=ze({around:a[1],unit:t[0],id:d})),delete e.radioValue}if(K(e,"dataType")){if(e.fieldType==="DATE"&&(e.label=e.fieldName),e.dataType==="component")if(e.fieldValue==="PARENT"){let a=e.modelKey;a&&e.prop&&(a+=`-${e.prop}`),e.fieldValue="${"+a+"}"}else e.fieldValue="${"+e.fieldValue+"}";delete e.dataType}K(e,"activeKey")&&delete e.activeKey,K(e,"radioValue")&&delete e.radioValue,K(e,"indexCode")&&(e.hrpIndexCode=e.indexCode,delete e.indexCode),K(e,"indexCodeNum")&&(e.hrpIndexCodeNum=e.indexCodeNum,delete e.indexCodeNum),e.dataType!=="component"&&e.useCurrentTime&&(e.fieldValue=W().format(e.dateFormat)),K(e,"modelKey")&&delete e.modelKey,K(e,"prop")&&delete e.prop,delete e.useCurrentTime}},Z=(e,o)=>{const l=[];return e!=null&&e.length&&ne.cloneDeep(e).forEach(t=>{if(t.join&&t.conditions){const m=!t.conditions.some(d=>d.join&&d.conditions);t.conditions.forEach((d,a)=>{Se(d,o);const s={};if(a<t.conditions.length-1&&(s.join=t.join),m)l.push({...s,...d});else if(d.join&&d.conditions){const r=o?"sqlConditions":"conditions";l.push({[r]:Z([d],o),...s})}else l.push({...s,...d})})}else Se(t,o),l.push(t)}),l},ce=(e={},o)=>{if(e!=null&&e.sortCpnts&&o){const L=we(e);L&&(o.sort=L)}const{label:l,name:t,location:m,show:d,indexCode:a,indexCodeNum:s,calcType:r="COLUMN",builtInFormula:n,builtInValueSource:f,builtInCalcWay:i,formula:g,conditions:u,aggregate:x,distinct:b,dimByCount:S,dataTo:c}=e;let y;if(u&&(y=Z(u)),r==="COMPONENT"){const L={};return ae(L,f),{label:l.trim(),columnName:t,show:d,calcType:r,componentAlias:i,componentValue:L.fieldValue||null}}const A={label:l.trim(),columnName:t,location:m,show:d,calcType:c==="1"?"VIEW":r,hrpIndexCode:a,hrpIndexCodeNum:s,aggregate:x,builtInFormula:n,builtInValueSource:f,formula:g,conditions:y};if(n==="DATE_OFFSET"){const L=i.split("-");if((L==null?void 0:L.length)===3){let F=L[0];return L[2]==="before"&&L[0]!=="0"&&(F=`-${L[0]}`),{...A,calcWays:[F],dateCalcTypes:[L[1]]}}}else return t==="the_count"&&(A.calcType="AGGREGATE",A.distinct=!!b,A.typeGuid=S),{...A,builtInCalcWay:i}},$e=e=>{if(!e)return[];const o=ne.cloneDeep((e==null?void 0:e.controlList)||[]).filter(x=>x.conditionKey!=="parentCode"),{classificationList:l=[],rowHeaderList:t=[],dimensionList:m=[],seriesList:d=[],leftAxisList:a=[],rightAxisList:s=[],queryColumnList:r=[],indicators:n=[]}=e;Le(o);const f=[...l,...t,...m,...d,...a,...s,...r,...n],i=[];for(const x of f){const b=ie((x==null?void 0:x.conditions)||[]);if(b!=null&&b.length){const S=b.filter(c=>(c==null?void 0:c.dataType)==="component").map(c=>{const y={};return c!=null&&c.dateFormat&&(y.format=c.dateFormat),c.fieldValue==="PARENT"&&(y.id="PARENT",y.keyName=c.modelKey,y.modelKey=c.modelKey,y.prop=c.prop),{conditionKey:c.fieldName,conditionLabel:c.fieldName,conditionName:c.fieldName,conditionValueType:c.fieldType,id:c.componentId,keyName:c.fieldValue,rule:c.rule,notGlobal:!0,indexCode:c.indexCode,typeGuid:c.typeGuid,indexCodeNum:c.indexCodeNum,...y}});if(S!=null&&S.length)for(const c of S)i.find(y=>y.keyName===c.keyName)||i.push(c)}}const g=i.length,u=o;for(let x=0;x<g;x++){const b=i[x];if((b==null?void 0:b.conditionKey)==="parentCode")continue;const{id:S,keyName:c,prop:y,format:A,modelKey:L,dataType:F="component",customValue:V}=b,v=Ae(b);ae(v,S,{prop:y,dateFormat:A,modelKey:L,keyName:c}),F===""&&(v.fieldValue=V||""),u.push(v)}for(let x=u.length-1;x>=0;x--){const b=u[x];b.globalCondition||ie(u).find(c=>c.alias===b.alias&&c.globalCondition)&&u.splice(x,1)}return u};function Ae(e){const{id:o,keyName:l,conditionLabel:t,conditionKey:m,conditionValueType:d,prop:a,rule:s="NONE",notGlobal:r=!1,indexCode:n,typeGuid:f,indexCodeNum:i,dataType:g="component"}=e;let u=l||o;u&&a&&(u+=`-${a}`);let x=s;return x==="NONE"&&(["startTime","endTime"].includes(a)?x=a==="startTime"?"GREATER_EQUAL":"LESS_EQUAL":l!=null&&l.includes("startTime")?x=a==="GREATER_EQUAL":l!=null&&l.includes("endTime")?x=a==="LESS_EQUAL":x="EQUAL"),o==="PARENT"&&(u=e.modelKey,u&&a&&(u+=`-${a}`),x=s),{rule:x,label:t,fieldName:m,fieldValue:"",valueType:d,alias:u,globalCondition:!r,indexCode:n,typeGuid:f,indexCodeNum:i,dataType:g}}function Le(e){if(e!=null&&e.length)for(const o of e)if(o!=null&&o.conditions)Le(o.conditions);else{const{id:l,keyName:t,prop:m,modelKey:d,format:a,dataType:s="component",customValue:r}=o,n=Ae(o);ae(n,l,{prop:m,dateFormat:a,modelKey:d,keyName:t}),s===""&&(n.fieldValue=r||"");for(const f in n)o[f]=n[f];for(const f of _e)delete o[f]}}function He(e){const o=[];if(e!=null&&e.length){for(const l of e)if(l.variableName){const t={variateName:l.variableName,globalCondition:!1,valueType:l.variableType,alias:l.keyName||""};ae(t,l.id,{dateFormat:l.format,prop:l.dateTypeValue,keyName:l.keyName,operateType:l.operateType,operateMode:l.operateMode,operateValue:l.operateValue}),l.dataType===""&&(t.fieldValue=l.variableValue),l.format&&(t.dateFormat=l.format),l.label&&(t.label=l.label),o.push(t)}}return o}function ae(e,o,l){const{prop:t="",dateFormat:m="",modelKey:d="",keyName:a="",operateValue:s,operateMode:r,operateType:n}=l||{},f=d||a;if(o==="PARENT"&&f&&t){const y=window.config.record;let A=t,L=m;const F=t.match(/\{(.+?)\}/g);if(F!=null&&F.length){const V=F[0].slice(1,-1).trim();A=t.replace(F[0],""),L=V,e.dateFormat=L}if(y&&y[f]){const V=p.unref(y[f][A]);W.isDayjs(V)?e.fieldValue=V.format(L||"YYYY-MM-DD"):e.fieldValue=V}return}const i=re(o)||{},{value:g,format:u="YYYY-MM-DD",type:x="",useCurrentTime:b,RECORD:S}=i||{},c=m||u;if(Y(i.type,"date")){let y;if(b?g?y=p.unref(g):y=W():y=p.unref(g),s&&r&&n)switch(n){case"add":y=y.add(s,r);break;case"minus":y=y.subtract(s,r);break}e.fieldValue=y==null?void 0:y.format(c),e.dateFormat=c}else if(x==="ecanRangePicker"){let y=t;if(!t){const L=a&&a.split("-");L!=null&&L.length&&(y=L[L.length-1])}if(!y)return;let A=null;if(p.unref(i[y])&&(A=W(p.unref(i[y]))),s&&r&&n){if(s==="rangeValue"){if(i.startTime&&i.endTime){const L=p.unref(i.endTime).diff(p.unref(i.startTime),r)+1;switch(n){case"add":A=A&&A.add(L,r);break;case"minus":A=A&&A.subtract(L,r)}}}else if(!isNaN(+s))switch(n){case"add":A=A&&A.add(s,r);break;case"minus":A=A&&A.subtract(s,r)}}if(A&&(e.fieldValue=A==null?void 0:A.format(c)),y==="rangeValue"&&i.startTime&&i.endTime){const L=Ye(c);L&&(e.fieldValue=p.unref(i.endTime).diff(p.unref(i.startTime),L)+1)}e.dateFormat=c}else Y(x,je)?d&&S?e.fieldValue=S[d]:!d&&S?e.fieldValue=S.value:e.fieldValue=p.unref(g):e.fieldValue=p.unref(g)}const de=e=>{var o;if(e){const l=Array.isArray(e)?ne.cloneDeep(e):[ne.cloneDeep(e)];let t="",m=[];const d=[],a=[],s=[];for(const r of l){if(r.defaultCode&&(r.label=r.columnName,delete r.defaultCode),r.type==="CUSTOM"&&(m=r.customOrderColumns),t=r.type,d.push(r.label),(o=r.columnName)!=null&&o.includes("_ecanrepeat_")){const n=r.columnName.split("_ecanrepeat_");a.push(n[0])}else a.push(r.columnName);s.push(r.order)}return t!=="CUSTOM"&&(d==null?void 0:d.length)>1&&(t="COMBINATION"),t==="CUSTOM"?{label:d.join(","),columnName:a.join(","),type:t,customOrderColumns:m}:{label:d.join(","),columnName:a.join(","),order:s.join(","),type:t}}else return e},we=e=>{const{sortCpnts:o=[]}=e;let l,t="";for(const m of o){const d=re(m)||{},{type:a,RECORD:s}=d;if(Y(a,"image")&&Y(s==null?void 0:s.value,["asc","desc"])){t=s.value.toUpperCase();break}}return t&&(l={label:e.label,columnName:e.name,order:t,type:"NORMAL"}),l},Pe={formatIndicatorParams:(e,o={})=>{var Fe,ke,Ve,Ie,he,Me,ve,Ee,De;const{graphicConfig:l,type:t,globalModel:m,isGroupTable:d=!1}=e;m&&(be=m);let a=e.pageId;const s=Y(t,"pivottable");let{source:r,dataViewId:n,plugin:f="1",layer:i,chartType:g,classificationList:u=[],rowHeaderList:x=[],dimensionList:b=[],seriesList:S=[],leftAxisList:c=[],rightAxisList:y=[],queryColumnList:A=[],indicators:L=[],controlList:F=[],formFields:V={},variableList:v=[],variableConditions:ee=[],idxLibMode:fe,preview:me=!1,edvDataSetId:Ce}=l||{},I=[];if((l==null?void 0:l.pageMode)==="design"?(I=(l.sqlConditions??[]).map(w=>{const C={};if(!K(w,"globalCondition")&&!w.join&&(C.globalCondition=!0),!w.join){const T=w.rule||"EQUAL";C.rule=T==="NONE"?"EQUAL":T}return{...w,...C}}),ee!=null&&ee.length&&(I=I.concat(ee))):(I=$e(l),v!=null&&v.length&&(I=I.concat(He(v)))),I!=null&&I.length){const w=I.filter(T=>T.globalCondition),C=I.filter(T=>!T.globalCondition);(w==null?void 0:w.length)>1&&(I=[{join:"&&",conditions:w},...C])}I!=null&&I.length&&(I=Z(I,"1")),i==null&&(Y(t,["table","card"])||Y(t,["list","circulate"])&&(u==null?void 0:u.length)>1?i="1":Y(t,["select","checkbox","radio"])?i="3":i="2");let z;const Te=[];let ye="";if(Array.isArray(u)&&u.length>0&&(!["ecanList","ecanCirculate"].includes(t)||(u==null?void 0:u.length)===1)){const w=u.length;for(let C=0;C<w;C++){const T=u[C]||{},{label:E="",name:D="",show:G=!1,sort:$,customGroup:Q,conditions:N,dateFormat:k,typeGuid:R="",truncations:M=[]}=T;if(G||w===1){ye=R,z={label:E.trim(),columnName:D,show:G,sort:we(T)||de($)||$,customGroup:Q,conditions:Z(N),typeGuid:R},k&&(z.dateFormat=k),D==="the_date"&&!z.dateFormat&&(z.dateFormat="YYYY-MM");const h={};if(Array.isArray(M)&&M.length>0){const U=M.length;for(let j=0;j<U;j++){const _=M[j]||{},{rule:H="",num:q=0,name:oe=""}=_;H&&q&&(h.num=q,h.rule=H,oe&&(h.otherGroupName=oe))}}if((Fe=Object.keys(h))!=null&&Fe.length&&(z.truncation=h),Y(t,["scatter","valueline"]))Te.push(z);else break}}}let pe;if(Array.isArray(S)&&S.length>0){const w=S.length;for(let C=0;C<w;C++){const T=S[C]||{},{label:E="",name:D="",show:G=!1,sort:$,customGroup:Q,conditions:N,typeGuid:k}=T;if(G||w===1){pe={label:E.trim(),columnName:D,show:G,sort:de($),customGroup:Q,conditions:Z(N),typeGuid:k};break}}}const B=[];c==null||c.forEach(w=>{w.location="LEFT",B.push(ce(w,z))}),y==null||y.forEach(w=>{w.location="RIGHT",B.push(ce(w,z))});let se=L;(Ve=(ke=o==null?void 0:o.pivotTableCal)==null?void 0:ke.indicators)!=null&&Ve.length&&(se=o.pivotTableCal.indicators),se==null||se.forEach(w=>{w.location="LEFT",B.push(ce(w,z))});const X=[];["ecanList","ecanCirculate"].includes(t)&&(u==null?void 0:u.length)>1&&(A=u),(he=(Ie=o==null?void 0:o.pivotTableCal)==null?void 0:Ie.dimensions)!=null&&he.length&&(A=o.pivotTableCal.dimensions),A==null||A.forEach(w=>{const{label:C,name:T,location:E,show:D,indexCode:G,sort:$,typeGuid:Q,indexCodeNum:N,dateFormat:k,conditions:R}=w;let M=de($);if(o.sort){const{field:U,order:j}=o.sort;let _=B.find(H=>H.label===U);!_&&C===U&&(_=w),_&&(M={columnName:_.columnName,label:o.sort.field,order:j.toUpperCase(),type:"NORMAL"})}const h={label:C,columnName:T,location:E,show:D,sort:M,calcType:"COLUMN",hrpIndexCode:G,hrpIndexCodeNum:N,conditions:Z(R),typeGuid:Q};k&&(h.dateFormat=k),T==="the_date"&&!h.dateFormat&&(h.dateFormat="YYYY-MM"),X.push(h)});let te=[],le=[];if(Array.isArray(x)&&x.length>0?le=x:Array.isArray(b)&&b.length>0&&(le=b),le!=null&&le.length){const w=le.length;for(let C=0;C<w;C++){const T=le[C]||{},{label:E="",name:D="",show:G=!1,sort:$,customGroup:Q,conditions:N,truncations:k,typeGuid:R="",dateFormat:M}=T;let h=de($);if(o.sort){const{field:_,order:H}=o.sort;let q=B.find(oe=>oe.label===_);!q&&T.label===_&&(q=T),q&&(h={columnName:q.columnName,label:o.sort.field,order:H.toUpperCase(),type:"NORMAL"})}const U={label:E.trim(),columnName:D,show:G,sort:h,customGroup:Q,conditions:Z(N),typeGuid:R};M&&(U.dateFormat=M),D==="the_date"&&!U.dateFormat&&(U.dateFormat="YYYY-MM");const j={};if(Array.isArray(k)&&k.length>0){const _=k.length;for(let H=0;H<_;H++){const q=k[H]||{},{rule:oe="",num:Ge=0,name:Re=""}=q;oe&&Ge&&(j.num=Ge,j.rule=oe,Re&&(j.otherGroupName=Re))}}(Me=Object.keys(j))!=null&&Me.length&&(U.truncation=j),te.push(U)}}let xe=[],Ne;if(o!=null&&o.pivotTableCal){let w=[];const{calc:C=[],filter:T=[],truncations:E=[],sorts:D=[],aggregateMethod:G=[],rowDimensionKeys:$=[],colDimensionKeys:Q=[]}=o.pivotTableCal;if(B.push(...C),T!=null&&T.length)for(const N of T){const{type:k,...R}=N;k==="indicators"?w=B:k==="dimension"&&(w=X);const M=w.find(h=>h.columnName===N.fieldName);M&&(M.conditions||(M.conditions=[]),M.conditions.push(R))}if(E!=null&&E.length)for(const N of E){const k=X.find(R=>R.columnName===N.key);k&&(k.truncation={num:N.num,rule:N.rule})}if(D!=null&&D.length)for(const N of D){const{fieldType:k,columnData:R,...M}=N;k==="indicators"?(w=B,Ne=R):k==="dimension"&&(w=X);const h=w.find(U=>U.label===M.label);h&&(h.sort={...M,columnName:h.columnName})}if((ve=Object.keys(G))!=null&&ve.length)for(const N in G){const k=X.find(R=>R.label===N);k&&((Ee=G[N])!=null&&Ee.length)&&(k.aggregateMethod=G[N])}te=[],xe=[];for(const N of X)$.includes(N.columnName)?te.push(N):Q.includes(N.columnName)&&xe.push(N)}if(Y(t,["text","proportion","counter"])?g="zb":Y(t,["valueline"])&&(g="valueline"),d||t==="card"){if(te.length===0||B.length===0)return;g="grouptable"}else{if(i==="1"&&X.length===0)return;if(i==="2"&&B.length===0)return;if(i==="3"&&(!ye&&r!=="EDV_DATA_SET"||!V.labelField||!V.valueField))return;if(i==="3"&&t==="ecanDataSelect"&&B.length===0)return}if(b!=null&&b.length&&(i="1",g="grouptable"),!a){const{pathname:w}=window==null?void 0:window.location;if(w){const C=w.split("/");C!=null&&C.length&&(a=C[C.length-1])}}let ge;if(!Y(t,["scatter","valueline"])&&((De=Object.keys(V))!=null&&De.length)){const w=ie(F).find(T=>T.conditionKey==="parentCode"),C={};if(w){const T=re(w.id)||{};if(T!=null&&T.itemCodes)C.parentItemCodes=T.itemCodes;else return}t==="ecanDataSelect"&&(C.indicatorList=B.filter(T=>T.show)),r==="EDV_DATA_SET"&&(C.edvDataSetId=Ce),ge={url:"/diagram/formData",source:r,dataViewId:n,plugin:"4",layer:i,chartType:"normalSelect",rangeIndexTypeGuid:ye,type:t==="ecanDataSelect"?"normalSelectData":"normalSelect",labelField:V.labelField,valueField:V.valueField,pageId:a,sqlConditions:I,idxLibMode:"WITH_DATE_DIM_TABLE",keyName:e.keyName,...C}}else{let w={};Y(t,["scatter","valueline"])?w={classifications:Te}:w={classification:z},ge={url:"/diagram",source:r,dataViewId:n,plugin:s?"5":f,layer:i,chartType:s?"pivot-table":g,series:pe,indicatorList:B,queryColumns:d?[]:X,pageFlag:!0,pageId:a,edvDataSetId:Ce||"",sqlConditions:I.map(C=>{const{fieldValue:T}=C,E={};return T&&Array.isArray(T)&&(E.fieldValue=JSON.stringify(T)),{...C,...E}}),idxLibMode:fe,preview:me,rowHeaders:te,keyName:e.keyName,columnData:Ne,columnHeaders:xe,...w}}return ge}},Qe=(e=[],o)=>{let{name:l="name",types:t=[]}=o||{};l=(l==null?void 0:l.trim())||l;const m=new Set,d=new Map,a=e.length,s=t.length;if(a===1){const f=[];for(let g=0;g<s;g++){const u=t[g],{label:x,value:b}=u,S={...e[0],value:e[0][b]};m.add(x),f.push(S)}const i=e[0][l]||"";d.set(i,f)}else for(let f=0;f<a;f++){const i=e[f],g=i[l];m.add(g);for(let u=0;u<s;u++){const x=t[u],{label:b,value:S}=x,c={...i,value:i[S]};if(d.has(b)){const y=d.get(b);y.push(c),d.set(b,y)}else d.set(b,[c])}}const r=Array.from(m),n=[];for(const[f,i]of d)n.push({name:f,data:i});return{dimensions:r,dataset:n}},qe=(e,o)=>{let{name:l="name",value:t="value",type:m="type"}=o||{};l=l==null?void 0:l.trim(),t=t==null?void 0:t.trim(),m=m==null?void 0:m.trim();const d=new Set,a=new Map,s=e.length;for(let f=0;f<s;f++){const i=e[f],g=i[l]||"",u=i[t]||"",x=i[m]||"";if(d.add(g),a.has(x)){const b=a.get(x);b.push({name:g,value:u,...i}),a.set(x,b)}else a.set(x,[{name:g,value:u,...i}])}const r=Array.from(d),n=[];for(const[f,i]of a)n.push({name:f,data:i});return{dimensions:r,dataset:n}},O=(e,o)=>{var m;if(console.log("This is useValueFormatter"),e==null)return o;const l=e.match(/\{.*\}/g);if(l==null||l.length===0)return o;const t=l.length;for(let d=0;d<t;d++){const a=l[d];if(a==null||a==="")break;let s=(m=a.slice(1,-1))==null?void 0:m.trim();s=s==null?void 0:s.replace(/value/g,o);try{let r=s;(/\(.*\)/g.test(s)||/[+/\\*]/g.test(s))&&(r=ue(s)),e=e.replace(a,r)}catch{e=e.replace(a,s)}}return e};function Xe(e){return e.isShowMarkLine?{markLine:{data:[{type:e.markLineType}]}}:{}}const Je=(e,o,l)=>{switch(e.type){case"bar":return Ze(e,o,l);case"line":return Oe(e,o,l);case"pie":return el(e,o,l);case"comboGraph":return ll(e,o,l);default:return{}}},Ze=(e,o,l)=>{const t=e.yAxisLabelFormatter,m=e.xAxisLabelFormatter,{dimensions:d=[],dataset:a=[]}=o,s=p.computed(()=>{const{gradientShow:n,gradientColors:f,gradientOffset:i,barBorderRadius:g}=e,u=a,x=u.length,b=[];for(let S=0;S<x;S++){const c={...u[S],type:"bar",barWidth:e.barWidth,showBackground:e.showBarBackground},{isStack:y,stackColumns:A}=e;if(y&&A.includes(u[S].name||!A)&&(c.stack="stack"),c.label={show:e.labelShow,fontSize:e.labelFontSize,position:e.labelPosition,color:e.labelColor,width:e.labelWidth,overflow:e.labelOverflow,formatter:L=>{let F="",V=e.labelFormatter;V===""&&(V="{c}");const{seriesName:v,name:ee,value:fe,data:me}=L||{};return F+=J(V,{textData:{name:ee,value:fe,a:v,b:ee,c:fe||0,...me}},{useNewline:!0,useSpace:!0}),F}},c.itemStyle={},n&&(c.itemStyle={color:{x:e.isUseHorizontalAxis?1:0,y:0,x2:0,y2:e.isUseHorizontalAxis?0:1,colorStops:[{offset:0,color:e.colors[S]},{offset:i,color:f[S]},{offset:1,color:f[S]}]}}),g){const L=g.split(",");if(L!=null&&L.length){const F=[];for(const V of L){const v=parseFloat(V);isNaN(v)||F.push(v)}c.itemStyle.barBorderRadius=F}}e.isShowMarkLine&&(c.markLine={data:[{type:e.markLineType}]}),b.push(c)}return b}),r=p.computed(()=>d.map(n=>{let f={};return n&&typeof n=="object"?f={...n,textStyle:{fontSize:l}}:f={value:n,textStyle:{fontSize:l}},f}));return{tooltip:{trigger:"axis",show:e.tooltipShow,formatter:n=>{const f=n.length;let i="",g=e.tooltipFormatter;g===""&&(g="{marker} {a} {c}");for(let u=0;u<f;u++){const{marker:x,seriesName:b,name:S,value:c,data:y}=n[u]||{};if(u===0){let A=S;typeof S=="string"&&S[0]==="0"&&!isNaN(+S)&&(A=(+S).toString()),i+=`${O(m,A)}<br/>`}i+=J(g,{textData:{marker:x,name:S,value:c,Qfw:Ue,a:b,b:S,c:c||0,...y}},{useNewline:!0,useSpace:!0}),i+="<br/>"}return i},textStyle:{color:e.tooltipTextStyleColor,fontSize:l},position:e.tooltipPosition||void 0,backgroundColor:e.tooltipBackgroundColor||"#fff"},legend:{type:e.legendScroll?"scroll":"plain",width:e.legendWidth,height:e.legendHeight,show:e.legendShow,orient:e.legendOrient,top:e.legendTop,left:e.legendLeft,textStyle:{rich:{text:{width:e.legendTextWidth,color:e.legendTextStyleColor,fontSize:e.legendFontSize}}},itemHeight:e.legendItemHeight,itemWidth:e.legendItemWidth,itemGap:e.legendItemGap,data:a.map((n,f)=>({name:n.name,itemStyle:{color:e.colors[f]},icon:e.legendType})),formatter:n=>Ke(e.legendFormatter,{name:n})},xAxis:{type:e.isUseHorizontalAxis?"value":"category",data:e.isUseHorizontalAxis?null:p.unref(r),inverse:e.isUseHorizontalAxis?e.xAxisInverse:e.axisInverse,minInterval:e.xAxisMinInterval,splitLine:{show:e.xAxisSplitLineShow,lineStyle:{color:e.xAxisSplitLineStyleColor,type:e.xAxisSplitLineType},interval:e.xAxisSplitLineInterval},splitArea:{show:e.xAxisSplitAreaShow},axisLabel:{color:e.xAxisLabelColor,interval:e.xAxisLabelInterval||0,rotate:e.xAxisLabelRotate,width:e.xAxisLabelWidth,overflow:e.xAxisLabelOverflow,fontSize:e.xAxisLabelFontSize,formatter(n){return typeof n=="string"&&n[0]==="0"&&!isNaN(+n)&&(n=(+n).toString()),O(m,n)}},axisLine:{show:e.xAxisLineShow,lineStyle:{color:e.xAxisLineStyleColor}},axisTick:{show:e.xAxisTickShow},name:e.xAxisName,nameTextStyle:{fontSize:e.xAxisLabelFontSize,color:e.xAxisLabelColor,align:"left"},max:e.xAxisMaxValue||null},yAxis:{type:e.isUseHorizontalAxis?"category":"value",data:e.isUseHorizontalAxis?p.unref(d):null,inverse:e.isUseHorizontalAxis?e.axisInverse:e.yAxisInverse,minInterval:e.yAxisMinInterval,splitLine:{show:e.yAxisSplitLineShow,lineStyle:{color:e.yAxisSplitLineStyleColor,type:e.yAxisSplitLineType}},splitArea:{show:e.yAxisSplitAreaShow},axisLabel:{show:e.yAxisLabelShow,fontSize:e.yAxisLabelFontSize,color:e.yAxisLabelColor,rotate:e.yAxisLabelRotate,width:e.yAxisLabelWidth,overflow:e.yAxisLabelOverflow,formatter(n){return O(t,n)}},axisLine:{show:e.yAxisLineAlwaysDisplay,lineStyle:{color:e.yAxisLineStyleColor}},name:e.yAxisName,nameTextStyle:{fontSize:e.yAxisLabelFontSize,color:e.yAxisLabelColor,align:"right"},max:e.yAxisMaxValue||null},series:p.unref(s)}},Oe=(e,o,l)=>{const t=e.yAxisLabelFormatter,m=e.xAxisLabelFormatter,{dimensions:d=[],dataset:a=[]}=o,s=p.computed(()=>d.map(n=>{let f={};return n&&typeof n=="object"?f={...n,textStyle:{fontSize:l}}:f={value:n,textStyle:{fontSize:l}},f})),r=p.computed(()=>{const n=[],f=a.length;for(let i=0;i<f;i++){const g={};e.shadowColor&&(g.shadowColor=e.shadowColor,g.shadowBlur=e.shadowBlur,g.shadowOffsetY=e.shadowOffsetY,g.shadowOffsetX=e.shadowOffsetX),n.push({type:"line",...a[i],symbolSize:e.symbolSize,smooth:e.smooth,areaStyle:{color:e.areaGradientShow?{type:"linear",x:0,y:0,x2:0,y2:1,colorStops:[{offset:0,color:e.colors[i]},{offset:1,color:e.areaGradientColor||"transparent"}],global:!1}:e.colors[i],opacity:e.areaStyleOpacity},lineStyle:{width:e.lineStyleWidth,...g},...Xe(e)})}return n});return{tooltip:{trigger:"axis",show:e.tooltipShow,formatter:n=>{const f=n.length;let i="",g=e.tooltipFormatter;g===""&&(g="{marker} {a} {c}");for(let u=0;u<f;u++){const{marker:x,seriesName:b,name:S,value:c,data:y}=n[u]||{};u===0&&(i+=`${S}<br/>`),i+=J(g,{textData:{marker:x,name:S,value:c,a:b,b:S,c,...y}},{useNewline:!0,useSpace:!0}),i+="<br/>"}return i},textStyle:{color:e.tooltipTextStyleColor,fontSize:l.value},position:e.tooltipPosition||void 0,backgroundColor:e.tooltipBackgroundColor||"#fff"},xAxis:{name:e.xAxisName,type:"category",data:p.unref(s),minInterval:e.xAxisMinInterval,splitLine:{show:e.xAxisSplitLineShow,lineStyle:{color:e.xAxisSplitLineStyleColor}},axisLabel:{color:e.xAxisLabelColor,interval:e.xAxisLabelInterval||0,rotate:e.xAxisLabelRotate,width:e.xAxisLabelWidth,overflow:e.xAxisLabelOverflow,formatter(n){return O(m,n)}},axisLine:{lineStyle:{color:e.xAxisLineStyleColor}},axisTick:{show:e.xAxisTickShow}},yAxis:{type:"value",name:e.yAxisName,minInterval:e.yAxisMinInterval,splitLine:{show:e.yAxisSplitLineShow,lineStyle:{color:e.yAxisSplitLineStyleColor}},axisLabel:{fontSize:l,color:e.yAxisLabelColor,formatter(n){return O(t,n)}},axisLine:{show:e.yAxisLineAlwaysDisplay,lineStyle:{color:e.yAxisLineStyleColor}}},legend:{show:e.legendShow,orient:e.legendOrient,top:e.legendTop,left:e.legendLeft,textStyle:{fontSize:l}},series:p.unref(r)}},el=(e,o,l)=>{const{dataset:t=[]}=o;let{data:m=[]}=t[0]||{};if(Array.isArray(e.colors)){const d=e.isUseLabelColors,a=e.colors;m=m.map((s,r)=>({label:d?{color:a[r]}:{},...s}))}return{title:{text:e.titleText,subtext:e.titleSubtext,textStyle:{fontSize:e.titleFontSize,fontWeight:e.fontWeight,color:e.titleColor},left:e.textAlign||"center"},tooltip:{show:e.tooltipShow,trigger:e.tooltipTrigger,formatter:d=>{const{marker:a,seriesName:s,name:r,value:n,percent:f,data:i}=d||{};return J(e.tooltipFormatter,{textData:{marker:a,name:r,value:n,percent:f,a:s,b:r,c:n,d:f,...i}},{useNewline:!0,useSpace:!0})},textStyle:{color:e.tooltipTextStyleColor||"#333"},backgroundColor:e.tooltipBackgroundColor||"#fff",borderColor:e.tooltipBorderColor||"#eee"},legend:{show:e.legendShow,orient:e.legendOrient,top:e.legendTop,left:e.legendLeft,textStyle:{color:e.legendTextStyleColor,fontSize:l===18?l:e.labelFontSize}},series:[{data:m,type:"pie",radius:[e.innerRadius,e.outerRadius],center:[e.centerLeft,e.centerTop],roseType:e.roseType,avoidLabelOverlap:!1,minAngle:e.minAngle,label:{show:e.labelPosition!=="center"&&e.labelShow,color:e.labelColor,fontSize:l===18?l:e.labelFontSize,position:e.labelPosition,formatter:Be(e.labelFormatter)},labelLine:{show:e.labelLineShow,length:e.labelLineLength,length2:e.labelLineLength2},emphasis:{itemStyle:{shadowBlur:10,shadowOffsetX:0,shadowColor:"rgba(0, 0, 0, 0.5)"},label:{}}}]}},ll=(e,o,l)=>{const{dimensions:t=[],dataset:m=[]}=o,d=p.computed(()=>t.map(r=>{let n={};return r&&typeof r=="object"?n={...r,textStyle:{fontSize:l}}:n={value:r,textStyle:{fontSize:l}},n})),a=p.computed(()=>{const r=[],n=m.length,f=e.seriesTypes;for(let i=0;i<n;i++){const g=f[i],{type:u,axisIndex:x}=g||{};let b={type:u,yAxisIndex:x,...m[i]};if(u==="line"){const S={};e.shadowColor&&(S.shadowColor=e.shadowColor,S.shadowBlur=e.shadowBlur,S.shadowOffsetY=e.shadowOffsetY,S.shadowOffsetX=e.shadowOffsetX),b={...b,symbolSize:e.symbolSize,smooth:e.smooth,itemStyle:{color:e.colors[i]},areaStyle:{color:e.areaGradientShow?{type:"linear",x:0,y:0,x2:0,y2:1,colorStops:[{offset:0,color:e.colors[i]},{offset:1,color:e.areaGradientColor||"transparent"}],global:!1}:e.colors[i],opacity:e.areaStyleOpacity},lineStyle:{width:e.lineStyleWidth,...S}}}if(u==="bar"){const{gradientShow:S,gradientColors:c,gradientOffset:y}=e,A={};if(e.barBorderRadius){const L=e.barBorderRadius.split(",");if(L!=null&&L.length){const F=[];for(const V of L){const v=parseFloat(V);isNaN(v)||F.push(v)}A.borderRadius=F}}S&&(A.color={x:0,y:0,x2:0,y2:1,colorStops:[{offset:0,color:e.colors[i]},{offset:y,color:c[i]},{offset:1,color:c[i]}]}),b={...b,barWidth:e.barWidth,itemStyle:A}}e.isShowMarkLine&&(b.markLine={data:[{type:e.markLineType}]}),r.push(b)}return r}),s=p.computed(()=>{const r=e.yAxis;return r==null?void 0:r.map((n,f)=>({type:"value",minInterval:e.yAxisMinInterval,splitLine:{show:f===0?e.yAxisLeftSplitLineShow:e.yAxisRightSplitLineShow,lineStyle:{color:e.yAxisSplitLineStyleColor,type:f===0?e.yAxisLeftSplitLineType:e.yAxisRightSplitLineType}},splitArea:{show:e.yAxisSplitAreaShow},axisLabel:{fontSize:l,show:e.yAxisLabelShow,color:e.yAxisLabelColor,formatter(i){return O(n.axisLabelFormatter,i)}},axisLine:{show:e.yAxisLineAlwaysDisplay,lineStyle:{color:e.yAxisLineStyleColor}},name:f===0?e.yAxisLeftName:e.yAxisRightName,nameTextStyle:{fontSize:e.yAxisLabelFontSize,color:e.yAxisLabelColor,align:f===0?"right":"left"},max:e.yAxisMaxValue||null}))});return{legend:{show:e.legendShow,orient:e.legendOrient,top:e.legendTop,left:e.legendLeft,textStyle:{color:e.legendTextStyleColor,fontSize:l}},tooltip:{trigger:"axis",show:e.tooltipShow,formatter:r=>{const n=r.length;let f="",i=e.tooltipFormatter;i===""&&(i="{marker} {a} {c}");const g=e.seriesTypes;for(let u=0;u<n;u++){const x=g[u],{tooltipFormatter:b}=x||{},{marker:S,seriesName:c,name:y,value:A,data:L}=r[u]||{};u===0&&(f+=`${y}<br/>`),f+=J(b||i,{textData:{marker:S,name:y,value:A,seriesName:c,a:c,b:y,c:A,...L}},{useNewline:!0,useSpace:!0}),f+="<br/>"}return f},textStyle:{color:e.tooltipTextStyleColor||"#333",fontSize:l},backgroundColor:e.tooltipBackgroundColor||"#fff",borderColor:e.tooltipBorderColor||"#eee"},xAxis:{name:e.xAxisName,minInterval:e.xAxisMinInterval,type:"category",data:p.unref(d),splitLine:{show:e.xAxisSplitLineShow,lineStyle:{color:e.xAxisSplitLineStyleColor}},axisLabel:{color:e.xAxisLabelColor,interval:e.xAxisLabelInterval||0,rotate:e.xAxisLabelRotate,width:e.xAxisLabelWidth,overflow:e.xAxisLabelOverflow},axisLine:{lineStyle:{color:e.xAxisLineStyleColor}},axisTick:{show:e.xAxisTickShow}},yAxis:p.unref(s),series:p.unref(a)}},ol=e=>({title:{text:e.titleText,subtext:e.titleSubtext,textStyle:{fontSize:e.titleFontSize,fontWeight:e.fontWeight,color:e.titleColor},left:e.textAlign||"center"},grid:{top:e.gridTop,bottom:e.gridBottom,left:e.gridLeft,right:e.gridRight,containLabel:e.gridContainLabel},color:e.colors}),tl={...Pe,runCode:ue,useTransformChartDataByAttrKey:Qe,useTransformChartDataByAttrValue:qe,useValueFormatter:O,useVariablesInText:J,transformProps:(e,o,l=12)=>({...ol(e),...Je(e,o,l)}),getIndicatorParams:We};P.default=tl,Object.defineProperties(P,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}})});
|
|
6
|
+
//# sourceMappingURL=index.umd.js.map
|