define(['jQuery', 'humanedate', 'paper-icon-button-light', 'cardStyle'], function ($) {
'use strict';
function deleteUser(page, id) {
var msg = Globalize.translate('DeleteUserConfirmation');
require(['confirm'], function (confirm) {
confirm({
title: Globalize.translate('DeleteUser'),
text: msg,
confirmText: Globalize.translate('ButtonDelete'),
primary: 'cancel'
}).then(function () {
Dashboard.showLoadingMsg();
ApiClient.deleteUser(id).then(function () {
loadData(page);
});
});
});
}
function showUserMenu(elem) {
var card = $(elem).parents('.card')[0];
var page = $(card).parents('.page')[0];
var userId = card.getAttribute('data-userid');
var menuItems = [];
menuItems.push({
name: Globalize.translate('ButtonOpen'),
id: 'open',
ironIcon: 'mode-edit'
});
menuItems.push({
name: Globalize.translate('ButtonLibraryAccess'),
id: 'access',
ironIcon: 'lock'
});
menuItems.push({
name: Globalize.translate('ButtonParentalControl'),
id: 'parentalcontrol',
ironIcon: 'person'
});
menuItems.push({
name: Globalize.translate('ButtonDelete'),
id: 'delete',
ironIcon: 'delete'
});
require(['actionsheet'], function (actionsheet) {
actionsheet.show({
items: menuItems,
positionTo: card,
callback: function (id) {
switch (id) {
case 'open':
Dashboard.navigate('useredit.html?userid=' + userId);
break;
case 'access':
Dashboard.navigate('userlibraryaccess.html?userid=' + userId);
break;
case 'parentalcontrol':
Dashboard.navigate('userparentalcontrol.html?userid=' + userId);
break;
case 'delete':
deleteUser(page, userId);
break;
default:
break;
}
}
});
});
}
function getUserHtml(user, addConnectIndicator) {
var html = '';
var cssClass = "card squareCard scalableCard squareCard-scalable";
if (user.Policy.IsDisabled) {
cssClass += ' grayscale';
}
html += "
";
html += '
';
html += '
";
html += '";
// cardBox
html += "
";
// card
html += "
";
return html;
}
function getLastSeenText(lastActivityDate) {
if (!lastActivityDate) {
return "";
}
return "Last seen " + humane_date(lastActivityDate);
}
function getUserSectionHtml(users, addConnectIndicator) {
var html = '';
html += users.map(function (u) {
return getUserHtml(u, addConnectIndicator);
}).join('');
return html;
}
function renderUsersIntoElement(elem, users, addConnectIndicator) {
var html = getUserSectionHtml(users, addConnectIndicator);
elem.html(html);
$('.btnUserMenu', elem).on('click', function () {
showUserMenu(this);
});
}
function renderUsers(page, users) {
renderUsersIntoElement($('.localUsers', page), users.filter(function (u) {
return u.ConnectLinkType != 'Guest';
}), true);
renderUsersIntoElement($('.connectUsers', page), users.filter(function (u) {
return u.ConnectLinkType == 'Guest';
}));
}
function showPendingUserMenu(elem) {
var menuItems = [];
menuItems.push({
name: Globalize.translate('ButtonCancel'),
id: 'delete',
ironIcon: 'delete'
});
require(['actionsheet'], function (actionsheet) {
var card = $(elem).parents('.card')[0];
var page = $(elem).parents('.page')[0];
var id = card.getAttribute('data-id');
actionsheet.show({
items: menuItems,
positionTo: card,
callback: function (menuItemId) {
switch (menuItemId) {
case 'delete':
cancelAuthorization(page, id);
break;
default:
break;
}
}
});
});
}
function getPendingUserHtml(user) {
var html = '';
var cssClass = "card squareCard";
html += "";
html += '
';
html += '
";
html += '";
// cardBox
html += "
";
// card
html += "
";
return html;
}
function renderPendingGuests(page, users) {
if (users.length) {
$('.sectionPendingGuests', page).show();
} else {
$('.sectionPendingGuests', page).hide();
}
var html = users.map(getPendingUserHtml).join('');
var elem = $('.pending', page).html(html);
$('.btnUserMenu', elem).on('click', function () {
showPendingUserMenu(this);
});
}
function cancelAuthorization(page, id) {
Dashboard.showLoadingMsg();
// Add/Update connect info
ApiClient.ajax({
type: "DELETE",
url: ApiClient.getUrl('Connect/Pending', {
Id: id
})
}).then(function () {
loadData(page);
});
}
function loadData(page) {
Dashboard.showLoadingMsg();
ApiClient.getUsers().then(function (users) {
renderUsers(page, users);
Dashboard.hideLoadingMsg();
});
ApiClient.getJSON(ApiClient.getUrl('Connect/Pending')).then(function (pending) {
renderPendingGuests(page, pending);
});
}
function showLinkUser(page, userId) {
require(['components/guestinviter/connectlink'], function (connectlink) {
connectlink.show().then(function () {
loadData(page);
});
});
}
function showInvitePopup(page) {
Dashboard.getCurrentUser().then(function (user) {
if (!user.ConnectUserId) {
showLinkUser(page, user.Id);
return;
}
require(['components/guestinviter/guestinviter'], function (guestinviter) {
guestinviter.show().then(function () {
loadData(page);
});
});
});
}
$(document).on('pageinit', "#userProfilesPage", function () {
var page = this;
$('.btnInvite', page).on('click', function () {
showInvitePopup(page);
});
$('.btnAddUser', page).on('click', function () {
Dashboard.navigate('usernew.html');
});
}).on('pagebeforeshow', "#userProfilesPage", function () {
var page = this;
loadData(page);
});
});