summaryrefslogtreecommitdiffhomepage
path: root/libs
diff options
context:
space:
mode:
Diffstat (limited to 'libs')
-rw-r--r--libs/cbi/htdocs/luci-static/resources/cbi.js33
1 files changed, 31 insertions, 2 deletions
diff --git a/libs/cbi/htdocs/luci-static/resources/cbi.js b/libs/cbi/htdocs/luci-static/resources/cbi.js
index 2e54ff7584..f708d0f7fa 100644
--- a/libs/cbi/htdocs/luci-static/resources/cbi.js
+++ b/libs/cbi/htdocs/luci-static/resources/cbi.js
@@ -15,6 +15,7 @@
var cbi_d = [];
var cbi_t = [];
+var cbi_c = [];
function cbi_d_add(field, dep, next) {
var obj = document.getElementById(field);
@@ -35,6 +36,9 @@ function cbi_d_add(field, dep, next) {
"deps": []
};
cbi_d.unshift(entry);
+
+ if( entry.parent )
+ cbi_c[entry.parent] = (cbi_c[entry.parent] || 0) + 1;
}
entry.deps.push(dep)
}
@@ -79,7 +83,9 @@ function cbi_d_update() {
if (node && node.parentNode && !cbi_d_check(entry.deps)) {
node.parentNode.removeChild(node);
- state = (state || !node.parentNode)
+ state = (state || !node.parentNode);
+ if( entry.parent )
+ cbi_c[entry.parent]--;
} else if ((!node || !node.parentNode) && cbi_d_check(entry.deps)) {
if (!next) {
parent.appendChild(entry.node);
@@ -87,8 +93,15 @@ function cbi_d_update() {
next.parentNode.insertBefore(entry.node, next);
}
state = (state || (node && node.parentNode))
+ if( entry.parent )
+ cbi_c[entry.parent]++;
}
}
+
+ if (entry.parent) {
+ cbi_t_update();
+ }
+
if (state) {
cbi_d_update();
}
@@ -228,7 +241,7 @@ function cbi_t_add(section, tab) {
if( t && c ) {
cbi_t[section] = (cbi_t[section] || [ ]);
- cbi_t[section][tab] = { 'tab': t, 'container': c };
+ cbi_t[section][tab] = { 'tab': t, 'container': c, 'cid': c.id };
}
}
@@ -251,3 +264,19 @@ function cbi_t_switch(section, tab) {
}
return false
}
+
+function cbi_t_update() {
+ 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';
+ }
+ 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;
+ window.setTimeout(function() { t.className = t.className.replace(/ cbi-tab-highlighted/g, '') }, 750);
+ cbi_t[sid][tid].tab.className += ' cbi-tab-highlighted';
+ }
+}
+