我正在为现有日历解决方案添加日 View 选项。像许多实现自己的日历的人一样,我正在尝试为 Google 日历建模。他们有一个优秀的日历解决方案,他们的日 View 提供了很大的灵 active 。在大多数情况下,实现进展顺利;但是,当涉及到冲突事件时,我遇到了问题。
本质上,我希望事件并排共享同一空间。同时开始的事件应该让最长的事件排在第一位。在我使用的示例数据集中,我有四个事件:
A: 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 没有帮助。
我想我可能需要一种使用一些基本几何和矩阵的算法,但我不确定从哪里开始。
非常感谢任何帮助。
最佳答案
这对您自己的自定义日历开发没有帮助,但是当您尝试实现类似 google 日历的界面时,我强烈推荐 jQuery fullcalendar plugin .
它需要日历数据的提要,我目前正在将它连接到 Outlook Exchange 公共(public)日历,然后以月/周/日 View 显示。日 View 可能是实现您的原始请求的一个很好的例子。
关于php - PHP 中的日历日 View ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2436306/