Module: check_mk
Branch: master
Commit: a18ade022806612cad98d613c36a51b29bca525f
URL:
http://git.mathias-kettner.de/git/?p=check_mk.git;a=commit;h=a18ade02280661…
Author: Mathias Kettner <mk(a)mathias-kettner.de>
Date: Sat Apr 20 11:46:20 2013 +0200
VS Alternative: new argument style, supports "dropdown"
As an alternative to "radio".
---
web/htdocs/valuespec.py | 36 ++++++++++++++++++++++++++++++++++++
web/htdocs/wato.py | 1 +
2 files changed, 37 insertions(+)
diff --git a/web/htdocs/valuespec.py b/web/htdocs/valuespec.py
index 1b66856..ac559e6 100644
--- a/web/htdocs/valuespec.py
+++ b/web/htdocs/valuespec.py
@@ -1710,6 +1710,7 @@ class Alternative(ValueSpec):
ValueSpec.__init__(self, **kwargs)
self._elements = kwargs["elements"]
self._match = kwargs.get("match") # custom match function
+ self._style = kwargs.get("style", "radio") # alternative:
"dropdown"
# Return the alternative (i.e. valuespec)
# that matches the datatype of a given value. We assume
@@ -1726,6 +1727,41 @@ class Alternative(ValueSpec):
pass
def render_input(self, varprefix, value):
+ if self._style == "radio":
+ self.render_input_radio(varprefix, value)
+ else:
+ self.render_input_dropdown(varprefix, value)
+
+ def render_input_dropdown(self, varprefix, value):
+ mvs = self.matching_alternative(value)
+ options = []
+ sel_option = html.var(varprefix + "_use")
+ for nr, vs in enumerate(self._elements):
+ if not sel_option and vs == mvs:
+ sel_option = str(nr)
+ options.append((str(nr), vs.title()))
+ onchange="valuespec_cascading_change(this, '%s', %d);" %
(varprefix, len(options))
+ html.select(varprefix + "_use", options, sel_option, onchange)
+ html.write(" ")
+
+ for nr, vs in enumerate(self._elements):
+ if str(nr) == sel_option:
+ disp = ""
+ cur_val = value
+ else:
+ disp = "none"
+ cur_val = vs.default_value()
+
+ html.write('<span id="%s_%s_sub" style="display:
%s">' %
+ (varprefix, nr, disp))
+ html.help(vs.help())
+ vs.render_input(varprefix + "_%d" % nr, cur_val)
+ html.write("</span>")
+
+
+
+
+ def render_input_radio(self, varprefix, value):
mvs = self.matching_alternative(value)
for nr, vs in enumerate(self._elements):
if html.has_var(varprefix + "_use"):
diff --git a/web/htdocs/wato.py b/web/htdocs/wato.py
index ad979f4..455f96b 100644
--- a/web/htdocs/wato.py
+++ b/web/htdocs/wato.py
@@ -11233,6 +11233,7 @@ def Levels(**kwargs):
title = title,
help = help,
show_titles = False,
+ style = "dropdown",
elements = [
FixedValue(
None,