@rcsb/rcsb-saguaro-app
Version:
RCSB 1D Saguaro Web App
92 lines • 4.92 kB
JavaScript
import { __awaiter } from "tslib";
import { groupProvenanceToReturnType } from "../../../RcsbUtils/Groups/GroupProvenanceToAggregationType";
import { SearchQueryTools as SQT } from "../../../RcsbSeacrh/SearchQueryTools";
import { FacetTools } from "../../../RcsbSeacrh/FacetTools";
import { cloneDeep } from "lodash";
import { GroupChartEvents as GDE } from "./GroupChartEvents";
import { rcsbRequestCtxManager } from "../../../RcsbRequest/RcsbRequestContextManager";
export var GroupChartMap;
(function (GroupChartMap) {
function getChartMap(groupProvenanceId, groupId, searchQuery) {
return __awaiter(this, void 0, void 0, function* () {
var _a;
const facetStore = SQT.getFacetStoreFromGroupProvenance(groupProvenanceId);
let facets = [];
for (const service of facetStore.getServices()) {
const groupQuery = SQT.searchGroupQuery(groupProvenanceId, groupId, service);
const groupProperties = yield rcsbRequestCtxManager.getSearchQueryFacets(groupQuery, facetStore.getFacetService(service).map(f => f.facet), facetStore.returnType, SQT.searchContentType(searchQuery));
if (groupProperties)
facets = facets.concat(groupProperties.facets);
}
let chartData = 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 => {
GDE.addBarClickCallback(chart, groupProvenanceToReturnType[groupProvenanceId]);
GDE.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 __awaiter(this, void 0, void 0, function* () {
var _a, _b;
const facetStore = SQT.getFacetStoreFromGroupProvenance(groupProvenanceId);
let subData;
let partialFacets = [];
for (const service of facetStore.getServices()) {
if (searchQuery.query) {
const groupQuery = SQT.addGroupNodeToSearchQuery(groupProvenanceId, groupId, searchQuery.query, service);
const groupProperties = yield 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 = cloneDeep(chartData);
if (partialFacets.length > 0) {
partialData = FacetTools.getResultDrilldowns(facetStore.getFacetService("all"), partialFacets);
subData = FacetTools.subtractDrilldowns(partialData, chartData);
}
else {
subData = 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 || (GroupChartMap = {}));
//# sourceMappingURL=GroupChartTools.js.map