dark mode and websockets
[kismet-logviewer.git] / logviewer / static / js / kismet.ui.theme.js
1 /* jshint browser: true */
2 /* global define, module */
3 ( // Module boilerplate to support browser globals and browserify and AMD.
4   typeof define === "function" ? function (m) { define("kismet_theme", m); } :
5   typeof exports === "object" ? function (m) { module.exports = m(); } :
6   function(m){ this.kismet_theme = m(); }
7 )(function () {
8     "use strict";
9
10     var exports = {};
11
12     var storage = Storages.localStorage;
13
14     if (!storage.isSet('kismet.ui.theme') || (storage.isSet('kismet.ui.theme') && 
15         storage.get('kismet.ui.theme') == 'dark')) { 
16
17         $('head').append('<link rel="stylesheet" type="text/css" href="css/kismet-dark.css">');
18         $('head').append('<link rel="stylesheet" type="text/css" href="css/dark.css">');
19         $('head').append('<link rel="stylesheet" type="text/css" href="css/datatables-dark.css">');
20
21         exports.theme = 'dark';
22
23         exports.page_background = '#222';
24
25         exports.sparkline_main = '#FFF';
26         exports.sparkline_multi_a = '#F7FF00';
27         exports.sparkline_multi_b = '#00FF00';
28
29         Chart.defaults.backgroundColor = '#333';
30         Chart.defaults.borderColor = '#555';
31         Chart.defaults.color = '#FFF';
32
33         exports.graphBasicColor = 'rgba(255, 255, 255, 1)';
34         exports.graphBasicBackgroundColor = 'rgba(200, 200, 200, 0.33)',
35
36         document.documentElement.setAttribute('data-theme', 'dark');
37     } else { 
38         $('head').append('<link rel="stylesheet" type="text/css" href="css/light.css">');
39         $('head').append('<link rel="stylesheet" type="text/css" href="css/jquery-ui.min.css">');
40         $('head').append('<link rel="stylesheet" type="text/css" href="css/datatables.min.css">');
41         $('head').append('<link rel="stylesheet" type="text/css" href="css/kismet.css">');
42
43         exports.theme = 'light';
44
45         exports.page_background = '#FFF';
46         exports.sparkline_multi_a = '#C70039';
47         exports.sparkline_multi_b = '#002EFF';
48
49         exports.sparkline_main = '#000';
50
51         exports.graphBasicColor = 'rgba(160, 160, 160, 1)';
52         exports.graphBasicBackgroundColor = 'rgba(100, 100, 100, 0.33)';
53
54         // document.documentElement.setAttribute('data-theme', 'light');
55     }
56
57     (function ($) {
58         var element = null;
59         var ticon;
60
61         $.fn.thememode = function(_data, inopt) {
62             element = $(this);
63
64             ticon = $('i.icon', this);
65             if (ticon.length == 0) {
66                 ticon = $('<i>', {
67                     class: "icon fa clickable kg-icon-base"
68                 })
69                 .on('click', () => { 
70                     if (exports.theme === 'dark') { 
71                         storage.set('kismet.ui.theme', 'light');
72                         location.reload();
73                     } else {
74                         storage.set('kismet.ui.theme', 'dark');
75                         location.reload();
76                     }
77                 });
78
79                 if (exports.theme === 'dark') { 
80                     ticon.addClass('fa-moon-o');
81                 } else { 
82                     ticon.addClass('fa-lightbulb-o');
83                 }
84             }
85
86             element.append(ticon);
87         };
88
89     }(jQuery));
90
91     return exports;
92 });