Module: check_mk
Branch: master
Commit: 85c56d10f9ec8cd952d340474fc9e93aa6d041f6
URL:
http://git.mathias-kettner.de/git/?p=check_mk.git;a=commit;h=85c56d10f9ec8c…
Author: Mathias Kettner <mk(a)mathias-kettner.de>
Date: Fri Apr 27 13:47:25 2012 +0200
WATO: check box toggling takes failed into account
---
web/htdocs/js/checkmk.js | 32 ++++++++++++++++++++++----------
web/htdocs/wato.py | 8 +++++++-
2 files changed, 29 insertions(+), 11 deletions(-)
diff --git a/web/htdocs/js/checkmk.js b/web/htdocs/js/checkmk.js
index b7c14fe..f5e816b 100644
--- a/web/htdocs/js/checkmk.js
+++ b/web/htdocs/js/checkmk.js
@@ -1044,11 +1044,16 @@ function highlight_elem(elem, on) {
highlight_elem(childs[i], on);
}
-function select_all_rows(elems) {
+function select_all_rows(elems, only_failed) {
+ if (typeof only_failed === 'undefined') {
+ only_failed = false;
+ }
for(var i = 0; i < elems.length; i++) {
- elems[i].checked = true;
- if(g_selected_rows.indexOf(elems[i].name) === -1)
- g_selected_rows.push(elems[i].name);
+ if (!only_failed || elems[i].classList.contains('failed')) {
+ elems[i].checked = true;
+ if (g_selected_rows.indexOf(elems[i].name) === -1)
+ g_selected_rows.push(elems[i].name);
+ }
}
}
@@ -1195,16 +1200,23 @@ function toggle_all_rows(obj) {
var checkboxes = get_all_checkboxes(obj || document);
var all_selected = true;
- for(var i = 0; i < checkboxes.length && all_selected == true; i++)
- if(g_selected_rows.indexOf(checkboxes[i].name) === -1)
+ var none_selected = true;
+ var some_failed = false;
+ for(var i = 0; i < checkboxes.length; i++) {
+ if (g_selected_rows.indexOf(checkboxes[i].name) === -1)
all_selected = false;
+ else
+ none_selected = false;
+ if (checkboxes[i].classList.contains('failed'))
+ some_failed = true;
+ }
// Toggle the state
- if(all_selected) {
+ if (all_selected)
remove_selected_rows(checkboxes);
- } else {
- select_all_rows(checkboxes);
- }
+ else
+ select_all_rows(checkboxes, some_failed && none_selected);
+
}
// Iterates over all the cells of the given checkbox and executes the given
diff --git a/web/htdocs/wato.py b/web/htdocs/wato.py
index 187acca..2f99a4b 100644
--- a/web/htdocs/wato.py
+++ b/web/htdocs/wato.py
@@ -1228,7 +1228,13 @@ def show_hosts(folder):
delete_url = make_action_link([("mode", "folder"),
("_delete_host", hostname)])
html.write('<td class=checkbox>')
- html.write("<input type=checkbox name=\"_c_%s\" value=%d
/>" % (hostname, colspan))
+ # Use CSS class "failed" in order to provide information about
+ # selective toggling inventory-failed hosts for Javascript
+ if host.get("inventory_failed"):
+ css_class = "class=failed"
+ else:
+ css_class = ""
+ html.write("<input type=checkbox %s name=\"_c_%s\" value=%d
/>" % (css_class, hostname, colspan))
html.write('</td>\n')
html.write("<td class=buttons>")