Hi there,
I'm trying to add an extra field called 'attendees' to my custom edit page. My initial intent is to schedule a room with participating members and NOT grouping the members but the rooms
However, whenever I run it, i get the exception 'c is undefined'. Please see my code below.
Script
define([ 'plugins/router', 'global/session', 'services/security/map/general', 'services/security/employee/general', 'services/logger'], function (router, session, mapService, employeeService, logger) { var vm = function () { var self = this; self.title = "Room Reservations"; self.floorId = ko.observable(); self.floorList = ko.observableArray(); self.reservationList = ko.observableArray(); self.personList = ko.observableArray(); self.roomList = ko.observableArray(); self.session = session; self.dropDownConfig = { dataTextField: "FullName", dataValueField: "Id", dataSource: self.floorList, value: self.floorId, index: 0, }; self.floorId.subscribe(function (row) { for (var i = 0; i < self.floorList().length; i++) { self.roomList([]); if (self.floorList()[i].Id == row) { self.roomList($.map(self.floorList()[i].Rooms, function (e) { return { value: e.Id, text: e.Name }; })); self.getReservations(row); break; } }; }); self.activate = function () { return $.when(mapService.getFloorWithReservations(), employeeService.getPeople({ PersonTypeId: null, DepartmentId: null })) .then(function (getAllFloors, getPeople) { if (getAllFloors.OperationStatus == "Success") { self.floorList([]); self.floorList(getAllFloors.ReturnValue); } if (getPeople.OperationStatus == "Success") { self.personList([]); self.personList(getPeople.ReturnValue); } }) .fail(function () { }) .always(function () { session.isBusy(false); }); }; self.attached = function () { }; self.binding = function () { self.roomList([]); if (self.floorList().length) { self.roomList($.map(self.floorList()[0].Rooms, function (e) { return { value: e.Id, text: e.Name }; })); self.getReservations(self.floorList()[0].Id); } }; self.deactivate = function () { var scheduler = $("#scheduler").data("kendoScheduler"); if (scheduler != null) { scheduler.destroy(); $("#scheduler").empty(); } }; self.getReservations = function (floorId) { session.isBusy(true); return mapService.getReservations({ FloorId: floorId }) .done(function (getReservations) { if (getReservations.OperationStatus == "Success") { self.reservationList([]); self.reservationList($.map(getReservations.ReturnValue, function (e) { return { meetingID: e.Id, title: e.Title, start: new Date(moment(e.Start).format('L hh:mm a')), end: new Date(moment(e.End).format('L hh:mm a')), description: e.Description, recurrenceId: e.RecurrenceId, recurrenceRule: e.RecurrenceRule, recurrenceException: e.RecurrenceException, roomId: e.RoomId, attendees: e.Attendees, } })); } console.log(self.reservationList()) return self.loadScheduler(); }) .fail(function () { }) .always(function () { session.isBusy(false); }); }; self.loadScheduler = function () { var scheduler = $("#scheduler").data("kendoScheduler"); if (scheduler != null) { scheduler.destroy(); $("#scheduler").empty(); } $("#scheduler").kendoScheduler({ currentTimeMarker: false, allDaySlot: false, showWorkHours: true, //majorTimeHeaderTemplate: kendo.template("<strong>#=kendo.toString(date, 'h')#</strong><sup>00</sup>"), date: new Date(), startTime: new Date(getDateTime('07', getMonday(new Date()).getDate())), endTime: new Date(getDateTime('20', getMonday(new Date()).getDate())), mobile: true, workDayStart: new Date(getDateTime('08', getMonday(new Date()).getDate())), workDayEnd: new Date(getDateTime('19', getMonday(new Date()).getDate())), //height: 700, views: [ { type: "day", selected: true, eventTemplate: $("#event-template").html(), messages: { allDay: "All Day" }, }, //{ // type: "month", // group: { // orientation: "vertical" // } //}, //{ type: "week", selected: true }, //"month", "agenda", //"timeline" ], //majorTick: 1440, minorTickCount: 4, //selectable: true, editable: { template: $("#editor-template").html(), editRecurringMode: "series", confirmation: "Are you sure you want to delete this meeting?", window: { title: "My Custom Title", animation: false //open: myOpenEventHandler } }, edit: function (e) { var attendees = e.container.find("#attendees").kendoMultiSelect({ valuePrimitive: true, dataTextField: "Name", dataValueField: "Id", dataSource: self.personList() }).data("kendoMultiSelect"); var start = e.container.find("#start").kendoDateTimePicker({ interval: 15 }).data("kendoDateTimePicker"); var end = e.container.find("#end").kendoDateTimePicker({ interval: 15 }).data("kendoDateTimePicker"); start.timeView.options.min = new Date(getDateTime('08', getMonday(new Date()).getDate())); start.timeView.options.max = new Date(getDateTime('18', getMonday(new Date()).getDate())); end.timeView.options.min = new Date(getDateTime('08', getMonday(new Date()).getDate())); end.timeView.options.max = new Date(getDateTime('18', getMonday(new Date()).getDate())); }, save: function (e) { console.log(e) if (!checkAvailability(e.event.start, e.event.end, e.event)) { e.preventDefault(); } }, dataBinding: function (e) { //var tables = $(".k-scheduler-times .k-scheduler-table"); ////Required: remove only last table in dataBound when grouped //tables = tables.last(); //var rows = tables.find("tr"); //rows.each(function () { // $(this).children("th:last").hide(); //}); var tables = $(".k-scheduler-times .k-scheduler-table"); tables.first().find("tr").eq(1).hide(); tables = $(".k-scheduler-header-wrap .k-scheduler-table"); tables.first().find("tr").eq(1).hide(); }, dataBound: function (e) { //var scheduler = this, // view = this.view(), // firstTr = view.table.find("tr").eq(1); // console.log(view) }, dataSource: self.reservationList(), group: { resources: ["Rooms"], //orientation: "vertical" }, resources: [ { field: "roomId", name: "Rooms", dataSource: self.roomList(), title: "Room" }, { field: "attendees", dataSource: self.roomList(), multiple: true, title: "Attendees" } ], footer: false }); }; }; return vm; });
HTML
<style type="text/css"> .invalid-slot { background: red !important; cursor: no-drop; }</style><div class="col-md-12"> <div class="col-md-6"> <h2 data-bind="text: title"></h2> </div> <div class="col-md-6"> <input style="width: 350px; float: right;" data-bind="kendoDropDownList: dropDownConfig" /> </div></div><div class="col-md-12"> <div style="margin-bottom: 20px;" id="scheduler"></div> <script id="event-template" type="text/x-kendo-template"> <span>#: kendo.toString(start, "hh:mm") # - #: kendo.toString(end, "hh:mm") #</span> <i class="fa fa-lock"> </i> <div> # for (var i = 0; i < resources.length; i++) { # #: resources[i].text # # } # </div> </script> <script id="editor-template" type="text/x-kendo-template"> <div class="k-edit-label"> <label for="title">Title</label> </div> <div class="k-edit-field" data-container-for="title"> <input name="title" class="k-input k-textbox" type="text" data-bind="value:title"> </div> <div class="k-edit-label"> <label for="start">Start</label> </div> <div class="k-edit-field" data-container-for="start"> <input name="start" id="start" type="text" required data-role="datetimepicker" data-bind="value: start" /> </div> <div class="k-edit-label"> <label for="end">End</label> </div> <div class="k-edit-field" data-container-for="end"> <input name="end" id="end" type="text" required data-role="datetimepicker" data-bind="value: end" /> </div> <div class="k-edit-label"> <label for="description">Description</label> </div> <div class="k-edit-field" data-container-for="description"> <textarea name="description" class="k-textbox" data-bind="value: description"></textarea> </div> <div class="k-edit-label"> <label for="recurrenceRule">Recurrence</label> </div> <div data-container-for="recurrenceRule" class="k-edit-field"> <div data-bind="value: recurrenceRule" id="recurrenceRule" name="recurrenceRule" data-role="recurrenceeditor"></div> </div> <div class="k-edit-label"><label for="attendees">Attendees</label></div> <div data-container-for="attendees" class="k-edit-field"> <select id="attendees" name="attendees" data-bind="value: attendees"></select> </div> </script></div>
Please help.
Alex