@qxs-bns/components 0.0.50 → 0.0.52

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.
Files changed (59) hide show
  1. package/es/index.css +82 -0
  2. package/es/index.mjs +1 -1
  3. package/es/index.mjs.map +1 -1
  4. package/es/package.json.mjs +1 -1
  5. package/es/src/components.mjs +1 -1
  6. package/es/src/data-chart/index.mjs +1 -1
  7. package/es/src/data-chart/index.mjs.map +1 -1
  8. package/es/src/data-chart/src/analyze.mjs +1 -1
  9. package/es/src/data-chart/src/analyze.mjs.map +1 -1
  10. package/es/src/data-chart/src/components/area.vue.mjs +1 -1
  11. package/es/src/data-chart/src/components/bar.vue.mjs +1 -1
  12. package/es/src/data-chart/src/components/bar.vue.mjs.map +1 -1
  13. package/es/src/data-chart/src/components/card.vue.mjs +1 -1
  14. package/es/src/data-chart/src/components/line.vue.mjs +1 -1
  15. package/es/src/data-chart/src/data-chart.vue.mjs +1 -1
  16. package/es/src/data-chart/src/data-chart.vue.mjs.map +1 -1
  17. package/es/src/data-chart/src/utils/types.mjs +2 -0
  18. package/es/src/data-chart/src/utils/types.mjs.map +1 -0
  19. package/lib/index.cjs +1 -1
  20. package/lib/index.cjs.map +1 -1
  21. package/lib/index.css +82 -0
  22. package/lib/package.json.cjs +1 -1
  23. package/lib/src/components.cjs +1 -1
  24. package/lib/src/data-chart/index.cjs +1 -1
  25. package/lib/src/data-chart/index.cjs.map +1 -1
  26. package/lib/src/data-chart/src/analyze.cjs +1 -1
  27. package/lib/src/data-chart/src/analyze.cjs.map +1 -1
  28. package/lib/src/data-chart/src/components/area.vue.cjs +1 -1
  29. package/lib/src/data-chart/src/components/bar.vue.cjs +1 -1
  30. package/lib/src/data-chart/src/components/bar.vue.cjs.map +1 -1
  31. package/lib/src/data-chart/src/components/card.vue.cjs +1 -1
  32. package/lib/src/data-chart/src/components/line.vue.cjs +1 -1
  33. package/lib/src/data-chart/src/data-chart.vue.cjs +1 -1
  34. package/lib/src/data-chart/src/data-chart.vue.cjs.map +1 -1
  35. package/lib/src/data-chart/src/utils/types.cjs +2 -0
  36. package/lib/src/data-chart/src/utils/types.cjs.map +1 -0
  37. package/package.json +7 -5
  38. package/types/src/data-chart/index.d.ts +9 -7
  39. package/types/src/data-chart/index.d.ts.map +1 -1
  40. package/types/src/data-chart/src/components/bar.vue.d.ts.map +1 -1
  41. package/types/src/data-chart/src/data-chart.vue.d.ts +9 -2
  42. package/types/src/data-chart/src/data-chart.vue.d.ts.map +1 -1
  43. package/types/tsconfig.tsbuildinfo +1 -1
  44. package/es/node_modules/.pnpm/style-inject@0.3.0/node_modules/style-inject/dist/style-inject.es.mjs +0 -2
  45. package/es/node_modules/.pnpm/style-inject@0.3.0/node_modules/style-inject/dist/style-inject.es.mjs.map +0 -1
  46. package/es/src/data-chart/src/components/area.vue3.mjs +0 -2
  47. package/es/src/data-chart/src/components/area.vue3.mjs.map +0 -1
  48. package/es/src/data-chart/src/components/card.vue3.mjs +0 -2
  49. package/es/src/data-chart/src/components/card.vue3.mjs.map +0 -1
  50. package/es/src/data-chart/src/components/line.vue3.mjs +0 -2
  51. package/es/src/data-chart/src/components/line.vue3.mjs.map +0 -1
  52. package/lib/node_modules/.pnpm/style-inject@0.3.0/node_modules/style-inject/dist/style-inject.es.cjs +0 -2
  53. package/lib/node_modules/.pnpm/style-inject@0.3.0/node_modules/style-inject/dist/style-inject.es.cjs.map +0 -1
  54. package/lib/src/data-chart/src/components/area.vue3.cjs +0 -2
  55. package/lib/src/data-chart/src/components/area.vue3.cjs.map +0 -1
  56. package/lib/src/data-chart/src/components/card.vue3.cjs +0 -2
  57. package/lib/src/data-chart/src/components/card.vue3.cjs.map +0 -1
  58. package/lib/src/data-chart/src/components/line.vue3.cjs +0 -2
  59. package/lib/src/data-chart/src/components/line.vue3.cjs.map +0 -1
package/es/index.css ADDED
@@ -0,0 +1,82 @@
1
+ /* unplugin-vue-components disabled */
2
+ .data-chart-area-wrap[data-v-51660d7b] {
3
+ position: relative;
4
+ }
5
+ .data-chart-area-wrap .city-select[data-v-51660d7b] {
6
+ position: absolute;
7
+ top: 10px;
8
+ right: 100px;
9
+ z-index: 1;
10
+ width: 120px;
11
+ }
12
+ .data-chart-area-wrap .data-chart-area[data-v-51660d7b] {
13
+ height: 100%;
14
+ }
15
+ /* unplugin-vue-components disabled */
16
+ .data-chart-card[data-v-1c14c088] {
17
+ display: flex;
18
+ flex-direction: column;
19
+ }
20
+ .data-chart-card .title[data-v-1c14c088] {
21
+ margin: 0;
22
+ display: flex;
23
+ align-items: center;
24
+ justify-content: space-between;
25
+ padding: 0 5.5px;
26
+ line-height: 26px;
27
+ font-family: sans-serif;
28
+ font-size: 14px;
29
+ font-weight: 600;
30
+ color: #464646;
31
+ }
32
+ .data-chart-card .data-chart-card-grid-layout[data-v-1c14c088] {
33
+ display: grid;
34
+ grid-template-columns: repeat(auto-fill, minmax(300px, 1fr));
35
+ gap: 10px;
36
+ width: calc(100% - 3px);
37
+ }
38
+ .data-chart-card .data-chart-card-wrap[data-v-1c14c088] {
39
+ height: 100% !important;
40
+ }
41
+ .data-chart-card .data-chart-card-wrap .card-item[data-v-1c14c088] {
42
+ width: 100% !important;
43
+ }
44
+ .data-chart-card .card-item[data-v-1c14c088] {
45
+ position: relative;
46
+ background-repeat: no-repeat;
47
+ background-position: left top, right top;
48
+ background-size: contain, contain;
49
+ border: 2px solid #2196f3;
50
+ border-radius: 6px;
51
+ }
52
+ .data-chart-card .card-item .suffix-icon[data-v-1c14c088] {
53
+ position: absolute;
54
+ right: 1px;
55
+ bottom: calc(25% - 14px);
56
+ width: 20px;
57
+ font-size: 20px;
58
+ font-weight: bold;
59
+ color: #fff;
60
+ text-align: center;
61
+ }
62
+ .data-chart-card .card-item .card-title[data-v-1c14c088] {
63
+ padding-left: 15px;
64
+ margin-top: 10px;
65
+ margin-bottom: 5px;
66
+ overflow: hidden;
67
+ font-size: 16px;
68
+ font-weight: bold;
69
+ color: #2196f3;
70
+ text-overflow: ellipsis;
71
+ white-space: nowrap;
72
+ }
73
+ .data-chart-card .card-item .context[data-v-1c14c088] {
74
+ padding: 0 30px 10px 20px;
75
+ font-size: 14px;
76
+ color: #464646;
77
+ }
78
+ /* unplugin-vue-components disabled */
79
+ .data-chart-line[data-v-397864aa] {
80
+ width: 100%;
81
+ height: 100%;
82
+ }
package/es/index.mjs CHANGED
@@ -1,2 +1,2 @@
1
- import t from"./src/defaults.mjs";export{QxsDataChart}from"./src/data-chart/index.mjs";export{QxsFileUpload}from"./src/file-upload/index.mjs";export{QxsFixedActionBar}from"./src/fixed-action-bar/index.mjs";export{QxsImageUpload}from"./src/image-upload/index.mjs";export{QxsPhotoCropTool}from"./src/photo-crop-tool/index.mjs";export{QxsSubjectAction}from"./src/subject-action/index.mjs";export{QxsSubjectLayout}from"./src/subject-layout/index.mjs";export{QxsSubjectList}from"./src/subject-list/index.mjs";export{QxsSubjectType}from"./src/subject-type/index.mjs";export{QxsTinyMceEditor}from"./src/tiny-mce-editor/index.mjs";export{getObjectValue,keysMap}from"./src/data-chart/src/analyze.mjs";export{defaultChartOption,getGeoJsonData,iconList,setDefaultChartOption,showTypeText}from"./src/data-chart/src/utils/config.mjs";const o=t.install,e=t.version;export{t as default,o as install,e as version};
1
+ import o from"./src/defaults.mjs";export{QxsDataChart}from"./src/data-chart/index.mjs";export{QxsFileUpload}from"./src/file-upload/index.mjs";export{QxsFixedActionBar}from"./src/fixed-action-bar/index.mjs";export{QxsImageUpload}from"./src/image-upload/index.mjs";export{QxsPhotoCropTool}from"./src/photo-crop-tool/index.mjs";export{QxsSubjectAction}from"./src/subject-action/index.mjs";export{QxsSubjectLayout}from"./src/subject-layout/index.mjs";export{QxsSubjectList}from"./src/subject-list/index.mjs";export{QxsSubjectType}from"./src/subject-type/index.mjs";export{QxsTinyMceEditor}from"./src/tiny-mce-editor/index.mjs";const e=o.install,r=o.version;export{o as default,e as install,r as version};
2
2
  //# sourceMappingURL=index.mjs.map
package/es/index.mjs.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.mjs","sources":["../../../packages/components/index.ts"],"sourcesContent":["import installer from './src/defaults'\n\nexport * from './src/components'\n\nexport const install = installer.install\nexport const version = installer.version\nexport default installer\n"],"names":["install","installer","version"],"mappings":"qzBAIaA,MAAAA,EAAUC,EAAUD,QACpBE,EAAUD,EAAUC"}
1
+ {"version":3,"file":"index.mjs","sources":["../../../packages/components/index.ts"],"sourcesContent":["import installer from './src/defaults'\n\nexport * from './src/components'\n\nexport const install = installer.install\nexport const version = installer.version\nexport default installer\n"],"names":["install","installer","version"],"mappings":"+mBAIaA,MAAAA,EAAUC,EAAUD,QACpBE,EAAUD,EAAUC"}
@@ -1,2 +1,2 @@
1
- var r="0.0.50";export{r as version};
1
+ var r="0.0.52";export{r as version};
2
2
  //# sourceMappingURL=package.json.mjs.map
@@ -1,2 +1,2 @@
1
- export{QxsDataChart}from"./data-chart/index.mjs";export{QxsFileUpload}from"./file-upload/index.mjs";export{QxsFixedActionBar}from"./fixed-action-bar/index.mjs";export{QxsImageUpload}from"./image-upload/index.mjs";export{QxsPhotoCropTool}from"./photo-crop-tool/index.mjs";export{QxsSubjectAction}from"./subject-action/index.mjs";export{QxsSubjectLayout}from"./subject-layout/index.mjs";export{QxsSubjectList}from"./subject-list/index.mjs";export{QxsSubjectType}from"./subject-type/index.mjs";export{QxsTinyMceEditor}from"./tiny-mce-editor/index.mjs";export{getObjectValue,keysMap}from"./data-chart/src/analyze.mjs";export{defaultChartOption,getGeoJsonData,iconList,setDefaultChartOption,showTypeText}from"./data-chart/src/utils/config.mjs";
1
+ export{QxsDataChart}from"./data-chart/index.mjs";export{QxsFileUpload}from"./file-upload/index.mjs";export{QxsFixedActionBar}from"./fixed-action-bar/index.mjs";export{QxsImageUpload}from"./image-upload/index.mjs";export{QxsPhotoCropTool}from"./photo-crop-tool/index.mjs";export{QxsSubjectAction}from"./subject-action/index.mjs";export{QxsSubjectLayout}from"./subject-layout/index.mjs";export{QxsSubjectList}from"./subject-list/index.mjs";export{QxsSubjectType}from"./subject-type/index.mjs";export{QxsTinyMceEditor}from"./tiny-mce-editor/index.mjs";
2
2
  //# sourceMappingURL=components.mjs.map
@@ -1,2 +1,2 @@
1
- import{withInstall as t}from"../withInstall.mjs";import o from"./src/data-chart.vue.mjs";export{defaultChartOption,getGeoJsonData,iconList,setDefaultChartOption,showTypeText}from"./src/utils/config.mjs";const s=t(o);export{s as QxsDataChart,s as default};
1
+ import{withInstall as t}from"../withInstall.mjs";import r from"./src/data-chart.vue.mjs";const a=t(r);export{a as QxsDataChart,a as default};
2
2
  //# sourceMappingURL=index.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.mjs","sources":["../../../../../packages/components/src/data-chart/index.ts"],"sourcesContent":["import { withInstall } from '../withInstall'\nimport component from './src/data-chart.vue'\n\nexport * from './src/analyze'\nexport * from './src/utils/types'\nexport * from './src/utils/config'\n\nconst QxsDataChart = withInstall(component)\n\nexport {\n QxsDataChart,\n}\nexport default QxsDataChart\n"],"names":["QxsDataChart","withInstall","component"],"mappings":"2MAOA,MAAMA,EAAeC,EAAYC"}
1
+ {"version":3,"file":"index.mjs","sources":["../../../../../packages/components/src/data-chart/index.ts"],"sourcesContent":["import { withInstall } from '../withInstall'\n\nimport component from './src/data-chart.vue'\n\nconst QxsDataChart = withInstall(component)\n\nexport {\n QxsDataChart,\n}\nexport default QxsDataChart\n"],"names":["QxsDataChart","withInstall","component"],"mappings":"yFAIA,MAAMA,EAAeC,EAAYC"}
@@ -1,2 +1,2 @@
1
- function e(e,l){return l.reduce(((e,l)=>e?e[l]:void 0),e)}const l={"描述性分析":{"平均值":{handler:e=>{let{sourceData:l,dealJson:a}=e;const{dealKey:t}=a,r=l.sort(((e,l)=>Number(l[t])-Number(e[t])));return(r.reduce(((e,l)=>e+Number(l[t])),0)/r.length).toFixed(2)||""}},"中位数":{dealOptSchema:[{label:"目标值类型",cascaderProps:{value:"label",label:"label"},select:[{label:"值"},{label:"名字"}],interactionType:"select"}],handler:e=>{let{sourceData:l,dealJson:a}=e;const{dealKey:t,source:r,dealOpt:u}=a,n=u["目标值类型"]?.keyPath,c=l.sort(((e,l)=>Number(l[t])-Number(e[t])));return c[Math.floor(c.length/2)]["值"===n?t:"名字"===n?r:""]||""}},"排序":{dealOptSchema:[{label:"排序方式",cascaderProps:{value:"label",label:"label"},select:[{label:"默认",children:[{label:"第几名",valueVerify:{type:"number",default:1}},{label:"范围",valueVerify:{type:"number[]",default:[1,2]}}]},{label:"升序",children:[{label:"第几名",valueVerify:{type:"number",default:1}},{label:"范围",valueVerify:{type:"number[]",default:[1,2]}}]},{label:"降序",children:[{label:"第几名",valueVerify:{type:"number",default:1}},{label:"范围",valueVerify:{type:"number[]",default:[1,2]}}]}],interactionType:"input"},{label:"目标值类型",cascaderProps:{value:"label",label:"label"},select:[{label:"值"},{label:"占比"},{label:"名字"}],interactionType:"select"}],handler:e=>{let{sourceData:l,dealJson:a}=e;const{dealKey:t,source:r,dealOpt:u}=a;let n="";const c=u["目标值类型"].keyPath;let b=[];if(b=u["排序方式"].keyPath.includes("默认")?l:l.sort(((e,l)=>u["排序方式"].keyPath.includes("升序")?Number(e[t])-Number(l[t]):u["排序方式"].keyPath.includes("降序")?Number(l[t])-Number(e[t]):0)),u["排序方式"].keyPath.includes("第几名")){const e=b[u["排序方式"].value-1]||{},l="值"===c?t:"名字"===c?r:"占比"===c?t:"";if(u["目标值类型"].keyPath.includes("占比")){const a=b.reduce(((e,a)=>e+Number(a[l])),0);n=e[l]?`${(Number(e[l])/a*100).toFixed(2)}%`:""}else n=e[l]||""}else if(u["排序方式"].keyPath.includes("范围")){n=b.slice(u["排序方式"].value[0]-1,u["排序方式"].value[1]).map((e=>e["值"===c?t:"名字"===c?r:""])).join("、").replace(/、([^、]+)$/,"和$1")}return n||""}}},"趋势分析":{"整体趋势":{handler:e=>{let{sourceData:l,dealJson:a}=e;const t=l.map((e=>e[a.dealKey])),r=t.length;let u=0,n=0,c=0,b=0;for(let e=0;e<r;e++)u+=e,n+=Number(t[e]),c+=e*Number(t[e]),b+=e*e;const s=(r*c-u*n)/(r*b-u*u);return s>0?"增长":s<0?"下降":"平稳"}}}};export{e as getObjectValue,l as keysMap};
1
+ function e(e,l){return l?.reduce(((e,l)=>e?e[l]:void 0),e)}const l={"描述性分析":{"平均值":{handler:e=>{let{sourceData:l,dealJson:a}=e;const{dealKey:t}=a,r=l.sort(((e,l)=>Number(l[t])-Number(e[t])));return(r.reduce(((e,l)=>e+Number(l[t])),0)/r.length).toFixed(2)||""}},"中位数":{dealOptSchema:[{label:"目标值类型",cascaderProps:{value:"label",label:"label"},select:[{label:"值"},{label:"名字"}],interactionType:"select"}],handler:e=>{let{sourceData:l,dealJson:a}=e;const{dealKey:t,source:r,dealOpt:u}=a,n=u["目标值类型"]?.keyPath,c=l.sort(((e,l)=>Number(l[t])-Number(e[t])));return c[Math.floor(c.length/2)]["值"===n?t:"名字"===n?r:""]||""}},"排序":{dealOptSchema:[{label:"排序方式",cascaderProps:{value:"label",label:"label"},select:[{label:"默认",children:[{label:"第几名",valueVerify:{type:"number",default:1}},{label:"范围",valueVerify:{type:"number[]",default:[1,2]}}]},{label:"升序",children:[{label:"第几名",valueVerify:{type:"number",default:1}},{label:"范围",valueVerify:{type:"number[]",default:[1,2]}}]},{label:"降序",children:[{label:"第几名",valueVerify:{type:"number",default:1}},{label:"范围",valueVerify:{type:"number[]",default:[1,2]}}]}],interactionType:"input"},{label:"目标值类型",cascaderProps:{value:"label",label:"label"},select:[{label:"值"},{label:"占比"},{label:"名字"}],interactionType:"select"}],handler:e=>{let{sourceData:l,dealJson:a}=e;const{dealKey:t,source:r,dealOpt:u}=a;let n="";const c=u["目标值类型"].keyPath;let b=[];if(b=u["排序方式"].keyPath.includes("默认")?l:l.sort(((e,l)=>u["排序方式"].keyPath.includes("升序")?Number(e[t])-Number(l[t]):u["排序方式"].keyPath.includes("降序")?Number(l[t])-Number(e[t]):0)),u["排序方式"].keyPath.includes("第几名")){const e=b[u["排序方式"].value-1]||{},l="值"===c?t:"名字"===c?r:"占比"===c?t:"";if(u["目标值类型"].keyPath.includes("占比")){const a=b.reduce(((e,a)=>e+Number(a[l])),0);n=e[l]?`${(Number(e[l])/a*100).toFixed(2)}%`:""}else n=e[l]||""}else if(u["排序方式"].keyPath.includes("范围")){n=b.slice(u["排序方式"].value[0]-1,u["排序方式"].value[1]).map((e=>e["值"===c?t:"名字"===c?r:""])).join("、").replace(/、([^、]+)$/,"和$1")}return n||""}}},"趋势分析":{"整体趋势":{handler:e=>{let{sourceData:l,dealJson:a}=e;const t=l.map((e=>e[a.dealKey])),r=t.length;let u=0,n=0,c=0,b=0;for(let e=0;e<r;e++)u+=e,n+=Number(t[e]),c+=e*Number(t[e]),b+=e*e;const s=(r*c-u*n)/(r*b-u*u);return s>0?"增长":s<0?"下降":"平稳"}}}};export{e as getObjectValue,l as keysMap};
2
2
  //# sourceMappingURL=analyze.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"analyze.mjs","sources":["../../../../../../packages/components/src/data-chart/src/analyze.ts"],"sourcesContent":["import type { EChartData } from './utils/types'\n\n// 根据路径获取对象的值\nexport function getObjectValue(obj: any, pathArr: string[]) {\n return pathArr.reduce((acc, key) => (acc ? acc[key] : undefined), obj)\n}\n\n// 谁 是什么 的分析\ninterface IHandlerFunction {\n handler?: ({ sourceData, dealJson }: { sourceData: EChartData['data'], dealJson: any }) => string | number\n dealOptSchema?: {\n label: string\n cascaderProps: {\n value: string\n label: string\n }\n select: any[]\n interactionType?: 'select' | 'input'\n }[]\n}\nexport interface IkeysMap {\n [key: string]: IHandlerFunction | IkeysMap\n}\nexport const keysMap: IkeysMap = {\n 描述性分析: {\n 平均值: {\n handler: ({ sourceData, dealJson }) => {\n const { dealKey } = dealJson\n const sortedData = sourceData.sort((a, b) => Number(b[dealKey]) - Number(a[dealKey]))\n const average = (sortedData.reduce((a, b) => a + Number(b[dealKey]), 0) / sortedData.length).toFixed(2)\n return average || ''\n },\n },\n 中位数: {\n dealOptSchema: [{\n label: '目标值类型',\n cascaderProps: { value: 'label', label: 'label' },\n select: [{\n label: '值',\n }, {\n label: '名字',\n }],\n interactionType: 'select',\n }],\n handler: ({ sourceData, dealJson }) => {\n const { dealKey, source, dealOpt } = dealJson\n const targetKeyPath = dealOpt['目标值类型']?.keyPath\n const sortedData = sourceData.sort((a, b) => Number(b[dealKey]) - Number(a[dealKey]))\n return sortedData[Math.floor(sortedData.length / 2)][targetKeyPath === '值' ? dealKey : targetKeyPath === '名字' ? source : ''] || ''\n },\n },\n 排序: {\n dealOptSchema: [\n {\n label: '排序方式',\n cascaderProps: { value: 'label', label: 'label' },\n select: [{\n label: '默认',\n children: [{\n label: '第几名',\n valueVerify: {\n type: 'number',\n default: 1,\n },\n }, {\n label: '范围',\n valueVerify: {\n type: 'number[]',\n default: [1, 2],\n },\n }],\n }, {\n label: '升序',\n children: [{\n label: '第几名',\n valueVerify: {\n type: 'number',\n default: 1,\n },\n }, {\n label: '范围',\n valueVerify: {\n type: 'number[]',\n default: [1, 2],\n },\n }],\n }, {\n label: '降序',\n children: [{\n label: '第几名',\n valueVerify: {\n type: 'number',\n default: 1,\n },\n }, {\n label: '范围',\n valueVerify: {\n type: 'number[]',\n default: [1, 2],\n },\n }],\n }],\n interactionType: 'input',\n }, {\n label: '目标值类型',\n cascaderProps: { value: 'label', label: 'label' },\n select: [{\n label: '值',\n }, {\n label: '占比',\n }, {\n label: '名字',\n }],\n interactionType: 'select',\n },\n ],\n handler: ({ sourceData, dealJson }) => {\n const { dealKey, source, dealOpt } = dealJson\n\n let formatStr: number | string = ''\n const targetKeyPath = dealOpt['目标值类型'].keyPath\n // 根据value排序,target为第几名\n let sortedData = []\n if (dealOpt['排序方式'].keyPath.includes('默认')) {\n sortedData = sourceData\n }\n else {\n sortedData = sourceData.sort((a, b) => {\n if (dealOpt['排序方式'].keyPath.includes('升序')) {\n return Number(a[dealKey]) - Number(b[dealKey])\n }\n else if (dealOpt['排序方式'].keyPath.includes('降序')) {\n return Number(b[dealKey]) - Number(a[dealKey])\n }\n return 0\n })\n }\n\n if (dealOpt['排序方式'].keyPath.includes('第几名')) {\n const target = sortedData[dealOpt['排序方式'].value - 1] || {}\n // 处理目标值key\n const formatStrKey = targetKeyPath === '值' ? dealKey : targetKeyPath === '名字' ? source : targetKeyPath === '占比' ? dealKey : ''\n\n // 处理目标值\n if (dealOpt['目标值类型'].keyPath.includes('占比')) {\n const sum = sortedData.reduce((a, b) => a + Number(b[formatStrKey]), 0)\n formatStr = target[formatStrKey] ? `${(Number(target[formatStrKey]) / sum * 100).toFixed(2)}%` : ''\n }\n else {\n formatStr = target[formatStrKey] || ''\n }\n // formatStr = target[targetKeyPath === '值' ? dealKey : targetKeyPath === '名字' ? source : '']\n }\n else if (dealOpt['排序方式'].keyPath.includes('范围')) {\n const target = sortedData.slice(dealOpt['排序方式'].value[0] - 1, dealOpt['排序方式'].value[1])\n formatStr = target.map(item => item[targetKeyPath === '值' ? dealKey : targetKeyPath === '名字' ? source : '']).join('、').replace(/、([^、]+)$/, '和$1')\n }\n\n return formatStr || ''\n },\n },\n },\n 趋势分析: {\n 整体趋势: {\n handler: ({ sourceData, dealJson }) => {\n const data = sourceData.map(item => item[dealJson.dealKey])\n const length = data.length\n\n // 计算线性回归\n let sumX = 0\n let sumY = 0\n let sumXY = 0\n let sumX2 = 0\n\n for (let i = 0; i < length; i++) {\n sumX += i\n sumY += Number(data[i])\n sumXY += i * Number(data[i])\n sumX2 += i * i\n }\n\n const slope = (length * sumXY - sumX * sumY) / (length * sumX2 - sumX * sumX)\n\n // 判断趋势类型\n if (slope > 0) {\n return '增长'\n }\n else if (slope < 0) {\n return '下降'\n }\n else {\n return '平稳'\n }\n },\n },\n // '分段趋势': ({ sourceData, dealJson }) => {\n // // 分析数据的趋势分段分析,分为上升、下降、平稳, 例如:某一段时间内,数据整体上升,但是在某一段时间内,数据下降,这段时间内的数据就是分段趋势\n // const { dealKey, source } = dealJson\n // const sortedData = sourceData.sort((a, b) => b[dealKey] - a[dealKey])\n // const trend = []\n // for (let i = 0; i < sortedData.length - 1; i++) {\n // const firstValue = sortedData[i][source]\n // const lastValue = sortedData[i + 1][source]\n // const changePercentage = ((lastValue - firstValue) / firstValue * 100).toFixed(2)\n // if (changePercentage > 0) {\n // trend.push('上升')\n // } else if (changePercentage < 0) {\n // trend.push('下降')\n // } else {\n // trend.push('平稳')\n // }\n // }\n // const trendMap = {\n // '上升': 0,\n // '下降': 0,\n // '平稳': 0\n // }\n // trend.forEach(item => {\n // trendMap[item]++\n // })\n // const trendArr = Object.entries(trendMap).sort((a, b) => b[1] - a[1])\n // return `数据分段趋势为${trendArr[0][0]}。`\n // }\n },\n // '比例分析': {\n // '占比': ({ sourceData, dealJson }) => {\n // const { dealKey } = dealJson\n // const sortedData = sourceData.sort((a, b) => b[dealKey] - a[dealKey])\n // const sum = sortedData.reduce((a, b) => a + b[dealKey], 0)\n // const percentage = (sortedData[0][dealKey] / sum * 100).toFixed(2)\n // return `${percentage}%。`\n // }\n // '环比占比': {\n // handler: chartOptions => {\n // const data = chartOptions.series[0].data\n // const sum = data.reduce((a, b) => a + b)\n // const percentage = (data[0] / sum * 100).toFixed(2)\n // return `数据环比占比为${percentage}%。`\n // }\n // },\n // '同比占比': chartOptions => {\n // const data = chartOptions.series[0].data\n // const sum = data.reduce((a, b) => a + b)\n // const percentage = (data[0] / sum * 100).toFixed(2)\n // return `数据同比占比为${percentage}%。`\n // }\n // }\n // '对比分析': {\n // '分组对比': {\n // dealOptSchema: [\n // {\n // label: '排序方式',\n // cascaderProps: { value: 'label', label: 'label' },\n // select: [{\n // label: '默认',\n // children: [{\n // label: '第几名',\n // valueVerify: {\n // type: 'number',\n // default: 1\n // }\n // }, {\n // label: '范围',\n // valueVerify: {\n // type: 'number[]',\n // default: [1, 2]\n // }\n // }]\n // }, {\n // label: '升序',\n // children: [{\n // label: '第几名',\n // valueVerify: {\n // type: 'number',\n // default: 1\n // }\n // }, {\n // label: '范围',\n // valueVerify: {\n // type: 'number[]',\n // default: [1, 2]\n // }\n // }]\n // }, {\n // label: '降序',\n // children: [{\n // label: '第几名',\n // valueVerify: {\n // type: 'number',\n // default: 1\n // }\n // }, {\n // label: '范围',\n // valueVerify: {\n // type: 'number[]',\n // default: [1, 2]\n // }\n // }]\n // }],\n // interactionType: 'input'\n // }, {\n // label: '目标值类型',\n // cascaderProps: { value: 'label', label: 'label' },\n // select: [{\n // label: '值'\n // }, {\n // label: '名字'\n // }],\n // interactionType: 'select'\n // }\n // ],\n // handler({sourceData, dealJson}) {\n // console.log('sourceData, dealJson: ', sourceData, dealJson)\n\n // }\n // },\n // '环比对比': chartOptions => {\n // const data = chartOptions.series[0].data\n // const firstValue = data[0]\n // const lastValue = data[data.length - 1]\n // const trend = lastValue > firstValue ? '上升' : '下降'\n // const changePercentage = ((lastValue - firstValue) / firstValue * 100).toFixed(2)\n // return `数据环比${trend},变化率为${changePercentage}%。`\n // },\n // '同比对比': chartOptions => {\n // const data = chartOptions.series[0].data\n // const firstValue = data[0]\n // const lastValue = data[data.length - 1]\n // const trend = lastValue > firstValue ? '上升' : '下降'\n // const changePercentage = ((lastValue - firstValue) / firstValue * 100).toFixed(2)\n // return `数据同比${trend},变化率为${changePercentage}%。`\n // },\n // '最大值对比': chartOptions => {\n // const data = chartOptions.series[0].data\n // const max = Math.max(...data)\n // return `数据最大值为${max}。`\n // },\n // '最小值对比': chartOptions => {\n // const data = chartOptions.series[0].data\n // const min = Math.min(...data)\n // return `数据最小值为${min}。`\n // },\n // '平均值对比': chartOptions => {\n // const data = chartOptions.series[0].data\n // const average = (data.reduce((a, b) => a + b) / data.length).toFixed(2)\n // return `数据平均值为${average}。`\n // },\n // '中位数对比': ({sourceData, dealJson}) => {\n // const { dealKey, source } = dealJson\n // const sortedData = sourceData.sort((a, b) => b[dealKey] - a[dealKey])\n // return sortedData[Math.floor(sortedData.length / 2)][source]\n // },\n // '众数对比': chartOptions => {\n // const data = chartOptions.series[0].data\n // const mode = data.sort((a, b) =>\n // data.filter(v => v === a).length - data.filter(v => v === b).length\n // ).pop()\n // return `数据众数为${mode}。`\n // },\n // '标准差对比': chartOptions => {\n // const data = chartOptions.series[0].data\n // const average = (data.reduce((a, b) => a + b) / data.length).toFixed(2)\n // const standardDeviation = Math.sqrt(data.reduce((a, b) => a + (b - average) ** 2) / data.length).toFixed(2)\n // return `数据标准差为${standardDeviation}。`\n // },\n // '方差对比': chartOptions => {\n // const data = chartOptions.series[0].data\n // const average = (data.reduce((a, b) => a + b) / data.length).toFixed(2)\n // const variance = data.reduce((a, b) => a + (b - average) ** 2) / data.length\n // return `数据方差为${variance}。`\n // },\n // '偏度对比': chartOptions => {\n // const data = chartOptions.series[0].data\n // const average = (data.reduce((a, b) => a + b) / data.length).toFixed(2)\n // const standardDeviation = Math.sqrt(data.reduce((a, b) => a + (b - average) ** 2) / data.length).toFixed(2)\n // const skewness = data.reduce((a, b) => a + ((b - average) / standardDeviation) ** 3) / data.length\n // return `数据偏度为${skewness}。`\n // },\n // '峰度对比': chartOptions => {\n // const data = chartOptions.series[0].data\n // const average = (data.reduce((a, b) => a + b) / data.length).toFixed(2)\n // const standardDeviation = Math.sqrt(data.reduce((a, b) => a + (b - average) ** 2) / data.length).toFixed(2)\n // const kurtosis = data.reduce((a, b) => a + ((b - average) / standardDeviation) ** 4) / data.length\n // return `数据峰度为${kurtosis}。`\n // },\n // '波动率对比': chartOptions => {\n // const data = chartOptions.series[0].data\n // const average = (data.reduce((a, b) => a + b) / data.length).toFixed(2)\n // const standardDeviation = Math.sqrt(data.reduce((a, b) => a + (b - average) ** 2) / data.length).toFixed(2)\n // const volatility = (standardDeviation / average * 100).toFixed(2)\n // return `数据波动率为${volatility}%。`\n // },\n // '变异系数对比': chartOptions => {\n // const data = chartOptions.series[0].data\n // const average = (data.reduce((a, b) => a + b) / data.length).toFixed(2)\n\n // const standardDeviation = Math.sqrt(data.reduce((a, b) => a + (b - average) ** 2) / data.length).toFixed(2)\n\n // const coefficientOfVariation = (standardDeviation / average * 100).toFixed(2)\n // return `数据变异系数为${coefficientOfVariation}%。`\n // },\n // '数据分布对比': chartOptions => {\n // const data = chartOptions.series[0].data\n // const average = (data.reduce((a, b) => a + b) / data.length).toFixed(2)\n\n // const standardDeviation = Math.sqrt(data.reduce((a, b) => a + (b - average) ** 2) / data.length).toFixed(2)\n\n // const coefficientOfVariation = (standardDeviation / average * 100).toFixed(2)\n\n // const mode = data.sort((a, b) =>\n // data.filter(v => v === a).length - data.filter(v => v === b).length\n // ).pop()\n\n // const median = data[Math.floor(data.length / 2)]\n\n // const max = Math.max(...data)\n\n // const min = Math.min(...data)\n // return `数据平均值为${average},标准差为${standardDeviation},变异系数为${coefficientOfVariation}%,众数为${mode},中位数为${median},最大值为${max},最小值为${min}。`\n // }\n // },\n // '相关分析': {\n // handler: ({sourceData, dealJson}) => {\n // console.log('sourceData, dealJson: ', sourceData, dealJson)\n\n // function calculatePearsonCorrelation(dataX, dataY) {\n // if (dataX.length !== dataY.length) {\n // throw new Error('数据长度不一致,无法计算皮尔逊相关系数。')\n // }\n\n // const n = dataX.length\n\n // // 计算平均值\n // const meanX = dataX.reduce((sum, value) => sum + value, 0) / n\n // const meanY = dataY.reduce((sum, value) => sum + value, 0) / n\n\n // // 计算 xi - x̄ 和 yi - ȳ 的数组\n // const diffX = dataX.map(x => x - meanX)\n // const diffY = dataY.map(y => y - meanY)\n\n // // 计算 xi - x̄ 和 yi - ȳ 的平方和\n // const sumDiffX = diffX.reduce((sum, value) => sum + value ** 2, 0)\n // const sumDiffY = diffY.reduce((sum, value) => sum + value ** 2, 0)\n\n // // 计算 xi - x̄ 和 yi - ȳ 的乘积和\n // const sumDiffXY = diffX.reduce((sum, value, index) => sum + value * diffY[index], 0)\n\n // // 计算皮尔逊相关系数\n // const correlation = sumDiffXY / Math.sqrt(sumDiffX * sumDiffY)\n\n // return correlation\n // }\n // function determineCorrelation(dataX, dataY) {\n // const correlation = calculatePearsonCorrelation(dataX, dataY)\n\n // if (correlation > 0.7) {\n // return '强正相关'\n // } else if (correlation > 0.3) {\n // return '较弱正相关'\n // } else if (correlation > -0.3) {\n // return '无线性相关性'\n // } else if (correlation > -0.7) {\n // return '较弱负相关'\n // } else {\n // return '强负相关'\n // }\n // }\n // let dataX = []\n // let dataY = []\n // const correlation = determineCorrelation(dataX, dataY)\n // console.log('两个变量之间的关系:', correlation)\n // return correlation\n // }\n // }\n // '假设探索性分析': {},\n // '机器学习和数据挖掘': {}\n}\n"],"names":["getObjectValue","obj","pathArr","reduce","acc","key","keysMap","描述性分析","平均值","handler","_ref","sourceData","dealJson","dealKey","sortedData","sort","a","b","Number","length","toFixed","中位数","dealOptSchema","label","cascaderProps","value","select","interactionType","_ref2","source","dealOpt","targetKeyPath","keyPath","Math","floor","排序","children","valueVerify","type","default","_ref3","formatStr","includes","target","formatStrKey","sum","slice","map","item","join","replace","趋势分析","整体趋势","_ref4","data","sumX","sumY","sumXY","sumX2","i","slope"],"mappings":"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"}
1
+ {"version":3,"file":"analyze.mjs","sources":["../../../../../../packages/components/src/data-chart/src/analyze.ts"],"sourcesContent":["import type { EChartData } from './utils/types'\n\n// 根据路径获取对象的值\nexport function getObjectValue(obj: any, pathArr: string[]) {\n return pathArr?.reduce((acc, key) => (acc ? acc[key] : undefined), obj)\n}\n\n// 谁 是什么 的分析\ninterface IHandlerFunction {\n handler?: ({ sourceData, dealJson }: { sourceData: EChartData['data'], dealJson: any }) => string | number\n dealOptSchema?: {\n label: string\n cascaderProps: {\n value: string\n label: string\n }\n select: any[]\n interactionType?: 'select' | 'input'\n }[]\n}\nexport interface IkeysMap {\n [key: string]: IHandlerFunction | IkeysMap\n}\nexport const keysMap: IkeysMap = {\n 描述性分析: {\n 平均值: {\n handler: ({ sourceData, dealJson }) => {\n const { dealKey } = dealJson\n const sortedData = sourceData.sort((a, b) => Number(b[dealKey]) - Number(a[dealKey]))\n const average = (sortedData.reduce((a, b) => a + Number(b[dealKey]), 0) / sortedData.length).toFixed(2)\n return average || ''\n },\n },\n 中位数: {\n dealOptSchema: [{\n label: '目标值类型',\n cascaderProps: { value: 'label', label: 'label' },\n select: [{\n label: '值',\n }, {\n label: '名字',\n }],\n interactionType: 'select',\n }],\n handler: ({ sourceData, dealJson }) => {\n const { dealKey, source, dealOpt } = dealJson\n const targetKeyPath = dealOpt['目标值类型']?.keyPath\n const sortedData = sourceData.sort((a, b) => Number(b[dealKey]) - Number(a[dealKey]))\n return sortedData[Math.floor(sortedData.length / 2)][targetKeyPath === '值' ? dealKey : targetKeyPath === '名字' ? source : ''] || ''\n },\n },\n 排序: {\n dealOptSchema: [\n {\n label: '排序方式',\n cascaderProps: { value: 'label', label: 'label' },\n select: [{\n label: '默认',\n children: [{\n label: '第几名',\n valueVerify: {\n type: 'number',\n default: 1,\n },\n }, {\n label: '范围',\n valueVerify: {\n type: 'number[]',\n default: [1, 2],\n },\n }],\n }, {\n label: '升序',\n children: [{\n label: '第几名',\n valueVerify: {\n type: 'number',\n default: 1,\n },\n }, {\n label: '范围',\n valueVerify: {\n type: 'number[]',\n default: [1, 2],\n },\n }],\n }, {\n label: '降序',\n children: [{\n label: '第几名',\n valueVerify: {\n type: 'number',\n default: 1,\n },\n }, {\n label: '范围',\n valueVerify: {\n type: 'number[]',\n default: [1, 2],\n },\n }],\n }],\n interactionType: 'input',\n }, {\n label: '目标值类型',\n cascaderProps: { value: 'label', label: 'label' },\n select: [{\n label: '值',\n }, {\n label: '占比',\n }, {\n label: '名字',\n }],\n interactionType: 'select',\n },\n ],\n handler: ({ sourceData, dealJson }) => {\n const { dealKey, source, dealOpt } = dealJson\n\n let formatStr: number | string = ''\n const targetKeyPath = dealOpt['目标值类型'].keyPath\n // 根据value排序,target为第几名\n let sortedData = []\n if (dealOpt['排序方式'].keyPath.includes('默认')) {\n sortedData = sourceData\n }\n else {\n sortedData = sourceData.sort((a, b) => {\n if (dealOpt['排序方式'].keyPath.includes('升序')) {\n return Number(a[dealKey]) - Number(b[dealKey])\n }\n else if (dealOpt['排序方式'].keyPath.includes('降序')) {\n return Number(b[dealKey]) - Number(a[dealKey])\n }\n return 0\n })\n }\n\n if (dealOpt['排序方式'].keyPath.includes('第几名')) {\n const target = sortedData[dealOpt['排序方式'].value - 1] || {}\n // 处理目标值key\n const formatStrKey = targetKeyPath === '值' ? dealKey : targetKeyPath === '名字' ? source : targetKeyPath === '占比' ? dealKey : ''\n\n // 处理目标值\n if (dealOpt['目标值类型'].keyPath.includes('占比')) {\n const sum = sortedData.reduce((a, b) => a + Number(b[formatStrKey]), 0)\n formatStr = target[formatStrKey] ? `${(Number(target[formatStrKey]) / sum * 100).toFixed(2)}%` : ''\n }\n else {\n formatStr = target[formatStrKey] || ''\n }\n // formatStr = target[targetKeyPath === '值' ? dealKey : targetKeyPath === '名字' ? source : '']\n }\n else if (dealOpt['排序方式'].keyPath.includes('范围')) {\n const target = sortedData.slice(dealOpt['排序方式'].value[0] - 1, dealOpt['排序方式'].value[1])\n formatStr = target.map(item => item[targetKeyPath === '值' ? dealKey : targetKeyPath === '名字' ? source : '']).join('、').replace(/、([^、]+)$/, '和$1')\n }\n\n return formatStr || ''\n },\n },\n },\n 趋势分析: {\n 整体趋势: {\n handler: ({ sourceData, dealJson }) => {\n const data = sourceData.map(item => item[dealJson.dealKey])\n const length = data.length\n\n // 计算线性回归\n let sumX = 0\n let sumY = 0\n let sumXY = 0\n let sumX2 = 0\n\n for (let i = 0; i < length; i++) {\n sumX += i\n sumY += Number(data[i])\n sumXY += i * Number(data[i])\n sumX2 += i * i\n }\n\n const slope = (length * sumXY - sumX * sumY) / (length * sumX2 - sumX * sumX)\n\n // 判断趋势类型\n if (slope > 0) {\n return '增长'\n }\n else if (slope < 0) {\n return '下降'\n }\n else {\n return '平稳'\n }\n },\n },\n // '分段趋势': ({ sourceData, dealJson }) => {\n // // 分析数据的趋势分段分析,分为上升、下降、平稳, 例如:某一段时间内,数据整体上升,但是在某一段时间内,数据下降,这段时间内的数据就是分段趋势\n // const { dealKey, source } = dealJson\n // const sortedData = sourceData.sort((a, b) => b[dealKey] - a[dealKey])\n // const trend = []\n // for (let i = 0; i < sortedData.length - 1; i++) {\n // const firstValue = sortedData[i][source]\n // const lastValue = sortedData[i + 1][source]\n // const changePercentage = ((lastValue - firstValue) / firstValue * 100).toFixed(2)\n // if (changePercentage > 0) {\n // trend.push('上升')\n // } else if (changePercentage < 0) {\n // trend.push('下降')\n // } else {\n // trend.push('平稳')\n // }\n // }\n // const trendMap = {\n // '上升': 0,\n // '下降': 0,\n // '平稳': 0\n // }\n // trend.forEach(item => {\n // trendMap[item]++\n // })\n // const trendArr = Object.entries(trendMap).sort((a, b) => b[1] - a[1])\n // return `数据分段趋势为${trendArr[0][0]}。`\n // }\n },\n // '比例分析': {\n // '占比': ({ sourceData, dealJson }) => {\n // const { dealKey } = dealJson\n // const sortedData = sourceData.sort((a, b) => b[dealKey] - a[dealKey])\n // const sum = sortedData.reduce((a, b) => a + b[dealKey], 0)\n // const percentage = (sortedData[0][dealKey] / sum * 100).toFixed(2)\n // return `${percentage}%。`\n // }\n // '环比占比': {\n // handler: chartOptions => {\n // const data = chartOptions.series[0].data\n // const sum = data.reduce((a, b) => a + b)\n // const percentage = (data[0] / sum * 100).toFixed(2)\n // return `数据环比占比为${percentage}%。`\n // }\n // },\n // '同比占比': chartOptions => {\n // const data = chartOptions.series[0].data\n // const sum = data.reduce((a, b) => a + b)\n // const percentage = (data[0] / sum * 100).toFixed(2)\n // return `数据同比占比为${percentage}%。`\n // }\n // }\n // '对比分析': {\n // '分组对比': {\n // dealOptSchema: [\n // {\n // label: '排序方式',\n // cascaderProps: { value: 'label', label: 'label' },\n // select: [{\n // label: '默认',\n // children: [{\n // label: '第几名',\n // valueVerify: {\n // type: 'number',\n // default: 1\n // }\n // }, {\n // label: '范围',\n // valueVerify: {\n // type: 'number[]',\n // default: [1, 2]\n // }\n // }]\n // }, {\n // label: '升序',\n // children: [{\n // label: '第几名',\n // valueVerify: {\n // type: 'number',\n // default: 1\n // }\n // }, {\n // label: '范围',\n // valueVerify: {\n // type: 'number[]',\n // default: [1, 2]\n // }\n // }]\n // }, {\n // label: '降序',\n // children: [{\n // label: '第几名',\n // valueVerify: {\n // type: 'number',\n // default: 1\n // }\n // }, {\n // label: '范围',\n // valueVerify: {\n // type: 'number[]',\n // default: [1, 2]\n // }\n // }]\n // }],\n // interactionType: 'input'\n // }, {\n // label: '目标值类型',\n // cascaderProps: { value: 'label', label: 'label' },\n // select: [{\n // label: '值'\n // }, {\n // label: '名字'\n // }],\n // interactionType: 'select'\n // }\n // ],\n // handler({sourceData, dealJson}) {\n // console.log('sourceData, dealJson: ', sourceData, dealJson)\n\n // }\n // },\n // '环比对比': chartOptions => {\n // const data = chartOptions.series[0].data\n // const firstValue = data[0]\n // const lastValue = data[data.length - 1]\n // const trend = lastValue > firstValue ? '上升' : '下降'\n // const changePercentage = ((lastValue - firstValue) / firstValue * 100).toFixed(2)\n // return `数据环比${trend},变化率为${changePercentage}%。`\n // },\n // '同比对比': chartOptions => {\n // const data = chartOptions.series[0].data\n // const firstValue = data[0]\n // const lastValue = data[data.length - 1]\n // const trend = lastValue > firstValue ? '上升' : '下降'\n // const changePercentage = ((lastValue - firstValue) / firstValue * 100).toFixed(2)\n // return `数据同比${trend},变化率为${changePercentage}%。`\n // },\n // '最大值对比': chartOptions => {\n // const data = chartOptions.series[0].data\n // const max = Math.max(...data)\n // return `数据最大值为${max}。`\n // },\n // '最小值对比': chartOptions => {\n // const data = chartOptions.series[0].data\n // const min = Math.min(...data)\n // return `数据最小值为${min}。`\n // },\n // '平均值对比': chartOptions => {\n // const data = chartOptions.series[0].data\n // const average = (data.reduce((a, b) => a + b) / data.length).toFixed(2)\n // return `数据平均值为${average}。`\n // },\n // '中位数对比': ({sourceData, dealJson}) => {\n // const { dealKey, source } = dealJson\n // const sortedData = sourceData.sort((a, b) => b[dealKey] - a[dealKey])\n // return sortedData[Math.floor(sortedData.length / 2)][source]\n // },\n // '众数对比': chartOptions => {\n // const data = chartOptions.series[0].data\n // const mode = data.sort((a, b) =>\n // data.filter(v => v === a).length - data.filter(v => v === b).length\n // ).pop()\n // return `数据众数为${mode}。`\n // },\n // '标准差对比': chartOptions => {\n // const data = chartOptions.series[0].data\n // const average = (data.reduce((a, b) => a + b) / data.length).toFixed(2)\n // const standardDeviation = Math.sqrt(data.reduce((a, b) => a + (b - average) ** 2) / data.length).toFixed(2)\n // return `数据标准差为${standardDeviation}。`\n // },\n // '方差对比': chartOptions => {\n // const data = chartOptions.series[0].data\n // const average = (data.reduce((a, b) => a + b) / data.length).toFixed(2)\n // const variance = data.reduce((a, b) => a + (b - average) ** 2) / data.length\n // return `数据方差为${variance}。`\n // },\n // '偏度对比': chartOptions => {\n // const data = chartOptions.series[0].data\n // const average = (data.reduce((a, b) => a + b) / data.length).toFixed(2)\n // const standardDeviation = Math.sqrt(data.reduce((a, b) => a + (b - average) ** 2) / data.length).toFixed(2)\n // const skewness = data.reduce((a, b) => a + ((b - average) / standardDeviation) ** 3) / data.length\n // return `数据偏度为${skewness}。`\n // },\n // '峰度对比': chartOptions => {\n // const data = chartOptions.series[0].data\n // const average = (data.reduce((a, b) => a + b) / data.length).toFixed(2)\n // const standardDeviation = Math.sqrt(data.reduce((a, b) => a + (b - average) ** 2) / data.length).toFixed(2)\n // const kurtosis = data.reduce((a, b) => a + ((b - average) / standardDeviation) ** 4) / data.length\n // return `数据峰度为${kurtosis}。`\n // },\n // '波动率对比': chartOptions => {\n // const data = chartOptions.series[0].data\n // const average = (data.reduce((a, b) => a + b) / data.length).toFixed(2)\n // const standardDeviation = Math.sqrt(data.reduce((a, b) => a + (b - average) ** 2) / data.length).toFixed(2)\n // const volatility = (standardDeviation / average * 100).toFixed(2)\n // return `数据波动率为${volatility}%。`\n // },\n // '变异系数对比': chartOptions => {\n // const data = chartOptions.series[0].data\n // const average = (data.reduce((a, b) => a + b) / data.length).toFixed(2)\n\n // const standardDeviation = Math.sqrt(data.reduce((a, b) => a + (b - average) ** 2) / data.length).toFixed(2)\n\n // const coefficientOfVariation = (standardDeviation / average * 100).toFixed(2)\n // return `数据变异系数为${coefficientOfVariation}%。`\n // },\n // '数据分布对比': chartOptions => {\n // const data = chartOptions.series[0].data\n // const average = (data.reduce((a, b) => a + b) / data.length).toFixed(2)\n\n // const standardDeviation = Math.sqrt(data.reduce((a, b) => a + (b - average) ** 2) / data.length).toFixed(2)\n\n // const coefficientOfVariation = (standardDeviation / average * 100).toFixed(2)\n\n // const mode = data.sort((a, b) =>\n // data.filter(v => v === a).length - data.filter(v => v === b).length\n // ).pop()\n\n // const median = data[Math.floor(data.length / 2)]\n\n // const max = Math.max(...data)\n\n // const min = Math.min(...data)\n // return `数据平均值为${average},标准差为${standardDeviation},变异系数为${coefficientOfVariation}%,众数为${mode},中位数为${median},最大值为${max},最小值为${min}。`\n // }\n // },\n // '相关分析': {\n // handler: ({sourceData, dealJson}) => {\n // console.log('sourceData, dealJson: ', sourceData, dealJson)\n\n // function calculatePearsonCorrelation(dataX, dataY) {\n // if (dataX.length !== dataY.length) {\n // throw new Error('数据长度不一致,无法计算皮尔逊相关系数。')\n // }\n\n // const n = dataX.length\n\n // // 计算平均值\n // const meanX = dataX.reduce((sum, value) => sum + value, 0) / n\n // const meanY = dataY.reduce((sum, value) => sum + value, 0) / n\n\n // // 计算 xi - x̄ 和 yi - ȳ 的数组\n // const diffX = dataX.map(x => x - meanX)\n // const diffY = dataY.map(y => y - meanY)\n\n // // 计算 xi - x̄ 和 yi - ȳ 的平方和\n // const sumDiffX = diffX.reduce((sum, value) => sum + value ** 2, 0)\n // const sumDiffY = diffY.reduce((sum, value) => sum + value ** 2, 0)\n\n // // 计算 xi - x̄ 和 yi - ȳ 的乘积和\n // const sumDiffXY = diffX.reduce((sum, value, index) => sum + value * diffY[index], 0)\n\n // // 计算皮尔逊相关系数\n // const correlation = sumDiffXY / Math.sqrt(sumDiffX * sumDiffY)\n\n // return correlation\n // }\n // function determineCorrelation(dataX, dataY) {\n // const correlation = calculatePearsonCorrelation(dataX, dataY)\n\n // if (correlation > 0.7) {\n // return '强正相关'\n // } else if (correlation > 0.3) {\n // return '较弱正相关'\n // } else if (correlation > -0.3) {\n // return '无线性相关性'\n // } else if (correlation > -0.7) {\n // return '较弱负相关'\n // } else {\n // return '强负相关'\n // }\n // }\n // let dataX = []\n // let dataY = []\n // const correlation = determineCorrelation(dataX, dataY)\n // console.log('两个变量之间的关系:', correlation)\n // return correlation\n // }\n // }\n // '假设探索性分析': {},\n // '机器学习和数据挖掘': {}\n}\n"],"names":["getObjectValue","obj","pathArr","reduce","acc","key","keysMap","描述性分析","平均值","handler","_ref","sourceData","dealJson","dealKey","sortedData","sort","a","b","Number","length","toFixed","中位数","dealOptSchema","label","cascaderProps","value","select","interactionType","_ref2","source","dealOpt","targetKeyPath","keyPath","Math","floor","排序","children","valueVerify","type","default","_ref3","formatStr","includes","target","formatStrKey","sum","slice","map","item","join","replace","趋势分析","整体趋势","_ref4","data","sumX","sumY","sumXY","sumX2","i","slope"],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- import r from"./area.vue2.mjs";import"./area.vue3.mjs";import e from"../../../../_virtual/_plugin-vue_export-helper.mjs";var a=e(r,[["__scopeId","data-v-51660d7b"]]);export{a as default};
1
+ import r from"./area.vue2.mjs";import e from"../../../../_virtual/_plugin-vue_export-helper.mjs";var a=e(r,[["__scopeId","data-v-51660d7b"]]);export{a as default};
2
2
  //# sourceMappingURL=area.vue.mjs.map
@@ -1,2 +1,2 @@
1
- import{defineComponent as e,inject as a,ref as t,computed as s,createElementBlock as r,openBlock as l}from"vue";import{uniq as o}from"lodash-es";import{InjectionChartMerge as c}from"../utils/injectionKeys.mjs";import{useCharts as i}from"../utils/useCharts.mjs";var n=e({name:"DataChartBar",__name:"bar",props:{chartData:{type:Object,required:!0},subShowType:{type:String,required:!0,default:"bar-simple"},chartOptions:{type:null,required:!0}},setup(e){const n=a(c,(e=>e),!0),p=t(null),u=s((()=>{const{colDesc:a,xGroupByDesc:t,groupByDesc:s,data:r=[],modelName:l}=e.chartData,c=Array.from(new Set(r.map((e=>e[t.colDesc||""])))).filter((e=>null!=e))||[],i=s.find((e=>!e.xAxis))||{groupByValues:[],colDesc:""};i.groupByValues=o(r.map((e=>i.colDesc?String(e[i.colDesc]):""))),t&&t.groupByValues&&(t.groupByValues=o(r.map((e=>t.colDesc?String(e[t.colDesc]):""))));const p={title:{text:l},xAxis:{name:"",type:"category",axisLabel:{interval:0,formatter:e=>e.length>5?`${e.substring(0,5)}...`:e},data:c},yAxis:{type:"value"},legend:{data:[]},dataZoom:[{type:"inside",disabled:c.length<15}]};if(1===s.length)p.series=a.map((e=>({name:e,data:r.map((a=>a[e])),type:"bar",emphasis:{focus:"series"},label:{show:!0,position:"inside"}}))),p.legend.data=a;else if(2===s.length){const e=a.map((e=>i.groupByValues?.map((a=>{const s={name:`${a||"/"}-${e}`,type:"bar",stack:e,emphasis:{focus:"series"},data:[],label:{show:!0,position:"inside"}};return s.data=(t.groupByValues||[]).map((e=>{let l=null;return r.forEach((r=>{i.colDesc&&r[i.colDesc]===a&&t.colDesc&&r[t.colDesc]===e&&s.stack&&(l=r[s.stack]??null)})),l||""})).filter((e=>""!==e)),s}))||[])).flat();p.series=e,delete p.legend}function u(e,a,t,s){Array.isArray(e)?e.forEach((e=>{e&&(e.type=a,"category"===a&&(e.data=t||[],e.name=s||""))})):e&&(e.type=a,"category"===a&&(e.data=t||[],e.name=s||""))}switch(e.subShowType){case"bar-simple":case"default":u(p.xAxis,"category",c,t?.colDesc||""),u(p.yAxis,"value");break;case"bar-y-category":u(p.xAxis,"value"),u(p.yAxis,"category",c,t?.colDesc||"")}return n(p,e.chartOptions)}));return i({chartDOM:p,chartOptions:u,chartData:s((()=>e.chartData))}),(e,a)=>(l(),r("div",{ref_key:"dataChartBar",ref:p,class:"data-chart-bar"},null,512))}});export{n as default};
1
+ import{defineComponent as e,inject as a,ref as t,computed as s,createElementBlock as r,openBlock as l}from"vue";import{uniq as o}from"lodash-es";import{InjectionChartMerge as c}from"../utils/injectionKeys.mjs";import{useCharts as i}from"../utils/useCharts.mjs";var n=e({name:"DataChartBar",__name:"bar",props:{chartData:{type:Object,required:!0},subShowType:{type:String,required:!0,default:"bar-simple"},chartOptions:{type:null,required:!0}},setup(e){const n=a(c,(e=>e),!0),p=t(null),u=s((()=>{const{colDesc:a,xGroupByDesc:t,groupByDesc:s,data:r=[],modelName:l}=e.chartData,c=Array.from(new Set(r.map((e=>e[t.colDesc||""])))).filter((e=>null!=e))||[],i={...s.find((e=>!e.xAxis))||{groupByDesc:null,groupByValues:[],colDesc:"",xAxis:!1},groupByValues:o(r.map((e=>s.find((e=>!e.xAxis))?.colDesc?String(e[s.find((e=>!e.xAxis))?.colDesc||""]):"")))},p=t?{...t,groupByValues:o(r.map((e=>t.colDesc?String(e[t.colDesc]):"")))}:t,u={title:{text:l},xAxis:{name:"",type:"category",axisLabel:{interval:0,formatter:e=>e.length>5?`${e.substring(0,5)}...`:e},data:c},yAxis:{type:"value"},legend:{data:[]},dataZoom:[{type:"inside",disabled:c.length<15}]};if(1===s.length)u.series=a.map((e=>({name:e,data:r.map((a=>a[e])),type:"bar",emphasis:{focus:"series"},label:{show:!0,position:"inside"}}))),u.legend.data=a;else if(2===s.length){const e=a.map((e=>i.groupByValues?.map((a=>{const t={name:`${a||"/"}-${e}`,type:"bar",stack:e,emphasis:{focus:"series"},data:[],label:{show:!0,position:"inside"}};return t.data=(p?.groupByValues||[]).map((e=>{let s=null;return r.forEach((r=>{i.colDesc&&r[i.colDesc]===a&&p?.colDesc&&r[p.colDesc]===e&&t.stack&&(s=r[t.stack]??null)})),s||""})).filter((e=>""!==e)),t}))||[])).flat();u.series=e,delete u.legend}function y(e,a,t,s){Array.isArray(e)?e.forEach((e=>{e&&(e.type=a,"category"===a&&(e.data=t||[],e.name=s||""))})):e&&(e.type=a,"category"===a&&(e.data=t||[],e.name=s||""))}switch(e.subShowType){case"bar-simple":case"default":y(u.xAxis,"category",c,t?.colDesc||""),y(u.yAxis,"value");break;case"bar-y-category":y(u.xAxis,"value"),y(u.yAxis,"category",c,t?.colDesc||"")}return n(u,e.chartOptions)}));return i({chartDOM:p,chartOptions:u,chartData:s((()=>e.chartData))}),(e,a)=>(l(),r("div",{ref_key:"dataChartBar",ref:p,class:"data-chart-bar"},null,512))}});export{n as default};
2
2
  //# sourceMappingURL=bar.vue.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"bar.vue.mjs","sources":["../../../../../../../packages/components/src/data-chart/src/components/bar.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport type { LegendComponentOption, XAXisComponentOption, YAXisComponentOption } from 'echarts'\nimport type {\n EChartData,\n EChartsOption,\n IFormatPublicData,\n SeriesOption,\n} from '../utils/types'\nimport { uniq } from 'lodash-es'\nimport { InjectionChartMerge } from '../utils/injectionKeys'\nimport { useCharts } from '../utils/useCharts'\n\n// 定义组件名称\ndefineOptions({\n name: 'DataChartBar',\n})\n\n// 定义组件属性\nconst {\n chartOptions,\n chartData,\n subShowType = 'bar-simple',\n} = defineProps<{\n chartData: IFormatPublicData\n subShowType: string\n chartOptions: EChartsOption\n}>()\n\n// 注入合并函数,并明确类型\nconst merge = inject(InjectionChartMerge, (v: any) => v, true) as (config: EChartsOption, chartOptions: EChartsOption) => EChartsOption\nconst dataChartBar = ref<HTMLElement | null>(null)\n\n// 计算图表选项\nconst barChartOptions = computed<EChartsOption>(() => {\n const { colDesc, xGroupByDesc, groupByDesc, data = [], modelName } = chartData\n\n const axisData = Array.from(new Set(data.map(item => item[xGroupByDesc.colDesc || '']))).filter(item => item !== undefined && item !== null) || []\n const yGroupByDesc: EChartData['desc']['groupByDesc'][0] = groupByDesc.find(item => !item.xAxis) || {\n groupByDesc: null,\n groupByValues: [],\n colDesc: '',\n xAxis: false,\n }\n\n yGroupByDesc.groupByValues = uniq(data.map(item => yGroupByDesc.colDesc ? String(item[yGroupByDesc.colDesc]) : ''))\n if (xGroupByDesc && xGroupByDesc.groupByValues) {\n xGroupByDesc.groupByValues = uniq(data.map(item => xGroupByDesc.colDesc ? String(item[xGroupByDesc.colDesc]) : ''))\n }\n\n const config: EChartsOption = {\n title: {\n text: modelName,\n },\n xAxis: {\n name: '',\n type: 'category',\n axisLabel: {\n interval: 0, // 强制显示所有标签\n formatter(value: string) {\n const screenshotLength = 5\n return value.length > screenshotLength ? `${value.substring(0, screenshotLength)}...` : value // 截取前5个字符并添加省略号\n },\n },\n data: axisData,\n },\n yAxis: {\n type: 'value',\n },\n legend: {\n data: [],\n },\n dataZoom: [{\n type: 'inside',\n disabled: axisData.length < 15,\n }],\n }\n\n // 堆叠图\n if (groupByDesc.length === 1) {\n config.series = colDesc.map((yItem) => {\n return {\n name: yItem,\n data: data.map(item => item[yItem]),\n type: 'bar',\n emphasis: {\n focus: 'series',\n },\n label: {\n show: true,\n position: 'inside',\n },\n }\n });\n (config.legend as LegendComponentOption).data = colDesc\n }\n else if (groupByDesc.length === 2) {\n const arr = colDesc.map((colDescItem) => {\n return yGroupByDesc.groupByValues?.map((yGroupByDescItem) => {\n const obj: SeriesOption = {\n name: `${yGroupByDescItem || '/'}-${colDescItem}`,\n type: 'bar',\n stack: colDescItem,\n emphasis: {\n focus: 'series',\n },\n data: [],\n label: {\n show: true,\n position: 'inside',\n },\n }\n obj.data = (xGroupByDesc.groupByValues || []).map((xGroupByDescItem) => {\n let targetVal: number | string | null = null\n data.forEach((item) => {\n if (yGroupByDesc.colDesc && item[yGroupByDesc.colDesc] === yGroupByDescItem && xGroupByDesc.colDesc && item[xGroupByDesc.colDesc] === xGroupByDescItem) {\n if (obj.stack) {\n targetVal = item[obj.stack] ?? null\n }\n }\n })\n return targetVal || ''\n }).filter(v => v !== '')\n return obj\n }) || []\n }).flat()\n\n config.series = arr\n delete config.legend\n }\n\n // 1. 定义轴类型\n type CategoryAxisOption = XAXisComponentOption & {\n type: 'category'\n data: (string | number)[]\n }\n\n // 2. 创建配置轴的辅助函数\n function configureAxis(\n axis: XAXisComponentOption | XAXisComponentOption[] | YAXisComponentOption | YAXisComponentOption[] | undefined,\n type: 'category' | 'value',\n data?: (string | number)[],\n name?: string,\n ) {\n if (Array.isArray(axis)) {\n axis.forEach((item) => {\n if (item) {\n item.type = type\n if (type === 'category') {\n (item as CategoryAxisOption).data = data || []\n item.name = name || ''\n }\n }\n })\n }\n else if (axis) {\n axis.type = type\n if (type === 'category') {\n (axis as CategoryAxisOption).data = data || []\n axis.name = name || ''\n }\n }\n }\n\n // 3. 使用配置函数\n switch (subShowType) {\n case 'bar-simple':\n case 'default':\n configureAxis(config.xAxis, 'category', axisData, xGroupByDesc?.colDesc || '')\n configureAxis(config.yAxis, 'value')\n break\n\n case 'bar-y-category':\n configureAxis(config.xAxis, 'value')\n configureAxis(config.yAxis, 'category', axisData, xGroupByDesc?.colDesc || '')\n break\n }\n\n return merge(config, chartOptions)\n})\n\nuseCharts({ chartDOM: dataChartBar, chartOptions: barChartOptions, chartData: computed(() => chartData) })\n</script>\n\n<template>\n <div\n ref=\"dataChartBar\"\n class=\"data-chart-bar\"\n />\n</template>\n"],"names":["merge","inject","InjectionChartMerge","v","dataChartBar","ref","barChartOptions","computed","colDesc","xGroupByDesc","groupByDesc","data","modelName","__props","chartData","axisData","Array","from","Set","map","item","filter","yGroupByDesc","find","xAxis","groupByValues","uniq","String","config","title","text","name","type","axisLabel","interval","formatter","value","length","substring","yAxis","legend","dataZoom","disabled","series","yItem","emphasis","focus","label","show","position","arr","colDescItem","yGroupByDescItem","obj","stack","xGroupByDescItem","targetVal","forEach","flat","configureAxis","axis","isArray","subShowType","chartOptions","useCharts","chartDOM"],"mappings":"ocA6BA,MAAMA,EAAQC,EAAOC,GAAsBC,GAAWA,IAAG,GACnDC,EAAeC,EAAwB,MAGvCC,EAAkBC,GAAwB,KACxC,MAAAC,QAAEA,eAASC,EAAcC,YAAAA,EAAAC,KAAaA,EAAO,GAACC,UAAGA,GAAcC,EAAAC,UAE/DC,EAAWC,MAAMC,KAAK,IAAIC,IAAIP,EAAKQ,KAAYC,GAAAA,EAAKX,EAAaD,SAAW,QAAOa,QAAOD,GAAQA,WAAwC,GAC1IE,EAAqDZ,EAAYa,UAAcH,EAAKI,SAAU,CAElGC,cAAe,GACfjB,QAAS,IAIXc,EAAaG,cAAgBC,EAAKf,EAAKQ,QAAYG,EAAad,QAAUmB,OAAOP,EAAKE,EAAad,UAAY,MAC3GC,GAAgBA,EAAagB,gBAC/BhB,EAAagB,cAAgBC,EAAKf,EAAKQ,QAAYV,EAAaD,QAAUmB,OAAOP,EAAKX,EAAaD,UAAY,OAGjH,MAAMoB,EAAwB,CAC5BC,MAAO,CACLC,KAAMlB,GAERY,MAAO,CACLO,KAAM,GACNC,KAAM,WACNC,UAAW,CACTC,SAAU,EACVC,UAAUC,GAEDA,EAAMC,OADY,EACgB,GAAGD,EAAME,UAAU,EADnC,QAC+DF,GAG5FzB,KAAMI,GAERwB,MAAO,CACLP,KAAM,SAERQ,OAAQ,CACN7B,KAAM,IAER8B,SAAU,CAAC,CACTT,KAAM,SACNU,SAAU3B,EAASsB,OAAS,MAK5B,GAAuB,IAAvB3B,EAAY2B,OACdT,EAAOe,OAASnC,EAAQW,KAAKyB,IACpB,CACLb,KAAMa,EACNjC,KAAMA,EAAKQ,KAAYC,GAAAA,EAAKwB,KAC5BZ,KAAM,MACNa,SAAU,CACRC,MAAO,UAETC,MAAO,CACLC,MAAM,EACNC,SAAU,cAIfrB,EAAOY,OAAiC7B,KAAOH,OAClD,GACgC,IAAvBE,EAAY2B,OAAc,CACjC,MAAMa,EAAM1C,EAAQW,KAAKgC,GAChB7B,EAAaG,eAAeN,KAAKiC,IACtC,MAAMC,EAAoB,CACxBtB,KAAM,GAAGqB,GAAoB,OAAOD,IACpCnB,KAAM,MACNsB,MAAOH,EACPN,SAAU,CACRC,MAAO,UAETnC,KAAM,GACNoC,MAAO,CACLC,MAAM,EACNC,SAAU,WAcP,OAXPI,EAAI1C,MAAQF,EAAagB,eAAiB,IAAIN,KAAKoC,IACjD,IAAIC,EAAoC,KAQxC,OAPK7C,EAAA8C,SAASrC,IACRE,EAAad,SAAWY,EAAKE,EAAad,WAAa4C,GAAoB3C,EAAaD,SAAWY,EAAKX,EAAaD,WAAa+C,GAChIF,EAAIC,QACME,EAAApC,EAAKiC,EAAIC,QAAU,KACjC,IAGGE,GAAa,EAAA,IACnBnC,QAAOlB,GAAW,KAANA,IACRkD,CAAA,KACH,KACLK,OAEH9B,EAAOe,OAASO,SACTtB,EAAOY,MAAA,CAUhB,SAASmB,EACPC,EACA5B,EACArB,EACAoB,GAEIf,MAAM6C,QAAQD,GACXA,EAAAH,SAASrC,IACRA,IACFA,EAAKY,KAAOA,EACC,aAATA,IACDZ,EAA4BT,KAAOA,GAAQ,GAC5CS,EAAKW,KAAOA,GAAQ,IACtB,IAIG6B,IACPA,EAAK5B,KAAOA,EACC,aAATA,IACD4B,EAA4BjD,KAAOA,GAAQ,GAC5CiD,EAAK7B,KAAOA,GAAQ,IAExB,CAIF,OAAQlB,EAAWiD,aACjB,IAAK,aACL,IAAK,UACHH,EAAc/B,EAAOJ,MAAO,WAAYT,EAAUN,GAAcD,SAAW,IAC7DmD,EAAA/B,EAAOW,MAAO,SAC5B,MAEF,IAAK,iBACWoB,EAAA/B,EAAOJ,MAAO,SAC5BmC,EAAc/B,EAAOW,MAAO,WAAYxB,EAAUN,GAAcD,SAAW,IAIxE,OAAAR,EAAM4B,EAAQf,EAAYkD,aAAA,WAGzBC,EAAA,CAAEC,SAAU7D,EAAc2D,aAAczD,EAAiBQ,UAAWP,GAAS,IAAMM,EAAAC"}
1
+ {"version":3,"file":"bar.vue.mjs","sources":["../../../../../../../packages/components/src/data-chart/src/components/bar.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport type { LegendComponentOption, XAXisComponentOption, YAXisComponentOption } from 'echarts'\nimport type {\n EChartsOption,\n IFormatPublicData,\n SeriesOption,\n} from '../utils/types'\nimport { uniq } from 'lodash-es'\nimport { InjectionChartMerge } from '../utils/injectionKeys'\nimport { useCharts } from '../utils/useCharts'\n\n// 定义组件名称\ndefineOptions({\n name: 'DataChartBar',\n})\n\n// 定义组件属性\nconst {\n chartOptions,\n chartData,\n subShowType = 'bar-simple',\n} = defineProps<{\n chartData: IFormatPublicData\n subShowType: string\n chartOptions: EChartsOption\n}>()\n\n// 注入合并函数,并明确类型\nconst merge = inject(InjectionChartMerge, (v: any) => v, true) as (config: EChartsOption, chartOptions: EChartsOption) => EChartsOption\nconst dataChartBar = ref<HTMLElement | null>(null)\n\n// 计算图表选项\nconst barChartOptions = computed<EChartsOption>(() => {\n const { colDesc, xGroupByDesc, groupByDesc, data = [], modelName } = chartData\n\n const axisData = Array.from(new Set(data.map(item => item[xGroupByDesc.colDesc || '']))).filter(item => item !== undefined && item !== null) || []\n\n // 创建新的对象而不是修改原对象\n const yGroupByDesc = {\n ...groupByDesc.find(item => !item.xAxis) || {\n groupByDesc: null,\n groupByValues: [],\n colDesc: '',\n xAxis: false,\n },\n groupByValues: uniq(data.map(item => groupByDesc.find(item => !item.xAxis)?.colDesc ? String(item[groupByDesc.find(item => !item.xAxis)?.colDesc || '']) : '')),\n }\n\n // 创建新的 xGroupByDesc 对象\n const newXGroupByDesc = xGroupByDesc\n ? {\n ...xGroupByDesc,\n groupByValues: uniq(data.map(item => xGroupByDesc.colDesc ? String(item[xGroupByDesc.colDesc]) : '')),\n }\n : xGroupByDesc\n\n const config: EChartsOption = {\n title: {\n text: modelName,\n },\n xAxis: {\n name: '',\n type: 'category',\n axisLabel: {\n interval: 0, // 强制显示所有标签\n formatter(value: string) {\n const screenshotLength = 5\n return value.length > screenshotLength ? `${value.substring(0, screenshotLength)}...` : value // 截取前5个字符并添加省略号\n },\n },\n data: axisData,\n },\n yAxis: {\n type: 'value',\n },\n legend: {\n data: [],\n },\n dataZoom: [{\n type: 'inside',\n disabled: axisData.length < 15,\n }],\n }\n\n // 堆叠图\n if (groupByDesc.length === 1) {\n config.series = colDesc.map((yItem) => {\n return {\n name: yItem,\n data: data.map(item => item[yItem]),\n type: 'bar',\n emphasis: {\n focus: 'series',\n },\n label: {\n show: true,\n position: 'inside',\n },\n }\n });\n (config.legend as LegendComponentOption).data = colDesc\n }\n else if (groupByDesc.length === 2) {\n const arr = colDesc.map((colDescItem) => {\n return yGroupByDesc.groupByValues?.map((yGroupByDescItem) => {\n const obj: SeriesOption = {\n name: `${yGroupByDescItem || '/'}-${colDescItem}`,\n type: 'bar',\n stack: colDescItem,\n emphasis: {\n focus: 'series',\n },\n data: [],\n label: {\n show: true,\n position: 'inside',\n },\n }\n obj.data = (newXGroupByDesc?.groupByValues || []).map((xGroupByDescItem) => {\n let targetVal: number | string | null = null\n data.forEach((item) => {\n if (yGroupByDesc.colDesc && item[yGroupByDesc.colDesc] === yGroupByDescItem && newXGroupByDesc?.colDesc && item[newXGroupByDesc.colDesc] === xGroupByDescItem) {\n if (obj.stack) {\n targetVal = item[obj.stack] ?? null\n }\n }\n })\n return targetVal || ''\n }).filter(v => v !== '')\n return obj\n }) || []\n }).flat()\n\n config.series = arr\n delete config.legend\n }\n\n // 1. 定义轴类型\n type CategoryAxisOption = XAXisComponentOption & {\n type: 'category'\n data: (string | number)[]\n }\n\n // 2. 创建配置轴的辅助函数\n function configureAxis(\n axis: XAXisComponentOption | XAXisComponentOption[] | YAXisComponentOption | YAXisComponentOption[] | undefined,\n type: 'category' | 'value',\n data?: (string | number)[],\n name?: string,\n ) {\n if (Array.isArray(axis)) {\n axis.forEach((item) => {\n if (item) {\n item.type = type\n if (type === 'category') {\n (item as CategoryAxisOption).data = data || []\n item.name = name || ''\n }\n }\n })\n }\n else if (axis) {\n axis.type = type\n if (type === 'category') {\n (axis as CategoryAxisOption).data = data || []\n axis.name = name || ''\n }\n }\n }\n\n // 3. 使用配置函数\n switch (subShowType) {\n case 'bar-simple':\n case 'default':\n configureAxis(config.xAxis, 'category', axisData, xGroupByDesc?.colDesc || '')\n configureAxis(config.yAxis, 'value')\n break\n\n case 'bar-y-category':\n configureAxis(config.xAxis, 'value')\n configureAxis(config.yAxis, 'category', axisData, xGroupByDesc?.colDesc || '')\n break\n }\n\n return merge(config, chartOptions)\n})\n\nuseCharts({ chartDOM: dataChartBar, chartOptions: barChartOptions, chartData: computed(() => chartData) })\n</script>\n\n<template>\n <div\n ref=\"dataChartBar\"\n class=\"data-chart-bar\"\n />\n</template>\n"],"names":["merge","inject","InjectionChartMerge","v","dataChartBar","ref","barChartOptions","computed","colDesc","xGroupByDesc","groupByDesc","data","modelName","__props","chartData","axisData","Array","from","Set","map","item","filter","yGroupByDesc","find","xAxis","groupByValues","uniq","String","newXGroupByDesc","config","title","text","name","type","axisLabel","interval","formatter","value","length","substring","yAxis","legend","dataZoom","disabled","series","yItem","emphasis","focus","label","show","position","arr","colDescItem","yGroupByDescItem","obj","stack","xGroupByDescItem","targetVal","forEach","flat","configureAxis","axis","isArray","subShowType","chartOptions","useCharts","chartDOM"],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- import r from"./card.vue2.mjs";import"./card.vue3.mjs";import e from"../../../../_virtual/_plugin-vue_export-helper.mjs";var a=e(r,[["__scopeId","data-v-1c14c088"]]);export{a as default};
1
+ import r from"./card.vue2.mjs";import e from"../../../../_virtual/_plugin-vue_export-helper.mjs";var a=e(r,[["__scopeId","data-v-1c14c088"]]);export{a as default};
2
2
  //# sourceMappingURL=card.vue.mjs.map
@@ -1,2 +1,2 @@
1
- import e from"./line.vue2.mjs";import"./line.vue3.mjs";import r from"../../../../_virtual/_plugin-vue_export-helper.mjs";var a=r(e,[["__scopeId","data-v-397864aa"]]);export{a as default};
1
+ import e from"./line.vue2.mjs";import r from"../../../../_virtual/_plugin-vue_export-helper.mjs";var a=r(e,[["__scopeId","data-v-397864aa"]]);export{a as default};
2
2
  //# sourceMappingURL=line.vue.mjs.map
@@ -1,2 +1,2 @@
1
- import{defineComponent as e,computed as o,provide as t,createBlock as r,openBlock as s,resolveDynamicComponent as a,unref as m,normalizeClass as p}from"vue";import{useNamespace as n}from"@qxs-bns/hooks";import{JsonToExcel as i}from"@qxs-bns/utils";import{cloneDeep as c,merge as u}from"lodash-es";import l from"./components/area.vue.mjs";import d from"./components/bar.vue.mjs";import f from"./components/card.vue.mjs";import h from"./components/funnel.vue.mjs";import y from"./components/line.vue.mjs";import j from"./components/pie.vue.mjs";import v from"./components/radar.vue.mjs";import b from"./components/scatter-simple.vue.mjs";import w from"./components/scatter.vue.mjs";import g from"./components/table.vue.mjs";import{defaultChartOption as x}from"./utils/config.mjs";import{InjectionChartMerge as D}from"./utils/injectionKeys.mjs";import{safeEvalConfig as S}from"./utils/safe-eval.mjs";import{useDataToExcelJson as T}from"./utils/useCharts.mjs";var q=e({name:"QxsDataChart",__name:"data-chart",props:{modelName:{type:String,required:!1,default:""},showTypeName:{type:String,required:!1,default:"table"},subShowType:{type:String,required:!1},data:{type:Object,required:!1,default:()=>({data:[],desc:{colDesc:[],showDesc:{showType:0,chartOptions:"{}",jsCodeSnippet:""},groupByDesc:[]}})},chartOptions:{type:null,required:!1,default:()=>({})},jsCodeSnippet:{type:String,required:!1,default:""}},setup(e,{expose:q}){const N=n("data-chart"),B={table:g,bar:d,line:y,pie:j,radar:v,scatter:w,funnel:h,area:l,card:f,"scatter-simple":b},C=o((()=>c(x[e.showTypeName]))),O=o((()=>{const{desc:{colDesc:o=[],groupByDesc:t=[]}={},data:r=[]}=e.data;let s=[],a=null;s=t?.map((e=>(e.xAxis&&(a=e),e)));const m=a?r.filter((e=>e&&e[a.colDesc])):r;return{colDesc:o||[],modelName:e.modelName,subShowType:e.subShowType,xGroupByDesc:a||{colDesc:"",groupByDesc:"",groupByValues:[],xAxis:!1},groupByDesc:s,data:m}}));return q({exportExal:function(){if(0===e.data.data.length)return void console.log("暂无数据");const o=T(e.data);i(e.modelName,o)}}),t(D,(function(o,t){let r=u({},C.value,o,t)||{};if(e.jsCodeSnippet)try{r=S(e.jsCodeSnippet,r)}catch(e){console.error("代码执行失败:",e)}return r})),(e,o)=>(s(),r(a(B[e.showTypeName]),{key:e.showTypeName,class:p([m(N).e("wrapper")]),"sub-show-type":e.subShowType,"chart-data":m(O),"chart-options":e.chartOptions},null,8,["class","sub-show-type","chart-data","chart-options"]))}});export{q as default};
1
+ import{defineComponent as e,computed as o,provide as t,createBlock as s,openBlock as r,resolveDynamicComponent as a,unref as m,normalizeClass as p}from"vue";import{useNamespace as n}from"@qxs-bns/hooks";import{JsonToExcel as i}from"@qxs-bns/utils";import{cloneDeep as c,merge as u}from"lodash-es";import*as l from"./analyze.mjs";import d from"./components/area.vue.mjs";import f from"./components/bar.vue.mjs";import y from"./components/card.vue.mjs";import h from"./components/funnel.vue.mjs";import j from"./components/line.vue.mjs";import g from"./components/pie.vue.mjs";import v from"./components/radar.vue.mjs";import b from"./components/scatter-simple.vue.mjs";import w from"./components/scatter.vue.mjs";import x from"./components/table.vue.mjs";import*as D from"./utils/config.mjs";import{defaultChartOption as S}from"./utils/config.mjs";import{InjectionChartMerge as T}from"./utils/injectionKeys.mjs";import{safeEvalConfig as q}from"./utils/safe-eval.mjs";import*as C from"./utils/types.mjs";import{useDataToExcelJson as N}from"./utils/useCharts.mjs";var B=e({name:"QxsDataChart",__name:"data-chart",props:{modelName:{type:String,required:!1,default:""},showTypeName:{type:String,required:!1,default:"table"},subShowType:{type:String,required:!1},data:{type:Object,required:!1,default:()=>({data:[],desc:{colDesc:[],showDesc:{showType:0,chartOptions:"{}",jsCodeSnippet:""},groupByDesc:[]}})},chartOptions:{type:null,required:!1,default:()=>({})},jsCodeSnippet:{type:String,required:!1,default:""}},setup(e,{expose:B}){const O=n("data-chart"),k={analyze:l,config:D,types:C},z={table:x,bar:f,line:j,pie:g,radar:v,scatter:w,funnel:h,area:d,card:y,"scatter-simple":b},A=o((()=>c(S[e.showTypeName]))),Q=o((()=>{const{desc:{colDesc:o=[],groupByDesc:t=[]}={},data:s=[]}=e.data;let r=[],a=null;r=t?.map((e=>(e.xAxis&&(a=e),e)));const m=a?s.filter((e=>e&&e[a.colDesc])):s;return{colDesc:o||[],modelName:e.modelName,subShowType:e.subShowType,xGroupByDesc:a||{colDesc:"",groupByDesc:"",groupByValues:[],xAxis:!1},groupByDesc:r,data:m}}));return B({exportExal:function(){if(0===e.data.data.length)return void console.log("暂无数据");const o=N(e.data);i(e.modelName,o)},QxsDataChartConfig:k}),t(T,(function(o,t){let s=u({},A.value,o,t)||{};if(e.jsCodeSnippet)try{s=q(e.jsCodeSnippet,s)}catch(e){console.error("代码执行失败:",e)}return s})),(e,o)=>(r(),s(a(z[e.showTypeName]),{key:e.showTypeName,class:p([m(O).e("wrapper")]),"sub-show-type":e.subShowType,"chart-data":m(Q),"chart-options":e.chartOptions},null,8,["class","sub-show-type","chart-data","chart-options"]))}});export{B as default};
2
2
  //# sourceMappingURL=data-chart.vue.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"data-chart.vue.mjs","sources":["../../../../../../packages/components/src/data-chart/src/data-chart.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport type { EChartData, EChartsOption, IFormatPublicData } from './utils/types'\nimport type { IconRow } from './utils/types'\nimport { useNamespace } from '@qxs-bns/hooks'\nimport { JsonToExcel } from '@qxs-bns/utils'\nimport { cloneDeep, merge as lodashMerge } from 'lodash-es'\nimport Area from './components/area.vue'\nimport Bar from './components/bar.vue'\nimport Card from './components/card.vue'\nimport Funnel from './components/funnel.vue'\nimport Line from './components/line.vue'\nimport Pie from './components/pie.vue'\nimport Radar from './components/radar.vue'\nimport ScatterSimple from './components/scatter-simple.vue'\nimport Scatter from './components/scatter.vue'\nimport Table from './components/table.vue'\nimport { defaultChartOption } from './utils/config'\nimport { InjectionChartMerge } from './utils/injectionKeys'\nimport { safeEvalConfig } from './utils/safe-eval'\nimport { useDataToExcelJson } from './utils/useCharts'\n\ndefineOptions({\n name: 'QxsDataChart',\n})\n\nconst {\n showTypeName = 'table',\n subShowType,\n modelName = '',\n data: propData = {\n data: [],\n desc: {\n colDesc: [],\n showDesc: {\n showType: 0,\n chartOptions: '{}',\n jsCodeSnippet: '',\n },\n groupByDesc: [],\n },\n },\n chartOptions = {},\n jsCodeSnippet = '',\n} = defineProps<{\n modelName?: string\n showTypeName?: IconRow['showTypeName']\n subShowType?: string\n data?: EChartData\n chartOptions?: EChartsOption\n jsCodeSnippet?: string\n}>()\n\nconst ns = useNamespace('data-chart')\n\nconst coms: {\n [key: string]: any\n} = {\n 'table': Table,\n 'bar': Bar,\n 'line': Line,\n 'pie': Pie,\n 'radar': Radar,\n 'scatter': Scatter,\n 'funnel': Funnel,\n 'area': Area,\n 'card': Card,\n 'scatter-simple': ScatterSimple,\n}\n\nconst defaultChartOptionCopy = computed(() => {\n return cloneDeep(defaultChartOption[showTypeName])\n})\n\nconst formatPublicData = computed<IFormatPublicData>(() => {\n const { desc: { colDesc = [], groupByDesc = [] } = {}, data = [] } = propData\n\n // 处理 X 轴数据\n let xValue = []\n\n let xGroupByDesc: EChartData['desc']['groupByDesc'][0] | null = null\n xValue = groupByDesc?.map((groupByDescItem) => {\n // if (groupByDescItem.colValues) {\n // groupByDescItem.colValuesDesc = {}\n // groupByDescItem.colValues.split(',')?.forEach((item) => {\n // const [key, value] = item.split(':')\n // groupByDescItem.colValuesDesc[key] = value\n // })\n // }\n if (groupByDescItem.xAxis) {\n xGroupByDesc = groupByDescItem\n }\n return groupByDescItem\n })\n\n const dataValue = xGroupByDesc ? data.filter(item => item && item[xGroupByDesc!.colDesc!]) : data\n\n // if (xGroupByDesc && xGroupByDesc.colValuesDesc && Object.keys(xGroupByDesc.colValuesDesc).length) {\n // const { colDesc: colDescItem, colValuesDesc } = xGroupByDesc\n // console.log('colDesc: colDescItem, colValuesDesc: ', colDescItem, colValuesDesc)\n // dataValue = dataValue.map((item) => {\n // if (typeof item[colDescItem] === 'number') {\n // item[colDescItem] = colValuesDesc[item[colDescItem]]\n // }\n // return item\n // })\n // }\n\n const mergeConfig = {\n colDesc: colDesc || [],\n modelName,\n subShowType,\n xGroupByDesc: xGroupByDesc || {\n colDesc: '',\n groupByDesc: '',\n groupByValues: [],\n xAxis: false,\n },\n groupByDesc: xValue,\n data: dataValue,\n }\n return mergeConfig\n})\n\n// 导出数据\nfunction exportExal() {\n if (propData.data.length === 0) {\n // useMessage.error('暂无数据')\n console.log('暂无数据')\n return\n }\n const arr = useDataToExcelJson(propData)\n JsonToExcel(modelName, arr)\n}\nfunction merge(config: EChartsOption, defaultConfig: EChartsOption) {\n const mergeOpt = lodashMerge({}, defaultChartOptionCopy.value, config, defaultConfig)\n let conf = mergeOpt || {}\n\n if (jsCodeSnippet) {\n try {\n // 使用安全的配置处理函数\n conf = safeEvalConfig(jsCodeSnippet, conf)\n }\n catch (error) {\n console.error('代码执行失败:', error)\n }\n }\n\n return conf\n}\n\ndefineExpose({\n exportExal,\n})\nprovide(InjectionChartMerge, merge)\n</script>\n\n<template>\n <component\n :is=\"coms[showTypeName]\"\n :key=\"showTypeName\"\n :class=\"[ns.e('wrapper')]\"\n :sub-show-type=\"subShowType\"\n :chart-data=\"formatPublicData\"\n :chart-options=\"chartOptions\"\n />\n</template>\n"],"names":["ns","useNamespace","coms","table","Table","bar","Bar","line","Line","pie","Pie","radar","Radar","scatter","Scatter","funnel","Funnel","area","Area","card","Card","ScatterSimple","defaultChartOptionCopy","computed","cloneDeep","defaultChartOption","__props","formatPublicData","desc","colDesc","groupByDesc","data","xValue","xGroupByDesc","map","groupByDescItem","xAxis","dataValue","filter","item","modelName","subShowType","groupByValues","__expose","exportExal","length","console","log","arr","useDataToExcelJson","JsonToExcel","provide","InjectionChartMerge","config","defaultConfig","conf","lodashMerge","value","jsCodeSnippet","safeEvalConfig","error"],"mappings":"+4CAoDM,MAAAA,EAAKC,EAAa,cAElBC,EAEF,CACFC,MAASC,EACTC,IAAOC,EACPC,KAAQC,EACRC,IAAOC,EACPC,MAASC,EACTC,QAAWC,EACXC,OAAUC,EACVC,KAAQC,EACRC,KAAQC,EACR,iBAAkBC,GAGdC,EAAyBC,GAAS,IAC/BC,EAAUC,EAAmBC,mBAGhCC,EAAmBJ,GAA4B,KACnD,MAAQK,MAAMC,QAAEA,EAAU,eAAIC,EAAc,IAAO,CAAI,EAAAC,KAAAA,EAAO,IAAOL,EAAAK,KAGrE,IAAIC,EAAS,GAETC,EAA4D,KACvDD,EAAAF,GAAaI,KAAKC,IAQrBA,EAAgBC,QACHH,EAAAE,GAEVA,KAGH,MAAAE,EAAYJ,EAAeF,EAAKO,QAAOC,GAAQA,GAAQA,EAAKN,EAAcJ,WAAaE,EA0BtF,MAba,CAClBF,QAASA,GAAW,GACpBW,UAASd,EAAAc,UACTC,YAAWf,EAAAe,YACXR,aAAcA,GAAgB,CAC5BJ,QAAS,GACTC,YAAa,GACbY,cAAe,GACfN,OAAO,GAETN,YAAaE,EACbD,KAAMM,EAED,WA8BIM,EAAA,CACXC,WA3BF,WACE,GAA6B,IAAzBlB,OAASK,KAAKc,OAGhB,YADAC,QAAQC,IAAI,QAGR,MAAAC,EAAMC,EAAmBvB,EAAQK,MAC3BmB,EAAAxB,EAAAc,UAAWQ,EAAG,IAsB5BG,EAAQC,GApBC,SAAMC,EAAuBC,GAEhC,IAAAC,EADaC,EAAY,GAAIlC,EAAuBmC,MAAOJ,EAAQC,IAChD,CAAC,EAExB,GAAI5B,EAAAgC,cACE,IAEKH,EAAAI,EAAejC,gBAAe6B,SAEhCK,GACGd,QAAAc,MAAM,UAAWA,EAAK,CAI3B,OAAAL,CAAA"}
1
+ {"version":3,"file":"data-chart.vue.mjs","sources":["../../../../../../packages/components/src/data-chart/src/data-chart.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport type { EChartData, EChartsOption, IconRow, IFormatPublicData } from './utils/types'\nimport { useNamespace } from '@qxs-bns/hooks'\nimport { JsonToExcel } from '@qxs-bns/utils'\nimport { cloneDeep, merge as lodashMerge } from 'lodash-es'\nimport * as analyze from './analyze'\nimport Area from './components/area.vue'\nimport Bar from './components/bar.vue'\nimport Card from './components/card.vue'\nimport Funnel from './components/funnel.vue'\nimport Line from './components/line.vue'\nimport Pie from './components/pie.vue'\nimport Radar from './components/radar.vue'\nimport ScatterSimple from './components/scatter-simple.vue'\nimport Scatter from './components/scatter.vue'\nimport Table from './components/table.vue'\nimport * as config from './utils/config'\nimport { defaultChartOption } from './utils/config'\nimport { InjectionChartMerge } from './utils/injectionKeys'\nimport { safeEvalConfig } from './utils/safe-eval'\nimport * as types from './utils/types'\nimport { useDataToExcelJson } from './utils/useCharts'\n\ndefineOptions({\n name: 'QxsDataChart',\n})\nconst {\n showTypeName = 'table',\n subShowType,\n modelName = '',\n data: propData = {\n data: [],\n desc: {\n colDesc: [],\n showDesc: {\n showType: 0,\n chartOptions: '{}',\n jsCodeSnippet: '',\n },\n groupByDesc: [],\n },\n },\n chartOptions = {},\n jsCodeSnippet = '',\n} = defineProps<{\n modelName?: string\n showTypeName?: IconRow['showTypeName']\n subShowType?: string\n data?: EChartData\n chartOptions?: EChartsOption\n jsCodeSnippet?: string\n}>()\n\nconst ns = useNamespace('data-chart')\n\nconst QxsDataChartConfig = {\n analyze,\n config,\n types,\n}\nconst coms: {\n [key: string]: any\n} = {\n 'table': Table,\n 'bar': Bar,\n 'line': Line,\n 'pie': Pie,\n 'radar': Radar,\n 'scatter': Scatter,\n 'funnel': Funnel,\n 'area': Area,\n 'card': Card,\n 'scatter-simple': ScatterSimple,\n}\n\nconst defaultChartOptionCopy = computed(() => {\n return cloneDeep(defaultChartOption[showTypeName])\n})\n\nconst formatPublicData = computed<IFormatPublicData>(() => {\n const { desc: { colDesc = [], groupByDesc = [] } = {}, data = [] } = propData\n\n // 处理 X 轴数据\n let xValue = []\n\n let xGroupByDesc: EChartData['desc']['groupByDesc'][0] | null = null\n xValue = groupByDesc?.map((groupByDescItem) => {\n // if (groupByDescItem.colValues) {\n // groupByDescItem.colValuesDesc = {}\n // groupByDescItem.colValues.split(',')?.forEach((item) => {\n // const [key, value] = item.split(':')\n // groupByDescItem.colValuesDesc[key] = value\n // })\n // }\n if (groupByDescItem.xAxis) {\n xGroupByDesc = groupByDescItem\n }\n return groupByDescItem\n })\n\n const dataValue = xGroupByDesc ? data.filter(item => item && item[xGroupByDesc!.colDesc!]) : data\n\n // if (xGroupByDesc && xGroupByDesc.colValuesDesc && Object.keys(xGroupByDesc.colValuesDesc).length) {\n // const { colDesc: colDescItem, colValuesDesc } = xGroupByDesc\n // console.log('colDesc: colDescItem, colValuesDesc: ', colDescItem, colValuesDesc)\n // dataValue = dataValue.map((item) => {\n // if (typeof item[colDescItem] === 'number') {\n // item[colDescItem] = colValuesDesc[item[colDescItem]]\n // }\n // return item\n // })\n // }\n\n const mergeConfig = {\n colDesc: colDesc || [],\n modelName,\n subShowType,\n xGroupByDesc: xGroupByDesc || {\n colDesc: '',\n groupByDesc: '',\n groupByValues: [],\n xAxis: false,\n },\n groupByDesc: xValue,\n data: dataValue,\n }\n return mergeConfig\n})\n\n// 导出数据\nfunction exportExal() {\n if (propData.data.length === 0) {\n // useMessage.error('暂无数据')\n console.log('暂无数据')\n return\n }\n const arr = useDataToExcelJson(propData)\n JsonToExcel(modelName, arr)\n}\nfunction merge(config: EChartsOption, defaultConfig: EChartsOption) {\n const mergeOpt = lodashMerge({}, defaultChartOptionCopy.value, config, defaultConfig)\n let conf = mergeOpt || {}\n\n if (jsCodeSnippet) {\n try {\n // 使用安全的配置处理函数\n conf = safeEvalConfig(jsCodeSnippet, conf)\n }\n catch (error) {\n console.error('代码执行失败:', error)\n }\n }\n\n return conf\n}\n\ndefineExpose({\n exportExal,\n QxsDataChartConfig,\n})\nprovide(InjectionChartMerge, merge)\n</script>\n\n<template>\n <component\n :is=\"coms[showTypeName]\"\n :key=\"showTypeName\"\n :class=\"[ns.e('wrapper')]\"\n :sub-show-type=\"subShowType\"\n :chart-data=\"formatPublicData\"\n :chart-options=\"chartOptions\"\n />\n</template>\n"],"names":["ns","useNamespace","QxsDataChartConfig","analyze","config","types","coms","table","Table","bar","Bar","line","Line","pie","Pie","radar","Radar","scatter","Scatter","funnel","Funnel","area","Area","card","Card","ScatterSimple","defaultChartOptionCopy","computed","cloneDeep","defaultChartOption","__props","formatPublicData","desc","colDesc","groupByDesc","data","xValue","xGroupByDesc","map","groupByDescItem","xAxis","dataValue","filter","item","modelName","subShowType","groupByValues","__expose","exportExal","length","console","log","arr","useDataToExcelJson","JsonToExcel","provide","InjectionChartMerge","defaultConfig","conf","lodashMerge","value","jsCodeSnippet","safeEvalConfig","error"],"mappings":"w/CAqDM,MAAAA,EAAKC,EAAa,cAElBC,EAAqB,CACzBC,UACAC,SACAC,SAEIC,EAEF,CACFC,MAASC,EACTC,IAAOC,EACPC,KAAQC,EACRC,IAAOC,EACPC,MAASC,EACTC,QAAWC,EACXC,OAAUC,EACVC,KAAQC,EACRC,KAAQC,EACR,iBAAkBC,GAGdC,EAAyBC,GAAS,IAC/BC,EAAUC,EAAmBC,mBAGhCC,EAAmBJ,GAA4B,KACnD,MAAQK,MAAMC,QAAEA,EAAU,eAAIC,EAAc,IAAO,CAAI,EAAAC,KAAAA,EAAO,IAAOL,EAAAK,KAGrE,IAAIC,EAAS,GAETC,EAA4D,KACvDD,EAAAF,GAAaI,KAAKC,IAQrBA,EAAgBC,QACHH,EAAAE,GAEVA,KAGH,MAAAE,EAAYJ,EAAeF,EAAKO,QAAOC,GAAQA,GAAQA,EAAKN,EAAcJ,WAAaE,EA0BtF,MAba,CAClBF,QAASA,GAAW,GACpBW,UAASd,EAAAc,UACTC,YAAWf,EAAAe,YACXR,aAAcA,GAAgB,CAC5BJ,QAAS,GACTC,YAAa,GACbY,cAAe,GACfN,OAAO,GAETN,YAAaE,EACbD,KAAMM,EAED,WA8BIM,EAAA,CACXC,WA3BF,WACE,GAA6B,IAAzBlB,OAASK,KAAKc,OAGhB,YADAC,QAAQC,IAAI,QAGR,MAAAC,EAAMC,EAAmBvB,EAAQK,MAC3BmB,EAAAxB,EAAAc,UAAWQ,EAAG,EAqB1BlD,uBAEFqD,EAAQC,GArBC,SAAMpD,EAAuBqD,GAEhC,IAAAC,EADaC,EAAY,GAAIjC,EAAuBkC,MAAOxD,EAAQqD,IAChD,CAAC,EAExB,GAAI3B,EAAA+B,cACE,IAEKH,EAAAI,EAAehC,gBAAe4B,SAEhCK,GACGb,QAAAa,MAAM,UAAWA,EAAK,CAI3B,OAAAL,CAAA"}
@@ -0,0 +1,2 @@
1
+
2
+ //# sourceMappingURL=types.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.mjs","sources":[],"sourcesContent":[],"names":[],"mappings":""}
package/lib/index.cjs CHANGED
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("./src/defaults.cjs"),t=require("./src/data-chart/index.cjs"),s=require("./src/file-upload/index.cjs"),r=require("./src/fixed-action-bar/index.cjs"),o=require("./src/image-upload/index.cjs"),c=require("./src/photo-crop-tool/index.cjs"),i=require("./src/subject-action/index.cjs"),a=require("./src/subject-layout/index.cjs"),x=require("./src/subject-list/index.cjs"),u=require("./src/subject-type/index.cjs"),p=require("./src/tiny-mce-editor/index.cjs"),n=require("./src/data-chart/src/analyze.cjs"),d=require("./src/data-chart/src/utils/config.cjs");const l=e.default.install,j=e.default.version;exports.default=e.default,exports.QxsDataChart=t.QxsDataChart,exports.QxsFileUpload=s.QxsFileUpload,exports.QxsFixedActionBar=r.QxsFixedActionBar,exports.QxsImageUpload=o.QxsImageUpload,exports.QxsPhotoCropTool=c.QxsPhotoCropTool,exports.QxsSubjectAction=i.QxsSubjectAction,exports.QxsSubjectLayout=a.QxsSubjectLayout,exports.QxsSubjectList=x.QxsSubjectList,exports.QxsSubjectType=u.QxsSubjectType,exports.QxsTinyMceEditor=p.QxsTinyMceEditor,exports.getObjectValue=n.getObjectValue,exports.keysMap=n.keysMap,exports.defaultChartOption=d.defaultChartOption,exports.getGeoJsonData=d.getGeoJsonData,exports.iconList=d.iconList,exports.setDefaultChartOption=d.setDefaultChartOption,exports.showTypeText=d.showTypeText,exports.install=l,exports.version=j;
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("./src/defaults.cjs"),s=require("./src/data-chart/index.cjs"),r=require("./src/file-upload/index.cjs"),t=require("./src/fixed-action-bar/index.cjs"),o=require("./src/image-upload/index.cjs"),i=require("./src/photo-crop-tool/index.cjs"),c=require("./src/subject-action/index.cjs"),x=require("./src/subject-layout/index.cjs"),u=require("./src/subject-list/index.cjs"),a=require("./src/subject-type/index.cjs"),d=require("./src/tiny-mce-editor/index.cjs");const p=e.default.install,l=e.default.version;exports.default=e.default,exports.QxsDataChart=s.QxsDataChart,exports.QxsFileUpload=r.QxsFileUpload,exports.QxsFixedActionBar=t.QxsFixedActionBar,exports.QxsImageUpload=o.QxsImageUpload,exports.QxsPhotoCropTool=i.QxsPhotoCropTool,exports.QxsSubjectAction=c.QxsSubjectAction,exports.QxsSubjectLayout=x.QxsSubjectLayout,exports.QxsSubjectList=u.QxsSubjectList,exports.QxsSubjectType=a.QxsSubjectType,exports.QxsTinyMceEditor=d.QxsTinyMceEditor,exports.install=p,exports.version=l;
2
2
  //# sourceMappingURL=index.cjs.map
package/lib/index.cjs.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.cjs","sources":["../../../packages/components/index.ts"],"sourcesContent":["import installer from './src/defaults'\n\nexport * from './src/components'\n\nexport const install = installer.install\nexport const version = installer.version\nexport default installer\n"],"names":["install","installer","version"],"mappings":"wnBAIaA,MAAAA,EAAUC,EAAAA,QAAUD,QACpBE,EAAUD,EAAAA,QAAUC"}
1
+ {"version":3,"file":"index.cjs","sources":["../../../packages/components/index.ts"],"sourcesContent":["import installer from './src/defaults'\n\nexport * from './src/components'\n\nexport const install = installer.install\nexport const version = installer.version\nexport default installer\n"],"names":["install","installer","version"],"mappings":"uhBAIaA,MAAAA,EAAUC,EAAAA,QAAUD,QACpBE,EAAUD,EAAAA,QAAUC"}
package/lib/index.css ADDED
@@ -0,0 +1,82 @@
1
+ /* unplugin-vue-components disabled */
2
+ .data-chart-area-wrap[data-v-51660d7b] {
3
+ position: relative;
4
+ }
5
+ .data-chart-area-wrap .city-select[data-v-51660d7b] {
6
+ position: absolute;
7
+ top: 10px;
8
+ right: 100px;
9
+ z-index: 1;
10
+ width: 120px;
11
+ }
12
+ .data-chart-area-wrap .data-chart-area[data-v-51660d7b] {
13
+ height: 100%;
14
+ }
15
+ /* unplugin-vue-components disabled */
16
+ .data-chart-card[data-v-1c14c088] {
17
+ display: flex;
18
+ flex-direction: column;
19
+ }
20
+ .data-chart-card .title[data-v-1c14c088] {
21
+ margin: 0;
22
+ display: flex;
23
+ align-items: center;
24
+ justify-content: space-between;
25
+ padding: 0 5.5px;
26
+ line-height: 26px;
27
+ font-family: sans-serif;
28
+ font-size: 14px;
29
+ font-weight: 600;
30
+ color: #464646;
31
+ }
32
+ .data-chart-card .data-chart-card-grid-layout[data-v-1c14c088] {
33
+ display: grid;
34
+ grid-template-columns: repeat(auto-fill, minmax(300px, 1fr));
35
+ gap: 10px;
36
+ width: calc(100% - 3px);
37
+ }
38
+ .data-chart-card .data-chart-card-wrap[data-v-1c14c088] {
39
+ height: 100% !important;
40
+ }
41
+ .data-chart-card .data-chart-card-wrap .card-item[data-v-1c14c088] {
42
+ width: 100% !important;
43
+ }
44
+ .data-chart-card .card-item[data-v-1c14c088] {
45
+ position: relative;
46
+ background-repeat: no-repeat;
47
+ background-position: left top, right top;
48
+ background-size: contain, contain;
49
+ border: 2px solid #2196f3;
50
+ border-radius: 6px;
51
+ }
52
+ .data-chart-card .card-item .suffix-icon[data-v-1c14c088] {
53
+ position: absolute;
54
+ right: 1px;
55
+ bottom: calc(25% - 14px);
56
+ width: 20px;
57
+ font-size: 20px;
58
+ font-weight: bold;
59
+ color: #fff;
60
+ text-align: center;
61
+ }
62
+ .data-chart-card .card-item .card-title[data-v-1c14c088] {
63
+ padding-left: 15px;
64
+ margin-top: 10px;
65
+ margin-bottom: 5px;
66
+ overflow: hidden;
67
+ font-size: 16px;
68
+ font-weight: bold;
69
+ color: #2196f3;
70
+ text-overflow: ellipsis;
71
+ white-space: nowrap;
72
+ }
73
+ .data-chart-card .card-item .context[data-v-1c14c088] {
74
+ padding: 0 30px 10px 20px;
75
+ font-size: 14px;
76
+ color: #464646;
77
+ }
78
+ /* unplugin-vue-components disabled */
79
+ .data-chart-line[data-v-397864aa] {
80
+ width: 100%;
81
+ height: 100%;
82
+ }
@@ -1,2 +1,2 @@
1
- "use strict";exports.version="0.0.50";
1
+ "use strict";exports.version="0.0.52";
2
2
  //# sourceMappingURL=package.json.cjs.map
@@ -1,2 +1,2 @@
1
- "use strict";var e=require("./data-chart/index.cjs"),t=require("./file-upload/index.cjs"),s=require("./fixed-action-bar/index.cjs"),o=require("./image-upload/index.cjs"),r=require("./photo-crop-tool/index.cjs"),i=require("./subject-action/index.cjs"),x=require("./subject-layout/index.cjs"),a=require("./subject-list/index.cjs"),c=require("./subject-type/index.cjs"),p=require("./tiny-mce-editor/index.cjs"),u=require("./data-chart/src/analyze.cjs"),n=require("./data-chart/src/utils/config.cjs");exports.QxsDataChart=e.QxsDataChart,exports.QxsFileUpload=t.QxsFileUpload,exports.QxsFixedActionBar=s.QxsFixedActionBar,exports.QxsImageUpload=o.QxsImageUpload,exports.QxsPhotoCropTool=r.QxsPhotoCropTool,exports.QxsSubjectAction=i.QxsSubjectAction,exports.QxsSubjectLayout=x.QxsSubjectLayout,exports.QxsSubjectList=a.QxsSubjectList,exports.QxsSubjectType=c.QxsSubjectType,exports.QxsTinyMceEditor=p.QxsTinyMceEditor,exports.getObjectValue=u.getObjectValue,exports.keysMap=u.keysMap,exports.defaultChartOption=n.defaultChartOption,exports.getGeoJsonData=n.getGeoJsonData,exports.iconList=n.iconList,exports.setDefaultChartOption=n.setDefaultChartOption,exports.showTypeText=n.showTypeText;
1
+ "use strict";var e=require("./data-chart/index.cjs"),t=require("./file-upload/index.cjs"),s=require("./fixed-action-bar/index.cjs"),r=require("./image-upload/index.cjs"),i=require("./photo-crop-tool/index.cjs"),o=require("./subject-action/index.cjs"),x=require("./subject-layout/index.cjs"),c=require("./subject-list/index.cjs"),u=require("./subject-type/index.cjs"),a=require("./tiny-mce-editor/index.cjs");exports.QxsDataChart=e.QxsDataChart,exports.QxsFileUpload=t.QxsFileUpload,exports.QxsFixedActionBar=s.QxsFixedActionBar,exports.QxsImageUpload=r.QxsImageUpload,exports.QxsPhotoCropTool=i.QxsPhotoCropTool,exports.QxsSubjectAction=o.QxsSubjectAction,exports.QxsSubjectLayout=x.QxsSubjectLayout,exports.QxsSubjectList=c.QxsSubjectList,exports.QxsSubjectType=u.QxsSubjectType,exports.QxsTinyMceEditor=a.QxsTinyMceEditor;
2
2
  //# sourceMappingURL=components.cjs.map
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var t=require("../withInstall.cjs"),e=require("./src/data-chart.vue.cjs"),s=require("./src/utils/config.cjs");const r=t.withInstall(e.default);exports.defaultChartOption=s.defaultChartOption,exports.getGeoJsonData=s.getGeoJsonData,exports.iconList=s.iconList,exports.setDefaultChartOption=s.setDefaultChartOption,exports.showTypeText=s.showTypeText,exports.QxsDataChart=r,exports.default=r;
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("../withInstall.cjs"),t=require("./src/data-chart.vue.cjs");const r=e.withInstall(t.default);exports.QxsDataChart=r,exports.default=r;
2
2
  //# sourceMappingURL=index.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.cjs","sources":["../../../../../packages/components/src/data-chart/index.ts"],"sourcesContent":["import { withInstall } from '../withInstall'\nimport component from './src/data-chart.vue'\n\nexport * from './src/analyze'\nexport * from './src/utils/types'\nexport * from './src/utils/config'\n\nconst QxsDataChart = withInstall(component)\n\nexport {\n QxsDataChart,\n}\nexport default QxsDataChart\n"],"names":["QxsDataChart","withInstall","component","default"],"mappings":"kLAOA,MAAMA,EAAeC,cAAYC,EAASC"}
1
+ {"version":3,"file":"index.cjs","sources":["../../../../../packages/components/src/data-chart/index.ts"],"sourcesContent":["import { withInstall } from '../withInstall'\n\nimport component from './src/data-chart.vue'\n\nconst QxsDataChart = withInstall(component)\n\nexport {\n QxsDataChart,\n}\nexport default QxsDataChart\n"],"names":["QxsDataChart","withInstall","component","default"],"mappings":"8IAIA,MAAMA,EAAeC,cAAYC,EAASC"}
@@ -1,2 +1,2 @@
1
- "use strict";const e={"描述性分析":{"平均值":{handler:e=>{let{sourceData:l,dealJson:a}=e;const{dealKey:t}=a,r=l.sort(((e,l)=>Number(l[t])-Number(e[t])));return(r.reduce(((e,l)=>e+Number(l[t])),0)/r.length).toFixed(2)||""}},"中位数":{dealOptSchema:[{label:"目标值类型",cascaderProps:{value:"label",label:"label"},select:[{label:"值"},{label:"名字"}],interactionType:"select"}],handler:e=>{let{sourceData:l,dealJson:a}=e;const{dealKey:t,source:r,dealOpt:u}=a,n=u["目标值类型"]?.keyPath,c=l.sort(((e,l)=>Number(l[t])-Number(e[t])));return c[Math.floor(c.length/2)]["值"===n?t:"名字"===n?r:""]||""}},"排序":{dealOptSchema:[{label:"排序方式",cascaderProps:{value:"label",label:"label"},select:[{label:"默认",children:[{label:"第几名",valueVerify:{type:"number",default:1}},{label:"范围",valueVerify:{type:"number[]",default:[1,2]}}]},{label:"升序",children:[{label:"第几名",valueVerify:{type:"number",default:1}},{label:"范围",valueVerify:{type:"number[]",default:[1,2]}}]},{label:"降序",children:[{label:"第几名",valueVerify:{type:"number",default:1}},{label:"范围",valueVerify:{type:"number[]",default:[1,2]}}]}],interactionType:"input"},{label:"目标值类型",cascaderProps:{value:"label",label:"label"},select:[{label:"值"},{label:"占比"},{label:"名字"}],interactionType:"select"}],handler:e=>{let{sourceData:l,dealJson:a}=e;const{dealKey:t,source:r,dealOpt:u}=a;let n="";const c=u["目标值类型"].keyPath;let s=[];if(s=u["排序方式"].keyPath.includes("默认")?l:l.sort(((e,l)=>u["排序方式"].keyPath.includes("升序")?Number(e[t])-Number(l[t]):u["排序方式"].keyPath.includes("降序")?Number(l[t])-Number(e[t]):0)),u["排序方式"].keyPath.includes("第几名")){const e=s[u["排序方式"].value-1]||{},l="值"===c?t:"名字"===c?r:"占比"===c?t:"";if(u["目标值类型"].keyPath.includes("占比")){const a=s.reduce(((e,a)=>e+Number(a[l])),0);n=e[l]?`${(Number(e[l])/a*100).toFixed(2)}%`:""}else n=e[l]||""}else if(u["排序方式"].keyPath.includes("范围")){n=s.slice(u["排序方式"].value[0]-1,u["排序方式"].value[1]).map((e=>e["值"===c?t:"名字"===c?r:""])).join("、").replace(/、([^、]+)$/,"和$1")}return n||""}}},"趋势分析":{"整体趋势":{handler:e=>{let{sourceData:l,dealJson:a}=e;const t=l.map((e=>e[a.dealKey])),r=t.length;let u=0,n=0,c=0,s=0;for(let e=0;e<r;e++)u+=e,n+=Number(t[e]),c+=e*Number(t[e]),s+=e*e;const b=(r*c-u*n)/(r*s-u*u);return b>0?"增长":b<0?"下降":"平稳"}}}};exports.getObjectValue=function(e,l){return l.reduce(((e,l)=>e?e[l]:void 0),e)},exports.keysMap=e;
1
+ "use strict";const e={"描述性分析":{"平均值":{handler:e=>{let{sourceData:l,dealJson:a}=e;const{dealKey:t}=a,r=l.sort(((e,l)=>Number(l[t])-Number(e[t])));return(r.reduce(((e,l)=>e+Number(l[t])),0)/r.length).toFixed(2)||""}},"中位数":{dealOptSchema:[{label:"目标值类型",cascaderProps:{value:"label",label:"label"},select:[{label:"值"},{label:"名字"}],interactionType:"select"}],handler:e=>{let{sourceData:l,dealJson:a}=e;const{dealKey:t,source:r,dealOpt:u}=a,n=u["目标值类型"]?.keyPath,c=l.sort(((e,l)=>Number(l[t])-Number(e[t])));return c[Math.floor(c.length/2)]["值"===n?t:"名字"===n?r:""]||""}},"排序":{dealOptSchema:[{label:"排序方式",cascaderProps:{value:"label",label:"label"},select:[{label:"默认",children:[{label:"第几名",valueVerify:{type:"number",default:1}},{label:"范围",valueVerify:{type:"number[]",default:[1,2]}}]},{label:"升序",children:[{label:"第几名",valueVerify:{type:"number",default:1}},{label:"范围",valueVerify:{type:"number[]",default:[1,2]}}]},{label:"降序",children:[{label:"第几名",valueVerify:{type:"number",default:1}},{label:"范围",valueVerify:{type:"number[]",default:[1,2]}}]}],interactionType:"input"},{label:"目标值类型",cascaderProps:{value:"label",label:"label"},select:[{label:"值"},{label:"占比"},{label:"名字"}],interactionType:"select"}],handler:e=>{let{sourceData:l,dealJson:a}=e;const{dealKey:t,source:r,dealOpt:u}=a;let n="";const c=u["目标值类型"].keyPath;let s=[];if(s=u["排序方式"].keyPath.includes("默认")?l:l.sort(((e,l)=>u["排序方式"].keyPath.includes("升序")?Number(e[t])-Number(l[t]):u["排序方式"].keyPath.includes("降序")?Number(l[t])-Number(e[t]):0)),u["排序方式"].keyPath.includes("第几名")){const e=s[u["排序方式"].value-1]||{},l="值"===c?t:"名字"===c?r:"占比"===c?t:"";if(u["目标值类型"].keyPath.includes("占比")){const a=s.reduce(((e,a)=>e+Number(a[l])),0);n=e[l]?`${(Number(e[l])/a*100).toFixed(2)}%`:""}else n=e[l]||""}else if(u["排序方式"].keyPath.includes("范围")){n=s.slice(u["排序方式"].value[0]-1,u["排序方式"].value[1]).map((e=>e["值"===c?t:"名字"===c?r:""])).join("、").replace(/、([^、]+)$/,"和$1")}return n||""}}},"趋势分析":{"整体趋势":{handler:e=>{let{sourceData:l,dealJson:a}=e;const t=l.map((e=>e[a.dealKey])),r=t.length;let u=0,n=0,c=0,s=0;for(let e=0;e<r;e++)u+=e,n+=Number(t[e]),c+=e*Number(t[e]),s+=e*e;const b=(r*c-u*n)/(r*s-u*u);return b>0?"增长":b<0?"下降":"平稳"}}}};exports.getObjectValue=function(e,l){return l?.reduce(((e,l)=>e?e[l]:void 0),e)},exports.keysMap=e;
2
2
  //# sourceMappingURL=analyze.cjs.map