2010-03-12 99 views
2

我正在爲現有日曆解決方案添加日視圖選項。像許多人在實施自己的日曆一樣,我正在嘗試對Google日曆進行建模。他們有一個出色的日曆解決方案,他們的日曆視圖提供了很大的靈活性。大多數情況下,實施進展順利;但是,當涉及衝突事件時,我遇到了問題。PHP日曆日視圖

本質上,我希望事件共享相同的空間,並排。同時開始的事件應該首先發生時間最長的事件。在設置我正在使用的數據。例如,我有四個事件:

答:10:30 - 11:30

B:13:30 - 14:30

C: 10:30 - 11:00

d:10:45 - 14:00

我可以處理A,C和d就好了,問題就來了與D. A應被左C這應該留給D;每個寬度的三分之一(這是固定的寬度,所以我可以做簡單的數學來弄清楚)。問題是B應該在A和C之下,在D的左邊。理想情況下,B將佔用與A和C(三分之二寬度)相同的空間量,但是我甚至只會承擔它的作用而已三分之一寬度。

我的活動的陣列看起來類似於以下內容:

$events = array(
    '1030' => array(
    'uniqueID1' => array(
     'start_time' => '1030', 
     'end_time' => '1130', 
    ), 
    'uniqueID2' => array(
     'start_time' => '1030', 
     'end_time' => '1100', 
    ), 
), 
    '1045' => array(
    'uniqueID3' => array(
     'start_time' => '1045', 
     'end_time' => '1400', 
    ), 
), 
    '1330' => array(
    'uniqueID3' => array(
     'start_time' => '1330', 
     'end_time' => '1430', 
    ), 
), 
); 

我的計劃是一些指標增加,其中包括有多少事件,它與衝突的每個事件(這樣我就可以計算出寬度)和位置在那個系列中它應該是(所以我可以計算左值)。然而,這並沒有幫助B.我想我可能需要一個算法,使用一些基本的幾何和矩陣,但我不知道從哪裏開始。

任何幫助,非常感謝。

回答

2

這對您自己的自定義日曆開發沒有幫助,但是當您嘗試實現類似界面的Google日曆時,我可以強烈推薦jQuery fullcalendar plugin

它需要一個日曆數據提要,我目前將它連接到一個Outlook Exchange公共日曆,然後以月/周/日視圖顯示。日視圖可以提供實施原始請求的好例子。

+0

這很棒!我只希望這是在實施月份和周視圖的時候。我可以使用這個插件來處理所有的渲染,包括我遇到麻煩的位置,並指向它返回事件(當然是JSON編碼)的站點上的文件。謝謝! – JamesArmes

+0

沒問題,希望它適合你。如果你需要任何幫助,請給我留言。 :-) –