Merge branch 'master' of http://gitlab.zcorp.cc/easycorp/zentaopms
This commit is contained in:
@@ -2,8 +2,8 @@
|
||||
.addbtn {padding-top: 22px; height: 63px; border: 1px dashed #ddd; width: 60px;}
|
||||
.addbtn .icon-plus {font-size: 18px; display: block; opacity: 0.5; transition: opacity .2s; text-shadow: 1px 1px 3px rgba(0,0,0,.2);}
|
||||
.addbtn:hover .icon-plus {opacity: .9; animation: flash-icon 1s linear alternate infinite;}
|
||||
#dropMenu {min-width: 250px; box-sizing: inhert;}
|
||||
#dropMenu .table-col .list-group {padding-top: 10px;}
|
||||
#subHeader #dropMenu {min-width: 250px; box-sizing: inhert;}
|
||||
#subHeader #dropMenu .table-col .list-group {padding-top: 10px;}
|
||||
.main-col .block-files .panel-heading {padding-right: 20px;}
|
||||
.main-col .block-files .panel-heading .panel-title {height: 35px; line-height: 30px;}
|
||||
.side-col .action a {margin: 0 auto 3px; display: block; max-width: 200px;}
|
||||
|
||||
@@ -206,9 +206,20 @@ class gitlabpipelineModel extends model
|
||||
* @return object
|
||||
* @docment https://docs.gitlab.com/ee/api/jobs.html#get-a-single-job
|
||||
*/
|
||||
public function apiGetSingleJob($gitlabID, $projectID, $jobID)
|
||||
public function apiGetSingleJob($gitlabID, $projectID, $jobID)
|
||||
{
|
||||
$url = sprintf($this->loadModel('gitlab')->getApiRoot($gitlabID), "/projects/{$projectID}/jobs/{$jobID}");
|
||||
return json_decode(commonModel::http($url));
|
||||
}
|
||||
|
||||
/**
|
||||
* Run pipeline.
|
||||
*
|
||||
* @param int $jobID
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public function runPipeline($jobID)
|
||||
{
|
||||
}
|
||||
}
|
||||
|
||||
@@ -57,7 +57,7 @@
|
||||
common::printIcon('compile', 'browse', "jobID=$id", '', 'list', 'history');
|
||||
common::printIcon('job', 'edit', "jobID=$id", '', 'list', 'edit');
|
||||
if(strtolower($job->engine) == 'jenkins') common::printIcon('job', 'exec', "jobID=$id", '', 'list', 'play', 'hiddenwin');
|
||||
if(strtolower($job->engine) == 'gitlab') common::printIcon('gitlabpipeline', 'exec', "jobID=$id", '', 'list', 'play', 'hiddenwin');
|
||||
if(strtolower($job->engine) == 'gitlab') common::printIcon('gitlabpipeline', 'runPipeline', "jobID=$id", '', 'list', 'play', 'hiddenwin');
|
||||
if(common::hasPriv('job', 'delete')) echo html::a($this->createLink('job', 'delete', "jobID=$id"), '<i class="icon-trash"></i>', 'hiddenwin', "title='{$lang->job->delete}' class='btn'");
|
||||
?>
|
||||
</td>
|
||||
|
||||
@@ -52,16 +52,17 @@ class program extends control
|
||||
}
|
||||
$PMList = $this->loadModel('user')->getListByAccounts($accounts, 'account');
|
||||
|
||||
$this->view->title = $this->lang->program->browse;
|
||||
$this->view->position[] = $this->lang->program->browse;
|
||||
$this->view->title = $this->lang->program->browse;
|
||||
$this->view->position[] = $this->lang->program->browse;
|
||||
|
||||
$this->view->programs = $programs;
|
||||
$this->view->status = $status;
|
||||
$this->view->orderBy = $orderBy;
|
||||
$this->view->users = $this->user->getPairs('noletter');
|
||||
$this->view->usersAvatar = $this->user->getAvatarPairs();
|
||||
$this->view->programType = $programType;
|
||||
$this->view->PMList = $PMList;
|
||||
$this->view->programs = $programs;
|
||||
$this->view->status = $status;
|
||||
$this->view->orderBy = $orderBy;
|
||||
$this->view->users = $this->user->getPairs('noletter');
|
||||
$this->view->usersAvatar = $this->user->getAvatarPairs();
|
||||
$this->view->programType = $programType;
|
||||
$this->view->PMList = $PMList;
|
||||
$this->view->progressList = $this->program->getProgressList();
|
||||
|
||||
$this->display();
|
||||
}
|
||||
|
||||
@@ -153,10 +153,11 @@ class programModel extends model
|
||||
* @param object $pager
|
||||
* @param int $programTitle
|
||||
* @param int $involved
|
||||
* @param bool $queryAll
|
||||
* @access public
|
||||
* @return object
|
||||
*/
|
||||
public function getProjectList($programID = 0, $browseType = 'all', $queryID = 0, $orderBy = 'id_desc', $pager = null, $programTitle = 0, $involved = 0)
|
||||
public function getProjectList($programID = 0, $browseType = 'all', $queryID = 0, $orderBy = 'id_desc', $pager = null, $programTitle = 0, $involved = 0, $queryAll = false)
|
||||
{
|
||||
$path = '';
|
||||
if($programID)
|
||||
@@ -170,8 +171,8 @@ class programModel extends model
|
||||
->beginIF($this->config->systemMode == 'new')->andWhere('type')->eq('project')->fi()
|
||||
->beginIF($browseType != 'all')->andWhere('status')->eq($browseType)->fi()
|
||||
->beginIF($path)->andWhere('path')->like($path . '%')->fi()
|
||||
->beginIF(!$this->app->user->admin and $this->config->systemMode == 'new')->andWhere('id')->in($this->app->user->view->projects)->fi()
|
||||
->beginIF(!$this->app->user->admin and $this->config->systemMode == 'classic')->andWhere('id')->in($this->app->user->view->sprints)->fi()
|
||||
->beginIF(!$queryAll and !$this->app->user->admin and $this->config->systemMode == 'new')->andWhere('id')->in($this->app->user->view->projects)->fi()
|
||||
->beginIF(!$queryAll and !$this->app->user->admin and $this->config->systemMode == 'classic')->andWhere('id')->in($this->app->user->view->sprints)->fi()
|
||||
->beginIF($this->cookie->involved or $involved)
|
||||
->andWhere('openedBy', true)->eq($this->app->user->account)
|
||||
->orWhere('PM')->eq($this->app->user->account)
|
||||
@@ -236,6 +237,43 @@ class programModel extends model
|
||||
->fetchAll();
|
||||
}
|
||||
|
||||
/**
|
||||
* Get program and project progress list.
|
||||
*
|
||||
* @access public
|
||||
* @return array
|
||||
*/
|
||||
public function getProgressList()
|
||||
{
|
||||
$TotalProgress = array();
|
||||
$projectCount = array();
|
||||
$progressList = array();
|
||||
$programPairs = $this->getPairs();
|
||||
$projectStats = $this->getProjectStats(0, 'all', 0, 'id_desc', null, 0, 0, true);
|
||||
|
||||
/* Add program progress. */
|
||||
foreach(array_keys($programPairs) as $programID)
|
||||
{
|
||||
$TotalProgress[$programID] = 0;
|
||||
$projectCount[$programID] = 0;
|
||||
|
||||
foreach($projectStats as $project)
|
||||
{
|
||||
if(strpos($project->path, ',' . $programID . ',') === false) continue;
|
||||
$TotalProgress[$programID] += $project->hours->progress;
|
||||
$projectCount[$programID]++;
|
||||
}
|
||||
|
||||
if(empty($projectCount[$programID])) continue;
|
||||
$progressList[$programID] = $TotalProgress[$programID] / $projectCount[$programID];
|
||||
}
|
||||
|
||||
/* Add project progress. */
|
||||
foreach($projectStats as $project) $progressList[$project->id] = $project->hours->progress;
|
||||
|
||||
return $progressList;
|
||||
}
|
||||
|
||||
/**
|
||||
* Create a program.
|
||||
*
|
||||
@@ -823,13 +861,14 @@ class programModel extends model
|
||||
* @param object $pager
|
||||
* @param string $programTitle
|
||||
* @param int $involved
|
||||
* @param bool $queryAll
|
||||
* @access public
|
||||
* @return array
|
||||
*/
|
||||
public function getProjectStats($programID = 0, $browseType = 'undone', $queryID = 0, $orderBy = 'id_desc', $pager = null, $programTitle = 0, $involved = 0)
|
||||
public function getProjectStats($programID = 0, $browseType = 'undone', $queryID = 0, $orderBy = 'id_desc', $pager = null, $programTitle = 0, $involved = 0, $queryAll = false)
|
||||
{
|
||||
/* Init vars. */
|
||||
$projects = $this->getProjectList($programID, $browseType, $queryID, $orderBy, $pager, $programTitle, $involved);
|
||||
$projects = $this->getProjectList($programID, $browseType, $queryID, $orderBy, $pager, $programTitle, $involved, $queryAll);
|
||||
if(empty($projects)) return array();
|
||||
|
||||
$projectKeys = array_keys($projects);
|
||||
|
||||
@@ -75,8 +75,8 @@
|
||||
<td><?php echo $program->begin;?></td>
|
||||
<td><?php echo $program->end == LONG_TIME ? $lang->program->longTime : $program->end;?></td>
|
||||
<td>
|
||||
<div class='progress-pie' data-doughnut-size='90' data-color='#00da88' data-value='48' data-width='24' data-height='24' data-back-color='#e8edf3'>
|
||||
<div class='progress-info'><?php echo '48'; ?></div>
|
||||
<div class='progress-pie' data-doughnut-size='90' data-color='#00da88' data-value='<?php echo $progressList[$program->id]?>' data-width='24' data-height='24' data-back-color='#e8edf3'>
|
||||
<div class='progress-info'><?php echo $progressList[$program->id];?></div>
|
||||
</div>
|
||||
</td>
|
||||
<td class='c-actions'>
|
||||
|
||||
@@ -167,9 +167,9 @@ class repo extends control
|
||||
|
||||
$this->app->loadLang('action');
|
||||
|
||||
if($repo->SCM == 'Gitlab')
|
||||
if(strtolower($repo->SCM) == 'gitlab')
|
||||
{
|
||||
$projects = $this->loadModel('gitlab')->apiGetProjects($repo->gitlab, $repo->password);
|
||||
$projects = $this->loadModel('gitlab')->apiGetProjects($repo->gitlab);
|
||||
|
||||
$options = array();
|
||||
foreach($projects as $project) $options[$project->id] = $project->name_with_namespace;
|
||||
|
||||
@@ -11,7 +11,7 @@ $(function()
|
||||
{
|
||||
host = $('#gitlabHost').val();
|
||||
if(host == '') return false;
|
||||
url = createLink('repo', 'ajaxgetgitlabprojects', "host=" + host);
|
||||
url = createLink('repo', 'ajaxGetGitlabProjects', "host=" + host);
|
||||
|
||||
$.get(url, function(response)
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user