Skip to main content

add-task

Description

Fires when adding a new task

Usage

"add-task": (ev: {
id?: string | number,
task: Partial<ITask>,
target?: string | number,
mode?: "before" | "after" | "child",
show?: "x" | "y" | "xy" | boolean,
select?: boolean,
}) => 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 add-task action can take an object with the following parameters:

  • id - (optional) the id of a new task
  • target - (required) the task ID before or after which a new task will be added
  • task - (required) the task object. The list of parameters you can see here: tasks.
  • mode - (required) specifies where to place a task: before - before the task which id is specified, after it (after), or creates the child task for the target (child)
  • show – (optional) determines whether and how to scroll to the new task after creation:
    • "x" – scroll horizontally
    • "y" – scroll vertically
    • "xy" – scroll both axes
    • true – scroll in both directions
    • false – do not scroll
  • select - (optional) set to true (default) to select the added task; otherwise, false

Example

Use the api.exec method to trigger the action:

<script>
import { Gantt } from "@svar-ui/svelte-gantt";
import { Button } from "@svar-ui/svelte-core";
import { getData } from "./common/data";

const { tasks, links } = getData();

let api = $state();

function handleAdd() {
api.exec("add-task", { task: {} });
}

</script>

<Button type="primary" onclick={handleAdd}>Add task</Button>
<Gantt bind:this={api} {tasks} {links} />

In the example below we use the api.intercept() method to change the task variable value replacing it with the relevant data from the add-task action:

<script>
import { getData } from "./common/data";
import { Gantt } from "@svar-ui/svelte-gantt";

const data = getData();

let task;

function init(api) {
api.intercept("add-task", data => {
task = data.task;
});
}
</script>

<Gantt
tasks={data.tasks}
{init} />

Prevent adding a task

You can intercept the action and return false to block it:

api.intercept("add-task", ev => {
if (!allowAdd) return false; // prevents adding
});

Related articles: