Module: check_mk
Branch: master
Commit: d1b17422be622adba14713c06689babd526e7d11
URL:
http://git.mathias-kettner.de/git/?p=check_mk.git;a=commit;h=d1b17422be622a…
Author: Andreas Boesl <ab(a)mathias-kettner.de>
Date: Fri Jun 1 14:56:15 2012 +0200
WATO: visiblity fixes for hidden attributes and topics
---
web/htdocs/js/wato.js | 29 ++++++++++++++++++++---------
web/htdocs/wato.py | 10 ++++++++--
2 files changed, 28 insertions(+), 11 deletions(-)
diff --git a/web/htdocs/js/wato.js b/web/htdocs/js/wato.js
index c02c830..5bf8df0 100644
--- a/web/htdocs/js/wato.js
+++ b/web/htdocs/js/wato.js
@@ -112,12 +112,20 @@ function wato_fix_visibility() {
/* Now loop over all attributes that have conditions. Those are
stored in the global variable wato_depends_on_tags, which is filled
during the creation of the web page. */
+
for (var i in wato_check_attributes) {
- var attrname = wato_check_attributes[i]
+ var attrname = wato_check_attributes[i];
/* Now comes the tricky part: decide whether that attribute should
be visible or not: */
var display = "";
- if(attrname in wato_depends_on_roles){
+
+ // Always invisible
+ if( hide_attributes.indexOf(attrname) > -1 ){
+ display = "none";
+ }
+
+ // Visibility depends on roles
+ if( display == "" && attrname in wato_depends_on_roles){
for (var i in wato_depends_on_roles[attrname]) {
var role = wato_depends_on_roles[attrname][i];
var negate = role[0] == '!';
@@ -130,6 +138,7 @@ function wato_fix_visibility() {
}
}
+ // Visibility depends on tags
if( display == "" && attrname in wato_depends_on_tags){
for (var i in wato_depends_on_tags[attrname]) {
var tag = wato_depends_on_tags[attrname][i];
@@ -143,6 +152,7 @@ function wato_fix_visibility() {
}
}
+
var oTr = document.getElementById("attr_" + attrname);
if(oTr) {
oTr.style.display = display;
@@ -167,7 +177,7 @@ function wato_fix_visibility() {
oAttrDisp = null;
// There is at least one item in this topic -> show it
- var topic = oTr.parentNode.parentNode.parentNode.id.substr(21);
+ var topic = oTr.parentNode.childNodes[0].textContent;
if( display == "" ){
var index = hide_topics.indexOf(topic);
if( index != -1 )
@@ -175,15 +185,16 @@ function wato_fix_visibility() {
}
}
}
- for (var item in volatile_topics){
- var name = volatile_topics[item];
- var oTr = document.getElementById("topic_" + name);
- if(oTr) {
- if(hide_topics.indexOf(name) > -1 )
+
+ var form_edithost = document.getElementById("form_edithost");
+ for (var child in form_edithost.childNodes){
+ oTr = form_edithost.childNodes[child];
+ if (oTr.className == "nform"){
+ if( hide_topics.indexOf(oTr.childNodes[0].childNodes[0].textContent) > -1
)
oTr.style.display = "none";
else
oTr.style.display = "";
- }
+ }
}
}
diff --git a/web/htdocs/wato.py b/web/htdocs/wato.py
index 567e75c..cefdac8 100644
--- a/web/htdocs/wato.py
+++ b/web/htdocs/wato.py
@@ -4595,6 +4595,7 @@ def configure_attributes(hosts, for_what, parent, myself=None,
without_attribute
inherited_tags = {}
volatile_topics = []
+ hide_attributes = []
for topic in topics:
topic_is_volatile = True # assume topic is sometimes hidden due to dependencies
if len(topics) > 1:
@@ -4638,6 +4639,8 @@ def configure_attributes(hosts, for_what, parent, myself=None,
without_attribute
if not depends_on_tags and not depends_on_roles:
# One attribute is always shown -> topic is always visible
topic_is_volatile = False
+ else:
+ hide_attributes.append(attr.name())
# "bulk": determine, if this attribute has the same setting for all
hosts.
values = []
@@ -4797,6 +4800,7 @@ def configure_attributes(hosts, for_what, parent, myself=None,
without_attribute
def dump_json(obj):
return repr(obj).replace('None', 'null')
+ forms.end()
# Provide Javascript world with the tag dependency information
# of all attributes.
html.javascript("var inherited_tags = %s;\n"\
@@ -4805,13 +4809,15 @@ def configure_attributes(hosts, for_what, parent, myself=None,
without_attribute
"var wato_depends_on_roles = %s;\n"\
"var volatile_topics = %s;\n"\
"var user_roles = %s;\n"\
+ "var hide_attributes = %s;\n"\
"wato_fix_visibility();\n" % (
dump_json(inherited_tags),
-
dump_json(list(set(dependency_mapping_tags.keys()+dependency_mapping_roles.keys()))),
+
dump_json(list(set(dependency_mapping_tags.keys()+dependency_mapping_roles.keys()+hide_attributes))),
dump_json(dependency_mapping_tags),
dump_json(dependency_mapping_roles),
dump_json(volatile_topics),
- dump_json(config.user_role_ids)))
+ dump_json(config.user_role_ids),
+ dump_json(hide_attributes)))
# Check if at least one host in a folder (or its subfolders)