логика просмотра календарного дня - PullRequest
0 голосов
/ 07 марта 2011

Я не знаю, правильна ли моя логика, но я пытаюсь реализовать представление календарного дня с нуля. И для совместного использования одного и того же пространства с одним и тем же временем это довольно сложно для меня.

У меня есть список времени:

A. 1:00 - 2:00

B. 1:00 - 2.30

C. 1:30 - 3:00

Так что в основном у A-C общее время 2 часа ночи, поэтому им нужно делиться в одном и том же месте. Итак, как можно сделать логику этого?

Ответы [ 2 ]

0 голосов
/ 07 марта 2011

Вот то, что я искал по сети

Чтобы проверить перекрытие:

Пусть CondA означает DateRange A полностью после DateRange B (True, если StartA> EndB) Пусть CondB означает DateRange A полностью перед DateRange B (True, если EndA

Тогда перекрытие существует, если ни A, ни B не верны (если один диапазон не полностью ни за другим, ни полностью перед другим, тогда они должны перекрываться)

Теперь закон Деморгана, я так думаю, гласит, что

Не (A или B) <=> Не A и не B

Что означает (StartA <= EndB) и (EndA> = StartB)

ПРИМЕЧАНИЕ. Это включает условия, когда края точно перекрываются. Если вы хотите исключить это, измените операторы> = на>, а <= на <</p>


Итак, основываясь на значении перекрытия, я могу определить, сколько столбцов добавить.

0 голосов
/ 07 марта 2011

Это не сложно для этого. Вы должны посчитать перекрытые задачи, назначить столбцы и нарисовать их В вашем примере у нас есть 3 перекрывающихся задачи. Это означает, что вы должны создать 3 столбца для блоков, представляющих каждую задачу.

A. 1:00 - 2:00
B. 1:00 - 2.30
C. 4:30 - 3:00

В этом примере создаются 2 столбца, поскольку у нас есть только 2 перекрывающихся задачи.

Теперь, когда вы зацикливаете задачи на перекрытия подсчета, вы можете назначить каждую задачу указанному столбцу. Когда требуется новый столбец - создайте его.

Следующий цикл рисует эти поля только в назначенных столбцах. Как видите, у нас есть циклы: один для перекрытия отсчета и назначения столбцов, а второй для рисования.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...