diff --git a/src/apps/rednatco/viewer.ts b/src/apps/rednatco/viewer.ts index a2fc2f7e85b963052214dcac149214326818e19b..7f9cd8621f1b01ccf88dae371e28aa2a199b0f02 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; }