From 3dda801cac360441ba8ad24bf6d40fae97765c09 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Michal=20Mal=C3=BD?= <michal.maly@ibt.cas.cz>
Date: Mon, 10 Oct 2022 15:09:03 +0200
Subject: [PATCH] ReDNATCO plugin stage 25

---
 src/apps/rednatco/viewer.ts | 60 +++++++++++++++++++++----------------
 1 file changed, 34 insertions(+), 26 deletions(-)

diff --git a/src/apps/rednatco/viewer.ts b/src/apps/rednatco/viewer.ts
index a2fc2f7e8..7f9cd8621 100644
--- a/src/apps/rednatco/viewer.ts
+++ b/src/apps/rednatco/viewer.ts
@@ -967,32 +967,40 @@ export class ReDNATCOMspViewer {
     }
 
     async actionApplyFilter(filter: Filters.All) {
-        await this.plugin.state.data.build()
-            .to(IDs.ID('structure', 'nucleic', BaseRef))
-            .update(
-                StateTransforms.Model.StructureSelectionFromExpression,
-                old => ({
-                    ...old,
-                    expression: Filtering.toExpression(filter)
-                })
-            )
-            .to(IDs.ID('structure', 'protein', BaseRef))
-            .update(
-                StateTransforms.Model.StructureSelectionFromExpression,
-                old => ({
-                    ...old,
-                    expression: Filtering.toExpression(filter)
-                })
-            )
-            .to(IDs.ID('structure', 'protein', BaseRef))
-            .update(
-                StateTransforms.Model.StructureSelectionFromExpression,
-                old => ({
-                    ...old,
-                    expression: Filtering.toExpression(filter)
-                })
-            )
-            .commit();
+        const b = this.plugin.state.data.build();
+        if (this.has('structure', 'nucleic', BaseRef)) {
+            b.to(IDs.ID('structure', 'nucleic', BaseRef))
+                .update(
+                    StateTransforms.Model.StructureSelectionFromExpression,
+                    old => ({
+                        ...old,
+                        expression: Filtering.toExpression(filter)
+                    })
+                );
+        }
+
+        if (this.has('structure', 'protein', BaseRef)) {
+            b.to(IDs.ID('structure', 'protein', BaseRef))
+                .update(
+                    StateTransforms.Model.StructureSelectionFromExpression,
+                    old => ({
+                        ...old,
+                        expression: Filtering.toExpression(filter)
+                    })
+                );
+        }
+
+        if (this.has('structure', 'water', BaseRef)) {
+            b.to(IDs.ID('structure', 'water', BaseRef))
+                .update(
+                    StateTransforms.Model.StructureSelectionFromExpression,
+                    old => ({
+                        ...old,
+                        expression: Filtering.toExpression(filter)
+                    })
+                );
+        }
+        await b.commit();
 
         return true;
     }
-- 
GitLab