@rcsb/rcsb-saguaro-app
Version:
RCSB 1D Saguaro Web App
93 lines (92 loc) • 5.36 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.RcsbFvEntityBuilder = void 0;
const tslib_1 = require("tslib");
const RcsbFvEntity_1 = require("../RcsbFvModule/RcsbFvEntity");
const GqlTypes_1 = require("@rcsb/rcsb-api-tools/lib/RcsbGraphQL/Types/Borrego/GqlTypes");
const RcsbFvCoreBuilder_1 = require("./RcsbFvCoreBuilder");
const RcsbFvUniprotBuilder_1 = require("./RcsbFvUniprotBuilder");
const TagDelimiter_1 = require("@rcsb/rcsb-api-tools/lib/RcsbUtils/TagDelimiter");
class RcsbFvEntityBuilder {
static buildEntitySummaryFv(elementFvId, elementSelectId, entityId, additionalConfig) {
return tslib_1.__awaiter(this, void 0, void 0, function* () {
return new Promise((resolve, reject) => {
const pdbId = TagDelimiter_1.TagDelimiter.parseEntity(entityId).entryId;
const createSelectAndFvBuilder = (p) => tslib_1.__awaiter(this, void 0, void 0, function* () {
const rcsbFvEntity = yield RcsbFvCoreBuilder_1.RcsbFvCoreBuilder.createFv({
elementId: elementFvId,
fvModuleI: RcsbFvEntity_1.RcsbFvEntity,
p: p,
config: {
entityId: entityId,
elementSelectId: elementSelectId,
additionalConfig: Object.assign(Object.assign({ rcsbContext: TagDelimiter_1.TagDelimiter.parseEntity(entityId) }, customAdditionalConfig()), additionalConfig),
resolve: resolve
}
});
const targets = yield rcsbFvEntity.getTargets();
RcsbFvCoreBuilder_1.RcsbFvCoreBuilder.buildSelectButton(elementFvId, elementSelectId, [entityId].concat(targets).map(t => {
return {
label: t,
onChange: () => tslib_1.__awaiter(this, void 0, void 0, function* () {
if (t === entityId) {
yield RcsbFvEntityBuilder.buildSingleEntitySummaryFv(elementFvId, entityId);
}
else {
yield RcsbFvUniprotBuilder_1.RcsbFvUniprotBuilder.buildUniprotEntityFv(elementFvId, t, entityId, Object.assign({ alignmentFilter: [entityId] }, customAdditionalConfig({
field: GqlTypes_1.FieldName.TargetId,
operation: GqlTypes_1.OperationType.Contains,
source: GqlTypes_1.AnnotationReference.PdbInstance,
values: [pdbId + TagDelimiter_1.TagDelimiter.instance]
})));
}
})
};
}));
return rcsbFvEntity;
});
const entryId = TagDelimiter_1.TagDelimiter.parseEntity(entityId).entryId;
RcsbFvCoreBuilder_1.RcsbFvCoreBuilder.getPolymerEntityInstanceMapAndCustomBuildFv(entryId, createSelectAndFvBuilder);
});
});
}
static buildSingleEntitySummaryFv(elementId, entityId) {
return tslib_1.__awaiter(this, void 0, void 0, function* () {
return new Promise((resolve, reject) => {
const entryId = TagDelimiter_1.TagDelimiter.parseEntity(entityId).entryId;
RcsbFvCoreBuilder_1.RcsbFvCoreBuilder.getPolymerEntityInstanceMapAndBuildFv(elementId, entryId, RcsbFvEntity_1.RcsbFvEntity, {
entityId: entityId,
additionalConfig: Object.assign({ rcsbContext: TagDelimiter_1.TagDelimiter.parseEntity(entityId) }, customAdditionalConfig()),
resolve: resolve
});
});
});
}
static buildEntityFv(elementId, entityId, additionalConfig) {
return tslib_1.__awaiter(this, void 0, void 0, function* () {
return new Promise((resolve, reject) => {
const entryId = TagDelimiter_1.TagDelimiter.parseEntity(entityId).entryId;
RcsbFvCoreBuilder_1.RcsbFvCoreBuilder.getPolymerEntityInstanceMapAndBuildFv(elementId, entryId, RcsbFvEntity_1.RcsbFvEntity, {
entityId: entityId,
additionalConfig: Object.assign({ rcsbContext: TagDelimiter_1.TagDelimiter.parseEntity(entityId) }, additionalConfig),
resolve: resolve
});
});
});
}
}
exports.RcsbFvEntityBuilder = RcsbFvEntityBuilder;
function customAdditionalConfig(f) {
const filters = [{
field: GqlTypes_1.FieldName.Type,
operation: GqlTypes_1.OperationType.Equals,
source: GqlTypes_1.AnnotationReference.PdbInstance,
values: [GqlTypes_1.FeaturesType.UnobservedResidueXyz, GqlTypes_1.FeaturesType.UnobservedAtomXyz, GqlTypes_1.FeaturesType.MaQaMetricLocalTypeOther, GqlTypes_1.FeaturesType.MaQaMetricLocalTypePlddt]
}];
if (f)
filters.push(f);
return {
sources: [GqlTypes_1.AnnotationReference.PdbEntity, GqlTypes_1.AnnotationReference.PdbInstance],
filters: filters
};
}