Dokumenty blokowy editor, Zlecenia kolumny, Tablica 2-panel, kierowca, PDF

Filip Borkowski, Backend/Frontend/Fullstack Engineer

Tablica — naprawione narzedzie tekstu

Rozwiazano trzy bledy w narzedziu tekstu na stronie Tablica (whiteboard):

Klikniecie na input nie resetuje tekstu

Wcześniej kliknięcie na pole tekstowe powodowalo propagacje zdarzenia pointerDown do canvasu, co tworzilo nowy pusty input i kasowalo wpisywany tekst. Dodano blokade propagacji zdarzen na elementach INPUT i TEXTAREA.

Race condition blur vs pointerDown

Gdy uzytkownik kliknal w nowe miejsce na canvasie majac otwarty input tekstowy, zdarzenie onBlur wywoływalo handleTextSubmit() PO tym jak handlePointerDown ustawil juz nowy textInput — co skutkowalo wyczyszczeniem nowego inputu. Rozwiazanie: flaga skipBlurRef ustawiana w handlePointerDown, sprawdzana w handleTextBlur.

Stale closure w handleTextSubmit

Funkcja handleTextSubmit czytala stan textInput z zamkniecia, ktore moglo byc nieaktualne. Zmieniono na odczyt z textInputRef.current (ref synchroniczny) i opakowano w useCallback. Gwarantuje to dostep do najswiezszej wartosci niezaleznie od cyklu renderowania.

Blokowanie skrotow podczas wpisywania

Dodano e.stopPropagation() na zdarzeniach onKeyDown i onPointerDown elementow input/textarea. Dzieki temu skroty klawiszowe Tablicy (V, H, S, D, R, A, N, T, F) nie przejmuja liter wpisywanych w polu tekstowym.

Strona kierowcy — Dodaj Akcje i ContactDropdown

Przycisk Dodaj Akcje

Zastapiono przycisk "Napisz" nowym przyciskiem Dodaj Akcje w naglowku TimeLine Zlecenia. Po kliknieciu rozwija sie menu z opcjami: dodaj zdjecie, dodaj dokument, dodaj notatke, wyslij wiadomosc.

Dodatkowo przy kazdym kroku statusowym na timeline (Start, Zaladunek, Rozladunek, Dostarczono) pojawil sie inline przycisk Dodaj Akcje w tej samej linii co nazwa statusu.

ContactDropdown — Zadzwon i Napisz

W sekcji kontaktowej na stronie kierowcy dodano dwa przyciski dropdown:

  • Zadzwon — rozwija liste kontaktow telefonicznych (Dyspozytor, Biuro, Pomoc drogowa)
  • Napisz — rozwija liste odbiorcow wiadomosci prywatnych DM (Dyspozytor, Biuro, Inny)

Usunieto stary komponent WriteMessageButton i logike prefixu adresata w wiadomosciach.

Parametry logiki — usunieto podstatus

Usunieto tekst "podstatus" wyswietlany pod etykieta w elementach drzewa regul. Elementy pokazuja teraz tylko swoja nazwe bez dodatkowych opisow.

Tablica — stale closures w historii

Zarządzanie historia (pushHistory/undo/redo) przeniesione na refs zamiast closure state. Eliminuje utrate elementow przy szybkich operacjach rysowania i dodawania tekstu. handleTextSubmit czyta color/strokeWidth z refs.

PdfViewer — zmiana CDN workera

Zmieniono CDN workera pdf.js z cdnjs na jsdelivr. Wersja pdfjs-dist 5.5.207 nie była dostepna na cdnjs, co powodowalo fallback na fake worker i brak renderowania PDF.

Czat AI — aktualna data

Agent AI odpowiadal z nieprawidlowa data (knowledge cutoff). Dodano biezaca date do system prompt (strefa Europe/Warsaw).

Strona kierowcy — Strona Zlecenia

  • Zmieniono naglowek z "Strona kierowcy" na "Strona Zlecenia"
  • Footer: logo + napis jak w naglowku, wersja aplikacji z package.json
  • ContactDropdown (Zadzwon/Napisz): dodano pole wyszukiwania kontaktow
  • Usunieto "Biuro AI-CARGO" z sekcji kontakt
  • Wiadomosci: godzina obok nadawcy w jednej linii

Powitanie agenta — data i zadania

Po zalogowaniu animacja powitania wyswietla:

  • Imie uzytkownika
  • Dzisiejsza date (dzien tygodnia, dzien miesiaca, rok)
  • Liczbe przydzielonych zadan do zrobienia lub informacje o braku zadan
  • Czas animacji wydluzony z 2.5s do 3.5s

Tablica — 2-panelowy layout z zapisem

Strona Tablica podzielona na dwie czesci:

  • Lewy panel (zwijany, 256px): lista zapisanych tablic uzytkownika, pole nazwy aktywnej tablicy, przycisk "Nowa tablica", usuwanie tablic
  • Prawy panel: obszar roboczy (canvas) do rysowania — aktywowany po wybraniu tablicy

Tablice zapisywane w Supabase (tabela whiteboards) z auto-zapisem po 1.5s bezczynnosci. API CRUD: GET (lista + szczegoly), POST, PATCH, DELETE.

Biblioteka danych — kategoria Tablice

Dodano nowa kategorie Tablice w Bibliotece danych. Wyswietla liste wszystkich tablic utworzonych przez uzytkownikow z data ostatniej modyfikacji.

Zlecenia — 7 nowych kolumn

Rozszerzono panel Zlecenia o nowe kolumny danych kontenerowych i zaladunkowych:

  • Nr kontenera — numer kontenera przypisanego do zlecenia
  • Podjecie kont. — miejsce podjecia kontenera
  • Adres zaladunku — adres miejsca zaladunku (z fallbackiem na pole "from")
  • Data zaladunku — planowana data zaladunku
  • Waga brutto — waga towaru brutto (z fallbackiem na pole "weight")
  • Zlozenie kont. — miejsce zlozenia kontenera
  • Godz. zlecenia — godzina otrzymania zlecenia email (format HH:MM DD.MM)

Nowe pola dostepne w formularzu "Nowe zlecenie" oraz uwzgledniane w filtrze wyszukiwania.

Dokumenty — blokowy edytor w stylu ClickUp Docs

Nowy panel Dokumenty w menu glownym z 2-panelowym layoutem i blokowym edytorem:

Lewy panel — lista dokumentow

  • Lista wszystkich zapisanych dokumentow i stron Wiki
  • Wyszukiwarka i filtry (Wszystkie / Dokumenty / Wiki)
  • Tworzenie nowych dokumentow i stron Wiki
  • Szablon WIKI_Brand z danymi firmy

Prawy panel — blokowy edytor

  • System blokowy: kazdy element (tekst, naglowek, tabela, baner) to osobny blok
  • Przycisk + po najechaniu na kazdy blok — otwiera menu dodawania
  • Komenda / w pustym bloku — slash menu z kategoriami i wyszukiwarka
  • Tabele z widocznymi krawedziami, dodawanie wierszy/kolumn, edycja komorek
  • Banery kolorowe: Info (niebieski), Sukces (zielony), Ostrzezenie (zolty), Blad (czerwony)
  • Checklist — interaktywne pola wyboru, przekreslenie po zaznaczeniu
  • Link / Przycisk — link zewnetrzny lub przycisk z URL
  • Naglowki H1/H2/H3, listy punktowane/numerowane, cytat, blok kodu, separator
  • Enter = nowy blok, Backspace w pustym = usun blok
  • Auto-zapis po 1.2s bezczynnosci
  • Layout dopasowany do reszty paneli (sidebar inset, var header-height)

WIKI_Brand — szablon

Gotowy szablon Wiki z tabelami danych rejestrowych, banerami, checklistami i przyciskiem-linkiem.

Tablica — skrot T = Tekst

Zamieniono skroty klawiszowe: T = Tekst (wstawianie), F = Rysowanie (olowek). Poprzednio bylo odwrotnie.

Tablica — naprawa narzedzia tekstu (pointer-events SVG)

Rozwiazano problem z niestabilnym dzialaniem narzedzia tekstu na Tablicy. Klikniecia trafialy w elementy SVG (siatka punktow, narysowane ksztalty) zamiast w div canvasu, co powodowalo ze handlePointerDown czasem nie odpalal narzedzia tekstu.

  • SVG pointer-events: none — warstwa SVG nie przechwytuje juz klikniec, wszystkie trafiaja bezposrednio do diva canvasu
  • Force-focus via requestAnimationFrame — dodatkowe zabezpieczenie: autoFocus na input bywa zawodne podczas obslugi pointer event, teraz focus jest wymuszany w nastepnej klatce animacji
  • Usunieto debug console.logs z poprzedniej sesji

Tablica — finalny fix narzedzia tekstu (skipBlurRef)

Rozwiazano glowna przyczyne braku dzialania wstawiania tekstu. Przegladarka natychmiast bluruje nowo utworzony input po zdarzeniu pointerDown na canvasie, co wywoływalo handleTextSubmit() zamykajac input zanim uzytkownik zdazyl cokolwiek wpisac.

  • Root cause: flaga skipBlurRef byla ustawiana tylko przy zamianie istniejacego inputa tekstowego, ale NIE przy tworzeniu nowego — pierwszy blur zawsze zamykal input
  • Fix: skipBlurRef.current = true przed kazdym setTextInput(), nie tylko przy istniejacym inpucie
  • Dodano potrojny fallback focusa: immediate focus() + requestAnimationFrame + setTimeout(50ms)

Więcej artykułów

Naprawa OCR cron, dropdown statusu, animacje tabeli zleceń

Naprawa crona OCR, dropdown statusu z ustawieniami, logika Przetwarzanie AI → in Planing, animacje pulsacji wierszy i wykrzykniki brakujących danych.

Czytaj więcej

Akordeonowy widok korespondencji email i poprawki WorkDesk

Nowy wątkowy widok emaili z animowanymi akordeonami, podgląd treści wiadomości, poprawki WorkDesk i Biblioteki danych.

Czytaj więcej