Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Wykres do aktualizacji z listy rozwijanej

Możesz użyć addData i removeData , patrz https://www.chartjs.org/docs/latest/developers /aktualizacje.html . addData dodaje tylko jeden zestaw danych na wywołanie, ale removeData usuwa wszystkie zbiory danych z wykresu. Istnieje również sposób na wypychanie etykiety i zestawu danych, patrz przykład codepen:https://codepen.io/jordanwillis/ długopis/bqaGRR .

Najpierw musisz zapisać swój wykres w zmiennej, dzięki czemu możesz łatwo dodawać i usuwać dane. kiedy masz wykres zapisany w var, powiedzmy myChart , możesz wywołać removeData() jak:myChart.removeData() . Aby dodać dane musisz wysłać etykietę i dane takie jak:myChart.addData('news', [2, 32, 3]) .

Pomysł jest następny, aby zaktualizować wykres, gdy twoje wywołanie ajax zakończy się sukcesem. Ważne jest, aby instancja wykresu znajdowała się w tym samym pliku, w którym masz wywołanie ajax, powinieneś przenieść wywołanie onclick do pliku js lub wywołać funkcję z àpp.js .

Teraz zależy to od twojej struktury danych, będziesz musiał przejść przez każdą i uzyskać wartość i etykietę. Musisz uzyskać taki sam wynik z danych, jak podczas tworzenia wykresu.

PRÓBKA KODU:

Co będziesz mieć w app.js

$(document).ready(function(){

    $.ajax({
        url: "http://localhost/chartjs/data.php",
        method: "GET",
        success: function(data) {
            console.log(data);
            var op1 = [];
            var op2 = [];

            let data_keys = Object.keys(data[0])
            console.log(data_keys)
            first = data_keys[0] //1st element
            second = data_keys[1] //2nd element

            for(var i in data) {
                op1.push(data[i][first])
                op2.push(data[i][second])

            }

         var chartdata = {
         labels: op1,
         datasets : [
             {
             label: 'SystemID and Apparent Power (VA)',
             backgroundColor: 'rgba(250, 50, 50, 0.4)',
             borderColor: 'rgba(500, 50, 50, 0.5)',
             hoverBackgroundColor: 'rgba(500, 30, 30, 0.2)',
             hoverBorderColor: 'rgba(500, 30, 30, 0.3)',
             data: op2
         } 
         ]
  };

  var ctx = document.getElementById('mycanvas').getContext('2d');

  var barGraph = new Chart(ctx, {
    type: 'line',
    data: chartdata,
    options: {
    scales: {
       xAxes: [{
               ticks: {
                fontSize: 10
               }
              }],
        yAxes: [{
            ticks: {
                fontSize: 10
            }
        }]
            }
         }
      });
    },
    error: function(data) {
    console.log(data);
    }
    });

    function updateChartAjaxCall(data1, data2)
    {
        //ajax call here 
        $.ajax({
            type: 'POST',
            url: 'data.php',
            dataType: 'html',
            data: {data1:data1,data2:data2},
            success:function(data){ 
                // here also manipulate data what you get to update chart propertly
                myChart.removeData();
                myChart.addData('newLabel', [23, 33, 4]);
            }, 
            error:function (xhr, ajaxOptions, thrownError){
                console.log(thrownError);
            }, 
            complete: function(){
            }
        });
        e.preventDefault(); 
    }
});

Następnie bargraph.html ulegnie również zmianie:

<script type="text/javascript">

$('#submitButton').click(function(e){
    var data1=$("#data1").val();
    var data2=$("#data2").val();

    updateChartAjaxCall(data1, data2);
});
</script>



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Pole liczb całkowitych MySQL jest zwracane jako ciąg znaków w PHP

  2. Błąd 1062 — Zduplikowany wpis „127” dla klucza „PRIMARY” — nie można znaleźć przyczyny

  3. Jak mogę zsumować kolumny w wielu tabelach w MySQL?

  4. Jak utrzymywać sesje PHP w wielu domenach na tym samym serwerze?

  5. Zautomatyzuj wdrażanie swojego klastra MySQL lub Postgres z kopii zapasowej