RGraph 饼图不刷新值

如何解决RGraph 饼图不刷新值

我尝试从 API 获取数据并刷新 Electron 应用程序页面上的饼图,但无法刷新图表的值。图表上的值永远不会改变。我之前用 rgraph Gauge 尝试过这种方法并且它有效,但是使用 Electron 不会刷新该值。我究竟做错了什么?谢谢您的帮助。 Screenshot of my electron application

<script>
    const ipcRenderer = require("electron").ipcRenderer;
    const  {session}  = require('electron').remote;
    document.getElementById("backBtn").addEventListener("click",()=>{
        ipcRenderer.send("btnBack","101");
    });

    temp = new rgraph.HorseshoeMeter({
        id: 'temp',min: 0,max: 50,value: 15,options: {
            colors: ["#3678c1",'#bed1E3'],textColor: "#3678c1",animationoptions: {frames: 60}                    // Doesn't need to be a string
        }
    }).draw();

    hum = new rgraph.HorseshoeMeter({
        id: 'hum',max: 100,value: 45,animationoptions: {frames: 60}                    // Doesn't need to be a string
        }
    }).draw();

    iaq = new rgraph.HorseshoeMeter({
        id: 'iaq',max: 3000,value: 1232,animationoptions: {frames: 60}                    // Doesn't need to be a string
         }
    }).draw();

async function getSessionInfo(){
    let myPromise = new Promise(function(myResolve,myReject) {
        session.defaultSession.cookies.get({name: "human_presence"},(error,cookies)=>{
            if(error){ myReject(error)}
            if(cookies.length>0){
                let arr = cookies[0];
                if(arr.name === "human_presence" && ( (Date.Now()-arr.expirationDate) < 600000)){
                    let obj = JSON.parse(arr.value);
                    myResolve(obj.accesstoken);
                }
                else{ myResolve("Token bulunamadı")}
            }
        });
    });
    return await myPromise;
}

function httpCall(){
    getSessionInfo().then(function (val){
        let method = "GET";
        let url = "http://localhost:4000/classroom/101";
        let xmlHttpRequest = new XMLHttpRequest();
        xmlHttpRequest.addEventListener("readystatechange",function() {
            if(this.readyState === 4) {
                console.log(this.responseText);
                let obj = JSON.parse(this.responseText);
                console.log(obj);
                document.getElementById("dateTime-101").innerHTML = "Son Kayıt Zamanı : "+obj.created;
                document.getElementById("NoS-101").innerHTML = "Öğrenci Sayısı : "+obj.NoS;
                temp.value = parseInt(obj.Temp);
                hum.value = parseInt(obj.Hum);
                iaq.value = parseInt(obj.IAQ);

                rgraph.redrawCanvas(temp.canvas);
                rgraph.redrawCanvas(hum.canvas);
                rgraph.redrawCanvas(iaq.canvas);
            }
        });
        xmlHttpRequest.open(method,url);
        xmlHttpRequest.setRequestHeader('Authorization','Bearer ' + val);
        xmlHttpRequest.send();
    })
}

window.onload = httpCall();
window.setInterval(function(){
    httpCall();
},20000);

解决方法

这是我发布到 RGraph 论坛的答案:

这是因为 HorseShoe 仪表并不是真正的“真实”RGraph 图表对象,而是对饼图的改编。因此,我认为在更新图表时重新绘制整个图表会更容易。

这是一些代码:

<canvas id="cvs" width="400" height="400">[No canvas support]</canvas>

<script>
    function draw (value)
    {
        RGraph.reset(document.getElementById('cvs'));

        new RGraph.HorseshoeMeter({
            id: 'cvs',min: 0,max: 10000,value: value,options: {
            }
        }).roundRobin();
    }
    
    delay = 2000;
    
    function update ()
    {
        var value = Math.random(0,1000);

        draw(value * 10000);
        
        // Call ourselves again
        setTimeout(update,delay);
    }
    
    setTimeout(update,delay);
</script>

这是代码的 CodePen:

https://codepen.io/rgraph/pen/gOLYOej

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?
Java在半透明框架/面板/组件上重新绘画。
Java“ Class.forName()”和“ Class.forName()。newInstance()”之间有什么区别?
在此环境中不提供编译器。也许是在JRE而不是JDK上运行?
Java用相同的方法在一个类中实现两个接口。哪种接口方法被覆盖?
Java 什么是Runtime.getRuntime()。totalMemory()和freeMemory()?
java.library.path中的java.lang.UnsatisfiedLinkError否*****。dll
JavaFX“位置是必需的。” 即使在同一包装中
Java 导入两个具有相同名称的类。怎么处理?
Java 是否应该在HttpServletResponse.getOutputStream()/。getWriter()上调用.close()?
Java RegEx元字符(。)和普通点?