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