luci-app-mwan3: convert to JS
[project/luci.git] / applications / luci-app-mwan3 / htdocs / luci-static / resources / view / status / include / 90_mwan3.js
1 'use strict';
2 'require baseclass';
3 'require rpc';
4
5 var callMwan3Status = rpc.declare({
6 object: 'mwan3',
7 method: 'status',
8 expect: { },
9 });
10
11 document.querySelector('head').appendChild(E('link', {
12 'rel': 'stylesheet',
13 'type': 'text/css',
14 'href': L.resource('view/mwan3/mwan3.css')
15 }));
16
17 return baseclass.extend({
18 title: _('MultiWAN Manager'),
19
20 load: function() {
21 return Promise.all([
22 callMwan3Status(),
23 ]);
24 },
25
26 render: function (result) {
27 if (!result[0].interfaces)
28 return null;
29
30 var container = E('div', { 'id': 'mwan3-service-status' });
31 var iface;
32 for ( iface in result[0].interfaces) {
33 var state = '';
34 var css = '';
35 var time = '';
36 var tname = '';
37 switch (result[0].interfaces[iface].status) {
38 case 'online':
39 state = _('Online');
40 css = 'alert-message success';
41 time = '%t'.format(result[0].interfaces[iface].online);
42 tname = _('Uptime');
43 break;
44 case 'offline':
45 state = _('Offline');
46 css = 'alert-message danger';
47 time = '%t'.format(result[0].interfaces[iface].offline);
48 tname = _('Downtime');
49 break;
50 case 'notracking':
51 state = _('No Tracking');
52 if ((result[0].interfaces[iface].uptime) > 0) {
53 css = 'alert-message success';
54 time = '%t'.format(result[0].interfaces[iface].uptime);
55 tname = _('Uptime');
56 }
57 else {
58 css = 'alert-message warning';
59 time = '';
60 tname = '';
61 }
62 break;
63 default:
64 css = 'alert-message warning';
65 state = _('Disabled');
66 time = '';
67 tname = '';
68 break;
69 }
70
71 if (time !== '' ) {
72 container.appendChild(
73 E('div', { 'class': css }, [
74 E('div', {}, [
75 E('strong', {}, [
76 _('Interface'), ':', ' '
77 ]),
78 iface
79 ]),
80 E('div', {}, [
81 E('strong', {}, [
82 _('Status'), ':', ' '
83 ]),
84 state
85 ]),
86 E('div', {}, [
87 E('strong', {}, [
88 tname, ':', ' '
89 ]),
90 time
91 ])
92 ])
93 );
94 }
95 else {
96 container.appendChild(
97 E('div', { 'class': css }, [
98 E('div', {}, [
99 E('strong', {}, [
100 _('Interface'), ':', ' '
101 ]),
102 iface
103 ]),
104 E('div', {}, [
105 E('strong', {}, [
106 _('Status'), ':', ' '
107 ]),
108 state
109 ])
110 ])
111 );
112 }
113 }
114
115 return container;
116 }
117 });