#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, прежде чем пытаться передать массив в javascript4. уже работаю над этим и тестирую, но появляется новая ошибка см. Отредактированный 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 за его помощь