Вопрос:

Показать сообщение «Нет данных» для круговой диаграммы без данных

chart.js pie-chart

5256 просмотра

2 ответа

114 Репутация автора

У меня ниже Piechart, используя chartjs. Мне нужно показать сообщение «Нет данных», когда нечего показать.

Но я не могу найти такой способ в уроках chartjs. Может кто-нибудь, пожалуйста, помогите?

Круговая диаграмма HTML

<div id="canvas-holder-CT" style="width:46%;float:right;position: absolute; left: 0px; top: 700px;">
    <canvas id="chart-area-CT" width="350" height="450" style="display: block; margin-left:2em">
    </canvas>
    <center> <b><details>
      <summary>Distribution by Call Types</summary>
    </details> </b></center>
</div>

Скрипт круговой диаграммы

var configCT = {
    type : 'pie',
    data : {
        datasets : [{
                data : valuesCT,
                backgroundColor : coloringCT,
                label : 'Distribution by Call Types'
            }
        ],
        labels : labelsCT
    },
    options : {
        segmentShowStroke : false,
        legend : false,
        animateScale : true,
        responsive : true,
        showAllTooltips : false,
        tooltips : {
            custom : function (tooltip) {
                if (!tooltip)
                    return;
                tooltip.displayColors = false;
            }
        }
    }
};

var ctxCT = document.getElementById("chart-area-CT").getContext("2d");
if (myPieCT != null) {
    myPieCT.destroy();
}
myPieCT = new Chart(ctxCT, configCT);
Автор: user59759 Источник Размещён: 07.01.2018 11:20

Ответы (2)


5 плюса

14700 Репутация автора

Вы проверили этот открытый вопрос ?

И относительное решение, предложенное пользователем etimberg :

Chart.plugins.register({
    afterDraw: function(chart) {
    if (chart.data.datasets.length === 0) {
        // No data is present
      var ctx = chart.chart.ctx;
      var width = chart.chart.width;
      var height = chart.chart.height
      chart.clear();

      ctx.save();
      ctx.textAlign = 'center';
      ctx.textBaseline = 'middle';
      ctx.font = "16px normal 'Helvetica Nueue'";
      ctx.fillText('No data to display', width / 2, height / 2);
      ctx.restore();
    }
  }
});

Смотрите: https://jsfiddle.net/x04ptfuu/

Автор: beaver Размещён: 08.01.2018 01:41

0 плюса

1634 Репутация автора

Может быть обработано displayсвойством CSS .

foo.html

<div id="showId" class="showData">
  <canvas id="myChart"></canvas>
</div>
<div id="noId" class="noData">
  <span>No Data Available</span>
<div>

foo.css

.showData {
   display: block;
}

.noData {
   display: none;
}

foo.js

// ...code
if(chartData) {
  document.getElementById("showId").classList.add("showData");
  document.getElementById("noId").classList.remove("noData");
} else {
  document.getElementById("showId").classList.remove("showData");
  document.getElementById("noId").classList.add("noData");
}
Автор: solanki... Размещён: 03.05.2019 02:57
Вопросы из категории :
32x32