// SPDX-License-Identifier: GPL-3.0-or-later // ---------------------------------------------------------------------------- // This script periodically updates all the netdata badges you have added to a // page as images. You don't need this script if you add the badges with // <embed src="..."/> - embedded badges auto-refresh by themselves. // // You can set the following variables before loading this script: /*global netdata_update_every *//* number, the time in seconds to update the badges * (default: 15) */ /*global netdata_live_callback *//* function, callback to be called on each iteration while updating the badges * (default: null) */ /*global netdata_paused_callback *//* function, callback to be called when the update pauses * (default: null) */ /* // EXAMPLE HTML PAGE: <html> <head> <script> // how frequently to update the badges? var netdata_update_every = 15; // show a count-down for badge refreshes var netdata_live_callback = function(secs, count) { document.body.style.opacity = 1; if(count) document.getElementById("pageliveinfo").innerHTML = "This page is live - updated <b>" + count + "</b> badges..."; else document.getElementById("pageliveinfo").innerHTML = "This page is live - badges will be updated in <b>" + secs + "</b> seconds..."; }; // show that we paused refreshes var netdata_paused_callback = function() { document.body.style.opacity = 0.5; document.getElementById("pageliveinfo").innerHTML = "Refresh paused - the page does not have your focus"; }; </script> <script src="https://localhost:19999/refresh-badges.js"></script> </head> <body> <div id="pageliveinfo">Please wait... loading...</div> <img src="http://localhost:19999/api/v1/badge.svg?chart=system.cpu"/> </body> </html> */ if(typeof netdata_update_every === 'undefined') netdata_update_every = 15; var netdata_was_live = false; var netdata_is_live = true; var netdata_loops = 0; function update_netdata_badges() { netdata_loops++; netdata_is_live = false; var updated = 0; var focus = document.hasFocus(); if(focus && netdata_loops >= netdata_update_every) { var len = document.images.length; while(len--) { var url = document.images[len].src; if(url.match(/\api\/v1\/badge\.svg/)) { if(url.match(/\?/)) url = url.replace(/&cacheBuster=\d*/, "") + "&cacheBuster=" + new Date().getTime().toString(); else url = url.replace(/\?cacheBuster=\d*/, "") + "?cacheBuster=" + new Date().getTime().toString(); document.images[len].src = url; updated++; } } netdata_loops = 0; } if(focus || updated) netdata_is_live = true; try { if(netdata_is_live && typeof netdata_live_callback === 'function') netdata_live_callback(netdata_update_every - netdata_loops, updated); else if(netdata_was_live !== netdata_is_live && typeof netdata_paused_callback === 'function') netdata_paused_callback(); } catch(e) { console.log(e); } netdata_was_live = netdata_is_live; setTimeout(update_netdata_badges, 1000); } setTimeout(update_netdata_badges, 1000);