Quellcode durchsuchen

avoid loading more structures when user interaction

bioinsilico vor 2 Jahren
Ursprung
Commit
6c51bfb058

+ 1 - 1
package.json

@@ -1,6 +1,6 @@
 {
   "name": "@rcsb/rcsb-saguaro-3d",
-  "version": "2.4.0-data-provider.6",
+  "version": "2.4.0-data-provider.7",
   "description": "RCSB Molstar/Saguaro Web App",
   "main": "build/dist/app.js",
   "files": [

+ 5 - 3
src/RcsbFvSequence/SequenceViews/RcsbView/PfvManagerFactoryImplementation/MsaPfvManagerFactory.ts

@@ -45,6 +45,7 @@ export class MsaPfvManagerFactory<T extends any[]> implements PfvManagerFactoryI
 type AlignmentDataType = {
     pdb:{entryId:string;entityId:string;}|{entryId:string;instanceId:string;},
     targetAlignment: TargetAlignment;
+    who: "user"|"auto";
 };
 
 class MsaPfvManager<T extends any[]> extends AbstractPfvManager<{id:string},{context: {id:string} &  Partial<PolymerEntityInstanceInterface>;}>{
@@ -141,18 +142,19 @@ class MsaPfvManager<T extends any[]> extends AbstractPfvManager<{id:string},{con
     private async readyStateLoad(): Promise<void> {
         const alignments: AlignmentResponse = await this.rcsbFvContainer.get()!.getAlignmentResponse();
         if(alignments.target_alignment && alignments.target_alignment.length > 0 && typeof alignments.target_alignment[0]?.target_id === "string"){
-            this.loadAlignment({queryId:this.config.id}, alignments.target_alignment[0]);
+            this.loadAlignment({queryId:this.config.id}, alignments.target_alignment[0], "auto");
         }
     }
 
-    private loadAlignment(alignmentContext: AlignmentRequestContextType, targetAlignment: TargetAlignment):void {
+    private loadAlignment(alignmentContext: AlignmentRequestContextType, targetAlignment: TargetAlignment, who: "user"|"auto" = "user"):void {
         if(typeof targetAlignment.target_id === "string") {
             this.stateManager.next<"model-change",AlignmentDataType>({
                 type:"model-change",
                 view:"1d-view",
                 data:{
                     pdb:TagDelimiter.parseEntityOrInstance(targetAlignment.target_id),
-                    targetAlignment
+                    targetAlignment,
+                    who
                 }
             });
         }

+ 5 - 1
src/RcsbFvSequence/SequenceViews/RcsbView/RcsbViewBehaviour/AlignmentProviderBehaviour.ts

@@ -11,6 +11,7 @@ import {TargetAlignment} from "@rcsb/rcsb-api-tools/build/RcsbGraphQL/Types/Borr
 type AlignmentDataType = {
     pdb:{entryId:string;instanceId:string;},
     targetAlignment: TargetAlignment;
+    who: "user"|"auto";
 };
 
 export class AlignmentProviderBehaviour implements RcsbViewBehaviourInterface {
@@ -33,6 +34,8 @@ async function loadNextModel(data:AlignmentDataType, rcsbFvContainer: DataContai
     const alignments = await rcsbFvContainer.get()?.getAlignmentResponse();
     if(!alignments || !alignments.target_alignment)
         return;
+    if(data.who == "user")
+        return;
     const pdb = data.pdb;
     const targetAlignment = data.targetAlignment;
     const index = alignments.target_alignment.findIndex( ta=>ta?.target_id == `${pdb.entryId}${TagDelimiter.instance}${pdb.instanceId}`);
@@ -46,7 +49,8 @@ async function loadNextModel(data:AlignmentDataType, rcsbFvContainer: DataContai
         view:"1d-view",
         data:{
             pdb: TagDelimiter.parseInstance(targetId),
-            targetAlignment
+            targetAlignment,
+            who: "auto"
         }
     });
 }