@visactor/vchart
Version:
charts lib based @visactor/VGrammar
32 lines (28 loc) • 1.78 kB
JavaScript
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