This scheduler displays 300 resources, each with 3 children. The row headers are
rendered progressively during scrolling (
progressiveRowRendering: true).
Read more about
progressive row
rendering.
Agent-readable demo data
- Title
- Progressive Row Rendering (JavaScript Scheduler) | DayPilot Pro for JavaScript Demo
- Tree
- DayPilot JavaScript Demo
- Catalog root
- Default
- Description
- This scheduler displays 300 resources, each with 3 children. The row headers are
rendered progressively during scrolling (progressiveRowRendering: true).
Read more about progressive row rendering.
Inline demo script 1
const dp = new DayPilot.Scheduler("dp", {
startDate: "2026-01-01",
days: 365,
scale: "Day",
timeHeaders: [
{groupBy: "Month", format: "MMMM yyyy"},
{groupBy: "Cell", format: "d"}
],
treeEnabled: true,
progressiveRowRendering: true,
onTimeRangeSelected: async args => {
const modal = await DayPilot.Modal.prompt("New event name:", "Event");
dp.clearSelection();
if (modal.canceled) {
return;
}
dp.events.add({
start: args.start,
end: args.end,
id: DayPilot.guid(),
resource: args.resource,
text: modal.result
});
dp.message("Created");
},
height: 350
});
dp.init();
dp.scrollTo("2026-03-25");
const app = {
init() {
this.loadData();
},
loadData() {
// generate and load events
const resources = [];
for (let i = 0; i < 300; i++) {
const r = {
name: "Resource " + i,
id: "R" + i,
children: []
};
for (let x = 0; x < 3; x++) {
const c = {
name: "Resource " + i + "." + x,
id: "R" + i + "." + x
};
r.children.push(c);
}
resources.push(r);
}
const events = []
for (let i = 0; i < 300; i++) {
events.push({
start: "2026-03-25",
end: "2026-03-25T12:00:00",
id: DayPilot.guid(),
resource: "R" + i,
text: "Event"
});
}
dp.update({resources, events});
}
};
app.init();