From 76756ace635e3d92c4b4631431c4c5533b3c8efe Mon Sep 17 00:00:00 2001 From: wangyuting Date: Thu, 13 Jul 2023 15:07:31 +0800 Subject: [PATCH] * Add groupcase zin page. --- module/testcase/config/table.php | 22 ++++++++++++++++++++++ module/testcase/control.php | 23 ++++++++++++++++------- module/testcase/js/groupcase.ui.js | 20 ++++++++++++++++++++ module/testcase/ui/groupcase.html.php | 26 ++++++++++++++++++++++++++ module/testcase/ui/header.html.php | 2 +- 5 files changed, 85 insertions(+), 8 deletions(-) create mode 100644 module/testcase/js/groupcase.ui.js create mode 100644 module/testcase/ui/groupcase.html.php diff --git a/module/testcase/config/table.php b/module/testcase/config/table.php index a93f043ec4..70dd160ecf 100644 --- a/module/testcase/config/table.php +++ b/module/testcase/config/table.php @@ -123,6 +123,28 @@ $config->testcase->dtable->fieldList['actions']['menu'] = array(); $config->testcase->dtable->fieldList['actions']['required'] = true; $config->testcase->dtable->fieldList['actions']['group'] = 7; +$config->testcase->group = new stdclass(); +$config->testcase->group->dtable = new stdclass(); +$config->testcase->group->dtable->fieldList['storyTitle']['title'] = $lang->testcase->story; +$config->testcase->group->dtable->fieldList['storyTitle']['type'] = 'desc'; +$config->testcase->group->dtable->fieldList['storyTitle']['fixed'] = 'left'; +$config->testcase->group->dtable->fieldList['storyTitle']['sortType'] = true; +$config->testcase->group->dtable->fieldList['storyTitle']['group'] = '1'; +$config->testcase->group->dtable->fieldList['id'] = $config->testcase->dtable->fieldList['id']; +$config->testcase->group->dtable->fieldList['id']['type'] = 'id'; +$config->testcase->group->dtable->fieldList['title'] = $config->testcase->dtable->fieldList['title']; +$config->testcase->group->dtable->fieldList['title']['nestedToggle'] = false; +$config->testcase->group->dtable->fieldList['pri'] = $config->testcase->dtable->fieldList['pri']; +$config->testcase->group->dtable->fieldList['status'] = $config->testcase->dtable->fieldList['status']; +$config->testcase->group->dtable->fieldList['lastRunResult'] = $config->testcase->dtable->fieldList['lastRunResult']; +$config->testcase->group->dtable->fieldList['type'] = $config->testcase->dtable->fieldList['type']; +$config->testcase->group->dtable->fieldList['bugs'] = $config->testcase->dtable->fieldList['bugs']; +$config->testcase->group->dtable->fieldList['results'] = $config->testcase->dtable->fieldList['results']; +$config->testcase->group->dtable->fieldList['stepNumber'] = $config->testcase->dtable->fieldList['stepNumber']; +$config->testcase->group->dtable->fieldList['lastRunner'] = $config->testcase->dtable->fieldList['lastRunner']; +$config->testcase->group->dtable->fieldList['lastRunDate'] = $config->testcase->dtable->fieldList['lastRunDate']; +$config->testcase->group->dtable->fieldList['actions'] = $config->testcase->dtable->fieldList['actions']; + $config->testcase->bug = new stdclass(); $config->testcase->bug->dtable = new stdclass(); $config->testcase->bug->dtable->fieldList['id']['title'] = $lang->idAB; diff --git a/module/testcase/control.php b/module/testcase/control.php index 5c862316cd..8c27e0ac37 100644 --- a/module/testcase/control.php +++ b/module/testcase/control.php @@ -320,14 +320,24 @@ class testcase extends control $cases = $this->testcase->appendData($cases); $groupCases = array(); - $groupByList = array(); foreach($cases as $case) { - if($groupBy == 'story') + if($groupBy == 'story') $groupCases[$case->story][] = $case; + } + + $story = ''; + foreach($cases as $index => $case) + { + if($case->storyDeleted) { - if($case->storyDeleted) continue; - $groupCases[$case->story][] = $case; - $groupByList[$case->story] = $case->storyTitle; + unset($cases[$index]); + continue; + } + $case->rowspan = 0; + if($story !== $case->story) + { + $story = $case->story; + if(!empty($groupCases[$case->story])) $case->rowspan = count($groupCases[$case->story]); } } @@ -342,8 +352,7 @@ class testcase extends control $this->view->browseType = 'group'; $this->view->groupBy = $groupBy; $this->view->orderBy = $groupBy; - $this->view->groupByList = $groupByList; - $this->view->cases = $groupCases; + $this->view->cases = $cases; $this->view->suiteList = $this->loadModel('testsuite')->getSuites($productID); $this->view->suiteID = 0; $this->view->moduleID = 0; diff --git a/module/testcase/js/groupcase.ui.js b/module/testcase/js/groupcase.ui.js new file mode 100644 index 0000000000..d4ae73fe55 --- /dev/null +++ b/module/testcase/js/groupcase.ui.js @@ -0,0 +1,20 @@ +/** + * 标题列显示额外的内容。 + * Display extra content in the title column. + * + * @param object result + * @param object info + * @access public + * @return object + */ +window.getCellSpan = function(cell) +{ + if(cell.col.name == 'storyTitle') + { + if(cell.row.data.rowspan) + { + return {rowSpan: cell.row.data.rowspan}; + } + } +} + diff --git a/module/testcase/ui/groupcase.html.php b/module/testcase/ui/groupcase.html.php new file mode 100644 index 0000000000..0352d90560 --- /dev/null +++ b/module/testcase/ui/groupcase.html.php @@ -0,0 +1,26 @@ + + * @package testcase + * @link https://www.zentao.net + */ +namespace zin; + +include 'header.html.php'; + +$cases = initTableData(array_values($cases), $config->testcase->group->dtable->fieldList); + +dtable +( + set::userMap($users), + set::cols($config->testcase->group->dtable->fieldList), + set::data($cases), + set::plugins(array('cellspan')), + set::getCellSpan(jsRaw('window.getCellSpan')), +); + +render(); diff --git a/module/testcase/ui/header.html.php b/module/testcase/ui/header.html.php index 9ed49e4505..ff97617a41 100644 --- a/module/testcase/ui/header.html.php +++ b/module/testcase/ui/header.html.php @@ -303,7 +303,7 @@ toolbar ) : null, ); -if($rawMethod != 'zerocase' && $rawMethod != 'browseunits') +if($rawMethod != 'zerocase' && $rawMethod != 'browseunits' && $rawMethod != 'groupcase') { $settingLink = $canManageModule ? createLink('tree', 'browse', "productID=$productID&view=case¤tModuleID=0&branch=0&from={$app->tab}") : ''; $closeLink = createLink($currentModule, $currentMethod, $projectParam . "productID=$productID&branch=$branch&browseType=$browseType¶m=0&caseType=&orderBy=$orderBy&recTotal=0&recPerPage={$pager->recPerPage}");