fullcalendarのschedulerを使用しています。
event.id が ひとつに対し、ResourceのIDが複数あります。
ResourceのIDが10個の場合、eventResizeを実行すると、
eventResizeを実行したResourceのタイムラインのセルに、10個のイベントが表示されてしまいます。
現在は、以下の方法で回避しています。
①$('#calendar').fullCalendar("removeEvents", event.id) でeventを削除。
↑ひとつのタイムラインにeventが複数表示されないように
②eventResizeを実行していいか確認ダイアログを表示。
②ダイアログOK→保存処理実行、いいえ→リロード
④保存処理成功→eventRenderで保存したデータを反映、失敗→リロード
$('#calendar').fullCalendar("removeEvents", event.id) でeventを削除しているので、保存処理が失敗した場合や確認処理でキャンセルした場合、revertFuncがききません。
eventResize前の情報を取得できれば、eventRenderで、再表示も考えましたが、
eventResizeStartで、evetResize前のeventが拾えませんでした。
処理が失敗したとき、キャンセルが押されたときに、できればリロードしたくないので(処理失敗やキャンセルはrevertFuncを使いたい)、ひとつのタイムラインに、eventがたくさん表示されてしまう現象を、回避させる方法があれば、教えていただきたいです。
javascript
1eventResizeStop: function (event, jsEvent, ui, view) { 2 // リソースIDを取得する 3 resourceIdArray = []; 4 var clientEvent = $('#calendar').fullCalendar('clientEvents', event.id); 5 6 $.each(clientEvent, function() { 7 resourceIdArray.push(this.resourceId); 8 }); 9}, 10eventResize: function (event, dayDelta, revertFunc, jsEvent, ui, view) { 11 12 var currentEvnet = event; 13 var clientEvent = $('#calendar').fullCalendar('clientEvents', event.id); 14 15 // fullcalendarからイベントを削除 ↓ほんとは、ここで削除したくない。 16 $('#calendar').fullCalendar("removeEvents", event.id) 17 18 // イベントIDに複数のリソースがあれば確認メッセージダイアログを表示する。 19 if (clientEvent[0].kiki_no > 1) { 20 $.confirm() 21 .done(function () { 22 // 保存処理実行 23 ExecEventResize(currentEvnet, dayDelta, revertFunc,jsEvent, ui, view); 24 }) 25 .fail(function () { 26 //revertFunc();←これをやりたい。 27 28 // removeEventでイベントを消してしまっているのでrevertFuncが効かない。 29 // 確認ダイアログの前にremoveEventしないと、リソースイベントが1つのタイムラインに表示されてしまう。 30 // revertFuncの代わりにrenderEventは、eventResizeの前のイベントがeventResizeStartでも拾えないのでムリ。 31 pageReload(); 32 return; 33 }); 34 return; 35 } 36 37 // 保存処理実行 38 ExecEventResize(event, dayDelta, revertFunc, jsEvent, ui, view); 39},
宜しくお願いします。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。