group-tasks
PRO
The functionality is available in PRO Edition only
Description
Fires when grouping tasks by a specified fieldUsage
"group-tasks": ({
field: string,
taskHierarchy?: boolean,
resourceHierarchy?: boolean,
multipleResources?: boolean,
ungrouped?: false | "top" | "bottom",
resolver?: (task: ITask) => any,
}) => boolean | void;
info
For handling the actions you can use the Event Bus methods. Returning false from the action handler will block the action (see Preventing actions)
Parameters
The callback of the group-tasks action can take an object with the following parameters:
field- (required) the field to group tasks by; use"resource"to group by assigned resources, or any task field name (e.g.,"status","priority")taskHierarchy- (optional) if true, preserves the task parent/child structure within each group; Default:falseresourceHierarchy- (optional) if true, shows the resource hierarchy (teams and people) within resource groups; applies only whenfieldis"resource"; Default:truemultipleResources- (optional) controls how tasks assigned to multiple resources are displayed: if false, the task appears under each assigned resource separately; if true, the task appears once under a combined group label (e.g.,"Alice, Bob"); applies only whenfieldis"resource"; Default:falseungrouped- (optional) controls placement of tasks that have no value for the grouping field:falsehides them,"top"places them above all groups,"bottom"places them below all groups; Default:"bottom"resolver- (optional) a custom function(task: ITask) => valueto extract the group value from a task; overrides the defaulttask[field]lookup; not applicable whenfieldis"resource"
Example
Use the api.exec method to trigger the action:
<script>
import { getData } from "./common/data";
import { Gantt } from "@svar-ui/svelte-gantt";
const data = getData();
let api = $state();
function init(ganttApi) {
api = ganttApi;
}
function groupByResource() {
api.exec("group-tasks", { field: "resource" });
}
</script>
<Gantt
tasks={data.tasks}
links={data.links}
scales={data.scales}
resources={data.resources}
assignments={data.assignments}
{init}
/>
Prevent grouping
You can intercept the action and return false to block it:
api.intercept("group-tasks", ev => {
if (!allowGrouping) return false; // prevents grouping
});
Related articles: