From 6b5dab932aef9b3242a01d16a3cfe48110ff272e Mon Sep 17 00:00:00 2001 From: caoyanyi Date: Fri, 13 Jun 2025 15:51:27 +0800 Subject: [PATCH 1/5] + [task#144595,doing,0.5h] add count_of_story_in_status_in_product metric. --- .../count_of_story_in_status_in_product.php | 50 +++++++++++++++++++ 1 file changed, 50 insertions(+) create mode 100644 module/metric/calc/product/scale/count_of_story_in_status_in_product.php diff --git a/module/metric/calc/product/scale/count_of_story_in_status_in_product.php b/module/metric/calc/product/scale/count_of_story_in_status_in_product.php new file mode 100644 index 0000000000..11a517eb98 --- /dev/null +++ b/module/metric/calc/product/scale/count_of_story_in_status_in_product.php @@ -0,0 +1,50 @@ + + * @package + * @uses func + * @license ZPL(https://zpl.pub/page/zplv12.html) or AGPL(https://www.gnu.org/licenses/agpl-3.0.en.html) + * @Link https://www.zentao.net + */ +class count_of_story_in_status_in_product extends baseCalc +{ + public $dataset = ''; + + public $fieldList = array(); + + public $result = array(); + + public function calculate($row) + { + if(!isset($this->result[$row->status])) $this->result[$row->status] = array(); + $this->result[$row->status][$row->id] = $row->id; + } + + public function getResult($options = array()) + { + foreach($this->result as $status => $stories) + { + if(!is_array($stories)) + { + unset($this->result[$status]); + continue; + } + $this->result[$status] = count($stories); + } + + $records = $this->getRecords(array('status', 'value')); + return $this->filterByOptions($records, $options); + } +} From eca1d0969b4aee8cdd7365ffa74237f2038481c7 Mon Sep 17 00:00:00 2001 From: caoyanyi Date: Fri, 13 Jun 2025 16:19:13 +0800 Subject: [PATCH 2/5] + [task#144597,doing,0.4h] add count_of_story_in_type_in_product metric. --- .../count_of_story_in_type_in_product.php | 50 +++++++++++++++++++ 1 file changed, 50 insertions(+) create mode 100644 module/metric/calc/product/scale/count_of_story_in_type_in_product.php diff --git a/module/metric/calc/product/scale/count_of_story_in_type_in_product.php b/module/metric/calc/product/scale/count_of_story_in_type_in_product.php new file mode 100644 index 0000000000..7c8d88dc8c --- /dev/null +++ b/module/metric/calc/product/scale/count_of_story_in_type_in_product.php @@ -0,0 +1,50 @@ + + * @package + * @uses func + * @license ZPL(https://zpl.pub/page/zplv12.html) or AGPL(https://www.gnu.org/licenses/agpl-3.0.en.html) + * @Link https://www.zentao.net + */ +class count_of_story_in_type_in_product extends baseCalc +{ + public $dataset = ''; + + public $fieldList = array(); + + public $result = array(); + + public function calculate($row) + { + if(!isset($this->result[$row->type])) $this->result[$row->type] = array(); + $this->result[$row->type][$row->id] = $row->id; + } + + public function getResult($options = array()) + { + foreach($this->result as $type => $stories) + { + if(!is_array($stories)) + { + unset($this->result[$type]); + continue; + } + $this->result[$type] = count($stories); + } + + $records = $this->getRecords(array('type', 'value')); + return $this->filterByOptions($records, $options); + } +} From d18407b1b40720d95b4c5303445d6291df94d5d1 Mon Sep 17 00:00:00 2001 From: caoyanyi Date: Fri, 13 Jun 2025 16:34:30 +0800 Subject: [PATCH 3/5] + [task#144597,doing,0.4h] add count_of_story_in_pri_in_product metric. --- .../count_of_story_in_pri_in_product.php | 50 +++++++++++++++++++ 1 file changed, 50 insertions(+) create mode 100644 module/metric/calc/product/scale/count_of_story_in_pri_in_product.php diff --git a/module/metric/calc/product/scale/count_of_story_in_pri_in_product.php b/module/metric/calc/product/scale/count_of_story_in_pri_in_product.php new file mode 100644 index 0000000000..74d8550157 --- /dev/null +++ b/module/metric/calc/product/scale/count_of_story_in_pri_in_product.php @@ -0,0 +1,50 @@ + + * @package + * @uses func + * @license ZPL(https://zpl.pub/page/zplv12.html) or AGPL(https://www.gnu.org/licenses/agpl-3.0.en.html) + * @Link https://www.zentao.net + */ +class count_of_story_in_pri_in_product extends baseCalc +{ + public $dataset = ''; + + public $fieldList = array(); + + public $result = array(); + + public function calculate($row) + { + if(!isset($this->result[$row->pri])) $this->result[$row->pri] = array(); + $this->result[$row->pri][$row->id] = $row->id; + } + + public function getResult($options = array()) + { + foreach($this->result as $pri => $stories) + { + if(!is_array($stories)) + { + unset($this->result[$pri]); + continue; + } + $this->result[$pri] = count($stories); + } + + $records = $this->getRecords(array('pri', 'value')); + return $this->filterByOptions($records, $options); + } +} From faafb734a1ee21d2a818102d9e8b93d5afcf662e Mon Sep 17 00:00:00 2001 From: caoyanyi Date: Fri, 13 Jun 2025 16:34:47 +0800 Subject: [PATCH 4/5] + [task#144597,doing,0.4h] add count_of_story_in_source_in_product metric. --- .../count_of_story_in_source_in_product.php | 50 +++++++++++++++++++ 1 file changed, 50 insertions(+) create mode 100644 module/metric/calc/product/scale/count_of_story_in_source_in_product.php diff --git a/module/metric/calc/product/scale/count_of_story_in_source_in_product.php b/module/metric/calc/product/scale/count_of_story_in_source_in_product.php new file mode 100644 index 0000000000..57761f2d2b --- /dev/null +++ b/module/metric/calc/product/scale/count_of_story_in_source_in_product.php @@ -0,0 +1,50 @@ + + * @package + * @uses func + * @license ZPL(https://zpl.pub/page/zplv12.html) or AGPL(https://www.gnu.org/licenses/agpl-3.0.en.html) + * @Link https://www.zentao.net + */ +class count_of_story_in_source_in_product extends baseCalc +{ + public $dataset = ''; + + public $fieldList = array(); + + public $result = array(); + + public function calculate($row) + { + if(!isset($this->result[$row->source])) $this->result[$row->source] = array(); + $this->result[$row->source][$row->id] = $row->id; + } + + public function getResult($options = array()) + { + foreach($this->result as $source => $stories) + { + if(!is_array($stories)) + { + unset($this->result[$source]); + continue; + } + $this->result[$source] = count($stories); + } + + $records = $this->getRecords(array('source', 'value')); + return $this->filterByOptions($records, $options); + } +} From a9ae784f375fa6d101824c935b0d0fbed73b12b4 Mon Sep 17 00:00:00 2001 From: caoyanyi Date: Fri, 13 Jun 2025 16:44:55 +0800 Subject: [PATCH 5/5] + [task#144597,doing,0.4h] add count_of_story_in_user metric. --- .../user/scale/count_of_story_in_user.php | 40 +++++++++++++++++++ 1 file changed, 40 insertions(+) create mode 100755 module/metric/calc/user/scale/count_of_story_in_user.php diff --git a/module/metric/calc/user/scale/count_of_story_in_user.php b/module/metric/calc/user/scale/count_of_story_in_user.php new file mode 100755 index 0000000000..e552b178c8 --- /dev/null +++ b/module/metric/calc/user/scale/count_of_story_in_user.php @@ -0,0 +1,40 @@ + + * @package + * @uses func + * @license ZPL(https://zpl.pub/page/zplv12.html) or AGPL(https://www.gnu.org/licenses/agpl-3.0.en.html) + * @Link https://www.zentao.net + */ +class count_of_story_in_user extends baseCalc +{ + public $dataset = ''; + + public $fieldList = array(); + + public $result = array(); + + public function calculate($row) + { + if(!isset($this->result[$row->openedBy])) $this->result[$row->openedBy] = 0; + $this->result[$row->openedBy] += 1; + } + + public function getResult($options = array()) + { + $records = $this->getRecords(array('user', 'value')); + return $this->filterByOptions($records, $options); + } +}