我该怎么做,以便每次插入数据时或按时间间隔更新我的chartjs?

时间:2019-02-11 13:58:46

标签: javascript php pdo chart.js

我有一个使用变量作为数据的chartjs。我希望它可以更新,以便可以看到新数据。如果插入数据时我可以做到最好,但我不知道如何执行此操作,其他选择是随着时间间隔进行更新。 我看过https://www.chartjs.org/docs/latest/developers/updates.html,但对我来说没有意义

这是我的代码图表工作仅需对其自身进行更新

import android.content.Intent;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.widget.ImageButton;

import com.github.barteksc.pdfviewer.PDFView;

public class MateriActivity extends AppCompatActivity {

    PDFView pdfView;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_materi);

        pdfView = (PDFView)findViewById(R.id.pdfView);
        pdfView.fromAsset("PPKI2017.pdf").load();


        ImageButton butt1 =(ImageButton)findViewById(R.id.materi_btn);
        ImageButton butt2 =(ImageButton)findViewById(R.id.dblist_btn);


        butt1.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                Intent intent= new Intent(MateriActivity.this,MateriActivity.class);
                    startActivity(intent);
            }
        });

        butt2.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                Intent intent= new Intent(MateriActivity.this,DBListActivity.class);
                startActivity(intent);
            }
        });

    }
}

2 个答案:

答案 0 :(得分:1)

有几种方法可以实现此目的。

最简单但可能最糟糕的解决方案是仅每x秒刷新一次页面。 但是,此解决方案将使页面上几乎所有的交互性都无用,因为输入等将在页面每次刷新时全部重置。 将以下内容放入您的<head>部分。 content将定义每次刷新之间的间隔时间。

<META HTTP-EQUIV="refresh" CONTENT="5">

答案 1 :(得分:0)

有一种方法可以使用function twoSum(arr, S) { var hashTable = {}; // check each element in array for (var i = 0; i < arr.length; i++) { // calculate S - current element var sumMinusElement = S - arr[i]; // check if this number exists in hash table // if so then we found a pair of numbers that sum to S if (hashTable[sumMinusElement.toString()] !== undefined) { return true; } // add the current number to the hash table hashTable[arr[i].toString()] = arr[i]; } // return false as default return false; } console.log(twoSum([3, 5, 2, -4, 8, 11], 7));来调用函数来更新图表(请参见示例:https://jsbin.com/yitep/5/edit?html,js,output)。

或者下一个解决方案是添加一个将在数据插入时调用的函数。您可以致电setInterval来更新图表。 可能会发生一些您没有或无法获取图表实例的情况,在这种情况下,您可以使用(这是获取实例的唯一方法,如果代码是在另一个脚本中执行的,则需要此实例):

myChart.update()

现在,当您拥有图表实例时,就可以使用数据进行操作,请使用 Chart.helpers.each(Chart.instances, function (chart) { // your code } addData(在文档中检查其工作方式)。

问题在于它遍历所有图表,因此您需要以某种方式检查什么是目标图表,您可以使用removeData进行此操作。该命令将为您提供画布图表ID(在您的情况下为chart.chart.canvas.id),因此您只能在所选图表上进行更改。

要获取图表选项,您可以使用图表API事件myChart(检查文档:https://www.chartjs.org/docs/latest/developers/api.html)。

希望有帮助,随时要求更多。