UNPKG

@realsee/dnalogel

Version:
138 lines (137 loc) 4.18 kB
/** * @file 对输入到户型图相关插件内的数据做 format 之后的数据 * 1. 数据的下划线到驼峰的转换 * 2. svg url 到 svg content 的处理 */ import type { RecordKeys, RecordValue } from './utility'; /** 户型图坐标,坐标原点时户型图中心点,单位是户型图单位 */ export interface FloorplanPosition { x: number; y: number; } /** 户型图图片坐标,坐标原点是图片左上角,取值范围是 [0, 1],表示距离左上角的相对距离 */ export interface FloorplanImagePosition { x: number; y: number; } /** 户型图线框图 */ export interface FloorplanOutlineItem { url: string; index: number; svgUrl?: string; svgContent?: string; } /** 户型图入户门 */ export interface FloorplanEntrance { /** 入户门角度 */ rad: number; /** 入户门所在的位置「户型图坐标系」 */ position: FloorplanPosition; /** 入户门在户型图上相对坐标 */ positionInImage: FloorplanImagePosition; /** 入户门与北的朝向 */ northRad: number; /** 入户门所在房间 ID */ roomId: string; /** 入户门所楼层 */ floorIndex: number; } /** 户型图 FloorplanBounding * @description 坐标都是户型图坐标 */ export interface FloorplanBounding { /** 户型图在 X 和 Y 轴上的最大值 */ max: FloorplanPosition; /** 户型图在 X 和 Y 轴上的最小值 */ min: FloorplanPosition; /** 户型图的中心位置 */ origin: FloorplanPosition; } /** 户型图房屋标签 */ export interface FloorplanRoomLabelItem { /** 房间的中心点坐标 */ position: FloorplanPosition; /** 房间的中心在户型图上的相对位置 */ positionInImage: FloorplanImagePosition; } /** 户型图房间数据 */ export interface FloorplanRoomItem { id: string; /** 房间面积 * @description 单位是平方毫米 */ size: number; name: string; /** 围成房间区域的坐标路径 * @description 坐标类型是户型图坐标 */ path: FloorplanPosition[]; /** 房屋类型 * @description 对应关系参考上方 ROOM_TYPE_MAP */ roomType: string; /** 地板类型 * @description 对应关系参考上方 FLOOR_TYPE_MAP */ floorType: number; roomLabel: FloorplanRoomLabelItem; /** 当前房间里的 observer 索引 */ observerIndexs: number[]; } /** 户型图标尺 */ export type FloorplanRuleLabels = Record<'top' | 'right' | 'bottom' | 'left', FloorplanPosition[][]>; export type RuleLabelsKey = RecordKeys<FloorplanRuleLabels>; export type RuleLabelsValue = RecordValue<FloorplanRuleLabels>; /** 当前楼层的数据 */ export interface FloorplanFloorData { floorName: string; floorIndex: number; rooms: FloorplanRoomItem[]; rules: FloorplanRuleLabels; } /** 对 observer 做一些样式上的计算 * @description 每一个 floorplanObserver 对应一个 observer * @description floorplanObserver 和 observer 在自身数组中的索引坐标应该是相同的 */ export interface FloorplanObserver { index: number; floorIndex: number; position: FloorplanPosition; positionInImage: FloorplanImagePosition; } /** 户型图内部使用的数据 */ export interface FloorplanData { outlines: FloorplanOutlineItem[]; floorDatas: FloorplanFloorData[]; entrance: FloorplanEntrance | null; bounding: FloorplanBounding; observers: FloorplanObserver[]; } /** 能够映射到雷达图上的三维物体 */ export interface FloorplanExtraObject3D { id: string; position: { x: number; y: number; z: number; }; icon?: { url: string; width: number; height: number; }; } /** 添加到户型图上的额外物体 */ export interface FloorplanExtraObject { id: string; icon: { url: string; width: number; height: number; }; floorIndex: number; /** 入户门所在的位置「户型图坐标系」 */ position: FloorplanPosition; /** 入户门在户型图上相对坐标 */ positionInImage: FloorplanImagePosition; }