API¶
Загалом відкритий веб-календар можна використовувати без обмежень. Ви можете використовувати цей API, щоб налаштувати календар на льоту.
Цей розділ може бути корисним, якщо застосовується одне з наведеного нижче:
- Ви веб-розробник, який хоче вставити Open Web Calendar.
- Ви хочете використовувати повну гнучкість, а не лише те, що відкрито на сторінці конфігурації.
- Ви хочете використовувати JavaScript для динамічного створення дизайну та параметрів календаря.
- Ви хочете розширити функціональність відкритого веб-календаря.
- Ви хочете використовувати відкритий веб-календар як проксі-сервер для запиту подій JSON для вашої власноруч створеної стрічки подій.
Кінцеві точки¶
Основні параметри однакові в цих кінцевих точках:
/index.html
- редагувати календар/about.html
- переглянути сторінку про/calendar.html
- переглянути календар/calendar.spec
- завантажити специфікацію/calendar.ics
- підписатися на файл ics/calendar.events.json
- ГНУЧКИЙ – отримуйте події як JSON. Зауважте, що ви МОЖЕТЕ використовувати це, але не можете бути впевнені, що схема JSON залишиться незмінною. Якщо ви цього хочете, додайте тести.
Для /calendar.events.json
необхідні додаткові параметри:
timezone=UTC
- часовий пояс, у якому потрібно відображати подіїfrom=YYYY-MM-DD
- початок періоду, в якому відбуваються події (включно)to=YYYY-MM-DD
- кінець періоду, в якому відбуваються події (виключно)
Параметри¶
Усі параметри конфігурації достатньо детально описано в default_specification. Це посилання. наприклад якщо ви знайдете параметр title
в default_specification, у вас є кілька варіантів:
Змініть заголовок у параметрі запиту:
/index.html?title=calendar
Змініть назву в специфікації YAML:
title: calendar
Змініть назву в специфікації JSON:
{
"title": "calendar"
}
Додавання параметрів¶
Якщо ви додаєте новий параметр як розробник,
- Додайте параметр із значенням за замовчуванням до default_specification
- Додайте реалізацію залежно від її використання в
app.py
або шаблонах файлів JavaScript. Специфікація вже доступна для використання в усіх них. - Додайте тести в features/configure-the-calendar.feature, щоб перевірити, чи календар реагує на функцію.
- Додайте тести в features/edit-the-calendar.feature щоб переконатися, що параметр можна використовувати під час редагування календаря.
Складання специфікації¶
Ви можете змінити поведінку та вигляд календаря за допомогою параметрів. Ось місця для визначення параметрів:
- Параметри запит Усі параметри URL-адреси календаря містяться в специфікації. Параметри запиту мають найвищий пріоритет. приклади:
txt index.html?language=de calendar.html?title=CALENDAR
-
specification_url Якщо вказати цю параметр запиту, конфігурація редактора також завантажується з цієї URL-адреси. Параметри запиту все ще важливіші за те, що написано в цьому файлі. Вихідний формат може бути YAML або JSON. приклади: calendar.html?specification_url=https://github.com/niccokunzmann/open-web-calendar/raw/master/default_specification.yml
-
default_specification Цей файл містить параметри за замовчуванням. Вони не повинні бути жорстко закодовані у вихідному коді. Всі вони там. Параметри запиту та
specification_url
замінюють ці значення.
Уточнення в Календарі¶
app.py компілює специфікацію з заданих параметрів у get_specification()
. У шаблоні ви можете отримати доступ до специфікації за допомогою змінної specification
. Специфікація доступна для JavaScript як змінна specification
.
Специфікація на сторінці покажчика¶
Специфікація за замовчуванням доступна до створення календаря за допомогою JavaScript у змінній configuration.default_specification
. Існує функція getSpecification(), яка створила специфікацію з вхідних даних. Як правило, слід використовувати змінну specification
.
Архітектура¶
Нижче ви можете знайти зображення архітектури.
Основою календаря є специфікація, подана в різних формах. Ця специфікація впливає на всі кроки.
Після того, як специфікація складена, файли календаря (ics) завантажуються з місць в Інтернеті.
З файлів календаря генеруються події.
Потім для відображення подій вибираються різні види.
Зрештою, це призводить до змін HTML і стилю веб-сайту календаря.
У реальній програмі ці кроки трохи переплутані, невпорядковані або опущені, але це просто пояснює основну початкову ідею обробки подій.