123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114 |
- /*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: */
|