// 组件配置转化
import _ from 'lodash'
import { setModules } from 'packages/js/utils/configImport'
import { getScreenInfo } from '../api/bigScreenApi'
import { stringToFunction } from '../utils/evalFunctions'
import plotList from 'packages/G2Plots/plotList'
export default {
  // 初始化页面数据
  initLayout ({ commit, dispatch }, code) {
    return new Promise(resolve => {
      getScreenInfo(code).then(data => {
        const pageInfo = handleResData(data)
        // 改变页面数据
        commit('changePageInfo', pageInfo)
        commit('changeZIndex', pageInfo.chartList)
        // 页面加载成功
        resolve(true)
        commit('saveTimeLine', '初始化')
      })
    })
  }
}

// 处理后端返回的数据
export function handleResData (data) {
  let pageInfo = {}
  if (data.pageConfig) {
    pageInfo = data
  } else {
    pageInfo = {
      ...data,
      pageConfig: {
        w: 1920,
        h: 1080,
        bgColor: '#151a26', // 背景色
        bg: '', // 背景图
        customTheme: 'auto',
        opacity: 100
      }
    }
  }
  pageInfo.pageConfig.refreshConfig = pageInfo.pageConfig.refreshConfig || []
  pageInfo.chartList.forEach((chart) => {
    if (!['customComponent', 'remoteComponent'].includes(chart.type)) {
      chart.option = _.cloneDeep(setModules[chart.type])
    } else {
      chart.option = stringToFunction(chart.option)
      // 如果是自定义组件,且没配数据集,就给前端的模拟数据
      if (!chart?.dataSource?.businessKey) {
        chart.option.data = plotList?.find(plot => plot.name === chart.name)?.option?.data
      }
    }
    chart.key = chart.code
  })
  return pageInfo
}