Skip to content
Snippets Groups Projects
Forked from amiv / Admintool
604 commits behind the upstream repository.
users.tool 2.79 KiB
<div class="users-table-wrapper">
	<table class="table table-hover users-table">
		<thead>
			<tr>
			</tr>
		</thead>
		<tbody>
		</tbody>
	</table>
</div>

<style>
	.users-table-wrapper {
		width: 100%;
		height: 100%;
		overflow: auto;
	}
</style>
<script type="text/javascript">
	var users = {
		showInTable: ['firstname', 'lastname', 'email', 'membership'],
		curUserData: null,
	};

	tools.ui.menu({
		'<span class="glyphicon glyphicon-user" aria-hidden="true"></span>': {
			callback: function() {}
		},
		'<span class="glyphicon glyphicon-arrow-left" aria-hidden="true"></span>': {
			callback: function() {}
		},
		'<span class="users-cur-page" aria-hidden="true">0</span>': {
			callback: function() {}
		},
		'<span class="glyphicon glyphicon-arrow-right" aria-hidden="true"></span>': {
			callback: function() {}
		},
		'<span class="glyphicon glyphicon-search" aria-hidden="true"></span>': {
			callback: function() {}
		}
	});

	function inspectUser() {
		var newUserData = {};
		$('.users-user-edit-table tr').each(function() {
			newUserData[$(this).children('td:nth-child(1)').html()] = $(this).children('td:nth-child(2)').html();
		});
		var changed = false,
			curUserDataChanged = {};
		for (var i in newUserData) {
			if (newUserData[i] != String(curUserData[i])) {
				changed = true;
				curUserDataChanged[i] = newUserData[i];
			}
		}
		if (changed) {
			amivcore.users.PATCH({
				id: curUserData.id,
				header: {
					'If-Match': $('.users-user-edit-table').attr('data-etag')
				},
				data: curUserDataChanged
			}, function(){
				tools.log('User Updated', 's');
				tools.getTool('users');
			});
		}
	}

	function showDetails() {
		amivcore.users.GET({
			id: $(this).attr('data-id')
		}, function(ret) {
			curUserData = ret;
			var tmp = '<table class="table table-hover users-user-edit-table" data-etag="' + ret['_etag'] + '"><tbody>';
			for (var cur in ret)
				if (cur.charAt(0) != '_')
					tmp += '<tr><td>' + cur + '</td><td contenteditable>' + ret[cur] + '</td></tr>'
			tmp += '</tbody></table>';

			tools.modal({
				head: ret.firstname + ' ' + ret.lastname,
				body: tmp,
				button: 'OK',
				success: inspectUser,
				cancel: function() {
					console.log('Canceled');
				}
			});

		});;
	}

	amivcore.users.GET({
		data: {
			//'max_results': '50'
		}
	}, function(ret) {

		if (ret === undefined || ret['_items'].length == 0) {
			tools.log('No Data', 'w');
			return;
		}

		users.showInTable.forEach(function(i) {
			$('.users-table thead tr').append('<th>' + i + '</th>');
		});

		for (var n in ret['_items']) {
			var tmp = '';
			users.showInTable.forEach(function(i) {
				tmp += '<td>' + ret['_items'][n][i] + '</td>';
			});
			$('.users-table tbody').append('<tr data-id="' + ret['_items'][n]['id'] + '">' + tmp + '</tr>');
		}
		$('.users-table tbody tr').click(showDetails);
	});
</script>