2017-05-23 20 views
0

Salesforceと複数のユーザーでフルカレンダーを使用しています。 SFの制限のために、私はリモートアクションとJSON文字列を使用する必要があります。変更が行われているときにJSONリストをリフレッシュできないことを除いて、すべてがうまくいっています。 AddEventSourceやRemoveEventSourceを実行したり、イベント関数を実行するためのカスタムボタンを作成したり、他の多くの組み合わせや何も動作しません。これは、JSON文字列内に既にあるものだけを取得します。コントローラーに出て、レンダリングするための新しいデータを取得する必要があります。これを一般的な送信ボタンで行うことはできますが、ユーザーは編集されたものではなく、現在の日付に戻されます。私はちょうどevtオブジェクトを再取得する必要があります。私はそれが私が行方不明になっているシンプルなものだと確信していますが、それは6ヶ月であり、私は迷っています。どんな助けも大歓迎です!!SalesforceのFullCalendarでのJSONイベントの再フック

<link href="{!$Resource.fullCalendarCSS}" rel="stylesheet" /> 
<link href="{!$Resource.fullCalendarPrintCSS}" rel="stylesheet" media="print" /> 
<script src="//cdnjs.cloudflare.com/ajax/libs/jquery/2.1.3/jquery.min.js"/> 
<script src="//cdnjs.cloudflare.com/ajax/libs/moment.js/2.9.0/moment.min.js"/> 
<script src="//cdnjs.cloudflare.com/ajax/libs/fullcalendar/3.1.0/fullcalendar.min.js"/> 

function getEventData() {       // records are retrieved from soql database 
    Visualforce.remoting.Manager.invokeAction(
     '{!$RemoteAction.PWMFullCalendarController.eventdata}', // controller and method names 
     function(result, event){ 
      if (event.status) { 
       evt = JSON.parse(result); 
       $('#calendar').fullCalendar({  // html element and library name 
        events: evt, 

        height: 650,       
      customButtons: { 
       btnPrint: { 
        text: 'Print', 
        click: function() { 
         printPage(); 
        } 
        }, 
       btnRefresh: { 
        text: 'Refresh', 
        click: function() { 
        // Clear all events 
         $('#calendar').fullCalendar('removeEventSource', evt); 

         $('#calendar').fullCalendar('addEventSource', evt); 
         alert('Refresh'); 
        } 
        } 
       }, 


      header: { 

       left: 'prev,next today btnRefresh', 

       center: 'title', 

       right: 'month,agendaWeek,agendaDay btnPrint' 

        }, 

      defaultView: 'agendaWeek', 
      eventClick: function(event) {      
       if (event.url) { 
        window.open(event.url, "Edit Event", "height=500,width=900,menubar=no,status=no,scrollbars=yes, resizable=no"); 
        return false;} 
             }, 

      dayClick: function(date, jsevent, view) { 
       var startdate = date.format("MM/DD/YYYY"); 
       var starttime = date.format("hh:mm a"); 
       window.open ("https://prestigewm.my.salesforce.com/00U/e?StartDateTime=" + startdate + 
            "&StartDateTime_time=" + starttime + "&EndDateTime=" + startdate + "&EndDateTime_time=" + starttime, 
             "New Event", "height=500,width=1000,menubar=no,status=no,scrollbars=yes, resizable=no"); 

                }, 
                    editable: true, 
      droppable: true, 
      slotDuration: '00:30:01', 
     businessHours: {start: '07:00', end:'20:00'} 


       }) 
      } else if (event.type === 'exception') { 
       console.log(event.message); 
      } else { 
       console.log(event.message); 
      } 
     }, 
     {escape: false} 
    ); 
} 
$(document).ready(function() { 
    getEventData(); 
}); 
</script> 
<div id="calendar"></div> 

答えて

0

defaultDateを使用するようにしてください。

例:defaultDate:「2017年5月7日」

あなたがfullcalendarに表示する正確な日を知っているとき。 私はそれが助けてくれることを願っています。

関連する問題