Plot.plot({
height: settings.plotHeight,
width: settings.plotWidth,
x: {
grid: (settings.gridlines == "x") | (settings.gridlines == "both") ? true : null,
padding: 0.4,
domain: [parser('2024-09-19'), parser('2025-01-31')]
},
y: {
domain: domainByDate,
label: null,
tickFormat: null,
tickSize: null,
grid: (settings.gridlines == "y") | (settings.gridlines == "both") ? true : null
},
color: { domain: domainByGroup, range: colors, legend: true },
marks: [
Plot.frame({ stroke: settings.panelBorder == "show" ? "#ccc" : null }),
Plot.barX(tasks, { // shallow
y: "task",
x1: (d) => parser(d.startDate),
x2: (d) => parser(d.endDate),
rx: settings.barRoundness,
insetTop: settings.barHeight,
insetBottom: settings.barHeight,
dx: 5, dy: 5
}),
Plot.barX(tasks, {
y: "task",
x1: (d) => parser(d.startDate),
x2: (d) => parser(d.endDate),
fill: "group",
rx: settings.barRoundness,
insetTop: settings.barHeight,
insetBottom: settings.barHeight
}),
Plot.text(tasks, {
y: "task",
x: (d) => parser(d.startDate),
text: (d) => d.task,
textAnchor: "start",
dy: settings.textPosition,
fontSize: settings.fontSize,
stroke: "white",
fill: "dimgray",
fontWeight: 500
}),
Plot.tip(tasks, Plot.pointerY({
y: "task",
x1: (d) => parser(d.startDate),
x2: (d) => parser(d.endDate),
fontSize: settings.fontSize,
title: (d) =>
`FullName: ${d.FullName}\nStart: ${d.startDate}\nEnd: ${d.endDate}\nDateRange: ${d.DateRange}`
}))
]
})