UNPKG

@rcsb/rcsb-charts

Version:
46 lines 2.19 kB
import { ChartTools } from "./ChartTools"; export class BarChartDataProvider { setData(chartData, config) { var _a, _b, _c; const data = ChartTools.normalizeData(ChartTools.labelsAsString(chartData)); const subData = (_a = data.filter(d => d.y[0].value == 0)) !== null && _a !== void 0 ? _a : []; const mergedValues = new Map(); const subValues = new Map(); data.forEach(d => { mergedValues.set(d.x, d.y[0].value); }); subData.forEach((d) => { subValues.set(d.x, d.y.reduce((prev, curr) => (prev + curr.value), 0)); }); const allowedCategories = new Set([...mergedValues.entries()] .sort((a, b) => (b[1] - a[1])) .slice(0, (_b = config === null || config === void 0 ? void 0 : config.mostPopulatedGroups) !== null && _b !== void 0 ? _b : mergedValues.size) .map(e => e[0])); const sort = (_c = config === null || config === void 0 ? void 0 : config.sort) !== null && _c !== void 0 ? _c : ((b, a) => { var _a, _b, _c, _d, _e; if (mergedValues.get(b.x) != mergedValues.get(a.x)) return ((_a = mergedValues.get(b.x)) !== null && _a !== void 0 ? _a : 0) - ((_b = mergedValues.get(a.x)) !== null && _b !== void 0 ? _b : 0); else if (((_c = mergedValues.get(b.x)) !== null && _c !== void 0 ? _c : 0) > 0) return a.x.toString().localeCompare(b.x.toString()); else return ((_d = subValues.get(b.x)) !== null && _d !== void 0 ? _d : 0) - ((_e = subValues.get(a.x)) !== null && _e !== void 0 ? _e : 0); }); const barOut = data.sort((a, b) => sort(a, b)).filter(d => (allowedCategories.has(d.x))); this.stringTicks = barOut.map(d => d.x); this.excludedData = data.filter(d => (!allowedCategories.has(d.x))); this.data = barOut; } getChartData() { return { data: this.data, excludedData: this.excludedData }; } tickValues() { return this.stringTicks; } xDomain() { return; } } //# sourceMappingURL=BarChartDataProvider.js.map