Skip to main content

Configuring the tasks tree area

The grid with tasks tree can be used for quick navigation.

By default, the tasks tree area contains 4 columns:

  • Task name
  • Start date
  • Duration
  • '+' column. A special column with the '+' button which allows users to add tasks

Configuring columns

Columns with default parameters are applied by default and you don't need to specify the columns objects.

Default columns array you can see here: columns.

Adding a column

If you want to add a new column, add the columns object to the array and specify its id parameter in the task object. id is the mandatory parameter which defines the content of cells and the cell will take the value of the matching property from a task by default.

import { Gantt } from "wx-react-gantt";
import "wx-react-gantt/dist/gantt.css";
import React, { useRef } from "react";

const GanttComponent = () => {
const columns = [
{ id: "holder", header: "Holder", width: 90, align: "center" },
//other columns
];

const tasks = [
{
id: 1,
start: new Date(2022, 2, 4),
end: new Date(2023, 2, 4),
progress: 20,
parent: 1,
type: "task",
holder: "Nick",
},
//other tasks
];

return <Gantt tasks={tasks} columns={columns} />;
};

export default GanttComponent;

Configuring columns width

To add columns with the fixed width, set the width value, the default value is 120. To make the width of columns flexible, apply the flexgrow parameter of the columns property. It specifies specifies how much space (width) relative to the grid width the column will take (it will take no effect on columns with the set width); the property is specified as a number and if flexgrow is set to 1 in one column only, the column will take the full available width.

Example:

import { getData } from "../data";
import { Gantt } from "wx-react-gantt";
import "wx-react-gantt/dist/gantt.css";
import { useRef } from "react";

const GanttComponent = () => {
const data = getData();

const columns = [
{ id: "text", header: "Task name", flexgrow: 2 },
{
id: "start",
header: "Start date",
flexgrow: 1,
align: "center",
},
{
id: "duration",
header: "Duration",
align: "center",
flexgrow: 1,
},
{
id: "action",
header: "",
width: 50,
align: "center",
},
];

return (
<Gantt
tasks={data.tasks}
links={data.links}
scales={data.scales}
columns={columns}
/>
);
};

export default GanttComponent;

Disabling the tasks reordering

By default, a user can reorder tasks in the grid area with drag&drop. To disable the tasks ordering feature, you can apply the api.intercept() method to handle the drag-task action.

import { getData } from "./data";
import { Gantt } from "wx-react-gantt";
import "wx-react-gantt/dist/gantt.css";
import { useRef } from "react";

const MyComponent = () => {
const data = getData();
const apiRef = useRef();

if (apiRef.current) {
apiRef.current.intercept("drag-task", ev => {
if (typeof ev.top !== "undefined")
return false;
});
}

return (
<Gantt
columns={data.columns}
tasks={data.tasks}
ref={apiRef}
/>
);
};

export default MyComponent;

Another way to disable the feature is to switch to the read-only mode.

Hiding the tasks tree area

To hide the area with tasks tree, set the columns property to false:

import { getData } from "./data";
import { Gantt } from "wx-react-gantt";
import "wx-react-gantt/dist/gantt.css";

const data = getData();

function App() {
return (
<Gantt
columns={false}
tasks={data.tasks}
/>
);
}

export default App;