index.ts 4.91 KB
import type { ThingsModelItemType } from '@/api/device/model'
import type { ImageSelectorDataType } from '@/core/Library/components/ImageSelector'
import type { CommandWayEnum } from '@/enums/commandEnum'
import type { ActTypeEnum, AggregateTypeEnum, CommandDeliveryWayEnum, DeviceTypeEnum, EventActionTypeEnum, EventTypeEnum, SocketSubscriberEnum, TransportTypeEnum } from '@/enums/datasource'

export enum DeleteNodeDataTypeEnum {
  DATASOURCE = 'DATASOURCE',
  EVENT = 'EVENT',
  ACT = 'ACT',
}

export interface BasicNodeBindType {
  id: string
  contentId: string
  configurationId: string
}

export interface SaveNodeDataParamsType extends BasicNodeBindType {
  actJson?: NodeDataActJsonType
  dataSourceJson?: Partial<NodeDataDataSourceJsonType>
  eventJson?: NodeDataEventJsonType
}

export interface SaveNodeActParamsType extends BasicNodeBindType {
  data?: NodeDataActJsonType
}

export interface SaveNodeDataSourceParamsType extends BasicNodeBindType {
  data?: NodeDataDataSourceJsonType
}

export interface SaveNodeEventParamsType extends BasicNodeBindType {
  data?: NodeDataEventJsonType
}

export interface DeleteNodeDataByType extends BasicNodeBindType {
  type: DeleteNodeDataTypeEnum
}

export interface NodeDataBasicType {
  id: string
  creator: string
  createTime: string
  enabled: boolean
  tenantId: string
  configurationId: string
  contentId: string
}

export interface ChartOptionType {
  interval: number
  effectScope?: number
  queryType?: SocketSubscriberEnum
  agg?: AggregateTypeEnum
  unit?: string
}

export interface FlowMeterColorItemType {
  key: string
  value: string
  label: string
}

export interface VideoOptionType {
  accessMode: number
  id: string
  orgId: string
  videoComponentFlag: boolean
  videoUrl: string
}

export interface AlarmListOptionType {
  startTime: number
  endTime: number
  autoPlay: boolean
  deviceId: string[]
  interval: number
  polling: number

}

export interface DeviceInfoType {
  code?: string
  transportType?: string
  deviceType?: string
  deviceProfileId?: string
  deviceName?: string
  codeType?: string
}

export interface NodeDataDataSourceJsonType {
  deviceId: string
  deviceProfileId: string
  attr: string
  attrInfo: ThingsModelItemType

  deviceType?: DeviceTypeEnum
  transportType?: TransportTypeEnum

  enable: boolean
  chartOption?: ChartOptionType
  videoOption?: VideoOptionType
  alarmListOption?: AlarmListOptionType
  deviceInfo?: DeviceInfoType
  circularFlowMeterOption?: FlowMeterColorItemType[] // 圆形水球图数据暂定any
  rectFlowMeterOption?: FlowMeterColorItemType[] // 方形水球图颜色配置数据暂定any

}

export interface DeviceCommandListItemType {
  deviceId: string
  way: CommandWayEnum
  command: string | Recordable
}

export interface MouseDownEventDataType {
  enable?: boolean
  commandList?: DeviceCommandListItemType[]
}

export interface MouseUpEventDataType extends MouseDownEventDataType { }

export interface DoubleClickEventDataType {
  actionType: EventActionTypeEnum
  openLink?: string
  openPage?: string
  enable: boolean
  service?: string
  serviceCommand?: Recordable
  way?: CommandWayEnum
  customCommand?: string
  deviceInfo?: DeviceInfoType
  commandWay?: CommandDeliveryWayEnum
  callType?: string
  operationPassword?: {
    label: string
    value: string | number
    checked: boolean
  }
}

export interface SingleClickEventDataType extends DoubleClickEventDataType { }

export interface NodeDataEventJsonType {
  [EventTypeEnum.DOUBLE]: DoubleClickEventDataType
  [EventTypeEnum.SINGLE]: SingleClickEventDataType
  [EventTypeEnum.DOWN]: MouseDownEventDataType
  [EventTypeEnum.UP]: MouseUpEventDataType
  [EventTypeEnum.OPERATION_PASSWORD]: { password: string } | any
}

export interface RangeItemType {
  type?: string
  min?: number
  max?: number
  statusValue?: number
  title?: string
  label?: string
  imageInfo?: ImageSelectorDataType
}

export interface BasicActDataType {
  deviceId: string
  attr: string
  enable?: boolean
  deviceProfileId?: string | number
  attrInfo?: ThingsModelItemType
}

export interface FlashActDataType extends BasicActDataType {
  rangeList: RangeItemType[]
}

export interface DisplayActDataType extends FlashActDataType { }
export interface RotateActDataType extends FlashActDataType { }
export interface DynamicActDataType extends FlashActDataType { }
export interface StatusActDataType extends FlashActDataType {

}
export interface VariableImageActDataType extends FlashActDataType {
  defaultImage: ImageSelectorDataType
}

export interface NodeDataActJsonType {
  [ActTypeEnum.FLASH]: FlashActDataType
  [ActTypeEnum.DISPLAY]: DisplayActDataType
  [ActTypeEnum.ROTATE]: RotateActDataType
  [ActTypeEnum.STATUS_SETTING]: StatusActDataType
  [ActTypeEnum.VARIABLE_IMAGE]: VariableImageActDataType
  [ActTypeEnum.DYNAMIC]: DynamicActDataType
}

export interface NodeDataType extends NodeDataBasicType {
  dataSourceJson: NodeDataDataSourceJsonType
  eventJson: NodeDataEventJsonType
  actJson: NodeDataActJsonType
}