UNPKG

@rcsb/rcsb-saguaro-app

Version:
129 lines 6.73 kB
import { __awaiter } from "tslib"; import { Operator, Service } from "@rcsb/rcsb-api-tools/lib/RcsbSearch/Types/SearchEnums"; import { SearchQueryTools as SQT } from "../../../RcsbSeacrh/SearchQueryTools"; import resource from "../../../RcsbServerConfig/web.resources.json"; import { SearchQueryContextManager as SQCM } from "../RcsbGroupSeacrhQuery/SearchQueryContextManager"; import { ChartType } from "@rcsb/rcsb-charts/lib/RcsbChartComponent/ChartConfigInterface"; import { ChartTools } from "@rcsb/rcsb-charts/lib/RcsbChartDataProvider/ChartTools"; export var GroupChartEvents; (function (GroupChartEvents) { function addBarClickCallback(chart, returnType) { if (!chart.chartConfig) chart.chartConfig = {}; switch (chart.chartType) { case ChartType.barplot: addBarChartClick(chart, returnType); break; case ChartType.histogram: addHistogramChartClick(chart, returnType); break; } } GroupChartEvents.addBarClickCallback = addBarClickCallback; function addTooltipText(chart) { var _a; const tooltipText = (_a = chart.chartConfig) === null || _a === void 0 ? void 0 : _a.tooltipText; const tooltipTitle = (d) => { const tt = tooltipText === null || tooltipText === void 0 ? void 0 : tooltipText(d); if (!tt) return d.x.toString(); if (Array.isArray(tt)) return tt.join(" "); return tt; }; chart.chartConfig = Object.assign(Object.assign({}, chart.chartConfig), { tooltipText: (d) => { const sum = d.values.reduce((prev, curr) => prev + curr.value, 0); if (d.id == "included") return [ tooltipTitle(d), ChartTools.digitGrouping(d.y) + (sum > 0 ? (" of " + sum) : ""), "Click to refine group", "Shift-click to search" ]; return [ tooltipTitle(d), ChartTools.digitGrouping(d.y) + (sum > 0 ? (" of " + sum) : "") ]; } }); } GroupChartEvents.addTooltipText = addTooltipText; function addBarChartClick(chart, returnType) { if (chart.chartConfig) chart.chartConfig.barClickCallback = (datum, data, e) => __awaiter(this, void 0, void 0, function* () { var _a, _b; if (datum.id === "excluded") return; if ((_a = chart.facetConfig) === null || _a === void 0 ? void 0 : _a.bucketClickSearchQuery) { const query = (_b = chart.facetConfig) === null || _b === void 0 ? void 0 : _b.bucketClickSearchQuery(datum, data, e); yield clickEvent(e !== null && e !== void 0 ? e : { shiftKey: false }, chart, query, returnType); } else { let query = SQT.searchAttributeQuery(chart.attribute, datum.x, Operator.ExactMatch, Service.Text); if (chart.filters) chart.filters.forEach(f => { query = SQT.addNewNodeToAttributeSearchQuery(f.attribute, f.value, f.operator, query, f.service); }); yield clickEvent(e !== null && e !== void 0 ? e : { shiftKey: false }, chart, query, returnType); } }); } function addHistogramChartClick(chart, returnType) { if (chart.chartConfig) chart.chartConfig.barClickCallback = (datum, data, e) => __awaiter(this, void 0, void 0, function* () { var _a, _b, _c; if (datum.id === "excluded") return; if ((_a = chart.facetConfig) === null || _a === void 0 ? void 0 : _a.bucketClickSearchQuery) { const query = (_b = chart.facetConfig) === null || _b === void 0 ? void 0 : _b.bucketClickSearchQuery(datum, data, e); yield clickEvent(e !== null && e !== void 0 ? e : { shiftKey: false }, chart, query, returnType); } else if (((_c = chart.facetConfig) === null || _c === void 0 ? void 0 : _c.mergeDomainMaxValue) && parseFloat(datum.x.toString()) >= chart.facetConfig.mergeDomainMaxValue) { const query = SQT.searchAttributeQuery(chart.attribute, chart.facetConfig.mergeDomainMaxValue, Operator.GreaterOrEqual, Service.Text); yield clickEvent(e !== null && e !== void 0 ? e : { shiftKey: false }, chart, query, returnType); } else { const range = formatRange(chart, datum); const query = SQT.searchAttributeQuery(chart.attribute, range, Operator.Range, Service.Text); yield clickEvent(e !== null && e !== void 0 ? e : { shiftKey: false }, chart, query, returnType); } }); } function clickEvent(e, chart, query, returnType) { return __awaiter(this, void 0, void 0, function* () { const newQuery = yield SQCM.updateSearchQuery(chart.attributeName, query, returnType); if (e.shiftKey) { location.href = resource.rcsb_search.url + encodeURI(JSON.stringify(newQuery)); } }); } function formatRange(chart, datum) { var _a, _b, _c, _d; const from = formatValue((parseFloat(datum.x.toString())) - ((_b = (_a = chart.chartConfig) === null || _a === void 0 ? void 0 : _a.histogramBinIncrement) !== null && _b !== void 0 ? _b : 0) * 0.5, chart.contentType); const to = formatValue((parseFloat(datum.x.toString())) + ((_d = (_c = chart.chartConfig) === null || _c === void 0 ? void 0 : _c.histogramBinIncrement) !== null && _d !== void 0 ? _d : 0) * 0.5, chart.contentType); switch (chart.contentType) { case "date": return { from: from, to: to, include_lower: true, include_upper: from == to }; default: return { from: from, to: to, include_lower: true, include_upper: from == to }; } } function formatValue(value, contentType) { switch (contentType) { case "date": return `${value}-01-01`; default: return value; } } })(GroupChartEvents || (GroupChartEvents = {})); //# sourceMappingURL=GroupChartEvents.js.map