UNPKG

@rcsb/rcsb-saguaro-app

Version:
132 lines (131 loc) 7.24 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.GroupChartEvents = void 0; const tslib_1 = require("tslib"); const SearchEnums_1 = require("@rcsb/rcsb-api-tools/lib/RcsbSearch/Types/SearchEnums"); const SearchQueryTools_1 = require("../../../RcsbSeacrh/SearchQueryTools"); const web_resources_json_1 = tslib_1.__importDefault(require("../../../RcsbServerConfig/web.resources.json")); const SearchQueryContextManager_1 = require("../RcsbGroupSeacrhQuery/SearchQueryContextManager"); const ChartConfigInterface_1 = require("@rcsb/rcsb-charts/lib/RcsbChartComponent/ChartConfigInterface"); const ChartTools_1 = require("@rcsb/rcsb-charts/lib/RcsbChartDataProvider/ChartTools"); var GroupChartEvents; (function (GroupChartEvents) { function addBarClickCallback(chart, returnType) { if (!chart.chartConfig) chart.chartConfig = {}; switch (chart.chartType) { case ChartConfigInterface_1.ChartType.barplot: addBarChartClick(chart, returnType); break; case ChartConfigInterface_1.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_1.ChartTools.digitGrouping(d.y) + (sum > 0 ? (" of " + sum) : ""), "Click to refine group", "Shift-click to search" ]; return [ tooltipTitle(d), ChartTools_1.ChartTools.digitGrouping(d.y) + (sum > 0 ? (" of " + sum) : "") ]; } }); } GroupChartEvents.addTooltipText = addTooltipText; function addBarChartClick(chart, returnType) { if (chart.chartConfig) chart.chartConfig.barClickCallback = (datum, data, e) => tslib_1.__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 = SearchQueryTools_1.SearchQueryTools.searchAttributeQuery(chart.attribute, datum.x, SearchEnums_1.Operator.ExactMatch, SearchEnums_1.Service.Text); if (chart.filters) chart.filters.forEach(f => { query = SearchQueryTools_1.SearchQueryTools.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) => tslib_1.__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 = SearchQueryTools_1.SearchQueryTools.searchAttributeQuery(chart.attribute, chart.facetConfig.mergeDomainMaxValue, SearchEnums_1.Operator.GreaterOrEqual, SearchEnums_1.Service.Text); yield clickEvent(e !== null && e !== void 0 ? e : { shiftKey: false }, chart, query, returnType); } else { const range = formatRange(chart, datum); const query = SearchQueryTools_1.SearchQueryTools.searchAttributeQuery(chart.attribute, range, SearchEnums_1.Operator.Range, SearchEnums_1.Service.Text); yield clickEvent(e !== null && e !== void 0 ? e : { shiftKey: false }, chart, query, returnType); } }); } function clickEvent(e, chart, query, returnType) { return tslib_1.__awaiter(this, void 0, void 0, function* () { const newQuery = yield SearchQueryContextManager_1.SearchQueryContextManager.updateSearchQuery(chart.attributeName, query, returnType); if (e.shiftKey) { location.href = web_resources_json_1.default.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 || (exports.GroupChartEvents = GroupChartEvents = {}));