التفاعل مع الرسم البياني

وقد تناولنا ما نتناوله حتى الآن كافٍ للعديد من صفحات الويب؛ فقد رسمت مخططك البياني على الصفحة. مع ذلك، إذا كنت ترغب في جذب نقرات المستخدمين، أو تحتاج إلى التلاعب بالخصائص أو البيانات في مخطط رسمته فعلاً، فستحتاج إلى الاستماع إلى الأحداث التي يرميها المخطط.

تعرض كل الرسوم البيانية بعض أنواع الأحداث. وفي ما يلي الأسباب الأكثر شيوعًا:

  • ready - يتم عرضها عندما يتم رسم الرسم البياني على الصفحة ويكون جاهزًا للرد على الطرق. استمع إلى هذا الحدث إذا كنت بحاجة إلى طلب معلومات من الرسم البياني.
  • select - يظهر عندما يحدد المستخدم شيئًا على المخطط: عادةً بالنقر على شريط أو شريحة دائرية.
  • error - يظهر عندما لا يتمكن الرسم البياني من عرض البيانات التي تم تمريرها، وعادةً ما يكون هذا بسبب خطأ في تنسيق DataTable.
  • onmouseover وonmouseout - يتم عرضها عندما يحرك المستخدم الماوس فوق عنصر معين من المخطط أو يوقفه، على التوالي.

يُعد الاستماع إلى الأحداث أمرًا بسيطًا؛ ما عليك سوى استدعاء google.visualization.events.addListener() مرورًا بمقبض على المخطط، واسم الحدث للالتقاط، واسم معالج لاستدعاءه عند طرح الحدث. ويمكنك استدعاء هذه الطريقة باستخدام أي مؤشر رسم بياني، حتى إذا لم تطلب draw() بعد. تجدر الإشارة إلى أنه يمكنك الاتصال بـ google.visualization.events.addOneTimeListener() إذا كنت تريد استدعاء المستمع مرة واحدة بالضبط قبل إزالة نفسه.

في ما يلي مقتطف شفرة جزئي يعرض كيفية التسجيل لالتقاط حدث select في المخطط.

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>

 

مزيد من المعلومات