Kendo UI를 사용하여 달력 작업을 시작하려면 먼저 Salesforce 조직에서 일정을 가져 와서 일정에 표시하면됩니다. .Kendo-UI 스케줄러 'GetTimezoneOffset'오류
var data = '{!jsonString}';
var scheduler = $('#scheduler').kendoScheduler({
date: new Date(),
startTime: new Date(),
height: 700,
timezone: "Etc/UTC",
views: [
{type: "week", selected: true},
"week",
"month",
"agenda"
],
dataSource: {
batch: true,
transport: {
read: function(e){
console.log(data);
e.success(data);
},
update: {
url: "http://demos.telerik.com/kendo-ui/service/tasks/update",
dataType: "jsonp"
},
create: {
url: "http://demos.telerik.com/kendo-ui/service/tasks/create",
dataType: "jsonp"
},
destroy: {
url: "http://demos.telerik.com/kendo-ui/service/tasks/destroy",
dataType: "jsonp"
},
parameterMap: function(options, operation) {
if (operation !== "read" && options.models) {
return {models: kendo.stringify(options.models)};
}
}
},
schema: {
model: {
id: "OwnerId",
fields: {
taskId: { from: "TaskID" },
title: { from: "Title", defaultValue: "No title", validation: { required: true } },
start: { type: "date", from: "Start" },
end: { type: "date", from: "EndTime" },
startTimezone: { from: "StartTimezone" },
endTimezone: { from: "EndTimezone" },
description: { from: "Description" },
recurrenceId: { from: "RecurrenceID" },
recurrenceRule: { from: "RecurrenceRule" },
recurrenceException: { from: "RecurrenceException" },
ownerId: { from: "OwnerID", defaultValue: 1 },
isAllDay: { type: "boolean", from: "IsAllDay" }
}
}
}
}
//});
});
그리고 데이터 변수는 형식으로 JSON이다 : 그러나, 나는 정의되지 않은 오류의 특성 '에, getTimezoneOffset'을 읽을 수 없습니다 "에 의해 괴롭혀되고 있어요 도움을 찾고 있어요 내 JS이다
[ "제목": "모임", "작업 ID": "00U410000059ZjbEAE", "StartTimezone": "기타/UTC", "시작": "2017-01-26", "RecurrenceRule": null, "RecurrenceId" : null, "RecurrenceException": null, "OwnerId": "005410000020eLnAAI", "IsAllDay": false, "EndTimezone": "Etc/UTC", "End": "2017-01-26", "설명 ":"회의 "}, {"제목 ":"meeti"TaskId": "00U410000059ZjcEAE", "StartTimezone": "Etc/UTC", "시작": "2017-01-26", "RecurrenceRule": null, "RecurrenceId": null, "RecurrenceException ": null,"OwnerId ":"005410000020eU9AAI ", "IsAllDay ": false,"EndTimezone ":"Etc/UTC ","End ":"2017-01-26 ", "설명 ":"모임 " }, 등 ...}]
읽기 작업의 console.log (데이터)에 따릅니다. 이벤트 배열을 가져 오는 컨트롤러가 있고 그 배열 (JSON String, 데이터 액세스)을 JSON.serialize합니다.
시간대 오프셋과 관련된 문제점을 해결하지 못하고 모든 JSON 항목 데이터가 자습서 스키마의 입력란과 일치하지만 여전히 작동하지 않습니다 ... 캘린더에 모든 이벤트를 표시하기 만하면됩니다. 이 JSON을 읽기 조작으로 전달하여 열 때 현재 존재합니다. 어떤 도움이라도 대단히 감사하게 될 것입니다! 고맙습니다. 여기
내 컨트롤러 :global with sharing class CalendarData {
public List<Event> eventList{get;set;}
public String jsonString{get;set;}
public List<schedulerItem> correctedItems{get;set;}
public CalendarData(){
String eventQuery = 'SELECT ActivityDate,ActivityDateTime,CreatedById,Description,DurationInMinutes,EventSubtype,IsAllDayEvent,Location,OwnerId,EndDateTime,StartDateTime,Subject FROM Event';
eventList = Database.query(eventQuery);
correctedItems = itemList(eventList);
system.debug(correctedItems);
jsonString = JSON.serialize(correctedItems);
jsonString = jsonString.replace('"EndTime"', '"End"');
}
public List<schedulerItem> itemList(List<Event> events){
Integer i = 0;
system.debug(events);
List<schedulerItem> kendoEvents = new List<schedulerItem>();
schedulerItem item = new schedulerItem();
for(i = 0; i < events.size(); i++){
item.Description = events[i].Description;
Datetime dt = events[i].EndDateTime;
item.EndTime = dt.date();
dt = events[i].StartDateTime;
item.Start = dt.date();
item.EndTimezone = 'Etc/UTC';
//public String id;
item.IsAllDay = events[i].IsAllDayEvent;
item.RecurrenceException = null;
item.RecurrenceId = null;
item.RecurrenceRule = null;
item.StartTimezone = 'Etc/UTC';
item.Title = events[i].Subject;
item.TaskId = events[i].Id;
item.OwnerId = events[i].OwnerId;
system.debug(item);
kendoEvents.add(item);
item = new schedulerItem();
}
return kendoEvents;
}
public class schedulerItem{
public String Description;
public Date EndTime;
public Date Start;
public String EndTimezone;
//public String id;
public Boolean IsAllDay;
public String RecurrenceException;
public String RecurrenceId;
public String RecurrenceRule;
public String StartTimezone;
public String Title;
public String TaskId;
public String OwnerId;
}
}
내가 이벤트의 목록을 다음 스키마와 일치 데이터 이름으로 이벤트에 원래의 이벤트 목록에서 데이터를 결합하는 새로운 목록을 작성하는 사용자 정의 클래스를 사용 튜토리얼의 모델 이름. 또한 모든 "EndTime"을 "End"로 대체합니다.
내 이벤트 읽을 수있는 솔루션을 찾았 내 반환 JSON 배열이 다음 객체의 단지 배열로 다시 구문 분석 걸렸
var data = '{!jsonString}';
var dataList = JSON.parse(data);
function getNewEvents() {
var eventList = [];
for(var i = 0; i < dataList.length; i++){
//console.log("DataList Again: " + dataList[i]);
var kendoEvent = new kendo.data.SchedulerEvent({
id: i,
taskId: dataList[i].TaskId,
title: dataList[i].Title,
start: new Date(dataList[i].Start),
end: new Date(dataList[i].End),
startTimezone: dataList[i].StartTimezone,
endTimezone: dataList[i].EndTimezone,
description: dataList[i].Description,
recurrenceId: dataList[i].RecurrenceId,
recurrenceRule: dataList[i].RecurrenceRule,
recurrenceException: dataList[i].RecurrenceException,
ownerId: dataList[i].OwnerId,
isAllDay: dataList[i].IsAllDay
});
eventList.push(kendoEvent);
}
return eventList;
}
eventData = getNewEvents();
을 한 후 실제 kendo.data.SchedulerEvents의 새로운 배열을 생성 모든 필드를 정확한 이름으로 채운다. 그리고 대신 URL 및 데이터 형식의 데이터 소스에서 내 읽기 작업에, 내가 한 :
데이터 검도 스케줄러 이벤트 내 배열read: function(e){
e.success(data);
}
. 이제 내 일정은 내 조직의 모든 일정을 보여줍니다. 이제는 업데이트 작업, 파괴 작업 및 생성 작업을 수행해야합니다. 수락 된 답변의 의견에 제공된 링크를 통해 필자는 필요한 문서와 함께이 솔루션에 도달 할 수있었습니다.
내가 코멘트에 있지만 오류의 코드 하나에보고 한 모델의 잘못된 구성뿐만 아니라 잘못된 읽기 구성입니다 들어오는 필드로 JSON에 없기 때문에이 문제에 대한 다른 이유가있을 수 있습니다
가장 일반적인 이유에 대한 정확하지 않은 경우, 나는 확실하지 않다 읽고 사용하십시오 "getTimezoneOffset of null"오류가 잘못 전달/설정된 날짜 값입니다. –