Skip to content
Snippets Groups Projects
Commit cd6f346c authored by degygii's avatar degygii
Browse files

improved usability of events tool

parent 15fdc250
No related branches found
No related tags found
No related merge requests found
......@@ -11,7 +11,7 @@
var core = {
// Important vars n' stuff
lib: {
//api_url: 'https://amiv-apidev.vsos.ethz.ch',
// api_url: 'https://amiv-apidev.vsos.ethz.ch',
api_url: 'http://192.168.1.100',
spec_url: 'lib/amiv/spec.json',
//spec_url: 'https://nicco.io/amiv/docs/spec.json',
......@@ -62,7 +62,7 @@
},
'datetime': function(dt) {
var tmp = new Date(dt);
return new Date(dt).toJSON();
return new Date(dt).toISOString().split('.')[0]+"Z";
}
}
}
......
This diff is collapsed.
......@@ -18,11 +18,11 @@
<!-- modal for creating new events, easier to do it this way than js-->
<div class="modal fade" id="event-modal" role="dialog">
<div class="modal fade" id="event-modal" role="dialog" data-etag="">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal">&times;</button>
<button type="button" class="close" >&times;</button>
<h4 class="modal-title" id="event-modal-title"></h4>
</div>
<div class="modal-body">
......@@ -62,6 +62,28 @@
</span>
</div>
</div>
<div class="form-group">
<label for="time_start">Start Advertising</label>
<div class="input-group date" id="time_advertising_start">
<input type="text" class="form-control" />
<span class="input-group-addon">
<span class="glyphicon-calendar glyphicon"></span>
</span>
</div>
</div>
<!-- </div> -->
<!-- <div class="col-md-3"> -->
<div class="form-group">
<label for="time_end">End Advertising</label>
<div class="input-group date" id="time_advertising_end">
<input type="text" class="form-control" />
<span class="input-group-addon">
<span class="glyphicon-calendar glyphicon"></span>
</span>
</div>
</div>
<!-- </div> -->
<!-- </div> -->
......@@ -133,6 +155,11 @@
</label>
</div>
<div class="form-group">
<label for="price">Priority [1-10]</label>
<input type="number" class="form-control" min="0" id="priority" value=5></input>
</div>
<div class="form-group">
<label for="description_de">Additional Fields (JSON schema)</label>
<textarea type="text" class="form-control" rows="3" id="additional_fields"></textarea>
......@@ -193,6 +220,7 @@
<script type="text/javascript">
var events = {
somethingChanged: false,
showInTable: ['title_de', 'time_start', 'show_website', 'spots', 'signup_count'],
curEventData: null,
......@@ -280,7 +308,7 @@
events.showInTable.forEach(function(i) {
tmp += '<td>' + ret['_items'][n][i] + '</td>';
});
$('.events-table tbody').append('<tr data-id="' + ret['_items'][n]['id'] + '">' + tmp + '</tr>');
$('.events-table tbody').append('<tr data-id="' + ret['_items'][n]['_id'] + '">' + tmp + '</tr>');
}
$('.events-table tbody tr').click(events.showDetails);
$('#wheel-logo').css('transform', 'rotate(0deg)');
......@@ -297,12 +325,41 @@
//show details of an event in a modal
//TODO: fill the more beautiful event-modal
showDetails: function() {
somethingChanged = false;
console.log($(this).attr('data-id'));
amivcore.events.GET({
id: $(this).attr('data-id')
}, function(ret) {
curEventData = ret;
console.log(curEventData);
$("#event-modal-title").val("edit event");
$("#event-modal-title").text("Edit Event");
$('#event-modal-footer').html('<button type="button" class="btn btn-default" data-dismiss="modal">Close</button><button type="button" class="btn btn-primary" onclick="events.inspectEvent()">update</button><button type="button" class="btn btn-danger" onclick="events.deleteEvent(' + etag +')">Delete</button>');
var etag = ret['_etag'];
$('#event-modal').attr('data-etag', etag);
//fill fields of the form with content that has the same ID
$('#event-modal-form').find('input, textarea').val(function (index, value) {
return ret[this.id];
});
//array of elements that are represented by checkboxes
var booleanEventData = ['signup-required', 'no-signup-limit', 'allow_email_signup', 'show_website', 'show_infoscreen', 'show_announce'];
for (i = 0; i < booleanEventData.length; i++){
$("#" + booleanEventData[i]).prop('checked', ret[booleanEventData[i]]);
}
//set the datepickers
$('#event-modal').modal('show');
var dateEventData = ['time_start', 'time_end', 'time_register_start', 'time_register_end', 'time_advertising_start', 'time_advertising_end'];
for (i = 0; i < dateEventData.length; i++){
if (ret[dateEventData[i]] != null){
$('#' + dateEventData[i]).data("DateTimePicker").date(new Date(ret[dateEventData[i]]));
}
}
// var tmp = '<table class="table table-hover events-edit-table" data-etag="' + ret['_etag'] + '"><tbody>';
// for (var cur in ret) {
// if (cur.charAt(0) != '_' && cur != 'signups')
......@@ -352,6 +409,26 @@
});
},
deleteEvent: function(etag) {
console.log('delete triggered');
if (confirm("Delete " + curEventData.title_de + "?") == true) {
amivcore.events.DELETE({
id: curEventData.id,
header: {
// 'If-Match': $('#event-modal').attr('data-etag')
'If-Match': etag
}
}, function(response) {
console.log(response);
});
events.get();
tools.log('Event deleted', 'w');
tools.modalClose();
} else {
tools.log('Event not Deleted', 'i');
}
},
/*showDetails: function() {
amivcore.events.GET({
id: $(this).attr('data-id')
......@@ -437,12 +514,18 @@
newEvent["data"]["catchphrase_de"] = setNullIfEmpty($("#catchphrase_de").val());
if (!($("#time_start").data("DateTimePicker").date() == null)) {
//for now, because the api rejects .toISOString format
newEvent["data"]["time_start"] = $("#time_start").data("DateTimePicker").date().format("%Y-%m-%dT%H:%M:%SZ");
newEvent["data"]["time_start"] = $("#time_start").data("DateTimePicker").date();
}
if (!($("#time_end").data("DateTimePicker").date() == null)) {
//for now, because the api rejects .toISOString format
newEvent["data"]["time_end"] = $("#time_end").data("DateTimePicker").date().format("%Y-%m-%dT%H:%M:%SZ");
newEvent["data"]["time_end"] = $("#time_end").data("DateTimePicker").date();
}
if (!($("#time_advertising_start").data("DateTimePicker").date() == null)) {
newEvent["data"]["time_advertising_start"] = $("#time_advertising_start").data("DateTimePicker").date();
}
if (!($("#time_end").data("DateTimePicker").date() == null)) {
newEvent["data"]["time_advertising_end"] = $("#time_advertising_end").data("DateTimePicker").date();
}
if (!$("#signup-required").is(":checked")) {
......@@ -457,15 +540,13 @@
}
if (!($("#time_register_start").data("DateTimePicker").date() == null)) {
//for now, because the api rejects .toISOString format
newEvent["data"]["time_register_start"] = $("#time_register_start").data("DateTimePicker").date().format("%Y-%m-%dT%H:%M:%SZ");
newEvent["data"]["time_register_start"] = $("#time_register_start").data("DateTimePicker").date();
} else {
tools.log('field "Start of Registration" required', 'e');
return;
}
if (!($("#time_register_end").data("DateTimePicker").date() == null)) {
//for now, because the api rejects .toISOString format
newEvent["data"]["time_register_end"] = $("#time_register_end").data("DateTimePicker").date().format("%Y-%m-%dT%H:%M:%SZ");
newEvent["data"]["time_register_end"] = $("#time_register_end").data("DateTimePicker").date();
} else {
tools.log('field "End of Registration" required', 'e');
return;
......@@ -485,6 +566,7 @@
newEvent["data"]["show_website"] = $("#show_website").is(':checked');
newEvent["data"]["show_infoscreen"] = $("#show_infoscreen").is(':checked');
newEvent["data"]["show_announce"] = $("#show_announce").is(':checked');
newEvent["data"]["priority"] = (parseInt($("#priority").val()));
newEvent["data"]["additional_fields"] = setNullIfEmpty($("#additional_fields").val());
newEvent["data"]["title_en"] = setNullIfEmpty($("#title_en").val());
......@@ -511,18 +593,35 @@
//setting up the date time picker
$(function() {
$('#time_start').datetimepicker({
locale: "de"
locale: "de",
sideBySide: true
});
$('#time_end').datetimepicker({
locale: "de",
useCurrent: false //Important! See issue #1075aa
useCurrent: false, //Important! See issue #1075aa
sideBySide: true
});
$('#time_advertising_start').datetimepicker({
locale: "de",
sideBySide: true
});
$('#time_advertising_end').datetimepicker({
locale: "de",
useCurrent: false, //Important! See issue #1075aa
sideBySide: true
});
$('#time_register_start').datetimepicker({
locale: "de"
locale: "de",
sideBySide: true
});
$('#time_register_end').datetimepicker({
locale: "de",
useCurrent: false //Important! See issue #107534
useCurrent: false, //Important! See issue #107534
sideBySide: true
});
$("#time_register_start").on("dp.change", function(e) {
$('#time_register_end').data("DateTimePicker").minDate(e.date);
......@@ -530,6 +629,12 @@
$("#time_register_end").on("dp.change", function(e) {
$('#time_register_start').data("DateTimePicker").maxDate(e.date);
});
$("#time_advertising_start").on("dp.change", function(e) {
$('#time_advertising_end').data("DateTimePicker").minDate(e.date);
});
$("#time_advertising_end").on("dp.change", function(e) {
$('#time_advertising_start').data("DateTimePicker").maxDate(e.date);
});
$("#time_start").on("dp.change", function(e) {
$('#time_end').data("DateTimePicker").minDate(e.date);
});
......@@ -584,7 +689,7 @@
callback: function() {
var tmp = '<div class="form-group"><select class="form-control events-sort-select">';
var cur = events.sort.cur();
['id', 'title_de', 'description_de', 'time_start', 'time_register_start', 'time_end', 'time_register_end', 'show_website', 'show_announce', 'show_infoscreen', 'price', '_updated', 'location'].forEach(function(i) {
['_id', 'title_de', 'description_de', 'time_start', 'time_register_start', 'time_end', 'time_register_end', 'show_website', 'show_announce', 'show_infoscreen', 'price', '_updated', 'location'].forEach(function(i) {
tmp += '<option value="' + i + '"' + ((i == cur) ? ' selected' : '') + '>&#8673; ' + i + '</option>';
tmp += '<option value="-' + i + '"' + (('-' + i == cur) ? ' selected' : '') + '>&#8675; ' + i + '</option>';
});
......@@ -613,7 +718,7 @@
cur = '';
else
cur = cur.split('==')[1];
['id', 'title_de', 'description_de', 'title_en', 'description_en', 'time_start', 'time_register_start', 'time_end', 'time_register_end', 'show_website', 'show_announce', 'show_infoscreen', 'price', '_updated', 'location']
['_id', 'title_de', 'description_de', 'title_en', 'description_en', 'time_start', 'time_register_start', 'time_end', 'time_register_end', 'show_website', 'show_announce', 'show_infoscreen', 'price', '_updated', 'location']
.forEach(
function(i) {
tmp += '<option value="' + i + '"' + ((i == cur) ? ' selected' : '') + '>' + i + '</option>';
......@@ -648,6 +753,10 @@
$(document).ready(function() {
$('[data-toggle="tooltip"]').tooltip();
$('#event-modal-form').on('keyup change', 'input, select, textarea, span ', function(){
console.log('changed shit');
events.somethingChanged = true;
});
});
function setNullIfEmpty(formData) {
......
......@@ -78,7 +78,7 @@
where: groups.search.cur(),
}
}, function(ret) {
console.log(ret);
if (ret === undefined || ret['_items'].length == 0) {
tools.log('No Data', 'w');
return;
......@@ -100,7 +100,7 @@
groups.showInTable.forEach(function(i) {
tmp += '<td>' + ret['_items'][n][i] + '</td>';
});
$('.groups-table tbody').append('<tr data-id="' + ret['_items'][n]['id'] + '">' + tmp + '</tr>');
$('.groups-table tbody').append('<tr data-id="' + ret['_items'][n]['_id'] + '">' + tmp + '</tr>');
}
$('.groups-table tbody tr').click(groups.showDetails);
});
......@@ -114,7 +114,7 @@
console.log(ret);
curUserData = ret;
var tmp = '<div class="groups-edit-cont" data-etag="' + ret['_etag'] + '" data-id="' + ret['id'] + '">';
var tmp = '<div class="groups-edit-cont" data-etag="' + ret['_etag'] + '" data-id="' + ret['_id'] + '">';
for (var cur in ret)
if (cur.charAt(0) != '_')
if (cur == 'user_subscribers') {
......@@ -236,7 +236,7 @@
$('.groups-user-add-form input').each(function() {
newUserData[$(this).attr('name')] = $(this).val();
});
newUserData['moderator_id'] = ret['_items'][0].id;
newUserData['moderator_id'] = ret['_items'][0]['_id'];
console.log(newUserData);
amivcore.groups.POST({
data: newUserData
......
......@@ -99,7 +99,7 @@
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').append('<tr data-id="' + ret['_items'][n]['_id'] + '">' + tmp + '</tr>');
}
$('.users-table tbody tr').click(users.showDetails);
});
......@@ -249,7 +249,7 @@
callback: function() {
var tmp = '<div class="form-group"><select class="form-control users-sort-select">';
var cur = users.sort.cur();
['id', 'firstname', 'lastname', 'membership', 'nethz'].forEach(function(i) {
['_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>';
});
......@@ -278,7 +278,7 @@
cur = '';
else
cur = cur.split('==')[1];
['id', 'firstname', 'lastname'].forEach(function(i) {
['_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>';
......
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