Skip to content
Snippets Groups Projects
Commit f8a29a55 authored by CupCakeArmy's avatar CupCakeArmy
Browse files

Fixes & Added remove users

parent e162e185
No related branches found
No related tags found
No related merge requests found
<div class="users-table-wrapper"> <div class="users-table-wrapper">
<table class="table table-hover users-table"> <table class="table table-hover users-table">
<thead> <thead>
<tr> <tr>
</tr> </tr>
</thead> </thead>
<tbody> <tbody>
</tbody> </tbody>
</table> </table>
</div> </div>
<script type="text/javascript">
<style> var users = {
.users-table-wrapper { showInTable: ['firstname', 'lastname', 'nethz', 'legi', 'membership'],
width: 100%; curUserData: null,
height: 100%;
overflow: auto; // Page
} page: {
</style> max: Number.MAX_VALUE,
<script type="text/javascript"> cur: function() {
var users = { return parseInt(tools.mem.session.get('curPage'));
showInTable: ['firstname', 'lastname', 'nethz', 'legi', 'membership'], },
curUserData: null, set: function(num) {
num = parseInt(num);
// Page if (num > 0 && num < users.page.max + 1)
page: { tools.mem.session.set('curPage', num);
max: Number.MAX_VALUE, $('.users-cur-page-cont').html(users.page.cur());
cur: function() { users.get();
return parseInt(tools.mem.session.get('curPage')); },
}, inc: function() {
set: function(num) { users.page.set(users.page.cur() + 1);
num = parseInt(num); },
if (num > 0 && num < users.page.max + 1) dec: function() {
tools.mem.session.set('curPage', num); users.page.set(users.page.cur() - 1);
$('.users-cur-page-cont').html(users.page.cur()); }
users.get(); },
},
inc: function() { //Sorting
users.page.set(users.page.cur() + 1); sort: {
}, cur: function() {
dec: function() { return tools.mem.session.get('curSort');
users.page.set(users.page.cur() - 1); },
} set: function(sort) {
}, tools.mem.session.set('curSort', sort);
users.get();
//Sorting },
sort: { inv: function() {
cur: function() { var tmp = users.sort.cur();
return tools.mem.session.get('curSort'); if (tmp.charAt(0) == '-')
}, users.sort.set(tmp.slice(1));
set: function(sort) { else
tools.mem.session.set('curSort', sort); users.sort.set('-' + tmp);
users.get(); }
}, },
inv: function() {
var tmp = users.sort.cur(); //Searching
if (tmp.charAt(0) == '-') search: {
users.sort.set(tmp.slice(1)); cur: function() {
else return tools.mem.session.get('search');
users.sort.set('-' + tmp); },
} set: function(dom, val) {
}, tools.mem.session.set('search', dom + '==' + val);
users.page.set(1);
//Searching },
search: { clr: function() {
cur: function() { tools.mem.session.set('search', '');
return tools.mem.session.get('search'); users.page.set(1);
}, },
set: function(dom, val) { },
tools.mem.session.set('search', dom + '==' + val);
users.page.set(1); // Get users
}, get: function() {
clr: function() { amivcore.users.GET({
tools.mem.session.set('search', ''); data: {
users.page.set(1); 'max_results': '50',
}, page: users.page.cur(),
}, sort: users.sort.cur(),
where: users.search.cur(),
// Get users }
get: function() { }, function(ret) {
amivcore.users.GET({
data: { if (ret === undefined || ret['_items'].length == 0) {
'max_results': '50', tools.log('No Data', 'w');
page: users.page.cur(), return;
sort: users.sort.cur(), }
where: users.search.cur(),
} users.meta = ret['_meta'];
}, function(ret) { users.page.max = Math.ceil(users.meta.total / users.meta.max_results);
$('.users-page-max-cont').html(users.page.max);
if (ret === undefined || ret['_items'].length == 0) {
tools.log('No Data', 'w'); // Clear table from previous contentent
return; $('.users-table thead tr, .users-table tbody').html('');
}
users.showInTable.forEach(function(i) {
users.meta = ret['_meta']; $('.users-table thead tr').append('<th>' + i + '</th>');
users.page.max = Math.ceil(users.meta.total / users.meta.max_results); });
$('.users-page-max-cont').html(users.page.max);
for (var n in ret['_items']) {
// Clear table from previous contentent var tmp = '';
$('.users-table thead tr, .users-table tbody').html(''); users.showInTable.forEach(function(i) {
tmp += '<td>' + ret['_items'][n][i] + '</td>';
users.showInTable.forEach(function(i) { });
$('.users-table thead tr').append('<th>' + i + '</th>'); $('.users-table tbody').append('<tr data-id="' + ret['_items'][n]['id'] + '">' + tmp + '</tr>');
}); }
$('.users-table tbody tr').click(users.showDetails);
for (var n in ret['_items']) { });
var tmp = ''; },
users.showInTable.forEach(function(i) {
tmp += '<td>' + ret['_items'][n][i] + '</td>'; // Make Modal with editable table data
}); showDetails: function() {
$('.users-table tbody').append('<tr data-id="' + ret['_items'][n]['id'] + '">' + tmp + '</tr>'); amivcore.users.GET({
} id: $(this).attr('data-id')
$('.users-table tbody tr').click(users.showDetails); }, function(ret) {
}); curUserData = ret;
}, var tmp = '<table class="table table-hover users-user-edit-table" data-etag="' + ret['_etag'] + '" data-id="' + ret.id + '"><tbody>';
for (var cur in ret)
// Make Modal with editable table data if (cur.charAt(0) != '_')
showDetails: function() { tmp += '<tr><td>' + cur + '</td><td contenteditable>' + ret[cur] + '</td></tr>'
amivcore.users.GET({ tmp += '</tbody></table>';
id: $(this).attr('data-id')
}, function(ret) { tools.modal({
curUserData = ret; head: ret.firstname + ' ' + ret.lastname,
var tmp = '<table class="table table-hover users-user-edit-table" data-etag="' + ret['_etag'] + '"><tbody>'; body: tmp,
for (var cur in ret) button: {
if (cur.charAt(0) != '_') 'Delete': {
tmp += '<tr><td>' + cur + '</td><td contenteditable>' + ret[cur] + '</td></tr>' type: 'danger',
tmp += '</tbody></table>'; callback: function() {
if (confirm('Fo\' shizzle my nizzle? U fo\' real?'))
tools.modal({ amivcore.users.DELETE({
head: ret.firstname + ' ' + ret.lastname, id: $('.users-user-edit-table').first().attr('data-id'),
body: tmp, header: {
button: { 'If-Match': $('.users-user-edit-table').attr('data-etag')
'Update': { },
type: 'success', }, function(ret) {
close: true, if (ret === undefined) {
callback: users.inspectUser, tools.log('User successfully deleted', 's');
} users.get();
} tools.modalClose();
}); } else {
tools.log('Error', 'e');
});; }
}, });
}
// Check wether changes were maid and saves it in that case },
inspectUser: function() { 'Update': {
var newUserData = {}; type: 'success',
$('.users-user-edit-table tr').each(function() { close: true,
newUserData[$(this).children('td:nth-child(1)').html()] = $(this).children('td:nth-child(2)').html(); callback: users.inspectUser,
}); }
var changed = false, }
curUserDataChanged = {}; });
for (var i in newUserData) {
if (newUserData[i] != String(curUserData[i])) { });
changed = true; },
curUserDataChanged[i] = newUserData[i];
} // Check wether changes were maid and saves it in that case
} inspectUser: function() {
if (changed) { var newUserData = {};
amivcore.users.PATCH({ $('.users-user-edit-table tr').each(function() {
id: curUserData.id, newUserData[$(this).children('td:nth-child(1)').html()] = $(this).children('td:nth-child(2)').html();
header: { });
'If-Match': $('.users-user-edit-table').attr('data-etag') var changed = false,
}, curUserDataChanged = {};
data: curUserDataChanged for (var i in newUserData) {
}, function() { if (newUserData[i] != String(curUserData[i])) {
tools.log('User Updated', 's'); changed = true;
users.get(); curUserDataChanged[i] = newUserData[i];
}); }
} }
}, if (changed) {
amivcore.users.PATCH({
//Make new user id: curUserData.id,
add: function() { header: {
var tmp = '<table class="table table-hover table-bordered users-user-add-table"><tbody>', 'If-Match': $('.users-user-edit-table').attr('data-etag')
reqFields = amivcore.getRequiredFields('users', 'POST'); },
for (var reqField in reqFields) data: curUserDataChanged
tmp += '<tr><td>' + reqField + '</td><td contenteditable></td></tr>' }, function() {
tmp += '</tbody></table>'; tools.log('User Updated', 's');
tools.modal({ users.get();
head: 'New User', });
body: tmp, }
button: { },
'Add': {
type: 'success', //Make new user
close: true, add: function() {
callback: function() { var tmp = '<div class="row users-user-add-form"><div class="form-group col-xs-6"><label for="users-fn">Firstname:</label><input type="text" class="form-control" name="firstname" id="users-fn"></div>' +
var newUserData = {}; '<div class="form-group col-xs-6"><label for="users-ln">Lastname:</label><input type="text" class="form-control" id="users-ln" name="lastname"></div>' +
$('.users-user-add-table tr').each(function() { '<div class="form-group"><label for="users-email">E-Mail:</label><input type="email" class="form-control" id="users-email" name="email"></div>' +
newUserData[$(this).children('td:nth-child(1)').html()] = $(this).children('td:nth-child(2)').html(); '<div class="form-group col-xs-6"><label for="users-membership">Membership:</label><select class="form-control" id="users-membership" name="membership"><option>regular</option><option>honorary</option><option>extraordinary</option></select></div>' +
}); '<div class="form-group col-xs-6"><label for="users-gender">Gender:</label><select class="form-control" id="users-gender" name="gender"><option>male</option><option>female</option></select></div>' +
amivcore.users.POST({ '</div>';
data: newUserData tools.modal({
}, function(ret) { head: 'Spawn new AMIV slave',
if (!ret.hasOwnProperty('_status') || ret['_status'] != 'OK') body: tmp,
tools.log(JSON.stringify(ret.responseJSON['_issues']), 'e'); button: {
else { 'Add': {
tools.log('User Added', 's'); type: 'success',
users.get(); callback: function() {
} var newUserData = {};
}); $('.users-user-add-form input, .users-user-add-form select').each(function() {
} newUserData[$(this).attr('name')] = $(this).val();
} });
} amivcore.users.POST({
}); data: newUserData
} }, function(ret) {
}; if (!ret.hasOwnProperty('_status') || ret['_status'] != 'OK')
tools.log(JSON.stringify(ret.responseJSON['_issues']), 'e');
// Setup Menu else {
tools.ui.menu({ tools.modalClose();
'<span class="glyphicon glyphicon-user" aria-hidden="true" data-toggle="tooltip" data-placement="bottom" title="Create User"></span>': { tools.log('User Added', 's');
callback: users.add users.get();
}, }
'<span class="glyphicon glyphicon-arrow-left" aria-hidden="true" data-toggle="tooltip" data-placement="bottom" title="Previous Page"></span>': { });
callback: users.page.dec }
}, }
'<span data-toggle="tooltip" data-placement="bottom" title="Set Page"><span class="users-cur-page-cont" aria-hidden="true"></span> / <span class="users-page-max-cont" aria-hidden="true"></span></span>': { }
callback: function() { });
tools.modal({ }
head: 'Go To Page:', };
body: '<div class="form-group"><input type="number" value="' + users.page.cur() + '" class="form-control users-go-page"></div>',
button: { // Setup Menu
'Go': { tools.ui.menu({
type: 'success', '<span class="glyphicon glyphicon-plus" aria-hidden="true" data-toggle="tooltip" data-placement="bottom" title="Create User"></span>': {
close: true, callback: users.add
callback: function() { },
users.page.set($('.users-go-page').val()); '<span class="glyphicon glyphicon-arrow-left" aria-hidden="true" data-toggle="tooltip" data-placement="bottom" title="Previous Page"></span>': {
}, callback: users.page.dec
} },
} '<span data-toggle="tooltip" data-placement="bottom" title="Set Page"><span class="users-cur-page-cont" aria-hidden="true"></span> / <span class="users-page-max-cont" aria-hidden="true"></span></span>': {
}); callback: function() {
} tools.modal({
}, head: 'Go To Page:',
'<span class="glyphicon glyphicon-arrow-right" aria-hidden="true" data-toggle="tooltip" data-placement="bottom" title="Next Page"></span>': { body: '<div class="form-group"><input type="number" value="' + users.page.cur() + '" class="form-control users-go-page"></div>',
callback: users.page.inc button: {
}, 'Go': {
'<span class="glyphicon glyphicon-sort" aria-hidden="true" data-toggle="tooltip" data-placement="bottom" title="Sort"></span>': { type: 'success',
callback: function() { close: true,
var tmp = '<div class="form-group"><select class="form-control users-sort-select">'; callback: function() {
var cur = users.sort.cur(); users.page.set($('.users-go-page').val());
['id', 'firstname', 'lastname', 'membership', 'nethz'].forEach(function(i) { },
tmp += '<option value="' + i + '"' + ((i == cur) ? ' selected' : '') + '>&#8673; ' + i + '</option>'; }
tmp += '<option value="-' + i + '"' + (('-' + i == cur) ? ' selected' : '') + '>&#8675; ' + i + '</option>'; }
}); });
tmp += '</select></div>'; }
tools.modal({ },
head: 'Sort', '<span class="glyphicon glyphicon-arrow-right" aria-hidden="true" data-toggle="tooltip" data-placement="bottom" title="Next Page"></span>': {
body: tmp, callback: users.page.inc
button: { },
'Sort': { '<span class="glyphicon glyphicon-sort" aria-hidden="true" data-toggle="tooltip" data-placement="bottom" title="Sort"></span>': {
type: 'success', callback: function() {
close: true, var tmp = '<div class="form-group"><select class="form-control users-sort-select">';
callback: function() { var cur = users.sort.cur();
users.sort.set($('.users-sort-select').val()); ['id', 'firstname', 'lastname', 'membership', 'nethz'].forEach(function(i) {
} tmp += '<option value="' + i + '"' + ((i == cur) ? ' selected' : '') + '>&#8673; ' + i + '</option>';
} tmp += '<option value="-' + i + '"' + (('-' + i == cur) ? ' selected' : '') + '>&#8675; ' + i + '</option>';
} });
tmp += '</select></div>';
}); tools.modal({
} head: 'Sort',
}, body: tmp,
'<span class="glyphicon glyphicon-search" aria-hidden="true" data-toggle="tooltip" data-placement="bottom" title="Search"></span>': { button: {
callback: function() { 'Sort': {
var tmp = '<div class="form-group"><select class="form-control users-search-select">'; type: 'success',
var cur = users.search.cur(); close: true,
if (cur === null || cur == '') callback: function() {
cur = ''; users.sort.set($('.users-sort-select').val());
else }
cur = cur.split('==')[1]; }
['id', 'firstname', 'lastname'].forEach(function(i) { }
tmp += '<option value="' + i + '"' + ((i == cur) ? ' selected' : '') + '>' + i + '</option>';
}); });
tmp += '</select><br><input type="text" value="' + cur + '" class="form-control users-search-val"></div>'; }
tools.modal({ },
head: 'Search', '<span class="glyphicon glyphicon-search" aria-hidden="true" data-toggle="tooltip" data-placement="bottom" title="Search"></span>': {
body: tmp, callback: function() {
button: { var tmp = '<div class="form-group"><select class="form-control users-search-select">';
'Clear': { var cur = users.search.cur();
type: 'warning', if (cur === null || cur == '')
close: true, cur = '';
callback: users.search.clr, else
}, cur = cur.split('==')[1];
'Search': { ['id', 'firstname', 'lastname'].forEach(function(i) {
type: 'success', tmp += '<option value="' + i + '"' + ((i == cur) ? ' selected' : '') + '>' + i + '</option>';
close: true, });
callback: function() { tmp += '</select><br><input type="text" value="' + cur + '" class="form-control users-search-val"></div>';
users.search.set($('.users-search-select').val(), $('.users-search-val').val()); tools.modal({
} head: 'Search',
}, body: tmp,
} button: {
}) 'Clear': {
} type: 'warning',
} close: true,
}); callback: users.search.clr,
},
//Set Toolpit 'Search': {
$('[data-toggle="tooltip"]').tooltip() type: 'success',
close: true,
// Set Initail Page and get first users callback: function() {
if (users.page.cur() === null || isNaN(users.page.cur())) users.search.set($('.users-search-select').val(), $('.users-search-val').val());
users.page.set(1); }
else },
users.page.set(users.page.cur()); }
</script> })
}
}
});
//Set Toolpit
$('[data-toggle="tooltip"]').tooltip()
// Set Initail Page and get first users
if (users.page.cur() === null || isNaN(users.page.cur()))
users.page.set(1);
else
users.page.set(users.page.cur());
</script>
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment