* kanban: refactor getLanes4Group().
This commit is contained in:
+5
-30
@@ -1632,7 +1632,8 @@ class kanbanModel extends model
|
||||
}
|
||||
|
||||
/**
|
||||
* Build lane data for group kanban.
|
||||
* 构建分组视图的看板泳道。
|
||||
* Build lanes for group kanban.
|
||||
*
|
||||
* @access public
|
||||
* @param int $executionID
|
||||
@@ -1643,11 +1644,10 @@ class kanbanModel extends model
|
||||
*
|
||||
* @return array
|
||||
*/
|
||||
public function getLanes4Group($executionID, $browseType, $groupBy, $cardList, $orderBy = 'id_asc')
|
||||
public function getLanes4Group(int $executionID, string $browseType, string $groupBy, array $cardList, string $orderBy = 'id_asc'): array
|
||||
{
|
||||
$lanes = array();
|
||||
$groupByList = array();
|
||||
$objectPairs = array();
|
||||
foreach($cardList as $item)
|
||||
{
|
||||
if(!isset($groupByList[$item->$groupBy])) $groupByList[$item->$groupBy] = $item->$groupBy;
|
||||
@@ -1661,33 +1661,8 @@ class kanbanModel extends model
|
||||
}
|
||||
}
|
||||
|
||||
if(in_array($groupBy, array('module', 'story', 'assignedTo')))
|
||||
{
|
||||
if($groupBy == 'module')
|
||||
{
|
||||
$objectPairs += $this->dao->select('id,name')->from(TABLE_MODULE)->where('type')->in('story,task,bug')->andWhere('deleted')->eq('0')->andWhere('id')->in($groupByList)->fetchPairs();
|
||||
}
|
||||
elseif($groupBy == 'story')
|
||||
{
|
||||
$objectPairs += $this->dao->select('id,title')->from(TABLE_STORY)->where('deleted')->eq(0)->andWhere('id')->in($groupByList)->orderBy($orderBy)->fetchPairs();
|
||||
$objects = $this->dao->select('*')->from(TABLE_STORY)->where('deleted')->eq(0)->andWhere('id')->in($groupByList)->orderBy($orderBy)->fetchAll('id');
|
||||
}
|
||||
else
|
||||
{
|
||||
$objectPairs += $this->dao->select('account,realname')->from(TABLE_USER)->where('account')->in($groupByList)->fetchPairs();
|
||||
if(isset($groupByList['closed'])) $objectPairs['closed'] = 'Closed';
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
unset($this->lang->$browseType->{$groupBy . 'List'}[0]);
|
||||
unset($this->lang->$browseType->{$groupBy . 'List'}['']);
|
||||
$objectPairs += $this->lang->$browseType->{$groupBy . 'List'};
|
||||
}
|
||||
|
||||
if(in_array($groupBy, array('module', 'story', 'pri', 'severity'))) $objectPairs[0] = $this->lang->$browseType->$groupBy . ': ' . $this->lang->kanban->noGroup;
|
||||
if(in_array($groupBy, array('assignedTo', 'source'))) $objectPairs[] = $this->lang->$browseType->$groupBy . ': ' . $this->lang->kanban->noGroup;
|
||||
if($browseType == 'bug' and $groupBy == 'type') $objectPairs[0] = $this->lang->$browseType->$groupBy . ': ' . $this->lang->kanban->noGroup;
|
||||
$objectPairs = $this->getObjectPairs($groupBy, $groupByList, $browseType, $orderBy);
|
||||
if($groupBy == 'story') $objects = $this->dao->select('*')->from(TABLE_STORY)->where('deleted')->eq(0)->andWhere('id')->in($groupByList)->orderBy($orderBy)->fetchAll('id');
|
||||
|
||||
$laneColor = 0;
|
||||
$order = 1;
|
||||
|
||||
@@ -754,4 +754,48 @@ class kanbanTao extends kanbanModel
|
||||
|
||||
return array($cardCount, $cardList);
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取看板分组视图的对象键值对。
|
||||
* Get object pairs for group view.
|
||||
*
|
||||
* @param string $groupBy
|
||||
* @param array $groupByList
|
||||
* @param string $browseType
|
||||
* @param string $orderBy
|
||||
* @access public
|
||||
* @return array
|
||||
*/
|
||||
protected function getObjectPairs(string $groupBy, array $groupByList, string $browseType, string $orderBy): array
|
||||
{
|
||||
$objectPairs = array();
|
||||
if(in_array($groupBy, array('module', 'story', 'assignedTo')))
|
||||
{
|
||||
if($groupBy == 'module')
|
||||
{
|
||||
$objectPairs += $this->dao->select('id,name')->from(TABLE_MODULE)->where('type')->in('story,task,bug')->andWhere('deleted')->eq('0')->andWhere('id')->in($groupByList)->fetchPairs();
|
||||
}
|
||||
elseif($groupBy == 'story')
|
||||
{
|
||||
$objectPairs += $this->dao->select('id,title')->from(TABLE_STORY)->where('deleted')->eq(0)->andWhere('id')->in($groupByList)->orderBy($orderBy)->fetchPairs();
|
||||
}
|
||||
else
|
||||
{
|
||||
$objectPairs += $this->dao->select('account,realname')->from(TABLE_USER)->where('account')->in($groupByList)->fetchPairs();
|
||||
if(isset($groupByList['closed'])) $objectPairs['closed'] = 'Closed';
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
unset($this->lang->$browseType->{$groupBy . 'List'}[0]);
|
||||
unset($this->lang->$browseType->{$groupBy . 'List'}['']);
|
||||
$objectPairs += $this->lang->$browseType->{$groupBy . 'List'};
|
||||
}
|
||||
|
||||
if(in_array($groupBy, array('module', 'story', 'pri', 'severity'))) $objectPairs[0] = $this->lang->$browseType->$groupBy . ': ' . $this->lang->kanban->noGroup;
|
||||
if(in_array($groupBy, array('assignedTo', 'source'))) $objectPairs[] = $this->lang->$browseType->$groupBy . ': ' . $this->lang->kanban->noGroup;
|
||||
if($browseType == 'bug' and $groupBy == 'type') $objectPairs[0] = $this->lang->$browseType->$groupBy . ': ' . $this->lang->kanban->noGroup;
|
||||
|
||||
return $objectPairs;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -4,57 +4,65 @@ include dirname(__FILE__, 5) . '/test/lib/init.php';
|
||||
include dirname(__FILE__, 2) . '/kanban.class.php';
|
||||
su('admin');
|
||||
|
||||
zdTable('project')->config('kanbanexecution')->gen(5);
|
||||
zdTable('kanbanregion')->config('rdkanbanregion')->gen(5);
|
||||
zdTable('kanbangroup')->config('rdkanbangroup')->gen(20);
|
||||
zdTable('kanbancolumn')->gen(20);
|
||||
zdTable('kanbanlane')->config('rdkanbanlane')->gen(10);
|
||||
zdTable('kanbancell')->config('rdkanbancell')->gen(20);
|
||||
zdTable('task')->config('rdkanbantask')->gen(20);
|
||||
|
||||
/**
|
||||
|
||||
title=测试 kanbanModel->getLanes4Group();
|
||||
timeout=0
|
||||
cid=1
|
||||
pid=1
|
||||
|
||||
获取执行101 story pri的泳道 >> ,优先级: 无,2,4
|
||||
获取执行101 story category的泳道 >> ,类型: 无,功能
|
||||
获取执行101 story module的泳道 >> ,所属模块: 无,产品模块2,产品模块4
|
||||
获取执行101 story source的泳道 >> ,来源: 无,用户,市场
|
||||
获取执行102 task pri的泳道 >> ,优先级: 无,1,2,4
|
||||
获取执行102 task module的泳道 >> ,所属模块: 无,模块4,模块10,模块13,模块16
|
||||
获取执行102 task assignedTo的泳道 >> ,指派给: 无
|
||||
获取执行102 task story的泳道 >> ,相关研发需求: 无,用户需求5
|
||||
获取执行101 bug pri的泳道 >> ,优先级: 无,1,3,4
|
||||
获取执行101 bug module的泳道 >> ,所属模块: 无,产品模块11,产品模块12,产品模块13
|
||||
获取执行101 bug assignedTo的泳道 >> ,指派给: 无,admin,测试1
|
||||
获取执行101 bug severity的泳道 >> ,严重程度: 无,1,3,4
|
||||
获取执行101 story pri的泳道 >> ,优先级: 无,2,4
|
||||
获取执行101 story category的泳道 >> ,类型: 无,功能
|
||||
获取执行101 story module的泳道 >> ,所属模块: 无,产品模块14,产品模块16
|
||||
获取执行101 story source的泳道 >> ,来源: 无,用户,其他
|
||||
获取执行102 task pri的泳道 >> ,优先级: 无,1,2,3
|
||||
获取执行102 task module的泳道 >> ,所属模块: 无,模块13,模块37,模块40,模块43
|
||||
获取执行102 task assignedTo的泳道 >> ,指派给: 无
|
||||
获取执行102 task story的泳道 >> ,相关研发需求: 无,用户需求17
|
||||
- 获取执行1 story pri的泳道 @,优先级: 无
|
||||
- 获取执行1 story category的泳道 @,功能
|
||||
- 获取执行1 story module的泳道 @,所属模块: 无
|
||||
- 获取执行1 story source的泳道 @,来源: 无
|
||||
- 获取执行2 task pri的泳道 @,1,2,3,4,优先级: 无
|
||||
- 获取执行2 task module的泳道 @,所属模块: 无
|
||||
- 获取执行2 task assignedTo的泳道 @,指派给: 无
|
||||
- 获取执行2 task story的泳道 @,相关软件需求: 无
|
||||
- 获取执行1 bug pri的泳道 @,优先级: 无
|
||||
- 获取执行1 bug module的泳道 @,所属模块: 无
|
||||
- 获取执行1 bug assignedTo的泳道 @,指派给: 无
|
||||
- 获取执行1 bug severity的泳道 @,严重程度: 无
|
||||
- 获取执行1 story pri的泳道 @,优先级: 无
|
||||
- 获取执行1 story category的泳道 @,功能
|
||||
- 获取执行1 story module的泳道 @,所属模块: 无
|
||||
- 获取执行1 story source的泳道 @,来源: 无
|
||||
- 获取执行2 task pri的泳道 @,1,2,3,4,优先级: 无
|
||||
- 获取执行2 task module的泳道 @,所属模块: 无
|
||||
- 获取执行2 task assignedTo的泳道 @,指派给: 无
|
||||
- 获取执行2 task story的泳道 @,相关软件需求: 无
|
||||
|
||||
*/
|
||||
$executionIDList = array('101', '102', '103', '104', '105');
|
||||
$executionIDList = array('1', '2', '3', '4', '5');
|
||||
$browseTypeList = array('story', 'task', 'bug');
|
||||
$groupByList = array('pri', 'category', 'module', 'source', 'assignedTo', 'story', 'severity');
|
||||
|
||||
$kanban = new kanbanTest();
|
||||
|
||||
r($kanban->getLanes4GroupTest($executionIDList[0], $browseTypeList[0], $groupByList[0])) && p() && e(',优先级: 无,2,4'); // 获取执行101 story pri的泳道
|
||||
r($kanban->getLanes4GroupTest($executionIDList[0], $browseTypeList[0], $groupByList[1])) && p() && e(',类型: 无,功能'); // 获取执行101 story category的泳道
|
||||
r($kanban->getLanes4GroupTest($executionIDList[0], $browseTypeList[0], $groupByList[2])) && p() && e(',所属模块: 无,产品模块2,产品模块4'); // 获取执行101 story module的泳道
|
||||
r($kanban->getLanes4GroupTest($executionIDList[0], $browseTypeList[0], $groupByList[3])) && p() && e(',来源: 无,用户,市场'); // 获取执行101 story source的泳道
|
||||
r($kanban->getLanes4GroupTest($executionIDList[1], $browseTypeList[1], $groupByList[0])) && p() && e(',优先级: 无,1,2,4'); // 获取执行102 task pri的泳道
|
||||
r($kanban->getLanes4GroupTest($executionIDList[1], $browseTypeList[1], $groupByList[2])) && p() && e(',所属模块: 无,模块4,模块10,模块13,模块16'); // 获取执行102 task module的泳道
|
||||
r($kanban->getLanes4GroupTest($executionIDList[1], $browseTypeList[1], $groupByList[4])) && p() && e(',指派给: 无'); // 获取执行102 task assignedTo的泳道
|
||||
r($kanban->getLanes4GroupTest($executionIDList[1], $browseTypeList[1], $groupByList[5])) && p() && e(',相关研发需求: 无,用户需求5'); // 获取执行102 task story的泳道
|
||||
r($kanban->getLanes4GroupTest($executionIDList[2], $browseTypeList[2], $groupByList[0])) && p() && e(',优先级: 无,1,3,4'); // 获取执行101 bug pri的泳道
|
||||
r($kanban->getLanes4GroupTest($executionIDList[2], $browseTypeList[2], $groupByList[2])) && p() && e(',所属模块: 无,产品模块11,产品模块12,产品模块13'); // 获取执行101 bug module的泳道
|
||||
r($kanban->getLanes4GroupTest($executionIDList[2], $browseTypeList[2], $groupByList[4])) && p() && e(',指派给: 无,admin,测试1'); // 获取执行101 bug assignedTo的泳道
|
||||
r($kanban->getLanes4GroupTest($executionIDList[2], $browseTypeList[2], $groupByList[6])) && p() && e(',严重程度: 无,1,3,4'); // 获取执行101 bug severity的泳道
|
||||
r($kanban->getLanes4GroupTest($executionIDList[3], $browseTypeList[0], $groupByList[0])) && p() && e(',优先级: 无,2,4'); // 获取执行101 story pri的泳道
|
||||
r($kanban->getLanes4GroupTest($executionIDList[3], $browseTypeList[0], $groupByList[1])) && p() && e(',类型: 无,功能'); // 获取执行101 story category的泳道
|
||||
r($kanban->getLanes4GroupTest($executionIDList[3], $browseTypeList[0], $groupByList[2])) && p() && e(',所属模块: 无,产品模块14,产品模块16'); // 获取执行101 story module的泳道
|
||||
r($kanban->getLanes4GroupTest($executionIDList[3], $browseTypeList[0], $groupByList[3])) && p() && e(',来源: 无,用户,其他'); // 获取执行101 story source的泳道
|
||||
r($kanban->getLanes4GroupTest($executionIDList[4], $browseTypeList[1], $groupByList[0])) && p() && e(',优先级: 无,1,2,3'); // 获取执行102 task pri的泳道
|
||||
r($kanban->getLanes4GroupTest($executionIDList[4], $browseTypeList[1], $groupByList[2])) && p() && e(',所属模块: 无,模块13,模块37,模块40,模块43'); // 获取执行102 task module的泳道
|
||||
r($kanban->getLanes4GroupTest($executionIDList[4], $browseTypeList[1], $groupByList[4])) && p() && e(',指派给: 无'); // 获取执行102 task assignedTo的泳道
|
||||
r($kanban->getLanes4GroupTest($executionIDList[4], $browseTypeList[1], $groupByList[5])) && p() && e(',相关研发需求: 无,用户需求17'); // 获取执行102 task story的泳道
|
||||
r($kanban->getLanes4GroupTest($executionIDList[0], $browseTypeList[0], $groupByList[0])) && p('', '|') && e(',优先级: 无'); // 获取执行1 story pri的泳道
|
||||
r($kanban->getLanes4GroupTest($executionIDList[0], $browseTypeList[0], $groupByList[1])) && p('', '|') && e(',功能'); // 获取执行1 story category的泳道
|
||||
r($kanban->getLanes4GroupTest($executionIDList[0], $browseTypeList[0], $groupByList[2])) && p('', '|') && e(',所属模块: 无'); // 获取执行1 story module的泳道
|
||||
r($kanban->getLanes4GroupTest($executionIDList[0], $browseTypeList[0], $groupByList[3])) && p('', '|') && e(',来源: 无'); // 获取执行1 story source的泳道
|
||||
r($kanban->getLanes4GroupTest($executionIDList[1], $browseTypeList[1], $groupByList[0])) && p('', '|') && e(',1,2,3,4,优先级: 无'); // 获取执行2 task pri的泳道
|
||||
r($kanban->getLanes4GroupTest($executionIDList[1], $browseTypeList[1], $groupByList[2])) && p('', '|') && e(',所属模块: 无'); // 获取执行2 task module的泳道
|
||||
r($kanban->getLanes4GroupTest($executionIDList[1], $browseTypeList[1], $groupByList[4])) && p('', '|') && e(',指派给: 无'); // 获取执行2 task assignedTo的泳道
|
||||
r($kanban->getLanes4GroupTest($executionIDList[1], $browseTypeList[1], $groupByList[5])) && p('', '|') && e(',相关软件需求: 无'); // 获取执行2 task story的泳道
|
||||
r($kanban->getLanes4GroupTest($executionIDList[2], $browseTypeList[2], $groupByList[0])) && p('', '|') && e(',优先级: 无'); // 获取执行1 bug pri的泳道
|
||||
r($kanban->getLanes4GroupTest($executionIDList[2], $browseTypeList[2], $groupByList[2])) && p('', '|') && e(',所属模块: 无'); // 获取执行1 bug module的泳道
|
||||
r($kanban->getLanes4GroupTest($executionIDList[2], $browseTypeList[2], $groupByList[4])) && p('', '|') && e(',指派给: 无'); // 获取执行1 bug assignedTo的泳道
|
||||
r($kanban->getLanes4GroupTest($executionIDList[2], $browseTypeList[2], $groupByList[6])) && p('', '|') && e(',严重程度: 无'); // 获取执行1 bug severity的泳道
|
||||
r($kanban->getLanes4GroupTest($executionIDList[3], $browseTypeList[0], $groupByList[0])) && p('', '|') && e(',优先级: 无'); // 获取执行1 story pri的泳道
|
||||
r($kanban->getLanes4GroupTest($executionIDList[3], $browseTypeList[0], $groupByList[1])) && p('', '|') && e(',功能'); // 获取执行1 story category的泳道
|
||||
r($kanban->getLanes4GroupTest($executionIDList[3], $browseTypeList[0], $groupByList[2])) && p('', '|') && e(',所属模块: 无'); // 获取执行1 story module的泳道
|
||||
r($kanban->getLanes4GroupTest($executionIDList[3], $browseTypeList[0], $groupByList[3])) && p('', '|') && e(',来源: 无'); // 获取执行1 story source的泳道
|
||||
r($kanban->getLanes4GroupTest($executionIDList[4], $browseTypeList[1], $groupByList[0])) && p('', '|') && e(',1,2,3,4,优先级: 无'); // 获取执行2 task pri的泳道
|
||||
r($kanban->getLanes4GroupTest($executionIDList[4], $browseTypeList[1], $groupByList[2])) && p('', '|') && e(',所属模块: 无'); // 获取执行2 task module的泳道
|
||||
r($kanban->getLanes4GroupTest($executionIDList[4], $browseTypeList[1], $groupByList[4])) && p('', '|') && e(',指派给: 无'); // 获取执行2 task assignedTo的泳道
|
||||
r($kanban->getLanes4GroupTest($executionIDList[4], $browseTypeList[1], $groupByList[5])) && p('', '|') && e(',相关软件需求: 无'); // 获取执行2 task story的泳道
|
||||
Reference in New Issue
Block a user