Shrnuje změny sloučené do této větve oproti main: projektové akce (#53), úklid kódu (#54), stahování samostatných nálezů (#57), diagnostiku prázdných výsledků z API (#58) a filtrování podle data se scrollovatelným dialogem (#59).
* fix: scrollovatelný filtrační dialog
Obsah dialogu přesahoval okno u všech tří typů dat – u akcí zabíral
přes 1280 px v okně vysokém 750 px, takže spodní filtry i tlačítka
byly nedostupné.
Filtry se nově scrollují. Tlačítka OK / Aktualizovat hesláře / Cancel
zůstávají mimo scrollovanou oblast, aby se kvůli potvrzení dialogu
nemuselo scrollovat na konec seznamu.
* feat: filtrování záznamů podle data
Přidává filtr na datum zahájení a ukončení u akcí a na datum nálezu
u samostatných nálezů (#56). Lokalita filtr nedostává – v jejím indexu
žádné datumové pole není, takže by šlo o ovládací prvek bez účinku.
API vyžaduje obě meze intervalu: jednostranný rozsah shodí server na
ArrayIndexOutOfBoundsException a hvězdičku nepřijímá. Prázdné pole se
proto nahrazuje zarážkou 0001-01-01 / 9999-12-31, což jsou shodou
okolností i výchozí meze QgsDateEdit. Blok s oběma poli prázdnými
neposílá do dotazu nic.
Obrácené rozmezí vrací API jako nula záznamů bez chybové hlášky, což
je k nerozeznání od skutečně prázdného výsledku – dialog ho proto
odmítne už při potvrzení a vypíše, kterých filtrů se to týká.
- logování odeslané URL a chyb z těla odpovědi v _api_get_json
- výpis filtrů z dialogu před zahájením stahování
- rozlišení chyby API od prázdného výsledku (api_error)
- dávky geometrií PIAN hlásí chybějící blok 'response'
API vrací chyby s HTTP 200 a klíčem 'error' místo bloku 'response'; resp_json.get('response', {}) z toho udělal prázdný výsledek, takže neplatný parametr, prázdné okno mapy i chyba serveru končily stejnou hláškou "Žádné záznamy nenalezeny".
* feature: dialog: přidána nová pole
přidána pole samostatných nálezů pro filtrovací dialog + upravena viditelnost některých spolčných polí (např. skrýt areál, zobrazit organizaci nejen pro akce, ale i pro PAS, ...)
* feature: tlačítko v menu
v kontextové nabídce přibylo tlačítko pro filtrování PASových záznamů; ikona je zatím placeholder
* feature: rozšíření slovníčku
slovníček interních vs api klíčů byl rozšířen o nová pole (nálezce, okolnosti, ...) a zároveň byla změněna jeho struktura: nově obsahuje i base url vzhledem k tomu, že si skript pro data sahá do dvou různých API; přidáno base url pro digiarchiv
* feature: update funkcí pro stahování dat
funkce fetch_set a download_heslare byly upraveny pro stahování dat nejen z OAI-PMH API, ale nově i z API digiarchivu (= osoby se nově nestahují z hesláře osob, ale z facetek digiarchivu, kde mají osoby přidělené "role" nálezce/vedoucí)
* feature: globals pro PAS
založeny nové heslářové globals, pak přidány do funkce refresh_globals
* feature: nové heslářové globals + cache v dialogu
* feature: aktualizace hesláře
* fix: oprava typ_dat = "pas" na typ_dat = "samostatny_nalez"
* feature: dynamičtjší způsob interpretace typu dat
- archeologicky_zaznam nově čerpá human-readable název pro název vrstvy v typ_dat_vocab
- archeologicky_zaznam_l pro ověřování, jestli je současný typ_dat akce nebo lokalita
* feature (wip): první krůčky logiky pro parsování PAS záznamů
- dosavadní logika parsování platná pro akce a lokality je podmíněna typ_dat
- stub logiky parsování pro samostatné nálezy
* feature: čtení dat z JSON payload
získávání sn-specific dat, jako je nálezce, hloubka nálezu, ale i vlastní wkt, které není závislé na PIANu
* feature: párovací slovník metadat pro samostatné nálezy
* fix: Přístupnost přidána do hesláře aliasů
* fix: oprava chyb z dialogu znemožňujících stahování SN
* fix: předávání filtrů k samostatným nálezům z dialogu do "tools" skriptu
* feat: drobné změny
- escapování názvů vrstev (podtržítko místo mezery)
- `actions_with_geom` -> `entries_with_geom`
- čitelný `typ_dat` pro PAS: `PAS` -> `Samostatný nález`
* feat: dokončení smyčky na ukládání metadat k SN z docs
* feat: plnění vrstvy daty SN
* feat: update ikon pro samostatné nálezy a login
* feature/projektove-akce: do dialogu akce přidán checkbox pro filtrování projektových akcí + backend logika
* feature/projektove-akce: do atributové tabulky akcí přidáno pole Projekt (prázdné, pokud nejde o projektovou akci)
Opravy chyb a optimalizace napříč pluginem
Souhrn revize celého kódu pluginu:
- Opravy pádů: chybějící locale při startu QGIS; životní cyklus
úlohy aktualizace heslářů (GC reference, zákaz souběhu, message
boxy nad hlavním oknem).
- Datová korektnost: transformace fallback geometrií WGS-84 do
S-JTSK, oprava nevalidních polygonů přes makeValid(), normalizace
hodnot pian_presnost/pian_typ, heslář přístupnosti bez záznamů
s kódem None, ošetření null hodnot u komponent.
- Přihlašování a stahování: ověření údajů před uložením do správce
autentizace, zřetelné hlášení síťových chyb a neúplných výsledků,
jedno parsování JSON odpovědí, úspornější stránkování, guard proti
souběžným stahováním, logování do QgsMessageLog.
- Metadata a CI: oprava ikony pluginu, akce ve workflow povýšeny na
aktuální verze a připnuty na commit hash, poznámka o závislosti
na requests v README.
Otestováno ručně v QGIS dle checklistu v PR (včetně hraničních
případů: výpadek sítě, expirovaná session, špatné heslo, zrušení
úlohy, prázdné výsledky, limit záznamů).
* vyměnit xml.etree.ElementTree za defusedxml.ElementTree
* zpátky xml.etree.ElementTree, ale přidáno # nosec; jde o false positive
* switch z ukládání hesel v registrech na používání QGIS Auth Manager
* přidáno nové tlačítko do toolbaru
* přihlašovací dialog
* funkce pro přihlašování
* aplikace získávání dat z API přes session
* zastřešující akce v main skriptu
* ošetření prodlužování session/opětovné přihlášení
* přidání přístupnosti do hesláře
* aktualizace přibaleného hesláře
* oprava stahování hesláře (pristupnost vyžaduje písmeno [A/B/C/D], ne heslo; aktualizace hesláře
* aplikace přístupnosti do filtračního dialogu
* úpravy přihlašovacího dialogu
* čištění amcr_tools.py od zbytečných prvků souvisejících se standalone tabulkou komponent
* aplikace nové logiky přípravy dat v případě požadavku na komponenty
* nové aliasy + přidání dat komponent do finálních tabulek
* oprava pořadí polí v tabulce
* přechod od statického hesláře k dynamickému načítání z OAI-PMH API AMČR
* aplikace načítání heslářů a task management (backend)
* frontend + debugging
* aktualizace přibaleného hesláře
* kosmetické drobnosti
* ošetření speciální případů při stahování hesláře (katastr, okres) + s tím spojená aktualizace přiloženého hesláře
Comprehensive update to improve plugin efficiency and code quality:
- Performance: Increased BATCH_PIAN to 200 and optimized attribute parsing loops.
- Performance: Optimized codelist caching to reload only necessary data.
- UI/UX: Fixed plugin unloading (toolbar icon duplication) and added safe cursor handling.
- Refactoring: Moved GUI helper methods to class level for better OOP structure.
- Modernization: Updated dialog execution syntax to modern PyQt5/6 standards.
- Documentation: Added full inline English documentation across all modules.