gantt-task-react-powern
Version:
Interactive Gantt Chart for React with TypeScript.
186 lines (185 loc) • 5.41 kB
TypeScript
/// <reference types="react" />
export interface CalendarDefinition {
name: string;
day_start: string;
day_end: string;
week_start: number;
quarter_start: number;
shifts: [string, string][];
off_days: number[];
holidays: string[];
}
export declare enum ViewMode {
Hour = "Hour",
QuarterDay = "Quarter Day",
HalfDay = "Half Day",
Day = "Day",
/** ISO-8601 week */
Week = "Week",
Month = "Month",
Quarter = "Quarter",
Year = "Year"
}
export declare type TaskType = "task" | "milestone" | "project";
export declare type Dependency = "SS" | "SF" | "FS" | "FF";
export declare type DependencyType = {
id: string;
type: Dependency;
};
export interface Task {
id: string;
optionalId?: string | null;
type: TaskType;
name: string;
start: Date;
end: Date;
/**
* From 0 to 100
*/
progress: number;
actualStart: Date;
actualEnd: Date;
criticalPathArrows?: Array<{
taskId: string;
arrowColor: string;
criticalPathType: string;
}>;
styles?: {
taskProgressColor?: string;
backgroundColor?: string;
backgroundSelectedColor?: string;
progressColor?: string;
progressSelectedColor?: string;
criticalPathColor?: string;
};
percentComplete?: number | null;
plannedDuration?: number | null;
remainingDuration?: number | null;
actualDuration?: number | null;
durationType?: string | null;
depth: number;
isDisabled?: boolean;
project?: string;
dependencies?: DependencyType[];
hideChildren?: boolean;
displayOrder?: number;
childrenCount?: number;
calendar?: CalendarDefinition;
}
export interface EventOption {
/**
* Time step value for date changes.
*/
timeStep?: number;
/**
* Invokes on bar select on unselect.
*/
onSelect?: (task: Task, isSelected: boolean) => void;
/**
* Invokes on bar double click.
*/
onDoubleClick?: (task: Task) => void;
/**
* Invokes on bar click.
*/
onClick?: (task: Task) => void;
/**
* Invokes on end and start time change. Chart undoes operation if method return false or error.
*/
onDateChange?: (task: Task, children: Task[]) => void | boolean | Promise<void> | Promise<boolean>;
/**
* Invokes on progress change. Chart undoes operation if method return false or error.
*/
onProgressChange?: (task: Task, children: Task[]) => void | boolean | Promise<void> | Promise<boolean>;
/**
* Invokes on delete selected task. Chart undoes operation if method return false or error.
*/
onDelete?: (task: Task) => void | boolean | Promise<void> | Promise<boolean>;
/**
* Invokes on expander on task list
*/
onExpanderClick?: (task: Task) => void;
/**
* Invokes when tasks are multi-selected via checkboxes
*/
onMultiSelect?: (tasks: Task[]) => void;
onCalendarError?: (task: Task, reason: string) => void;
}
export interface DisplayOption {
viewMode?: ViewMode;
viewDate?: Date;
preStepsCount?: number;
/**
* Specifies the month name language. Able formats: ISO 639-2, Java Locale
*/
locale?: string;
rtl?: boolean;
}
export interface StylingOption {
headerHeight?: number;
columnWidth?: number;
listCellWidth?: string;
rowHeight?: number;
ganttHeight?: number;
barCornerRadius?: number;
handleWidth?: number;
fontFamily?: string;
fontSize?: string;
/**
* How many of row width can be taken by task.
* From 0 to 100
*/
barFill?: number;
barProgressColor?: string;
barProgressSelectedColor?: string;
barBackgroundColor?: string;
barBackgroundSelectedColor?: string;
projectProgressColor?: string;
projectProgressSelectedColor?: string;
projectBackgroundColor?: string;
projectBackgroundSelectedColor?: string;
milestoneBackgroundColor?: string;
milestoneBackgroundSelectedColor?: string;
arrowColor?: string;
arrowIndent?: number;
todayColor?: string;
weekendColor?: string;
TooltipContent?: React.FC<{
task: Task;
fontSize: string;
fontFamily: string;
}>;
TaskListHeader?: React.FC<{
headerHeight: number;
rowWidth: string;
fontFamily: string;
fontSize: string;
}>;
TaskListTable?: React.FC<{
rowHeight: number;
rowWidth: string;
fontFamily: string;
fontSize: string;
locale: string;
tasks: Task[];
selectedTaskId: string;
/**
* Sets selected task by id
*/
setSelectedTask: (taskId: string) => void;
onExpanderClick: (task: Task) => void;
}>;
taskLabelRenderer?: (Task: Task) => React.ReactNode;
taskProgressColor?: string;
delayToRender?: number;
shouldNotShowLoadingOverlay?: boolean;
}
export interface GanttProps extends EventOption, DisplayOption, StylingOption {
tasks: Task[];
leafTasks?: Task[];
scheduleType: string;
startDate?: Date;
endDate?: Date;
projectCalendar?: CalendarDefinition;
sliderTime?: number;
}