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