| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384 |
- import { ref } from 'vue'
- import { autoSetModeCallback, createTemploraryID } from './sys'
- import { getFuseModel, getFuseModelShowVariable } from './fuse-model'
- import { custom } from '@/env'
- import {
- fetchTaggingPositions,
- postAddTaggingPosition,
- postDeleteTaggingPosition,
- postUpdateTaggingPosition,
- TaggingPositionType,
- } 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: '',
- globalVisibility: false,
- visibilityRange: 30,
- mat: {
- scale: 1,
- rotation: 0
- },
- lineHeight: 1,
- fontSize: 12,
- normal: {x: 0, y: 0, z: 1},
- type: TaggingPositionType['2d'],
- 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 = JSON.parse(JSON.stringify(taggingPositions.value))
- }
- 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,
- })
|