Module: check_mk
Branch: master
Commit: f313ba8951a075bf79712a39ce82b672de2d6e4c
URL:
http://git.mathias-kettner.de/git/?p=check_mk.git;a=commit;h=f313ba8951a075…
Author: Mathias Kettner <mk(a)mathias-kettner.de>
Date: Thu Mar 8 17:52:08 2012 +0100
ListOf: reordering now works like a charm :-)
---
ChangeLog | 1 +
web/htdocs/htmllib.py | 2 +-
web/htdocs/js/checkmk.js | 22 +++++++++++++++-------
web/htdocs/valuespec.py | 14 ++++++++++----
web/htdocs/wato.css | 2 +-
5 files changed, 28 insertions(+), 13 deletions(-)
diff --git a/ChangeLog b/ChangeLog
index 8893475..559ea0f 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -15,6 +15,7 @@
of host and service (= downtime alerts)
WATO:
+ * Hosttag-editor: allow reordering of tags
* Create very basic sample configuration when using
WATO the first time (three tag groups, two rules)
* Much more checks are configurable via WATO now
diff --git a/web/htdocs/htmllib.py b/web/htdocs/htmllib.py
index bad1ee9..cc81e2f 100644
--- a/web/htdocs/htmllib.py
+++ b/web/htdocs/htmllib.py
@@ -275,7 +275,7 @@ class html:
def hidden_field(self, var, value):
if value != None:
- self.write("<input type=hidden name=%s
value=\"%s\">\n" % (var, attrencode(value)))
+ self.write("<input type=hidden name=%s
value=\"%s\">" % (var, attrencode(value)))
# Beware: call this method just before end_form(). It will
# add all current non-underscored HTML variables as hiddedn
diff --git a/web/htdocs/js/checkmk.js b/web/htdocs/js/checkmk.js
index 20aab3a..ec8fe90 100644
--- a/web/htdocs/js/checkmk.js
+++ b/web/htdocs/js/checkmk.js
@@ -1474,9 +1474,15 @@ function valuespec_listof_add(varprefix, magic) {
// input element with the name varprefix + "_deleted_%nr"
function valuespec_listof_delete(oA, varprefix, nr) {
var oTr = oA.parentNode.parentNode; // TR
- var oTdContent = oTr.childNodes[1];
- oTdContent.innerHTML = '<input type=hidden name="_' + varprefix +
'_deleted_' + nr + '" value=1>'
- oTr.style.display = "none";
+ var oTbody = oTr.parentNode;
+ oInput = document.createElement("input");
+ oInput.type = "hidden";
+ oInput.name = "_" + varprefix + '_deleted_' + nr
+ oInput.value = "1"
+ var oTable = oTbody.parentNode;
+ oTable.parentNode.insertBefore(oInput, oTable);
+ oTbody.removeChild(oTr);
+ valuespec_listof_fixarrows(oTbody);
}
function valuespec_listof_move(oA, varprefix, nr, where) {
@@ -1503,8 +1509,10 @@ function valuespec_listof_move(oA, varprefix, nr, where) {
function valuespec_listof_fixarrows(oTbody) {
for (var i in oTbody.childNodes) {
var oTd = oTbody.childNodes[i].childNodes[0]; /* TD with buttons */
- var oUpTrans = oTd.childNodes[1];
- var oUp = oTd.childNodes[2];
+ var oIndex = oTd.childNodes[0];
+ oIndex.value = "" + (parseInt(i) + 1);
+ var oUpTrans = oTd.childNodes[2];
+ var oUp = oTd.childNodes[3];
if (i == 0) {
oUpTrans.style.display = "";
oUp.style.display = "none";
@@ -1513,8 +1521,8 @@ function valuespec_listof_fixarrows(oTbody) {
oUpTrans.style.display = "none";
oUp.style.display = "";
}
- var oDownTrans = oTd.childNodes[3];
- var oDown = oTd.childNodes[4];
+ var oDownTrans = oTd.childNodes[4];
+ var oDown = oTd.childNodes[5];
if (i >= oTbody.childNodes.length - 1) {
oDownTrans.style.display = "";
oDown.style.display = "none";
diff --git a/web/htdocs/valuespec.py b/web/htdocs/valuespec.py
index e630346..7026177 100644
--- a/web/htdocs/valuespec.py
+++ b/web/htdocs/valuespec.py
@@ -526,6 +526,7 @@ class ListOf(ValueSpec):
# Render reference element for cloning
html.write('<table style="display:none"
id="%s_prototype">' % varprefix)
html.write('<tr><td class=vlof_buttons>')
+ html.hidden_field(varprefix + "_indexof_" + self._magic, "")
# reconstruct order after moving stuff
self.del_button(varprefix, self._magic)
self.move_button(varprefix, self._magic, "up")
self.move_button(varprefix, self._magic, "down")
@@ -539,6 +540,7 @@ class ListOf(ValueSpec):
html.write('<table class="valuespec_listof"
id="%s_table">' % varprefix)
for nr, v in enumerate(value):
html.write('<tr><td class=vlof_buttons>')
+ html.hidden_field(varprefix + "_indexof_%d" % (nr+1), "")
# reconstruct order after moving stuff
self.del_button(varprefix, nr+1)
self.move_button(varprefix, self._magic, "up") # visibility fixed
by javascript
self.move_button(varprefix, self._magic, "down")
@@ -560,10 +562,14 @@ class ListOf(ValueSpec):
def from_html_vars(self, varprefix):
value = []
- for n in range(1, 1 + int(html.var(varprefix + "_count"))):
- if not html.var("_%s_deleted_%d" % (varprefix, n)):
- value.append(self._valuespec.from_html_vars(
- varprefix + "_%d" % n))
+ n = 0
+ while True:
+ indexof = html.var(varprefix + "_indexof_%d" % (n+1))
+ if indexof == None:
+ break;
+ value.append(self._valuespec.from_html_vars(
+ varprefix + "_%d" % int(indexof)))
+ n += 1
return value
def validate_datatype(self, value, varprefix):
diff --git a/web/htdocs/wato.css b/web/htdocs/wato.css
index 0611f5a..b0d76db 100644
--- a/web/htdocs/wato.css
+++ b/web/htdocs/wato.css
@@ -306,7 +306,7 @@ table.validationerror img {
}
.wato img.trans {
- width: 16px;
+ width: 20px;
height: 16px;
}
.wato td.value img {