# O czym oni mówią, czyli skrypt podpowiadający znaki drogowe



## fatalbomb

Na forum mamy kilka wątków, w których prowadzone są dyskusje na temat oznakowania, czy wykładni poszczególnych znaków drogowych. Do sztandarowych przykładów należą "Zasady ruchu drogowego" czy "Oznakowanie dróg", ale można spotkać krótkie dyskusje na te tematy również w tych inwestycyjnych.

Zazwyczaj w takich tematach gęsto ścielą się odwołania do znaków drogowych poprzez ich kod określony w ustawie Prawo o Ruchu Drogowym czy rozporządzeniach o znakach i sygnałach. Rekordy padają w "Zasadach ruchu drogowego", gdzie na jednej stronie liczba kodów znaków czasem przekracza 150. Oczywiście, są Forumowicze znający te symbole na pamięć (instruktorzy jazdy, prawnicy zajmujący się PoRD), ale spora część osób przeglądających wątki, napotykając na enigmatyczny kod typu "E-17a" zmuszona jest wyszukać go przez Google, aby dowiedzieć się, że to jest znak początku miejscowości. Oczywiście, przy przedłużających się dyskusjach wbije nam się w końcu w głowę jakiś popularny symbol, typu C-12, B-20, B-33, ale gdy "poleci" egzotyka typu B-19 czy A-13, zaczynają się schody.

W związku z powyższym, przyszedł mi jakiś czas temu do głowy pomysł, aby opracować rozszerzenie do przeglądarki, które "przetłumaczy" mi symbole znaków na ich reprezentację graficzną. Po mniej więcej tygodniu mniej lub bardziej intensywnego kodowania, słowo stało się ciałem.

Skrypt "SSC Polskie Znaki Drogowe" jest prostym narzędziem realizującym wyżej opisaną funkcję.

*Jak zainstalować?*

1. Zainstalować jeden z dodatków: GreaseMonkey, Tampermonkey, Violentmonkey. Dla tych, co nie znają: jest to rodzina wtyczek do przeglądarek pozwalających uruchamiać kod JavaScript po załadowaniu się określonych stron. Pozwala to ingerować w ich zawartość lokalnie po stronie użytkownika. Instalacja jest bezproblemowa, wymagane jest jedynie ponowne uruchomienie przeglądarki.

Linki instalacyjne:
GreaseMonkey: Firefox
TamperMonkey: Firefox | Opera | Chrome
ViolentMonkey: Firefox | Chrome

2. Zainstalować przedmiotowy skrypt, znajdujący się na GreasyFork.org - link. Po instalacji, skrypt jest od razu gotowy do użycia.

*Opis działania*
Skrypt wkracza do akcji tylko i wyłącznie w momencie przeglądania wątków (skyscrapercity.com/showthread.php*) oraz widoku pojedynczego posta (skyscrapercity.com/showpost.php*). Jego rolą jest namierzenie w treściach wiadomości literowo-cyfrowych kodów znaków drogowych i odpowiednie ich "udekorowanie", zależnie od wybranego trybu. Zależnie od tego, który z nich wybierzemy, zostanie zastosowana przynajmniej jedna z poniższych rzeczy:

Po najechaniu na kod znaku wyświetlony zostanie (w lewym górnym rogu przeglądarki) odpowiadający mu znak
Dodane zostanie wyróżnienie dopasowanego kodu
Zostanie wyświetlona miniaturka odpowiedniego znaku drogowego, obok lub zamiast kodu

*Ilustracje poglądowe:*
1. Podmiana kodu znaku drogowego na miniaturkę
--








--

2. Dodanie miniaturki znaku drogowego obok kodu:
--








--

3. Dodanie jedynie wyróżnienia dopasowanych znaków:
--








--

4. Widok znaku w pełnym rozmiarze, po najechaniu myszą na symbol:
--








--

*Tryby pracy*
Skrypt posiada 6 trybów działania. Każdy zapewne znajdzie taki, który mu najbardziej odpowiada.

*Podgląd, kod *- Najbardziej zachowawczy tryb. Zawartość treści posta nie ulega zmianie, jedynie najechanie na kod znaku wyświetla go w pełnym rozmiarze (patrz rys. 4).
*Podgląd, kod wyróżniony *- dopasowane kody znaków wyróżniane są ciemnozielonym podkreśleniem (patrz rys. 3). Najechanie na kod znaku wyświetla go w pełnym rozmiarze.
*Podgląd, kod + miniatura *- za kodem znaku, w treści posta dodawana jest miniatura (patrz rys. 2). Najechanie na kod znaku lub miniaturę wyświetla go w pełnym rozmiarze.
*Podgląd, miniatura *- kod znaku jest zamieniany na miniaturę (patrz rys. 1). Można zobaczyć kod znaku po wskazaniu obrazka myszą. Ponadto, najechanie na nią wyświetla znak w pełnym rozmiarze.
*Bez podglądu, kod + miniatura *- za kodem znaku, w treści posta dodawana jest miniatura. Najechanie na kod lub miniaturę nie wywołuje żadnego efektu (podgląd pełnego rozmiaru jest wyłączony).
*Bez podglądu, miniatura *- kod znaku jest zamieniany na miniaturę. Najechanie na nią nie wywołuje żadnego efektu (podgląd wyłączony).

Domyślnie wybranym trybem jest pierwszy ("Podgląd, kod"). Aby zmienić, tryb, należy skorzystać ze specjalnego menu, które pojawia się obok przycisków narzędzi wątku oraz wyszukiwania:









Kliknięcie tekstu "Polskie Znaki Drogowe" wyświetli rozwijalną listę, z której możemy wybrać interesujący nas tryb. Po wybraniu pozycji, nastąpi automatyczne przeładowanie strony z nowymi ustawieniami. Tryb jest pamiętany również po zamknięciu przeglądarki.

*Informacje dodatkowe*

Symbole znaków drogowych pochodzą z Wikipedii, należą również do domeny publicznej. W ogromnej większości są to rysunki wektorowe w formacie SVG, co powoduje, że można je sobie skalować do woli.
Kopiując tekst zawierający miniaturki, w miejscu obrazków pojawia się kod znaku.
Skrypt dopasowuje wyłącznie kody znaków, gdzie między częścią literową a cyfrową znajduje się kreska (np. C-12). Gdy kreski nie ma (napiszemy np. A12 lub A 12), skrypt nie wyłapie takiego oznaczenia. Jest to zrobione celowo, aby, po pierwsze: promować prawidłowe oznaczenia znaków; po drugie, aby skrypt nie wyłapywał oznaczeń autostrad i dróg ekspresowych. Z drugiej strony, niektórzy oznaczają drogi jako np. S-8 (zamiast S8), co powoduje, że Autostradowa Obwodnica Wrocławia staje się ostrzeżeniem o rondzie (A-8) 
Niektórzy używają oznaczeń typu A-6x w celu odniesienia się do znaków A-6a, A-6b, ..., A-6e. Skrypt wspiera taką konwencję, podstawiony zostanie wtedy symbol A-6a. Podobnie, gdy użyjemy już niestniejącego kodu E-17 (pomijając literkę "a" na końcu), podstawiony zostanie znak E-17a.
Miniaturki wstawiane w treść posta są automatycznie skalowane tak, by mieć wysokość 16 pikseli. Skalowanie jest proporcjonalne, więc szerokość miniaturki będzie wartością wynikową.
Skrypt wyławia również oznaczenia znaków łączonych, np. C-13/16, B-3/4/10.

W razie uwag czy znalezionych błędów, odpowiadajcie w tym wątku.
Najnowsza wersja skryptu: *1.4.1 (LA02)*
Skrypt przetestowany w następujących konfiguracjach:
- Firefox (v69.0.1) + Greasemonkey (v4.3)
- Chrome (v77.0.3865.90) + Tampermonkey (v4.6)
- Opera (v63.0.3368.94) + Tampermonkey (v4.2.5291)


----------



## Kpc21

Dla mnie te kody to cały czas egzotyka, kojarzę tylko że A-7 to (chyba) "ustąp pierwszeństwa przejazdu".

Skrypt na pewno przydatny, choć jeszcze lepiej byłoby, gdyby dyskutujący w tych wątkach używali nazw znaków, a nie ich kodów z PoRD znanych tylko im.


----------



## fatalbomb

*Aktualizacja - wersja 1.1 (F903)*

Zmiany w najnowszej wersji:

Dodane brakujące znaki z serii T (od T-24 do T-34)
Dodane znaki szlaków rowerowych serii R (od R-1 do R-4e)
Dodane znaki dla kierujących pojazdami wojskowymi serii W (od W-1 do W-7)
Dodane mapowanie znaku E-15 na E-15a

Jeżeli skrypt nie zaktualizował się automatycznie, należy zrobić to ręcznie:

Z menu wtyczki Greasemonkey wybieramy pozycję *Zarządzaj skryptami*
Klikamy prawym klawiszem myszy na nazwie skryptu i wybieramy opcję *Znajdź aktualizacje*. Jeżeli jednak ręcznie modyfikowaliśmy skrypt, opcja ta będzie niedostępna, zamiast tego odblokowana będzie pozycja *Forced find updates*. Wybieramy ją i potwierdzamy chęć porzucenia naszych lokalnych zmian.
Aktualizacja potwierdzona zostanie odpowiednim komunikatem.


----------



## bloniaq_s8

fatalbomb said:


> *) do przeglądarek Google Chrome oraz *Opera* istnieją podobne wtyczki: Tampermonkey oraz *Violentmonkey*. Jeszcze ich nie testowałem na tych przeglądarkach.


nie działa. Przynajmniej mi.


edit. na chrome chodzi, na operze dalej nie.


----------



## Elninio19PL

mi na operze też nie bangla.


----------



## fatalbomb

bloniaq_s8 said:


> na chrome chodzi, na operze dalej nie.





Elninio19PL said:


> mi na operze też nie bangla.


Sprawdziłem i znalazłem przyczynę, dlaczego skrypt nie pracuje pod Operą. Fix w trakcie opracowywania


----------



## fatalbomb

*Aktualizacja - wersja 1.2 (F929)*

Zmiana w nowej wersji jest tylko jedna - jest to wprowadzenie obsługi dla Opery i wtyczki Violentmonkey.

Skrypt powinien automatycznie się zaktualizować. Jeżeli to nie nastąpi - instrukcja aktualizacji cztery posty wyżej


----------



## Elninio19PL

Niestety dalej nie działa. Mam zainstalowany Violentmonkey, ikonkę z małpką mam widoczną, skrypty włączone oraz dodatek znaki drogowe SSC. Próbowałem wyłączy adblocka ale niestety nic nie pomaga...


----------



## bloniaq_s8

działa.


----------



## Elninio19PL

Ok, zmieniłem ustawienia i działa. 
Nie działa tylko tryb: podgląd, kod


----------



## fatalbomb

^^ z jakiej wersji Opery korzystasz, pod jakim systemem operacyjnym?
Spróbuję przeanalizować, co tam się dzieje.


----------



## Elninio19PL

Moja Opera twierdzi że posiadam najnowszą wersję (64 bit)o numerze: 32.0.1948.25. System operacyjny to Windows 10.


----------



## el nino

Na Operze w domu mam Violentmonkey a w pracy Tampremonkey - ten drugi działa bez zarzutów, za to w domu z Violentmonkey są problemy.


----------



## fatalbomb

*Aktualizacja - wersja 1.3 (K405)*

Ponieważ w jednym z wątków (bodajże w kretynizmach drogowych) rozgorzała dyskusja na temat używania kodów znaków, stwierdziłem, że czas najwyższy odgrzebać nietykany od ponad dwóch lat kod i przygotować aktualizację. Skrypt w międzyczasie bowiem przestał działać pod GreaseMonkey na Firefoxa, co spowodowane było zmianami w API rozszerzenia.

Nowa wersja jest już na GreasyFork. Jeśli przeglądarka sama nie zaciągnęła aktualizacji, należy ją "szturchnąć" ręcznie przez kliknięcie przycisku "Zainstaluj skrypt". Z tego co widzę, GreaseMonkey nie posiada już funkcji automatycznego aktualizowania zainstalowanych skryptów, w odróżnieniu od obydwu konkurentów.


----------



## bloniaq_s8

a D-54 już dodałeś?


----------



## fatalbomb

^^ w sumie się zastanawiam. To dopiero projekt, nie jest przesądzone, że te znaki się pojawią. Poza tym, D-54 prowadzi do szeregu innych pomysłów z przeszłości:


















Z drugiej strony, oznaczenia D-54 i D-55 zaczynają ścielić się gęsto...


----------



## fatalbomb

*Aktualizacja - wersja 1.4 (K423)*

Właśnie załadowałem na GreasyFork najnowszą wersję skryptu - 1.4. Wraz z nią wprowadziłem chyba największe do tej pory zmiany.

Główną nową funkcjonalnością jest dodanie informacji o nazwach znaków drogowych. Teraz poza podglądem graficznym znaku możliwe jest również wyświetlenie jego tekstowego opisu. Oczywiście cały czas można korzystać z podglądu, wyróżnienia oraz miniaturek - te ostatnie dodatkowo można teraz umieścić przed lub za symbolem.

Nazwy znaków ujęte są w cudzysłowy. Aby łatwo można było odróżnić kod wstawiony przez skrypt od faktycznej treści posta, nazwy znaków dopisane automatycznie zostaną wyświetlone zieloną czcionką. Skrypt również wykrywa, czy autor posta nie napisał nazwy znaku samemu - wówczas nic nie zostanie dodane, aby nie powodować duplikacji informacji.

Porównaj:
B-33
B-33 "ograniczenie prędkości"
--

_Nazwa znaku musi być napisana w cudzysłowach. Wykrywane są zarówno cudzysłowy proste, jak i drukarskie: „ ”_

Ta zmiana pociągnęła za sobą również przebudowanie sposobu personalizacji skryptu. Teraz zamiast pojedynczej listy rozwijanej z sześcioma gotowymi ustawieniami mamy do dyspozycji pełnoprawne okno konfiguracyjne, w którym możemy ustawić następujące parametry:

*Podgląd po wskazaniu* - pozwala włączyć lub wyłączyć wyświetlanie znaku w dużym rozmiarze po najechaniu na niego myszą.
*Wyróżnienie kodu znaku* - pozwala włączyć lub wyłączyć wyróżnianie napotkanych kodów (podkreślane one są wówczas na zielono).
*W treści posta* - definiuje w jaki sposób potraktowane zostaną same kody znaków w tekście:
*Nic nie zmieniaj* - treść posta nie ulegnie modyfikacji, będzie widoczny sam kod znaku. Po najechaniu nań myszą zobaczymy podpowiedź z nazwą znaku
*Dodaj miniaturę przed kodem* - przed kodem znaku pojawi się miniaturka znaku drogowego. Wskazanie jej myszą spowoduje wyświetlenie symbolu i nazwy znaku.
*Dodaj miniaturę za kodem* - jak wyżej, ale miniatura zostanie dodana po kodzie znaku
*Zastąp kod miniaturą* - w miejscu kodu znaku pojawi się miniatura. Kod znaku oraz jego nazwę można ciągle zobaczyć po wskazaniu go myszą.
*Dodaj nazwę znaku do kodu* - po kodzie znaku dopisana zostanie jego nazwa (chyba, że figuruje ona już w treści posta).
*Zastąp kod nazwą znaku* - w miejscu kodu znaku pojawi się jego nazwa.
*Zastąp kod miniaturą i nazwą znaku* - w miejscu kodu znaku pojawi się miniatura znaku oraz jego nazwa. Kod znaku można zobaczyć wskazując miniaturkę lub nazwę myszą.
*Zastąp kod nazwą znaku i miniaturą* - jak wyżej, ale miniaturka pojawi się po nazwie znaku

Razem daje to odpowiednik aż 32 trybów pracy, tak więc każdy znajdzie coś dla siebie.
Jeżeli już wcześniej korzystałeś ze skryptu, ustawienia zostaną zmigrowane do najnowszego formatu.

Skrypt ponadto został rozbudowany o garść nowych kodów znaków - również tych, dla których w Wikimedia nie ma odpowiednich rysunków. Co prawda nie spotkałem jeszcze na forum zapaleńca, który by mówił "U-18a" zamiast "Lustro drogowe", ale jakby się taki trafił, to jesteśmy przygotowani


----------



## bloniaq_s8

u mnie działa :cheers:


----------



## Yaper

Przydało by się dodać troszkę odstępu, gdy miniaturka jest wyświetlana przed kodem.
Po za tym śmiga. kay:


----------



## Kamil_87

Chrome w wersji 68 + TamperMonkey w wersji 4.7 + skrypt w wersji 1.4
To wszystko mam i dalej nie widzę obrazków znaków a jedynie ich numerki. Czy obecnie skrypt działa i problem jest tylko u mnie (pewnie coś źle robię - tylko co?), czy to jakaś "globalna" awaria?


----------

