EN · DE · RU · FR · ES

#2779: Config.java

projectforge-wicket/src/main/java/net/ftlines/wicket/fullcalendar/Config.java Modelo de configuración Java (FullCalendar) · projectforge-wicket/src/main/java/net/ftlines/wicket/fullcalendar/Config.java 428 líneas · 267 código · 79 comentarios · 82 en blanco
El modelo de configuración integral para el componente Wicket FullCalendar — el objeto único que captura todos los ajustes del calendario y se serializa a JSON para la llamada de inicialización de FullCalendar en el lado del cliente. Esta clase modela todos los aspectos configurables del widget de calendario: fuentes de eventos, diseño del encabezado, etiquetas de texto de botones, scripts de callback (para eventos de soltar, redimensionar, clic, renderizar, seleccionar, vista de visualización), ajustes de visualización de hora, cadenas de formato de columna e indicadores de interacción (editable, seleccionable, arrastrable, redimensionable). Las anotaciones Jackson controlan la serialización JSON: @JsonRawValue evita el doble escape del texto de callback de JavaScript, @JsonIgnore oculta los modelos internos de Wicket de la serialización, y @JsonProperty controla la nomenclatura de campos.

Arquitectura

Gestión de scripts de callback

Siete modelos de callback utilizan IModel<String> — la abstracción de modelo de Wicket para valores dinámicos. Cada getter de callback está anotado con @JsonRawValue, lo que le indica a Jackson que inserte el contenido de cadena del modelo directamente en la salida JSON sin entrecomillar. Esto es crítico porque las cadenas de callback son cuerpos de funciones JavaScript (ej., function(event, delta, revertFunc) { ... }) y deben aparecer como código sin procesar en la inicialización de FullCalendar, no como cadenas entrecomilladas. Los métodos setter proporcionan comodidad (setEventDrop(String) envuelve en Model.of()) y avanzados (setEventDropModel(IModel) para modelos dinámicos).

Integración con modelos Wicket

El uso de IModel para scripts de callback permite la generación dinámica de scripts — crítico porque estos scripts contienen URLs de callback Ajax de Wicket que cambian entre solicitudes (debido a tokens anti-caché y versionado de página). El método setupCallbacks() en FullCalendar.java llena estos modelos con texto de script generado, y el mecanismo de resolución de modelos de Wicket asegura valores actualizados en cada renderizado.

Configuración de hora

Utiliza tipos Joda-Time (LocalTime para minTime/maxTime) que se serializan mediante los serializadores personalizados en AbstractFullCalendar. El enum ColumnFormat se asigna a las opciones de formato de encabezado de columna de FullCalendar para las vistas de día, semana y mes.

Constructor fluido

El método add(EventSource) devuelve this, permitiendo la configuración encadenada. Se pueden añadir múltiples fuentes de eventos de forma fluida: new Config().add(holidaysSource).add(meetingsSource).

Historial Git

CommitQué cambió
868d6abb7 hasta ceb63e8a1Seis actualizaciones anuales de encabezado de derechos de autor. El modelo de configuración se ha mantenido estable — todos los ajustes de FullCalendar necesarios para la aplicación están capturados en esta clase, y no se han requerido nuevas opciones de configuración más allá del diseño inicial.