Данные из PHP в JS - календарь Google + CanvasJS

1

Я хочу получить данные из календаря Google, чтобы сделать Chart, насколько вы на работе.

Моя проблема в том, что я не могу загрузить данные с PHP на JS → $ DataJSON, может быть загружен JS... Окончательный скрипт должен подсчитывать, сколько часов вы проводите на собраниях и т.д. Есть код

<?php
require_once 'google-api-php-client/vendor/autoload.php';

session_start();

$client = new Google_Client();
$client->setAuthConfigFile('client_secret.json');
$client->addScope("https://www.googleapis.com/auth/calendar");

if (isset($_SESSION['access_token']) && $_SESSION['access_token']) {
  $client->setAccessToken($_SESSION['access_token']);

    $service = new Google_Service_Calendar($client);    

    $calendarList = $service->calendarList->listCalendarList();
?>

<form action="" method="POST" enctype="multipart/form-data"> 

<?php
while(true) {
    foreach ($calendarList->getItems() as $calendarListEntry) {
        echo '<input type="checkbox" value='.$calendarListEntry->id.' name="zasedacky[]">' .$calendarListEntry->getSummary()."</br>";
    }
    $pageToken = $calendarList->getNextPageToken();
    if ($pageToken) {
        $optParams = array('pageToken' => $pageToken);
        $calendarList = $service->calendarList->listCalendarList($optParams);
    } else {
        break;
    }
}    
?>
<select name="type">
<option value="column">Column</option>
<option value="bar">Bar</option>
<option value="area">Area</option>
</select>
<input type="submit" name="submit">
</form>
<?php
if(isset($_POST['submit'])){ 
  $type = $_POST['type'];
  $zst = $_POST['zasedacky'];  

  if(empty($zst)) 
  {
    echo("Nevybrali jste žádnou zasedací místnost.");
  } 
  else
  {
    $N = count($zst);
    $data_points = array();

    for($i=0; $i < $N; $i++)
    {
      $calendar = $service->calendars->get($zst[$i]);
      $calendarJSON = array("label" => $calendar->getSummary(), "y" => "11");
      array_push($data_points, $calendarJSON);
    }
    $dataJSON = json_encode($data_points, JSON_NUMERIC_CHECK);
    echo $dataJSON;
  }
}
?>
<script>
$(document).ready(function () {
    var dataPoints = <?=$dataJSON ?>;
    for(var i = 0; i <= result.length-1; i++) 
    {
            dataPoints.push({label: result[i].label, y: parseInt(result[i].y)});
        }
  var chart = new CanvasJS.Chart("chartContainer", {
        data: [
        {
            dataPoints: dataPoints
        }
        ]
    });
    chart.render();
  document.write(dataPoints);
});
</script>
</body>
<?php

} else {
  $redirect_uri = 'http://localhost/calendar/oauth2callback.php';
  header('Location: ' . filter_var($redirect_uri, FILTER_SANITIZE_URL));
}

Спасибо за вашу помощь

  • 0
    Можете ли вы опубликовать данные JSON ($ dataJSON), чтобы было легче выяснить, в чем причина?
  • 0
    @Sunil {"label": "ETN Kajuta (309a)", "y": 11}, {"label": "[email protected]" "y": 11}, {"label": "ETN \ u0158editelna (331g) "," y ": 11}]
Теги:
canvasjs
calendar

1 ответ

1

Кажется, вы забыли определить переменную результата. Возможно, вы намеревались сделать это:

<script>
$(document).ready(function () {
    var result = <?=$dataJSON ?>;
    var dataPoints = [];
    for(var i = 0; i <= result.length-1; i++) 
    {
            dataPoints.push({label: result[i].label, y: parseInt(result[i].y)});
        }
  var chart = new CanvasJS.Chart("chartContainer", {
        data: [
        {
            dataPoints: dataPoints
        }
        ]
    });
    chart.render();
});
</script>

Формат жесткого кодирования, который вы предоставили, кажется, работает нормально. Вот JSFiddle

Ещё вопросы

Сообщество Overcoder
Наверх
Меню