diff --git a/src/apps/rednatco/api.ts b/src/apps/rednatco/api.ts index e4b91fb283041142610c3e4bfafbd09f1f93b52d..1010c70981aa32435d3a3529e7fcb3d70dc1bec5 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 79264bae85994a445bbd5e33378c323910b58d90..37342bbd618a181a8d252cc4ffbe06a72f5a391b 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 7f9cd8621f1b01ccf88dae371e28aa2a199b0f02..c54638ddf2b211eeefe05d8319605019079eff95 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));