Task CRUD

Built-in editing with drag.enabled: drag to move, drag either end to resize, double-click (or F2) to rename in place, Delete to remove, Insert / Alt+N to add, Ctrl+Z / Ctrl+Shift+Z to undo / redo. Every edit fires a cancelable event (taskChange / taskCreate / taskDelete) and historyChange.

Chart type
Gantt gantt
Tier
Premium
Collection
Gantt
Render
Live, site theme
View .md Agent setup
LIVE/gantt/task-crud19 of 35 in Gantt

Configuration

Raw Standalone
const options = {
  chart: {
    height: "auto",
    toolbar: {
      show: false
    },
    type: "gantt",
    events: {
      dataPointSelection: (e, ctx, o) => (sel = o.selected && o.selected[0]),
      taskChange: (e, ctx, o) => log(o.source + ': ' + (o.name ? '"' + o.previous.name + '" → "' + o.name + '"' : o.task.name + ' ' + new Date(o.start).toDateString())),
      taskCreate: (e, ctx, o) => log(o.source + ': added ' + (o.data.x || o.data.name)),
      taskDelete: (e, ctx, o) => log(o.source + ': removed ' + (o.data.x || o.data.name)),
      historyChange: (e, ctx, o) => log('history: ' + o.undo + ' undo / ' + o.redo + ' redo')
    }
  },
  series: [
    {
      name: "Vendor selection",
      data: [
        {
          id: "t1",
          x: "Draft brief",
          y: [1792360800000, 1792620000000],
          progress: 100
        },
        {
          id: "t2",
          x: "Collect quotes",
          y: [1792533600000, 1793142000000],
          progress: 30,
          dependsOn: ["t1"]
        },
        {
          id: "t3",
          x: "Pick vendor",
          y: 1793228400000,
          milestone: true,
          dependsOn: ["t2"]
        }
      ]
    }
  ],
  plotOptions: {
    gantt: {
      today: {
        date: "2026-10-22"
      },
      drag: {
        enabled: true,
        draw: true
      },
      range: {
        min: 1792188000000,
        max: 1793919600000
      }
    }
  },
  theme: {
    mode: "light",
    preset: "coastal"
  }
}

const chart = new WestCoastCharts(document.querySelector('#chart'), options)
chart.render()

This example uses Premium modules. Compare licences · Embedding in a distributed product?