Quellcode durchsuchen

state manager tracks pfv

bioinsilico vor 2 Jahren
Ursprung
Commit
b0904cb7f6

+ 1 - 1
package.json

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

+ 3 - 1
src/RcsbFvSequence/SequenceViews/RcsbView/Components/HelpLinkComponent.tsx

@@ -1,9 +1,11 @@
 import * as React from "react";
 import {RcsbFvDOMConstants} from "../../../../RcsbFvConstants/RcsbFvConstants";
+import {RcsbFvStateInterface} from "../../../../RcsbFvState/RcsbFvStateInterface";
 
 interface HelpLinkInterface {
     unmount:(flag:boolean,callback:()=>void)=>void;
     helpHref:string;
+    stateManager: RcsbFvStateInterface;
 }
 
 export class HelpLinkComponent extends React.Component<HelpLinkInterface> {
@@ -22,7 +24,7 @@ export class HelpLinkComponent extends React.Component<HelpLinkInterface> {
                         Help
                     </a>
                     <a style={{textDecoration:"none", color: "#337ab7", cursor:"pointer"}} onClick={()=>{this.props.unmount(true, ()=>{
-                        window.history.back();
+                        window.location.href = document.referrer + '?asymId=' + this.props.stateManager.pfvContext.get()?.asymId
                     })}}>
                         Back
                     </a>

+ 6 - 1
src/RcsbFvSequence/SequenceViews/RcsbView/PfvManagerFactoryImplementation/AssemblyPfvManagerFactory.tsx

@@ -74,7 +74,12 @@ class AssemblyPfvManager extends AbstractPfvManager<{instanceSequenceConfig?: In
                 {
                     ...this.instanceSequenceConfig,
                     defaultValue: config.defaultAuthId ?? this.instanceSequenceConfig?.defaultValue,
-                    onChangeCallback: onChangeCallback.get(this.stateManager.assemblyModelSate.getString("entryId")),
+                    onChangeCallback: (context,module)=>{
+                        onChangeCallback.get(this.stateManager.assemblyModelSate.getString("entryId"))
+                        const entryMap:[string, {entryId: string, assemblyId: string, chains: ChainInfo[]}] | undefined = Array.from(this.stateManager.assemblyModelSate.entries()).find((e)=>(e[1].entryId === context.entryId));
+                        const operator: OperatorInfo|undefined = entryMap && entryMap[0] ? getOperator(this.stateManager.assemblyModelSate.getMap().get(entryMap[0])!, config.defaultAuthId, operatorNameContainer.get()) : undefined;
+                        this.stateManager.pfvContext.set({...context, operator});
+                    },
                     beforeChangeCallback: (x: PolymerEntityInstanceInterface)=>{
                         this.stateManager.assemblyModelSate.set({entryId:x.entryId, labelAsymId: x.asymId});
                         const entryMap:[string, {entryId: string, assemblyId: string, chains: ChainInfo[]}] | undefined = Array.from(this.stateManager.assemblyModelSate.entries()).find((e)=>(e[1].entryId === x.entryId));

+ 1 - 1
src/RcsbFvState/AssemblyModelSate.ts

@@ -5,7 +5,7 @@ interface AssemblyModelStateInterface {
     entryId:string;
     assemblyId:string;
     labelAsymId:string;
-    operator: OperatorInfo
+    operator: OperatorInfo;
 }
 
 export class AssemblyModelSate {

+ 3 - 0
src/RcsbFvState/RcsbFvStateInterface.ts

@@ -7,6 +7,8 @@
 import {RcsbFvSelectorManager} from "./RcsbFvSelectorManager";
 import {AssemblyModelSate} from "./AssemblyModelSate";
 import {Subject, Subscription} from "rxjs";
+import {DataContainer} from "../Utils/DataContainer";
+import {OperatorInfo} from "../RcsbFvStructure/StructureViewerInterface";
 
 export type RcsbFvStateType<T="feature-click",D=undefined> = {
     type: "feature-click"|"selection-change"|"hover-change"|"model-change"|"representation-change"|"pfv-change"|T;
@@ -18,6 +20,7 @@ export interface RcsbFvStateInterface {
 
     readonly selectionState: RcsbFvSelectorManager;
     readonly assemblyModelSate: AssemblyModelSate;
+    readonly pfvContext: DataContainer<{entryId:string;asymId?:string;operator?:OperatorInfo;}>;
     readonly subject: Subject<RcsbFvStateType<any,any>>
 
     subscribe<T,D>(o:(state:RcsbFvStateType<T,D>)=>void): Subscription;

+ 3 - 1
src/RcsbFvState/RcsbFvStateManager.ts

@@ -7,12 +7,14 @@ import {RcsbFvStateInterface, RcsbFvStateType} from "./RcsbFvStateInterface";
 import {RcsbFvSelectorManager} from "./RcsbFvSelectorManager";
 import {AssemblyModelSate} from "./AssemblyModelSate";
 import {Subject, Subscription} from "rxjs";
+import {DataContainer} from "../Utils/DataContainer";
+import {OperatorInfo} from "../RcsbFvStructure/StructureViewerInterface";
 
 export class RcsbFvStateManager implements RcsbFvStateInterface {
 
     readonly assemblyModelSate: AssemblyModelSate = new AssemblyModelSate();
     readonly selectionState: RcsbFvSelectorManager = new RcsbFvSelectorManager();
-
+    readonly pfvContext: DataContainer<{entryId:string;asymId?:string;operator?:OperatorInfo;}> = new DataContainer<{entryId: string; asymId?: string; operator?: OperatorInfo}>();
     readonly subject: Subject<RcsbFvStateType<any,any>> = new Subject<RcsbFvStateType>();
 
     next<T,D>(state: RcsbFvStateType<T,D>): void {