1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162 |
- import axios from './instance'
- import {
- TAGGING_POINT_LIST,
- DELETE_TAGGING_POINT,
- UPDATE_TAGGING_POINT,
- INSERT_TAGGING_POINT
- } from './constant'
- import type { Model } from './model'
- import type { Tagging } from './tagging'
- interface ServicePosition {
- "id": number,
- "tagId": number,
- "modelId": number
- "tagPoint": SceneLocalPos,
- }
- export interface TaggingPosition {
- id: string,
- taggingId: Tagging['id']
- modelId: Model['id']
- localPos: SceneLocalPos
- }
- export type TaggingPositions = TaggingPosition[]
- const serviceToLocal = (position: ServicePosition, taggingId?: Tagging['id']): TaggingPosition => ({
- id: position.id.toString(),
- modelId: position.modelId.toString(),
- taggingId: taggingId || position.tagId.toString(),
- localPos: position.tagPoint
- })
- const localToService = (position: TaggingPosition, update = false): PartialProps<ServicePosition, 'id'> => ({
- "id": update ? Number(position.id) : undefined,
- "tagId": Number(position.taggingId),
- "modelId": Number(position.modelId),
- "tagPoint": position.localPos,
- })
- export const fetchTaggingPositions = async (taggingId: Tagging['id']) => {
- const positions = await axios.post<ServicePosition[]>(`${TAGGING_POINT_LIST}${taggingId}`, {})
- return positions.map(position => serviceToLocal(position, taggingId))
- }
- export const postAddTaggingPosition = async (position: TaggingPosition) => {
- const servicePosition = await axios.post<ServicePosition>(INSERT_TAGGING_POINT, localToService(position))
- return serviceToLocal(servicePosition)
- }
- export const postUpdateTaggingPosition = (position: TaggingPosition) => {
- return axios.post<undefined>(UPDATE_TAGGING_POINT, localToService(position, true))
- }
-
- export const postDeleteTaggingPosition = (position: TaggingPosition) => {
- return axios.post<undefined>(DELETE_TAGGING_POINT, { ids: [position.id] })
- }
-
|