Javascript — Google чарты Пирог без данных

Я пытаюсь использовать диаграммы Google на своем сайте опросов. Все работает нормально, пока у меня нет голосов, чтобы показать (например, никто не ответил на вопрос). Диаграмма даже не появляется, как вы можете видеть в этом примере: http://jsfiddle.net/au9prxsg/3/

google.setOnLoadCallback(drawChart);
function drawChart() {

var data = google.visualization.arrayToDataTable([
['Task', 'Hours per Day'],
['Work',     0],
['Eat',      0],
['Commute',  0],
['Watch TV', 0],
['Sleep',    0]
]);

var options = {
title: 'My Daily Activities',
sliceVisibilityThreshold: 0
};

var chart = new google.visualization.PieChart(document.getElementById('piechart'));

chart.draw(data, options);
}

введите описание изображения здесь

Я даже поставил свойство sliceVisibilityThreshold: 0.
Можно ли иметь круговую диаграмму с любыми данными?

0

Решение

Вы можете проверить dataTable, чтобы увидеть, существуют ли ответы, а затем настроить то, что вы отображаете соответствующим образом.

google.setOnLoadCallback(drawChart);
function drawChart() {

var data = google.visualization.arrayToDataTable([
['Task', 'Hours per Day'],
['Work',     0],
['Eat',      0],
['Commute',  0],
['Watch TV', 0],
['Sleep',    0]
]);

if(hasResponses(data, 1){
...
[build your options array and draw you chart]
...
}else{
...
[display something else instead of the chart (i.e., a graphic or text indicating that the question has no responses).]
}
}function hasResponses(datasource, column){
var sumValues = 0;
for(var i = 0; i < datasource.getNumberOfRows(); ++i) {
sumValues = sumValues + datasource.getValue(column, i);
}
if(sumValues > 0){
return true;
}else{
return false;
}
}

Это предполагает, что каждый респондент предоставит значение> 0 по крайней мере для одного вида деятельности (работа, сон и т. Д.), В противном случае сбор данных (опрос) должен иметь категорию «всеохватывающий» (т. Е. «Другое» и т. Д.). ) что позволит вам форсировать ответ на вопрос, не затрагивая целостность ответа.

Предполагая, что ваши данные поступают из какой-то другой базы данных (не введенной вручную в javascript), более быстрый и простой метод может включать подсчет количества ответов в вашем наборе данных перед построением таблицы данных в javascript. Затем, используя логику, аналогичную приведенной выше, отобразите альтернативное сообщение, если существует менее одного ответа.

0

Другие решения

Изменить перспективу

var data = google.visualization.arrayToDataTable([
['Task', 'Hours per Day'],
['Work',     0],
['Eat',      0],
['Commute',  0],
['Watch TV', 0],
['Sleep',    0],
['No activities or no response',    24]
]);

или же

var data = google.visualization.arrayToDataTable([
['Task', 'Hours per Day'],
['Work no response',     4.8],
['Eat no response',     4.8],
['Commute no response',     4.8],
['Watch TV no response',     4.8],
['Sleep no response',     4.8]
]);
1

JS Fiddle

У меня нормально работает? в чем ошибка

Add the js in the external js section, и просто скопируйте URL-адрес там, это работает

0
По вопросам рекламы ammmcru@yandex.ru
Adblock
detector