From c71ae186712d1c568b91904d0542f488a754501b Mon Sep 17 00:00:00 2001 From: Jo-Philipp Wich Date: Fri, 14 Feb 2020 11:39:28 +0100 Subject: [PATCH] luci-app-statistics: config ui tweaks - Synchronize enabled checkboxes in overview and modals - Auto-open modal if enabling plugin with extended config Signed-off-by: Jo-Philipp Wich --- .../resources/view/statistics/collectd.js | 27 ++++++++++++++++--- 1 file changed, 23 insertions(+), 4 deletions(-) diff --git a/applications/luci-app-statistics/htdocs/luci-static/resources/view/statistics/collectd.js b/applications/luci-app-statistics/htdocs/luci-static/resources/view/statistics/collectd.js index 6ba571e8b8..b66055f7e2 100644 --- a/applications/luci-app-statistics/htdocs/luci-static/resources/view/statistics/collectd.js +++ b/applications/luci-app-statistics/htdocs/luci-static/resources/view/statistics/collectd.js @@ -32,7 +32,7 @@ return L.view.extend({ }, render: function(plugins) { - var m, s, o; + var m, s, o, enabled; for (var i = 0; i < plugins.length; i++) plugins[plugins[i].name] = plugins[i]; @@ -104,9 +104,19 @@ return L.view.extend({ return plugin ? plugin.spec.title : name }; - o = s.option(form.Flag, 'enable', _('Enabled')); - o.editable = true; - o.modalonly = false; + enabled = s.option(form.Flag, 'enable', _('Enabled')); + enabled.editable = true; + enabled.modalonly = false; + enabled.renderWidget = function(section_id, option_index, cfgvalue) { + var widget = form.Flag.prototype.renderWidget.apply(this, [section_id, option_index, cfgvalue]); + + widget.querySelector('input[type="checkbox"]').addEventListener('click', L.bind(function(section_id, plugin, ev) { + if (ev.target.checked && plugin && plugin.form.addFormOptions) + this.section.renderMoreOptionsModal(section_id); + }, this, section_id, plugins[section_id.replace(/^collectd_/, '')])); + + return widget; + }; o = s.option(form.DummyValue, '_dummy', _('Status')); o.width = '50%'; @@ -140,6 +150,15 @@ return L.view.extend({ s.description = plugin.form.description; plugin.form.addFormOptions(s); + + var opt = s.children.filter(function(o) { return o.option == 'enable' })[0]; + if (opt) + opt.cfgvalue = function(section_id, set_value) { + if (arguments.length == 2) + return form.Flag.prototype.cfgvalue.apply(this, [section_id, enabled.formvalue(section_id)]); + else + return form.Flag.prototype.cfgvalue.apply(this, [section_id]); + }; }; s.renderRowActions = function(section_id) { -- 2.30.2