From a75ae38b6b36fec76c259c8313857003f5b23841 Mon Sep 17 00:00:00 2001 From: Florian Eckert Date: Tue, 6 Oct 2020 11:15:45 +0200 Subject: luci-mod-system: fix uci led option remove callback fixes #4478 Signed-off-by: Florian Eckert --- .../luci-static/resources/view/system/leds.js | 26 ++++++++++++++++++++++ 1 file changed, 26 insertions(+) diff --git a/modules/luci-mod-system/htdocs/luci-static/resources/view/system/leds.js b/modules/luci-mod-system/htdocs/luci-static/resources/view/system/leds.js index 9fe1bff55..23feebc00 100644 --- a/modules/luci-mod-system/htdocs/luci-static/resources/view/system/leds.js +++ b/modules/luci-mod-system/htdocs/luci-static/resources/view/system/leds.js @@ -88,6 +88,32 @@ return view.extend({ var plugin = plugins[i]; plugin.form.addFormOptions(s); } + + var opts = s.getOption(); + + var removeIfNoneActive = function(original_remove_fn, section_id) { + var isAnyActive = false; + + for (var optname in opts) { + if (opts[optname].ucioption != this.ucioption) + continue; + + if (!opts[optname].isActive(section_id)) + continue; + + isAnyActive = true; + break; + } + + if (!isAnyActive) + original_remove_fn.call(this, section_id); + }; + + for (var optname in opts) { + if (!opts[optname].ucioption || optname == opts[optname].ucioption) + continue; + opts[optname].remove = removeIfNoneActive.bind(opts[optname], opts[optname].remove); + } }; return m.render(); -- cgit v1.2.3