Почему бы вам не начать немного менее амбициозно? У Google есть большая команда, работающая над своим календарем, и вы надеетесь повторить это, не затрачивая годы, и в итоге вы получите незаконченный проект.
1
Вы сказали, что вам не нравится FullCalendar, но он поддерживает 95% функций, которые вам нужны из календаря, за исключением фактического нажатия на дни для добавления событий.
FullCalendar отлично подходит для отображения
события, но это не полный
решение для управления контентом событий.
Помимо перетаскивания события в
разное время / день, вы не можете изменить
название события или другой связанный
данные. Это до вас, чтобы добавить это
функциональность через FullCalendar
перехват событий
Вы получаете событие dayClick
, которое можно использовать для добавления события. Хотя я бы не стал идти по этому пути, просто на странице была отдельная панель с текстовым полем для имени, небольшая иконка, которая отображала календарь пользовательского интерфейса Jquery. Звучит низкоуровнево, но задача заставить событие click работать во всех браузерах была бы большой задачей.
В этом текстовом поле отображается полное имя события, когда вы нажимаете на день, чтобы обойти вашу длинную проблему обрезки текста. В качестве альтернативы это показывает вам красивое статическое html-решение, подобное iCal, которое вы, возможно, уже видели.
Создание календаря месяца на год можно выполнить статически с использованием HTML вместо jQuery.
2
Если вы придерживаетесь формата iCalendar для Outlook и Google, которые оба его поддерживают, то очень просто написать синтаксический анализатор для этого формата, так как это такой простой текстовый формат. Этот вопрос содержит более подробную информацию о его создании, вы можете использовать для него существующую библиотеку.
3
Достаточно простой таблицы эквивалентных типов SQL, как показано ниже:
Events
Id
Name
Location
DateTime Start
DateTime End
bool IsRecurring
Повторяющиеся события будут самой сложной частью из-за вычислений, которые вы должны выполнить, чтобы выработать следующее событие. Вы не сохраняете каждое вхождение в базе данных. Использование эпохи для расчетов может помочь, это техника, которую использует Exchange.