plotList.js 3.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798
  1. /*
  2. * @description: webpack读取当前文件夹下的所有 图表的js文件配置, 生成g2Plot配置列表
  3. * @Date: 2023-03-28 10:40:22
  4. * @Author: xing.heng
  5. */
  6. import { dataConfig, settingConfig } from '../PlotRender/settingConfig'
  7. import { mapData } from 'data-room-ui/BasicComponents/Map/settingConfig'
  8. import { FlyMapData } from 'data-room-ui/BasicComponents/FlyMap/settingConfig'
  9. // import _ from 'lodash'
  10. import cloneDeep from 'lodash/cloneDeep'
  11. import sortList from './plotListSort'
  12. // 遍历 当前文件夹下的所有文件,找到中文.js文件,然后导出
  13. const files = require.context('./', true, /[\u4e00-\u9fa5]+.js$/)
  14. const plotList = getPlotList(files)
  15. const customPlots = getCustomPlots()
  16. // 获取plot配置
  17. function getPlotList (files) {
  18. const configMapList = {}
  19. files.keys().forEach((key) => {
  20. // ./折线图/基础折线图.js
  21. // 取到 "基础折线图"
  22. const configName = key.split('/')[2].replace('.js', '')
  23. configMapList[configName] = files(key).default
  24. })
  25. const plotList = []
  26. for (const configMapKey in configMapList) {
  27. const index = sortList.findIndex((item) => item === configMapKey)
  28. const config = configMapList[configMapKey]
  29. plotList[index] = {
  30. version: config.version,
  31. category: configMapKey,
  32. name: config.name,
  33. title: config.title,
  34. border:{ type: '', titleHeight: 60, fontSize: 16, isTitle: true, padding: [16, 16, 16, 16] },
  35. icon: null,
  36. img: require(`../G2Plots/images/componentLogo/${config.title}.png`),
  37. className:
  38. 'com.gccloud.dataroom.core.module.chart.components.CustomComponentChart',
  39. w: config?.option?.width || 450,
  40. h: config?.option?.height || 320,
  41. x: 0,
  42. y: 0,
  43. rotateX: config.rotateX || 0,
  44. rotateY: config.rotateY || 0,
  45. rotateZ: config.rotateZ || 0,
  46. perspective: config.perspective || 0,
  47. type: 'customComponent',
  48. chartType: config.chartType,
  49. loading: false,
  50. option: {
  51. ...config.option,
  52. ...cloneDeep(settingConfig)
  53. },
  54. setting: config.setting, // 右侧面板自定义配置
  55. dataHandler: config.dataHandler, // 数据自定义处理js脚本
  56. optionHandler: config.optionHandler, // 配置自定义处理js脚本
  57. ...cloneDeep(dataConfig)
  58. }
  59. }
  60. return plotList
  61. }
  62. export function getCustomPlots () {
  63. const customList = window.BS_CONFIG?.customPlots || []
  64. const list = []
  65. customList.forEach((config) => {
  66. list.push({
  67. version: config.version,
  68. category: config.category,
  69. name: config.name,
  70. title: config.title,
  71. border:{ type: '', titleHeight: 60, fontSize: 16 , isTitle: true, padding: [16, 16, 16, 16] },
  72. icon: null,
  73. img: config.img,
  74. className:
  75. 'com.gccloud.dataroom.core.module.chart.components.CustomComponentChart',
  76. w: 450,
  77. h: 320,
  78. x: 0,
  79. y: 0,
  80. type: 'customComponent',
  81. chartType: config.chartType,
  82. option: {
  83. ...config.option,
  84. ...cloneDeep(settingConfig)
  85. },
  86. setting: config.setting, // 右侧面板自定义配置
  87. dataHandler: config.dataHandler, // 数据自定义处理js脚本
  88. optionHandler: config.optionHandler, // 配置自定义处理js脚本
  89. ...cloneDeep(dataConfig)
  90. })
  91. })
  92. return list
  93. }
  94. const plots = [...plotList, ...customPlots, mapData, FlyMapData]
  95. export default plots