Add File
This commit is contained in:
130
frontend/src/views/dashboard/utils/canvasUtils.ts
Normal file
130
frontend/src/views/dashboard/utils/canvasUtils.ts
Normal file
@@ -0,0 +1,130 @@
|
|||||||
|
import { dashboardApi } from '@/api/dashboard.ts'
|
||||||
|
import { dashboardStoreWithOut } from '@/stores/dashboard/dashboard.ts'
|
||||||
|
import { storeToRefs } from 'pinia'
|
||||||
|
|
||||||
|
const dashboardStore = dashboardStoreWithOut()
|
||||||
|
const { componentData, canvasStyleData, canvasViewInfo } = storeToRefs(dashboardStore)
|
||||||
|
|
||||||
|
const workspace_id = 'default' // temp
|
||||||
|
export const load_resource_prepare = (params: any, callBack: (obj: any) => void) => {
|
||||||
|
dashboardApi
|
||||||
|
.load_resource(params)
|
||||||
|
.then((canvasInfo: any) => {
|
||||||
|
const dashboardInfo = {
|
||||||
|
id: canvasInfo.id,
|
||||||
|
name: canvasInfo.name,
|
||||||
|
pid: canvasInfo.pid,
|
||||||
|
workspaceId: canvasInfo.workspace_id,
|
||||||
|
status: canvasInfo.status,
|
||||||
|
type: canvasInfo.type,
|
||||||
|
createName: canvasInfo.create_name,
|
||||||
|
updateName: canvasInfo.update_name,
|
||||||
|
createTime: canvasInfo.create_time,
|
||||||
|
updateTime: canvasInfo.update_time,
|
||||||
|
contentId: canvasInfo.content_id,
|
||||||
|
}
|
||||||
|
const canvasDataResult = JSON.parse(canvasInfo.component_data)
|
||||||
|
const canvasStyleResult = JSON.parse(canvasInfo.canvas_style_data)
|
||||||
|
const canvasViewInfoPreview = JSON.parse(canvasInfo.canvas_view_info || '{}')
|
||||||
|
callBack({ dashboardInfo, canvasDataResult, canvasStyleResult, canvasViewInfoPreview })
|
||||||
|
})
|
||||||
|
.catch((err) => {
|
||||||
|
console.error('load_resource_prepare', err)
|
||||||
|
callBack({})
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
export const isMainCanvas = (canvasId: string) => {
|
||||||
|
return canvasId === 'canvas-main'
|
||||||
|
}
|
||||||
|
|
||||||
|
export const initCanvasData = (params: any, callBack: () => void) => {
|
||||||
|
load_resource_prepare(params, function (result: any) {
|
||||||
|
dashboardStore.setDashboardInfo(result?.dashboardInfo)
|
||||||
|
dashboardStore.setCanvasStyleData(result?.canvasStyleResult)
|
||||||
|
dashboardStore.setComponentData(result?.canvasDataResult)
|
||||||
|
dashboardStore.setCanvasViewInfo(result?.canvasViewInfoPreview)
|
||||||
|
callBack()
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
// eslint-disable-next-line @typescript-eslint/no-unsafe-function-type
|
||||||
|
export const findNextComponentIndex = async (params: any, callBack: Function) => {
|
||||||
|
load_resource_prepare(params, function (result: any) {
|
||||||
|
let bottomPosition = 0
|
||||||
|
const { dashboardInfo, canvasDataResult, canvasStyleResult, canvasViewInfoPreview } = result
|
||||||
|
canvasDataResult.forEach((component: any) => {
|
||||||
|
const componentBottom = component.y + component.sizeY
|
||||||
|
if (componentBottom > bottomPosition) {
|
||||||
|
bottomPosition = componentBottom
|
||||||
|
}
|
||||||
|
})
|
||||||
|
callBack({
|
||||||
|
bottomPosition,
|
||||||
|
dashboardInfo,
|
||||||
|
canvasDataResult,
|
||||||
|
canvasStyleResult,
|
||||||
|
canvasViewInfoPreview,
|
||||||
|
})
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
// eslint-disable-next-line @typescript-eslint/no-unsafe-function-type
|
||||||
|
export const saveDashboardResource = (params: any, callBack: Function) => {
|
||||||
|
const commonParams = {
|
||||||
|
componentData: componentData.value,
|
||||||
|
canvasStyleData: canvasStyleData.value,
|
||||||
|
canvasViewInfo: canvasViewInfo.value,
|
||||||
|
}
|
||||||
|
saveDashboardResourceTarget(params, commonParams, callBack)
|
||||||
|
}
|
||||||
|
|
||||||
|
// eslint-disable-next-line @typescript-eslint/no-unsafe-function-type
|
||||||
|
export const saveDashboardResourceTarget = (params: any, commonParams: any, callBack: Function) => {
|
||||||
|
params['workspace_id'] = workspace_id
|
||||||
|
dashboardApi.check_name(params).then((resCheck: any) => {
|
||||||
|
if (resCheck) {
|
||||||
|
if (params.opt === 'newLeaf') {
|
||||||
|
// create canvas
|
||||||
|
const requestParams = {
|
||||||
|
...params,
|
||||||
|
component_data: JSON.stringify(commonParams.componentData),
|
||||||
|
canvas_style_data: JSON.stringify(commonParams.canvasStyleData),
|
||||||
|
canvas_view_info: JSON.stringify(commonParams.canvasViewInfo),
|
||||||
|
}
|
||||||
|
dashboardApi.create_canvas(requestParams).then((res: any) => {
|
||||||
|
dashboardStore.updateDashboardInfo({
|
||||||
|
id: res.id,
|
||||||
|
pid: params.pid,
|
||||||
|
name: params.name,
|
||||||
|
dataState: 'ready',
|
||||||
|
})
|
||||||
|
callBack(res)
|
||||||
|
})
|
||||||
|
} else if (params.opt === 'newFolder') {
|
||||||
|
dashboardApi.create_resource(params).then((res: any) => {
|
||||||
|
callBack(res)
|
||||||
|
})
|
||||||
|
} else if (params.opt === 'rename') {
|
||||||
|
dashboardApi.update_resource(params).then((res: any) => {
|
||||||
|
callBack(res)
|
||||||
|
})
|
||||||
|
} else if (params.opt === 'updateLeaf') {
|
||||||
|
const requestParams = {
|
||||||
|
...params,
|
||||||
|
component_data: JSON.stringify(commonParams.componentData),
|
||||||
|
canvas_style_data: JSON.stringify(commonParams.canvasStyleData),
|
||||||
|
canvas_view_info: JSON.stringify(commonParams.canvasViewInfo),
|
||||||
|
}
|
||||||
|
dashboardApi.update_canvas(requestParams).then((res: any) => {
|
||||||
|
callBack(res)
|
||||||
|
})
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
ElMessage({
|
||||||
|
type: 'warning',
|
||||||
|
message: '名称重复',
|
||||||
|
})
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user