From c86d07d6afd893f9ae9e05b8abc47852d1cd5aee Mon Sep 17 00:00:00 2001 From: qixinzhi Date: Wed, 20 Sep 2023 03:26:22 +0000 Subject: [PATCH] * Fix switch metric after filter,bug#38652,task#103053. --- module/metric/control.php | 25 +++++++++++++------------ module/metric/js/preview.ui.js | 2 +- module/metric/ui/previewsingle.html.php | 7 +++++-- 3 files changed, 19 insertions(+), 15 deletions(-) diff --git a/module/metric/control.php b/module/metric/control.php index 385e041cda..2e779d514e 100755 --- a/module/metric/control.php +++ b/module/metric/control.php @@ -102,13 +102,13 @@ class metric extends control * @access public * @return void */ - public function preview($scope = 'project', $viewType = 'single', $metricID = 0, $filters = '') + public function preview($scope = 'project', $viewType = 'single', $metricID = 0, $filtersBase64 = '') { $this->metric->processScopeList('released'); if($scope == 'filter') { - $filters = json_decode(base64_decode($filters), true); + $filters = json_decode(base64_decode($filtersBase64), true); if(!is_array($filters)) $filters = array(); $metrics = $this->metric->getListByFilter($filters, 'released'); } @@ -133,16 +133,17 @@ class metric extends control $resultData = $this->metricZen->getViewTableData($metric, $result); } - $this->view->metrics = $metrics; - $this->view->current = $current; - $this->view->metricList = $this->lang->metric->metricList; - $this->view->scope = $scope; - $this->view->title = $this->lang->metric->common; - $this->view->viewType = $viewType; - $this->view->recTotal = count($metrics); - $this->view->filters = $filters; - $this->view->resultHeader = $resultHeader; - $this->view->resultData = $resultData; + $this->view->metrics = $metrics; + $this->view->current = $current; + $this->view->metricList = $this->lang->metric->metricList; + $this->view->scope = $scope; + $this->view->title = $this->lang->metric->common; + $this->view->viewType = $viewType; + $this->view->recTotal = count($metrics); + $this->view->filters = $filters; + $this->view->filtersBase64 = $filtersBase64; + $this->view->resultHeader = $resultHeader; + $this->view->resultData = $resultData; $this->display(); } diff --git a/module/metric/js/preview.ui.js b/module/metric/js/preview.ui.js index 6ec725463c..a3025fe5e3 100644 --- a/module/metric/js/preview.ui.js +++ b/module/metric/js/preview.ui.js @@ -239,7 +239,7 @@ window.handleFilterClick = function() }); return; } - loadPage($.createLink('metric', 'preview', 'scope=filter&viewType=' + viewType + '&metricID=0&filters=' + filterBase64)); + loadPage($.createLink('metric', 'preview', 'scope=filter&viewType=' + viewType + '&metricID=0&filtersBase64=' + filterBase64)); } window.afterPageUpdate = function($target, info, options) diff --git a/module/metric/ui/previewsingle.html.php b/module/metric/ui/previewsingle.html.php index ede05302a0..78db0a25f9 100644 --- a/module/metric/ui/previewsingle.html.php +++ b/module/metric/ui/previewsingle.html.php @@ -10,18 +10,21 @@ declare(strict_types=1); */ namespace zin; -$fnGenerateSide = function() use($metrics, $current, $viewType, $scope) +$fnGenerateSide = function() use($metrics, $current, $viewType, $scope, $filtersBase64) { $metricList = array(); foreach($metrics as $key => $metric) { $class = $metric->id == $current->id ? 'metric-current' : ''; + $params = "scope=$scope&viewType=$viewType&metricID={$metric->id}"; + if(!empty($filtersBase64)) $params .= "&filtersBase64={$filtersBase64}"; + $metricList[] = li ( set::className($class . ' metric-item font-medium'), a( $metric->name, - set::href(helper::createLink('metric', 'preview', "scope=$scope&viewType=$viewType&metricID={$metric->id}")), + set::href(helper::createLink('metric', 'preview', $params)), ) ); }