jQuery(function($) {
"use strict";
var TEMPLATES = new LuigiTemplate.Cache({
user: [
"",
"",
" ",
"%{name|h} (%{email|h})",
"",
"%{role|h}",
"",
"",
],
loading: [
"",
"",
" ",
"Loading...",
"",
],
error: [
"",
"",
" ",
"Error: %{error|h}",
"",
],
});
function filter() {
var qs = $('#users-q').val().replace(/^\s+|\s+$/g, '').toLowerCase().split(/\s+/);
if (qs.length > 0) {
// hide all users
$('#users .list-group-item').addClass('hidden');
// show matching users
$($.grep($('#users .list-group-item'), function(el) {
var eq = $(el).data('q');
return ($.grep(qs, function(q) {
return eq.indexOf(q) !== -1;
}).length == qs.length);
})).removeClass('hidden');
} else {
// show all users
$('#users .list-group-item').removeClass('hidden');
}
}
var ROLE_BADGE_CSS = {
viewer: 'hidden',
editor: '',
admin: '',
};
function reload() {
var btn = $('#users-reload'),
list = $('#users');
// show loading
btn.toggleClass('disabled').find('.loading').toggleClass('hidden');
list.html(TEMPLATES.run('loading'));
send('user/get_users').always(function() {
btn.toggleClass('disabled').find('.loading').toggleClass('hidden');
list.html('');
}).fail(function(r) {
var error = r.responseText;
try {
var data = $.parseJSON(r.responseText);
if (data.error)
error = data.error;
} catch (e) {}
list.html(TEMPLATES.run('error', {
error: error
}));
}).done(function(r) {
list.html($.map(r, function(row) {
var active = (row.is_active == '1');
return TEMPLATES.run('user', $.extend({}, row, {
icon: active ? 'fa-user' : 'fa-user-times',
css: active ? '' : 'list-group-item-danger',
q: [row.user_id, row.user_name, row.email, row.role_name].join(' ').toLowerCase(),
badge_css: ROLE_BADGE_CSS[row.role],
}));
}).join(''));
// refresh filters
filter();
});
// stop event
return false;
}
$('#users-q').on('search-update', function() {
filter();
});
$('#users').on('click', 'a.list-group-item', function() {
var user_id = $(this).data('user_id');
// update highlight
$('#users .active').removeClass('active');
$(this).addClass('active');
$('#user-edit-dialog').data('user_id', user_id).modal('show');
// stop event
return false;
});
$('#users-reload').click(reload);
// load users
$('#settings-tab-users').on('show.bs.tab', function() {
reload();
});
});