@rcsb/rcsb-saguaro-app
Version:
RCSB 1D Saguaro Web App
98 lines (97 loc) • 5.6 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.RcsbFvChromosomeBuilder = void 0;
const tslib_1 = require("tslib");
const RcsbFvChromosome_1 = require("../RcsbFvModule/RcsbFvChromosome");
const RcsbFvCoreBuilder_1 = require("./RcsbFvCoreBuilder");
const RcsbRequestContextManager_1 = require("../../RcsbRequest/RcsbRequestContextManager");
const TagDelimiter_1 = require("@rcsb/rcsb-api-tools/lib/RcsbUtils/TagDelimiter");
class RcsbFvChromosomeBuilder {
static buildFullChromosome(elementFvId, chrId) {
return tslib_1.__awaiter(this, void 0, void 0, function* () {
return yield RcsbFvChromosomeBuilder.buildChromosome(elementFvId, undefined, chrId);
});
}
static buildEntryChromosome(elementFvId, entitySelectId, chromosomeSelectId, entryId) {
return tslib_1.__awaiter(this, void 0, void 0, function* () {
return new Promise((resolve, reject) => tslib_1.__awaiter(this, void 0, void 0, function* () {
const entityInstanceTranslator = yield RcsbRequestContextManager_1.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_1.TagDelimiter.entity + r.entityId);
});
const entityChrTranslate = yield RcsbRequestContextManager_1.rcsbRequestCtxManager.getEntityToChromosome(Array.from(entitySet));
const entityMap = entityChrTranslate.getData();
if (entityMap.size == 0) {
RcsbFvCoreBuilder_1.RcsbFvCoreBuilder.showMessage(elementFvId, "No genome alignments are available");
}
else {
const unique = new Set();
RcsbFvCoreBuilder_1.RcsbFvCoreBuilder.buildSelectButton(elementFvId, entitySelectId, result.filter(r => {
const included = unique.has(r.entryId + TagDelimiter_1.TagDelimiter.entity + r.entityId);
unique.add(r.entryId + TagDelimiter_1.TagDelimiter.entity + r.entityId);
return entityMap.has(r.entryId + TagDelimiter_1.TagDelimiter.entity + r.entityId) && !included;
}).map((e, n) => {
const entityId = e.entryId + TagDelimiter_1.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: () => tslib_1.__awaiter(this, void 0, void 0, function* () {
yield RcsbFvChromosomeBuilder.buildEntityChromosome(elementFvId, chromosomeSelectId, entityId);
})
};
}), { addTitle: true, dropdownTitle: "ENTITY" });
}
}));
});
}
static buildEntityChromosome(elementFvId, elementSelectId, entityId) {
return tslib_1.__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_1.RcsbFvCoreBuilder.buildSelectButton(elementFvId, elementSelectId, targets.map((chrId, n) => {
return {
label: chrId,
name: chrId,
shortLabel: chrId,
onChange: () => tslib_1.__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 tslib_1.__awaiter(this, void 0, void 0, function* () {
return new Promise((resolve, reject) => {
try {
RcsbFvCoreBuilder_1.RcsbFvCoreBuilder.createFv({
elementId: elementFvId,
fvModuleI: RcsbFvChromosome_1.RcsbFvChromosome,
config: {
entityId: entityId,
chrId: chrId,
elementSelectId: elementSelectId,
additionalConfig: Object.assign({ rcsbContext: Object.assign(Object.assign({}, (entityId ? TagDelimiter_1.TagDelimiter.parseEntity(entityId) : {})), { chrId: chrId }) }, additionalConfig),
resolve: resolve
}
});
}
catch (e) {
reject(e);
}
});
});
}
}
exports.RcsbFvChromosomeBuilder = RcsbFvChromosomeBuilder;