* Remove useless code, add render avatar.

This commit is contained in:
sunguangming
2023-11-09 09:37:39 +08:00
parent daf414f458
commit 91055beb87
4 changed files with 62 additions and 37 deletions
-11
View File
@@ -391,7 +391,6 @@ class kanban extends control
public function view($kanbanID, $regionID = '')
{
$kanban = $this->kanban->getByID($kanbanID);
$users = $this->loadModel('user')->getPairs('noletter|nodeleted');
if(!$kanban)
{
@@ -402,22 +401,12 @@ class kanban extends control
$kanbanIdList = $this->kanban->getCanViewObjects();
if(!$this->app->user->admin and !in_array($kanbanID, $kanbanIdList)) return print(js::error($this->lang->kanban->accessDenied) . js::locate('back'));
$userList = array();
$avatarPairs = $this->dao->select('account, avatar')->from(TABLE_USER)->where('deleted')->eq(0)->fetchPairs();
foreach($avatarPairs as $account => $avatar)
{
if(!$avatar) continue;
$userList[$account]['avatar'] = $avatar;
}
$regions = $this->kanban->getRegionPairs($kanbanID);
if(!$regionID) $regionID = $this->session->regionID ? $this->session->regionID : 'all';
$regionID = !isset($regions[$regionID]) ? 'all' : $regionID;
$this->session->set('regionID', $regionID, 'kanban');
$this->view->users = $users;
$this->view->title = $this->lang->kanban->view;
$this->view->userList = $userList;
$this->view->kanban = $kanban;
$this->view->regions = $regions;
$this->view->kanbanList = $this->kanban->getKanbanData($kanbanID, $regionID == 'all' ? '' : array($regionID));
+29 -7
View File
@@ -143,13 +143,13 @@ window.getItem = function(info)
beginAndEnd = formatDate(begin) + ' ~ ' + formatDate(end);
}
let avatar = "<span class='avatar rounded-full size-xs ml-1 " + (info.item.uavatar ? 'primary' : 'bg-lighter text-canvas') + "' title=" + info.item.realname + '>' + (info.item.uavatar ? info.item.uavatar : "<i class='icon icon-person'></i>");
const avatar = renderAvatar(info.item.avatarList);
const content = `
<div class='flex items-center'>
<span class='pri-${info.item.pri}'>${info.item.pri}</span>
<span class='date ml-1'>${beginAndEnd}</span>
<div class='flex-1 flex justify-end'>${avatar}</div>
<div class='flex-1 flex justify-end' title='${info.item.realnames}'>${avatar}</div>
</div>
`;
@@ -164,6 +164,28 @@ window.getItem = function(info)
}
}
function renderAvatar(avatarList)
{
if(avatarList.length == 0)
{
return '<div class="avatar rounded-full size-xs ml-1 primary" title="' + cardLang.noAssigned + '" style="background: #ccc"><i class="icon icon-person"></i></div>';
}
let assignees = '<div class="avatar-group size-sm">';
let count = 0;
for(let avatar of avatarList)
{
if(count > 2) break;
assignees += `<div class="avatar rounded-full size-xs ml-1 primary">${avatar}</div>`;
count ++;
}
if(count > 2) assignees += '<div class="avatar circle size-xs gray-pale">...</div>';
assignees += '</div>';
return assignees;
}
window.getItemActions = function(item)
{
return [{
@@ -324,26 +346,26 @@ window.loadMore = function(type, regionID)
window.fullScreen = function()
{
var element = document.getElementById('kanbanList');
var requestMethod = element.requestFullScreen || element.webkitRequestFullScreen || element.mozRequestFullScreen || element.msRequestFullscreen;
let element = document.getElementById('kanbanList');
let requestMethod = element.requestFullScreen || element.webkitRequestFullScreen || element.mozRequestFullScreen || element.msRequestFullscreen;
if(requestMethod)
{
var afterEnterFullscreen = function()
let afterEnterFullscreen = function()
{
$('#kanbanList').addClass('fullscreen').css('background', '#fff');
window.hideAllAction();
$.cookie.set('isFullScreen', 1);
};
var whenFailEnterFullscreen = function()
let whenFailEnterFullscreen = function()
{
exitFullScreen();
};
try
{
var result = requestMethod.call(element);
let result = requestMethod.call(element);
if(result && (typeof result.then === 'function' || result instanceof window.Promise))
{
result.then(afterEnterFullscreen).catch(whenFailEnterFullscreen);
+31 -19
View File
@@ -1236,9 +1236,9 @@ class kanbanModel extends model
->fetchAll();
$actions = array('editCard', 'archiveCard', 'deleteCard', 'moveCard', 'setCardColor', 'viewCard', 'sortCard', 'viewExecution', 'viewPlan', 'viewRelease', 'viewBuild', 'viewTicket', 'activateCard', 'finishCard');
$userAvatars = $this->loadModel('user')->getAvatarPairs();
$users = $this->loadModel('user')->getPairs('noletter|nodeleted');
$cardGroup = array();
$avatarPairs = $this->loadModel('user')->getAvatarPairs();
$users = $this->loadModel('user')->getPairs('noletter');
foreach($cellList as $cell)
{
$cardIdList = array_filter(explode(',', $cell->cards));
@@ -1251,24 +1251,36 @@ class kanbanModel extends model
$card = zget($cards, $cardID);
$item = array();
$item['column'] = $cell->column;
$item['lane'] = $cell->lane;
$item['title'] = htmlspecialchars_decode($card->name);
$item['id'] = $card->id;
$item['name'] = $card->id;
$item['pri'] = $card->pri;
$item['begin'] = $card->begin;
$item['end'] = $card->end;
$item['group'] = $card->group;
$item['region'] = $card->region;
$item['color'] = $card->color;
$item['progress'] = $card->progress;
$item['realname'] = zget($users, $card->assignedTo, '');
$item['fromType'] = $card->fromType;
$item['column'] = $cell->column;
$item['lane'] = $cell->lane;
$item['title'] = htmlspecialchars_decode($card->name);
$item['id'] = $card->id;
$item['name'] = $card->id;
$item['pri'] = $card->pri;
$item['begin'] = $card->begin;
$item['end'] = $card->end;
$item['group'] = $card->group;
$item['region'] = $card->region;
$item['color'] = $card->color;
$item['progress'] = $card->progress;
$item['assignedTo'] = $card->assignedTo;
$item['fromType'] = $card->fromType;
$item['avatarList'] = array();
$item['realnames'] = '';
$userAvatar = zget($userAvatars, $card->assignedTo, '');
$userAvatar = $userAvatar ? "<img src='$userAvatar'/>" : strtoupper(mb_substr($card->assignedTo, 0, 1, 'utf-8'));
$item['uavatar'] = $userAvatar;
if($card->assignedTo)
{
$assignedToList = explode(',', $card->assignedTo);
foreach($assignedToList as $account)
{
if(!$account) continue;
$userAvatar = zget($avatarPairs, $account, '');
$userAvatar = $userAvatar ? "<img src='$userAvatar'/>" : strtoupper(mb_substr($account, 0, 1, 'utf-8'));
$item['avatarList'][] = $userAvatar;
$item['realnames'] .= zget($users, $account, '') . ' ';
}
}
foreach($actions as $action)
{
@@ -45,6 +45,8 @@ foreach($cards as $card)
$assignedToBox[] = userAvatar(set::avatar($usersAvatar[$account]), set::account($account), set::realname($users[$account]), set::size('sm'));
$count ++;
}
if($count > 2) $assignedToBox[] = span(setClass('font-bold'), '...');
}
}
else