isDisabledDate プロパティを使用して、いくつかの日付を除くすべての日付を無効にする方法がわかりません。
状況:
リモート スケジューラを制御できる Web アプリの一部として、Dijit カレンダー ウィジェットを使用しています。
基本的に、ユーザーが要求すると、ジョブのリストがサーバーから取得されます。特定の特定の日付にスケジュールされたジョブがある場合は、その日付を有効にする必要があります (それ以外の場合はデフォルトで無効になっています)。
直感的に、疑似コードでは、次のようなことをしたいと思います。
function onGetJobsComplete(jobs){
foreach(job in jobs) {
dijit.byId('MyCalender').enableDate(job.date);
}
}
最終結果は、ユーザーがどの日に仕事があるかをグラフィカルに確認し、これらの日をクリックして追加情報を取得できるようにすることです (この部分は私が取り組んでいます)。
私が見つけることができるすべての例は、外部の変化するデータに依存しない基準に基づいて日付を除外することを扱っているようです (つまり、すべての週末など)。
編集:
私はこれを試みました:
<div id="calSJobs" data-dojo-type="dijit/Calendar" data-dojo-props="
dayWidth:'abbr',
isDisabledDate: disabledDates"
/>
-
function disabledDates(value){
if(typeof dataJobs == 'undefined')
return true;
try {
for(i=0; i<dataJobs.length; i++) {
if(dataJobs[i].cron == 'False')
{
jobDate = new Date(dataJobs[i].time);
calDate = value;
if(compareDate(jobDate, calDate)
return false;
}
}
} catch (err) {log(err.message);}
return true;
}
var compareDate;
require(["dojo/date"], function(date){
compareDate = function (date1, date2) {
if(date.compare(date1, date2, 'date') == 0)
return true;
else
return false;
}
});
しかし、これには 2 つの問題があります。
AMD モジュールが必要なので、compareDate が機能しない これと同じ種類のことがコードの他の場所で機能しますが、dijit ウィジェットによって呼び出されたときは機能しませんか?
カレンダー ビューが変更されたときだけでなく、データが変更されたときにロジックを実行するにはどうすればよいですか?