RcsbFv3DAssembly.tsx 4.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101
  1. import {RcsbFv3DAbstract} from "./RcsbFv3DAbstract";
  2. import {
  3. AssemblyTrajectoryParamsType
  4. } from "../RcsbFvStructure/StructureViewers/MolstarViewer/TrajectoryPresetProvider/AssemblyTrajectoryPresetProvider";
  5. import {RcsbFvAdditionalConfig} from "@rcsb/rcsb-saguaro-app/lib/RcsbFvWeb/RcsbFvModule/RcsbFvModuleInterface";
  6. import {InstanceSequenceConfig} from "@rcsb/rcsb-saguaro-app/lib/RcsbFvWeb/RcsbFvBuilder/RcsbFvInstanceBuilder";
  7. import {OperatorInfo} from "../RcsbFvStructure/StructureViewerInterface";
  8. import {
  9. LoadMolstarInterface,
  10. LoadMolstarReturnType
  11. } from "../RcsbFvStructure/StructureViewers/MolstarViewer/MolstarActionManager";
  12. import {ViewerProps} from "@rcsb/rcsb-molstar/build/src/viewer";
  13. import {StructureViewer} from "../RcsbFvStructure/StructureViewers/StructureViewer";
  14. import {MolstarManagerFactory} from "../RcsbFvStructure/StructureViewers/MolstarViewer/MolstarManagerFactory";
  15. import {RcsbFv3DCssConfig} from "./RcsbFv3DComponent";
  16. import uniqid from "uniqid";
  17. import {RcsbFvStructure} from "../RcsbFvStructure/RcsbFvStructure";
  18. import {
  19. AssemblyPfvManagerFactory
  20. } from "../RcsbFvSequence/SequenceViews/RcsbView/PfvManagerFactoryImplementation/AssemblyPfvManagerFactory";
  21. import {
  22. AssemblyCallbackManagerFactory
  23. } from "../RcsbFvSequence/SequenceViews/RcsbView/CallbackManagerFactoryImplementation/AssemblyCallbackManager";
  24. import {AssemblyBehaviourObserver} from "../RcsbFvStructure/StructureViewerBehaviour/AssemblyBehaviour";
  25. import {HelpLinkComponent} from "../RcsbFvSequence/SequenceViews/RcsbView/Components/HelpLinkComponent";
  26. import {MolstarTools} from "../RcsbFvStructure/StructureViewers/MolstarViewer/MolstarUtils/MolstarTools";
  27. import getModelIdFromTrajectory = MolstarTools.getModelIdFromTrajectory;
  28. import {
  29. MolstarAssemblyLoader
  30. } from "../RcsbFvStructure/StructureViewers/MolstarViewer/MolstarUtils/MolstarAssemblyLoader";
  31. type RcsbFv3DAssemblyAdditionalConfig = RcsbFvAdditionalConfig & {operatorChangeCallback?:(operatorInfo: OperatorInfo)=>void};
  32. export interface RcsbFv3DAssemblyInterface {
  33. elementId?: string;
  34. config: {
  35. entryId: string;
  36. assemblyId?: string;
  37. asymId?: string;
  38. title?: string;
  39. subtitle?: string;
  40. };
  41. additionalConfig?: RcsbFv3DAssemblyAdditionalConfig;
  42. instanceSequenceConfig?: InstanceSequenceConfig;
  43. useOperatorsFlag?:boolean;
  44. molstarProps?: Partial<ViewerProps>;
  45. cssConfig?: RcsbFv3DCssConfig;
  46. }
  47. type AssemblyLoadMolstarType = LoadMolstarInterface<AssemblyTrajectoryParamsType,LoadMolstarReturnType>;
  48. export class RcsbFv3DAssembly extends RcsbFv3DAbstract<
  49. {instanceSequenceConfig?:InstanceSequenceConfig},
  50. AssemblyLoadMolstarType,
  51. LoadMolstarReturnType,
  52. {viewerElement:string|HTMLElement,viewerProps:Partial<ViewerProps>},
  53. undefined
  54. >{
  55. constructor(params: RcsbFv3DAssemblyInterface) {
  56. const elementId: string = params.elementId ?? uniqid("RcsbFv3D_");
  57. super({
  58. elementId: params.elementId ?? elementId,
  59. sequenceConfig:{
  60. title: params.config.title,
  61. subtitle: params.config.subtitle,
  62. config:{
  63. rcsbId:params.config.entryId,
  64. additionalConfig:params.additionalConfig,
  65. useOperatorsFlag:params.useOperatorsFlag,
  66. pfvParams:{
  67. instanceSequenceConfig:params.instanceSequenceConfig
  68. },
  69. pfvManagerFactory: new AssemblyPfvManagerFactory(),
  70. callbackManagerFactory: new AssemblyCallbackManagerFactory(),
  71. additionalContent:(props)=>(
  72. <HelpLinkComponent {...props} helpHref={"/docs/sequence-viewers/sequence-annotations-in-3d"}/>
  73. )
  74. }
  75. },
  76. structureConfig: {
  77. structureViewerConfig: {
  78. viewerElement: RcsbFvStructure.componentId(elementId),
  79. viewerProps:params.molstarProps ?? {}
  80. }
  81. },
  82. structureViewer: new StructureViewer<
  83. AssemblyLoadMolstarType,
  84. LoadMolstarReturnType,
  85. {viewerElement:string|HTMLElement,viewerProps:Partial<ViewerProps>}
  86. >(new MolstarManagerFactory(getModelIdFromTrajectory)),
  87. structureViewerBehaviourObserver: new AssemblyBehaviourObserver<AssemblyLoadMolstarType,LoadMolstarReturnType>(
  88. new MolstarAssemblyLoader({
  89. entryId: params.config.entryId,
  90. assemblyId: typeof (params.config.assemblyId) === "string" && params.config.assemblyId?.length > 0 ? params.config.assemblyId : '1',
  91. asymId: params.config.asymId
  92. })
  93. ),
  94. cssConfig: params.cssConfig
  95. });
  96. }
  97. }