usePreview.ts 3.36 KB
import { fetchRouteParamsLocation, JSONParse, } from '@/utils'
import { getDataView } from '@/api/external/contentSave/content'
import { ChartEditStorageType } from '..'
import { useChartEditStore } from '@/store/modules/chartEditStore/chartEditStore'
import { useRoute } from 'vue-router'
import { ShareEnum } from '@/enums/external/pageEnum'
import { nextTick } from 'vue'


const isSharePageMode = () => {
  const ROUTE = useRoute()
  return ROUTE.matched.find(item => item.path === ShareEnum.SHARE_PATH)
}

 // THINGS_KIT 兼容之前的用户数据
 const compatibleOldUserDataHook = (fileData:object)=>{
  if(!fileData) return
  let userData:Recordable = fileData
  if(!Reflect.get(fileData,'pageConfig')){
    userData={
      pageConfig:{
        currentActiveId: "1",
        currentActiveIndex: 1,
        pageList:[
          {
            ...fileData,
            id:"1",
            title:"页面 1",
            editCanvas: {
              // 编辑区域 Dom
              editLayoutDom: null,
              editContentDom: null,
              // 偏移量
              offset: 20,
              // 系统控制缩放
              scale: 0.5,
              // 用户控制的缩放
              userScale: 0.5,
              // 锁定缩放
              lockScale: false,
              // 初始化
              isCreate: false,
              // 拖拽中
              isDrag: false,
              // 框选中
              isSelect: false,
              // 同步中
              // saveStatus: SyncEnum.PENDING,
              // 代码编辑中
              isCodeEdit: false
            },
            // 右键菜单
            rightMenuShow: false,
            // 鼠标定位
            mousePosition: {
              startX: 0,
              startY: 0,
              x: 0,
              y: 0
            },
            // 目标图表
            targetChart: {
              hoverId: undefined,
              selectId: []
            },
            // 记录临时数据(复制等)
            recordChart: undefined,
          }
        ]
      }
    }
  }
  return userData
}
//

export const getSessionStorageInfo = async () => {
  if (isSharePageMode()) return
  const id = fetchRouteParamsLocation()
  const chartEditStore = useChartEditStore()
  const res = await getDataView(id)
  if (res) {
    const { dataViewContent } = res
    let content = JSONParse(dataViewContent.content) as ChartEditStorageType
    content = compatibleOldUserDataHook(content) as ChartEditStorageType
    if (content) {
      // const { editCanvasConfig, requestGlobalConfig, componentList } = content
      // chartEditStore.editCanvasConfig = editCanvasConfig
      // chartEditStore.requestGlobalConfig = requestGlobalConfig
      // chartEditStore.componentList = componentList
      await nextTick()
      const { pageConfig } = content
      chartEditStore.setPageConfig(pageConfig)
      chartEditStore.setCurrentPageSelectId(pageConfig.pageList[0].id)
      // chartEditStore.setPageList(pageConfig.pageList)
      // pageConfig.pageList.forEach(pageItem => {
      //   if(pageItem.id===chartEditStore.pageConfig.currentActiveId){
      //     chartEditStore.setPageEditCanvasConfig(pageItem.editCanvasConfig)
      //     chartEditStore.setPageRequestGlobalConfig(pageItem.requestGlobalConfig)
      //     chartEditStore.setPageComponentList(pageItem.componentList)
      //   }
      // })
    }
  }
}