UNPKG

@rcsb/rcsb-saguaro-app

Version:
85 lines 6.62 kB
import { __awaiter } from "tslib"; import { GroupProvenanceId } from "@rcsb/rcsb-api-tools/lib/RcsbDw/Types/DwEnums"; import { searchRequestProperty } from "../../RcsbSeacrh/SearchRequestProperty"; import { SearchQueryTools as SQT } from "../../RcsbSeacrh/SearchQueryTools"; import { ReturnType } from "@rcsb/rcsb-api-tools/lib/RcsbSearch/Types/SearchEnums"; import { getReferenceFromGroupProvenance } from "../RcsbFvGroup/GroupTabs/GroupPfvApp"; import { ActionMethods } from "../../RcsbFvUI/Helper/ActionMethods"; import { RcsbFvUniprotBuilder } from "./RcsbFvUniprotBuilder"; import { groupExternalTrackBuilder } from "../../RcsbUtils/TrackGenerators/GroupExternalTrackBuilder"; import { SequenceReference } from "@rcsb/rcsb-api-tools/lib/RcsbGraphQL/Types/Borrego/GqlTypes"; import { RcsbFvGroupBuilder } from "./RcsbFvGroupBuilder"; import { GroupPfvUI } from "../../RcsbFvUI/GroupPfvUI"; import { PaginationItemComponent } from "../../RcsbFvUI/Components/PaginationItemComponent"; import { FeatureTools } from "../../RcsbCollectTools/FeatureTools/FeatureTools"; export class RcsbFvGroupAlignmentBuilder { static buildUniprotAlignmentFv(elementId, upAcc, query, additionalConfig) { return __awaiter(this, void 0, void 0, function* () { let filterEntities = undefined; if (query && query.query) { filterEntities = yield searchRequestProperty.requestMembers(Object.assign(Object.assign({}, query), { query: SQT.addGroupNodeToSearchQuery(GroupProvenanceId.ProvenanceMatchingUniprotAccession, upAcc, query.query), return_type: ReturnType.PolymerEntity })); } return RcsbFvUniprotBuilder.buildUniprotFv(elementId, upAcc, Object.assign(Object.assign({}, additionalConfig), { alignmentFilter: filterEntities })); }); } static buildGroupAlignmentFv(elementId, groupProvenance, groupId, query, additionalConfig) { return __awaiter(this, void 0, void 0, function* () { var _a, _b, _c, _d, _e, _f, _g, _h, _j; let entityCount = -1; let filterEntities = undefined; if (query && query.query) { filterEntities = yield searchRequestProperty.requestMembers(Object.assign(Object.assign({}, query), { query: SQT.addGroupNodeToSearchQuery(groupProvenance, groupId, query.query), return_type: ReturnType.PolymerEntity })); entityCount = filterEntities.length; } else { entityCount = yield searchRequestProperty.requestCount({ query: SQT.searchGroupQuery(groupProvenance, groupId), return_type: ReturnType.PolymerEntity }); } additionalConfig = Object.assign(Object.assign({}, additionalConfig), { page: Object.assign({ first: 50, after: 0 }, additionalConfig === null || additionalConfig === void 0 ? void 0 : additionalConfig.page), alignmentFilter: filterEntities, externalTrackBuilder: FeatureTools.mergeTrackBuilders(groupExternalTrackBuilder(groupProvenance), additionalConfig === null || additionalConfig === void 0 ? void 0 : additionalConfig.externalTrackBuilder) }); // SequenceReference.PdbEntity && SequenceReference.Uniprot are needed to add row prefixes const pfvArgs = [ getReferenceFromGroupProvenance(groupProvenance), groupId, SequenceReference.PdbEntity, SequenceReference.Uniprot ]; let pfv = Object(); switch (groupProvenance) { case GroupProvenanceId.ProvenanceSequenceIdentity: pfv = yield RcsbFvGroupBuilder.buildGroupAlignmentFv(elementId, ...pfvArgs, additionalConfig); break; case GroupProvenanceId.ProvenanceMatchingUniprotAccession: pfv = yield RcsbFvUniprotBuilder.buildUniprotAlignmentFv(elementId, groupId, additionalConfig); break; } const sequenceIdentityCallback = ActionMethods.paginationCallback(); const uniprotCallback = ActionMethods.paginationCallback(); const uiComp = { component: PaginationItemComponent, props: { count: entityCount, after: (_b = (_a = additionalConfig === null || additionalConfig === void 0 ? void 0 : additionalConfig.page) === null || _a === void 0 ? void 0 : _a.after) !== null && _b !== void 0 ? _b : 0, first: (_d = (_c = additionalConfig === null || additionalConfig === void 0 ? void 0 : additionalConfig.page) === null || _c === void 0 ? void 0 : _c.first) !== null && _d !== void 0 ? _d : 50, stateChange: (state, prevState) => { switch (groupProvenance) { case GroupProvenanceId.ProvenanceSequenceIdentity: sequenceIdentityCallback(elementId, pfv, RcsbFvGroupBuilder.buildGroupAlignmentFv, pfvArgs, Object.assign(Object.assign({}, additionalConfig), { page: { first: state.first, after: state.after }, excludeLogo: true })); break; case GroupProvenanceId.ProvenanceMatchingUniprotAccession: uniprotCallback(elementId, pfv, RcsbFvUniprotBuilder.buildUniprotAlignmentFv, [groupId], Object.assign(Object.assign({}, additionalConfig), { page: { first: state.first, after: state.after } })); break; } } } }; GroupPfvUI.fvUI(GroupPfvUI.addBootstrapElement(elementId), (_f = (_e = additionalConfig === null || additionalConfig === void 0 ? void 0 : additionalConfig.externalUiComponents) === null || _e === void 0 ? void 0 : _e.replace) !== null && _f !== void 0 ? _f : (entityCount > ((_h = (_g = additionalConfig === null || additionalConfig === void 0 ? void 0 : additionalConfig.page) === null || _g === void 0 ? void 0 : _g.first) !== null && _h !== void 0 ? _h : 50) ? [uiComp] : []).concat(((_j = additionalConfig === null || additionalConfig === void 0 ? void 0 : additionalConfig.externalUiComponents) === null || _j === void 0 ? void 0 : _j.add) ? additionalConfig.externalUiComponents.add : [])); return pfv; }); } } //# sourceMappingURL=RcsbFvGroupAlignmentBuilder.js.map