jQuery(function($) {
"use strict";
var TEMPLATES = new LuigiTemplate.Cache({
user: [
"",
"",
"",
" ",
"%{user_name|h}",
"",
],
loading: [
"",
"",
" ",
"Loading...",
"",
],
error: [
"",
"",
" ",
"Error: %{responseText|h}",
"",
],
});
function reload() {
var btn = $('#reload'),
list = $('#users');
// show loading
btn.toggleClass('disabled').find('.loading').toggleClass('hidden');
list.html(TEMPLATES.run('loading'));
send('test/get_users').always(function() {
btn.toggleClass('disabled').find('.loading').toggleClass('hidden');
list.html('');
}).fail(function(r) {
console.log('get_users failed: ' + r.responseText);
list.html(TEMPLATES.run('error', r));
}).done(function(r) {
list.html($.map(r.users, function(row) {
return TEMPLATES.run('user', $.extend({}, row, {
css: (r.user_id == row.user_id) ? 'active' : '',
}));
}).join(''));
});
// stop event
return false;
}
function set_user(user_id) {
return send('test/set_user', {
user_id: user_id,
}).fail(function(r) {
alert('Error ' + r.responseText);
}).done(function(r) {
// do nothing
});
}
$('#users').on('click', 'a.list-group-item', function() {
var me = $(this);
// update highlight
var last = $('#users .active').removeClass('active');
me.addClass('active');
// show spinner
me.addClass('disabled').find('.loading').toggleClass('hidden');
set_user(me.data('user_id')).always(function() {
// hide spinner
me.removeClass('disabled').find('.loading').toggleClass('hidden');
}).fail(function(r) {
// restore old highlight
me.removeClass('active');
last.addClass('active');
});
// stop event
return false;
});
$('#add-dialog').on('show.bs.modal', function() {
$.each(['name', 'email', 'password'], function(i, id) {
$('#add-' + id).val('');
});
$('#add-role').val('guest');
});
$('#add-confirm').click(function() {
var me = $(this);
if (me.hasClass('disabled'))
return false;
// toggle loading
me.toggleClass('disabled').find('.loading').toggleClass('hidden');
send('test/add_user', {
name: $('#add-name').val(),
email: $('#add-email').val(),
password: $('#add-password').val(),
role: $('#add-role').val(),
active: 't',
}).always(function() {
// toggle loading
me.toggleClass('disabled').find('.loading').toggleClass('hidden');
}).fail(function(r) {
alert('Error ' + r.responseText);
}).done(function(r) {
console.log(r);
reload();
$('#add-dialog').modal('hide');
});
// stop event
return false;
});
$('#login').click(function() {
var me = $(this);
if (me.hasClass('disabled'))
return false;
// toggle loading
me.toggleClass('disabled').find('.loading').toggleClass('hidden');
send('test/login', {
email: $('#login-email').val(),
password: $('#login-password').val(),
}).always(function() {
// toggle loading
me.toggleClass('disabled').find('.loading').toggleClass('hidden');
}).fail(function(r) {
alert('Error ' + r.responseText);
}).done(function(r) {
console.log(r);
});
// stop event
return false;
});
$('#login-user, #login-password').keydown(function(ev) {
if (ev.which == 13) {
setTimeout(function() {
// trigger login
$('#login').click();
}, 10);
// stop event
return false;
}
});
$('#reload').click(reload);
// load users
reload();
});