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

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
  channelId?: string
  deviceId?: string
  playProtocol?: number
}

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
  deviceProfileTemplateId?: string
  attr: string | string[]
  deviceName?: string

  enable: boolean
  chartOption?: ChartOptionType
  videoOption?: VideoOptionType
  alarmListOption?: AlarmListOptionType
  circularFlowMeterOption?: FlowMeterColorItemType[]
  rectFlowMeterOption?: FlowMeterColorItemType[]

}

export interface DeviceCommandListItemType {
  deviceId: string
  way: CommandWayEnum
  deviceProfileId: string
  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
  commandWay?: CommandDeliveryWayEnum
  callType?: string
}

export interface SingleClickEventDataType extends DoubleClickEventDataType { }

export interface OperationPasswordDataType {
  checked: boolean
  value?: string
  label: string
  enable: boolean
}

export interface NodeDataEventJsonType {
  [EventTypeEnum.DOUBLE]: DoubleClickEventDataType
  [EventTypeEnum.SINGLE]: SingleClickEventDataType
  [EventTypeEnum.DOWN]: MouseDownEventDataType
  [EventTypeEnum.UP]: MouseUpEventDataType
  [EventTypeEnum.OPERATION_PASSWORD]?: OperationPasswordDataType
}

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

export interface BasicActDataType {
  deviceId?: Nullable<string>
  attr?: string
  enable?: boolean
  deviceProfileId?: string | number
  deviceProfileTemplateId?: string | number
  attrInfo?: ThingsModelItemType
  deviceInfo?: DeviceTypeEnum
}

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
}