diff --git a/public/js/icinga/behavior/actiontable.js b/public/js/icinga/behavior/actiontable.js index d3df54614..b3b409491 100644 --- a/public/js/icinga/behavior/actiontable.js +++ b/public/js/icinga/behavior/actiontable.js @@ -43,7 +43,7 @@ * Handle the selection of an action table * * @param table {HTMLElement} The table - * @param {Icinga} + * @param icinga {Icinga} * * @constructor */ @@ -158,7 +158,6 @@ return; } var self = this; - var url = this.getMultiselectionUrl(); this.rowActions() .filter( function (i, el) { @@ -283,14 +282,7 @@ var ActionTable = function (icinga) { Icinga.EventListener.call(this, icinga); - - /** - * The hash that is currently being loaded - * - * @var String - */ - this.loadingHash = null; - + /** * If currently loading * @@ -364,7 +356,7 @@ } self.icinga.history.pushUrl(state); - // re draw all table selections + // redraw all table selections self.tables().each(function () { new Selection(this, self.icinga).refresh(); }); @@ -375,22 +367,43 @@ }; /** - * Ensure that + * Render the selection and prepare selection rows */ ActionTable.prototype.onRendered = function(evt) { var container = evt.target; var self = evt.data.self; - // draw all selections + // initialize all rows with the correct link, to assure that + $('table.action tr', container).each(function(idx, el) { + var $a = $('a[href].rowaction', el).first(); + if ($a.length) { + // TODO: Find out whether we leak memory on IE with this: + $(el).attr('href', $a.attr('href')); + return; + } + $a = $('a[href]', el).first(); + if ($a.length) { + $(el).attr('href', $a.attr('href')); + } + }); + + // draw all active selections that have disappeared on reload self.tables().each(function(i, el) { new Selection(el, self.icinga).refresh(); }); - // update displayed selection count + // update displayed selection counter var table = new Selection(self.tables(container).first()); $(container).find('.selection-info-count').text(table.selections().size()); }; + ActionTable.prototype.clearAll = function () { + var self = this; + this.tables().each(function () { + new Selection(this, self.icinga).clear(); + }); + }; + Icinga.Behaviors.ActionTable = ActionTable; }) (Icinga, jQuery); diff --git a/public/js/icinga/events.js b/public/js/icinga/events.js index 000ecf103..3ea40b3d7 100644 --- a/public/js/icinga/events.js +++ b/public/js/icinga/events.js @@ -40,20 +40,6 @@ icinga.loader.loadUrl(url, $(el)).autorefresh = true; }); - // Set first links href in a action table tr as row href: - $('table.action tr', el).each(function(idx, el) { - var $a = $('a[href].rowaction', el).first(); - if ($a.length) { - // TODO: Find out whether we leak memory on IE with this: - $(el).attr('href', $a.attr('href')); - return; - } - $a = $('a[href]', el).first(); - if ($a.length) { - $(el).attr('href', $a.attr('href')); - } - }); - $('td.state span.timesince').attr('title', null); var moduleName = el.data('icingaModule'); @@ -441,7 +427,6 @@ } else { icinga.ui.layout1col(); } - $('table tr[href].active').removeClass('active'); icinga.history.pushCurrentState(); } } diff --git a/public/js/icinga/ui.js b/public/js/icinga/ui.js index d2f9ab138..4ab802ca7 100644 --- a/public/js/icinga/ui.js +++ b/public/js/icinga/ui.js @@ -241,6 +241,9 @@ $('#layout').removeClass('twocols'); this.closeContainer($('#col2')); this.disableCloseButtons(); + + // one-column layouts never have any selection active + this.icinga.behaviors.actiontable.clearAll(); }, closeContainer: function($c) {