@rcsb/rcsb-saguaro-app
Version:
RCSB 1D Saguaro Web App
89 lines (88 loc) • 7.3 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.RcsbFvGroupAlignmentBuilder = void 0;
const tslib_1 = require("tslib");
const DwEnums_1 = require("@rcsb/rcsb-api-tools/lib/RcsbDw/Types/DwEnums");
const SearchRequestProperty_1 = require("../../RcsbSeacrh/SearchRequestProperty");
const SearchQueryTools_1 = require("../../RcsbSeacrh/SearchQueryTools");
const SearchEnums_1 = require("@rcsb/rcsb-api-tools/lib/RcsbSearch/Types/SearchEnums");
const GroupPfvApp_1 = require("../RcsbFvGroup/GroupTabs/GroupPfvApp");
const ActionMethods_1 = require("../../RcsbFvUI/Helper/ActionMethods");
const RcsbFvUniprotBuilder_1 = require("./RcsbFvUniprotBuilder");
const GroupExternalTrackBuilder_1 = require("../../RcsbUtils/TrackGenerators/GroupExternalTrackBuilder");
const GqlTypes_1 = require("@rcsb/rcsb-api-tools/lib/RcsbGraphQL/Types/Borrego/GqlTypes");
const RcsbFvGroupBuilder_1 = require("./RcsbFvGroupBuilder");
const GroupPfvUI_1 = require("../../RcsbFvUI/GroupPfvUI");
const PaginationItemComponent_1 = require("../../RcsbFvUI/Components/PaginationItemComponent");
const FeatureTools_1 = require("../../RcsbCollectTools/FeatureTools/FeatureTools");
class RcsbFvGroupAlignmentBuilder {
static buildUniprotAlignmentFv(elementId, upAcc, query, additionalConfig) {
return tslib_1.__awaiter(this, void 0, void 0, function* () {
let filterEntities = undefined;
if (query && query.query) {
filterEntities = yield SearchRequestProperty_1.searchRequestProperty.requestMembers(Object.assign(Object.assign({}, query), { query: SearchQueryTools_1.SearchQueryTools.addGroupNodeToSearchQuery(DwEnums_1.GroupProvenanceId.ProvenanceMatchingUniprotAccession, upAcc, query.query), return_type: SearchEnums_1.ReturnType.PolymerEntity }));
}
return RcsbFvUniprotBuilder_1.RcsbFvUniprotBuilder.buildUniprotFv(elementId, upAcc, Object.assign(Object.assign({}, additionalConfig), { alignmentFilter: filterEntities }));
});
}
static buildGroupAlignmentFv(elementId, groupProvenance, groupId, query, additionalConfig) {
return tslib_1.__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_1.searchRequestProperty.requestMembers(Object.assign(Object.assign({}, query), { query: SearchQueryTools_1.SearchQueryTools.addGroupNodeToSearchQuery(groupProvenance, groupId, query.query), return_type: SearchEnums_1.ReturnType.PolymerEntity }));
entityCount = filterEntities.length;
}
else {
entityCount = yield SearchRequestProperty_1.searchRequestProperty.requestCount({ query: SearchQueryTools_1.SearchQueryTools.searchGroupQuery(groupProvenance, groupId), return_type: SearchEnums_1.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_1.FeatureTools.mergeTrackBuilders((0, GroupExternalTrackBuilder_1.groupExternalTrackBuilder)(groupProvenance), additionalConfig === null || additionalConfig === void 0 ? void 0 : additionalConfig.externalTrackBuilder) });
// SequenceReference.PdbEntity && SequenceReference.Uniprot are needed to add row prefixes
const pfvArgs = [
(0, GroupPfvApp_1.getReferenceFromGroupProvenance)(groupProvenance),
groupId,
GqlTypes_1.SequenceReference.PdbEntity,
GqlTypes_1.SequenceReference.Uniprot
];
let pfv = Object();
switch (groupProvenance) {
case DwEnums_1.GroupProvenanceId.ProvenanceSequenceIdentity:
pfv = yield RcsbFvGroupBuilder_1.RcsbFvGroupBuilder.buildGroupAlignmentFv(elementId, ...pfvArgs, additionalConfig);
break;
case DwEnums_1.GroupProvenanceId.ProvenanceMatchingUniprotAccession:
pfv = yield RcsbFvUniprotBuilder_1.RcsbFvUniprotBuilder.buildUniprotAlignmentFv(elementId, groupId, additionalConfig);
break;
}
const sequenceIdentityCallback = ActionMethods_1.ActionMethods.paginationCallback();
const uniprotCallback = ActionMethods_1.ActionMethods.paginationCallback();
const uiComp = {
component: PaginationItemComponent_1.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 DwEnums_1.GroupProvenanceId.ProvenanceSequenceIdentity:
sequenceIdentityCallback(elementId, pfv, RcsbFvGroupBuilder_1.RcsbFvGroupBuilder.buildGroupAlignmentFv, pfvArgs, Object.assign(Object.assign({}, additionalConfig), { page: {
first: state.first,
after: state.after
}, excludeLogo: true }));
break;
case DwEnums_1.GroupProvenanceId.ProvenanceMatchingUniprotAccession:
uniprotCallback(elementId, pfv, RcsbFvUniprotBuilder_1.RcsbFvUniprotBuilder.buildUniprotAlignmentFv, [groupId], Object.assign(Object.assign({}, additionalConfig), { page: {
first: state.first,
after: state.after
} }));
break;
}
}
}
};
GroupPfvUI_1.GroupPfvUI.fvUI(GroupPfvUI_1.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;
});
}
}
exports.RcsbFvGroupAlignmentBuilder = RcsbFvGroupAlignmentBuilder;