google диаграммы нет данных (пустая страница)

#javascript #php #charts #laravel-4 #google-visualization

#javascript #php #Диаграммы #laravel-4 #google-визуализация

Вопрос:

у меня есть веб-страница, содержащая 8 диаграмм Google

когда у меня есть все данные для диаграмм, они работают нормально

но иногда на некоторых диаграммах нет данных (2 или 3 из 8)

итак, я получаю пустую страницу, вызывающую эти диаграммы

как пропустить сценарий пустых диаграмм данных

вот сценарий одного из них (все похожие сценарии)

 <script type="text/javascript">
  google.charts.setOnLoadCallback(drawCostCharts);

  function drawCostCharts() {
    var data = google.visualization.arrayToDataTable([
             ['WEEK', 'total Cost' ,{ role: 'annotation' } , 'Budget objectif' ],
                <?    foreach($***THEBlankDATAHERE***->getRows() as $row) {     

                        $DBcostmonth = DB::table('budget_objectif')
                                                    ->select('value')
                                                    ->where('cam_id', 2)
                                                    ->where('year', $row[1])
                                                    ->where('month', $row[0])
                                                    ->get();  
                        $test = $DBcostmonth[0]->value; ?>

            ["<? echo $row[0]; ?>",  <? echo $row[2]; ?>, <? echo floor($row[2]); ?>, <? echo $test; ?>], 
                <? }?>

          ]);

    var options = {
                            // title: 'Google Analytics Revenue',
                            vAxis: {minValue:0},
                            curveType: "function",width: 720, height: 400,
                            chartArea:{left:60,top:40,width:"90%",height:"70%"},
                            legend: {position: 'none'},
                            seriesType: 'bars',
                            series: {0:{color: 'purple'}},
                            isStacked:'true',
                            series: {1: {type: 'line', color:'red' , curveType: 'straight' }}


            };

    var chart = new google.visualization.ComboChart(document.getElementById('div1_3'));
        chart.draw(data, options);
    }
 

Отредактировано: этот источник данных находится в родительском представлении в laravel 4.1 и представляет собой данные Google Analytics

таким образом, некоторые пользователи имеют доступ ко всем данным для диаграмм, а некоторые не имеют доступа к данным в некоторых диаграммах

Отредактировано 2 :

я меняю сценарий в коде и получаю страницу, но без каких-либо диаграмм новый код :

 <?php if ($tristanweekdata) { ?>
 <script type="text/javascript">
  google.charts.load('current', {'packages':['corechart']});
  google.charts.setOnLoadCallback(drawCostCharts);

  function drawCostCharts() {
    var data = google.visualization.arrayToDataTable([
             ['WEEK', 'total Cost' ,{ role: 'annotation' } , 'Budget objectif'],
                <?    foreach($tristanweekdata->getRows() as $row) {

                $DBcostweek = DB::table('budget_objectif')
                                                    ->select('value')
                                                    ->where('cam_id', 2)
                                                    ->where('year', $row[1])
                                                    ->where('month', wtm($row[0]))
                                                    ->get();  
                    $test = $DBcostweek[0]->value/4.33; 


                ?>
            ["<? echo $row[0]; ?>",  <? echo $row[2]; ?>, <? echo floor($row[2]); ?> ,<? echo $test;?> ], 
                <? }?>

          ]);

    var options = {
                            // title: 'Google Analytics Revenue',
                            vAxis: {minValue:0},
                            curveType: "function",width: 720, height: 400,
                            chartArea:{left:60,top:40,width:"90%",height:"70%"},
                            legend: {position: 'none'},
                            seriesType: 'bars',
                            series: {0:{color: 'purple'}},
                            isStacked:'true',
                            series: {1: {type: 'line', color:'red' , curveType: 'straight' }}

            };
    var chart = new google.visualization.ComboChart(document.getElementById('tristancostweek'));
        chart.draw(data, options);
    }
 
  <?php } ?>
 

теперь я получаю другую ошибку в консоли браузера :

«»Неперехваченная ошибка типа: не удается прочитать свойство ‘arrayToDataTable’ неопределенного»»

Спасибо

Комментарии:

1. нет, это не работает со мной, я уже использую аннотацию в диаграммах. и я хочу, чтобы диаграммы исчезли, но в любом случае спасибо @WhiteHat

2. 3 ошибки 1 — Неперехваченная синтаксическая ошибка: неожиданный токен < «»мне нужны данные из Google Analytics, и у меня нет разрешения «» 2 — Неперехваченная ошибка ссылки: prettyPrint не определен «» то же, что и раньше «» 3 — Не удалось загрузить ресурс: сервер ответил со статусом 500 (внутренняя ошибка сервера)

3.необходимо проверить sizeof getRows PHP, прежде чем пытаться передать массив в javascript

4. уже работаю над этим и тестирую, но появляется новая ошибка см. Отредактированный 2 в основном вопросе

5. ошибка в хороших диаграммах @WhiteHat

Ответ №1:

я понял, как правильно заставить это работать 🙂

ответ на этот вопрос содержится в edited2 в вопросе, но есть 1 изменение

что вам нужно, так это загрузить диаграмму Google из скрипта и сделать ее такой:

  <script type="text/javascript">
  google.charts.load('current', {'packages':['corechart']});
  </script>
 

затем вы можете поставить условие, которое вы хотите в моем, вот так :

 <?php if ($tristanweekdata) { ?>
     <script type="text/javascript">
      google.charts.setOnLoadCallback(drawCostCharts);

      function drawCostCharts() {
        var data = google.visualization.arrayToDataTable([
                 ['WEEK', 'total Cost' ,{ role: 'annotation' } , 'Budget objectif'],
                    <?    foreach($tristanweekdata->getRows() as $row) {

                    $DBcostweek = DB::table('budget_objectif')
                                                        ->select('value')
                                                        ->where('cam_id', 2)
                                                        ->where('year', $row[1])
                                                        ->where('month', wtm($row[0]))
                                                        ->get();  
                        $test = $DBcostweek[0]->value/4.33; 


                    ?>
                ["<? echo $row[0]; ?>",  <? echo $row[2]; ?>, <? echo floor($row[2]); ?> ,<? echo $test;?> ], 
                    <? }?>

              ]);

        var options = {
                                // title: 'Google Analytics Revenue',
                                vAxis: {minValue:0},
                                curveType: "function",width: 720, height: 400,
                                chartArea:{left:60,top:40,width:"90%",height:"70%"},
                                legend: {position: 'none'},
                                seriesType: 'bars',
                                series: {0:{color: 'purple'}},
                                isStacked:'true',
                                series: {1: {type: 'line', color:'red' , curveType: 'straight' }}

                };
        var chart = new google.visualization.ComboChart(document.getElementById('tristancostweek'));
            chart.draw(data, options);
        }

</script>    

     <?php } ?>
 

тогда все диаграммы работают, если у пользователя есть правильный доступ 😉

Спасибо @WhiteHat за его помощь