UNPKG

@rcsb/rcsb-saguaro-app

Version:
93 lines (92 loc) 5.36 kB
"use strict"; 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 }; }