# Editor de horario de apertura de OpenStreetMap

La especificación de horario de apertura en OpenStreetMap es bastante compleja y no se presta fácilmente a una interfaz de usuario simple e intuitiva.

Sin embargo, la mayoría de las veces probablemente solo usarás una pequeña parte de la definición. El editor tiene esto en cuenta al intentar ocultar las funciones más confusas en los menús y, la mayoría de las veces, reduce el uso "en la calle" a pequeñas personalizaciones de plantillas predefinidas.

Esta documentación es preliminar y un trabajo en progreso.

## Uso del editor de horario de apertura

En un flujo de trabajo típico, el objeto que estás editando ya tendrá una etiqueta de horario de apertura (`opening_hours`, `service_times` y `collection_times`) o puedes volver a aplicar el preajuste para el objeto y obtener un campo de horario de apertura vacío. Si necesitas agregar el campo manualmente y estás usando Vespucci, puedes ingresar la clave en la página de detalles y luego volver a la pestaña basada en formulario para editar. Si crees que la etiqueta de horario de apertura debería haber sido parte del preajuste, abre un reporte de error para tu editor.

Si has definido una plantilla predeterminada (hazlo a través del elemento del menú "Administrar plantillas"), se cargará automáticamente cuando se inicie el editor con un valor vacío. Con la función "Cargar plantilla" puedes cargar cualquier plantilla guardada y con el menú "Guardar plantilla" puedes guardar el valor actual como plantilla. Puedes definir plantillas separadas y valores predeterminados para claves específicas, por ejemplo, "opening_hours", "collection_times" y "service_times" o valores personalizados. Además, puedes limitar la aplicabilidad de una plantilla a una región y un identificador específico, generalmente una etiqueta de nivel superior de OSM (por ejemplo, `amenity=restaurant`).

Naturalmente, puedes crear un valor de horario de apertura desde cero, pero recomendamos usar una de las plantillas existentes como punto de partida.

Si se carga un valor de horario de apertura existente, se intentará corregirlo automáticamente para que se ajuste a la especificación de horario de apertura. Si eso no es posible, se resaltará la ubicación aproximada donde se produjo el error en la visualización del valor bruto del horario de apertura, y puedes intentar corregirlo manualmente. Aproximadamente una cuarta parte de los valores de horario de apertura en la base de datos de OpenStreetMap tienen problemas, pero menos del 10 % no se pueden corregir; consulta OpeningHoursParser para obtener más información sobre qué desviaciones de la especificación se toleran.

### Botón del menú principal

- Añadir regla: añade una nueva regla.
- Añadir regla para días festivos: añade una nueva regla para un día festivo junto con un cambio de estado.
- Añadir regla para 24/7: añade una regla para un objeto que siempre está abierto; la especificación de horario de apertura no admite ningún otro subvalor para 24/7; sin embargo, sí permitimos añadir selectores de nivel superior (por ejemplo, rangos de años).
- Cargar plantilla: carga una plantilla existente.
- Guardar a plantilla: guarda el valor actual del horario de apertura como una plantilla para uso futuro.
- Administrar plantillas: edita (por ejemplo, cambia el nombre) y elimina las plantillas existentes.
- Actualizar: vuelve a analizar el valor del horario de apertura.
- Eliminar todo: elimina todas las reglas.

### Reglas

Las reglas predeterminadas se añaden como reglas normales; esto implica que anularán los valores de las reglas anteriores para los mismos días. Esto puede ser un problema al especificar horarios extendidos; por lo general, en ese caso querrás cambiar las reglas a aditivas a través de la entrada del menú Mostrar tipo de regla.

#### Menú Regla

- Añadir modificador/comentario: cambia el efecto de esta regla y añade un comentario opcional.
- Añadir día festivo: añade un selector para días festivos o vacaciones escolares.
- Añadir intervalo de tiempo...
  - Hora - Hora: una hora de inicio y una hora de fin en el mismo día.
  - Hora - Hora extendida: una hora de inicio hasta una hora de fin al día siguiente (por ejemplo, 26:00 es las 02:00 (a. m.) del día siguiente).
  - Hora var. - Hora: desde una hora de inicio variable (amanecer, atardecer, alba y crepúsculo) hasta una hora de fin en el mismo día.
  - Hora var. - Hora extendida: desde una hora de inicio variable hasta una hora de fin al día siguiente.
  - Hora - Hora var.: una hora de inicio y una hora de fin variable.
  - Hora var. - Hora var.: una hora de inicio variable y una hora de fin variable.
  - Hora: un punto en el tiempo.
  - Hora - Fin abierto: desde un punto de inicio en el tiempo en adelante.
  - Hora variable: a la hora variable.
  - Hora variable - Fin abierto: desde una hora de inicio variable en adelante.
- Añadir rango de días de la semana: añade un selector basado en el día de la semana.
- Añadir rango de fechas...
  - Fecha - Fecha: desde una fecha de inicio (año, mes, día) hasta una fecha de fin.
  - Fecha variable - Fecha: desde una fecha de inicio variable (actualmente la especificación solo define Pascua) hasta una fecha de fin.
  - Fecha - Fecha variable: desde una fecha de inicio hasta una fecha variable.
  - Fecha variable - Fecha variable: desde una fecha de inicio variable hasta una fecha de fin variable.
  - Ocurrencia en mes - Ocurrencia en mes: desde una ocurrencia de día de la semana de inicio en un mes hasta la misma.
  - Ocurrencia en mes - Fecha: desde una ocurrencia de día de la semana de inicio en un mes hasta una fecha de fin.
  - Fecha - Ocurrencia en mes: desde una fecha de inicio hasta una ocurrencia de día de la semana de fin en un mes.
  - Ocurrencia en mes - Fecha variable: desde una ocurrencia de día de la semana de inicio en un mes hasta una fecha variable de fin.
  - Fecha variable - Ocurrencia en mes: desde una fecha variable de inicio hasta una ocurrencia de día de la semana de fin en un mes.
  - Fecha - Fin abierto: desde una fecha de inicio en adelante.
  - Fecha variable - Fin abierto: desde una fecha de inicio variable en adelante.
  - Ocurrencia en mes - Fin abierto: desde una ocurrencia de un día de la semana en un mes en adelante.
  - Con desfases…: las mismas entradas que las anteriores, pero con desfases especificados (esto se utiliza con poca frecuencia).
- Añadir rango de años…
  - Añadir rango de años: añade un selector basado en el año.
  - Añadir año de inicio: añade un rango de años con final abierto.
- Añadir rango de semana: agrega un selector basado en el número de semana.
- Duplicar: crea una copia de esta regla y la inserta después de la posición actual.
- Mostrar tipo de regla: muestra y permite cambiar el tipo de regla: normal, aditiva y de reserva (no disponible en la primera regla).
- Ascender: sube esta regla una posición (no disponible en la primera regla).
- Bajar: baja esta regla una posición.
- Eliminar: elimina esta regla.

### Intervalos de tiempo

Para que la edición de intervalos de tiempo sea lo más sencilla posible, intentamos elegir un rango de tiempo y una granularidad óptimos para las barras de rango al cargar valores existentes. Para intervalos de tiempo nuevos, las barras comienzan a las 6:00 (a. m.) y tienen incrementos de 15 minutos; esto se puede cambiar a través del menú.

Al hacer clic en la barra de tiempo (no en los marcadores), se abrirá el selector de tiempo grande, cuando el uso directo de las barras sea demasiado difícil. Los selectores de tiempo se extienden hasta el día siguiente, por lo que son una forma sencilla de extender un rango de tiempo sin tener que eliminar y volver a agregar el rango.

#### Menú de intervalo de tiempo

- Mostrar selector de tiempo: muestra un selector de tiempo grande para seleccionar la hora de inicio y finalización; en pantallas muy pequeñas, esta es la forma preferida de cambiar las horas.
- Cambiar a intervalos de 15 minutos: usa una granularidad de 15 minutos para la barra de rango.
- Cambiar a intervalos de 5 minutos: usa una granularidad de 5 minutos para la barra de rango.
- Cambiar a intervalos de 1 minuto: usa una granularidad de 1 minuto para la barra de rango (muy difícil de usar en un teléfono).
- Comenzar a medianoche: inicia la barra de rango a medianoche.
- Mostrar intervalo: muestra el campo de intervalo para especificar un intervalo en minutos.
- Eliminar: elimina este intervalo de tiempo.

### Administrar plantillas

El cuadro de diálogo de administración de plantillas te permite agregar, editar y eliminar plantillas.

En Android 4.4 y versiones posteriores, la siguiente funcionalidad adicional está disponible en el botón de menú.

- Mostrar todo: muestra todas las plantillas en la base de datos.
- Guardar en archivo: escribe el contenido de la base de datos de plantillas en un archivo.
- Cargar desde archivo (reemplazar): carga plantillas desde un archivo reemplazando el contenido actual de la base de datos.
- Cargar desde archivo: carga plantillas desde un archivo conservando el contenido actual.

#### Cuadros de diálogo para guardar y editar plantillas

El cuadro de diálogo te permite configurar:

- Nombre: un nombre descriptivo para la plantilla.
- Predeterminado: si está marcado, se considerará como una plantilla predeterminada (normalmente más restringida por los otros campos).
- Clave: la clave para la que esta plantilla es relevante; si se establece en Clave personalizada, puedes agregar un valor no estándar en el campo de abajo. Los valores de clave admiten comodines SQL, es decir, % coincide con cero o más caracteres, _ coincide con un solo carácter. Ambos caracteres comodín se pueden escapar con \ para coincidencias literales.
- Región: la región a la que se aplica la plantilla.
- Objeto: una cadena específica de la aplicación para usar en la coincidencia.