vxe-pc-ui
Version:
A vue based PC component library
173 lines (155 loc) • 4.31 kB
TypeScript
import { RenderFunction, SetupContext, Ref } from 'vue'
import { VxeComponentBaseOptions, DefineVxeComponentInstance } from '@vxe-ui/core'
import { VxeTableConstructor, VxeTableMethods, VxeTablePrivateMethods } from '../table'
import { VxeGanttDefines } from '../gantt'
/* eslint-disable no-use-before-define */
export interface VxeGanttViewConstructor extends VxeComponentBaseOptions, VxeGanttViewMethods {
props: VxeGanttViewProps
context: SetupContext<VxeGanttViewEmits>
reactData: GanttViewReactData
internalData: GanttViewInternalData
getRefMaps(): GanttViewPrivateRef
getComputeMaps(): GanttViewPrivateComputed
renderVN: RenderFunction
}
export type VxeGanttViewInstance = DefineVxeComponentInstance<VxeGanttViewProps, VxeGanttViewConstructor>
interface VxeGanttViewProps {
}
export interface GanttViewReactData {
// 是否启用了横向 X 可视渲染方式加载
scrollXLoad: boolean
// 是否启用了纵向 Y 可视渲染方式加载
scrollYLoad: boolean
// 是否存在纵向滚动条
overflowY: boolean
// 是否存在横向滚动条
overflowX: boolean
// 纵向滚动条的宽度
scrollbarWidth: number
// 横向滚动条的高度
scrollbarHeight: number
lazScrollLoading: boolean
scrollVMLoading: boolean
scrollYHeight: number
scrollYTop: number
isScrollYBig: boolean
scrollXLeft: number
scrollXWidth: number
isScrollXBig: boolean
minViewDate: Date | null
maxViewDate: Date | null
tableData: any[]
tableColumn: VxeGanttDefines.ViewColumn[]
headerGroups: VxeGanttDefines.GroupColumn[]
viewCellWidth: number
}
export interface GanttViewInternalData {
xeTable: (VxeTableConstructor & VxeTableMethods & VxeTablePrivateMethods) | null
startMaps: Record<string, any>
endMaps: Record<string, any>
chartMaps: Record<string, VxeGanttDefines.RowCacheItem>
elemStore: {
[key: string]: Ref<HTMLElement> | null
}
// 存放横向 X 虚拟滚动相关的信息
scrollXStore: {
preloadSize: number
offsetSize: number
visibleSize: number
visibleStartIndex: number
visibleEndIndex: number
startIndex: number
endIndex: number
}
// 存放纵向 Y 虚拟滚动相关信息
scrollYStore: {
adaptive?: boolean
preloadSize: number
offsetSize: number
visibleSize: number
visibleStartIndex: number
visibleEndIndex: number
startIndex: number
endIndex: number
}
// 滚动属性
intoRunScroll?: boolean
inVirtualScroll?: boolean
inWheelScroll?: boolean
inHeaderScroll?: boolean
inBodyScroll?: boolean
inFooterScroll?: boolean
scrollRenderType?: '' | 'left' | 'right'
// 同步滚动
lcsTimeout?: undefined | number
lcsRunTime?: undefined | number
// 横向虚拟
lxRunTime?: undefined | number
lxTimeout?: undefined | number
// 纵向虚拟
lyRunTime?: undefined | number
lyTimeout?: undefined | number
}
export interface GanttViewPrivateRef {
refElem: Ref<HTMLDivElement | undefined>
}
export interface GanttViewPrivateComputed {
}
export interface VxeGanttViewPrivateMethods {
/**
* @private
*/
handleUpdateStyle(): void
/**
* @private
*/
handleUpdateCurrentRow(row?: any): void
/**
* @private
*/
handleUpdateHoverRow(row?: any): void
/**
* @private
*/
handleLazyRecalculate(): Promise<void>
/**
* @private
*/
triggerHeaderScrollEvent(evnt: Event): void
/**
* @private
*/
triggerBodyScrollEvent(evnt: Event): void
/**
* @private
*/
triggerFooterScrollEvent(evnt: Event): void
/**
* @private
*/
triggerVirtualScrollXEvent(evnt: Event): void
/**
* @private
*/
triggerVirtualScrollYEvent(evnt: Event): void
/**
* @private
*/
handleUpdateSXSpace(): void
/**
* @private
*/
handleUpdateSYSpace(): void
/**
* @private
*/
handleUpdateSYStatus(scrollYLoad: boolean): void
}
export interface VxeGanttViewMethods {
refreshData(): Promise<void>
updateViewData(): Promise<void>
connectUpdate(params: {
$table: VxeTableConstructor & VxeTableMethods & VxeTablePrivateMethods
}): Promise<void>
}
type VxeGanttViewEmits = []