Вопросы о календаре - библиотека Icalendar, создающая актуальный календарь - PullRequest
0 голосов
/ 24 декабря 2009

У меня есть несколько вопросов относительно календарей

  1. Есть ли хороший календарь генерирует для asp.net mvc или jquery. Я хотел бы найти что-то, что может сделать календари и иметь такие функции, как это.

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

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

    Так есть ли какое-нибудь решение, подобное этому, для .net MVC или jquery? Если нет, то я готов использовать другие фреймворки javascript, если это необходимо, но лучше - нет.

    Я проверил http://arshaw.com/fullcalendar/ и в нем действительно нет всего, что мне нужно.

    Мне нравится этот http://www.redredred.com.au/projects/jquery-week-calendar/

    Поскольку он почти выполняет то, что я хочу, но основной недостаток заключается в том, что он делает только недели, а не целый месяц.

  2. Существует ли какая-то библиотека, которую я могу использовать для простого импорта данных календаря Google, данных календаря Outlook и, в основном, для любой основной программы календаря.

    Я знаю, что icalendar подобен стандартному формату, так есть ли библиотека C #, которая будет анализировать этот материал?

  3. Мне нужно будет сохранить данные календаря в базе данных. Как будет выглядеть таблица базы данных?

Ответы [ 2 ]

2 голосов
/ 25 декабря 2009

Я думаю, что для клиентской стороны, если честно, вы просите слишком много. Лучше всего выбрать тот, который делает максимум того, что вы хотите, из коробки, но имеет достаточно настроек, чтобы позволить вам заполнить функциональность, которую вы ищете. Либо так, либо напишите код с нуля. Если честно, вы отображаете таблицу с некоторыми jQuery во внешнем интерфейсе для событий на стороне клиента. Это утомительно, но не должно быть слишком сложным.

Что касается библиотеки .NET для работы с календарными форматами, я рекомендую iDal's iCal . Он имеет некоторые проблемы и требует некоторого понимания для запуска, но он работает (я сам использую его для сайта, с которого я проецирую записи iCalendar).

Что касается календаря в базе данных, это действительно ваше дело. Очевидно, что минимальное количество необходимой информации - это поле даты. Я бы порекомендовал что-то со смещением (SQL Server 2008 имеет datetimeoffset), так как вы можете принять во внимание часовые пояса. Кроме того, любая информация, которую вы хотите сохранить, зависит от вас.


В ответ на комментарий chobo2 о том, как заставить данные отображаться в соответствующем столбце, при рендеринге таблицы у вас будет таблица 7 x 5 (семь дней, пять строк). Я бы предложил пометить каждого из них датой.

Затем, когда вы визуализируете свою таблицу, когда вы визуализируете ячейку, вы посмотрите, есть ли у вас какие-либо события для вашей даты, если вы это сделаете, то отобразите ячейку соответствующим образом.

1 голос
/ 16 января 2010

Почему бы вам не начать немного менее амбициозно? У 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.

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