功能
后台返回数据包含年,月和日,希望实现一个柱状图,当点击年数据时,下钻到月数据,点击月数据时,下钻到日数据。并包含返回功能。
思路
通过重绘图表的方式实现,实现思路如下:
- 默认显示年数据
- 当点击年数据柱子时,销毁图例,使用月数据重绘图表,下钻月数据类似
- 增加一个按钮用来返回上层图表,使用相对定位定位在图表右上方
关键代码
本项目使用 jQuery + zui 实现,以下为关键代码:
index.html
1 2 3 4 5 6
| <div class="boxall" style="height: 5rem" style="position: relative"> // 柱状图 <div id="BatteryReportChart" style="height: 4rem; margin-top: 20px"></div> // 返回标签 <button class="btn btn-info ring-button" id="onBack">Back</button> </div>
|
css 文件:
1 2 3 4 5
| .ring-button { position: absolute; right: 10%; top: 17%; }
|
index.js 文件:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44
| let dayMonthYear = "year";
let globalYear = ""; let globalMonth = "";
$("#onBack").on("click", function () { if (dayMonthYear === "day") { dayMonthYear = "month"; } else if (dayMonthYear === "month") { dayMonthYear = "year"; } getChartData(dayMonthYear, globalYear, globalMonth); });
function getChartData(dayMonthYear, globalYear, globalMonth) { BatteryReport(option); }
function BatteryReport(option) { BatteryReportChart.dispose(); BatteryReportChart = echarts.init( document.getElementById("BatteryReportChart") ); BatteryReportChart.setOption(option); BatteryReportChart.on("click", function (params) { if (dayMonthYear === "year") { dayMonthYear = "month"; globalYear = params.name; } else if (dayMonthYear === "month") { dayMonthYear = "day"; globalMonth = params.name; } getChartData(dayMonthYear, globalYear, globalMonth); }); window.addEventListener("resize", function () { BatteryReportChart.resize(); }); }
|
References
echarts 饼图下钻(下钻+可返回版本)
ECharts 官网下钻一层的示例
数据可视化】echarts 数据下钻