luci-base: improve tab hide logic
Do not rely on explicit child counts but inspect the code instead to decide when to hide tabs or not. Signed-off-by: Jo-Philipp Wich <jow@openwrt.org>
This commit is contained in:
parent
1600b600dd
commit
be8dba57a9
2 changed files with 10 additions and 17 deletions
|
@ -13,7 +13,6 @@
|
||||||
|
|
||||||
var cbi_d = [];
|
var cbi_d = [];
|
||||||
var cbi_t = [];
|
var cbi_t = [];
|
||||||
var cbi_c = [];
|
|
||||||
|
|
||||||
var cbi_validators = {
|
var cbi_validators = {
|
||||||
|
|
||||||
|
@ -475,8 +474,6 @@ function cbi_d_update() {
|
||||||
if (node && node.parentNode && !cbi_d_check(entry.deps)) {
|
if (node && node.parentNode && !cbi_d_check(entry.deps)) {
|
||||||
node.parentNode.removeChild(node);
|
node.parentNode.removeChild(node);
|
||||||
state = true;
|
state = true;
|
||||||
if( entry.parent && typeof(cbi_c[entry.parent]) == 'number')
|
|
||||||
cbi_c[entry.parent]--;
|
|
||||||
} else if ((!node || !node.parentNode) && cbi_d_check(entry.deps)) {
|
} else if ((!node || !node.parentNode) && cbi_d_check(entry.deps)) {
|
||||||
if (!next) {
|
if (!next) {
|
||||||
parent.appendChild(entry.node);
|
parent.appendChild(entry.node);
|
||||||
|
@ -484,8 +481,6 @@ function cbi_d_update() {
|
||||||
next.parentNode.insertBefore(entry.node, next);
|
next.parentNode.insertBefore(entry.node, next);
|
||||||
}
|
}
|
||||||
state = true;
|
state = true;
|
||||||
if( entry.parent && typeof(cbi_c[entry.parent]) == 'number' )
|
|
||||||
cbi_c[entry.parent]++;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -935,25 +930,24 @@ function cbi_t_update() {
|
||||||
for( var sid in cbi_t )
|
for( var sid in cbi_t )
|
||||||
for( var tid in cbi_t[sid] )
|
for( var tid in cbi_t[sid] )
|
||||||
{
|
{
|
||||||
if (typeof(cbi_c[cbi_t[sid][tid].cid]) !== 'number') {
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
else if( cbi_c[cbi_t[sid][tid].cid] == 0 ) {
|
|
||||||
cbi_t[sid][tid].tab.style.display = 'none';
|
|
||||||
}
|
|
||||||
else if( cbi_t[sid][tid].tab && cbi_t[sid][tid].tab.style.display == 'none' ) {
|
|
||||||
cbi_t[sid][tid].tab.style.display = '';
|
|
||||||
|
|
||||||
var t = cbi_t[sid][tid].tab;
|
var t = cbi_t[sid][tid].tab;
|
||||||
|
var c = cbi_t[sid][tid].container;
|
||||||
|
var n = c.getElementsByTagName('div');
|
||||||
|
|
||||||
|
if (n.length === 0) {
|
||||||
|
t.style.display = 'none';
|
||||||
|
}
|
||||||
|
else if (t.style.display == 'none') {
|
||||||
|
t.style.display = '';
|
||||||
t.className += ' cbi-tab-highlighted';
|
t.className += ' cbi-tab-highlighted';
|
||||||
hl_tabs.push(t);
|
hl_tabs.push(t);
|
||||||
}
|
}
|
||||||
|
|
||||||
cbi_tag_last(cbi_t[sid][tid].container);
|
cbi_tag_last(c);
|
||||||
updated = true;
|
updated = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
if( hl_tabs.length > 0 )
|
if (hl_tabs.length > 0)
|
||||||
window.setTimeout(function() {
|
window.setTimeout(function() {
|
||||||
for( var i = 0; i < hl_tabs.length; i++ )
|
for( var i = 0; i < hl_tabs.length; i++ )
|
||||||
hl_tabs[i].className = hl_tabs[i].className.replace(/ cbi-tab-highlighted/g, '');
|
hl_tabs[i].className = hl_tabs[i].className.replace(/ cbi-tab-highlighted/g, '');
|
||||||
|
|
|
@ -2,7 +2,6 @@
|
||||||
<ul class="cbi-tabmenu">
|
<ul class="cbi-tabmenu">
|
||||||
<%- self.selected_tab = luci.http.formvalue("tab." .. self.config .. "." .. section) %>
|
<%- self.selected_tab = luci.http.formvalue("tab." .. self.config .. "." .. section) %>
|
||||||
<%- for _, tab in ipairs(self.tab_names) do if #self.tabs[tab].childs > 0 then %>
|
<%- for _, tab in ipairs(self.tab_names) do if #self.tabs[tab].childs > 0 then %>
|
||||||
<script type="text/javascript">cbi_c['container.<%=self.config%>.<%=section%>.<%=tab%>'] = <%=#self.tabs[tab].childs%>;</script>
|
|
||||||
<%- if not self.selected_tab then self.selected_tab = tab end %>
|
<%- if not self.selected_tab then self.selected_tab = tab end %>
|
||||||
<li id="tab.<%=self.config%>.<%=section%>.<%=tab%>" class="cbi-tab<%=(tab == self.selected_tab) and '' or '-disabled'%>">
|
<li id="tab.<%=self.config%>.<%=section%>.<%=tab%>" class="cbi-tab<%=(tab == self.selected_tab) and '' or '-disabled'%>">
|
||||||
<a onclick="this.blur(); return cbi_t_switch('<%=self.config%>.<%=section%>', '<%=tab%>')" href="<%=REQUEST_URI%>?tab.<%=self.config%>.<%=section%>=<%=tab%>"><%=self.tabs[tab].title%></a>
|
<a onclick="this.blur(); return cbi_t_switch('<%=self.config%>.<%=section%>', '<%=tab%>')" href="<%=REQUEST_URI%>?tab.<%=self.config%>.<%=section%>=<%=tab%>"><%=self.tabs[tab].title%></a>
|
||||||
|
|
Loading…
Reference in a new issue