ChartJS 缩放粒度

ChartJS Zoom Granularity

我正在处理的数据的 'floor' 粒度为 'Days'。任何更细粒度的(例如小时)都没有意义。然而,ChartJS 插件允许用户继续缩放到更精细的比例。

如何检测缩放级别现在已达到 'Days' 并防止进一步放大?我想允许从年 -> 天级别缩放,但不能超出此范围。

我用我认为的技巧解决了这个问题:

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

备注:

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