Каков хороший подход для создания приложения календаря / события (просмотр)? - PullRequest
1 голос
/ 31 мая 2009

Я хотел бы создать «компонент» календаря для моего сайта. Я хочу сделать его управляемым и легко расширять в будущем. Я не буду использовать его для любого другого веб-сайта, но хочу, чтобы он был независимым от остальных веб-сайтов. Сайт построен с использованием ASP.NET MVC.

Я хочу включить разные представления (месяц, неделя, день [возможно, даже год]). Я планирую использовать разные способы представления информации пользователям:

  • Иконки
  • Раскраска (недели, часы, периоды [!])
  • Всплывающие экраны

Информация должна отображаться на основе информации, содержащейся в других (.NET) моделях. Я хочу, чтобы эта логика была правильно разделена.

Я довольно хорошо разбираюсь в javascript, поэтому я смогу создать хороший интерфейс для перетаскивания событий в календаре и навигации по календарным датам. Однако я хочу, чтобы компонент работал без JavaScript.

Должен ли я создать этот компонент с нуля? Если да, можете ли вы назвать различные детали, которые вы бы создали для создания компонента?

OR

Могу ли я изменить элемент управления .NET Calendar в соответствии со своими потребностями?

Спасибо за ввод!

Ответы [ 4 ]

4 голосов
/ 31 мая 2009

Я сильно смещен здесь, но посмотрите, что делает Календарь Google . На мой взгляд, это действительно очень хороший веб-интерфейс для календаря.

Мой главный совет - ожидать, что это будет боль. В частности, каждая из этих «осей» добавляет дополнительный порядок сложности:

  • Взаимодействие с другими клиентами календаря (например, iCal или ActiveSync)
  • Взаимодействие с другими серверами календаря (например, Календарь Google)
  • Обработка часовых поясов (делайте , а не , предполагая, что часовой пояс - это просто смещение от UTC! Вам нужно знать больше информации, чтобы можно было предсказать, когда наступит летнее время, учесть исторические / будущие изменения и т. Д. )
  • Обработка повторяющихся событий (которые могут оказаться сколь угодно сложными, если вы не будете осторожны)
  • Обработка общих событий (например, собраний)
  • Обработка общего доступа (например, пользователь X является секретарем пользователя Y и имеет разрешение на различные действия)
  • Обработка локализации (каждая культура отображает свои даты по-разному)
  • Обработка разных типов календарей (вам нужна поддержка коптских календарей и т. Д.?)

Когда вы объединяете их все, вы в конечном итоге испытываете огромную боль. Поработайте над тем, что вам действительно нужно, и исключите все остальное. Попробуйте исключить навсегда (и явно - храните документ о том, что вы просто не собираетесь поддержать, с одобрением руководства).

Полное раскрытие: я работаю на Google Sync для мобильных устройств, в основном на стороне календаря. Вы не поверите, что в некоторых случаях возникают проблемы. Мое пространство разработки в основном состоит из углов, в основном.

1 голос
/ 31 мая 2009

Я бы определенно отговорил вас от создания своего собственного. Подумайте об этом на минуту.

Если вы ожидаете, что создание календаря займет у вас, скажем, X часов, то вам нужно потратить X / 10 часов на поиск календаря, который:

  1. Подходит даже наполовину близко к тому, что вам нужно. В худшем случае вы будете тратить 10% своего времени с потенциальной выгодой экономии 50% своего времени. Я знаю, что существуют сотни календарей, так что вы, вероятно, найдете тот, который почти полностью соответствует вашим потребностям, то есть с прогрессивным рендерингом и всем (перетаскивание - это то, что вам, вероятно, нужно сделать самостоятельно).

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

  3. Если у календаря будет высокое принятие, вам будет лучше, потому что в нем будет меньше ошибок, так как он будет проверен в дикой природе, но ваш будет продолжать отображать ошибки в огромном количестве браузеров месяцы спустя. , Вы действительно не хотите тратить свое время на исправление ошибок, когда вы можете потратить то же самое время на кодирование функций. Если сообщество большое, оно может даже иметь интересные функции, которые можно получить бесплатно, даже не задумываясь о них (например, перенести начало недели с понедельника на солнце для некоторых стран).

Вы можете сосредоточить сэкономленное время на функциональности перетаскивания и настройке календаря под свои нужды.

1 голос
/ 31 мая 2009

зачем изобретать велосипед, если вы можете повторно использовать и, возможно, улучшить уже хороший?

попробуйте взглянуть на DHTMLxScheduler , который использует Javascript API , чтобы вы могли делать все, что вам нужно ...

Вы можете прочитать больше на Запись WebAppers

В мире, в котором мы находимся сегодня, мы должны повторно использовать, а не изобретать снова и снова что-то снова и снова ... по крайней мере, я апологет этой идеи.

Открытый исходный код - GPL позволяет бесплатно использовать dhtmlxScheduler в проектах GPL.

0 голосов
/ 01 июня 2009

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

http://jqueryui.com/demos/datepicker/

ура

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