1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677 |
- import { ref } from 'vue'
- import { autoSetModeCallback, createTemploraryID } from './sys'
- import { getFuseModel, getFuseModelShowVariable } from './fuse-model'
- import { custom } from '@/env'
- import {
- fetchTaggingPositions,
- postAddTaggingPosition,
- postDeleteTaggingPosition,
- postUpdateTaggingPosition,
- } from '@/api'
- import {
- deleteStoreItem,
- addStoreItem,
- updateStoreItem,
- saveStoreItems,
- recoverStoreItems
- } from '@/utils'
- import type { TaggingPosition, TaggingPositions } from '@/api'
- import type { Tagging } from './tagging'
- export type { TaggingPosition, TaggingPositions }
- export const taggingPositions = ref<TaggingPositions>([])
- export const createTaggingPosition = (position: Partial<TaggingPosition> = {}): TaggingPosition => ({
- id: createTemploraryID(),
- taggingId: '',
- modelId: '',
- localPos: { x: 0, y: 0, z: 0 },
- ...position
- })
- export const getTaggingPositions = (tagging: Tagging) =>
- taggingPositions.value.filter(position => position.taggingId === tagging.id) || []
- export const getTaggingPositionIsShow = (position: TaggingPosition) => {
- const model = getFuseModel(position.modelId)
- return custom.showTaggings && model && model.loaded && getFuseModelShowVariable(model).value
- }
- let bcPositions: TaggingPositions = []
- export const getBackupTaggingPositions = () => bcPositions
- export const backupTaggingPositions = () => {
- bcPositions = taggingPositions.value.map(position => ({
- ...position,
- localPos: { ...position.localPos },
- }))
- }
- export const initTaggingPositionsByTagging = async (tagging: Tagging) => {
- const positions = await fetchTaggingPositions(tagging.id)
- taggingPositions.value = taggingPositions.value
- .filter(position => position.taggingId !== tagging.id)
- .concat(positions)
- backupTaggingPositions()
- }
- export const recoverTaggingPositions = recoverStoreItems(taggingPositions, getBackupTaggingPositions)
- export const addTaggingPosition = addStoreItem(taggingPositions, postAddTaggingPosition)
- export const updateTaggingPosition = updateStoreItem(taggingPositions, postUpdateTaggingPosition)
- export const deleteTaggingPosition = deleteStoreItem(taggingPositions, postDeleteTaggingPosition)
- export const saveTaggingPositions = saveStoreItems(
- taggingPositions,
- getBackupTaggingPositions,
- {
- add: addTaggingPosition,
- update: updateTaggingPosition,
- delete: deleteTaggingPosition,
- }
- )
- export const autoSaveTaggingPositions = autoSetModeCallback(taggingPositions, {
- backup: backupTaggingPositions,
- recovery: recoverTaggingPositions,
- save: saveTaggingPositions,
- })
|