@zhangqingcq/vgce
Version:
Vector graphics configure editor. svg组态编辑器。基于vue3.3+ts+element-plus+vite
47 lines (43 loc) • 1.88 kB
text/typescript
import type { IDataModel } from '@/components/svg-editor/types'
import { useConfigStore } from '@/stores/config'
import { useGlobalStore } from '@/stores/global'
import type { IDoneJson } from '@/stores/global/types'
import { useSvgEditLayoutStore } from '@/stores/svg-edit-layout'
import { useEditPrivateStore } from '@/stores/system'
import { ElMessage } from 'element-plus'
export const pinia = createPinia()
export const useHistoryRecord = (done_json: IDoneJson[]) => {
const edit_private_store = useEditPrivateStore()
if (edit_private_store.is_record_history) {
if (edit_private_store.history_now_index + 1 < edit_private_store.history_doneComponent.length) {
edit_private_store.history_doneComponent.splice(edit_private_store.history_now_index + 1)
}
edit_private_store.history_doneComponent.push(done_json)
edit_private_store.history_now_index = edit_private_store.history_doneComponent.length - 1
if (edit_private_store.history_doneComponent.length > edit_private_store.max_record_times) {
edit_private_store.history_doneComponent.shift()
edit_private_store.history_now_index = edit_private_store.history_doneComponent.length - 1
}
}
edit_private_store.is_record_history = true
}
export const useImportDataModel = (model_str: string) => {
try {
const json: IDataModel = JSON.parse(model_str)
if (!json.config || !json.layout_center || !json.done_json) {
ElMessage.error('请导入正确的数据模型!')
return false
}
const globalStore = useGlobalStore(pinia)
const svgEditLayoutStore = useSvgEditLayoutStore(pinia)
const configStore = useConfigStore(pinia)
configStore.$state = json.config
svgEditLayoutStore.center_offset = json.layout_center
globalStore.setDoneJson(json.done_json)
return true
} catch (error) {
ElMessage.error('请导入正确的数据模型!')
console.error(error)
return false
}
}