UNPKG

@visactor/vchart

Version:

charts lib based @visactor/VGrammar

32 lines (28 loc) 1.78 kB
import { isValid, isArray } from "@visactor/vutils"; import { DEFAULT_DATA_SERIES_FIELD } from "../../../../constant/data"; export const discreteLegendDataMake = (data, op) => { const result = [], tempKey = {}, {series: series, seriesField: seriesField} = op; return series().forEach((s => { const field = seriesField(s); let infoList; infoList = field === s.getSeriesField() ? s.getSeriesInfoList() : s.getSeriesInfoInField(field), infoList.forEach((info => { tempKey[info.key] || (tempKey[info.key] = !0, result.push(info)); })); })), result; }; export const discreteLegendFilter = (data, op) => { var _a, _b, _c; const {series: series, selected: selected, field: field, data: legendData, customFilter: customFilter} = op, selectedData = selected(), legendKeys = legendData(); if (0 === selectedData.length && legendKeys.length) return []; if (selectedData.length === legendKeys.length) return data; const selectedFilter = {}; selectedData.forEach((s => { selectedFilter[s] = !0; })); const datumField = null !== (_a = field()) && void 0 !== _a ? _a : DEFAULT_DATA_SERIES_FIELD; return customFilter ? customFilter(data, selectedData, datumField) : (isArray(data) && (null === (_b = data[0]) || void 0 === _b ? void 0 : _b.nodes) ? (data[0].nodes = data[0].nodes.filter((d => !0 === selectedFilter[d.key])), (null === (_c = data[0]) || void 0 === _c ? void 0 : _c.links) && (data[0].links = data[0].links.filter((d => !0 === selectedFilter[d.source] && !0 === selectedFilter[d.target])))) : isValid(datumField) && (data = data.filter((d => !0 === selectedFilter[series.getSeriesFieldValue(d, datumField)]))), data); }; //# sourceMappingURL=discrete.js.map