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