non-edit is now reflected when reloading the page
Message-ID: <547ddbb3.T0djXsg4Y2ypEwN9%lm(a)mathias-kettner.de>
User-Agent: Heirloom mailx 12.5 6/20/10
MIME-Version: 1.0
Content-Type: text/plain; charset=us-ascii
Content-Transfer-Encoding: 7bit
Module: check_mk
Branch: master
Commit: c38bf9568b2e8545c72bb7593ef00e2f0f68eca7
URL:
http://git.mathias-kettner.de/git/?p=check_mk.git;a=commit;h=c38bf9568b2e85…
Author: Lars Michelsen <lm(a)mathias-kettner.de>
Date: Tue Dec 2 16:31:08 2014 +0100
#1586 FIX Dashboard: Toggling edit/non-edit is now reflected when reloading the page
---
.werks/1586 | 9 +++++++++
ChangeLog | 1 +
web/htdocs/dashboard.py | 21 +++++++++++++++------
web/htdocs/js/dashboard.js | 14 ++++++++++----
4 files changed, 35 insertions(+), 10 deletions(-)
diff --git a/.werks/1586 b/.werks/1586
new file mode 100644
index 0000000..9592963
--- /dev/null
+++ b/.werks/1586
@@ -0,0 +1,9 @@
+Title: Dashboard: Toggling edit/non-edit is now reflected when reloading the page
+Level: 1
+Component: multisite
+Compatible: compat
+Version: 1.2.5i7
+Date: 1417534243
+Class: fix
+
+
diff --git a/ChangeLog b/ChangeLog
index ada3d38..b55f0b1 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -96,6 +96,7 @@
* 1580 FIX: Views: Hardcoded single context filters are not shown in filter form
anymore...
* 1581 FIX: Single context views with missing context show an error message now...
* 1585 FIX: Dashboard: Fixed mass client CPU load consumption when making graph
dashlets too small...
+ * 1586 FIX: Dashboard: Toggling edit/non-edit is now reflected when reloading the
page
WATO:
* 1170 Added buttons to move rules to top/bottom of the list to ruleset edit dialog
diff --git a/web/htdocs/dashboard.py b/web/htdocs/dashboard.py
index d01f3ef..8d30c7f 100644
--- a/web/htdocs/dashboard.py
+++ b/web/htdocs/dashboard.py
@@ -380,7 +380,13 @@ def render_dashboard(name):
refresh = dashlet.get("refresh",
dashlet_type.get("refresh"))
if refresh:
if 'on_refresh' in dashlet_type:
- action = 'function() {%s}' %
dashlet_type['on_refresh'](nr, dashlet)
+ try:
+ action = 'function() {%s}' %
dashlet_type['on_refresh'](nr, dashlet)
+ except Exception, e:
+ # Ignore the exceptions in non debug mode, assuming the exception
also occures
+ # while dashlet rendering, which is then shown in the dashlet
itselfs.
+ if config.debug:
+ raise
else:
# FIXME: remove add_wato_folder_to_url
action = '"%s"' % add_wato_folder_to_url(url,
wato_folder) # url to dashboard_dashlet.py
@@ -398,7 +404,10 @@ def render_dashboard(name):
try:
on_resize.append('%d: function() {%s}' % (nr,
dashlet_type['on_resize'](nr, dashlet)))
except Exception, e:
- html.write('Error in "on_resize handler": %s' %
html.attrencode(e))
+ # Ignore the exceptions in non debug mode, assuming the exception also
occures
+ # while dashlet rendering, which is then shown in the dashlet itselfs.
+ if config.debug:
+ raise
dimensions = {
'x' : dashlet['position'][0],
@@ -491,15 +500,15 @@ var refresh_dashlets = [%s];
var on_resize_dashlets = {%s};
var dashboard_name = '%s';
var dashboard_mtime = %d;
-var dashboard_url = '%s';
var dashlets = %s;
calculate_dashboard();
window.onresize = function () { calculate_dashboard(); }
dashboard_scheduler(1);
- """ % (MAX, GROW, raster, header_height, screen_margin, title_height,
dashlet_padding, dashlet_min_size,
- corner_overlap, ','.join(refresh_dashlets),
','.join(on_resize), name, board['mtime'],
- html.makeuri([('edit', '1')]), repr(dashlets_js)))
+ """ % (MAX, GROW, raster, header_height, screen_margin, title_height,
+ dashlet_padding, dashlet_min_size, corner_overlap,
+ ','.join(refresh_dashlets), ','.join(on_resize),
+ name, board['mtime'], repr(dashlets_js)))
if mode == 'edit':
html.javascript('toggle_dashboard_edit(true)')
diff --git a/web/htdocs/js/dashboard.js b/web/htdocs/js/dashboard.js
index 929c6b8..fcf84ec 100644
--- a/web/htdocs/js/dashboard.js
+++ b/web/htdocs/js/dashboard.js
@@ -399,6 +399,14 @@ function toggle_dashboard_edit() {
for (var i = 0; i < dashlet_divs.length; i++)
dashlet_toggle_edit(dashlet_divs[i]);
+ // Remove/Add edit=1 parameter from URL to make page reload handling correct
+ // Only a solution for browsers with history.replaceState support. Sadly
+ // we have no F5/reload fix for others...
+ if (window.parent.history.replaceState) {
+ new_url = makeuri({'edit': g_editing ? '1' : '0'});
+ window.parent.history.replaceState({}, document.title, new_url);
+ }
+
toggle_grid();
}
@@ -527,8 +535,7 @@ function dashlet_toggle_edit(dashlet, edit) {
edit.className = 'edit';
edit.onclick = function(dashlet_id, board_name) {
return function() {
- location.href = 'edit_dashlet.py?name=' + board_name +
'&id=' + dashlet_id
- + '&back=' +
encodeURIComponent(dashboard_url);
+ location.href = 'edit_dashlet.py?name=' + board_name +
'&id=' + dashlet_id;
};
}(id, dashboard_name);
controls.appendChild(edit);
@@ -538,8 +545,7 @@ function dashlet_toggle_edit(dashlet, edit) {
del.className = 'del';
del.onclick = function(dashlet_id, board_name) {
return function() {
- location.href = 'delete_dashlet.py?name=' + board_name +
'&id=' + dashlet_id
- + '&back=' +
encodeURIComponent(dashboard_url);
+ location.href = 'delete_dashlet.py?name=' + board_name +
'&id=' + dashlet_id;
};
}(id, dashboard_name);
controls.appendChild(del);