* [bug#57717] adjust build and project data for release.

This commit is contained in:
caoyanyi
2024-12-09 09:21:27 +08:00
committed by 刘刚
parent bcf4accb32
commit e4c7988ec0
7 changed files with 52 additions and 24 deletions
+1 -1
View File
@@ -90,7 +90,7 @@ class projectrelease extends control
$this->view->orderBy = $orderBy;
$this->view->showBranch = $showBranch;
$this->view->appList = $this->loadModel('system')->getPairs();
$this->view->childReleases = $this->release->getListByCondition(explode(',', $children));
$this->view->childReleases = $this->release->getListByCondition(explode(',', $children), 0, true);
$this->display();
}
+2
View File
@@ -11,6 +11,8 @@ window.renderCell = function(result, {col, row})
if(col.name == 'build')
{
if(!row.data.buildInfos) row.data.buildInfos = row.data.builds;
let result = [];
for(key in row.data.buildInfos)
{
-1
View File
@@ -72,7 +72,6 @@ foreach($releases as $release)
}
}
\a($cols);
$tableData = initTableData($releases, $cols);
dtable
(
+3 -2
View File
@@ -82,8 +82,9 @@ class release extends control
foreach($releases as $release) $release->desc = str_replace(' ', ' ', strip_tags($release->desc));
$childReleases = $this->release->getListByCondition(explode(',', $children), 0, true);
$this->view->title = $this->view->product->name . $this->lang->hyphen . $this->lang->release->browse;
$this->view->releases = $this->releaseZen->processReleaseListData($releases);
$this->view->releases = $this->releaseZen->processReleaseListData($releases, $childReleases);
$this->view->pageSummary = $this->release->getPageSummary($releases, $type);
$this->view->type = $type;
$this->view->orderBy = $orderBy;
@@ -92,7 +93,7 @@ class release extends control
$this->view->showBranch = $showBranch;
$this->view->branchPairs = $this->loadModel('branch')->getPairs($productID);
$this->view->appList = $this->loadModel('system')->getPairs();
$this->view->childReleases = $this->release->getListByCondition(explode(',', $children));
$this->view->childReleases = $this->release->getListByCondition(explode(',', $children), 0, true);
$this->display();
}
+29 -2
View File
@@ -78,16 +78,43 @@ class releaseModel extends model
*
* @param array $idList
* @param int $includeRelease
* @param bool $showRelated
* @access public
* @return array
*/
public function getListByCondition(array $idList = array(), int $includeRelease = 0): array
public function getListByCondition(array $idList = array(), int $includeRelease = 0, bool $showRelated = false): array
{
return $this->dao->select('*')->from(TABLE_RELEASE)
$releases = $this->dao->select('*')->from(TABLE_RELEASE)
->where('deleted')->eq(0)
->beginIF($idList)->andWhere('id')->in($idList)->fi()
->beginIF($includeRelease)->andWhere("FIND_IN_SET($includeRelease, `releases`)")->fi()
->fetchAll('id');
if(!$showRelated) return $releases;
$projectIdList = '';
foreach($releases as $release) $projectIdList .= trim($release->project, ',') . ',';
$projectPairs = $this->dao->select('id,name')->from(TABLE_PROJECT)->where('id')->in($projectIdList)->fetchPairs();
$builds = $this->dao->select('id,name')
->from(TABLE_BUILD)
->where('deleted')->eq(0)
->fetchAll('id');
foreach($releases as $release)
{
$releaseBuilds = array();
foreach(explode(',', $release->build) as $buildID)
{
if(!$buildID || !isset($builds[$buildID])) continue;
$releaseBuilds[] = $builds[$buildID];
}
$release->builds = $releaseBuilds;
$release->projectName = array();
foreach(explode(',', trim($release->project, ',')) as $projectID) $release->projectName[$projectID] = zget($projectPairs, $projectID, '');
$release->projectName = implode(' ', $release->projectName);
}
return $releases;
}
/**
-17
View File
@@ -44,23 +44,6 @@ foreach(array_column($releases, 'system') as $system)
}
if(!empty($cols['system'])) $cols['system']['map'] = array(0 => '') + $appList;
foreach($releases as $release)
{
$release->rowID = $release->id;
if(empty($release->releases)) continue;
foreach(explode(',', $release->releases) as $childID)
{
if(isset($childReleases[$childID]))
{
$child = clone $childReleases[$childID];
$child->rowID = "{$release->id}-{$childID}";
$child->parent = $release->id;
$releases[$child->rowID] = $child;
}
}
}
$releases = initTableData($releases, $cols, $this->release);
dtable
(
+17 -1
View File
@@ -19,7 +19,7 @@ class releaseZen extends release
* @access protected
* @return array
*/
protected function processReleaseListData(array $releaseList): array
protected function processReleaseListData(array $releaseList, array $childReleases = array()): array
{
$releases = array();
$this->loadModel('project');
@@ -28,6 +28,7 @@ class releaseZen extends release
{
$buildCount = count($release->builds);
$release->rowID = $release->id;
$release->rowspan = $buildCount;
$release->actions = $this->release->buildActionList($release);
@@ -52,6 +53,21 @@ class releaseZen extends release
$releases[] = $release;
}
if(empty($release->releases)) continue;
foreach(explode(',', $release->releases) as $childID)
{
if(isset($childReleases[$childID]))
{
$child = clone $childReleases[$childID];
$child = current($this->processReleaseListData(array($child)));
$child->rowID = "{$release->id}-{$childID}";
$child->parent = $release->id;
$releases[$child->rowID] = $child;
}
}
}
return $releases;