PfvManagerFactoryInterface.ts 2.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657
  1. import {DataContainer} from "../../../Utils/DataContainer";
  2. import {
  3. RcsbFvAdditionalConfig,
  4. RcsbFvModulePublicInterface
  5. } from "@rcsb/rcsb-saguaro-app/build/dist/RcsbFvWeb/RcsbFvModule/RcsbFvModuleInterface";
  6. import {
  7. OperatorInfo,
  8. ViewerCallbackManagerInterface, ViewerActionManagerInterface
  9. } from "../../../RcsbFvStructure/StructureViewerInterface";
  10. import {RcsbFvBoardConfigInterface} from "@rcsb/rcsb-saguaro";
  11. import {RcsbFvStateManager} from "../../../RcsbFvState/RcsbFvStateManager";
  12. export interface PfvManagerFactoryConfigInterface<R,U> {
  13. rcsbFvDivId: string;
  14. rcsbFvContainer: DataContainer<RcsbFvModulePublicInterface>;
  15. stateManager: RcsbFvStateManager;
  16. structureViewer: ViewerCallbackManagerInterface & ViewerActionManagerInterface <R>;
  17. boardConfigContainer: DataContainer<Partial<RcsbFvBoardConfigInterface>>;
  18. pfvChangeCallback(context: U): Promise<void>;
  19. additionalConfig: RcsbFvAdditionalConfig & {operatorChangeCallback?:(operatorInfo: OperatorInfo)=>void} | undefined;
  20. }
  21. export interface PfvManagerFactoryInterface<T,R,U> {
  22. getPfvManager(config:T & PfvManagerFactoryConfigInterface<R,U>): PfvManagerInterface;
  23. }
  24. export interface BuildPfvInterface {
  25. defaultAuthId?: string;
  26. defaultOperatorName?:string;
  27. }
  28. export interface PfvManagerInterface {
  29. create(config?: BuildPfvInterface): Promise<RcsbFvModulePublicInterface | undefined>;
  30. }
  31. export abstract class AbstractPfvManager<T,R,U> implements PfvManagerInterface {
  32. protected readonly rcsbFvDivId: string;
  33. protected readonly rcsbFvContainer: DataContainer<RcsbFvModulePublicInterface>;
  34. protected readonly stateManager: RcsbFvStateManager;
  35. protected readonly structureViewer: ViewerCallbackManagerInterface & ViewerActionManagerInterface <R>;
  36. protected readonly boardConfigContainer: DataContainer<Partial<RcsbFvBoardConfigInterface>>;
  37. protected readonly pfvChangeCallback: (context: U)=>Promise<void>;
  38. protected readonly additionalConfig: RcsbFvAdditionalConfig & {operatorChangeCallback?:(operatorInfo: OperatorInfo)=>void} | undefined;
  39. protected constructor(config:T & PfvManagerFactoryConfigInterface<R,U>){
  40. this.rcsbFvDivId = config.rcsbFvDivId;
  41. this.rcsbFvContainer = config.rcsbFvContainer;
  42. this.stateManager = config.stateManager;
  43. this.structureViewer = config.structureViewer;
  44. this.additionalConfig = config.additionalConfig;
  45. this.boardConfigContainer = config.boardConfigContainer;
  46. this.pfvChangeCallback = config.pfvChangeCallback;
  47. }
  48. public abstract create(config?: BuildPfvInterface): Promise<RcsbFvModulePublicInterface | undefined>;
  49. }