Merge pull request #1735 from sumpfralle/olsr-jsoninfo-parser-handle-empty-result
[oweals/luci.git] / applications / luci-app-adblock / luasrc / view / adblock / runtime.htm
1 <%#
2 Copyright 2017-2019 Dirk Brenken (dev@brenken.org)
3 This is free software, licensed under the Apache License, Version 2.0
4 -%>
5
6 <%+adblock/adblock_css%>
7 <script type="text/javascript">
8 //<![CDATA[
9         function format(number)
10         {
11                 var string = number.toString().replace(/(\d)(?=(\d{3})+(?!\d))/g, '$1.');
12                 return string;
13         }
14
15         function status_update(json)
16         {
17                 var btn1         = document.getElementById("btn1");
18                 var btn1_running = document.getElementById("btn1_running");
19                 var btn2         = document.getElementById("btn2");
20                 var btn2_running = document.getElementById("btn2_running");
21                 var input        = json.data.adblock_status || "-";
22
23                 document.getElementById("value_1").innerHTML = input;
24                 if (input === "enabled")
25                 {
26                         btn1.value = "<%:Suspend%>";
27                         btn1.name  = "do_suspend";
28                         btn2.value = "<%:Refresh%>";
29                         btn2.name  = "do_refresh";
30                         btn1.disabled = false;
31                         running(btn1_running, 0);
32                         btn2.disabled = false;
33                         running(btn2_running, 0);
34                 }
35                 else if (input === "paused")
36                 {
37                         btn1.value = "<%:Resume%>";
38                         btn1.name  = "do_resume";
39                         btn2.value = "<%:Refresh%>";
40                         btn2.name  = "do_refresh";
41                         btn1.disabled = false;
42                         running(btn1_running, 0);
43                         btn2.disabled = false;
44                         running(btn2_running, 0);
45                 }
46                 else
47                 {
48                         btn1.value = "<%:Suspend%>";
49                         btn1.name  = "do_suspend";
50                         btn2.value = "<%:Refresh%>";
51                         btn2.name  = "do_refresh";
52                         btn1.disabled = true;
53                         btn2.disabled = true;
54                 }
55
56                 document.getElementById("value_2").innerHTML = json.data.adblock_version || "-";
57                 document.getElementById("value_3").innerHTML = json.data.fetch_utility || "-";
58                 document.getElementById("value_4").innerHTML = json.data.dns_backend || "-";
59                 document.getElementById("value_5").innerHTML = json.data.dns_variant || "-";
60                 document.getElementById("value_6").innerHTML = json.data.backup_dir || "-";
61                 document.getElementById("value_7").innerHTML = format(json.data.overall_domains) || "-";
62                 document.getElementById("value_8").innerHTML = json.data.last_rundate || "-";
63         }
64
65         function btn_action(action)
66         {
67                 var btn1 = document.getElementById("btn1");
68                 var btn1_running = document.getElementById("btn1_running");
69                 var btn2 = document.getElementById("btn2");
70                 var btn2_running = document.getElementById("btn2_running");
71
72                 btn1.disabled = true;
73                 btn2.disabled = true;
74
75                 if (action.name === "do_refresh")
76                 {
77                         running(btn2_running, 1);
78                 }
79                 else
80                 {
81                         running(btn1_running, 1);
82                 }
83
84                 new XHR.get('<%=luci.dispatcher.build_url("admin", "services", "adblock")%>/action/' + action.name, null,
85                 function(x)
86                 {
87                         if (!x)
88                         {
89                                 return;
90                         }
91                 });
92         }
93
94         function running(element, state)
95         {
96                 if (state === 1)
97                 {
98                         var running_html = '<img src="<%=resource%>/icons/loading.gif" alt="<%:Loading%>" width="16" height="16" style="vertical-align:middle" />';
99                         element.innerHTML = running_html;
100                 }
101                 else
102                 {
103                         element.innerHTML = '';
104                 }
105         }
106
107         function reset_view()
108         {
109                 document.getElementById("btn1").value        = "<%:Suspend%>";
110                 document.getElementById("btn1").name         = "do_suspend";
111                 document.getElementById("btn2").value        = "<%:Refresh%>";
112                 document.getElementById("btn2").name         = "do_refresh";
113                 document.getElementById("btn1").disabled     = true;
114                 document.getElementById("btn2").disabled     = true;
115                 document.getElementById("value_1").innerHTML = "-";
116                 document.getElementById("value_2").innerHTML = "-";
117                 document.getElementById("value_3").innerHTML = "-";
118                 document.getElementById("value_4").innerHTML = "-";
119                 document.getElementById("value_5").innerHTML = "-";
120                 document.getElementById("value_6").innerHTML = "-";
121                 document.getElementById("value_7").innerHTML = "-";
122                 document.getElementById("value_8").innerHTML = "-";
123         }
124
125         XHR.get('<%=luci.dispatcher.build_url("admin", "services", "adblock", "status_update")%>', null,
126         function(x, json_info)
127         {
128                 if (!x || !json_info || !json_info.data)
129                 {
130                         reset_view();
131                         return;
132                 }
133                 status_update(json_info);
134         });
135
136         XHR.poll(-1, '<%=luci.dispatcher.build_url("admin", "services", "adblock", "status_update")%>', null,
137         function(x, json_info)
138         {
139                 if (!x || !json_info || !json_info.data)
140                 {
141                         reset_view();
142                         return;
143                 }
144                 status_update(json_info);
145         });
146 //]]>
147 </script>
148
149 <h3><%:Runtime Information%></h3>
150 <div class="cbi-value" id="status_1">
151         <label class="cbi-value-title" for="status_1"><%:Adblock Status%></label>
152         <div class="cbi-value-field">
153                 <span class="runtime" id="value_1">-</span>
154         </div>
155 </div>
156 <div class="cbi-value" id="status_2">
157         <label class="cbi-value-title" for="status_2"><%:Adblock Version%></label>
158         <div class="cbi-value-field">
159                 <span class="runtime" id="value_2">-</span>
160         </div>
161 </div>
162 <div class="cbi-value" id="status_3">
163         <label class="cbi-value-title" for="status_3"><%:Download Utility (SSL Library)%></label>
164         <div class="cbi-value-field">
165                 <span class="runtime" id="value_3">-</span>
166         </div>
167 </div>
168 <div class="cbi-value" id="status_4">
169         <label class="cbi-value-title" for="status_4"><%:DNS Backend, DNS Directory%></label>
170         <div class="cbi-value-field">
171                 <span class="runtime" id="value_4">-</span>
172         </div>
173 </div>
174 <div class="cbi-value" id="status_5">
175         <label class="cbi-value-title" for="status_5"><%:DNS Variant, DNS File Reset%></label>
176         <div class="cbi-value-field">
177                 <span class="runtime" id="value_5">-</span>
178         </div>
179 </div>
180 <div class="cbi-value" id="status_6">
181         <label class="cbi-value-title" for="status_6"><%:Backup Directory%></label>
182         <div class="cbi-value-field">
183                 <span class="runtime" id="value_6">-</span>
184         </div>
185 </div>
186 <div class="cbi-value" id="status_7">
187         <label class="cbi-value-title" for="status_7"><%:Overall Domains%></label>
188         <div class="cbi-value-field">
189                 <span class="runtime" id="value_7">-</span>
190         </div>
191 </div>
192 <div class="cbi-value" id="status_8">
193         <label class="cbi-value-title" for="status_8"><%:Last Run%></label>
194         <div class="cbi-value-field">
195                 <span class="runtime" id="value_8">-</span>
196         </div>
197 </div>
198 <hr />
199 <div class="cbi-value" id="button_1">
200         <label class="cbi-value-title" for="button_1"><%:Suspend / Resume Adblock%></label>
201         <div class="cbi-value-field">
202                 <input class="cbi-button cbi-button-reset" id="btn1" type="button" value="" onclick="btn_action(this)" />
203                 <span id="btn1_running" class="btn_running"></span>
204         </div>
205 </div>
206 <p />
207 <div class="cbi-value" id="button_2">
208         <label class="cbi-value-title" for="button_2"><%:Refresh Blocklist Sources%></label>
209         <div class="cbi-value-field">
210                 <input class="cbi-button cbi-button-apply" id="btn2" type="button" value="" onclick="btn_action(this)" />
211                 <span id="btn2_running" class="btn_running"></span>
212         </div>
213 </div>