Admin Renderer
El Admin Renderer es una variante del renderizador de Seatmap diseñada para crear herramientas internas e interfaces de gestión de recintos. Úsalo cuando necesites que el personal seleccione, inspeccione o gestione secciones en lugar de reservar asientos.
Visión general
Importa e instancia el Admin Renderer:
import { SeatmapAdminRenderer } from '@seatmap.pro/renderer';
const renderer = new SeatmapAdminRenderer(document.getElementById('renderer-container'), {
publicKey: 'your-public-key',
});
renderer.loadEvent('your-event-id');
Activar el modo selectSections
El Admin Renderer admite cuatro modos de interacción: 'pan', 'select', 'selectRows' y 'selectSections'. Para activar el modo de selección de secciones:
renderer.setMode('selectSections');
Los otros tres modos ('pan', 'select', 'selectRows') no se ven afectados por este cambio y se pueden establecer del mismo modo.
Interacción en el modo selectSections
- Clic — alterna el estado de selección de la sección en la que se hace clic (seleccionada / deseleccionada).
- Arrastrar — dibuja un rectángulo sobre el lienzo y selecciona todas las secciones que lo intersectan.
Teclas modificadoras para la selección por arrastre
Al dibujar un rectángulo de selección por arrastre, las siguientes teclas modificadoras cambian cómo se aplica la selección:
| Modifier | Comportamiento |
|---|---|
| None | REPLACE — sustituye la selección actual por las secciones dentro del rectángulo. |
| Shift o Cmd / Meta | ADD — añade las secciones intersectadas a la selección actual. |
| Alt / Option | SUBTRACT — elimina las secciones intersectadas de la selección actual. |
Callback onSectionsSelectionChange
Usa el callback onSectionsSelectionChange para recibir la selección final tras cada interacción del usuario:
const renderer = new SeatmapAdminRenderer(document.getElementById('renderer-container'), {
publicKey: 'your-public-key',
onSectionsSelectionChange: (sections) => {
sections.forEach((section) => {
console.log(section.id, section.name, section.seatCount);
});
},
});
renderer.loadEvent('your-event-id');
Cada elemento del array sections es un objeto ISection. Los campos principales para este caso de uso son:
id— identificador único de la sección.name— nombre visible de la sección.seatCount— número de asientos de la sección.
ISection contiene campos adicionales; los tres anteriores cubren los casos de uso de administración más habituales.
onSectionsSelectionChange se dispara una vez tras finalizar toda la selección: una vez por clic y una vez por arrastre completado. En cambio, onSectionClick se dispara una vez por cada sección afectada: una vez al alternar con un clic simple y una vez por cada sección intersectada durante un arrastre. Quienes dependan de onSectionClick en el modo selectSections deben tener en cuenta que se dispara varias veces por operación de arrastre.
seatCount en ISection
seatCount está disponible en ISection tanto en el callback onSectionsSelectionChange como en onSectionClick.