summaryrefslogtreecommitdiffstats
path: root/web/gui/src/dashboard.js/boot.js
diff options
context:
space:
mode:
authorDaniel Baumann <daniel.baumann@progress-linux.org>2024-05-06 01:22:31 +0000
committerDaniel Baumann <daniel.baumann@progress-linux.org>2024-05-06 01:22:31 +0000
commit8d4f58e49b9dc7d3545651023a36729de773ad86 (patch)
tree7bc7be4a8e9e298daa1349348400aa2a653866f2 /web/gui/src/dashboard.js/boot.js
parentInitial commit. (diff)
downloadnetdata-4aa3875af220e78bf296859b10b66a92e9bbed37.tar.xz
netdata-4aa3875af220e78bf296859b10b66a92e9bbed37.zip
Adding upstream version 1.12.0.upstream/1.12.0upstream
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'web/gui/src/dashboard.js/boot.js')
-rw-r--r--web/gui/src/dashboard.js/boot.js142
1 files changed, 142 insertions, 0 deletions
diff --git a/web/gui/src/dashboard.js/boot.js b/web/gui/src/dashboard.js/boot.js
new file mode 100644
index 0000000..c448213
--- /dev/null
+++ b/web/gui/src/dashboard.js/boot.js
@@ -0,0 +1,142 @@
+
+// Load required JS libraries and CSS
+
+NETDATA.requiredJs = [
+ {
+ url: NETDATA.serverStatic + 'lib/bootstrap-3.3.7.min.js',
+ async: false,
+ isAlreadyLoaded: function () {
+ // check if bootstrap is loaded
+ if (typeof $().emulateTransitionEnd === 'function') {
+ return true;
+ } else {
+ return typeof netdataNoBootstrap !== 'undefined' && netdataNoBootstrap;
+ }
+ }
+ },
+ {
+ url: NETDATA.serverStatic + 'lib/fontawesome-all-5.0.1.min.js',
+ async: true,
+ isAlreadyLoaded: function () {
+ return typeof netdataNoFontAwesome !== 'undefined' && netdataNoFontAwesome;
+ }
+ },
+ {
+ url: NETDATA.serverStatic + 'lib/perfect-scrollbar-0.6.15.min.js',
+ isAlreadyLoaded: function () {
+ return false;
+ }
+ }
+];
+
+NETDATA.requiredCSS = [
+ {
+ url: NETDATA.themes.current.bootstrap_css,
+ isAlreadyLoaded: function () {
+ return typeof netdataNoBootstrap !== 'undefined' && netdataNoBootstrap;
+ }
+ },
+ {
+ url: NETDATA.themes.current.dashboard_css,
+ isAlreadyLoaded: function () {
+ return false;
+ }
+ }
+];
+
+NETDATA.loadedRequiredJs = 0;
+NETDATA.loadRequiredJs = function (index, callback) {
+ if (index >= NETDATA.requiredJs.length) {
+ if (typeof callback === 'function') {
+ return callback();
+ }
+ return;
+ }
+
+ if (NETDATA.requiredJs[index].isAlreadyLoaded()) {
+ NETDATA.loadedRequiredJs++;
+ NETDATA.loadRequiredJs(++index, callback);
+ return;
+ }
+
+ if (NETDATA.options.debug.main_loop) {
+ console.log('loading ' + NETDATA.requiredJs[index].url);
+ }
+
+ let async = true;
+ if (typeof NETDATA.requiredJs[index].async !== 'undefined' && NETDATA.requiredJs[index].async === false) {
+ async = false;
+ }
+
+ $.ajax({
+ url: NETDATA.requiredJs[index].url,
+ cache: true,
+ dataType: "script",
+ xhrFields: {withCredentials: true} // required for the cookie
+ })
+ .done(function () {
+ if (NETDATA.options.debug.main_loop) {
+ console.log('loaded ' + NETDATA.requiredJs[index].url);
+ }
+ })
+ .fail(function () {
+ alert('Cannot load required JS library: ' + NETDATA.requiredJs[index].url);
+ })
+ .always(function () {
+ NETDATA.loadedRequiredJs++;
+
+ // if (async === false)
+ if (!async) {
+ NETDATA.loadRequiredJs(++index, callback);
+ }
+ });
+
+ // if (async === true)
+ if (async) {
+ NETDATA.loadRequiredJs(++index, callback);
+ }
+};
+
+NETDATA.loadRequiredCSS = function (index) {
+ if (index >= NETDATA.requiredCSS.length) {
+ return;
+ }
+
+ if (NETDATA.requiredCSS[index].isAlreadyLoaded()) {
+ NETDATA.loadRequiredCSS(++index);
+ return;
+ }
+
+ if (NETDATA.options.debug.main_loop) {
+ console.log('loading ' + NETDATA.requiredCSS[index].url);
+ }
+
+ NETDATA._loadCSS(NETDATA.requiredCSS[index].url);
+ NETDATA.loadRequiredCSS(++index);
+};
+
+// Boot it!
+
+if (typeof netdataPrepCallback === 'function') {
+ netdataPrepCallback();
+}
+
+NETDATA.errorReset();
+NETDATA.loadRequiredCSS(0);
+
+NETDATA._loadjQuery(function () {
+ NETDATA.loadRequiredJs(0, function () {
+ if (typeof $().emulateTransitionEnd !== 'function') {
+ // bootstrap is not available
+ NETDATA.options.current.show_help = false;
+ }
+
+ if (typeof netdataDontStart === 'undefined' || !netdataDontStart) {
+ if (NETDATA.options.debug.main_loop) {
+ console.log('starting chart refresh thread');
+ }
+
+ NETDATA.start();
+ }
+ });
+});