javascript - Charts.js DataIndex 未根据所选数据集进行更新

标签 javascript chart.js

fiddle :https://jsfiddle.net/jfft219g/
您可以在这里看到我有 3 个数据集,即医院、转诊、总计。我在每个栏的顶部显示 dataindexes
但现在,当我禁用一个数据集时,已禁用的数据集dataIndexes仍然存在。如何管理这个。请检查 fiddle 是否有运行代码。
任何帮助将不胜感激。

<div id="patientsBarGraphDiv" style="border: 1px solid black">
                                    <canvas id="patientsBarGraph"></canvas> 
                                </div>  
var paitentData = {
      labels: ["Today", "Week", "Month", "Year"],
      datasets: [{
        label: "Hospital Patients",
        fillColor: "#79D1CF",
            strokeColor: "#79D1CF",

        data:[ 24, 20, 30, 40] // adding data for the hospital section
      }, {
        label: "Referral Patients",
       fillColor: "#79D1CF",
            strokeColor: "#79D1CF",

       data:[ 14, 24, 34, 44] // adding data for referral section
      },
      {
            label: "Total Patients",
            fillColor: "#79D1CF",
            strokeColor: "#79D1CF",

          data:[ 22, 32, 43, 52] // adding data for Total section
          } ]
    };
   var opt = {
             responsive: true,
                legend: {
                    position: 'top',
                },
                title: {
                    display: true,
                    text: 'Patients Graph'
                },
                hover: {
                    animationDuration: 1
                },

                animation: {
                    duration: 1,
                    onComplete: function () {
                        var chartInstance = this.chart,
                            ctx = chartInstance.ctx;
                        ctx.textAlign = 'center';
                        ctx.fillStyle = "rgba(0, 0, 0, 1)";
                        ctx.textBaseline = 'bottom';

                        this.data.datasets.forEach(function (dataset, i) {
                            var meta = chartInstance.controller.getDatasetMeta(i);
                            meta.data.forEach(function (bar, index) {
                                var data = dataset.data[index];
                                ctx.fillText(data, bar._model.x, bar._model.y - 5);

                            });
                        });
                    }
                }
        };

     var ctx = document.getElementById("patientsBarGraph").getContext("2d");// getting the id of canvas
    var MyNewChart = new Chart(ctx,{
        type: 'bar',
        data: paitentData,
        options:opt
    });

最佳答案

forEach 循环中添加以下代码行,这将解决 dataIndex 更新问题:

var isDatasetVisible = chartInstance.controller.isDatasetVisible(i);
if (!isDatasetVisible) return;

这是working example on JSFiddle

关于javascript - Charts.js DataIndex 未根据所选数据集进行更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46235186/

相关文章:

javascript - 使用javascript强制刷新rss feed

javascript - 滚动到页面javascript的特定高度

javascript - ChartJS 版本 3 - 多折线图的通用图例

javascript - Chartjs 默认弃用警告

plugins - chartjs-plugin-streaming + chartjs-插件-缩放

chart.js - 从点样式图例中删除 ChartJS 2 边框和阴影

JavaScript/jQuery 下拉列表更改事件与关闭不起作用

javascript - 如何禁用浏览器或元素滚动条,但仍允许使用滚轮或箭头键滚动?

javascript - 提交功能不起作用?

tooltip - 没有值时如何禁用 Chart JS 工具提示?