in src/Wbar/index.tsx [580:623]
changeData(chart: Chart, config: WbarConfig, data: any) {
// 分面需要对数据进行筛选处理
if (config.facet) {
chart.views.forEach((subView, idx) => {
// 目前想到每个视图获取对应的分面数据的情况通过分面的实例进行获取,后面看有没有更好的情况
const facetInstance = chart?.facetInstance?.facets;
const facetValue =
!config.column || typeof config.column === 'object'
? facetInstance?.[idx]?.columnValue
: facetInstance?.[idx]?.rowValue;
const facetData = data?.filter((el: any) => el.facet === facetValue);
subView.changeData(facetData);
});
} else if (config.percentage && this.barDataView) {
this.barDataView.source(data);
chart.changeData(this.barDataView.rows);
} else {
if (config.showStackSum) {
data.map((el: any) => {
const filterData = this.barDataView.rows.filter((row: any) => el.x === row.x && el.type === row.type);
if (filterData.length > 0) {
el.sum = filterData[0].sum;
}
});
// 排行图
if (typeof config?.column === 'object' && (config?.column?.top || config?.column?.showRanking)) {
data?.sort((a: any, b: any) => {
if (a.sum !== undefined && b.sum !== undefined) {
return config?.column?.rankConfig?.type === 'asc' ? (b?.sum ?? 0) - (a?.sum ?? 0) : (a?.sum ?? 0) - (b?.sum ?? 0);
}
});
const sortList = data?.filter((el: any) => el.sum).slice(-config?.column?.top);
const xList = sortList.map((el: any) => el.x);
data = data?.map(((el: any) => {
return xList.includes(el.x) ? el : false;
}))
}
}
chart.changeData(data);
}
}