jordium-gantt-vue3
Version:
A Vue 3 Gantt chart component for project management, task scheduling, resource planning, calendar, resource usage and timeline visualization.
38 lines (37 loc) • 1.8 kB
TypeScript
import { Task } from '../models/classes/Task';
/**
* 检测两个任务是否存在时间交集
* 注意:endDate包含当天,所以 task1(2025-01-28~2025-01-29) 和 task2(2025-01-29~2025-01-30)
* 在 2025-01-29 这天是重叠的,应该换行显示
* @param timeScale 当前时间刻度,小时视图('hour')下使用15分钟精度判断
*/
export declare function hasTimeOverlap(task1: Task, task2: Task, timeScale?: string): boolean;
/**
* 为任务列表分配行索引,并计算每行高度
* 使用贪心算法:尽可能将任务放在第一个不冲突的行
* @param tasks 任务列表
* @param resourceId 资源ID(用于获取占比)
* @param baseRowHeight 基础行高(默认51)
* @param enableLaneStacking 是否启用车道堆叠(默认 true)
* true → 贪心打包:时间不冲突的任务共享同一行(节省空间)
* false → 独立行:每个任务独占一行,按 startDate 排序后依次分配行号
* @returns { taskRowMap, rowHeights, totalHeight }
*/
export declare function assignTaskRows(tasks: Task[], baseRowHeight?: number, timeScale?: string, enableLaneStacking?: boolean): {
taskRowMap: Map<string | number, number>;
rowHeights: number[];
totalHeight: number;
};
/**
* 计算任务列表需要的最大行数
*/
export declare function calculateMaxRows(tasks: Task[]): number;
/**
* 为资源视图的每个资源计算任务行布局
* @returns 资源ID到其任务行映射的映射 { resourceId: { taskRowMap, rowHeights, totalHeight } }
*/
export declare function calculateResourceTaskLayout(tasks: Task[], currentResourceId?: string | number, baseRowHeight?: number): Map<string | number, {
taskRowMap: Map<string | number, number>;
rowHeights: number[];
totalHeight: number;
}>;