Module: check_mk
Branch: master
Commit: bb46a996a3e92bc6c2c1b02bd70d6ccf0f164118
URL:
http://git.mathias-kettner.de/git/?p=check_mk.git;a=commit;h=bb46a996a3e92b…
Author: Mathias Kettner <mk(a)mathias-kettner.de>
Date: Tue Oct 7 08:57:06 2014 +0200
views: can now edit views without there general properties
---
.bugs/2196 | 8 +++
web/htdocs/views.py | 165 ++++++++++++++++++++++++++-------------------------
2 files changed, 92 insertions(+), 81 deletions(-)
diff --git a/.bugs/2196 b/.bugs/2196
new file mode 100644
index 0000000..7b3a379
--- /dev/null
+++ b/.bugs/2196
@@ -0,0 +1,8 @@
+Title: Dashboard: "Show this view in the mobile GUI" does not make sense
+Component: multisite
+State: open
+Date: 2014-10-06 19:12:23
+Targetversion: future
+Class: nastiness
+
+This checkbox does not make any sense when a view is an embedded dashlet.
diff --git a/web/htdocs/views.py b/web/htdocs/views.py
index 34b6d4c..0b44123 100644
--- a/web/htdocs/views.py
+++ b/web/htdocs/views.py
@@ -206,6 +206,7 @@ def page_edit_views():
# First step: Select the data source
# Create datasource selection valuespec, also for other modules
+# FIXME: Sort the datasources by (assumed) common usage
def DatasourceSelection():
datasources = []
for ds_name, ds in multisite_datasources.items():
@@ -222,7 +223,6 @@ def DatasourceSelection():
def page_create_view(next_url = None):
- # FIXME: Sort the datasources by (assumed) common usage
vs_ds = DatasourceSelection()
ds = 'services' # Default selection
@@ -324,86 +324,58 @@ def view_editor_options():
# % docu_link("multisite_sounds",
_("documentation")))
]
-def view_editor_specs(ds_name):
+def view_editor_specs(ds_name, general_properties=True):
+ load_views() # make sure that available_views is present
specs = []
- specs.append(
- ('view', Dictionary(
- title = _('View Properties'),
- render = 'form',
- optional_keys = None,
- elements = [
- ('datasource', FixedValue(ds_name,
- title = _('Datasource'),
- totext = multisite_datasources[ds_name]['title'],
- help = _('The datasource of a view cannot be changed.'),
- )),
- ('options', ListChoice(
- title = _('Options'),
- choices = view_editor_options(),
- default_value = ['user_sortable'],
- )),
- ('browser_reload', Integer(
- title = _('Automatic page reload'),
- unit = _('seconds'),
- minvalue = 0,
- help = _('Leave this empty or at 0 for no automatic
reload.'),
- )),
- ('layout', DropdownChoice(
- title = _('Basic Layout'),
- choices = [ (k, v["title"]) for k,v in
multisite_layouts.items() if not v.get("hide")],
- default_value = 'table',
- sorted = True,
- )),
- ('num_columns', Integer(
- title = _('Number of Columns'),
- default_value = 1,
- minvalue = 1,
- maxvalue = 50,
- )),
- ('column_headers', DropdownChoice(
- title = _('Column Headers'),
- choices = [
- ("off", _("off")),
- ("pergroup", _("once per group")),
- ("repeat", _("repeat every 20'th
row")),
- ],
- default_value = 'pergroup',
- )),
- ],
- ))
- )
+ if general_properties:
+ specs.append(
+ ('view', Dictionary(
+ title = _('View Properties'),
+ render = 'form',
+ optional_keys = None,
+ elements = [
+ ('datasource', FixedValue(ds_name,
+ title = _('Datasource'),
+ totext = multisite_datasources[ds_name]['title'],
+ help = _('The datasource of a view cannot be changed.'),
+ )),
+ ('options', ListChoice(
+ title = _('Options'),
+ choices = view_editor_options(),
+ default_value = ['user_sortable'],
+ )),
+ ('browser_reload', Integer(
+ title = _('Automatic page reload'),
+ unit = _('seconds'),
+ minvalue = 0,
+ help = _('Leave this empty or at 0 for no automatic
reload.'),
+ )),
+ ('layout', DropdownChoice(
+ title = _('Basic Layout'),
+ choices = [ (k, v["title"]) for k,v in
multisite_layouts.items() if not v.get("hide")],
+ default_value = 'table',
+ sorted = True,
+ )),
+ ('num_columns', Integer(
+ title = _('Number of Columns'),
+ default_value = 1,
+ minvalue = 1,
+ maxvalue = 50,
+ )),
+ ('column_headers', DropdownChoice(
+ title = _('Column Headers'),
+ choices = [
+ ("off", _("off")),
+ ("pergroup", _("once per group")),
+ ("repeat", _("repeat every 20'th
row")),
+ ],
+ default_value = 'pergroup',
+ )),
+ ],
+ ))
+ )
- # [4] Sorting
allowed = allowed_for_datasource(multisite_sorters, ds_name)
- specs.append(
- ('sorting', Dictionary(
- title = _('Sorting'),
- render = 'form',
- optional_keys = None,
- elements = [
- ('sorters', ListOf(
- Tuple(
- elements = [
- DropdownChoice(
- title = _('Column'),
- choices = [ (name, p["title"]) for name, p in
allowed.items() ],
- sorted = True,
- no_preselect = True,
- ),
- DropdownChoice(
- title = _('Order'),
- choices = [(False, _("Ascending")),
- (True, _("Descending"))],
- ),
- ],
- orientation = 'horizontal',
- ),
- title = _('Sorting'),
- add_label = _('Add column'),
- )),
- ],
- )),
- )
def column_spec(ident, title, ds_name):
allowed = allowed_for_datasource(multisite_painters, ds_name)
@@ -490,12 +462,43 @@ def view_editor_specs(ds_name):
],
))
- specs.append(column_spec('grouping', _('Grouping'), ds_name))
specs.append(column_spec('columns', _('Columns'), ds_name))
+ specs.append(
+ ('sorting', Dictionary(
+ title = _('Sorting'),
+ render = 'form',
+ optional_keys = None,
+ elements = [
+ ('sorters', ListOf(
+ Tuple(
+ elements = [
+ DropdownChoice(
+ title = _('Column'),
+ choices = [ (name, p["title"]) for name, p in
allowed.items() ],
+ sorted = True,
+ no_preselect = True,
+ ),
+ DropdownChoice(
+ title = _('Order'),
+ choices = [(False, _("Ascending")),
+ (True, _("Descending"))],
+ ),
+ ],
+ orientation = 'horizontal',
+ ),
+ title = _('Sorting'),
+ add_label = _('Add column'),
+ )),
+ ],
+ )),
+ )
+
+ specs.append(column_spec('grouping', _('Grouping'), ds_name))
+
return specs
-def render_view_config(view):
+def render_view_config(view, general_properties=True):
ds_name = view.get("datasource", html.var("datasource"))
if not ds_name:
raise MKInternalError(_("No datasource defined."))
@@ -504,7 +507,7 @@ def render_view_config(view):
view['datasource'] = ds_name
- for ident, vs in view_editor_specs(ds_name):
+ for ident, vs in view_editor_specs(ds_name, general_properties):
vs.render_input(ident, view)
# Is used to change the view structure to be compatible to the valuespec