通过客户端宏,使堆积图显示合计,如下图所示:
效果如下:
/** * 类型:ClientSide * 对象:图形组件 * 事件:onBeforeRender * 实现效果:堆积图显示合计 */ function main(page: IPage, portlet: IEChartsPortlet) { if (!portlet.getChartOptions) return; let options = portlet.getChartOptions() if (!options.series || !options.series.length) return; /** 总数 */ let totals = getStackSumData(options.series) /** * 设置显示总数label * 最后一个series显示总数标签,其他的不显示标签 */ options.series.forEach((serie: any, index: number) => { if (index === options.series.length - 1) { serie.label ={ show: true, position: 'top', // 标签显示位置 formatter: function (params: any) { return totals[params.dataIndex] // 显示总数 }, textStyle: { color: '#000', // 标签文字颜色 } } } else { serie.label.show = false } }) portlet.setChartOptions(options) } /** * 计算总数据 */ function getStackSumData(series: any) { if (!series || !series.length) { return []; } let result: any = [] series.forEach((serie: any, index: number) => { serie.data.forEach((data: any, idx: number) => { let value = Number((data.value && data.value[1]) || 0) if (typeof result[idx] === 'undefined') { result.push(value) } else { result[idx] += value; } result[idx] = parseFloat(result[idx].toFixed(2)) }) }) return result; } |
代码资源:migrate-堆积图显示合计.xml