UNPKG

@rcsb/rcsb-saguaro-app

Version:
94 lines 5.16 kB
import { __awaiter } from "tslib"; import { RcsbFvChromosome } from "../RcsbFvModule/RcsbFvChromosome"; import { RcsbFvCoreBuilder } from "./RcsbFvCoreBuilder"; import { rcsbRequestCtxManager } from "../../RcsbRequest/RcsbRequestContextManager"; import { TagDelimiter } from "@rcsb/rcsb-api-tools/lib/RcsbUtils/TagDelimiter"; export class RcsbFvChromosomeBuilder { static buildFullChromosome(elementFvId, chrId) { return __awaiter(this, void 0, void 0, function* () { return yield RcsbFvChromosomeBuilder.buildChromosome(elementFvId, undefined, chrId); }); } static buildEntryChromosome(elementFvId, entitySelectId, chromosomeSelectId, entryId) { return __awaiter(this, void 0, void 0, function* () { return new Promise((resolve, reject) => __awaiter(this, void 0, void 0, function* () { const entityInstanceTranslator = yield rcsbRequestCtxManager.getEntityToInstance(entryId); const result = entityInstanceTranslator.getData(); const entitySet = new Set(); result.sort((a, b) => { return parseInt(a.entityId) - parseInt(b.entityId); }).forEach(r => { entitySet.add(r.entryId + TagDelimiter.entity + r.entityId); }); const entityChrTranslate = yield rcsbRequestCtxManager.getEntityToChromosome(Array.from(entitySet)); const entityMap = entityChrTranslate.getData(); if (entityMap.size == 0) { RcsbFvCoreBuilder.showMessage(elementFvId, "No genome alignments are available"); } else { const unique = new Set(); RcsbFvCoreBuilder.buildSelectButton(elementFvId, entitySelectId, result.filter(r => { const included = unique.has(r.entryId + TagDelimiter.entity + r.entityId); unique.add(r.entryId + TagDelimiter.entity + r.entityId); return entityMap.has(r.entryId + TagDelimiter.entity + r.entityId) && !included; }).map((e, n) => { const entityId = e.entryId + TagDelimiter.entity + e.entityId; if (n == 0) { RcsbFvChromosomeBuilder.buildEntityChromosome(elementFvId, chromosomeSelectId, entityId).then((module) => { resolve(module); }); } return { name: e.name + " - " + e.taxNames.join(", "), label: entityId + " - " + e.name, shortLabel: entityId, onChange: () => __awaiter(this, void 0, void 0, function* () { yield RcsbFvChromosomeBuilder.buildEntityChromosome(elementFvId, chromosomeSelectId, entityId); }) }; }), { addTitle: true, dropdownTitle: "ENTITY" }); } })); }); } static buildEntityChromosome(elementFvId, elementSelectId, entityId) { return __awaiter(this, void 0, void 0, function* () { const chrViewer = yield RcsbFvChromosomeBuilder.buildChromosome(elementFvId, entityId, undefined, elementSelectId, { boardConfig: { rowTitleWidth: 160 } }); const targets = yield chrViewer.getTargets(); RcsbFvCoreBuilder.buildSelectButton(elementFvId, elementSelectId, targets.map((chrId, n) => { return { label: chrId, name: chrId, shortLabel: chrId, onChange: () => __awaiter(this, void 0, void 0, function* () { yield RcsbFvChromosomeBuilder.buildChromosome(elementFvId, entityId, chrId, elementSelectId); }) }; }), { addTitle: false, width: 190, dropdownTitle: "CHROMOSOME" }); return chrViewer; }); } static buildChromosome(elementFvId, entityId, chrId, elementSelectId, additionalConfig) { return __awaiter(this, void 0, void 0, function* () { return new Promise((resolve, reject) => { try { RcsbFvCoreBuilder.createFv({ elementId: elementFvId, fvModuleI: RcsbFvChromosome, config: { entityId: entityId, chrId: chrId, elementSelectId: elementSelectId, additionalConfig: Object.assign({ rcsbContext: Object.assign(Object.assign({}, (entityId ? TagDelimiter.parseEntity(entityId) : {})), { chrId: chrId }) }, additionalConfig), resolve: resolve } }); } catch (e) { reject(e); } }); }); } } //# sourceMappingURL=RcsbFvChromosomeBuilder.js.map