UNPKG

@rcsb/rcsb-saguaro-app

Version:
164 lines (163 loc) 11 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.RcsbFvUniprotBuilder = void 0; const tslib_1 = require("tslib"); const RcsbFvUniprotEntity_1 = require("../RcsbFvModule/RcsbFvUniprotEntity"); const RcsbFvUniprotInstance_1 = require("../RcsbFvModule/RcsbFvUniprotInstance"); const RcsbFvUniprot_1 = require("../RcsbFvModule/RcsbFvUniprot"); const RcsbFvCoreBuilder_1 = require("./RcsbFvCoreBuilder"); const RcsbRequestContextManager_1 = require("../../RcsbRequest/RcsbRequestContextManager"); const RcsbFvUniprotAlignment_1 = require("../RcsbFvModule/RcsbFvUniprotAlignment"); const TagDelimiter_1 = require("@rcsb/rcsb-api-tools/lib/RcsbUtils/TagDelimiter"); const ALL = "ALL"; //TODO Find a better structure for change callbacks class RcsbFvUniprotBuilder { static buildUniprotMultipleEntitySequenceFv(elementFvId_1, elementSelectId_1, upAcc_1) { return tslib_1.__awaiter(this, arguments, void 0, function* (elementFvId, elementSelectId, upAcc, config = {}, additionalConfig) { return new Promise((resolve, reject) => tslib_1.__awaiter(this, void 0, void 0, function* () { let externalContext; if (typeof config.beforeChangeCallback === "function") externalContext = config.beforeChangeCallback({ upAcc }, undefined); const rcsbFvUniprot = yield RcsbFvUniprotBuilder.buildUniprotFv(elementFvId, upAcc, Object.assign(Object.assign({}, additionalConfig), { rcsbContext: Object.assign(Object.assign({}, additionalConfig === null || additionalConfig === void 0 ? void 0 : additionalConfig.rcsbContext), externalContext) })); if (typeof config.onChangeCallback === "function") config.onChangeCallback({ upAcc }, rcsbFvUniprot); resolve(rcsbFvUniprot); const targets = yield rcsbFvUniprot.getTargets(); RcsbFvCoreBuilder_1.RcsbFvCoreBuilder.buildSelectButton(elementFvId, elementSelectId, [ALL].concat(targets).map(entityId => { return { label: entityId === ALL ? entityId + " (" + targets.length + ")" : entityId, onChange: () => tslib_1.__awaiter(this, void 0, void 0, function* () { RcsbFvCoreBuilder_1.RcsbFvCoreBuilder.clearAdditionalSelectButton(elementFvId, elementSelectId); if (entityId === ALL) { let externalContext; if (typeof config.beforeChangeCallback === "function") externalContext = config.beforeChangeCallback({ upAcc }, rcsbFvUniprot); yield RcsbFvUniprotBuilder.buildUniprotFv(elementFvId, upAcc, Object.assign(Object.assign({}, additionalConfig), { rcsbContext: Object.assign(Object.assign({}, additionalConfig === null || additionalConfig === void 0 ? void 0 : additionalConfig.rcsbContext), externalContext) })); if (typeof config.onChangeCallback === "function") config.onChangeCallback({ upAcc }, rcsbFvUniprot); } else { const entryId = TagDelimiter_1.TagDelimiter.parseEntity(entityId).entryId; const entityInstanceTranslator = yield RcsbRequestContextManager_1.rcsbRequestCtxManager.getEntityToInstance(entryId); const result = entityInstanceTranslator.getData().filter(r => { return r.entityId === TagDelimiter_1.TagDelimiter.parseEntity(entityId).entityId; }); let externalContext; if (typeof config.beforeChangeCallback === "function") externalContext = config.beforeChangeCallback(Object.assign(Object.assign({}, result[0]), { upAcc }), rcsbFvUniprot); yield RcsbFvUniprotBuilder.buildUniprotEntityInstanceFv(elementFvId, upAcc, result[0].entryId + TagDelimiter_1.TagDelimiter.entity + result[0].entityId, result[0].entryId + TagDelimiter_1.TagDelimiter.instance + result[0].asymId, Object.assign(Object.assign({}, additionalConfig), { rcsbContext: Object.assign(Object.assign({}, additionalConfig === null || additionalConfig === void 0 ? void 0 : additionalConfig.rcsbContext), externalContext) })); if (typeof config.onChangeCallback === "function") config.onChangeCallback(Object.assign(Object.assign({}, result[0]), { upAcc }), rcsbFvUniprot); RcsbFvCoreBuilder_1.RcsbFvCoreBuilder.addSelectButton(elementFvId, elementSelectId, result.map(instance => { return { name: instance.taxNames.length > 0 ? instance.name + " - " + instance.taxNames.join(", ") : instance.name, label: (instance.authId === instance.asymId ? instance.authId : `${instance.asymId} [auth ${instance.authId}]`) + " - " + instance.name, shortLabel: (instance.authId === instance.asymId ? instance.authId : `${instance.asymId} [auth ${instance.authId}]`), onChange: () => tslib_1.__awaiter(this, void 0, void 0, function* () { let externalContext; if (typeof config.beforeChangeCallback === "function") externalContext = config.beforeChangeCallback(Object.assign(Object.assign({}, instance), { upAcc }), rcsbFvUniprot); yield RcsbFvUniprotBuilder.buildUniprotEntityInstanceFv(elementFvId, upAcc, instance.entryId + TagDelimiter_1.TagDelimiter.entity + instance.entityId, instance.entryId + TagDelimiter_1.TagDelimiter.instance + instance.asymId, Object.assign(Object.assign({}, additionalConfig), { rcsbContext: Object.assign(Object.assign({}, additionalConfig === null || additionalConfig === void 0 ? void 0 : additionalConfig.rcsbContext), externalContext) })); if (typeof config.onChangeCallback === "function") config.onChangeCallback(Object.assign(Object.assign({}, instance), { upAcc }), rcsbFvUniprot); }) }; }), { addTitle: true }); } }) }; })); })); }); } static buildUniprotFv(elementId, upAcc, additionalConfig) { return tslib_1.__awaiter(this, void 0, void 0, function* () { return new Promise((resolve, reject) => { try { RcsbFvCoreBuilder_1.RcsbFvCoreBuilder.createFv({ elementId: elementId, fvModuleI: RcsbFvUniprot_1.RcsbFvUniprot, config: { upAcc: upAcc, additionalConfig: Object.assign({ rcsbContext: { upAcc: upAcc } }, additionalConfig), resolve: resolve } }); } catch (e) { reject(e); } }); }); } static buildUniprotEntityFv(elementId, upAcc, entityId, additionalConfig) { return tslib_1.__awaiter(this, void 0, void 0, function* () { return new Promise((resolve, reject) => tslib_1.__awaiter(this, void 0, void 0, function* () { try { const entryId = TagDelimiter_1.TagDelimiter.parseEntity(entityId).entryId; yield RcsbFvCoreBuilder_1.RcsbFvCoreBuilder.getPolymerEntityInstanceMapAndBuildFv(elementId, entryId, RcsbFvUniprotEntity_1.RcsbFvUniprotEntity, { upAcc: upAcc, entityId: entityId, additionalConfig: Object.assign({ rcsbContext: Object.assign(Object.assign({}, TagDelimiter_1.TagDelimiter.parseEntity(entityId)), { upAcc: upAcc }) }, additionalConfig), resolve: resolve }); } catch (e) { reject(e); } })); }); } static buildUniprotEntityInstanceFv(elementId, upAcc, entityId, instanceId, additionalConfig) { return tslib_1.__awaiter(this, void 0, void 0, function* () { return new Promise((resolve, reject) => tslib_1.__awaiter(this, void 0, void 0, function* () { try { const entryId = TagDelimiter_1.TagDelimiter.parseEntity(entityId).entryId; yield RcsbFvCoreBuilder_1.RcsbFvCoreBuilder.getPolymerEntityInstanceMapAndBuildFv(elementId, entryId, RcsbFvUniprotInstance_1.RcsbFvUniprotInstance, { upAcc: upAcc, entityId: entityId, instanceId: instanceId, additionalConfig: Object.assign({ rcsbContext: Object.assign(Object.assign({}, TagDelimiter_1.TagDelimiter.parseEntity(entityId)), { asymId: instanceId, upAcc: upAcc }) }, additionalConfig), resolve: resolve }); } catch (e) { reject(e); } })); }); } static buildUniprotAlignmentFv(elementId, upAcc, additionalConfig) { return tslib_1.__awaiter(this, void 0, void 0, function* () { return new Promise((resolve, reject) => { try { RcsbFvCoreBuilder_1.RcsbFvCoreBuilder.createFv({ elementId: elementId, fvModuleI: RcsbFvUniprotAlignment_1.RcsbFvUniprotAlignment, config: { upAcc: upAcc, additionalConfig: Object.assign({ rcsbContext: { upAcc: upAcc } }, additionalConfig), resolve: resolve } }); } catch (e) { reject(e); } }); }); } } exports.RcsbFvUniprotBuilder = RcsbFvUniprotBuilder;