This commit is contained in:
dingguodong
2021-07-23 14:29:40 +08:00
5 changed files with 62 additions and 22 deletions
+6
View File
@@ -81,3 +81,9 @@ td.c-name a:visited {color: #082999;}
#pageNav .dropdown-menu {max-height: 350px; overflow-y: auto;}
#createDropdown ul.dropdown-menu {width: 100%;}
#project, #product, #custom, #book {min-height: 160px;}
#title .menu-title {font-size: 15px; font-weight: 600; position: relative; padding: 2px 0 2px 15px;list-style: none;}
#title .dropdown-menu-book {left: -67px; top: 38px;}
#title .dropdown-menu-doc {left: -80px; top: 38px;}
.menu-actions {position: absolute; top: 0; right: 0; padding: 7px 8px;}
.menu-actions i {font-size: 15px; color: #8c8c8c;}
-6
View File
@@ -18,15 +18,9 @@
#sidebar {width: 275px;}
#sidebar>.cell {width: 100%;}
#sidebar>.sidebar-toggle {left: 3px; right: auto;}
#project, #product, #custom, #book {min-height: 160px;}
#title .menu-title {font-size: 15px; font-weight: 600; position: relative; padding: 2px 0 2px 15px;list-style: none;}
#title .dropdown-menu-book {left: -67px; top: 38px;}
#title .dropdown-menu-doc {left: -80px; top: 38px;}
.hide-sidebar #sidebar>.cell {left: -270px;}
.hide-sidebar #sidebar>.sidebar-toggle>.icon:before {content: "\e314";}
.detail.empty {line-height: 200px;}
.main-col+.side-col {padding-left: 16px;}
.main-col iframe {min-height: 380px;}
.menu-actions {position: absolute; top: 0; right: 0; padding: 7px 8px;}
.menu-actions i {font-size: 15px; color: #8c8c8c;}
.article-content .keywords {margin-bottom: 15px;}
+10 -9
View File
@@ -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();
}
+44 -5
View File
@@ -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);
+2 -2
View File
@@ -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'>