Hi,
I have the following code for a complex scheduler. When I switch to the month view, it randomly changes the position of the first column (grouping column) left, middle or right. Is there any solution to fix this rendering issue? The first attached image, "scheduler_0.png", is normal. The rest of attached images are for this rendering issue. Any ideas?
window.schema = { model: { id: "id", fields: { id: { from: "id", type: "number" }, title: { from: "ev1_title", defaultValue: "", validation: { required: true } }, description: { from: "ev1_desc" }, isAllDay: { from: "ev1_is_all_day", type: "boolean" }, startTimezone: { from: "ev1_start_timezone" }, start: { from: "ev1_start", type: "date" }, endTimezone: { from: "ev1_end_timezone" }, end: { from: "ev1_end", type: "date" }, recurrenceId: { from: "ev1_recurring" }, recurrenceRule: { from: "ev1_recurring_rule" }, recurrenceException: { from: "ev1_recurring_exception" }, ev1_status: { from: "ev1_status", }, ev1_type: { from: "ev1_type", }, jt1_id: { from: "jt1_id", }, ev1_event_resource_types: { from: "ev1_event_resource_types", nullable: true }, ev1_event_resources: { from: "ev1_event_resources", nullable: true }, ev1_event_users: { from: "ev1_event_users", nullable: true }, ev1_urgent: { from: "ev1_urgent", nullable: true }, ev1_date_count: { from: "ev1_date_count", nullable: true }, }, },};window.parameterMap = function (options, operation) { if (operation !== "read" && options.models) { return { models: kendo.stringify(options.models) }; }};var timelineMonth = kendo.ui.TimelineView.extend({ options: { selectedDateFormat: "{0:D} - {1:D}" }, name: "timelineMonth", calculateDateRange: function() { //create a range of dates to be shown within the view var selectedDate = this.options.date; var start = kendo.date.dayOfWeek(selectedDate, this.calendarInfo().firstDay, -1); var dates = []; for (var idx=0, length=25; idx<length; idx++) { dates.push(start); start = kendo.date.nextDay(start); } this._render(dates); }});$("#scheduler").kendoScheduler({ //timezone: "America/Chicago", date: new Date("2015/10/01"), startTime: new Date("2015/10/01 00:00 AM"), //endTime: new Date("2015/10/01 00:00 AM"), workDayStart: new Date("2015/10/01 00:00 AM"), workDayEnd: new Date("2015/10/01 11:59:59 PM"), currentTimeMarker: { useLocalTimezone: true, }, showWorkHours: false, //selectable: true, majorTick: 60, eventHeight: 20, toolbar: [ "pdf", ], pdf: { fileName: "JobSchedules.pdf", proxyURL: "http://demos.telerik.com/kendo-ui/service/export" }, views: [ { type: "timeline", title: "Day", majorTick: 60, columnWidth: 20, eventHeight: 12, startTime: new Date("2015/10/01 00:00 AM"), editable: { create: false, update: false, destroy: false, move: true, resize: true, }, eventTemplate: $("#event-template").html(), }, { type: "timelineWeek", title: "Week", majorTick: 720, columnWidth: 15, eventHeight: 12, startTime: new Date("2015/10/01 00:00 AM"), editable: { create: false, update: false, destroy: false, move: true, resize: true, }, eventTemplate: $("#event-template").html(), }, { type: timelineMonth, name: "timelineMonth", title: "Month", selected: true, majorTick: 1440, columnWidth: 10, eventHeight: 12, startTime: new Date("2015/10/01 00:00 AM"), editable: { create: false, update: false, destroy: false, move: true, resize: true, }, eventTemplate: $("#event-template").html(), dateHeaderTemplate: kendo.template('<strong>#=kendo.toString(date,"MMM")#<br>#=kendo.toString(date,"dd")#</strong>'), } ], group: { resources: ["Jobs"], orientation: "vertical" }, resources: [ { title: "Status", field: "ev1_status", dataTextField: "text", dataValueField: "value", name: "EventStatus", multiple: false, dataSource: [ { text: "Tentative", title: "Tentative", value: 1, color: "#808080" }, { text: "Active", title: "Active", value: 2, color: "#008000" }, { text: "In Progress", title: "In Progress", value: 3, color: "#008000" }, { text: "Pending", title: "Pending", value: 4, color: "#808080" }, { text: "Completed", title: "Completed", value: 5, color: "#000000" }, ], }, { title: "Type", field: "ev1_type", dataTextField: "text", dataValueField: "value", name: "EventType", multiple: false, dataSource: [ { text: "Activity", title: "Activity", value: 1, color: "#008000" }, { text: "Activity", title: "Activity", value: 2, color: "#d9534f" }, { text: "Individual", title: "Individual", value: 0, color: "#39B3D7" }, ], }, { title: "Jobs", field: "jt1_id", dataTextField: "text", dataValueField: "value", name: "Jobs", multiple: false, dataSource: [{"text":"C14050 - Walmart Blaine\/Ramsey","value":"51","color":"#3C763D","title":"Walmart Blaine\/Ramsey","code":"C14050"},​...], }, { title: "Trucking", field: "ev1_event_resource_types", dataTextField: "text", dataValueField: "value", name: "ResourceTypes", multiple: true, dataSource: [{"text":"Box Trailer","value":"32","color":"","title":"Box Trailer","code":"Box Trailer"},​...], }, { title: "Equipment", field: "ev1_event_resources", dataTextField: "text", dataValueField: "value", name: "Resources", multiple: true, dataSource: [{"text":"1 Foot Bucket","value":"68","color":"#3C763D","title":"1 Foot Bucket - 1 Foot Bucket","code":"1 Foot Bucket"},​...], }, { title: "Employee", field: "ev1_event_users", dataTextField: "text", dataValueField: "value", name: "Employees", multiple: true, dataSource: [{"text":"[FMAN] Brian H","value":"53","title":"[Foreman] Brian H"},​...], }, ], dataSource: { batch: false, transport: { read: function(options) { $("body").append('<div class="spinner-modal row-centered"><div class="col-centered"><i class="fa fa-spinner fa-2x faa-spin animated"></i></div></div>'); var view = $("#scheduler").data("kendoScheduler").view(); $.ajax({ dataType: "jsonp", data: { view: view.title=="Day"?"timeline":(view.title=="Week"?"timelineWeek":(view.title=="Month"?"timelineMonth":"agenda")), start: kendo.format("{0:d}", view.startDate()), end: kendo.format("{0:d}", view.endDate()), active: 2, eventType: 3, users: [], jobTickets: $("#s2id_Scheduler_jobTickets").select2("val"), }, success: function(result) { options.success(result); $(".spinner-modal").remove(); }, error: function(result) { options.error(result); $(".spinner-modal").remove(); } }); }, parameterMap: window.parameterMap, }, requestEnd: function(e) { if (e.response && e.response.length > 0) { $.each(e.response, function(key, event) { event.ev1_start = new Date(event.ev1_start); event.ev1_end = new Date(event.ev1_end); }); } }, schema: window.schema, }, dataBound: function(e) { dropTargetArea(); $("#scheduler .k-event").each(function() { $(this).tooltip({ title: $.trim($(this).children(":nth-child(2)").attr("data-tooltip")), html: true, container: "body", placement: "bottom" }); }); $(".schedule-edit-btn").tooltip({ title: "Edit", html: true, container: "body", placement: "top" }); $("#scheduler .k-event-content[data-event-type='0']").parent().addClass("event-type-individual"); $("#scheduler .k-event-content[data-event-type='2']").parent().addClass("event-type-locate"); var view = $("#scheduler").data("kendoScheduler").view(); if (view.title == "Day" || view.title == "timeline") { // } else if (view.title == "Week" || view.title == "timelineWeek") { // } else if (view.title == "Month" || view.title == "timelineMonth") { window.slots = {}; view.datesHeader.find("tr:first th").each(function(index) { var text = $(this).children().first().text(); window.slots[index] = { date: text.substring(text.length-2, text.length), x: $(this).offset().left, width: $(this).width() + parseFloat($(this).css("border-left-width")) //+ parseFloat($(this).css("border-right-width")) + parseFloat($(this).css("padding-left")) + + parseFloat($(this).css("padding-right")), }; }); $("#scheduler .k-event-content[data-event-type='2'][data-urgent='1']").each(function() { $(this).prepend('<i class="fa-locate-warning fa fa-warning fa-lg faa-flash animated"></i>'); window.locateX = $(this).parent().offset().left; window.locateIndex = 0; $.each(window.slots, function(index, slot) { if (slot.x <= window.locateX && window.locateX <= slot.x+slot.width) { window.locateIndex = parseInt(index); } }); var tick = 0; var locateIndex = window.locateIndex; var locateWidth = 0; var totalLocateWidth = $(this).parent().width(); var locateContent = '<div class="k-event-locate">'; while(locateWidth <= totalLocateWidth && tick < 14 && window.slots[locateIndex] !== undefined) { var width = window.slots[locateIndex].width; if (locateWidth+width > totalLocateWidth) { width = totalLocateWidth - locateWidth; } if (tick < 11) locateContent += '<div class="k-event-locate-slot" style="width: '+width+'px;"></div>'; else locateContent += '<div class="k-event-locate-slot" style="width: '+width+'px;"><i class="fa-locate-warning fa fa-warning fa-lg faa-flash animated"></i></div>'; locateWidth += width; locateIndex++; tick++; } locateContent += '</div>'; $(this).parent().append(locateContent); }); } $(".spinner-modal").remove(); }, navigate: function(e) { $(".tooltip").remove(); var dataSource = new kendo.data.SchedulerDataSource({ batch: false, transport: { read: function(options) { $("body").append('<div class="spinner-modal row-centered"><div class="col-centered"><i class="fa fa-spinner fa-2x faa-spin animated"></i></div></div>'); var date = e.date; //if (e.action == "previous") { // date.setDate(date.getDate()-27); //} $.ajax({ dataType: "jsonp", data: { //view: e.view, view: e.view=="Day"?"timeline":(e.view=="Week"?"timelineWeek":(e.view=="Month"?"timelineMonth":"agenda")), action: e.action, start: kendo.format("{0:d}", e.date), end: kendo.format("{0:d}", e.date), active: 2, eventType: 3, users: [], jobTickets: $("#s2id_Scheduler_jobTickets").select2("val"), }, success: function(result) { options.success(result); $(".spinner-modal").remove(); }, error: function(result) { options.error(result); $(".spinner-modal").remove(); } }); }, parameterMap: window.parameterMap, }, requestEnd: function(e) { if (e.response && e.response.length > 0) { $.each(e.response, function(key, event) { event.ev1_start = new Date(event.ev1_start); event.ev1_end = new Date(event.ev1_end); }); } }, schema: window.schema, }); $("#scheduler").data("kendoScheduler").setDataSource(dataSource); }, edit: function(e) { e.preventDefault(); $(".tooltip").remove(); window.editEvent(e.event.id, e.event.ev1_type, e.event.ev1_status); },});
Thank you,
JB