@rcsb/rcsb-saguaro-3d
Version:
RCSB Molstar/Saguaro Web App
53 lines (52 loc) • 2.58 kB
JavaScript
;
/*
* Copyright (c) 2021 RCSB PDB and contributors, licensed under MIT, See LICENSE file for more info.
* @author Joan Segura Mora <joan.segura@rcsb.org>
*/
Object.defineProperty(exports, "__esModule", { value: true });
exports.MolstarAlignmentLoader = void 0;
const tslib_1 = require("tslib");
const MolstarActionManager_1 = require("../MolstarActionManager");
const AlignmentTrajectoryPresetProvider_1 = require("../TrajectoryPresetProvider/AlignmentTrajectoryPresetProvider");
const TagDelimiter_1 = require("@rcsb/rcsb-api-tools/lib/RcsbUtils/TagDelimiter");
const app_1 = require("@rcsb/rcsb-saguaro-app/lib/app");
class MolstarAlignmentLoader {
constructor(loadParamsProvider) {
this.structureMap = new Set();
this.loadParamsProvider = loadParamsProvider;
}
load(structureViewer, pdb, targetAlignment) {
return tslib_1.__awaiter(this, void 0, void 0, function* () {
var _a;
const structureId = `${pdb.entryId}${"entityId" in pdb ? TagDelimiter_1.TagDelimiter.entity : TagDelimiter_1.TagDelimiter.instance}${"entityId" in pdb ? pdb.entityId : pdb.instanceId}`;
if (!this.structureMap.has(structureId)) {
this.structureMap.add(structureId);
const loadParams = 'instanceId' in pdb ? (_a = this.loadParamsProvider) === null || _a === void 0 ? void 0 : _a.get(pdb) : undefined;
return loadParams ? yield structureViewer.load(loadParams) : yield structureViewer.load({
loadMethod: MolstarActionManager_1.LoadMethod.loadPdbId,
loadParams: {
id: structureId,
entryId: pdb.entryId,
reprProvider: AlignmentTrajectoryPresetProvider_1.AlignmentTrajectoryPresetProvider,
params: {
modelIndex: ((yield app_1.RcsbRequestContextManager.getEntryProperties(pdb.entryId))[0].representativeModel - 1),
pdb,
targetAlignment
}
}
});
}
else {
yield structureViewer.removeStructure({
loadMethod: MolstarActionManager_1.LoadMethod.loadPdbId,
loadParams: {
id: structureId
}
});
this.structureMap.delete(structureId);
return;
}
});
}
}
exports.MolstarAlignmentLoader = MolstarAlignmentLoader;