EN · DE · RU · FR · ES

#2784: EventSource.java

projectforge-wicket/src/main/java/net/ftlines/wicket/fullcalendar/EventSource.java Modelo Java (Configuración de fuente de eventos FullCalendar) · projectforge-wicket/src/main/java/net/ftlines/wicket/fullcalendar/EventSource.java 244 líneas · 138 código · 66 comentarios · 40 en blanco
El modelo de configuración e identidad para una fuente de eventos de FullCalendar — el puente entre un proveedor de datos (EventProvider) y su representación visual en el calendario. Cada fuente de eventos tiene propiedades de apariencia (colores, clase CSS), indicadores de comportamiento (editable, predeterminado para todo el día, manejo de zona horaria), un modelo de eventos JSON sin procesar (la devolución de llamada JavaScript que obtiene eventos) y metadatos almacenados en un Map<String, Object> genérico (título, UUID). El UUID se genera automáticamente al inicializar el calendario y sirve como identidad de la fuente para las devoluciones de llamada Ajax. Las anotaciones de Jackson controlan la serialización: @JsonRawValue para el script de devolución de llamada de eventos, @JsonIgnore para referencias internas como el EventProvider y los getters de UUID/título (que se serializan a través del mapa data en su lugar).

Arquitectura

Sistema de identidad dual

Las fuentes de eventos tienen dos sistemas de identificación: una referencia EventProvider utilizada internamente (objeto Java, no serializado al cliente) y una cadena UUID almacenada en el mapa data bajo la clave "fcxUuid". El UUID es el identificador principal para la comunicación cliente-servidor — se envía en los parámetros de devolución de llamada Ajax y lo utiliza EventManager para la búsqueda. El título (almacenado bajo "fcxTitle") es una etiqueta legible para humanos que se muestra en las casillas de verificación del selector de fuentes de eventos. La clase de constantes Const centraliza estas claves del mapa.

Modelo de eventos como JavaScript

El campo events es un IModel<String> cuyo valor es el cuerpo de una función JavaScript — la devolución de llamada que FullCalendar invoca para obtener eventos de esta fuente. Se establece mediante FullCalendar.setupCallbacks() usando la plantilla de FullCalendar.events.tpl. La anotación @JsonRawValue en el getter asegura que este código JavaScript se incruste directamente en el objeto de configuración JSON sin comillas en la cadena, lo cual es necesario para que FullCalendar lo interprete como código ejecutable.

Integración del selector

Dos indicadores booleanos controlan la integración con EventSourceSelector: includeInSelector (si la fuente aparece en la lista de casillas de verificación de la interfaz de usuario) y enableInSelector (si su casilla de verificación es interactiva). Esto permite que las fuentes estén presentes pero ocultas, o visibles pero no conmutables — útil para calendarios base obligatorios que siempre deben mostrarse.

API fluida

Todos los setters devuelven EventSource para una configuración fluida, coherente con el resto de las clases del modelo FullCalendar.

Historial de Git

CommitQué cambió
868d6abb7 a ceb63e8a1Seis actualizaciones anuales de encabezado de derechos de autor. El modelo de fuente de eventos se ha mantenido estable — el sistema de identidad basado en UUID, las propiedades duales de color/apariencia, los indicadores de integración del selector y el modelo de eventos basado en plantillas cubren todas las necesidades de configuración de fuentes de eventos.