34 Commits
Author SHA1 Message Date
david-spacil 013818c463 chore: bump version and changelog 2026-10-02 22:35:36 +02:00
david-spacil 46fd8da045 Pamatovat filtry ve formuláři a přidat jejich reset (#84) (#85)
* Pamatovat filtry ve formuláři a přidat jejich reset (#84)

Filtrační dialog si do konce běhu QGIS pamatuje poslední filtry
potvrzené tlačítkem OK, zvlášť pro akce, lokality a samostatné
nálezy. Storno ani odmítnuté obrácené rozmezí uložený stav nemění.

- tlačítko „Obnovit výchozí“ vrátí formulář do výchozího stavu
  (bbox zapnutý, PIAN se třemi úrovněmi); uložený stav změní až OK
- tlačítko ✕ u každého výběru vymaže jen tento filtr
- upozornění nahoře hlásí obnovené filtry a jejich počet
- kódy, které po aktualizaci heslářů zmizely, se zahodí; popisky
  se skládají z aktuálních heslářů
- výchozí hodnoty jsou definované na jednom místě, PIAN už není
  natvrdo v setup_picker()
- smoke test, README a changelog v2.2.0

OpenSpec: openspec/changes/add-filter-memory-and-reset/
Připraveno s pomocí AI (implementace subagent, revize a ověření
Claude), ručně zkontrolovat v QGIS.

* Křížek vrací filtr do výchozího stavu, oznámení bez ikony (#84)

Úpravy po ručním testu v QGIS:
- ✕ u výběru vrací filtr do jeho výchozího stavu; u PIAN – přesnost
  obnoví tři předvolené úrovně, místo aby výběr vymazal. Tlačítko je
  aktivní, jen když se výběr od výchozího liší. PIAN bez omezení jde
  dál nastavit odškrtnutím všech úrovní ve výběru.
- oznámení o obnovených filtrech bez úvodního „ℹ“

Spec, design, tasks, README, changelog a smoke test upraveny.
Připraveno s pomocí AI.

* Archivovat OpenSpec změnu add-filter-memory-and-reset (#84)

Ruční test v QGIS (akce) zapsán k úkolu 4.3, změna archivována
do openspec/changes/archive/2026-10-02-add-filter-memory-and-reset/.
Připraveno s pomocí AI.

* Upřesnit záznam ručního testu u úkolu 4.3 (#84)

Vzhled i funkce ověřeny u všech tří typů dat, poslední oprava
(✕ u PIAN, oznámení) jen u akcí.
Připraveno s pomocí AI.
2026-10-02 19:04:53 +02:00
david-spacil 6e95973296 fix: váha prvku komponent počítaná z komponent prošlých filtrem (#55) (#83)
* fix: váha prvku komponent počítaná z komponent prošlých filtrem (#55)

Váha prvku_vaha = 1/n se dosud počítala ze všech komponent dokumentační
jednotky ještě před filtrem na období a areál, takže při aktivním filtru
váhy prvků jedné DJ nedávaly v součtu 1 (DJ se 4 komponentami, filtru
vyhoví 1 → váha 0,25 místo 1).

- nová funkce _component_entries: nejdřív vyfiltruje komponenty, pak
  přidělí váhu 1/n z těch, které prošly; DJ bez komponent má váhu 1
- smoke test vaha_komponent (4×0,25; 1 ze 4 → 1; 2 ze 3 → 2×0,5; bez
  komponent → 1)
- README: pole prvek_vaha v tabulce atributů komponent
- changelog v2.2.0 doplněn (bez povýšení verze)
- OpenSpec změna openspec/changes/fix-component-feature-weight

Ověřeno: živá data (Praha, novověk) – 0 z 1204 DJ se součtem vah ≠ 1,
původní kód 921; check_sources, bandit, detect-secrets, flake8, ruff,
pyqgis4-checker, smoke test v qgis/qgis:ltr i :stable.

Implementace připravena AI (Claude, subagent), ověřena a zkontrolována.

* openspec: archivovat fix-component-feature-weight (#55)

Ruční test v QGIS ověřen správcem: akce i lokality s Načíst komponenty,
bez filtru i s filtrem období – váhy prvků jedné DJ dávají součet 1 a
počítají se jen z vyfiltrovaných komponent. Úkol 3.2 odškrtnut, změna
archivována přes openspec archive --skip-specs.

Připraveno s pomocí AI (Claude).
2026-10-02 17:17:28 +02:00
david-spacil 74090a80c6 fix: před stahováním ověřit přihlášení přes islogged (#72) (#80)
* fix: před stahováním ověřit přihlášení přes islogged

Server při vypršelé session nevrací chybu, ale tiše odpoví jako
anonymnímu uživateli (jen přístupnost A). Plugin proto před stahováním
volá /api/user/islogged; při 'nologged' se jednou znovu přihlásí
z uložených údajů, a když to nejde, varuje v liště, že stahuje anonymně.

- amcr_tools: _check_islogged, _ensure_logged_in, volání v load_amcr_data
- smoke test: 7 offline scénářů stavu přihlášení
- README; changelog v2.2.0 v metadata.txt
- openspec/changes/fix-session-expiry-islogged: návrh, spec, design, úkoly

Closes #72. Připraveno s pomocí AI (Claude), ručně zkontrolováno.

* feat: odebrání přihlašovacích údajů uživatele i odhlásí

Dosud zůstala přihlášená session v paměti až do restartu QGIS, takže
se po „Odebrat uložené přihlašovací údaje“ dál stahovalo jako přihlášený.
Nově se session odhlásí na serveru (GET /api/user/logout) a zahodí;
když server neodpoví, zahodí se aspoň lokálně.

- amcr_tools: logout_from_api; amcr_dialog: volání v _forget_credentials
- smoke test: odhlášení, chyba sítě, bez session
- README, changelog v2.2.0, OpenSpec (požadavek + úkoly 2b; 3.3 ověřeno)

Připraveno s pomocí AI (Claude), ručně zkontrolováno.

* chore: archivovat OpenSpec změnu fix-session-expiry-islogged

Všechny úkoly hotové (2b.2 – odhlášení – ověřeno ručně v QGIS),
archivováno s --skip-specs (stupeň change-tracked, bez openspec/specs/).

Připraveno s pomocí AI (Claude), ručně zkontrolováno.
2026-10-02 12:37:31 +02:00
david-spacil 3d58168ac9 Merge main do version/v2.2.0
Konflikt jen v amcr_viewer/metadata.txt: ponechána version=2.2.0, do changelogu doplněny položky v2.1.4 a v2.1.3 z main.
2026-10-02 11:22:37 +02:00
david-spacil dfb3a9ef9b chore: odstranit resources.py a konfiguraci flake8 z balíčku (v2.1.4) (#71)
* chore: odstranit resources.py a konfiguraci flake8 z balíčku

Scanner na plugins.qgis.org označil plugin jako „Validated
(configured)“ kvůli amcr_viewer/.flake8. Ten potlačoval jen stylové
nálezy (E302, E305, E501) ve vygenerovaném resources.py, který se
nikde neimportuje – ikony se načítají přímo z PNG. resources.py
repozitář pluginů nevyžaduje (validator.py v QGIS-Django, PyQGIS
cookbook: „optional“).

- Smazán amcr_viewer/resources.py a amcr_viewer/.flake8.
- CI: flake8 běží s --isolated (výchozí pravidla jako scanner);
  kontrola ZIPu místo .flake8 hlídá povinný LICENSE.
- check_sources.py: žádné skryté soubory v balíčku, ani config
  soubory scanneru.
- pyproject.toml, README.md, AGENTS.md: odstraněny odkazy na oba
  soubory, popsán postup bez konfigurace.

Ověřeno: check_sources, flake8 7.3.0, ruff 0.16.5, bandit 1.9.4,
detect-secrets bez nálezů; pyqgis4-checker čistý; smoke test v QGIS
3.44.15 (Qt 5) i 4.2.3 (Qt 6); ZIP bez skrytých souborů.

Připraveno s pomocí AI (Claude).

* Verze 2.1.4

Povýšena verze v metadata.txt (+ changelog) a CITATION.cff po odstranění resources.py a konfigurace flake8.

Připraveno s pomocí AI (Claude).
2026-10-01 18:45:48 +02:00
david-spacil f8d938e353 fix: hesláře osob se po aktualizaci tiše vyprázdní (#68)
Digiarchiv v4.1.0 (Solr 10, json.nl=arrarr) vrací položky facet jako
dvojice ["hodnota", počet] místo objektů {"name": ...}. fetch_set četl
r["name"], spadl na TypeError a hesláře vedoucích a nálezců se uložily
prázdné.

- _facet_name() přijímá oba formáty facet (starý i nový).
- Selhání setu vrací prázdný seznam i při přerušeném stránkování, ať
  se neuloží jen část hesláře.
- download_heslare() ponechá u selhaného nebo prázdného setu předchozí
  hodnoty z heslar.csv a vrátí seznam selhaných setů.
- Dialog při částečném selhání zobrazí varování místo „Hotovo“.
- Verze 2.1.3 + changelog.

Ověřeno proti produkčnímu API: vedoucí 2497, nálezci 426, ostatní
hesláře beze změny; simulované selhání ponechá předchozí hodnoty.

Refs #67, #66
Připraveno s pomocí AI (Claude).
2026-10-01 15:33:41 +02:00
david-spacil 236907b9df metadata update 2026-09-02 17:16:54 +02:00
david-spacilandClaude Opus 5 62d9ebd6f0 feat: verze 2.2.0 — sjednocení popisků filtrů (#64)
* fix: sjednocení popisků filtrů ve filtračním dialogu

Dvě nekonzistence, které vyplavalo psaní dokumentace:

- "Lokalita - stav dochování" mělo jako jediné ze čtyř polí lokality
  obyčejný spojovník místo pomlčky.
- Filtr "Specifikace nálezu" plní sloupec, jehož alias je "Materiál",
  takže uživatel filtroval podle jednoho názvu a výsledek dostal pod
  jiným. Sjednoceno na "Materiál". Klíč v cache (specifikace)
  i parametr API (f_specifikace) zůstávají beze změny, mění se jen
  popisek v UI.

Matice filtrů v README je srovnaná ve stejném commitu, aby se
dokumentace a kód nikdy nerozešly.

Ověřeno výpisem group boxů z dialogu v headless QGIS 4.2.2.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01GptqiE8kzeUUsx6h9apwiP

* chore: verze 2.2.0 a changelog

Odkaz "Plný seznam změn" mířil na tag v2.1.1, přestože changelog
pokračuje dál; přesměrován na přehled releasů. Vratná změna.

CITATION.cff zůstává na v2.1.2 — popisuje poslední vydanou verzi
a povyšuje se až při vydání, kdy z něj Zenodo generuje záznam.

Datum 2026-09-02 je datum přípravy; při vydání ho může být potřeba
posunout.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01GptqiE8kzeUUsx6h9apwiP

---------

Co-authored-by: Claude Opus 5 <noreply@anthropic.com>
2026-09-02 17:16:54 +02:00
david-spacil b708930ca2 update metadata 2026-09-01 23:21:04 +02:00
david-spacil 2218719f98 metadata update 2026-09-01 22:31:28 +02:00
david-spacil 0af4a0cd92 chore: verze 2.1.0 a changelog
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).
2026-09-01 21:59:34 +02:00
david-spacil bc799452a3 Update metadata.txt 2026-06-13 12:16:27 +02:00
Claude 64ec1ea7fd Metadata, CI a dokumentace
- metadata.txt: icon ukazoval na neexistující download.png – plugin se
  ve správci zásuvných modulů zobrazoval bez ikony; nastaveno na akce.png.
- Workflow: actions/checkout v2→v4 (v2 je deprecated, Node 12)
  a softprops/action-gh-release v1→v2.
- README: poznámka, že knihovna requests nemusí být na Linuxu součástí
  systémové instalace QGIS.
2026-06-12 10:50:04 +02:00
david-spacil d417a78b85 Update metadata.txt 2026-06-10 13:40:14 +02:00
david-spacil b2001c625c Hotfix: oprava minimální podporované QGIS verze (3.4→3.44) (#48) 2026-06-10 13:31:55 +02:00
david-spacil 89e596802f Update metadata.txt 2026-06-05 13:44:36 +02:00
david-spacil 9a935261e6 Update metadata.txt 2026-06-03 13:42:46 +02:00
David Spáčil c8d42e2459 metadata.txt version update 2026-05-19 15:42:25 +02:00
david-spacil a6ebbce4cf Update metadata.txt 2026-05-19 15:25:38 +02:00
david-spacil c0d054d22a Update metadata.txt
v2.0.0-alpha.1
experimental flag true
2026-05-19 13:12:32 +02:00
david-spacil 11f44d025b Update metadata.txt 2026-03-19 09:38:32 +01:00
david-spacil 3be7832b40 Update metadata.txt 2026-03-16 14:30:12 +01:00
david-spacil 9ec866f1d2 Update metadata.txt 2026-03-13 10:56:09 +01:00
david-spacil 5a951edec7 Fixed compatibility issues with QGIS 4 (#24)
* used PyQt6 compatible objects

* metadata update
2026-03-13 10:48:12 +01:00
david-spacil 8825ac3272 Update metadata.txt 2026-03-11 16:35:39 +01:00
david-spacil 158f623574 metadata update 2026-03-10 20:38:37 +01:00
david-spacil 36835c825d changed push messages to be more general
updated Readme
2026-03-10 11:11:54 +01:00
david-spacil 9559712af9 update metadata.txt 2026-03-09 13:57:54 +01:00
David Spáčil bcde600433 Update metadata.txt 2026-02-19 07:22:23 +01:00
David Spáčil e61759064e update version 2026-02-17 07:40:04 +01:00
David Spáčil 53ec54cdf7 Update metadata.txt 2026-02-11 19:59:38 +01:00
David Spáčil 8066c61ca4 Removed unused files 2026-02-11 15:59:01 +01:00
David Spáčil 69b6edce96 Fixed structure 2026-02-11 14:45:27 +01:00