diff options
author | BeezyT <timo@ezdesign.de> | 2012-10-08 11:38:19 +0400 |
---|---|---|
committer | BeezyT <timo@ezdesign.de> | 2012-10-08 11:38:19 +0400 |
commit | 7f3c302cd8cc67662a616750178a7be0c3abfbf7 (patch) | |
tree | 9c55e1aa323ddea2482ce773d7df9c3c7d4639d4 | |
parent | f74e7667f91331037e1ba6a332d02f6614b93d14 (diff) |
refs #3332
* Transitions is not available on page title groups anymore
* JS is slightly more efficient with row actions
git-svn-id: http://dev.piwik.org/svn/trunk@7125 59fd770c-687e-43c8-a1e3-f5a4ff64c105
-rw-r--r-- | plugins/CoreHome/templates/datatable.js | 50 | ||||
-rw-r--r-- | plugins/CoreHome/templates/datatable_rowactions.js | 10 | ||||
-rw-r--r-- | plugins/Transitions/templates/transitions.js | 11 |
3 files changed, 42 insertions, 29 deletions
diff --git a/plugins/CoreHome/templates/datatable.js b/plugins/CoreHome/templates/datatable.js index e1ed3a5704..4d7bed7ac1 100644 --- a/plugins/CoreHome/templates/datatable.js +++ b/plugins/CoreHome/templates/datatable.js @@ -1294,40 +1294,42 @@ dataTable.prototype = doHandleRowActions: function(trs) { var self = this; + + var availableActionsForReport = DataTable_RowActions_Registry + .getAvailableActionsForReport(self.param); + + if (availableActionsForReport.length == 0) + { + return; + } + var actionInstances = {}; + for (var i = 0; i < availableActionsForReport.length; i++) + { + var action = availableActionsForReport[i]; + actionInstances[action.name] = action.createInstance(self); + } trs.each(function() { var tr = $(this); var td = tr.find('td:first'); - // load available actions for this row - var availableActions = DataTable_RowActions_Registry.getAvailableActions(self.param, tr); - if (availableActions.length == 0) + // call initTr on all actions that are available for the report + for (var i = 0; i < availableActionsForReport.length; i++) { - return; + var action = availableActionsForReport[i]; + actionInstances[action.name].initTr(tr); } - // call initTr on all available actions - for (var i = 0; i < availableActions.length; i++) - { - var action = availableActions[i]; - if (typeof actionInstances[action.name] == "undefined") - { - actionInstances[action.name] = action.createInstance(self); - } - var actionInstance = actionInstances[action.name]; - actionInstance.initTr(tr); - } - - // show actions on hover + // show actions that are available for the row on hover var actionsDom = null; tr.hover(function() { if (actionsDom === null) { // create dom nodes on the fly - actionsDom = self.createRowActions(availableActions, tr, actionInstances); + actionsDom = self.createRowActions(availableActionsForReport, tr, actionInstances); td.prepend(actionsDom); } // reposition and show the actions @@ -1344,19 +1346,23 @@ dataTable.prototype = }); }, - createRowActions: function(availableActions, tr, actionInstances) + createRowActions: function(availableActionsForReport, tr, actionInstances) { var container = $(document.createElement('div')).addClass('dataTableRowActions'); - for (var i = availableActions.length - 1; i >= 0; i--) + for (var i = availableActionsForReport.length - 1; i >= 0; i--) { - var action = availableActions[i]; + var action = availableActionsForReport[i]; + + if (!action.isAvailableOnRow(this.param, tr)) { + continue; + } var actionEl = $(document.createElement('a')).attr({href: '#'}).addClass('action' + action.name); actionEl.append($(document.createElement('img')).attr({src: action.dataTableIcon})); container.append(actionEl); - if (i == availableActions.length - 1) { + if (i == availableActionsForReport.length - 1) { actionEl.addClass('leftmost'); } if (i == 0) { diff --git a/plugins/CoreHome/templates/datatable_rowactions.js b/plugins/CoreHome/templates/datatable_rowactions.js index 77666139ba..ab452f433f 100644 --- a/plugins/CoreHome/templates/datatable_rowactions.js +++ b/plugins/CoreHome/templates/datatable_rowactions.js @@ -26,7 +26,7 @@ var DataTable_RowActions_Registry = { this.registry.push(action); }, - getAvailableActions: function(dataTableParams, tr) { + getAvailableActionsForReport: function(dataTableParams, tr) { if (dataTableParams.disable_row_actions == '1') { return []; @@ -34,7 +34,7 @@ var DataTable_RowActions_Registry = { var available = []; for (var i = 0; i < this.registry.length; i++) { - if (this.registry[i].isAvailable(dataTableParams, tr)) { + if (this.registry[i].isAvailableOnReport(dataTableParams, tr)) { available.push(this.registry[i]); } } @@ -69,7 +69,7 @@ DataTable_RowActions_Registry.register({ return new DataTable_RowActions_RowEvolution(dataTable); }, - isAvailable: function(dataTableParams, tr) { + isAvailableOnReport: function(dataTableParams) { return ( typeof dataTableParams.disable_row_evolution == 'undefined' || dataTableParams.disable_row_evolution == "0" @@ -77,6 +77,10 @@ DataTable_RowActions_Registry.register({ typeof dataTableParams.flat == 'undefined' || dataTableParams.flat == "0" ); + }, + + isAvailableOnRow: function(dataTableParams, tr) { + return true; } }); diff --git a/plugins/Transitions/templates/transitions.js b/plugins/Transitions/templates/transitions.js index dd0fc2452d..0f779a51d0 100644 --- a/plugins/Transitions/templates/transitions.js +++ b/plugins/Transitions/templates/transitions.js @@ -79,13 +79,16 @@ DataTable_RowActions_Registry.register({ return new DataTable_RowActions_Transitions(dataTable); }, - isAvailable: function(dataTableParams, tr) { + isAvailableOnReport: function(dataTableParams) { return ( - DataTable_RowActions_Transitions.isPageUrlReport(dataTableParams.module, dataTableParams.action) - && tr.find('> td:first > a').size() > 0 // only available on pages, not folders - ) || ( + DataTable_RowActions_Transitions.isPageUrlReport(dataTableParams.module, dataTableParams.action) || DataTable_RowActions_Transitions.isPageTitleReport(dataTableParams.module, dataTableParams.action) ); + }, + + isAvailableOnRow: function(dataTableParams, tr) { + // not available on groups (i.e. folders) + return !tr.attr('id'); } }); |