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, {
row: row,
}));
}).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
$('#users .active').removeClass('active');
me.addClass('active');
$('#edit-dialog').data('row', me.data('row')).modal('show');
// 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-dialog').on('shown.bs.modal', function() {
$('#add-name').focus();
});
$('#add-name, #add-email, #add-password').keydown(function(ev) {
if (ev.which == 13) {
setTimeout(function() {
$('#add-confirm').click();
}, 10);
// stop event
return false;
}
});
$('#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;
});
$('#edit-dialog').on('show.bs.modal', function() {
var row = $(this).data('row');
$.each({
name: 'user_name',
email: 'email',
role: 'role_name',
}, function(id, col) {
$('#edit-' + id).val(row[col]);
});
});
$('#edit-dialog').on('shown.bs.modal', function() {
$('#edit-name').focus();
});
$('#edit-dialog').on('hide.bs.modal', function() {
// clear highlight
$('#users .active').removeClass('active');
});
$('#edit-name, #edit-email').keydown(function(ev) {
if (ev.which == 13) {
setTimeout(function() {
$('#edit-confirm').click();
}, 10);
// stop event
return false;
}
});
$('#edit-confirm').click(function() {
var me = $(this),
user_id = $('#edit-dialog').data('row').user_id;
if (me.hasClass('disabled'))
return false;
// toggle loading
me.toggleClass('disabled').find('.loading').toggleClass('hidden');
send('test/edit_user', {
user_id: user_id,
name: $('#edit-name').val(),
email: $('#edit-email').val(),
role: $('#edit-role').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);
reload();
$('#edit-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();
});