אינטראקציה עם התרשים

הנושאים שהצגנו עד כה מספיקים לדפי אינטרנט רבים: שרטטת את התרשים שלך בדף. עם זאת, אם רוצים לאתר קליקים של משתמשים, או לשנות את המאפיינים או הנתונים בתרשים שכבר שרטטתם, צריך להקשיב לאירועים שהתרשים מעלה.

בכל התרשימים מוצגים אירועים מסוגים מסוימים. הנה הסיבות הנפוצות ביותר:

  • ready - מוצג כאשר התרשים משורטט בדף ומוכן להגיב לשיטות: מאזינים לאירוע הזה אם רוצים לבקש מידע מהתרשים.
  • select – כאשר המשתמש בוחר משהו בתרשים: בדרך כלל הוא לוחץ על עמודה או על פרוסת עוגה.
  • error – נטייה כאשר התרשים לא יכול לעבד את הנתונים שהועברו, בדרך כלל מפני שהפורמט DataTable שגוי.
  • onmouseover ו-onmouseout – מופעל כשהמשתמש מעביר את העכבר מעל רכיב תרשים מסוים או מכבה אותו, בהתאמה.

האזנה לאירועים היא פשוטה. כל מה שצריך לעשות הוא לקרוא ל-google.visualization.events.addListener() להעביר כינוי לידית התרשים, לתת שם לאירוע ולתפוס שם כדי ליצור איתו קשר לאחר השלכת האירוע. אפשר להפעיל את השיטה הזו בכל ידיד תרשים, גם אם עדיין לא התקשרתם אל draw(). לתשומת ליבך, אפשר לקרוא ל-google.visualization.events.addOneTimeListener() אם רוצים שמתקשר יקרא פעם אחת בלבד לפני שיסיר את עצמו.

בהמשך מוצג קטע קוד חלקי שמראה איך להירשם לאירוע של בחירה בתרשים:

load libraries...

function drawChart() {

  prepare data...

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

  // The select handler. Call the chart's getSelection() method
  function selectHandler() {
    var selectedItem = chart.getSelection()[0];
    if (selectedItem) {
      var value = data.getValue(selectedItem.row, selectedItem.column);
      alert('The user selected ' + value);
    }
  }

  // Listen for the 'select' event, and call my function selectHandler() when
  // the user selects something on the chart.
  google.visualization.events.addListener(chart, 'select', selectHandler);

  draw the chart...

}

למטה מופיעה דוגמה לקוד של שלום תרשימים עם בורר אירועים חדש שנבחר. רוצה לנסות בעצמך?

<html>
  <head>
    <!--Load the AJAX API-->
    <script type="text/javascript" src="https://www.gstatic.com/charts/loader.js"></script>
    <script type="text/javascript">

      // Load the Visualization API and the piechart package.
      google.charts.load('current', {'packages':['corechart']});

      // Set a callback to run when the Google Visualization API is loaded.
      google.charts.setOnLoadCallback(drawChart);

      // Callback that creates and populates a data table,
      // instantiates the pie chart, passes in the data and
      // draws it.
      function drawChart() {

        // Create the data table.
        var data = new google.visualization.DataTable();
        data.addColumn('string', 'Topping');
        data.addColumn('number', 'Slices');
        data.addRows([
          ['Mushrooms', 3],
          ['Onions', 1],
          ['Olives', 1], 
          ['Zucchini', 1],
          ['Pepperoni', 2]
        ]);

        // Set chart options
        var options = {'title':'How Much Pizza I Ate Last Night',
                       'width':400,
                       'height':300};
 
        // Instantiate and draw our chart, passing in some options.
        var chart = new google.visualization.PieChart(document.getElementById('chart_div'));

        function selectHandler() {
          var selectedItem = chart.getSelection()[0];
          if (selectedItem) {
            var topping = data.getValue(selectedItem.row, 0);
            alert('The user selected ' + topping);
          }
        }

        google.visualization.events.addListener(chart, 'select', selectHandler);    
        chart.draw(data, options);
      }

    </script>
  </head>
  <body>
    <!--Div that will hold the pie chart-->
    <div id="chart_div" style="width:400; height:300"></div>
  </body>
</html>

 

מידע נוסף