From 9aa7ec86271c5d11995a92b7954de2fdaf2452b2 Mon Sep 17 00:00:00 2001 From: qixinzhi Date: Thu, 28 Sep 2023 06:08:48 +0000 Subject: [PATCH] * Fix duplicate field in select list. --- ...nt_of_daily_finished_task_in_execution.php | 18 ++++++++++------- module/metric/js/preview.ui.js | 5 ++++- module/metric/model.php | 14 ++++++++++++- module/metric/zen.php | 20 ++++++++++++++++++- 4 files changed, 47 insertions(+), 10 deletions(-) diff --git a/module/metric/calc/execution/scale/count_of_daily_finished_task_in_execution.php b/module/metric/calc/execution/scale/count_of_daily_finished_task_in_execution.php index 32ed595189..d22bd591d2 100644 --- a/module/metric/calc/execution/scale/count_of_daily_finished_task_in_execution.php +++ b/module/metric/calc/execution/scale/count_of_daily_finished_task_in_execution.php @@ -30,17 +30,21 @@ class count_of_daily_finished_task_in_execution extends baseCalc public function calculate($row) { - if($row->status != 'done' || empty($row->finishedDate)) return false; + $status = $row->status; + $finishedDate = $row->finishedDate; + $execution = $row->execution; - if(empty($row->finishedDate)) return false; - $date = substr($row->finishedDate, 0, 10); + if($status != 'done' || empty($finishedDate)) return false; + + if(empty($finishedDate)) return false; + $date = substr($finishedDate, 0, 10); list($year, $month, $day) = explode('-', $date); if($year == '0000') return false; - if(!isset($this->result[$row->execution])) $this->result[$row->execution] = array(); - if(!isset($this->result[$row->execution][$year])) $this->result[$row->execution][$year] = array(); - if(!isset($this->result[$row->execution][$year][$month])) $this->result[$row->execution][$year][$month] = array(); - if(!isset($this->result[$row->execution][$year][$month][$day])) $this->result[$row->execution][$year][$month][$day] = 0; + if(!isset($this->result[$execution])) $this->result[$execution] = array(); + if(!isset($this->result[$execution][$year])) $this->result[$execution][$year] = array(); + if(!isset($this->result[$execution][$year][$month])) $this->result[$execution][$year][$month] = array(); + if(!isset($this->result[$execution][$year][$month][$day])) $this->result[$execution][$year][$month][$day] = 0; $this->result[$row->execution][$year][$month][$day] ++; } diff --git a/module/metric/js/preview.ui.js b/module/metric/js/preview.ui.js index da6b729f5a..f9d4c166b9 100644 --- a/module/metric/js/preview.ui.js +++ b/module/metric/js/preview.ui.js @@ -681,7 +681,10 @@ window.renderCheckedLabel = function() $content.append(html); var $label = $content.find('[metric-id="' + label.id + '"]'); - var labelWidth = Math.ceil($label.width() + parseInt($label.css('padding-left')) + parseInt($label.css('padding-right')) + parseInt($label.css('margin-left')) + parseInt($label.css('margin-right'))); + var labelWidth = $label.width(); + var labelLeft = parseInt($label.css('padding-left')) + parseInt($label.css('margin-left')); + var labelRight = parseInt($label.css('padding-right')) + parseInt($label.css('margin-right')); + var labelWidth = Math.ceil(labelWidth + labelLeft + labelRight); left = left - labelWidth; if(left <= 0) diff --git a/module/metric/model.php b/module/metric/model.php index 6e51c5c9fa..22d7447f88 100644 --- a/module/metric/model.php +++ b/module/metric/model.php @@ -441,7 +441,19 @@ class metricModel extends model { $fieldList = array(); foreach($calcList as $calcInstance) $fieldList = array_merge($fieldList, $calcInstance->fieldList); - return implode(',', array_unique($fieldList)); + $uniqueList = array_unique($fieldList); + $aliasList = array(); + foreach($uniqueList as $field) + { + if(strpos($field, '.') === false) + { + $aliasList[] = $field; + continue; + } + $alias = str_replace('.', '_', $field); + $aliasList[] = $field . ' AS ' . $alias; + } + return implode(',', $aliasList); } /** diff --git a/module/metric/zen.php b/module/metric/zen.php index c820b2100e..f01140253c 100644 --- a/module/metric/zen.php +++ b/module/metric/zen.php @@ -224,11 +224,29 @@ class metricZen extends metric { foreach($calcList as $calc) { - $calc->calculate((object)$row); + $record = $this->getCalcFields($calc, $row); + $calc->calculate($record); } } } + protected function getCalcFields($calc, $row) + { + if(!isset($calc->dataset) || empty($calc->dataset)) return (object)$row; + + $pureRow = new stdclass(); + foreach($calc->fieldList as $field) + { + $extractField = explode('.', $field); + $pureField = end($extractField); + $aliasField = str_replace('.', '_', $field); + + $pureRow->$pureField = $row->$aliasField; + } + + return $pureRow; + } + /** * 获取度量项的基本信息。 * Get the basic information of the metric.