]>
jfr.im git - irc/unrealircd/unrealircd-webpanel.git/blob - js/unrealircd-admin.js
4 /* TKL (un)select all checkbox */
5 function toggle_tkl(source
) {
6 checkboxes
= document
.getElementsByName("tklch[]");
7 for (var i
= 0, n
= checkboxes
.length
; i
< n
; i
++) {
8 checkboxes
[i
].checked
= source
.checked
;
13 /* TKL (un)select all checkbox */
14 function toggle_user(source
) {
15 checkboxes
= document
.getElementsByName("userch[]");
16 for (var i
= 0, n
= checkboxes
.length
; i
< n
; i
++) {
17 checkboxes
[i
].checked
= source
.checked
;
22 /* TKL (un)select all checkbox */
23 function toggle_server(source
) {
24 checkboxes
= document
.getElementsByName("serverch[]");
25 for (var i
= 0, n
= checkboxes
.length
; i
< n
; i
++) {
26 checkboxes
[i
].checked
= source
.checked
;
30 /* TKL (un)select all checkbox */
31 function toggle_sf(source
) {
32 checkboxes
= document
.getElementsByName("sf[]");
33 for (var i
= 0, n
= checkboxes
.length
; i
< n
; i
++) {
34 checkboxes
[i
].checked
= source
.checked
;
38 function toggle_chanbans(source
) {
39 checkboxes
= document
.getElementsByName("cb_checkboxes[]");
40 for (var i
= 0, n
= checkboxes
.length
; i
< n
; i
++) {
41 checkboxes
[i
].checked
= source
.checked
;
45 function toggle_chanexs(source
) {
46 checkboxes
= document
.getElementsByName("ce_checkboxes[]");
47 for (var i
= 0, n
= checkboxes
.length
; i
< n
; i
++) {
48 checkboxes
[i
].checked
= source
.checked
;
52 function toggle_chaninvs(source
) {
53 checkboxes
= document
.getElementsByName("ci_checkboxes[]");
54 for (var i
= 0, n
= checkboxes
.length
; i
< n
; i
++) {
55 checkboxes
[i
].checked
= source
.checked
;
59 function toggle_checkbox(source
) {
60 checkboxes
= document
.getElementsByName("checkboxes[]");
61 for (var i
= 0, n
= checkboxes
.length
; i
< n
; i
++) {
62 checkboxes
[i
].checked
= source
.checked
;
66 /* Popup notifications */
68 function generate_notif(title
, body
)
70 /* generate a random number between 1000 and 90000 to use as an id */
73 const id
= Math
.floor(Math
.random() * (max
- min
+ 1)) + min
;
75 const toast
= document
.createElement('div');
76 toast
.classList
.add('toast', 'hide');
77 toast
.id
= 'toast' + id
;
79 toast
.ariaLive
= 'assertive';
80 toast
.ariaAtomic
= 'true';
81 toast
.setAttribute('data-delay', '10000');
83 const header
= document
.createElement('div');
84 header
.classList
.add('toast-header');
86 const theTitle
= document
.createElement('strong');
87 theTitle
.classList
.add('mr-auto');
88 theTitle
.textContent
= title
;
90 const notiftime
= document
.createElement('div');
91 notiftime
.classList
.add('badge', 'rounded-pill', 'badge-primary', 'ml-1');
92 notiftime
.textContent
= 'Just now'; // always just now I think right :D
94 const closebutton
= document
.createElement('button');
95 closebutton
.type
= 'button';
96 closebutton
.classList
.add('ml-2', 'mb-1', 'close');
97 closebutton
.setAttribute('data-dismiss', 'toast');
98 closebutton
.ariaLabel
= 'Close';
100 const closebuttonspan
= document
.createElement('span');
101 closebuttonspan
.ariaHidden
= 'true';
102 closebuttonspan
.innerHTML
= "×";
104 const toastbody
= document
.createElement('div');
105 toastbody
.classList
.add('toast-body');
106 toastbody
.textContent
= body
;
109 /* put it all together */
110 closebutton
.appendChild(closebuttonspan
);
111 header
.appendChild(theTitle
);
112 header
.appendChild(notiftime
);
113 header
.appendChild(closebutton
);
114 toast
.appendChild(header
);
115 toast
.appendChild(toastbody
);
116 document
.getElementById('toaster').append(toast
);
118 $('#' + toast
.id
).toast('show');
121 function StreamNotifs(e
)
125 data
= JSON
.parse(e
.data
);
129 title
= data
.subsystem
+ '.' + data
.event_id
;
131 generate_notif(title
, msg
);
134 function StartStreamNotifs(url
)
136 if (!!window
.EventSource
) {
137 var source
= new EventSource(url
);
138 source
.addEventListener('message', StreamNotifs
, false);
143 function NewLogEntry(e
)
147 data
= JSON
.parse(e
.data
);
152 if (data
.sync_option
!= "sync_now")
154 var sync
= (data
.sync_option
== "no_sync") ? false : true;
155 delete data
.sync_option
;
157 data_list_table
.row
.add({
158 'Time':data
.timestamp
,
160 'Subsystem':data
.subsystem
,
161 'Event':data
.event_id
,
163 'Raw':JSON
.stringify(data
)});
168 data_list_table
.draw(true);
169 data_list_table
.rows().invalidate();
170 data_list_table
.searchPanes
.rebuildPane();
173 function StartLogStream(url
)
175 var source
= new EventSource(url
);
176 source
.addEventListener('message', NewLogEntry
, false);