@rcsb/rcsb-saguaro-app
Version:
RCSB 1D Saguaro Web App
95 lines (94 loc) • 5.41 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.GroupChartMap = void 0;
const tslib_1 = require("tslib");
const GroupProvenanceToAggregationType_1 = require("../../../RcsbUtils/Groups/GroupProvenanceToAggregationType");
const SearchQueryTools_1 = require("../../../RcsbSeacrh/SearchQueryTools");
const FacetTools_1 = require("../../../RcsbSeacrh/FacetTools");
const lodash_1 = require("lodash");
const GroupChartEvents_1 = require("./GroupChartEvents");
const RcsbRequestContextManager_1 = require("../../../RcsbRequest/RcsbRequestContextManager");
var GroupChartMap;
(function (GroupChartMap) {
function getChartMap(groupProvenanceId, groupId, searchQuery) {
return tslib_1.__awaiter(this, void 0, void 0, function* () {
var _a;
const facetStore = SearchQueryTools_1.SearchQueryTools.getFacetStoreFromGroupProvenance(groupProvenanceId);
let facets = [];
for (const service of facetStore.getServices()) {
const groupQuery = SearchQueryTools_1.SearchQueryTools.searchGroupQuery(groupProvenanceId, groupId, service);
const groupProperties = yield RcsbRequestContextManager_1.rcsbRequestCtxManager.getSearchQueryFacets(groupQuery, facetStore.getFacetService(service).map(f => f.facet), facetStore.returnType, SearchQueryTools_1.SearchQueryTools.searchContentType(searchQuery));
if (groupProperties)
facets = facets.concat(groupProperties.facets);
}
let chartData = FacetTools_1.FacetTools.getResultDrilldowns(facetStore.getFacetService("all"), facets);
let subData = [];
if (searchQuery) {
const searchData = yield subtractSearchQuery(chartData, groupProvenanceId, groupId, searchQuery);
chartData = searchData.chartData;
subData = (_a = searchData.subData) !== null && _a !== void 0 ? _a : [];
}
addCharMapColor("#5e94c3", chartData);
addCharMapIds("included", chartData);
addCharMapColor("#d0d0d0", subData);
addCharMapIds("excluded", subData);
chartData.forEach((chart => {
GroupChartEvents_1.GroupChartEvents.addBarClickCallback(chart, GroupProvenanceToAggregationType_1.groupProvenanceToReturnType[groupProvenanceId]);
GroupChartEvents_1.GroupChartEvents.addTooltipText(chart);
}));
return chartData.reduce((prev, current) => {
var _a;
prev.set(current.attributeName, [current]);
const comp = subData === null || subData === void 0 ? void 0 : subData.find((c) => (c.attributeName === current.attributeName));
if (comp)
(_a = prev.get(current.attributeName)) === null || _a === void 0 ? void 0 : _a.push(comp);
return prev;
}, new Map());
});
}
GroupChartMap.getChartMap = getChartMap;
function subtractSearchQuery(chartData, groupProvenanceId, groupId, searchQuery) {
return tslib_1.__awaiter(this, void 0, void 0, function* () {
var _a, _b;
const facetStore = SearchQueryTools_1.SearchQueryTools.getFacetStoreFromGroupProvenance(groupProvenanceId);
let subData;
let partialFacets = [];
for (const service of facetStore.getServices()) {
if (searchQuery.query) {
const groupQuery = SearchQueryTools_1.SearchQueryTools.addGroupNodeToSearchQuery(groupProvenanceId, groupId, searchQuery.query, service);
const groupProperties = yield RcsbRequestContextManager_1.rcsbRequestCtxManager.getSearchQueryFacets(groupQuery, facetStore.getFacetService(service).map(f => f.facet), facetStore.returnType, (_b = (_a = searchQuery.request_options) === null || _a === void 0 ? void 0 : _a.results_content_type) !== null && _b !== void 0 ? _b : ["computational", "experimental"]);
if (groupProperties)
partialFacets = partialFacets.concat(groupProperties.facets);
}
}
let partialData = (0, lodash_1.cloneDeep)(chartData);
if (partialFacets.length > 0) {
partialData = FacetTools_1.FacetTools.getResultDrilldowns(facetStore.getFacetService("all"), partialFacets);
subData = FacetTools_1.FacetTools.subtractDrilldowns(partialData, chartData);
}
else {
subData = (0, lodash_1.cloneDeep)(chartData);
partialData.forEach(chart => {
chart.data.forEach(d => {
d.population = 0;
});
});
}
return { chartData: partialData, subData: subData };
});
}
function addCharMapColor(color, char) {
char.forEach(ch => {
ch.data.forEach(d => {
d.objectConfig = Object.assign(Object.assign({}, d.objectConfig), { color });
});
});
}
function addCharMapIds(id, char) {
char.forEach(ch => {
ch.data.forEach(d => {
d.objectConfig = Object.assign(Object.assign({}, d.objectConfig), { objectId: id });
});
});
}
})(GroupChartMap || (exports.GroupChartMap = GroupChartMap = {}));