diff options
author | Kate Butler <kate@innocraft.com> | 2019-10-01 02:01:40 +0300 |
---|---|---|
committer | Thomas Steur <tsteur@users.noreply.github.com> | 2019-10-01 02:01:40 +0300 |
commit | 546d429972b7f1b9b4ca869ffc32d44b13935d39 (patch) | |
tree | 60cbfd48842423725d893ab6530e02e5c1e6a51a /plugins/CoreHome | |
parent | 0fc4d1d1cc7c18d3fbe7a5594fcfb7b6c57f39aa (diff) |
Add a configurable row limit to report export popover (#14913)
* Add a configurable row limit to report export popover
* Don't validate input against max limit when it's not set
Diffstat (limited to 'plugins/CoreHome')
4 files changed, 30 insertions, 4 deletions
diff --git a/plugins/CoreHome/CoreHome.php b/plugins/CoreHome/CoreHome.php index e55706314d..bd515e2693 100644 --- a/plugins/CoreHome/CoreHome.php +++ b/plugins/CoreHome/CoreHome.php @@ -465,6 +465,7 @@ class CoreHome extends \Piwik\Plugin $translationKeys[] = 'CoreHome_PageDownShortcutDescription'; $translationKeys[] = 'CoreHome_MacPageUp'; $translationKeys[] = 'CoreHome_MacPageDown'; + $translationKeys[] = 'General_ComputedMetricMax'; $translationKeys[] = 'General_XComparedToY'; $translationKeys[] = 'General_ComparisonCardTooltip1'; $translationKeys[] = 'General_ComparisonCardTooltip2'; diff --git a/plugins/CoreHome/angularjs/report-export/reportexport.directive.js b/plugins/CoreHome/angularjs/report-export/reportexport.directive.js index 3599c4f6d8..80c420f5fd 100644 --- a/plugins/CoreHome/angularjs/report-export/reportexport.directive.js +++ b/plugins/CoreHome/angularjs/report-export/reportexport.directive.js @@ -21,7 +21,8 @@ 'reportTitle': '@', 'requestParams': '@', 'reportFormats': '@', - 'apiMethod': '@' + 'apiMethod': '@', + 'maxFilterLimit': '@', }, link: function(scope, element, attr) { @@ -204,8 +205,12 @@ var formats = JSON.parse(scope.reportFormats); scope.reportType = 'default'; - scope.reportLimit = dataTable.param.filter_limit > 0 ? dataTable.param.filter_limit : 100; - scope.reportLimitAll = dataTable.param.filter_limit == -1 ? 'yes' : 'no'; + var reportLimit = dataTable.param.filter_limit; + if (scope.maxFilterLimit > 0) { + reportLimit = Math.min(reportLimit, scope.maxFilterLimit); + } + scope.reportLimit = reportLimit > 0 ? reportLimit : 100; + scope.reportLimitAll = reportLimit == -1 ? 'yes' : 'no'; scope.optionFlat = dataTable.param.flat === true || dataTable.param.flat === 1 || dataTable.param.flat === "1"; scope.optionExpanded = 1; scope.optionFormatMetrics = 0; @@ -233,6 +238,14 @@ } }, true); + if (scope.maxFilterLimit > 0) { + scope.$watch('reportLimit', function (newVal, oldVal) { + if (parseInt(newVal, 10) > parseInt(scope.maxFilterLimit, 10)) { + scope.reportLimit = oldVal; + } + }, true); + } + var elem = $document.find('#reportExport').eq(0); if (!elem.length) { diff --git a/plugins/CoreHome/angularjs/report-export/reportexport.popover.html b/plugins/CoreHome/angularjs/report-export/reportexport.popover.html index b435b6986e..f80b896a4c 100644 --- a/plugins/CoreHome/angularjs/report-export/reportexport.popover.html +++ b/plugins/CoreHome/angularjs/report-export/reportexport.popover.html @@ -37,6 +37,7 @@ <div piwik-field uicontrol="radio" name="filter_limit_all" data-title="{{ 'CoreHome_RowLimit'|translate }}" ng-model="$parent.reportLimitAll" + ng-hide="maxFilterLimit > 0" full-width="false" options="limitAllOptions"> </div> @@ -44,7 +45,17 @@ min="1" ng-model="$parent.reportLimit" full-width="false" - ng-show="$parent.reportLimitAll == 'no'"> + ng-show="$parent.reportLimitAll == 'no' && maxFilterLimit <= 0"> + </div> + + <div piwik-field uicontrol="number" name="filter_limit" + min="1" + max="{{ scope.reportLimit }}" + ng-model="$parent.reportLimit" + ng-keypress="scope.checkNumberForLimit" + full-width="false" + data-title="{{ 'CoreHome_RowLimit'|translate }} ({{ 'General_ComputedMetricMax'|translate:maxFilterLimit }})" + ng-show="$parent.reportLimitAll == 'no' && maxFilterLimit > 0"> </div> </div> </div> diff --git a/plugins/CoreHome/templates/_dataTableActions.twig b/plugins/CoreHome/templates/_dataTableActions.twig index 4266644440..05be8b9834 100644 --- a/plugins/CoreHome/templates/_dataTableActions.twig +++ b/plugins/CoreHome/templates/_dataTableActions.twig @@ -76,6 +76,7 @@ report-title="{{ properties.title|e('html_attr') }}" request-params="{{ requestParams|e('html_attr') }}" api-method="{{ properties.apiMethodToRequestDataTable }}" report-formats="{{ formats|json_encode|e('html_attr') }}" href='javascript:;' title="{{ 'General_ExportThisReport'|translate|e('html_attr') }}" + max-filter-limit="{{ properties.max_export_filter_limit|e('html_attr') }}" ><span class="icon-export"></span></a> {% endif %} |