var dp = new DayPilot.Scheduler("dp"); // view dp.startDate = new DayPilot.Date("2019-03-01"); dp.days = dp.startDate.daysInMonth(); dp.scale = "Day"; dp.timeHeaders = [ {groupBy: "Month"}, {groupBy: "Day", format: "d"} ]; dp.rowHeaderColumns = [ {text: 'Name', display: "name"}, {text: 'Floor', display: "location"}, {text: 'Size', display: "size"} ]; dp.rowHeaderColumnsMode = "Tabular"; dp.resources = [ { id: "A", expanded: false, name: "Building A", children: [ {id: "101", name: "Room 101", location: "Floor 1", size: "2 beds"}, {id: "102", name: "Room 102", location: "Floor 1", size: "3 beds"}, {id: "103", name: "Room 103", location: "Floor 1", size: "1 bed"}, {id: "201", name: "Room 201", location: "Floor 2", size: "2 beds"}, ] }, { id: "B", expanded: false, name: "Building B", children: [ {id: "301", name: "Room 301", location: "Floor 1", size: "2 beds"}, {id: "302", name: "Room 302", location: "Floor 1", size: "3 beds"}, {id: "303", name: "Room 303", location: "Floor 1", size: "1 bed"}, {id: "401", name: "Room 401", location: "Floor 2", size: "2 beds"}, ] }, ]; dp.treeEnabled = true; var start = new DayPilot.Date("2019-03-02T00:00:00"); // generate and load events for (var i = 1; i < 6; i++) { var duration = Math.floor(Math.random() * 6) + 1; // 1 to 6 var end = start.addDays(duration); var e = new DayPilot.Event({ start: start, end: end, id: DayPilot.guid(), resource: "101", text: "Reservation #" + i }); dp.events.add(e); start = end.addDays(1); } // event creating dp.onTimeRangeSelected = function (args) { var name = prompt("New event name:", "Event"); dp.clearSelection(); if (!name) return; var e = new DayPilot.Event({ start: args.start, end: args.end, id: DayPilot.guid(), resource: args.resource, text: name }); dp.events.add(e); dp.message("Created"); }; dp.rowHeaderColumnsResizable = true; dp.onBeforeRowHeaderRender = function (args) { // args.row.columns[1].horizontalAlignment = "right"; if (args.row.id === "A") { args.row.columns = []; } }; dp.init();