@ecan-bi/tools 1.0.7 → 1.0.8
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
|
@@ -1,77 +0,0 @@
|
|
|
1
|
-
interface DataItem {
|
|
2
|
-
name: string | number
|
|
3
|
-
value: string | number
|
|
4
|
-
type?: string
|
|
5
|
-
}
|
|
6
|
-
|
|
7
|
-
export type Data = DataItem []
|
|
8
|
-
|
|
9
|
-
export interface KeyTypeDataFieldNames {
|
|
10
|
-
name: string
|
|
11
|
-
types: {
|
|
12
|
-
label: string
|
|
13
|
-
value: string
|
|
14
|
-
} []
|
|
15
|
-
}
|
|
16
|
-
|
|
17
|
-
/**
|
|
18
|
-
* 图形转化数据
|
|
19
|
-
* @param data 数据
|
|
20
|
-
* @param dataFieldNames 字段映射
|
|
21
|
-
*/
|
|
22
|
-
export const useTransformChartDataByAttrKey = (data: Data = [], dataFieldNames: KeyTypeDataFieldNames) => {
|
|
23
|
-
let { name = 'name', types = [] } = dataFieldNames || {}
|
|
24
|
-
name = name?.trim() || name
|
|
25
|
-
const set = new Set()
|
|
26
|
-
const map = new Map<string, any []>()
|
|
27
|
-
const dataLen = data.length
|
|
28
|
-
const typesLen = types.length
|
|
29
|
-
// 只有一条记录
|
|
30
|
-
if (dataLen === 1) {
|
|
31
|
-
const vs: any = []
|
|
32
|
-
// data 为一个值取第一个
|
|
33
|
-
for (let i = 0; i < typesLen; i++) {
|
|
34
|
-
const type = types[i]
|
|
35
|
-
const { label, value } = type
|
|
36
|
-
const v = { ...data[0], value: data[0][value] }
|
|
37
|
-
set.add(label)
|
|
38
|
-
// 值列表
|
|
39
|
-
vs.push(v)
|
|
40
|
-
}
|
|
41
|
-
const n = data[0][name] || ''
|
|
42
|
-
map.set(n, vs)
|
|
43
|
-
} else {
|
|
44
|
-
for (let i = 0; i < dataLen; i++) {
|
|
45
|
-
const item = data[i]
|
|
46
|
-
const x = item[name]
|
|
47
|
-
set.add(x)
|
|
48
|
-
for (let j = 0; j < typesLen; j++) {
|
|
49
|
-
const type = types[j]
|
|
50
|
-
const { label, value } = type
|
|
51
|
-
const v = { ...item, value: item[value] }
|
|
52
|
-
if (map.has(label)) {
|
|
53
|
-
const m: any = map.get(label)
|
|
54
|
-
m.push(v)
|
|
55
|
-
map.set(label, m)
|
|
56
|
-
} else {
|
|
57
|
-
map.set(label, [v])
|
|
58
|
-
}
|
|
59
|
-
}
|
|
60
|
-
}
|
|
61
|
-
}
|
|
62
|
-
|
|
63
|
-
const dimensions = Array.from(set)
|
|
64
|
-
const dataset: { [key:string]:any } [] = []
|
|
65
|
-
for (const [name, data] of map) {
|
|
66
|
-
dataset.push({
|
|
67
|
-
name,
|
|
68
|
-
data
|
|
69
|
-
})
|
|
70
|
-
}
|
|
71
|
-
return {
|
|
72
|
-
dimensions,
|
|
73
|
-
dataset
|
|
74
|
-
}
|
|
75
|
-
}
|
|
76
|
-
|
|
77
|
-
export default useTransformChartDataByAttrKey
|
|
@@ -1,61 +0,0 @@
|
|
|
1
|
-
interface DataItem {
|
|
2
|
-
name: string | number
|
|
3
|
-
value: string | number
|
|
4
|
-
type?: string
|
|
5
|
-
}
|
|
6
|
-
|
|
7
|
-
export type Data = DataItem []
|
|
8
|
-
|
|
9
|
-
export interface ValueTypeDataFieldNames {
|
|
10
|
-
name: string
|
|
11
|
-
value: string
|
|
12
|
-
type: string
|
|
13
|
-
}
|
|
14
|
-
|
|
15
|
-
/**
|
|
16
|
-
* 图形转化数据
|
|
17
|
-
* @param data 数据
|
|
18
|
-
* @param dataFieldNames 字段映射
|
|
19
|
-
*/
|
|
20
|
-
export const useTransformChartDataByAttrValue = (data: Data, dataFieldNames?: ValueTypeDataFieldNames) => {
|
|
21
|
-
let { name = 'name', value = 'value', type = 'type' } = dataFieldNames || {}
|
|
22
|
-
// 处去字符串
|
|
23
|
-
name = name?.trim()
|
|
24
|
-
value = value?.trim()
|
|
25
|
-
type = type?.trim()
|
|
26
|
-
const set = new Set()
|
|
27
|
-
const map = new Map()
|
|
28
|
-
const len = data.length
|
|
29
|
-
for (let i = 0; i < len; i++) {
|
|
30
|
-
const item = data[i]
|
|
31
|
-
// x轴
|
|
32
|
-
const x = item[name] || ''
|
|
33
|
-
// y轴
|
|
34
|
-
const y = item[value] || ''
|
|
35
|
-
// 系列(类型)
|
|
36
|
-
const t = item[type] || ''
|
|
37
|
-
set.add(x)
|
|
38
|
-
if (map.has(t)) {
|
|
39
|
-
const arr = map.get(t)
|
|
40
|
-
// @ts-ignore
|
|
41
|
-
arr.push({ name: x, value: y, ...item })
|
|
42
|
-
map.set(t, arr)
|
|
43
|
-
} else {
|
|
44
|
-
// @ts-ignore
|
|
45
|
-
map.set(t, [{ name: x, value: y, ...item }])
|
|
46
|
-
}
|
|
47
|
-
}
|
|
48
|
-
const dimensions = Array.from(set)
|
|
49
|
-
const dataset: { [key:string]:any } [] = []
|
|
50
|
-
for (const [name, data] of map) {
|
|
51
|
-
dataset.push({
|
|
52
|
-
name,
|
|
53
|
-
data
|
|
54
|
-
})
|
|
55
|
-
}
|
|
56
|
-
return {
|
|
57
|
-
dimensions,
|
|
58
|
-
dataset
|
|
59
|
-
}
|
|
60
|
-
}
|
|
61
|
-
export default useTransformChartDataByAttrValue
|
|
@@ -1,28 +0,0 @@
|
|
|
1
|
-
import runCode from '../utils/runCode'
|
|
2
|
-
export const useValueFormatter = (formatter, value) => {
|
|
3
|
-
console.log('1234')
|
|
4
|
-
if (formatter == null) return value
|
|
5
|
-
const variables = (formatter).match(/\{.*\}/g)
|
|
6
|
-
if (variables == null || variables.length === 0) {
|
|
7
|
-
return value
|
|
8
|
-
}
|
|
9
|
-
const len = variables.length
|
|
10
|
-
for (let i = 0; i < len; i++) {
|
|
11
|
-
const variable = variables[i]
|
|
12
|
-
if (variable == null || variable === '') break
|
|
13
|
-
let statement = variable.slice(1, -1)?.trim()
|
|
14
|
-
statement = statement?.replace(/value/g, value)
|
|
15
|
-
try {
|
|
16
|
-
let result = statement
|
|
17
|
-
if ((/\(.*\)/g).test(statement) || (/[+/\\*]/g).test(statement)) {
|
|
18
|
-
result = runCode(statement)
|
|
19
|
-
}
|
|
20
|
-
formatter = formatter.replace(variable, result)
|
|
21
|
-
} catch (e) {
|
|
22
|
-
formatter = formatter.replace(variable, statement)
|
|
23
|
-
}
|
|
24
|
-
}
|
|
25
|
-
return formatter
|
|
26
|
-
}
|
|
27
|
-
|
|
28
|
-
module.exports = useValueFormatter
|
|
@@ -1,44 +0,0 @@
|
|
|
1
|
-
import runCode from '../utils/runCode'
|
|
2
|
-
export const useVariablesInText = (
|
|
3
|
-
formatter: string = '',
|
|
4
|
-
{ textData, codeData }: { textData?: { [key:string]: any }, codeData?: { [key:string]: any } } = {},
|
|
5
|
-
{ useNewline = false, useSpace = false } = {}
|
|
6
|
-
) => {
|
|
7
|
-
// 引入全局变量
|
|
8
|
-
const data = { ...textData }
|
|
9
|
-
const variables = (formatter || '').match(/\{(.+?)\}/g)
|
|
10
|
-
if (variables == null || variables.length === 0) {
|
|
11
|
-
return formatter
|
|
12
|
-
}
|
|
13
|
-
for (let i = 0; i < variables.length; i++) {
|
|
14
|
-
const variable = variables[i]
|
|
15
|
-
let statement = variable.slice(1, -1).trim()
|
|
16
|
-
const reg = /[\u4e00-\u9fa5a-z-_A-Z0-9]*/g
|
|
17
|
-
const textVariables: any = statement.match(reg)
|
|
18
|
-
for (let j = 0; j < textVariables.length; j++) {
|
|
19
|
-
const textVariable = textVariables[j]
|
|
20
|
-
const usedVariable = data[textVariable]
|
|
21
|
-
if (usedVariable != null) {
|
|
22
|
-
// 使用的变量
|
|
23
|
-
statement = statement.replace(textVariable, usedVariable)
|
|
24
|
-
}
|
|
25
|
-
}
|
|
26
|
-
if ((/\(.*\)/g).test(statement) || (/[+/\\*]/g).test(statement)) {
|
|
27
|
-
statement = runCode(statement, codeData)
|
|
28
|
-
}
|
|
29
|
-
formatter = formatter.replace(variable, statement)
|
|
30
|
-
}
|
|
31
|
-
// 替换换行
|
|
32
|
-
if (useNewline) {
|
|
33
|
-
formatter = formatter?.replace(/\n|\\n/g, '<br/>')
|
|
34
|
-
}
|
|
35
|
-
// 替换空格
|
|
36
|
-
if (useSpace) {
|
|
37
|
-
formatter = formatter?.replace(/\s{2,}?/g, ' ')
|
|
38
|
-
}
|
|
39
|
-
// 千分位格式化
|
|
40
|
-
formatter = formatter.replace(/Qfw\((.*?)\)/, (res, str) => textData?.Qfw ? textData?.Qfw(str) : str)
|
|
41
|
-
return formatter
|
|
42
|
-
}
|
|
43
|
-
|
|
44
|
-
export default useVariablesInText
|