UNPKG

gantt-task-react-v

Version:

Interactive Gantt Chart for React with TypeScript.

115 lines (114 loc) 3.12 kB
import { CSSProperties } from "react"; import type { Locale as DateLocale } from "date-fns"; export type TaskBarMoveAction = "progress" | "end" | "start" | "move"; export type RelationMoveTarget = "startOfTask" | "endOfTask"; export declare enum ViewMode { Hour = "Hour", QuarterDay = "Quarter Day", HalfDay = "Half Day", Day = "Day", /** ISO-8601 week */ Week = "Week", Month = "Month", Year = "Year" } export type TaskType = "task" | "milestone" | "project"; export type TaskId = string; export interface Dependency { sourceId: string; sourceTarget: RelationMoveTarget; ownTarget: RelationMoveTarget; } /** * date-fns formats */ export interface DateFormats { dateColumnFormat: string; dayBottomHeaderFormat: string; dayTopHeaderFormat: string; hourBottomHeaderFormat: string; monthBottomHeaderFormat: string; monthTopHeaderFormat: string; weekBottomHeader: (date: Date, weekNumber: number, locale?: DateLocale) => string; } export interface Task { id: TaskId; type: TaskType; name: string; start: Date; end: Date; /** * From 0 to 100 */ progress: number; assignees?: string[]; style?: CSSProperties; isDisabled?: boolean; /** * Project or task */ parent?: string; dependencies?: Dependency[]; comparisonDates?: { start: Date; end: Date | null; }; hideChildren?: boolean; displayOrder?: number; comparisonLevel?: number; payload?: Record<string, string>; } export interface EmptyTask { id: string; type: "empty"; name: string; parent?: string; comparisonLevel?: number; displayOrder?: number; isDisabled?: boolean; } export type RenderTask = Task | EmptyTask; export type ChildByLevelMap = Map<number, Map<string, RenderTask[]>>; export type RootMapByLevel = Map<number, RenderTask[]>; export interface DateSetup { dateFormats: DateFormats; dateLocale?: DateLocale; isUnknownDates: boolean; preStepsCount: number; viewMode: ViewMode; } export interface Distances { actionColumnWidth: number; arrowIndent: number; barCornerRadius: number; /** * How many of row width can be taken by task. * From 0 to 100 */ barFill: number; columnWidth: number; barComparisonTaskHeight: number; barComparisonTaskBorderHeight: number; barComparisonTaskYOffset: number; contextMenuIconWidth: number; contextMenuOptionHeight: number; contextMenuSidePadding: number; dateCellWidth: number; dependenciesCellWidth: number; expandIconWidth: number; handleWidth: number; headerHeight: number; ganttHeight?: number; minimumRowDisplayed: number; nestedTaskNameOffset: number; relationCircleOffset: number; relationCircleRadius: number; rowHeight: number; tableWidth?: number; titleCellWidth: number; viewModeYearOffsetYears?: number; viewModeMonthOffsetMonths?: number; viewModeWeekOffsetWeeks?: number; viewModeDayOffsetDays?: number; viewModeHourOffsetHours?: number; }