diff --git a/module/block/control.php b/module/block/control.php index 7cc7a5e273..b1d4d5c352 100644 --- a/module/block/control.php +++ b/module/block/control.php @@ -244,6 +244,11 @@ class block extends control { if($module == 'product' && common::hasPriv('product', 'create')) $block->actionLink = html::a($this->createLink('product', 'create'), " " . $this->lang->product->create, '', "class='btn btn-sm'"); if($module == 'project' && common::hasPriv('project', 'create')) $block->actionLink = html::a($this->createLink('project', 'create'), " " . $this->lang->project->create, '', "class='btn btn-sm'"); + if($module == 'qa' && common::hasPriv('testcase', 'create')) + { + $this->app->loadLang('testcase'); + $block->actionLink = html::a($this->createLink('testcase', 'create', 'productID='), " " . $this->lang->testcase->create, '', "class='btn btn-sm'"); + } } if($this->block->isLongBlock($block)) @@ -1075,29 +1080,24 @@ class block extends control */ public function printQaOverviewBlock() { - $projects = $this->loadModel('project')->getList(); + $casePairs = $this->dao->select('lastRunResult, COUNT(*) AS count')->from(TABLE_CASE)->groupBy('lastRunResult')->fetchPairs(); + $total = array_sum($casePairs); - $total = 0; - foreach($projects as $project) + $this->app->loadLang('testcase'); + foreach($this->lang->testcase->resultList as $result => $label) { - if(!$this->project->checkPriv($project)) continue; - - if(!isset($overview[$project->status])) $overview[$project->status] = 0; - $overview[$project->status]++; - $total++; + if(!isset($casePairs[$result])) $casePairs[$result] = 0; } - - $overviewPercent = array(); - foreach($this->lang->project->statusList as $statusKey => $statusName) + $casePercents = array(); + foreach($casePairs as $result => $count) { - if(!isset($overview[$statusKey])) $overview[$statusKey] = 0; - $overviewPercent[$statusKey] = round($overview[$statusKey] / $total, 2) * 100 . '%'; + $casePercents[$result] = $total ? round($count / $total * 100, 2) : 0; } - $this->view->total = $total; - $this->view->overview = $overview; - $this->view->overviewPercent = $overviewPercent; + $this->view->total = $total; + $this->view->casePairs = $casePairs; + $this->view->casePercents = $casePercents; } /** diff --git a/module/block/model.php b/module/block/model.php index 80f719019b..69e6042f81 100644 --- a/module/block/model.php +++ b/module/block/model.php @@ -403,6 +403,7 @@ class blockModel extends model { if($module == 'product') return $this->getProductStatisticParams($module); if($module == 'project') return $this->getProjectStatisticParams($module); + if($module == 'qa') return $this->getQaStatisticParams($module); $params = new stdclass(); $params = $this->onlyNumParams($params); @@ -427,7 +428,7 @@ class blockModel extends model $params->orderBy['options'] = $this->lang->block->orderByList->product; $params->orderBy['control'] = 'select'; - return json_encode($this->onlyNumParams($params)); + return json_encode($params); } /** @@ -448,7 +449,28 @@ class blockModel extends model $params->orderBy['options'] = $this->lang->block->orderByList->project; $params->orderBy['control'] = 'select'; - return json_encode($this->onlyNumParams($params)); + return json_encode($params); + } + + /** + * Get qa statistic params. + * + * @access public + * @return void + */ + public function getQaStatisticParams() + { + $params = new stdclass(); + $params->type['name'] = $this->lang->block->type; + $params->type['options'] = $this->lang->block->typeList->product; + $params->type['control'] = 'select'; + + $params->orderBy['name'] = $this->lang->block->orderBy; + $params->orderBy['default'] = 'id_desc'; + $params->orderBy['options'] = $this->lang->block->orderByList->product; + $params->orderBy['control'] = 'select'; + + return json_encode($params); } /** diff --git a/module/block/view/qaoverviewblock.html.php b/module/block/view/qaoverviewblock.html.php index 7b9334ba28..7aade3e58e 100644 --- a/module/block/view/qaoverviewblock.html.php +++ b/module/block/view/qaoverviewblock.html.php @@ -14,21 +14,19 @@ .block-overview .tile-amount {font-size: 48px; margin-bottom: 10px;}
-
+ -
-
    - project->statusList as $statusKey => $statusName):?> -
  • - - - -
  • +
    +
      + +
    • testcase->resultList[$result];?>
    diff --git a/module/bug/lang/zh-tw.php b/module/bug/lang/zh-tw.php index aae92aff0a..7d599b675f 100644 --- a/module/bug/lang/zh-tw.php +++ b/module/bug/lang/zh-tw.php @@ -129,6 +129,7 @@ $lang->bug->resolvedByMeAB = '由我解決'; $lang->bug->ditto = '同上'; $lang->bug->dittoNotice = '該bug與上一bug不屬於同一產品!'; $lang->bug->noAssigned = '未指派'; +$lang->bug->noBug = '暫時沒有BUG,您現在可以'; /* 頁面標籤。*/ $lang->bug->lblAssignedTo = '當前指派'; diff --git a/module/common/lang/zh-tw.php b/module/common/lang/zh-tw.php index 660aa028ec..ae5f49fd34 100644 --- a/module/common/lang/zh-tw.php +++ b/module/common/lang/zh-tw.php @@ -279,20 +279,39 @@ $lang->bug->menu->caselib = array('link' => '用例庫|testsuite|library'); $lang->testcase = new stdclass(); $lang->testcase->menu = new stdclass(); - $lang->testcase->menu->bug = array('link' => 'Bug|bug|browse|productID=%s'); $lang->testcase->menu->testcase = array('link' => '用例|testcase|browse|productID=%s', 'alias' => 'view,create,batchcreate,edit,batchedit,showimport,groupcase,importfromlib', 'subModule' => 'tree'); -$lang->testcase->menu->testtask = array('link' => '測試單|testtask|browse|productID=%s', 'alias' => 'view,create,edit,linkcase,cases,start,close,batchrun,groupcase,report'); -$lang->testcase->menu->testsuite = array('link' => '套件|testsuite|browse|productID=%s', 'alias' => 'view,create,edit,linkcase'); -$lang->testcase->menu->report = array('link' => '報告|testreport|browse|productID=%s', 'alias' => 'view,create,edit'); +$lang->testcase->menu->testtask = array('link' => '測試單|testtask|browse|productID=%s'); +$lang->testcase->menu->testsuite = array('link' => '套件|testsuite|browse|productID=%s'); +$lang->testcase->menu->report = array('link' => '報告|testreport|browse|productID=%s'); $lang->testcase->menu->caselib = array('link' => '用例庫|testsuite|library'); $lang->testtask = new stdclass(); -$lang->testtask->menu = $lang->testcase->menu; +$lang->testtask->menu = new stdclass(); +$lang->testtask->menu->bug = array('link' => 'Bug|bug|browse|productID=%s'); +$lang->testtask->menu->testcase = array('link' => '用例|testcase|browse|productID=%s'); +$lang->testtask->menu->testtask = array('link' => '測試單|testtask|browse|productID=%s', 'alias' => 'view,create,edit,linkcase,cases,start,close,batchrun,groupcase,report'); +$lang->testtask->menu->testsuite = array('link' => '套件|testsuite|browse|productID=%s'); +$lang->testtask->menu->report = array('link' => '報告|testreport|browse|productID=%s'); +$lang->testtask->menu->caselib = array('link' => '用例庫|testsuite|library'); + $lang->testsuite = new stdclass(); -$lang->testsuite->menu = $lang->testcase->menu; +$lang->testsuite->menu = new stdclass(); +$lang->testsuite->menu->bug = array('link' => 'Bug|bug|browse|productID=%s'); +$lang->testsuite->menu->testcase = array('link' => '用例|testcase|browse|productID=%s'); +$lang->testsuite->menu->testtask = array('link' => '測試單|testtask|browse|productID=%s'); +$lang->testsuite->menu->testsuite = array('link' => '套件|testsuite|browse|productID=%s', 'alias' => 'view,create,edit,linkcase'); +$lang->testsuite->menu->report = array('link' => '報告|testreport|browse|productID=%s'); +$lang->testsuite->menu->caselib = array('link' => '用例庫|testsuite|library'); + $lang->testreport = new stdclass(); -$lang->testreport->menu = $lang->testcase->menu; +$lang->testreport->menu = new stdclass(); +$lang->testreport->menu->bug = array('link' => 'Bug|bug|browse|productID=%s'); +$lang->testreport->menu->testcase = array('link' => '用例|testcase|browse|productID=%s'); +$lang->testreport->menu->testtask = array('link' => '測試單|testtask|browse|productID=%s'); +$lang->testreport->menu->testsuite = array('link' => '套件|testsuite|browse|productID=%s'); +$lang->testreport->menu->report = array('link' => '報告|testreport|browse|productID=%s', 'alias' => 'view,create,edit'); +$lang->testreport->menu->caselib = array('link' => '用例庫|testsuite|library'); $lang->caselib = new stdclass(); $lang->caselib->menu = new stdclass(); @@ -765,11 +784,10 @@ if(isset($config->global->flow) and $config->global->flow == 'onlyTest') /* Adjust sub menu of caselib module. */ $lang->caselib->menu = new stdclass(); - $lang->caselib->menu->lib = array('link' => '%s', 'fixed' => true); - $lang->caselib->menu->all = '所有|testsuite|library|libID=%s&browseType=all'; - $lang->caselib->menu->wait = '待評審|testsuite|library|libID=%s&browseType=wait'; - $lang->caselib->menu->view = '概況|testsuite|libview|libID=%s'; - $lang->caselib->menu->create = array('link' => " 創建庫|testsuite|createLib", 'float' => 'right'); + $lang->caselib->menu->lib = array('link' => '%s', 'fixed' => true); + $lang->caselib->menu->all = '所有|testsuite|library|libID=%s&browseType=all'; + $lang->caselib->menu->wait = '待評審|testsuite|library|libID=%s&browseType=wait'; + $lang->caselib->menu->view = '概況|testsuite|libview|libID=%s'; $lang->caselib->menuOrder[5] = 'lib'; $lang->caselib->menuOrder[10] = 'all'; diff --git a/module/testcase/lang/en.php b/module/testcase/lang/en.php index a9e5ee5fd6..9ba9b5b614 100644 --- a/module/testcase/lang/en.php +++ b/module/testcase/lang/en.php @@ -102,6 +102,7 @@ $lang->testcase->group = 'Group'; $lang->testcase->groupName = 'Group Name'; $lang->testcase->step = 'Step'; $lang->testcase->stepChild = 'Child'; +$lang->testcase->viewAll = 'View All'; $lang->testcase->new = 'New'; @@ -111,11 +112,12 @@ $lang->testcase->deleteStep = 'Delete'; $lang->testcase->insertBefore = 'Inserted Before'; $lang->testcase->insertAfter = 'Inserted After'; -$lang->testcase->assignToMe = 'AssignedToMe'; -$lang->testcase->openedByMe = 'CreatedByMe'; -$lang->testcase->allCases = 'All'; -$lang->testcase->needConfirm = 'StoryChanged'; -$lang->testcase->bySearch = 'Search'; +$lang->testcase->assignToMe = 'AssignedToMe'; +$lang->testcase->openedByMe = 'CreatedByMe'; +$lang->testcase->allCases = 'All'; +$lang->testcase->allTestcases = 'All Cases'; +$lang->testcase->needConfirm = 'StoryChanged'; +$lang->testcase->bySearch = 'Search'; $lang->testcase->lblStory = 'Story'; $lang->testcase->lblLastEdited = 'Last Edit'; diff --git a/module/testcase/lang/zh-cn.php b/module/testcase/lang/zh-cn.php index 5973c6d1fe..b6d3404a41 100644 --- a/module/testcase/lang/zh-cn.php +++ b/module/testcase/lang/zh-cn.php @@ -102,6 +102,7 @@ $lang->testcase->group = '分组'; $lang->testcase->groupName = '分组名称'; $lang->testcase->step = '步骤'; $lang->testcase->stepChild = '子步骤'; +$lang->testcase->viewAll = '查看所有'; $lang->testcase->new = '新增'; @@ -111,11 +112,12 @@ $lang->testcase->deleteStep = '删除'; $lang->testcase->insertBefore = '之前添加'; $lang->testcase->insertAfter = '之后添加'; -$lang->testcase->assignToMe = '给我的用例'; -$lang->testcase->openedByMe = '我建的用例'; -$lang->testcase->allCases = '所有'; -$lang->testcase->needConfirm = '需求变动'; -$lang->testcase->bySearch = '搜索'; +$lang->testcase->assignToMe = '给我的用例'; +$lang->testcase->openedByMe = '我建的用例'; +$lang->testcase->allCases = '所有'; +$lang->testcase->allTestcases = '所有用例'; +$lang->testcase->needConfirm = '需求变动'; +$lang->testcase->bySearch = '搜索'; $lang->testcase->lblStory = '相关需求'; $lang->testcase->lblLastEdited = '最后编辑'; @@ -201,4 +203,3 @@ $lang->testcase->featureBar['browse']['group'] = '分组查看'; $lang->testcase->featureBar['browse']['suite'] = '套件'; $lang->testcase->featureBar['browse']['zerocase'] = '零用例需求'; $lang->testcase->featureBar['groupcase'] = $lang->testcase->featureBar['browse']; - diff --git a/module/testcase/lang/zh-tw.php b/module/testcase/lang/zh-tw.php index 4e4f7308de..159cd1c16f 100644 --- a/module/testcase/lang/zh-tw.php +++ b/module/testcase/lang/zh-tw.php @@ -102,6 +102,7 @@ $lang->testcase->group = '分組'; $lang->testcase->groupName = '分組名稱'; $lang->testcase->step = '步驟'; $lang->testcase->stepChild = '子步驟'; +$lang->testcase->viewAll = '查看所有'; $lang->testcase->new = '新增'; @@ -111,11 +112,12 @@ $lang->testcase->deleteStep = '刪除'; $lang->testcase->insertBefore = '之前添加'; $lang->testcase->insertAfter = '之後添加'; -$lang->testcase->assignToMe = '給我的用例'; -$lang->testcase->openedByMe = '我建的用例'; -$lang->testcase->allCases = '所有'; -$lang->testcase->needConfirm = '需求變動'; -$lang->testcase->bySearch = '搜索'; +$lang->testcase->assignToMe = '給我的用例'; +$lang->testcase->openedByMe = '我建的用例'; +$lang->testcase->allCases = '所有'; +$lang->testcase->allTestcases = '所有用例'; +$lang->testcase->needConfirm = '需求變動'; +$lang->testcase->bySearch = '搜索'; $lang->testcase->lblStory = '相關需求'; $lang->testcase->lblLastEdited = '最後編輯'; @@ -201,4 +203,3 @@ $lang->testcase->featureBar['browse']['group'] = '分組查看'; $lang->testcase->featureBar['browse']['suite'] = '套件'; $lang->testcase->featureBar['browse']['zerocase'] = '零用例需求'; $lang->testcase->featureBar['groupcase'] = $lang->testcase->featureBar['browse']; -