// 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
// - 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:
Please wait... loading...
*/
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);