0

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」プロパティを使用して、マトリックスビューの更新に新しいイベントを表示できるようにします。

しかし、私はまだイベントを列ビューに表示させることができません!ヒントはありますか?

よろしくお願いしますロベルト

4

1 に答える 1

0

記録として (この質問は Dojo メーリング リストで回答されました)、このユーザーは、dojox.calendar でサポートされていない時間厳守のイベント (その時点で開始および終了するイベント) を表示しようとしていました。誰かがこの機能に興味を持っている場合は、GitHub のプロジェクトに機能の要望を追加してください: https://github.com/damiengarbarino/dojo-calendar

于 2013-04-02T13:37:08.063 に答える