1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798 |
- // 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);
|