114 lignes
2,8 Kio
JavaScript
114 lignes
2,8 Kio
JavaScript
/*global $, poll_job*/
|
|
|
|
var form = {
|
|
MAX_MINS: 5*60, // 5 hours
|
|
get_values: function() {
|
|
var name = $('#name').val();
|
|
var start = $('#from-date').datepicker('getDate');
|
|
if(start !== null) {
|
|
start.setHours($('#from-hour').val());
|
|
start.setMinutes($('#from-min').val());
|
|
}
|
|
var end = $('#to-date').datepicker('getDate');
|
|
if(end !== null) {
|
|
end.setHours($('#to-hour').val());
|
|
end.setMinutes($('#to-min').val());
|
|
}
|
|
return { name: name, start: start, end: end };
|
|
},
|
|
check: function() {
|
|
"use strict";
|
|
var errs = [];
|
|
function err(msg, element) {
|
|
errs.unshift({ msg: msg, el: element});
|
|
}
|
|
var v = form.get_values();
|
|
if(v.val === '') {
|
|
err("Nome mancante", $('#name'));
|
|
}
|
|
if(v.start === null) {
|
|
err("Start unspecified");
|
|
}
|
|
if(v.end === null) {
|
|
err("End unspecified");
|
|
}
|
|
if(v.end <= v.start) {
|
|
err("Inverted from/to ?");
|
|
}
|
|
if( (v.end - v.start) / (1000*60) > form.MAX_MINS) {
|
|
err("Too long");
|
|
}
|
|
return errs;
|
|
}
|
|
};
|
|
|
|
function click(widget) {
|
|
/*global RecAPI*/
|
|
var v = form.get_values();
|
|
RecAPI.fullcreate(v.name, v.start, v.end)
|
|
.done(function(res_create) {
|
|
console.log("ok, created");
|
|
RecAPI.generate(res_create.rec)
|
|
.done(function(res_gen) {
|
|
console.log("ok, generated", res_create);
|
|
//TODO: start polling
|
|
$('#download').thebutton('option', 'state', 'Wait');
|
|
poll_job(res_gen.job_id, function(data) {
|
|
if(data.job_status !== 'DONE') {
|
|
console.error("Job failed!", data);
|
|
widget.thebutton("option", "state", 'Failed');
|
|
widget.thebutton("option", "errormsg", data.exception);
|
|
} else {
|
|
widget.thebutton("option", "filename", res_gen.result);
|
|
widget.thebutton("option", "state", 'Download');
|
|
}
|
|
});
|
|
})
|
|
.fail(function() {
|
|
console.error("Oh shit, generate failed", res_create.rec);
|
|
});
|
|
})
|
|
.fail(function() {
|
|
console.error("Oh shit, fullcreate failed");
|
|
});
|
|
}
|
|
|
|
$(function() {
|
|
"use strict";
|
|
$( "#from-date" ).datepicker({
|
|
defaultDate: "+0d",
|
|
changeMonth: true,
|
|
numberOfMonths: 1,
|
|
maxDate: new Date(),
|
|
onClose: function( selectedDate ) {
|
|
if($('#to-date').val() === '') {
|
|
$('#to-date').datepicker("setDate", selectedDate);
|
|
}
|
|
$("#to-date").datepicker("option", "minDate", selectedDate);
|
|
}
|
|
});
|
|
$( "#to-date" ).datepicker({
|
|
defaultDate: "+0d",
|
|
changeMonth: true,
|
|
numberOfMonths: 1,
|
|
maxDate: new Date(),
|
|
onClose: function( selectedDate ) {
|
|
$("#from-date").datepicker("option", "maxDate", selectedDate);
|
|
}
|
|
});
|
|
$('#to-date, #from-date').datepicker($.datepicker.regional.it);
|
|
$('#download').thebutton();
|
|
|
|
$('#download').click(function() {
|
|
if(!$('#download').hasClass('rec-run')) {
|
|
return;
|
|
}
|
|
var check = form.check();
|
|
if(check.length > 0) {
|
|
console.log("Errors in form", check);
|
|
return;
|
|
}
|
|
click($('#download'));
|
|
});
|
|
});
|
|
/* vim: set ts=2 sw=2 noet fdm=indent: */
|