You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

104 lines
3.6 KiB
JavaScript

/*
* @description: webpack读取当前文件夹下的所有 图表的js文件配置, 生成g2Plot配置列表
* @Date: 2023-03-28 10:40:22
* @Author: xing.heng
*/
import { dataConfig, settingConfig } from '../PlotRender/settingConfig'
import { mapData } from 'data-room-ui/BasicComponents/Map/settingConfig'
import { FlyMapData } from 'data-room-ui/BasicComponents/FlyMap/settingConfig'
import { candlestickData } from 'data-room-ui/BasicComponents/Candlestick/settingConfig'
import { sankeyData } from 'data-room-ui/BasicComponents/Sankey/settingConfig'
// import _ from 'lodash'
import cloneDeep from 'lodash/cloneDeep'
import sortList from './plotListSort'
// 遍历 当前文件夹下的所有文件,找到中文.js文件然后导出
const files = require.context('./', true, /[\u4e00-\u9fa5]+.js$/)
const plotList = getPlotList(files)
const customPlots = getCustomPlots()
// 获取plot配置
function getPlotList (files) {
const configMapList = {}
files.keys().forEach((key) => {
// ./折线图/基础折线图.js
// 取到 "基础折线图"
const configName = key.split('/')[2].replace('.js', '')
configMapList[configName] = files(key).default
})
const plotList = []
for (const configMapKey in configMapList) {
const index = sortList.findIndex((item) => item === configMapKey)
const config = configMapList[configMapKey]
plotList[index] = {
version: config.version,
category: configMapKey,
name: config.name,
title: config.title,
border: { type: '', titleHeight: 60, fontSize: 16, isTitle: true, padding: [16, 16, 16, 16] },
icon: null,
img: require(`../G2Plots/images/componentLogo/${config.title}.png`),
className:
'com.gccloud.dataroom.core.module.chart.components.CustomComponentChart',
w: config?.option?.width || 450,
h: config?.option?.height || 320,
x: 0,
y: 0,
rotateX: config.rotateX || 0,
rotateY: config.rotateY || 0,
rotateZ: config.rotateZ || 0,
perspective: config.perspective || 0,
skewX: config.skewX || 0,
skewY: config.skewY || 0,
type: 'customComponent',
chartType: config.chartType,
loading: false,
option: {
...config.option,
...cloneDeep(settingConfig)
},
setting: config.setting, // 右侧面板自定义配置
dataHandler: config.dataHandler, // 数据自定义处理js脚本
optionHandler: config.optionHandler, // 配置自定义处理js脚本
...cloneDeep(dataConfig)
}
}
return plotList
}
export function getCustomPlots () {
const customList = window.BS_CONFIG?.customPlots || []
const list = []
customList.forEach((config) => {
list.push({
version: config.version,
category: config.category,
name: config.name,
title: config.title,
border: { type: '', titleHeight: 60, fontSize: 16, isTitle: true, padding: [16, 16, 16, 16] },
icon: null,
img: config.img,
className:
'com.gccloud.dataroom.core.module.chart.components.CustomComponentChart',
w: 450,
h: 320,
x: 0,
y: 0,
type: 'customComponent',
chartType: config.chartType,
option: {
...config.option,
...cloneDeep(settingConfig)
},
setting: config.setting, // 右侧面板自定义配置
dataHandler: config.dataHandler, // 数据自定义处理js脚本
optionHandler: config.optionHandler, // 配置自定义处理js脚本
...cloneDeep(dataConfig)
})
})
return list
}
const plots = [...plotList, ...customPlots, sankeyData, candlestickData, mapData, FlyMapData]
console.log('plotList', plots)
export default plots