@rcsb/rcsb-saguaro-app
Version:
RCSB 1D Saguaro Web App
94 lines • 5.16 kB
JavaScript
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