# Edytor godzin otwarcia OpenStreetMap

Specyfikacja godzin otwarcia w OpenStreetMap jest dość skomplikowana i nie ma prostego i intuicyjnego interfejsu użytkownika.

Jednak przez większość czasu używasz tylko niewielkiej części definicji. Edytor bierze to pod uwagę próbując ukryć bardziej niejasne funkcje w menu i redukując większość czasu pracy do małych poprawek wstępnie zdefiniowanych szablonów.

Ta dokumentacja jest w trakcie opracowywania

## Używanie edytora godzin otwarcia

Zazwyczaj podczas pracy obiekty, które edytujesz już mają tagi godzin otwarcia (opening_hours, service_times i collection_times) lub możesz ponownie zastosować wstępny zestaw dla obiektu, aby uzyskać puste pole godzin otwarcia. Jeżeli potrzebujesz dodać pole ręcznie i używasz Vespucci możesz wpisać klucz na stronie szczegółów i przełączyć się z powrotem na zakładkę z formularzem edycji. Jeżeli uważasz, że tag godzin otwarcia powinien być częścią wstępnych ustawień, zgłoś to twórcom swojego edytora.

If you have defined a default template (do this via the "Manage templates" menu item) it will be loaded automatically when the editor is started with an empty value. With the "Load template" function you can load any saved template and with the "Save template" menu you can save the current value as a template. You can define separate templates and defaults for specific key, for example "opening_hours", "collection_times" and "service_times" or custom values. Further you can limit applicability of a template to a region and a specific identifier, typically an OSM top-level tag (for example amenity=restaurant).

Oczywiście możesz zbudować wartość godzin otwarcia do podstaw, ale zalecamy na początek użycie jednego z istniejących szablonów.

Jeżeli są załadowane istniejące godziny otwarcia, zostaje podjęta próba automatycznej korekty, aby dostosować się do specyfikacji godzin otwarcia. Jeżeli to jest niemożliwe, to taka lokalizacja zostanie podświetlona w wyświetlaniu surowych danych OH i możesz spróbować poprawić to ręcznie. Z grubsza jedna czwarta wartości OH w bazie danych OpenStreetMap ma problemy, ale mniej niż 10% nie może być poprawionych. Zobacz OpeningHoursParser, aby dowiedzieć się jakie odstępstwa od specyfikacji są tolerowane.

### Przycisk głównego menu

- Dodaj regułę: dodaje nową regułę.
- Dodaj regułę dla dni świątecznych: dodaje nową regułę dla dni świątecznych wraz ze zmianą stanu.
- Dodaj regułę dla 24/7: dodaje regułę dla obiektów, które są zawsze otwarte, specyfikacja godzin otwarcia nie wspiera żadnych innych wartości dla 24/7, ale można dodać selektory wyższego poziomu (na przykład zakresy lat).
- Wczytaj szablon: wczytuje istniejący szablon.
- Zapisz do szablonu: zapisuje aktualne wartości godzin otwarcia jako szablon do użycia w przyszłości.
- Zarządzaj szablonami: edytuje, na przykład zmienia nazwę i usuwa istniejące szablony.
- Wczytaj ponownie: analizuje ponownie wartość godzin otwarcia.
- Usuń wszystkie: usuwa wszystkie reguły.

### Reguły

Domyślne reguły są dodawane jako normalne, co skutkuje tym, że nadpisują one wartości poprzednich reguł dla tych samych dni. To może być uciążliwe, kiedy określasz rozszerzone okresy czasu, więc pewnie będziesz chciał wtedy przełączyć reguły za pomocą Pokaż rodzaj reguły na dodające.

#### Menu reguły

- Dodaj modyfkator/komentarz: zmienia efekt działania tej reguły i dodaje opcjonalny komentarz.
- Dodaj dni wolne: dodaje selektor dla dni świątecznych lub wakacji.
- Dodaj okres czasu...
  - Czas - czas: czas początkowy do czasu końcowego w tym samym dniu.
  - Czas - wydłużony czas: czas początkowy do czasu końcowego w następnym dniu (przykładowo 26:00 daje 02:00 (w nocy) następnego dnia).
  - Zmienny czas - czas: od zmiennego czasu (świ, zmierzch, wschód i zachód słońca) do czasu końcowego w tym samym diu.
  - Zmienny czas - wydłużony czas: od zmiennego czasu do czasu końcowego w następnym dniu.
  - Czas - zmienny czas: czas początkowy do zmiennego czasu.
  - Zmienny czas - zmienny czas: zmienny czas do zmiennego czasu.
  - Czas: punkt w czasie.
  - Czas - bez końca: od punktu początkowego w czasie dalej.
  - Zmienny czas: o zmiennym czasie
  - Zmienny czas - bez końca: od zmiennego czasu dalej
- Dodaj zakres dni tygodnia: dodaj selektor na bazie dni tygodnia.
- Dodaj zakres dat...
  - Data - data: od daty początkowej (rok, miesiąc, dzień) do daty końcowej.
  - Zmienna data - data: od zmiennej daty początkowej (aktualnie specyfikacja definiuje tylko Wielkanoc) do daty końcowej.
  - Data - zmienna data: od daty początkowej do zmiennej daty.
  - Zmienna data - zmienna data: od zmiennej daty do zmiennej daty.
  - Wystąpienie w miesiącu - wystąpienie w miesiącu: od początkowego dnia wystąpienia w miesiącu do tego samego.
  - Wystąpienie w miesiącu - data: od początkowego dnia wystąpienia w miesiącu do daty końcowej.
  - Data - wystąpienie w miesiącu: od daty początkowej do końcowego dnia wystąpienia w miesiącu.
  - Wystąpienie w miesiącu - zmienna data: od początkowego dnia wystąpienia w miesiącu do końcowej zmiennej daty.
  - Zmienna data - wystąpienie w miesiącu: od początkowej zmiennej daty do końcowego dnia wystąpienia w miesiącu.
  - Data - bez końca: od daty początkowej dalej.
  - Zmienna data - bez końca: od początkowej zmiennej daty dalej.
  - Wystąpienie w miesiącu - bez końca: od początkowego dnia wystąpienia w miesiącu dalej.
  - Z przesunięciami...: te same wpisy, co powyżej, ale z określonymi przesunięciami (rzadko używane).
- Add year range...
  - Dodaj zakres roczny: dodaje selektor bazujący na roku.
  - Add starting year: add an open ended year range.
- Dodaj zakres tygodniowy: dodaje selektor bazujący na numerze tygodnia.
- Duplikuj: tworzy kopię tej reguły i wstawia ją za aktualną pozycją.
- Pokaż rodzaj reguły: wyświetla i pozwala zmieniać rodzaj reguły pomiędzy normalna, dodająca i awaryjna (niedostępne dla pierwszej reguły).
- Przenieś w górę: przenosi tą regułę o jedną pozycję w górę (niedostępne dla pierwszej reguły).
- Przenieś w dół: przenosi tą regułę o jedną pozycję w dół.
- Usuń: usuwa tą regułę.

### Okresy czasu

Aby uczynić edytowanie okresów czasu tak łatwym, jak to tylko możliwe, próbujemy wybrać optymalny zakres czasu i skok pasków przy ładowaniu istniejących wartości. Dla nowych okresów czasu paski zaczynają się o 6:00 (rano) i mają 15-minutowy skok, co można zmienić w menu.

Kiedy używanie paska czasu jest zbyt trudne, to kliknięcie go (poza znacznikami) otworzy duży kalendarz. Kalendarz jest rozszerzony do następnego dnia, więc jest to prosty sposób na rozszerzenie zakresu czasu bez usuwania i ponownego dodawania go.

#### Menu okresów czasu

- Wyświetl kalendarz: pokazuje duży kalendarz do wybierania czasu początkowego i końcowego, jest to preferowany sposób edycji czasów na urządzeniach z bardzo małymi ekranami.
- Przełącz na 15-minutowe skoki: używa 15-minutowego skoku dla pasków zakresu.
- Przełącz na 5-minutowe skoki: używa 5-minutowego skoku dla pasków zakresu.
- Przełącz na 1-minutowe skoki: używa 1-minutowego skoku dla pasków zakresu, bardzo trudne w użyciu na telefonie.
- Początek o północy: ustawia początek paska zakresu o północy.
- Pokaż interwał: pokazuje pole interwału dla określenia go w minutach.
- Usuń: usuwa ten okres czasu.

### Zarządzaj szablonami

Okno zarządzania szablonami pozwala dodawać, edytować i usuwać szablony.

W Androidzie 4.4 i nowszych następująca funkcjonalność jest dostępna z poziomu przycisku menu.

- Show all: display all templates in the database.
- Save to file: write the contents of the template database to a file.
- Load from file (replace): load templates from a file replacing the current contents of the database.
- Load from file: load templates from a file retaining the current contents.

#### Save and edit template dialogs

The dialog allows you to set

- Name a descriptive name for the template.
- Default if checked this will be consider as a default template (typically further constrained by the other fields).
- Key the key this template is relevant for, if set to Custom key you can add a non-standard value in the field below. The key values support SQL wild cards, that is % matches zero or more characters, _ matches a single character. Both wild card characters can be escaped with \ for literal matches.
- Region the region the template is applicable to.
- Object an application specific string to use for matching.