API¶
Generalmente, Calendario web abierto está ahí para usarse sin restricciones. Puedes utilizar esta API para personalizar el calendario sobre la marcha.
Esta sección puede serle útil si se da alguna de estas circunstancias:
- Eres un desarrollador web que desea integrar el Calendario web abierto.
- Quieres explotar toda la flexibilidad, no solo lo que se expone en la página de configuración.
- Deseas utilizar JavaScript para generar dinámicamente el diseño y las opciones del calendario.
- Deseas ampliar las funciones de Calendario web abierto.
- Deseas utilizar Calendario web abierto como proxy para solicitar eventos JSON para tu fuente de eventos de creación propia.
Punto final de comunicación¶
Los parámetros básicos son los mismos en estos puntos finales:
/index.html
- editar el calendario/about.html
- ver la página acerca de/calendar.html
- ver el calendario/calendar.spec
- descargar las especificaciones/calendar.ics
- suscribirse al archivo ics/calendar.events.json
- FLEXIBLE - obtén los eventos como JSON Por favor, ten en cuenta que PUEDES usar esto pero no puedes estar seguro de que el esquema JSON siga siendo el mismo. Si quieres eso, añade tests.
Parámetros adicionales requeridos para /calendario.eventos.json
:
timezone=UTC
- la zona horaria en la que debe mostrar los eventosfrom=YYYY-MM-DD
- el inicio del periodo en el que ocurren los eventos (inclusive)to=YYYY-MM-DD
- el final del periodo en el que ocurren los eventos (exclusivo)
Parámetros¶
Todos los parámetros de configuración se describen suficientemente en default_specification. Esa es la referencia. Por ejemplo, si encuentras el parámetro title
en [default_specifications], tiene varias opciones:
Cambiar el título en un parámetro de consulta:
/index.html?title=calendar
Cambiar el título en una especificación YAML:
title: calendar
Cambiar el título en una especificación JSON:
{
"title": "calendar"
}
Compilación de la especificación¶
You can change the calendar behavior and looks with parameters. If the same parameter is specified in different places, the earlier place listed below has the highest precedence. These are the places to specify parameters:
Query parameters¶
All parameters to the calendar url are put into the specification. The query parameters have the highest precedence.
Examples:
index.html?language=de
calendar.html?title=CALENDAR
specification_url¶
If you specify this query parameter, the editor configuration is loaded from this url, too. Query parameters are still more important than what is written in this file. The source format can be YAML or JSON.
Examples:
calendar.html?specification_url=https://github.com/niccokunzmann/open-web-calendar/raw/master/default_specification.yml
open_web_calendar.app.DEFAULT_SPECIFICATION¶
This is intended for developers and Python-internal.
from open_web_calendar.app import DEFAULT_SPECIFICATION
DEFAULT_SPECIFICATION['title'] = 'calendar'
OWC_SPECIFICATION¶
This is an optional environment variable. Please read more about it in the Server Configuration.
default_specification¶
This file contains the default parameters. They must not be hard-coded in the source code. All parameters are listed and documented there so this file can be used for reference. Do not modify this file, instead use the OWC_SPECIFICATION
environment variable.
Cómo añadir parámetros¶
If you add a new parameter as a developer:
- Añade el parámetro con un valor por defecto a la default_specification
- Añadir una implementación, dependiendo de su uso en
app.py
o a las plantillas de los archivos JavaScript. La especificación ya está disponible en todos ellos para su uso. - Añade pruebas en features/configure-the-calendar.feature para comprobar que el calendario responde a la función.
- Añadir pruebas en features/edit-the-calendar.feature para asegurarse de que el parámetro se puede utilizar cuando se edita un calendario.
Especificación en el calendario¶
app.py compila la especificación a partir de los parámetros dados en get_specification()
. En template puedes acceder a la especificación a través de la variable specification
. La especificación está disponible para JavaScript como la variable specification
.
Especificación en la página Index¶
La especificación por defecto está disponible antes de construir el calendario a través de JavaScript en la variable configuration.default_specification
. Existe una función getSpecification() que crea la especificación a partir de las entradas. Generalmente, se debe utilizar la variable specification
.
Arquitectura¶
A continuación encontraras una imagen de la arquitectura.
La base de un calendario son las especificaciones, dadas en sus diversas formas. Estas especificaciones influyen en todos los pasos.
Una vez compilado las condiciones, los archivos del calendario (ics) se descargan de las ubicaciones de Internet.
A partir de los archivos del calendario se generan los eventos.
A continuación, se eligen diferentes vistas para mostrar los eventos.
Al final, esto conlleva cambios en el HTML y el estilo de la página web del calendario.
En la aplicación real, estos pasos están un poco mezclados y desordenados u omitidos, pero esto explica simplemente la idea básica e inicial detrás del procesamiento de eventos.