Panel Czas Pracy i Zlecenia — nowe UI tabeli, przerwy kierowców, wyszukiwanie
Filip Borkowski, Backend/Frontend/Fullstack Engineer
Panel Czas Pracy — przebudowa tabeli
Tabela czasu pracy kierowców przeszła kompleksowy redesign wizualny i funkcjonalny.
Scalenie kolumn Jazda / Inna praca
Kolumny 10 i 11 zostały połączone w jedną komórkę z podziałem poziomą kreską — analogicznie do kolumn dziennych (3–9). Górna połowa pokazuje sumę jazdy tygodnia, dolna — sumę innej pracy. Nagłówek kolumny wyświetla zakres dat tygodnia.
Czcionka i formatowanie
Wprowadzono czcionkę Saira jako domyślną dla wszystkich tabel aplikacji (ustawiona globalnie w components/ui/table.jsx). Nagłówki tabel pozbawione szarych teł — transparentne na tle strony.
Ostatni odczyt GBOX — pełna historia
Naprawiono brak danych w kolumnie „Ostatni odczyt". Wcześniej wyświetlał tylko aktywność z bieżącego dnia. Teraz stosowany jest trójpoziomowy fallback:
- Dane live GBOX (dziś)
- Historia tygodnia z Supabase
- Nowy endpoint
/api/gbox/last-timestamps— MAX(timestamp) per kierowca z ostatnich 30 dni
Wyszukiwanie inline w kolumnie Kierowca
W nagłówku kolumny „Kierowca" dodano pole wyszukiwania z ikoną lupy i przyciskiem ×. Działa niezależnie od paska wyszukiwania u góry strony.
Toggle podpowiedzi
Przycisk „Podpowiedzi" (ikona oko) włącza i wyłącza tooltip przy wskazaniu kursorem na wartości w tabeli.
Wytyczne obliczania — kalkulator przepisów
Dialog przebudowany w dwukolumnowy interaktywny kalkulator. Lewa strona prezentuje normy prawne, prawa pozwala wprowadzić własne dane i natychmiast sprawdzić zgodność z przepisami.
Dodane nowe sekcje dotyczące przerw:
- Przerwy podczas jazdy (Rozp. WE 561/2006, Art. 7) — maksymalna jazda ciągła 4h30, wymagana przerwa 45 min (lub 15+30 min w tej kolejności)
- Przerwy w czasie pracy (Art. 13 Ustawy) — po 6h pracy przerwa min. 30 min; przy pracy powyżej 9h łącznie min. 45 min
- Jazda dobowa/tygodniowa/2-tygodniowa (Rozp. 561/2006, Art. 6) — limity 9h/56h/90h z kalkulacją zgodności
Panel Zlecenia — synchronizacja stylu
Tabela zleceń dostosowana do spójnego stylu z panelem Czas Pracy:
- Obramowania zmienione z czarnych (
border-black) na theme-aware (border-border) - Nagłówki bez szarych teł, sticky komórki używają
bg-background - Czcionka Saira z globalnego komponentu tabeli
- Wiersz numeracji kolumn: wysokość 30px, pogrubione cyfry
- Usunięto hardcodowane kolory tekstu — dziedziczą z motywu (light/dark)
- Kolumny 11–16 (ceny, dystans, czas): czarny tekst (
text-black dark:text-white)
Kolejne poprawki UI — sesja II
Czas pracy — dopracowanie tabeli
- Kolumna „Dziś dobowa" przeniesiona bezpośrednio po kolumnie Nd (niedziela) — przed sumą tygodniową
- Usunięto pomarańczowe wypełnienie weekendu (Sob, Nd) — wszystkie kolumny jednolite
- Usunięto wszelkie tła komórek w tabeli — przejrzyste, bez kolorowania
- Kolumna 3: etykiety „Jazda dzienna" / „Inna praca" w kolorze czarnym
- Kolumna 11 „SUMA TYDZIEŃ" — nagłówek zawiera zakres dat tygodnia
- Kolumna 13 „Poprz. tyg. jazda" — szerokość 170px
- Kolumna Kierowca: tekst „KIEROWCA" wyśrodkowany u góry, pole wyszukiwania poniżej
- Usunięto pole wyszukiwania z prawego górnego rogu
- Rozmiar czcionki dat w wierszu 1 ujednolicony (
text-xs) - Podpowiedzi (tooltips) domyślnie wyłączone
- Aktualny dzień: pogrubiena ramka (2px czarna) wokół całej kolumny
- Naprawiono wyświetlanie daty w kolumnie „Ostatni odczyt" (format ISO+TZ Supabase)
Panel Zadania — nowe funkcje
- Wiersz numeracji kolumn (analogicznie do panelu Czas Pracy)
- Autor „System": widoczne tylko logo aplikacji, bez tekstu
- Autor zadania i przypisany pracownik: wyświetlani kodem z tabeli pracownicy (inicjał imienia + 2 litery nazwiska)
- Zadania przeterminowane: czerwone tło z pulsującą animacją (
animate-pulse) - Poprawka:
created_atustawiany jawnie przy tworzeniu i ponownym otwarciu zadania
Panel Pracownicy
- Pionowe linie oddzielające kolumny w tabeli (aktywni i nieaktywni)
Panel Dokumenty — edytor nowej generacji
Kompleksowa rozbudowa edytora dokumentów inspirowana szablonem Nuxt UI Editor.
Tabele w edytorze
Wstawianie tabel bezpośrednio w treści dokumentu — przycisk w toolbarze lub polecenie /Tabela. Po kliknięciu w tabelę pojawiają się dodatkowe przyciski: dodaj wiersz, dodaj kolumnę, usuń wiersz, usuń kolumnę, usuń tabelę.
Upload zdjęć
Przycisk aparatu w toolbarze otwiera wybór pliku. Obraz zostaje przesłany do Supabase Storage (bucket document-images) i wstawiony do dokumentu jako element blokowy. Obsługiwane formaty: JPG, PNG, GIF, WebP, SVG.
@Wzmianki użytkowników
Wpisanie @ otwiera dropdown z listą użytkowników systemu (z tabeli profiles). Wybrany użytkownik zostaje wstawiony jako oznaczony węzeł @Imię Nazwisko.
Emoji w slash menu
Polecenie /Emoji w menu podpowiedzi wstawia popularne emoji: 👍 ✅ ⚠️ 📦 🚚 📅 💡 ❌ 🔴 🟢 🔵 i inne.
Asystent AI (Ctrl+J)
Panel AI dostępny przez Ctrl+J lub przycisk ✦ w toolbarze. Dostępne akcje:
- Kontynuuj pisanie — generuje 2-4 zdania na podstawie kontekstu dokumentu
- Uprość / Rozszerz — transformacja zaznaczonego tekstu
- Popraw gramatykę — korekta stylistyczna i gramatyczna
- Podsumuj — streszczenie dokumentu lub zaznaczenia
- Tłumacz → EN / DE / PL
Wynik można zatwierdzić (zastępuje zaznaczenie lub wstawia w miejsce kursora) lub odrzucić. Asystent oparty na modelu Claude Haiku.
Foldery dokumentów
Lewy panel obsługuje teraz foldery: tworzenie (ikona + folderu), zwijanie/rozwijanie, przenoszenie dokumentu do folderu przez menu kontekstowe ⋯. Dokumenty bez folderu wyświetlane w osobnej sekcji.
Eksport dokumentu
Menu ⋯ przy otwartym dokumencie oferuje eksport do:
- HTML — pełny plik
.htmlgotowy do osadzenia - Markdown — plik
.mdz automatyczną konwersją formatowania
Mapa — warstwa dróg A/S/DK
Nowa stała warstwa mapy z autostradami, drogami ekspresowymi i krajowymi — dane pobierane raz, cache 30 dni.
Dane z OpenStreetMap (Overpass API)
Przy pierwszym załadowaniu mapy dane pobierane są z Overpass API (OSM). Kolejne wyświetlenia obsługiwane z pamięci (24h) lub Supabase Storage (30 dni) — bez zbędnych zapytań zewnętrznych.
Warstwy wizualne
- Autostrady (A*) — ciemnoczerwona linia, widoczna od zoom 4
- Drogi ekspresowe (S*) — czerwona linia, zoom 5+
- Drogi krajowe (DK*) — pomarańczowa linia, zoom 7+
- Etykiety wzdłuż linii — numer drogi ze kolorowym halem (
symbol-placement: line), zoom 7+
Sterowanie
Checkbox „Drogi A/S/DK" w pasku warstw mapy (domyślnie włączony). Warstwa ładuje się raz — toggle nie generuje powtórnych zapytań sieciowych.
Dane drogowe w bazie Supabase
Dane o drogach zapisywane są w tabeli roads_poland_cache jako jeden rekord JSONB. Drogi w Polsce nie zmieniają się — dane pobrane raz z Overpass są trwałe (brak TTL). Hierarchia odczytu: pamięć (24h) → baza Supabase → Overpass API (tylko gdy baza pusta).
Czas pracy — kolor czcionki czarny
Ujednolicono kolor tekstu w kolumnach 4–14 tabeli czas pracy. Wszystkie wartości (jazda, inna praca, sumy tygodniowe, poprzedni tydzień, dziś dobowa) wyświetlane w kolorze czarnym — usunięto kolorowe czcionki (text-red-600, text-amber-600, text-muted-foreground).
Mapa — nowa architektura danych dróg A/S/DK
Warstwa dróg polskich przeszła gruntowną przebudowę architektury w celu poprawy wydajności i ograniczenia danych przesyłanych do przeglądarki.
Podział na kategorie
Dane dróg podzielono na trzy niezależne typy: motorway (autostrady A*), trunk (drogi ekspresowe S*) i primary (drogi krajowe DK*). Każdy typ pobierany jest osobnym żądaniem HTTP i przechowywany w osobnym wierszu bazy Supabase.
Kolejność ładowania
Mapa ładuje najpierw autostrady (najmniejszy zbiór), następnie ekspresowe, na końcu krajowe. Dla dróg krajowych przekazywany jest bbox aktywnych pojazdów — API zwraca tylko drogi w obszarze ±200 km od aktywnej floty.
Brak cache przeglądarki
Dane drogowe nie są przechowywane w przeglądarce (Cache-Control: no-store). Cache serwera (per typ, bez TTL) zapewnia szybkie odpowiedzi bez zbędnego pobierania z Overpass API przy każdym żądaniu.
Mapa — ograniczenia ciężarówek
Linia ograniczeń ciężarówek zmieniona na ciągłą (usunięto kreskowanie). Etykiety dróg powiększone i lepiej czytelne. Po kliknięciu na linię otwiera się popup z pełnymi detalami ograniczenia: maksymalna masa całkowita, masa osi, wysokość, szerokość, długość pojazdu oraz informacja o zakazie przewozu materiałów niebezpiecznych.
Workdesk — podgląd PDF zleceń
Naprawiono niedziałający podgląd PDF w panelu Workdesk (obszar roboczy → Zlecenie → Podgląd). Poprzednia implementacja używała elementu <embed>, który na wielu przeglądarkach wyświetlał błąd lub placeholder. Nowe rozwiązanie pobiera plik przez fetch() i renderuje przez pdf.js z blob URL.
Biblioteka danych — widok podzielony
Panel Biblioteka danych przeszedł na widok dwukolumnowy: lewa strona (stała szerokość 420 px) zawiera drzewo plików z wyszukiwarką, prawa — podgląd PDF bezpośrednio w interfejsie bez modalu. Ikony akcji (podgląd, pobieranie) przeniesione bezpośrednio przy nazwie pliku dla szybszego dostępu.
Zlecenia — nowa kolumna i jednolita czcionka
Dodano kolumnę „Kod Lokalizacji" (nr 4A) po kolumnie Miasto załadunku. Rozmiar czcionki ujednolicony w całej tabeli zleceń. Wiersz numeracji kolumn: pogrubione cyfry dla wszystkich kolumn, w tym podkolumn (np. 14.1).