UNPKG

jordium-gantt-vue3

Version:

A Vue 3 Gantt chart component for project management, task scheduling, resource planning, calendar, resource usage and timeline visualization.

30 lines (29 loc) 2 kB
/** * dateBoundaryUtils.ts - 非小时视图下"含时间部分 endDate"的整天粒度边界计算 * * 背景(详见 .ai/.claude/requirments/v1.13.5.md 第9节): * 日/周/月/季度/年视图按整天粒度渲染任务条、计算资源冲突边界,历史约定 * endDate 表示"包含当天"(inclusive),需要 +1 天才能得到渲染/判断用的排他性 * 边界(exclusive boundary)。但当 endDate 带有具体 time 部分时(例如 TaskDrawer * 编辑时为配合 datetime-local 输入框自动转换出的"次日 00:00",或用户在任意 * 视图下手动录入的精确时间),直接截断时间部分再 +1 天会产生二次偏移 * (渲染位置/冲突判断多算一天)。 * * 规则: * - endDate 不带 time 部分(纯 YYYY-MM-DD)→ 有效日期部分 = endDate 本身的日期部分 * - endDate 带 time 部分 → 有效日期部分 = (endDateTime − 15分钟) 的日期部分 * (插件全局最小时间刻度为 15 分钟,减去 15 分钟再截断,可以把"恰好落在 * 某天 00:00 的结束时刻"正确归到前一天,从而实现真正的排他性边界语义, * 且不影响其他任何合法的 15 分钟网格取值) */ /** 插件全局最小时间刻度(分钟),用于 endDate 边界回退计算 */ export declare const MIN_TIME_GRANULARITY_MINUTES = 15; /** 判断原始 endDate 取值是否显式带有 time 部分("YYYY-MM-DD HH:mm"格式) */ export declare function hasExplicitTimePart(rawDate: string | Date | undefined | null): boolean; /** * 计算非小时视图下渲染/冲突判断用的"有效结束日期"(日期部分,本地时区安全)。 * * @param rawEndDate 原始 endDate 取值,仅用于判断是否显式带 time 部分 * @param parsedEndDate 已解析好的 Date 对象(需保留原始时分,避免重复解析) */ export declare function getEffectiveEndDateOnly(rawEndDate: string | Date | undefined | null, parsedEndDate: Date): Date;