From 6772a99ead89fe6161e9f4782effc9ea41d10f03 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?David=20Sp=C3=A1=C4=8Dil?= Date: Sun, 28 Jun 2026 09:53:39 +0200 Subject: [PATCH] =?UTF-8?q?feature/projektov=C3=A9=20akce:=20filtrov=C3=A1?= =?UTF-8?q?n=C3=AD=20a=20sloupec=20Projekt=20v=20akc=C3=ADch=20(#53)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * 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) --- amcr_viewer/amcr_dialog.py | 4 ++++ amcr_viewer/amcr_tools.py | 19 ++++++++++++++++++- 2 files changed, 22 insertions(+), 1 deletion(-) diff --git a/amcr_viewer/amcr_dialog.py b/amcr_viewer/amcr_dialog.py index f109f65..17b7cb2 100644 --- a/amcr_viewer/amcr_dialog.py +++ b/amcr_viewer/amcr_dialog.py @@ -169,6 +169,8 @@ class AmcrFilterDialog(QDialog): if self.typ_dat == "akce": self.chk_posevidence = QCheckBox("Pouze pozitivní zjištění") layout.addWidget(self.chk_posevidence) + self.chk_proj_akce = QCheckBox("Pouze projektové akce") + layout.addWidget(self.chk_proj_akce) layout.addSpacing(10) @@ -453,6 +455,8 @@ class AmcrFilterDialog(QDialog): if self.typ_dat == "akce": if self.chk_posevidence.isChecked(): filters['posevidence'] = 'true' + if self.chk_proj_akce.isChecked(): + filters['proj_akce'] = 'true' if self.selection_cache['organizace']: filters['f_organizace'] = self.selection_cache['organizace'] if self.selection_cache['typ_akce']: diff --git a/amcr_viewer/amcr_tools.py b/amcr_viewer/amcr_tools.py index e9a22ea..53a380a 100644 --- a/amcr_viewer/amcr_tools.py +++ b/amcr_viewer/amcr_tools.py @@ -317,6 +317,12 @@ def load_amcr_data(canvas, bb, filters=None, else False ) + only_projektove_akce = ( + filters.get('proj_akce') == 'true' + if filters + else False + ) + # Check whether we should filter results based on component filters filter_areal = "f_areal" in filters if filters else False filter_datace = "f_obdobi" in filters if filters else False @@ -439,6 +445,9 @@ def load_amcr_data(canvas, bb, filters=None, if not piani: continue + if only_projektove_akce and not doc.get("akce_projekt", False): + continue + actions_with_geom += 1 # Extract protected fields ('or {}' – key may hold None) @@ -515,6 +524,11 @@ def load_amcr_data(canvas, bb, filters=None, if doc.get('akce_je_nz') is True else "Ne" ), + "projekt": g( + doc, + 'akce_projekt', + "" + ), }) elif typ_dat == "lokalita": @@ -741,6 +755,7 @@ def load_amcr_data(canvas, bb, filters=None, QgsField("vedlejsi_typ", QMetaType.Type.QString), QgsField("zjisteni", QMetaType.Type.QString), QgsField("nahrazuje_NZ", QMetaType.Type.QString), + QgsField("projekt", QMetaType.Type.QString), ] elif typ_dat == "lokalita": cols += [ @@ -784,6 +799,7 @@ def load_amcr_data(canvas, bb, filters=None, "komponenta": "Komponenta", "komponenta_areal": "Areál", "komponenta_obdobi": "Období", + "projekt": "Projekt", } if komponenty == "true": @@ -917,7 +933,8 @@ def load_amcr_data(canvas, bb, filters=None, meta['akce_hlavni_typ'], meta['akce_vedlejsi_typ'], meta['dj_negativni'], - meta['akce_je_nz'] + meta['akce_je_nz'], + meta['projekt'], ]) else: atributy.extend([