import { type Ref, VNode } from 'vue'; import { fabric } from '../../../shared/utils/fabricjs'; import { AnyObject, AnyFn } from '../../../shared/types'; export type IType = 'temperature' | 'birthProcess' | 'surgicalAnesthesia' | 'electrocardiogram' | 'newBirthProcess' | undefined; export type ILineCoordinate = [number, number, number, number]; interface IEvent { selectable: boolean; evented: boolean; hovered: boolean; } export type ITreeItem = Partial<{ title: string; total: number; data: Array<{ time: string[]; value: AnyObject; [key: string]: any; }>; children: ITreeItem[]; top: number; left: number; width: number; height: number; [key: string]: any; }>; interface ImainLineStyle { x: fabric.ILineOptions; y: fabric.ILineOptions; } interface IGrid { mainXCell: number; subXCell: number; subSecondXCell: number; mainYCell: number; subYCell: number; surplusCell: ILineCoordinate; mainLineStyle?: ImainLineStyle; subLineStyle?: fabric.ILineOptions; subSecondLineStyle?: fabric.ILineOptions; event?: Partial; } export interface IPropItems { canvasWidth: number; canvasHeight: number; borderStyle: fabric.ILineOptions; selectionStyle: any; dateHeight: number; hospitalDaysHeight: number; operationDaysHeight: number; xScalevalueHeight: number; topList: IDate[]; breathingHeight: number; hospitalizationDate?: string; grid: IGrid; top: ITop; left: ILeft; right: IRight | undefined; bottom: any; other?: IOther; painIndex: number; painHeight: number; painOriginY: any; vitalSignsOriginY: any; gridXNumber: number; gridYNumber: number; iconsWidth: number; originX: number; originY: number; endX: number; endXLimit: number; endY: number; xCellWidth: number; yCellHeight: number; xScaleList: Array; breatheYCell: number; pulseYCell: number; temperatureYCell: number; painYCell: number; event: Partial; itemList: Array; getRightInfo: AnyObject; config: AnyObject; surplusCell: ILineCoordinate; painSurplusCell: [number, number]; painScalePositionSurplusHeight: number; [key: string]: any; } export interface IPoint { time: string; value: string | number; [key: string]: any; } interface IOther { style?: fabric.ITextOptions; highlightColor?: string; eventHighlight?: boolean; splitLineNumber?: number; allowCrossDay?: boolean; list: Array; } export interface IDate { seq: number; show?: boolean; title: string; height?: number; list: Array; style?: fabric.ITextOptions; key?: string; [key: string]: any; } export interface ITop { dateStyle?: fabric.ITextOptions; titleWidth: number; date: IDate; xScalevalue: IDate; dayHeight?: number; hospitalDays?: IDate; operationDays?: IDate; } interface ILeft { overlap?: any; spaceGridNumber?: number; yScaleValue: Array; icons?: any; } interface IRight { width?: number; yScaleValue: any; } export interface IData { width: number; height: number; borderStyle?: fabric.ILineOptions; selectionStyle?: AnyObject; hospitalizationDate: string; grid: IGrid; other?: IOther; top: ITop; left: ILeft; right?: IRight; bottom: AnyObject; config?: AnyObject; } export interface ICoordinateValue { x: number; y: number; } export type IPointType = 'breathe' | 'pulse' | 'temperature' | 'pain'; export interface ILineOptions extends fabric.ILineOptions { [key: string]: any; } export interface ITextOptions extends fabric.ITextOptions { [key: string]: any; } interface IBirthProcessOther { fetalPresentationPositionLine?: fabric.ILineOptions; alertLine?: fabric.ILineOptions; processLine?: fabric.ILineOptions; } interface IBirthProcessXAxis { time: AnyObject; processTime: AnyObject; } export interface IBirthProcessData { width: number; height: number; borderStyle?: fabric.ILineOptions; selectionStyle?: AnyObject; grid: AnyObject; other?: IBirthProcessOther; xAxis: IBirthProcessXAxis; scaleValues: AnyObject[]; } export type IObject = fabric.Object & AnyObject; export type IPointTipProps = { show: boolean; point: ICoordinateValue; list: Array; movable: boolean; sourceData: AnyObject[]; isTarget: boolean; marginTop?: number; }; export type IPointMenuProps = Pick & { list: Array; target: any; }; export type IFabricChartMainParam = [Ref, any, any, Ref, IPointTipProps, IPointMenuProps]; export type IPointer = [number, number]; export type IexposeMethods = Partial<{ select: AnyFn | null; redrawPoints: AnyFn | null; clickMenu: AnyFn | null; updatePolyline: AnyFn | null; useMeasureRuler: AnyFn | null; useCaliper: AnyFn | null; useCaliperRuler: AnyFn | null; useRectRuler: AnyFn | null; redrawLinePoints: AnyFn | null; }>; export type PopupMenuItem = { label: string; key: string; value?: any; _type?: 'tree' | 'other'; mode?: 'add' | 'remove'; origin?: AnyObject; isTitle?: boolean; hasInput?: boolean; renderItem?: () => VNode; children?: PopupMenuItem[]; [key: string]: any; }; export {};