UNPKG

@rcsb/rcsb-saguaro-3d

Version:
120 lines (119 loc) 7.7 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.MsaPfvManagerFactory = void 0; const tslib_1 = require("tslib"); const PfvManagerFactoryInterface_1 = require("../PfvManagerFactoryInterface"); const MsaRowTitleComponent_1 = require("./MsaPfvComponents/MsaRowTitleComponent"); const MsaRowMarkComponent_1 = require("./MsaPfvComponents/MsaRowMarkComponent"); const MsaUiSortComponent_1 = require("./MsaPfvComponents/MsaUiSortComponent"); const MsaUiSequenceAlignmentDownload_1 = require("./MsaPfvComponents/MsaUiSequenceAlignmentDownload"); const MsaUiStructureDownload_1 = require("./MsaPfvComponents/MsaUiStructureDownload"); const RcsbIdParser_1 = require("../../../../Utils/RcsbIdParser"); class MsaPfvManagerFactory { getPfvManager(config) { return new MsaPfvManager(config); } } exports.MsaPfvManagerFactory = MsaPfvManagerFactory; class MsaPfvManager extends PfvManagerFactoryInterface_1.AbstractPfvManager { constructor(config) { super(config); this.config = config; } create() { return tslib_1.__awaiter(this, void 0, void 0, function* () { var _a, _b, _c, _d; const args = [this.rcsbFvDivId, ...this.config.pfvArgs, Object.assign(Object.assign({}, this.additionalConfig), { boardConfig: this.boardConfigContainer.get(), externalTrackBuilder: { filterAlignments: (data) => { var _a, _b, _c, _d; const visAlignment = (_c = (_b = (_a = this.config.alignmentResponseContainer) === null || _a === void 0 ? void 0 : _a.get()) === null || _b === void 0 ? void 0 : _b.target_alignments) === null || _c === void 0 ? void 0 : _c.filter(ta => { var _a; return (ta === null || ta === void 0 ? void 0 : ta.target_id) && ((_a = this.config.stateManager.assemblyModelSate.getMap()) === null || _a === void 0 ? void 0 : _a.has(ta.target_id)); }); const otherAlignment = (_d = data.alignments.target_alignments) === null || _d === void 0 ? void 0 : _d.filter(ta => { var _a; return (ta === null || ta === void 0 ? void 0 : ta.target_id) && !((_a = this.config.stateManager.assemblyModelSate.getMap()) === null || _a === void 0 ? void 0 : _a.has(ta.target_id)); }); return new Promise(resolve => resolve(Object.assign(Object.assign({}, data.alignments), { target_alignments: (visAlignment !== null && visAlignment !== void 0 ? visAlignment : []).concat(otherAlignment !== null && otherAlignment !== void 0 ? otherAlignment : []) }))); } }, trackConfigModifier: { alignment: (alignmentContext, targetAlignment, alignmentResponse, alignmentIndex) => new Promise((resolve) => { var _a, _b; const alignmentMod = { rowMark: { externalRowMark: { component: MsaRowMarkComponent_1.MsaRowMarkComponent, props: { rowRef: (0, RcsbIdParser_1.parseEntityOrInstance)(targetAlignment.target_id), stateManager: this.stateManager } }, clickCallback: () => this.loadAlignment(alignmentContext, targetAlignment) }, externalRowTitle: { rowTitleComponent: MsaRowTitleComponent_1.MsaRowTitleComponent, rowTitleAdditionalProps: { alignmentContext, targetAlignment, stateManager: this.stateManager, titleClick: () => this.loadAlignment(alignmentContext, targetAlignment) } }, metadata: { targetId: targetAlignment.target_id } }; if ((_b = (_a = this.additionalConfig) === null || _a === void 0 ? void 0 : _a.trackConfigModifier) === null || _b === void 0 ? void 0 : _b.alignment) this.additionalConfig.trackConfigModifier.alignment(alignmentContext, targetAlignment, alignmentResponse, alignmentIndex).then((rc) => { resolve(Object.assign(Object.assign({}, rc), alignmentMod)); }); else resolve(alignmentMod); }) }, beforeChangeCallback: () => { this.config.pfvChangeCallback({ context: { id: this.config.id } }); }, externalUiComponents: ((_b = (_a = this.additionalConfig) === null || _a === void 0 ? void 0 : _a.externalUiComponents) === null || _b === void 0 ? void 0 : _b.replace) ? { replace: (_d = (_c = this.additionalConfig) === null || _c === void 0 ? void 0 : _c.externalUiComponents) === null || _d === void 0 ? void 0 : _d.replace } : { add: [{ component: MsaUiSortComponent_1.MsaUiSortComponent, props: { rcsbFvContainer: this.rcsbFvContainer, stateManager: this.stateManager } }, { component: MsaUiSequenceAlignmentDownload_1.MsaUiSequenceAlignmentDownload, props: { rcsbFvContainer: this.rcsbFvContainer, stateManager: this.stateManager } }, { component: MsaUiStructureDownload_1.MsaUiStructureDownload, props: { stateManager: this.stateManager } }] } })]; this.module = yield this.config.buildMsaAlignmentFv(...args); this.rcsbFvContainer.set(this.module); yield this.readyStateLoad(); return this.module; }); } readyStateLoad() { return tslib_1.__awaiter(this, void 0, void 0, function* () { var _a; const alignments = yield this.rcsbFvContainer.get().getAlignmentResponse(); if (alignments.target_alignments && alignments.target_alignments.length > 0 && typeof ((_a = alignments.target_alignments[0]) === null || _a === void 0 ? void 0 : _a.target_id) === "string") { this.loadAlignment({ queryId: this.config.id }, alignments.target_alignments[0], "auto"); } }); } loadAlignment(alignmentContext, targetAlignment, who = "user") { if (typeof targetAlignment.target_id === "string") { this.stateManager.next({ type: "model-change", view: "1d-view", data: { pdb: (0, RcsbIdParser_1.parseEntityOrInstance)(targetAlignment.target_id), targetAlignment, who } }); } } }