UNPKG

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
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; }>;