From de782defc47e9b362e24b5d1cdc34fd196c38005 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Michal=20Mal=C3=BD?= <michal.maly@ibt.cas.cz>
Date: Tue, 11 Oct 2022 17:51:11 +0200
Subject: [PATCH] ReDNATCO plugin stage 26

---
 src/apps/rednatco/api.ts    | 10 ++++++++--
 src/apps/rednatco/index.tsx |  2 ++
 src/apps/rednatco/viewer.ts | 14 +++++++-------
 3 files changed, 17 insertions(+), 9 deletions(-)

diff --git a/src/apps/rednatco/api.ts b/src/apps/rednatco/api.ts
index e4b91fb28..1010c7098 100644
--- a/src/apps/rednatco/api.ts
+++ b/src/apps/rednatco/api.ts
@@ -93,21 +93,27 @@ export namespace ReDNATCOMspApi {
         Events.StructureLoaded;
 
     export namespace Queries {
-        export type Type = 'current-filter'|'selected-step';
+        export type Type = 'current-filter'|'current-model-number'|'selected-step';
 
         export type CurrentFilter = { type: 'current-filter', filter: Filters.All }
         export function CurrentFilter(filter: Filters.All): CurrentFilter {
             return { type: 'current-filter', filter };
         }
 
+        export type CurrentModelNumber = { type: 'current-model-number', num: number };
+        export function CurrentModelNumber(num: number): CurrentModelNumber {
+            return { type: 'current-model-number', num };
+        }
+
         export type SelectedStep = { type: 'selected-step', name: string, rmsd?: number }
         export function SelectedStep(name: string, rmsd?: number): SelectedStep {
             return { type: 'selected-step', name, rmsd };
         }
     }
-    export type Response = Queries.CurrentFilter|Queries.SelectedStep;
+    export type Response = Queries.CurrentFilter|Queries.CurrentModelNumber|Queries.SelectedStep;
     export type ResponseTypes = {
         'current-filter': Queries.CurrentFilter,
+        'current-model-number': Queries.CurrentModelNumber,
         'selected-step': Queries.SelectedStep,
     }
 
diff --git a/src/apps/rednatco/index.tsx b/src/apps/rednatco/index.tsx
index 79264bae8..37342bbd6 100644
--- a/src/apps/rednatco/index.tsx
+++ b/src/apps/rednatco/index.tsx
@@ -151,6 +151,8 @@ export class ReDNATCOMsp extends React.Component<ReDNATCOMsp.Props, State> {
     apiQuery(type: Api.Queries.Type): Api.Response {
         if (type === 'current-filter') {
             return Api.Queries.CurrentFilter(this.currentFilter);
+        } else if (type === 'current-model-number') {
+            return Api.Queries.CurrentModelNumber(this.viewer!.currentModelNumber());
         } else if (type === 'selected-step') {
             if (this.selectedStep)
                 return Api.Queries.SelectedStep(this.selectedStep.name, this.selectedStep.rmsd);
diff --git a/src/apps/rednatco/viewer.ts b/src/apps/rednatco/viewer.ts
index 7f9cd8621..c54638ddf 100644
--- a/src/apps/rednatco/viewer.ts
+++ b/src/apps/rednatco/viewer.ts
@@ -263,13 +263,6 @@ export class ReDNATCOMspViewer {
         this.app = app;
     }
 
-    private currentModelNumber() {
-        const model = this.plugin.state.data.cells.get(IDs.ID('model', '', BaseRef))?.obj;
-        if (!model)
-            return -1;
-        return (model as StateObject<Model>).data.modelNum;
-    }
-
     private focusOnLoci(loci: StructureElement.Loci) {
         if (!this.plugin.canvas3d)
             return;
@@ -668,6 +661,13 @@ export class ReDNATCOMspViewer {
         await b.commit();
     }
 
+    currentModelNumber() {
+        const model = this.plugin.state.data.cells.get(IDs.ID('model', '', BaseRef))?.obj;
+        if (!model)
+            return -1;
+        return (model as StateObject<Model>).data.modelNum;
+    }
+
     focusOnSelectedStep() {
         // Focus camera on the selection
         const sel = this.plugin.state.data.cells.get(IDs.ID('superposition', '', NtCSupSel));
-- 
GitLab