UNPKG

@rcsb/rcsb-saguaro-app

Version:
160 lines 10.4 kB
import { __awaiter } from "tslib"; import { RcsbFvUniprotEntity } from "../RcsbFvModule/RcsbFvUniprotEntity"; import { RcsbFvUniprotInstance } from "../RcsbFvModule/RcsbFvUniprotInstance"; import { RcsbFvUniprot } from "../RcsbFvModule/RcsbFvUniprot"; import { RcsbFvCoreBuilder } from "./RcsbFvCoreBuilder"; import { rcsbRequestCtxManager } from "../../RcsbRequest/RcsbRequestContextManager"; import { RcsbFvUniprotAlignment } from "../RcsbFvModule/RcsbFvUniprotAlignment"; import { TagDelimiter } from "@rcsb/rcsb-api-tools/lib/RcsbUtils/TagDelimiter"; const ALL = "ALL"; //TODO Find a better structure for change callbacks export class RcsbFvUniprotBuilder { static buildUniprotMultipleEntitySequenceFv(elementFvId_1, elementSelectId_1, upAcc_1) { return __awaiter(this, arguments, void 0, function* (elementFvId, elementSelectId, upAcc, config = {}, additionalConfig) { return new Promise((resolve, reject) => __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.buildSelectButton(elementFvId, elementSelectId, [ALL].concat(targets).map(entityId => { return { label: entityId === ALL ? entityId + " (" + targets.length + ")" : entityId, onChange: () => __awaiter(this, void 0, void 0, function* () { 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.parseEntity(entityId).entryId; const entityInstanceTranslator = yield rcsbRequestCtxManager.getEntityToInstance(entryId); const result = entityInstanceTranslator.getData().filter(r => { return r.entityId === 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.entity + result[0].entityId, result[0].entryId + 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.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: () => __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.entity + instance.entityId, instance.entryId + 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 __awaiter(this, void 0, void 0, function* () { return new Promise((resolve, reject) => { try { RcsbFvCoreBuilder.createFv({ elementId: elementId, fvModuleI: RcsbFvUniprot, config: { upAcc: upAcc, additionalConfig: Object.assign({ rcsbContext: { upAcc: upAcc } }, additionalConfig), resolve: resolve } }); } catch (e) { reject(e); } }); }); } static buildUniprotEntityFv(elementId, upAcc, entityId, additionalConfig) { return __awaiter(this, void 0, void 0, function* () { return new Promise((resolve, reject) => __awaiter(this, void 0, void 0, function* () { try { const entryId = TagDelimiter.parseEntity(entityId).entryId; yield RcsbFvCoreBuilder.getPolymerEntityInstanceMapAndBuildFv(elementId, entryId, RcsbFvUniprotEntity, { upAcc: upAcc, entityId: entityId, additionalConfig: Object.assign({ rcsbContext: Object.assign(Object.assign({}, TagDelimiter.parseEntity(entityId)), { upAcc: upAcc }) }, additionalConfig), resolve: resolve }); } catch (e) { reject(e); } })); }); } static buildUniprotEntityInstanceFv(elementId, upAcc, entityId, instanceId, additionalConfig) { return __awaiter(this, void 0, void 0, function* () { return new Promise((resolve, reject) => __awaiter(this, void 0, void 0, function* () { try { const entryId = TagDelimiter.parseEntity(entityId).entryId; yield RcsbFvCoreBuilder.getPolymerEntityInstanceMapAndBuildFv(elementId, entryId, RcsbFvUniprotInstance, { upAcc: upAcc, entityId: entityId, instanceId: instanceId, additionalConfig: Object.assign({ rcsbContext: Object.assign(Object.assign({}, TagDelimiter.parseEntity(entityId)), { asymId: instanceId, upAcc: upAcc }) }, additionalConfig), resolve: resolve }); } catch (e) { reject(e); } })); }); } static buildUniprotAlignmentFv(elementId, upAcc, additionalConfig) { return __awaiter(this, void 0, void 0, function* () { return new Promise((resolve, reject) => { try { RcsbFvCoreBuilder.createFv({ elementId: elementId, fvModuleI: RcsbFvUniprotAlignment, config: { upAcc: upAcc, additionalConfig: Object.assign({ rcsbContext: { upAcc: upAcc } }, additionalConfig), resolve: resolve } }); } catch (e) { reject(e); } }); }); } } //# sourceMappingURL=RcsbFvUniprotBuilder.js.map