From b50471787feb9c04b365ff239aee8f39eadc236b Mon Sep 17 00:00:00 2001 From: Jo-Philipp Wich Date: Mon, 18 Jan 2016 17:05:36 +0100 Subject: [PATCH] luci-base: refactor cbi dependency handling code Signed-off-by: Jo-Philipp Wich --- .../luci-base/htdocs/luci-static/resources/cbi.js | 66 +++++++++++----------- .../luci-base/luasrc/view/cbi/cell_valuefooter.htm | 18 ------ .../luci-base/luasrc/view/cbi/cell_valueheader.htm | 2 +- modules/luci-base/luasrc/view/cbi/footer.htm | 2 +- .../luci-base/luasrc/view/cbi/full_valuefooter.htm | 46 --------------- .../luci-base/luasrc/view/cbi/full_valueheader.htm | 2 +- modules/luci-base/luasrc/view/cbi/lvalue.htm | 6 +- modules/luci-base/luasrc/view/cbi/mvalue.htm | 6 +- 8 files changed, 43 insertions(+), 105 deletions(-) diff --git a/modules/luci-base/htdocs/luci-static/resources/cbi.js b/modules/luci-base/htdocs/luci-static/resources/cbi.js index dd8d7b8ee..81cc65778 100644 --- a/modules/luci-base/htdocs/luci-static/resources/cbi.js +++ b/modules/luci-base/htdocs/luci-static/resources/cbi.js @@ -344,7 +344,7 @@ var cbi_validators = { { return (this.match(/^[0-9\*#!\.]+$/) != null); }, - 'timehhmmss': function() + 'timehhmmss': function() { return (this.match(/^[0-6][0-9]:[0-6][0-9]:[0-6][0-9]$/) != null); }, @@ -388,12 +388,12 @@ var cbi_validators = { }; -function cbi_d_add(field, dep, next) { - var obj = document.getElementById(field); +function cbi_d_add(field, dep, index) { + var obj = (typeof(field) === 'string') ? document.getElementById(field) : field; if (obj) { var entry for (var i=0; i entry.index) { + break; + } + } + if (!next) { parent.appendChild(entry.node); } else { - next.parentNode.insertBefore(entry.node, next); + parent.insertBefore(entry.node, next); } + state = true; } } @@ -494,6 +502,21 @@ function cbi_d_update() { } } +function cbi_init() { + var nodes = document.querySelectorAll('[data-depends]'); + + for (var i = 0, node; (node = nodes[i]) !== undefined; i++) { + var deps = JSON.parse(node.getAttribute('data-depends')); + if (deps.length > 0) { + for (var alt = 0; alt < deps.length; alt++) { + cbi_d_add(node, deps[alt], i); + } + } + } + + cbi_d_update(); +} + function cbi_bind(obj, type, callback, mode) { if (!obj.addEventListener) { obj.attachEvent('on' + type, @@ -871,27 +894,6 @@ function cbi_dynlist_init(name, respath, datatype, optional, url, defpath, choic cbi_dynlist_redraw(NaN, -1, -1); } -//Hijacks the CBI form to send via XHR (requires Prototype) -function cbi_hijack_forms(layer, win, fail, load) { - var forms = layer.getElementsByTagName('form'); - for (var i=0; i -
">
- -<% if #self.deps > 0 then -%> - -<%- end %> diff --git a/modules/luci-base/luasrc/view/cbi/cell_valueheader.htm b/modules/luci-base/luasrc/view/cbi/cell_valueheader.htm index 9e2e145dd..9c9c21814 100644 --- a/modules/luci-base/luasrc/view/cbi/cell_valueheader.htm +++ b/modules/luci-base/luasrc/view/cbi/cell_valueheader.htm @@ -1,2 +1,2 @@ -
"> +
" data-index="<%=self.index%>" data-depends="<%=pcdata(self:deplist2json(section))%>"> diff --git a/modules/luci-base/luasrc/view/cbi/footer.htm b/modules/luci-base/luasrc/view/cbi/footer.htm index 115250a82..42bf98bf2 100644 --- a/modules/luci-base/luasrc/view/cbi/footer.htm +++ b/modules/luci-base/luasrc/view/cbi/footer.htm @@ -19,7 +19,7 @@ <% end %> - +
<%- end -%> diff --git a/modules/luci-base/luasrc/view/cbi/full_valuefooter.htm b/modules/luci-base/luasrc/view/cbi/full_valuefooter.htm index 4876fbcc9..f78093676 100644 --- a/modules/luci-base/luasrc/view/cbi/full_valuefooter.htm +++ b/modules/luci-base/luasrc/view/cbi/full_valuefooter.htm @@ -11,49 +11,3 @@
<%- end -%> - - -<% if #self.deps > 0 or #self.subdeps > 0 then -%> - -<%- end %> diff --git a/modules/luci-base/luasrc/view/cbi/full_valueheader.htm b/modules/luci-base/luasrc/view/cbi/full_valueheader.htm index aaf085473..10a554329 100644 --- a/modules/luci-base/luasrc/view/cbi/full_valueheader.htm +++ b/modules/luci-base/luasrc/view/cbi/full_valueheader.htm @@ -1,4 +1,4 @@ -
"> +
" data-index="<%=self.index%>" data-depends="<%=pcdata(self:deplist2json(section))%>"> <%- if self.title and #self.title > 0 then -%> + /> + ><%=self.vallist[i]%> <% if c == self.size then c = 0 %><% if self.orientation == "horizontal" then %> <% else %>
<% end %> <% end end %> <% end %> diff --git a/modules/luci-base/luasrc/view/cbi/mvalue.htm b/modules/luci-base/luasrc/view/cbi/mvalue.htm index 5d092610e..9118a2238 100644 --- a/modules/luci-base/luasrc/view/cbi/mvalue.htm +++ b/modules/luci-base/luasrc/view/cbi/mvalue.htm @@ -3,7 +3,7 @@ <% if self.widget == "select" then %> <% elseif self.widget == "checkbox" then @@ -11,8 +11,8 @@ for i, key in pairs(self.keylist) do c = c + 1 %> - /> - ><%=self.vallist[i]%><% if not self.oneline then %>
<% else %> <% end %> + /> + ><%=self.vallist[i]%>
<% if c == self.size then c = 0 %>
<% end end %> <% end %> -- 2.11.0