From 9b638436cf350ed7cd43d1b88a33bb1e7df032d3 Mon Sep 17 00:00:00 2001 From: hufangzhou Date: Fri, 23 Jul 2021 14:07:08 +0800 Subject: [PATCH 1/4] * Fix bug #13796. --- module/doc/css/objectlibs.css | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/module/doc/css/objectlibs.css b/module/doc/css/objectlibs.css index 63bd24dc78..7356867713 100644 --- a/module/doc/css/objectlibs.css +++ b/module/doc/css/objectlibs.css @@ -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;} From bbd3368393ff1a053e2fa9c573ea64a7b54131f0 Mon Sep 17 00:00:00 2001 From: dingguodong Date: Fri, 23 Jul 2021 14:09:17 +0800 Subject: [PATCH 2/4] * Rename codes to meet devel rule and bug fix on params. --- module/repo/control.php | 4 ++-- module/repo/js/edit.js | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/module/repo/control.php b/module/repo/control.php index 8b99377f61..1a141b47ee 100644 --- a/module/repo/control.php +++ b/module/repo/control.php @@ -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; diff --git a/module/repo/js/edit.js b/module/repo/js/edit.js index 74ef12e6f8..60505a9229 100644 --- a/module/repo/js/edit.js +++ b/module/repo/js/edit.js @@ -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) { From c7ec5e1bdf31e932fddd56216da10c07cc2dd157 Mon Sep 17 00:00:00 2001 From: dingguodong Date: Fri, 23 Jul 2021 14:11:14 +0800 Subject: [PATCH 3/4] * Rename exec to runPipeline and add this func. --- module/gitlabpipeline/model.php | 13 ++++++++++++- module/job/view/browse.html.php | 2 +- 2 files changed, 13 insertions(+), 2 deletions(-) diff --git a/module/gitlabpipeline/model.php b/module/gitlabpipeline/model.php index 7b7ba8a17a..a4e184991d 100644 --- a/module/gitlabpipeline/model.php +++ b/module/gitlabpipeline/model.php @@ -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) + { + } } diff --git a/module/job/view/browse.html.php b/module/job/view/browse.html.php index 84bf50e88c..f105ba1d09 100644 --- a/module/job/view/browse.html.php +++ b/module/job/view/browse.html.php @@ -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"), '', 'hiddenwin', "title='{$lang->job->delete}' class='btn'"); ?> From e7c113f9353aa5c70e5276154a23fdddd0efed7a Mon Sep 17 00:00:00 2001 From: qiyu-xie Date: Fri, 23 Jul 2021 14:11:22 +0800 Subject: [PATCH 4/4] * Finish task#40513. --- module/program/control.php | 19 ++++----- module/program/model.php | 49 ++++++++++++++++++++--- module/program/view/browsebylist.html.php | 4 +- 3 files changed, 56 insertions(+), 16 deletions(-) diff --git a/module/program/control.php b/module/program/control.php index 3d69cd47b1..9daaaf03d7 100644 --- a/module/program/control.php +++ b/module/program/control.php @@ -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(); } diff --git a/module/program/model.php b/module/program/model.php index 76dd4fc8d8..0a49e902c3 100644 --- a/module/program/model.php +++ b/module/program/model.php @@ -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); diff --git a/module/program/view/browsebylist.html.php b/module/program/view/browsebylist.html.php index 8d4e6f34dd..b310fae7e0 100644 --- a/module/program/view/browsebylist.html.php +++ b/module/program/view/browsebylist.html.php @@ -75,8 +75,8 @@ begin;?> end == LONG_TIME ? $lang->program->longTime : $program->end;?> -
-
+
+
id];?>