vxe-gantt
Version:
A vue based gantt component
58 lines (50 loc) • 1.86 kB
text/typescript
import type { VxeGanttDefines, VxeGanttTaskType } from '../../../types'
import type { VxeTableDefines, VxeTablePropTypes } from 'vxe-table'
export function getRefElem (refEl: any) {
if (refEl) {
const rest = refEl.value
if (rest) {
return (rest.$el || rest) as HTMLElement
}
}
return null
}
export function getCalcHeight (height: number | 'unset' | undefined | null) {
if (height === 'unset') {
return 0
}
return height || 0
}
export function getCellRestHeight (rowRest: VxeTableDefines.RowCacheItem, cellOpts: VxeTablePropTypes.CellConfig, rowOpts: VxeTablePropTypes.RowConfig, defaultRowHeight: number) {
return rowRest.resizeHeight || cellOpts.height || rowOpts.height || rowRest.height || defaultRowHeight
}
export function getStandardGapTime (type: VxeGanttDefines.ColumnScaleType) {
switch (type) {
case 'hour':
return 1000 * 60 * 60
case 'minute':
return 1000 * 60
case 'second':
return 1000
}
return 1000 * 60 * 60 * 24
}
export function getTaskBarLeft (chartRest: VxeGanttDefines.RowCacheItem | null, viewCellWidth: number) {
return chartRest ? viewCellWidth * chartRest.oLeftSize : 0
}
export function getTaskBarWidth (chartRest: VxeGanttDefines.RowCacheItem | null, viewCellWidth: number) {
return chartRest && chartRest.oWidthSize ? Math.max(1, chartRest ? (Math.floor(viewCellWidth * chartRest.oWidthSize) - 1) : 0) : 0
}
const taskTypeMaps: Record<VxeGanttTaskType, boolean> = {
milestone: true,
subview: true
}
export function hasMilestoneTask (type: string) {
return type === 'milestone'
}
export function hasSubviewTask (type: string) {
return type === 'subview'
}
export function getTaskType (type: string) {
return taskTypeMaps[type as VxeGanttTaskType] ? type as VxeGanttTaskType : 'default'
}