123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566 |
- import { ref } from 'vue'
- import { autoSetModeCallback, createTemploraryID } from './sys'
- 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) || []
- 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.push(...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,
- })
|