diff --git a/core/Plugin/Visualization.php b/core/Plugin/Visualization.php index 1c5a7a3bd84246404111796f0bfab91d2fa98139..e369dfa05a5eb9121107801a3056c0981262e651 100644 --- a/core/Plugin/Visualization.php +++ b/core/Plugin/Visualization.php @@ -286,7 +286,7 @@ class Visualization extends ViewDataTable } if (empty($this->requestConfig->filter_sort_column)) { - $this->requestConfig->setDefaultSort($this->config->columns_to_display, $hasNbUniqVisitors); + $this->requestConfig->setDefaultSort($this->config->columns_to_display, $hasNbUniqVisitors, $columns); } // deal w/ table metadata @@ -312,7 +312,7 @@ class Visualization extends ViewDataTable if (!in_array($this->requestConfig->filter_sort_column, $this->config->columns_to_display)) { $hasNbUniqVisitors = in_array('nb_uniq_visitors', $this->config->columns_to_display); - $this->requestConfig->setDefaultSort($this->config->columns_to_display, $hasNbUniqVisitors); + $this->requestConfig->setDefaultSort($this->config->columns_to_display, $hasNbUniqVisitors, $this->dataTable->getColumns()); } if (!$this->requestConfig->areGenericFiltersDisabled()) { diff --git a/core/ViewDataTable/RequestConfig.php b/core/ViewDataTable/RequestConfig.php index 102fa6801855c1953c47ddaf9ca448b92359f897..5ea6b623f4fa9bdd9cd5a3a70a08a90355b98d7d 100644 --- a/core/ViewDataTable/RequestConfig.php +++ b/core/ViewDataTable/RequestConfig.php @@ -292,7 +292,7 @@ class RequestConfig } } - public function setDefaultSort($columnsToDisplay, $hasNbUniqVisitors) + public function setDefaultSort($columnsToDisplay, $hasNbUniqVisitors, $actualColumns) { // default sort order to visits/visitors data if ($hasNbUniqVisitors && in_array('nb_uniq_visitors', $columnsToDisplay)) { @@ -301,6 +301,16 @@ class RequestConfig $this->filter_sort_column = 'nb_visits'; } + // if the default sort column does not exist, sort by the first non-label column + if (!in_array($this->filter_sort_column, $actualColumns)) { + foreach ($actualColumns as $column) { + if ($column != 'label') { + $this->filter_sort_column = $column; + break; + } + } + } + $this->filter_sort_order = 'desc'; } diff --git a/plugins/CoreHome/javascripts/dataTable.js b/plugins/CoreHome/javascripts/dataTable.js index e49228a6ca784db6e31039d0e3a787983bde2589..54643b578d1bd6252cb8803383f3902b24222686 100644 --- a/plugins/CoreHome/javascripts/dataTable.js +++ b/plugins/CoreHome/javascripts/dataTable.js @@ -1273,7 +1273,9 @@ $.extend(DataTable.prototype, UIControl.prototype, { } }) .click(generateClickCallback('pivotBy', null, function () { - if (self.param.pivotBy) { + if (self.param.pivotBy + && self.param.pivotBy != '0' + ) { self.param.pivotBy = '0'; // set to '0' so it will be sent in the request and override the saved param self.param.pivotByColumn = '0'; } else { @@ -1282,6 +1284,10 @@ $.extend(DataTable.prototype, UIControl.prototype, { self.param.pivotByColumn = self.props.pivot_by_column; } } + + // remove sorting so it will default to first column in table + self.param.filter_sort_column = ''; + self.notifyWidgetParametersChange(domElem, {filter_sort_column: ''}); })); // handle highlighted icon