luci-mod-system: improve LED configuration page
Signed-off-by: Jo-Philipp Wich <jo@mein.io>
This commit is contained in:
parent
fad01ae1a4
commit
af19ebb706
1 changed files with 18 additions and 23 deletions
|
@ -2,8 +2,9 @@
|
||||||
'require uci';
|
'require uci';
|
||||||
'require rpc';
|
'require rpc';
|
||||||
'require form';
|
'require form';
|
||||||
|
'require tools.widgets as widgets';
|
||||||
|
|
||||||
var callLeds, callUSB, callNetdevs;
|
var callLeds, callUSB;
|
||||||
|
|
||||||
callLeds = rpc.declare({
|
callLeds = rpc.declare({
|
||||||
object: 'luci',
|
object: 'luci',
|
||||||
|
@ -17,31 +18,17 @@ callUSB = rpc.declare({
|
||||||
expect: { '': {} }
|
expect: { '': {} }
|
||||||
});
|
});
|
||||||
|
|
||||||
callNetdevs = rpc.declare({
|
|
||||||
object: 'luci',
|
|
||||||
method: 'getIfaddrs',
|
|
||||||
expect: { result: [] },
|
|
||||||
filter: function(res) {
|
|
||||||
var devs = {};
|
|
||||||
for (var i = 0; i < res.length; i++)
|
|
||||||
devs[res[i].name] = true;
|
|
||||||
return Object.keys(devs).sort();
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
return L.view.extend({
|
return L.view.extend({
|
||||||
load: function() {
|
load: function() {
|
||||||
return Promise.all([
|
return Promise.all([
|
||||||
callLeds(),
|
callLeds(),
|
||||||
callUSB(),
|
callUSB()
|
||||||
callNetdevs()
|
|
||||||
]);
|
]);
|
||||||
},
|
},
|
||||||
|
|
||||||
render: function(results) {
|
render: function(results) {
|
||||||
var leds = results[0],
|
var leds = results[0],
|
||||||
usb = results[1],
|
usb = results[1],
|
||||||
netdevs = results[2],
|
|
||||||
triggers = {},
|
triggers = {},
|
||||||
trigger, m, s, o;
|
trigger, m, s, o;
|
||||||
|
|
||||||
|
@ -53,9 +40,11 @@ return L.view.extend({
|
||||||
_('<abbr title="Light Emitting Diode">LED</abbr> Configuration'),
|
_('<abbr title="Light Emitting Diode">LED</abbr> Configuration'),
|
||||||
_('Customizes the behaviour of the device <abbr title="Light Emitting Diode">LED</abbr>s if possible.'));
|
_('Customizes the behaviour of the device <abbr title="Light Emitting Diode">LED</abbr>s if possible.'));
|
||||||
|
|
||||||
s = m.section(form.TypedSection, 'led', '');
|
s = m.section(form.GridSection, 'led', '');
|
||||||
s.anonymous = true;
|
s.anonymous = true;
|
||||||
s.addremove = true;
|
s.addremove = true;
|
||||||
|
s.sortable = true;
|
||||||
|
s.addbtntitle = _('Add LED action');
|
||||||
|
|
||||||
s.option(form.Value, 'name', _('Name'));
|
s.option(form.Value, 'name', _('Name'));
|
||||||
|
|
||||||
|
@ -66,32 +55,35 @@ return L.view.extend({
|
||||||
o.rmempty = false;
|
o.rmempty = false;
|
||||||
|
|
||||||
trigger = s.option(form.ListValue, 'trigger', _('Trigger'));
|
trigger = s.option(form.ListValue, 'trigger', _('Trigger'));
|
||||||
Object.keys(triggers).sort().forEach(function(t) { trigger.value(t, t.replace(/-/g, '')) });
|
|
||||||
if (usb.devices && usb.devices.length)
|
if (usb.devices && usb.devices.length)
|
||||||
trigger.value('usbdev');
|
triggers['usbdev'] = true;
|
||||||
if (usb.ports && usb.ports.length)
|
if (usb.ports && usb.ports.length)
|
||||||
trigger.value('usbport');
|
triggers['usbport'] = true;
|
||||||
|
Object.keys(triggers).sort().forEach(function(t) { trigger.value(t, t.replace(/-/g, '')) });
|
||||||
|
|
||||||
o = s.option(form.Value, 'delayon', _('On-State Delay'));
|
o = s.option(form.Value, 'delayon', _('On-State Delay'));
|
||||||
|
o.modalonly = true;
|
||||||
o.depends('trigger', 'timer');
|
o.depends('trigger', 'timer');
|
||||||
|
|
||||||
o = s.option(form.Value, 'delayoff', _('Off-State Delay'));
|
o = s.option(form.Value, 'delayoff', _('Off-State Delay'));
|
||||||
|
o.modalonly = true;
|
||||||
o.depends('trigger', 'timer');
|
o.depends('trigger', 'timer');
|
||||||
|
|
||||||
o = s.option(form.ListValue, '_net_dev', _('Device'));
|
o = s.option(widgets.DeviceSelect, '_net_dev', _('Device'));
|
||||||
o.rmempty = true;
|
o.rmempty = true;
|
||||||
o.ucioption = 'dev';
|
o.ucioption = 'dev';
|
||||||
|
o.modalonly = true;
|
||||||
|
o.noaliases = true;
|
||||||
o.depends('trigger', 'netdev');
|
o.depends('trigger', 'netdev');
|
||||||
o.remove = function(section_id) {
|
o.remove = function(section_id) {
|
||||||
var t = trigger.formvalue(section_id);
|
var t = trigger.formvalue(section_id);
|
||||||
if (t != 'netdev' && t != 'usbdev')
|
if (t != 'netdev' && t != 'usbdev')
|
||||||
uci.unset('system', section_id, 'dev');
|
uci.unset('system', section_id, 'dev');
|
||||||
};
|
};
|
||||||
o.value('');
|
|
||||||
netdevs.sort().forEach(function(dev) { o.value(dev) });
|
|
||||||
|
|
||||||
o = s.option(form.MultiValue, 'mode', _('Trigger Mode'));
|
o = s.option(form.MultiValue, 'mode', _('Trigger Mode'));
|
||||||
o.rmempty = true;
|
o.rmempty = true;
|
||||||
|
o.modalonly = true;
|
||||||
o.depends('trigger', 'netdev');
|
o.depends('trigger', 'netdev');
|
||||||
o.value('link', _('Link On'));
|
o.value('link', _('Link On'));
|
||||||
o.value('tx', _('Transmit'));
|
o.value('tx', _('Transmit'));
|
||||||
|
@ -102,6 +94,7 @@ return L.view.extend({
|
||||||
o.depends('trigger', 'usbdev');
|
o.depends('trigger', 'usbdev');
|
||||||
o.rmempty = true;
|
o.rmempty = true;
|
||||||
o.ucioption = 'dev';
|
o.ucioption = 'dev';
|
||||||
|
o.modalonly = true;
|
||||||
o.remove = function(section_id) {
|
o.remove = function(section_id) {
|
||||||
var t = trigger.formvalue(section_id);
|
var t = trigger.formvalue(section_id);
|
||||||
if (t != 'netdev' && t != 'usbdev')
|
if (t != 'netdev' && t != 'usbdev')
|
||||||
|
@ -117,6 +110,7 @@ return L.view.extend({
|
||||||
o = s.option(form.MultiValue, 'port', _('USB Ports'));
|
o = s.option(form.MultiValue, 'port', _('USB Ports'));
|
||||||
o.depends('trigger', 'usbport');
|
o.depends('trigger', 'usbport');
|
||||||
o.rmempty = true;
|
o.rmempty = true;
|
||||||
|
o.modalonly = true;
|
||||||
o.cfgvalue = function(section_id) {
|
o.cfgvalue = function(section_id) {
|
||||||
var ports = [],
|
var ports = [],
|
||||||
value = uci.get('system', section_id, 'port');
|
value = uci.get('system', section_id, 'port');
|
||||||
|
@ -146,6 +140,7 @@ return L.view.extend({
|
||||||
}
|
}
|
||||||
|
|
||||||
o = s.option(form.Value, 'port_mask', _('Switch Port Mask'));
|
o = s.option(form.Value, 'port_mask', _('Switch Port Mask'));
|
||||||
|
o.modalonly = true;
|
||||||
o.depends('trigger', 'switch0');
|
o.depends('trigger', 'switch0');
|
||||||
o.depends('trigger', 'switch1');
|
o.depends('trigger', 'switch1');
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue