summaryrefslogtreecommitdiffhomepage
path: root/applications/luci-app-mwan3/luasrc/view/mwan/overview_status_interface.htm
blob: b3210ee1375667d3b4a99dc7048f9b4f49283200 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
<%#
 Copyright 2014 Aedan Renner <chipdankly@gmail.com>
 Copyright 2018 Florian Eckert <fe@dev.tdt.de>
 Licensed to the public under the GNU General Public License v2.
-%>

<script type="text/javascript">//<![CDATA[

function secondsToString(time) {
	var seconds = parseInt(time, 10);

	var hrs   = Math.floor(seconds / 3600);
	seconds  -= hrs*3600;
	var mnts = Math.floor(seconds / 60);
	seconds  -= mnts*60;
	return String.format("%sh:%sm:%ss", hrs, mnts, seconds);
}

XHR.poll(-1, '<%=luci.dispatcher.build_url("admin", "status", "mwan", "interface_status")%>', null,
		function(x, status)
		{
			var statusDiv = document.getElementById('mwan_status_text');
			if (status.interfaces)
			{
				var statusview = '';
				for ( var iface in status.interfaces)
				{
					var state = '';
					var css = '';
					var time = '';
					switch (status.interfaces[iface].status)
					{
						case 'online':
							state = '<%:Online%>';
							time = String.format(
								'<div><strong><%:Uptime%>:&nbsp;</strong>%s</div>',
								secondsToString(status.interfaces[iface].online)
							);
							css = 'success';
							break;
						case 'offline':
							state = '<%:Offline%>';
							time = String.format(
								'<div><strong><%:Downtime%>:&nbsp;</strong>%s</div>',
								secondsToString(status.interfaces[iface].offline)
							);
							css = 'danger';
							break;
						case 'notracking':
							state = '<%:No Tracking%>';
							if ((status.interfaces[iface].uptime) > 0) {
								time = String.format(
									'<div><strong><%:Uptime%>:&nbsp;</strong>%s</div>',
									secondsToString(status.interfaces[iface].uptime)
								);
								css = 'success';
							}
							else {
								time = '<div>&nbsp;</div>'
								css = 'warning';
							}
							break;
						default:
							state = '<%:Disabled%>';
							time = '<div>&nbsp;</div>'
							css = 'warning';
							break;
					}
					statusview += String.format(
						'<div class="alert-message %s">',
						css
					);
					statusview += String.format(
						'<div><strong><%:Interface%>:&nbsp;</strong>%s</div>',
						iface
					);
					statusview += String.format(
						'<div><strong><%:Status%>:&nbsp;</strong>%s</div>',
						state
					);
					if (time)
					{
						statusview += time;
					}
					statusview += '</div>'
				}
				statusDiv.innerHTML = statusview;
			}
			else
			{
				statusDiv.innerHTML = '<strong><%:No MWAN interfaces found%></strong>';
			}
		}
	);
//]]></script>

<style type="text/css">
	#mwan_status_text > div {
		display: inline-block;
		margin: 1rem;
		padding: 1rem;
		width: 15rem;
		float: left;
		line-height: 125%;
	}
</style>

<fieldset id="interface_field" class="cbi-section">
	<legend><%:MWAN Interfaces%></legend>
	<div id="mwan_status_text">
		<img src="<%=resource%>/icons/loading.gif" alt="<%:Loading%>" style="vertical-align:middle" />
		<%:Collecting data...%>
	</div>
</fieldset>