luci-mod-system: rework leds.js and system.js views
- Drop manual RPC batch usage - Use LuCI.Poll for status updates Signed-off-by: Jo-Philipp Wich <jo@mein.io>
This commit is contained in:
parent
b21a2813b4
commit
5264a943b9
2 changed files with 121 additions and 117 deletions
|
@ -3,25 +3,26 @@
|
|||
'require rpc';
|
||||
'require form';
|
||||
|
||||
return L.view.extend({
|
||||
callInitAction: rpc.declare({
|
||||
var callInitAction, callLeds, callUSB, callNetdevs;
|
||||
|
||||
callInitAction = rpc.declare({
|
||||
object: 'luci',
|
||||
method: 'initCall',
|
||||
params: [ 'name', 'action' ],
|
||||
expect: { result: false }
|
||||
}),
|
||||
});
|
||||
|
||||
callLeds: rpc.declare({
|
||||
callLeds = rpc.declare({
|
||||
object: 'luci',
|
||||
method: 'leds'
|
||||
}),
|
||||
});
|
||||
|
||||
callUSB: rpc.declare({
|
||||
callUSB = rpc.declare({
|
||||
object: 'luci',
|
||||
method: 'usb'
|
||||
}),
|
||||
});
|
||||
|
||||
callNetdevs: rpc.declare({
|
||||
callNetdevs = rpc.declare({
|
||||
object: 'luci',
|
||||
method: 'ifaddrs',
|
||||
expect: { result: [] },
|
||||
|
@ -31,14 +32,15 @@ return L.view.extend({
|
|||
devs[res[i].name] = true;
|
||||
return Object.keys(devs).sort();
|
||||
}
|
||||
}),
|
||||
});
|
||||
|
||||
return L.view.extend({
|
||||
load: function() {
|
||||
rpc.batch();
|
||||
this.callLeds();
|
||||
this.callUSB();
|
||||
this.callNetdevs();
|
||||
return rpc.flush();
|
||||
return Promise.all([
|
||||
callLeds(),
|
||||
callUSB(),
|
||||
callNetdevs()
|
||||
]);
|
||||
},
|
||||
|
||||
render: function(results) {
|
||||
|
|
|
@ -3,8 +3,9 @@
|
|||
'require rpc';
|
||||
'require form';
|
||||
|
||||
return L.view.extend({
|
||||
callInitList: rpc.declare({
|
||||
var callInitList, callInitAction, callLocaltime, callTimezone, CBILocalTime;
|
||||
|
||||
callInitList = rpc.declare({
|
||||
object: 'luci',
|
||||
method: 'initList',
|
||||
params: [ 'name' ],
|
||||
|
@ -14,28 +15,28 @@ return L.view.extend({
|
|||
return +res[k].enabled;
|
||||
return null;
|
||||
}
|
||||
}),
|
||||
});
|
||||
|
||||
callInitAction: rpc.declare({
|
||||
callInitAction = rpc.declare({
|
||||
object: 'luci',
|
||||
method: 'initCall',
|
||||
params: [ 'name', 'action' ],
|
||||
expect: { result: false }
|
||||
}),
|
||||
});
|
||||
|
||||
callLocaltime: rpc.declare({
|
||||
callLocaltime = rpc.declare({
|
||||
object: 'luci',
|
||||
method: 'localtime',
|
||||
expect: { localtime: 0 }
|
||||
}),
|
||||
});
|
||||
|
||||
callTimezone: rpc.declare({
|
||||
callTimezone = rpc.declare({
|
||||
object: 'luci',
|
||||
method: 'timezone',
|
||||
expect: { result: {} }
|
||||
}),
|
||||
});
|
||||
|
||||
CBILocalTime: form.DummyValue.extend({
|
||||
CBILocalTime = form.DummyValue.extend({
|
||||
renderWidget: function(section_id, option_id, cfgvalue) {
|
||||
return E([], [
|
||||
E('span', { 'id': 'localtime' },
|
||||
|
@ -43,42 +44,43 @@ return L.view.extend({
|
|||
' ',
|
||||
E('button', {
|
||||
'class': 'cbi-button cbi-button-apply',
|
||||
'click': L.bind(function(ev) {
|
||||
ev.target.blur();
|
||||
ev.target.classList.add('spinning');
|
||||
ev.target.disabled = true;
|
||||
this.callLocaltime(Math.floor(Date.now() / 1000)).then(function() {
|
||||
ev.target.classList.remove('spinning');
|
||||
ev.target.disabled = false;
|
||||
});
|
||||
}, this)
|
||||
'click': function() {
|
||||
this.blur();
|
||||
this.classList.add('spinning');
|
||||
this.disabled = true;
|
||||
callLocaltime(Math.floor(Date.now() / 1000)).then(L.bind(function() {
|
||||
this.classList.remove('spinning');
|
||||
this.disabled = false;
|
||||
}, this));
|
||||
}
|
||||
}, _('Sync with browser')),
|
||||
' ',
|
||||
this.ntpd_support ? E('button', {
|
||||
'class': 'cbi-button cbi-button-apply',
|
||||
'click': L.bind(function(ev) {
|
||||
ev.target.blur();
|
||||
ev.target.classList.add('spinning');
|
||||
ev.target.disabled = true;
|
||||
this.callLocaltime(Math.floor(Date.now() / 1000)).then(function() {
|
||||
ev.target.classList.remove('spinning');
|
||||
ev.target.disabled = false;
|
||||
});
|
||||
}, this)
|
||||
'click': function() {
|
||||
this.blur();
|
||||
this.classList.add('spinning');
|
||||
this.disabled = true;
|
||||
callInitAction('sysntpd', 'restart').then(L.bind(function() {
|
||||
this.classList.remove('spinning');
|
||||
this.disabled = false;
|
||||
}, this));
|
||||
}
|
||||
}, _('Sync with NTP-Server')) : ''
|
||||
]);
|
||||
},
|
||||
}),
|
||||
});
|
||||
|
||||
return L.view.extend({
|
||||
load: function() {
|
||||
rpc.batch();
|
||||
this.callInitList('sysntpd');
|
||||
this.callInitList('zram');
|
||||
this.callTimezone();
|
||||
this.callLocaltime();
|
||||
uci.load('luci');
|
||||
uci.load('system');
|
||||
return rpc.flush();
|
||||
return Promise.all([
|
||||
callInitList('sysntpd'),
|
||||
callInitList('zram'),
|
||||
callTimezone(),
|
||||
callLocaltime(),
|
||||
uci.load('luci'),
|
||||
uci.load('system')
|
||||
]);
|
||||
},
|
||||
|
||||
render: function(rpc_replies) {
|
||||
|
@ -86,7 +88,6 @@ return L.view.extend({
|
|||
zram_support = rpc_replies[1],
|
||||
timezones = rpc_replies[2],
|
||||
localtime = rpc_replies[3],
|
||||
view = this,
|
||||
ntp_setup, ntp_enabled, m, s, o;
|
||||
|
||||
m = new form.Map('system',
|
||||
|
@ -109,7 +110,7 @@ return L.view.extend({
|
|||
* System Properties
|
||||
*/
|
||||
|
||||
o = s.taboption('general', this.CBILocalTime, '_systime', _('Local Time'));
|
||||
o = s.taboption('general', CBILocalTime, '_systime', _('Local Time'));
|
||||
o.cfgvalue = function() { return localtime };
|
||||
o.ntpd_support = ntpd_support;
|
||||
|
||||
|
@ -249,7 +250,7 @@ return L.view.extend({
|
|||
else
|
||||
uci.unset('system', 'ntp', 'enabled');
|
||||
|
||||
return view.callInitAction('sysntpd', 'enable');
|
||||
return callInitAction('sysntpd', 'enable');
|
||||
};
|
||||
o.load = function(section_id) {
|
||||
return (ntpd_support == 1 &&
|
||||
|
@ -273,13 +274,14 @@ return L.view.extend({
|
|||
};
|
||||
}
|
||||
|
||||
window.setInterval(L.bind(function() {
|
||||
this.callLocaltime().then(function(t) {
|
||||
var lt = document.getElementById('localtime');
|
||||
if (lt) lt.innerHTML = new Date(t * 1000).toLocaleString();
|
||||
return m.render().then(function(mapEl) {
|
||||
L.Poll.add(function() {
|
||||
return callLocaltime().then(function(t) {
|
||||
mapEl.querySelector('#localtime').innerHTML = new Date(t * 1000).toLocaleString();
|
||||
});
|
||||
});
|
||||
}, this), 5000);
|
||||
|
||||
return m.render();
|
||||
return mapEl;
|
||||
});
|
||||
}
|
||||
});
|
||||
|
|
Loading…
Reference in a new issue