diff --git a/module/projectrelease/control.php b/module/projectrelease/control.php index c80f2d03bc..57a8e43054 100644 --- a/module/projectrelease/control.php +++ b/module/projectrelease/control.php @@ -326,7 +326,8 @@ class projectrelease extends control $this->view->bugPager = $bugPager; $this->view->leftBugPager = $leftBugPager; $this->view->builds = $this->loadModel('build')->getBuildPairs($release->product, 'all', 'withbranch|hasproject', 0, 'execution', '', false); - $this->view->summary = $this->product->summary($stories); + $this->view->summary = $this->product->summary($stories); + $this->view->storyCases = $this->loadModel('testcase')->getStoryCaseCounts(array_keys($stories)); if($this->app->getViewType() == 'json') { @@ -640,26 +641,17 @@ class projectrelease extends control * @access public * @return void */ - public function unlinkStory($releaseID, $storyID) + public function unlinkStory($releaseID, $storyID, $confirm = 'no') { - $this->projectrelease->unlinkStory($releaseID, $storyID); - - /* if ajax request, send result. */ - if($this->server->ajax) + if($confirm == 'no') { - if(dao::isError()) - { - $response['result'] = 'fail'; - $response['message'] = dao::getError(); - } - else - { - $response['result'] = 'success'; - $response['message'] = ''; - } - return $this->send($response); + return print(js::confirm($this->lang->release->confirmUnlinkStory, inlink('unlinkstory', "releaseID=$releaseID&storyID=$storyID&confirm=yes"))); + } + else + { + $this->projectrelease->unlinkStory($releaseID, $storyID); + return print(js::reload('parent')); } - return print(js::reload('parent')); } /** diff --git a/module/projectrelease/js/view.js b/module/projectrelease/js/view.js index 88bbba7202..c9df6b82a2 100644 --- a/module/projectrelease/js/view.js +++ b/module/projectrelease/js/view.js @@ -10,9 +10,9 @@ function showLink(releaseID, type, param) /** * Load URL. - * - * @param string $url - * @param string$type + * + * @param string $url + * @param string$type * @access public * @return void */ @@ -69,4 +69,46 @@ $(function() infoShowed = true; } }); + + $('.table-story').table( + { + statisticCreator: function(table) + { + var $checkedRows = table.getTable().find(table.isDataTable ? '.datatable-row-left.checked' : 'tbody>tr.checked'); + var $originTable = table.isDataTable ? table.$.find('.datatable-origin') : null; + var checkedTotal = $checkedRows.length; + if(!checkedTotal) return; + + var checkedEstimate = 0; + var checkedCase = 0; + var rateCount = checkedTotal; + $checkedRows.each(function() + { + var $row = $(this); + if($originTable) + { + $row = $originTable.find('tbody>tr[data-id="' + $row.data('id') + '"]'); + } + var data = $row.data(); + checkedEstimate += data.estimate; + + if(data.cases > 0) + { + checkedCase += 1; + } + else if(data.children != undefined && data.children > 0) + { + rateCount -= 1; + } + }); + + var rate = '0%'; + if(rateCount) rate = Math.round(checkedCase / rateCount * 100) + '%'; + + if(checkedTotal == 0) return storySummary; + return checkedSummary.replace('%total%', checkedTotal) + .replace('%estimate%', checkedEstimate.toFixed(1)) + .replace('%rate%', rate); + } + }); }) diff --git a/module/projectrelease/view/view.html.php b/module/projectrelease/view/view.html.php index 040df9ab14..b14ff67158 100644 --- a/module/projectrelease/view/view.html.php +++ b/module/projectrelease/view/view.html.php @@ -14,6 +14,9 @@ release->confirmUnlinkStory)?> release->confirmUnlinkBug)?> + +SRCommon);?> +SRCommon, $lang->product->checkedSummary));?>