Merge branch 'sprint/177_zhengruyu_' into 'kanban'
*Finish task.*Finish task.*Finish task.*Finish task.*Finish task.*Finish... See merge request easycorp/zentaopms!978
This commit is contained in:
@@ -65,6 +65,13 @@ body {background-color: #fff}
|
||||
.region .kanban-item > .kanban-card > .info > .estimate{margin-left: 10px; color: #999}
|
||||
.region .kanban-item > .kanban-card > .info > .time {margin-left: 10px; font-size: 12px; background: rgb(242, 242, 242)}
|
||||
.region .kanban-item > .kanban-card > .info > .user {position: absolute; right: 0; top: 0}
|
||||
.region .kanban-item > .kanban-card > .info > .user > .avatar {display: inline-block; width: 24px; height: 24px; line-height: 24px; margin-right: 0px;}
|
||||
.region .kanban-item > .kanban-card > .info > .user > span {display: inline-block; color: transparent; width: 2px; height: 2px; background-color: #8990a2; position: sticky; border-radius: 50%; top: 3px; margin: 0 7px;}
|
||||
.region .kanban-item > .kanban-card > .info > .user > span:before,
|
||||
.region .kanban-item > .kanban-card > .info > .user > span:after {content: ''; display: block; position: absolute; width: 2px; height: 2px; background-color: #8990a2; top: 0; border-radius: 50%}
|
||||
.region .kanban-item > .kanban-card > .info > .user > span:before {left: -4px;}
|
||||
.region .kanban-item > .kanban-card > .info > .user > span:after {right: -4px;}
|
||||
.region .kanban-item > .kanban-card > .info > .user > div {display: inline-block; height: 24px; position: sticky; border-radius: 50%; top: 3px; margin: 5px;}
|
||||
.region .kanban-item > .kanban-card > .actions > a {display: block; float: left; width: 20px; height: 20px; line-height: 20px; text-align: center; border-radius: 4px; opacity: .7;}
|
||||
.region .kanban-item > .kanban-card > .actions > a:hover {background-color: rgba(0,0,0,.075); opacity: 1;}
|
||||
.region .kanban-item:hover > .actions {opacity: 1;}
|
||||
|
||||
+48
-41
@@ -189,6 +189,48 @@ function renderLaneName($lane, lane, $kanban, columns, kanban)
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Render avatars of user.
|
||||
* @param {String|{account: string, avatar: string}} user User account or user object
|
||||
* @returns {string}
|
||||
*/
|
||||
function renderUsersAvatar(users, itemID, size)
|
||||
{
|
||||
var avatarSizeClass = 'avatar-' + (size || 'sm');
|
||||
var link = createLink('kanban', 'assigncard', 'id=' + itemID, '', true);
|
||||
|
||||
if(users.length == 0 || (users.length == 1 && users[0] == ''))
|
||||
{
|
||||
return $('<a class="avatar has-text ' + avatarSizeClass + ' avatar-circle iframe" title="' + noAssigned + '" style="background: #ccc" href="' + link + '"><i class="icon icon-person"></i></a>');
|
||||
}
|
||||
|
||||
var assignees = [];
|
||||
for(var user of users)
|
||||
{
|
||||
var $noPrivAndNoAssigned = $('<div class="avatar has-text ' + avatarSizeClass + ' avatar-circle" title="' + noAssigned + '" style="background: #ccc"><i class="icon icon-person"></i></div>');
|
||||
if(!priv.canAssignCard && !user)
|
||||
{
|
||||
assignees.push($noPrivAndNoAssigned);
|
||||
continue;
|
||||
}
|
||||
|
||||
if(!user)
|
||||
{
|
||||
assignees.push($('<a class="avatar has-text ' + avatarSizeClass + ' avatar-circle iframe" title="' + noAssigned + '" style="background: #ccc" href="' + link + '"><i class="icon icon-person"></i></a>'));
|
||||
continue;
|
||||
}
|
||||
|
||||
if(typeof user === 'string') user = {account: user};
|
||||
if(!user.avatar && window.userList && window.userList[user.account]) user = window.userList[user.account];
|
||||
|
||||
assignees.push($('<a class="avatar has-text ' + avatarSizeClass + ' avatar-circle iframe" href="' + link + '"/>').avatar({user: user}));
|
||||
}
|
||||
if(assignees.length > 4) assignees.splice(3, assignees.length - 4, '<span>...</span>');
|
||||
assignees.push('<div>' + kanbanLang.teamSumCount.replace('%s', assignees.length) + '</div>');
|
||||
return assignees;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* The function for rendering kanban item
|
||||
*/
|
||||
@@ -239,9 +281,9 @@ function renderKanbanItem(item, $item)
|
||||
var $time = $info.children('.time');
|
||||
if(item.end && item.end !== '0000-00-00')
|
||||
{
|
||||
var end = $.zui.createDate(item.end);
|
||||
var today = new Date();
|
||||
var isExpired = end.getTime() < today.getTime();
|
||||
var end = $.zui.createDate(item.end);
|
||||
var today = new Date();
|
||||
var isExpired = end.getTime() < today.getTime();
|
||||
var dateFormat = (today.getFullYear() === end.getFullYear() ? 'MM-dd ' : 'yyyy-MM-dd ') + kanbancardLang.deadlineAB;
|
||||
$time.text($.zui.formatDate(end, dateFormat))
|
||||
.toggleClass('text-red', isExpired)
|
||||
@@ -252,45 +294,10 @@ function renderKanbanItem(item, $item)
|
||||
$time.hide();
|
||||
}
|
||||
|
||||
/* Display avatars of assignedTo. */
|
||||
var assignedTo = item.assignedTo.split(',');
|
||||
var $user = $info.children('.user');
|
||||
if(item.assignedTo)
|
||||
{
|
||||
var assignedTo = item.assignedTo.split(',');
|
||||
if(assignedTo.length != 0)
|
||||
{
|
||||
for(var index = 0; index < assignedTo.length; index ++)
|
||||
{
|
||||
var user = assignedTo[index];
|
||||
|
||||
if(typeof user === 'string') user = {account: user};
|
||||
if(!user.avatar && window.userList && window.userList[user.account]) user = window.userList[user.account];
|
||||
|
||||
var $avatar = $(
|
||||
priv.canAssignCard ? '<a class="avatar avatar-sm avatar-user avatar-circle iframe"></a>'
|
||||
: '<div class="avatar avatar-sm avatar-user avatar-circle"></div>'
|
||||
).attr('data-name', user.realname || user.account)
|
||||
.attr('data-id', user.id || user.account);
|
||||
if(user.avatar)
|
||||
{
|
||||
$avatar.append('<img src="' + user.avatar + '" />');
|
||||
}
|
||||
|
||||
if(priv.canAssignCard)
|
||||
{
|
||||
$avatar.attr('href', createLink('kanban', 'assignCard', 'id=' + item.id, '', 1));
|
||||
}
|
||||
|
||||
$user.empty()
|
||||
.append($avatar)
|
||||
.attr('title', user.realname || user.account)
|
||||
.show();
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
$user.hide();
|
||||
}
|
||||
$user.html(renderUsersAvatar(assignedTo, item.id));
|
||||
|
||||
$item.css('background-color', item.color);
|
||||
$item.toggleClass('has-color', item.color != '#FFFFFF');
|
||||
|
||||
@@ -13,6 +13,7 @@ js::set('kanbancardLang', $lang->kanbancard);
|
||||
js::set('kanbanID', $kanban->id);
|
||||
js::set('laneCount', $laneCount);
|
||||
js::set('userList', $userList);
|
||||
js::set('noAssigned', $lang->kanbancard->noAssigned);
|
||||
|
||||
js::set('priv',
|
||||
array(
|
||||
|
||||
Reference in New Issue
Block a user