Saltar al contenido
SuperScheduler

Salas y equipos compartidos

Reserva de salas, laboratorios y equipos compartidos

Las instalaciones compartidas las planifican muchas personas, y a cada una le importa una pequeña parte del calendario: un formador que busca una sala con veinte plazas, una investigadora que necesita un instrumento durante seis horas. La planificación tiene que ayudarles a encontrar lo que encaja e impedir que ocupen más de lo que permiten las reglas.

Muchas personas reservando, unas reglas comunes

A diferencia de una agenda clínica o un tablero de asignación, rara vez hay un único planificador. Las reservas llegan de formadores, equipos de proyecto e investigadores individuales, cada uno con sus prioridades. El responsable de las instalaciones fija las reglas: quién puede reservar qué recurso, durante cuánto tiempo, con cuánta antelación y qué tiene que pasar entre reservas.

Los recursos se diferencian en cosas que un nombre no muestra. Las salas tienen aforo, distribución y equipamiento, y algunas pueden dividirse en dos. Los instrumentos necesitan calentamiento, calibración o limpieza; algunos requieren un operador formado y unos pocos se reservan tras un paso de aprobación.

Domina el uso recurrente. Un curso se reúne todos los martes durante doce semanas y un grupo de laboratorio tiene una franja fija, así que las reservas puntuales tienen que encajar alrededor de esas series sin que nadie pierda la pista de unas ni de otras.

Lo que deciden quienes reservan y quienes gestionan las instalaciones

  1. 01

    Qué sala o instrumento encaja

    Ajustar aforo, prestaciones y ubicación a la petición, y comparar las opciones preseleccionadas una junto a otra en los mismos días.

  2. 02

    Cuánto puede durar una reserva

    Las duraciones máximas, los horizontes de reserva y los cupos por grupo evitan que un equipo monopolice un instrumento compartido.

  3. 03

    Qué pasa entre reservas

    La calibración, el calentamiento, la limpieza o la recolocación de una sala deben quedar entre usuarios sin que nadie reserve encima.

  4. 04

    Cómo tratar una sala divisible

    Reservar la sala completa bloquea las dos mitades; reservar una mitad deja la otra disponible.

  5. 05

    Mover una serie cuando se cierra una sala

    Cuando una sala no está disponible durante una semana, cada sesión afectada necesita un nuevo sitio, idealmente en una sola operación.

Cómo modelar recursos compartidos

Las filas son salas o instrumentos reservables con sus atributos como columnas, los eventos son reservas con un titular y las reglas de las instalaciones se ejecutan en tus handlers y en tu servidor.

Recursos
Agrupa las filas por edificio y planta, o por familia de instrumentos. Las columnas de la cabecera de fila muestran el aforo, el equipamiento o la ubicación, y rows.filter con onRowFilter reduce la lista a salas con plazas suficientes o a instrumentos del tipo adecuado.
Eventos
Cada reserva lleva su titular, su grupo y su finalidad como campos propios. La preparación o la calibración es un evento bloqueado de su propio tipo o, cuando sigue un horario fijo, un tramo de celdas deshabilitadas, de modo que nadie pueda reservar encima.
Escala temporal
Las aulas de formación se leen bien en celdas de una hora a lo largo de una semana, y los instrumentos en horas a lo largo de unos días. El estado de vista guardado restaura el zoom, la posición de scroll y los grupos plegados de cada usuario; tu aplicación lo guarda junto con cualquier filtro.
Reglas
En onTimeRangeSelecting y onEventResizing, pon args.allowed a false con un mensaje cuando una reserva supere la duración máxima o quede fuera del horizonte de reserva. Usa la multiselección para mover varias sesiones a la vez cuando se cierre una sala.

Qué impone la línea de tiempo y qué corresponde al sistema de instalaciones

  • Filtros de filas, columnas y recursos agrupados para encontrar lo que encaja
  • Rechazo, con mensaje, de selecciones y redimensionados que incumplen una regla
  • Celdas deshabilitadas para calibraciones, revisiones y cierres
  • Multiselección y movimiento de varias reservas a la vez
  • Un estado de vista que puedes guardar y restaurar por usuario
  • Render personalizado del estado de reservas e instrumentos
  • Identidad, grupos y quién puede reservar qué recurso
  • Cupos, aprobaciones y horizontes de reserva como reglas que se hacen cumplir
  • Series recurrentes, expandidas en reservas individuales
  • La lógica de salas divisibles, en la que una reserva bloquea filas relacionadas
  • El almacenamiento de vistas guardadas, las notificaciones y la repercusión de costes

Ejemplos que funcionan

Problemas con los que se topan los calendarios compartidos

Reglas que solo viven en la interfaz

Una selección rechazada orienta a los usuarios de buena fe; no detiene una petición directa a tu API. Cada límite que muestra la línea de tiempo debe comprobarse también en el servidor.

Un curso recurrente como un único evento largo

Una sola barra de septiembre a diciembre bloquea todas las horas intermedias. Expande la serie en sesiones para poder mover o cancelar cada una.

Ids de fila inestables

Las vistas guardadas recuerdan la fila superior por su id. Si las salas se renumeran o los ids se generan en cada carga, las vistas restauradas aterrizan en filas equivocadas.

Olvidar la otra mitad de una sala divisible

Una reserva de la sala completa debe bloquear las dos mitades, y al revés. Comprueba las filas relacionadas en tu validación; la línea de tiempo solo conoce la fila sobre la que se suelta.

Preguntas

¿Cómo impido que se reserve un instrumento durante más de cuatro horas?

Comprueba la duración en onTimeRangeSelecting para las reservas nuevas y en onEventResizing para los cambios, y pon args.allowed a false con un mensaje como «Las reservas están limitadas a 4 horas». Aplica el mismo límite en el servidor.

¿Puede cada usuario guardar su propia vista de la planificación?

Sí. getViewState, de super-scheduler/views, devuelve una descripción serializable en JSON del zoom, el scroll, la densidad, los grupos plegados y el ancho de las columnas, y applyViewState la restaura. Tu aplicación decide dónde guardarla, por ejemplo por usuario en tu backend.

¿Cómo modelo el tiempo de calibración o limpieza después de una reserva?

Crea un evento bloqueado después de cada reserva, con moveDisabled y resizeDisabled, o incluye ese margen en tu comprobación de solapes para que la siguiente reserva no pueda empezar hasta que haya pasado. Lo primero es visible para todos; lo segundo deja la rejilla más despejada.

¿SuperScheduler admite reservas recurrentes?

Las opciones de recurrencia están reservadas y no tienen efecto. Expande cada serie en eventos individuales en tu backend, con un id de serie compartido, para que tu aplicación pueda ofrecer «cambiar esta sesión» y «cambiar todas las sesiones siguientes».

Dos demos de instalaciones

Morrow cambia una sesión de aula y comprueba qué salas están libres a la misma hora; Benchlab reserva tiempo de instrumento con una ventana de preparación. Las dos organizaciones son ficticias.

Ejemplos que funcionan