* [refac bug #58215] Adjust for get stories for track by page.

This commit is contained in:
wangyidong
2024-12-17 17:20:18 +08:00
committed by 孙广明
parent 97bde35f61
commit fd55e9bc7a
3 changed files with 60 additions and 8 deletions
+16 -4
View File
@@ -826,9 +826,22 @@ class product extends control
if(empty($storyType)) $storyType = key($storyTypeList);
/* Load pager. */
$this->app->loadClass('pager', true);
$pager = new pager($recTotal, $recPerPage, $pageID);
$stories = $this->productZen->getStories($projectID, $productID, $branch, 0, (int)$param, ($browseType == 'bysearch' ? $storyType : 'all'), $browseType, $trackOrder, $pager);
if($browseType == 'bysearch' || $this->app->rawModule == 'projectstory')
{
$stories = $this->productZen->getStories($projectID, $productID, $branch, 0, (int)$param, ($browseType == 'bysearch' ? $storyType : 'all'), $browseType, $trackOrder);
}
else
{
$queryStoryType = 'all';
if($storyType == 'requirement') $queryStoryType = 'requirement,story';
if($storyType == 'story') $queryStoryType = 'story';
if($browseType == 'bysearch') $queryStoryType = $storyType;
$this->app->loadClass('pager', true);
$pager = new pager($recTotal, $recPerPage, $pageID);
$stories = $this->productZen->getStoriesByStoryType($productID, $branch, $queryStoryType, $trackOrder, $pager);
$this->view->pager = $pager;
}
$tracks = $this->loadModel('story')->getTracksByStories($stories, $storyType);
$customFields = $this->productZen->getCustomFieldsForTrack($storyType);
@@ -861,7 +874,6 @@ class product extends control
$this->view->title = $this->lang->story->track;
$this->view->tracks = $tracks;
$this->view->storyIdList = array_keys($stories);
$this->view->pager = $pager;
$this->view->productID = $productID;
$this->view->branch = $branch;
$this->view->projectID = $projectID;
+4 -4
View File
@@ -28,8 +28,8 @@ foreach($lang->story->trackOrderByList as $orderByType => $orderByName)
$item['text'] = $orderByName;
$item['selected'] = strpos($orderBy, $orderByType) === 0;
$item['items'] = array();
$item['items'][] = array('text' => $lang->story->trackSortList['asc'], 'selected' => $orderBy == "{$orderByType}_asc", 'url' => createLink($app->rawModule, 'track', sprintf($paramTemplate, $storyType, "{$orderByType}_asc") . "&recTotal={$pager->recTotal}&recPerPage={$pager->recPerPage}&pageID={$pager->pageID}"));
$item['items'][] = array('text' => $lang->story->trackSortList['desc'], 'selected' => $orderBy == "{$orderByType}_desc", 'url' => createLink($app->rawModule, 'track', sprintf($paramTemplate, $storyType, "{$orderByType}_desc") . "&recTotal={$pager->recTotal}&recPerPage={$pager->recPerPage}&pageID={$pager->pageID}"));
$item['items'][] = array('text' => $lang->story->trackSortList['asc'], 'selected' => $orderBy == "{$orderByType}_asc", 'url' => createLink($app->rawModule, 'track', sprintf($paramTemplate, $storyType, "{$orderByType}_asc") . (isset($pager) ? "&recTotal={$pager->recTotal}&recPerPage={$pager->recPerPage}&pageID={$pager->pageID}" : '')));
$item['items'][] = array('text' => $lang->story->trackSortList['desc'], 'selected' => $orderBy == "{$orderByType}_desc", 'url' => createLink($app->rawModule, 'track', sprintf($paramTemplate, $storyType, "{$orderByType}_desc") . (isset($pager) ? "&recTotal={$pager->recTotal}&recPerPage={$pager->recPerPage}&pageID={$pager->pageID}" : '')));
$orderByItems[] = $item;
if($item['selected'])
@@ -137,7 +137,7 @@ empty($tracks) ? div(setClass('dtable-empty-tip bg-white shadow'), span(setClass
'afterRender' => jsRaw('window.afterRender'),
'draggable' => false
))),
set::height('calc(100vh - 130px)')
set::height('calc(100vh - ' . (isset($pager) ? '130px' : '110px') . ')')
),
pager(setClass('justify-end'))
isset($pager) ? pager(setClass('justify-end')) : null
);
+40
View File
@@ -952,6 +952,46 @@ class productZen extends product
return $stories;
}
/**
* 根据需求类型获取需求。
* Get stories by story type.
*
* @param int $productID
* @param string $branch
* @param string $storyType
* @param string $orderBy
* @param object $pager
* @access public
* @return array
*/
public function getStoriesByStoryType(int $productID, string $branch = '', string $storyType = 'all', string $orderBy = 'id_desc', object $pager = null): array
{
/* Append id for second sort. */
$sort = common::appendOrder($orderBy);
if(strpos($sort, 'pri_') !== false) $sort = str_replace('pri_', 'priOrder_', $sort);
$parentIdList = array();
if($storyType == 'requirement,story' && !empty($this->config->enableER)) $parentIdList = $this->dao->select('id')->from(TABLE_STORY)->where('type')->eq('epic')->andWhere('isParent')->eq(1)->fetchPairs('id', 'id');
if($storyType == 'story' && (!empty($this->config->URAndSR) || $this->config->edition == 'ipd')) $parentIdList = $this->dao->select('id')->from(TABLE_STORY)->where('type')->eq('requirement')->andWhere('isParent')->eq(1)->fetchPairs('id', 'id');
$productQuery = $this->loadModel('story')->buildProductsCondition($productID, $branch);
$stories = $this->dao->select("*,plan,path")->from(TABLE_STORY)
->where('deleted')->eq(0)
->andWhere($productQuery)
->andWhere('parent', true)->eq(0)
->beginIF($parentIdList)->orWhere("parent")->in($parentIdList)->fi()
->markRight(1)
->andWhere("FIND_IN_SET('{$this->config->vision}', vision)")
->beginIF($storyType != 'all')->andWhere('type')->in($storyType)->fi()
->beginIF(empty($this->config->enableER))->andWhere('type')->ne('epic')->fi()
->beginIF(empty($this->config->URAndSR) && $this->config->edition != 'ipd')->andWhere('type')->ne('requirement')->fi()
->orderBy($orderBy)
->page($pager)
->fetchAll('id');
return $stories;
}
/**
* 获取分支的配置数据。
* Get branch options.