diff options
Diffstat (limited to 'libs/web/htdocs')
-rw-r--r-- | libs/web/htdocs/luci-static/resources/cbi.js | 31 |
1 files changed, 30 insertions, 1 deletions
diff --git a/libs/web/htdocs/luci-static/resources/cbi.js b/libs/web/htdocs/luci-static/resources/cbi.js index 1e751d47e6..5eee59c347 100644 --- a/libs/web/htdocs/luci-static/resources/cbi.js +++ b/libs/web/htdocs/luci-static/resources/cbi.js @@ -332,7 +332,8 @@ function cbi_d_update() { } if (entry && entry.parent) { - cbi_t_update(); + if (!cbi_t_update()) + cbi_tag_last(parent); } if (state) { @@ -719,9 +720,11 @@ function cbi_t_switch(section, tab) { function cbi_t_update() { var hl_tabs = [ ]; + var updated = false; for( var sid in cbi_t ) for( var tid in cbi_t[sid] ) + { if( cbi_c[cbi_t[sid][tid].cid] == 0 ) { cbi_t[sid][tid].tab.style.display = 'none'; } @@ -733,11 +736,17 @@ function cbi_t_update() { hl_tabs.push(t); } + cbi_tag_last(cbi_t[sid][tid].container); + updated = true; + } + if( hl_tabs.length > 0 ) window.setTimeout(function() { for( var i = 0; i < hl_tabs.length; i++ ) hl_tabs[i].className = hl_tabs[i].className.replace(/ cbi-tab-highlighted/g, ''); }, 750); + + return updated; } @@ -885,6 +894,26 @@ function cbi_row_swap(elem, up, store) return false; } +function cbi_tag_last(container) +{ + var last; + + for (var i = 0; i < container.childNodes.length; i++) + { + var c = container.childNodes[i]; + if (c.nodeType == 1 && c.nodeName.toLowerCase() == 'div') + { + c.className = c.className.replace(/ cbi-value-last$/, ''); + last = c; + } + } + + if (last) + { + last.className += ' cbi-value-last'; + } +} + if( ! String.serialize ) String.serialize = function(o) { |