首页 > 解决方案 > ChartJS 缩放粒度

问题描述

我正在使用的数据的“地板”粒度为“天”。任何更细粒度的(例如小时)都没有意义。然而,ChartJS 插件允许用户继续缩放到更精细的比例。

如何检测缩放级别现在已达到“天”并防止进一步放大?我想允许从年-> 日级别进行缩放,但没有超出此范围。

标签: chart.jschartjs-plugin-zoom

解决方案


我用我认为的黑客解决了这个问题:

  1. 挂钩onZoomStart回调。(文档)
  2. 读取 x 轴刻度的值(以毫秒为单位的日期)(文档)
  3. 检查任意两个连续日期之间的持续时间是否小于 1 天。

笔记:

  • 如果 (3) 为真,则图表已经处于最佳所需粒度
  • 如果event.deltaY > 0事件是缩小,否则放大
    • 我只想限制放大,所以如果事件是缩小,我会立即返回 true

推荐阅读