luci-mod-system: leds.js: fix handling device option
Since the modal overlay map was unable to read the current trigger value, it mistakingly allowed the removal of the device option value. Fix it by finding the option object through lookupOption() instead of relying on a reference. Fixes: #3216 Signed-off-by: Jo-Philipp Wich <jo@mein.io>
This commit is contained in:
parent
254503dc8a
commit
45b56e85a6
1 changed files with 11 additions and 7 deletions
|
@ -30,7 +30,7 @@ return L.view.extend({
|
|||
var leds = results[0],
|
||||
usb = results[1],
|
||||
triggers = {},
|
||||
trigger, m, s, o;
|
||||
m, s, o;
|
||||
|
||||
for (var k in leds)
|
||||
for (var i = 0; i < leds[k].triggers.length; i++)
|
||||
|
@ -54,12 +54,12 @@ return L.view.extend({
|
|||
o = s.option(form.Flag, 'default', _('Default state'));
|
||||
o.rmempty = false;
|
||||
|
||||
trigger = s.option(form.ListValue, 'trigger', _('Trigger'));
|
||||
o = s.option(form.ListValue, 'trigger', _('Trigger'));
|
||||
if (usb.devices && usb.devices.length)
|
||||
triggers['usbdev'] = true;
|
||||
if (usb.ports && usb.ports.length)
|
||||
triggers['usbport'] = true;
|
||||
Object.keys(triggers).sort().forEach(function(t) { trigger.value(t, t.replace(/-/g, '')) });
|
||||
Object.keys(triggers).sort().forEach(function(t) { o.value(t, t.replace(/-/g, '')) });
|
||||
|
||||
o = s.option(form.Value, 'delayon', _('On-State Delay'));
|
||||
o.modalonly = true;
|
||||
|
@ -76,8 +76,10 @@ return L.view.extend({
|
|||
o.noaliases = true;
|
||||
o.depends('trigger', 'netdev');
|
||||
o.remove = function(section_id) {
|
||||
var t = trigger.formvalue(section_id);
|
||||
if (t != 'netdev' && t != 'usbdev')
|
||||
var topt = this.map.lookupOption('trigger', section_id),
|
||||
tval = topt ? topt[0].formvalue(section_id) : null;
|
||||
|
||||
if (tval != 'netdev' && tval != 'usbdev')
|
||||
uci.unset('system', section_id, 'dev');
|
||||
};
|
||||
|
||||
|
@ -96,8 +98,10 @@ return L.view.extend({
|
|||
o.ucioption = 'dev';
|
||||
o.modalonly = true;
|
||||
o.remove = function(section_id) {
|
||||
var t = trigger.formvalue(section_id);
|
||||
if (t != 'netdev' && t != 'usbdev')
|
||||
var topt = this.map.lookupOption('trigger', section_id),
|
||||
tval = topt ? topt[0].formvalue(section_id) : null;
|
||||
|
||||
if (tval != 'netdev' && tval != 'usbdev')
|
||||
uci.unset('system', section_id, 'dev');
|
||||
}
|
||||
o.value('');
|
||||
|
|
Loading…
Reference in a new issue