dojox.Calendarを使用して、dojo.store.JsonRestを使用してRESTサーバーからクエリされたイベントを表示しようとしています(イベントは読み取り専用であるため、Observableストアなし)。
初期の「dateInterval」モードを「month」に設定して「matrixview」を表示し、「timeIntervalChange」イベントをインターセプトして、ユーザーが月間を移動するときにオンデマンドでイベントを取得するためにカレンダーストアで使用される「query」を変更します。
Everythigは正常に機能しますが、「マトリックスビュー」から「列ビュー」(カレンダーナビゲーションボタンを使用)に切り替えようとすると、(firebugコンソールから)「timeIntervalChange」イベントが発生し、RESTストアクエリが定期的に送信されても、イベントは表示されません。サーバーへ。
これが私のページのdojox.Calendarコードスニペットです。
require(["dojo/parser", "dojo/ready", "dojo/_base/xhr", "dojo/date/stamp", "dojo/date/locale", "dijit/Dialog", "dojo/store/JsonRest", "dojox/calendar/Calendar"],
function(parser, ready, xhr, stamp, locale, Dialog, JsonRest, Calendar) {
ready(function(){
var calendarDate = 'the initial ISO date from an MVC model object';
var query = "";
var eventStore = new JsonRest({target: 'the REST service URL'});
calendar = new Calendar({
date: calendarDate,
dateInterval: "month",
startTimeAttr: "dataOraInizioISO",
endTimeAttr: "dataOraFineISO",
summaryAttr: "descrizione",
decodeDate: function(s){return stamp.fromISOString(s);},
encodeDate: function(d){return stamp.toISOString(d);},
style: "position:relative;width:950px;height:700px",
columnViewProps:{minHours:5, maxHours:23, hourSize:40, timeSlotDuration:30},
editable: false,
selectionMode: "none",
}, "calendarioIncontri");
calendar.on("timeIntervalChange", function(e){
var sStartDate =
locale.format(e.startTime,{selector: "date", pattern: "dd/MM/yyyy", fullYear: true});
var sEndDate =
locale.format(e.endTime,{selector: "date", pattern: "dd/MM/yyyy", fullYear: true});
query = "?" + "dataInizio=" + sStartDate + "&" + "dataFine=" + sEndDate;
calendar.set('query', query);
calendar.set('store', eventStore);
});
すべてのイベント(!)の最初の一括クエリを回避するために、「timeIntervalChange」イベントが発生した場合にのみカレンダーの「store」プロパティと「query」プロパティを設定します。また、テストした限り、設定する必要があることに注意してください。毎回カレンダーの「store」プロパティを使用して、マトリックスビューの更新に新しいイベントを表示できるようにします。
しかし、私はまだイベントを列ビューに表示させることができません!ヒントはありますか?
よろしくお願いしますロベルト