FullCalendar如何實現minTime,slotDuration動態更新

最近在使用jQuery插件FullCalendar實現一個患者預約醫生看病的功能,大致需求如下:

1、  醫生首先以周爲單位設置自己下個月的出診時間,包括上班時間,下班時間,每次可預約的時間間隔

2、  患者通過在線預約系統,選擇醫生的出診時間並預約

3、  醫生可查看自己的預約安排,瞭解病人的預約情況,使用FullCalendar插件實現效果如下圖:


 



那麼現在問題來了,如果醫生不同的周或不同月上下班的時間不一樣,我們跳轉到別的周後,左邊的時間軸是否也要跟着改變,遺憾的是FullCalendar 沒有提供這個功能,除非你調用destroy方法,然後重新初始化calendar:

$('#mycalendar').fullCalendar('destroy');

$('#mycalendar').fullCalendar(calendarOptions);

 

但是,這樣做的結果是日曆記錄的信息都會初始化,也就是默認時間又會從當前周開始,這樣你就永遠沒法跳轉到下一週去。

 

此時想起插件本身是支持在'month,agendaWeek,agendaDay' 幾種視圖之間切換的,而且在視圖切換的過程中不會丟失保存的信息,由於需求不需要,我把切換視圖的功能給隱藏了,那麼我是否可以模擬一種視圖的切換呢,即把日期的跳轉看做是從agendaWeek 視圖切換到agendaWeek視圖。

通過查看FullCalendar的源碼,並參考網友的意見,發現這一思路是可行的,通過修改FullCalendar源碼的以下幾處地方,完美實現了需求。記錄如下:

 

1.  模擬插件自帶的t.changeView=changeView;

新增一個refreshView方法,

       

首先,增加一行:

't.refreshView = refreshView;'

 

2.

實現refreshView方法:模擬changeView方法調用_changeView(newView),只是把newView指定爲當前的view類型,新增如下:

        function refreshView()

        {

              _changeView(currentView.name);

        }

 

3.通過option()方法傳入參數,然後調用refreshView方法,修改option方法如下:

              

        function option(name,value) {

               if (value=== undefined) {

                       returnoptions[name];

               }

               if (name== 'height' || name == 'contentHeight' || name == 'aspectRatio') {

                       options[name]= value;

                       updateSize();

               }

// -------------add by rcm on 2015/1/21  begin------        

               if (name== 'slotDuration' || name == 'minTime' || name == 'maxTime')

               {

                       options[name]= value;

                      

                       refreshView();

               }

// -------------add by rcm on 2015/1/21  end------

        }

ok,此時在

events: function(start, end,timezone, callback) {

 

        可以如下調用:

$calendar.fullCalendar('option', 'minTime',data.beginBusiness);

$calendar.fullCalendar('option', 'maxTime',data.endBusiness);

$calendar.fullCalendar('option', 'slotDuration',data.slotDuration);

 

}

 本人使用的FullCalendar版本是:FullCalendar v2.0.0

其他版本請自行研究,供參考,希望可以幫到你!

發佈了68 篇原創文章 · 獲贊 114 · 訪問量 108萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章