console.log("Loading..."); function trx_startbut( code ) { return "startbutton-"+code; } function trx_stopbut( code ) { return "stopbutton-"+code; } function trx_downbut( code ) { return "downloadbutton-"+code; } function trx_endbut( code ) { return "endbutton-"+code; } function trx_logarea( code ) { return "logarea-"+code; } function rs_button( code ) { return "button"+code; } function rs_trxarea( code ) { return "recarea-"+code; } function rs_trxname( code ) { return "name"; } function rs_buttonarea( code ) { return "butarea-"+code; } function rs_inputstart( code ) { return "starttime"; } function rs_inputend( code ) { return "endtime"; } function rs_formid(code) { return "form-"+code; } function rs_dellink(code) { return "dellink-"+code;} function rs_id(code) { return code; } var txt_start = "Inizia"; var txt_stop = "Ferma"; var txt_download = "Scarica"; var srvaddr = "/"; var almostone = false; var noplusbotton = true; var rec_name_default = ""; /* TODO: cambiare logica Quando premo il primo tasto, faccio la crazione, per ogni altro pulsante, faccio solo e sempre UPDATE */ /** * Perform Ajax async loading **/ function newformstr ( recid , butflag=false ) { var formid = rs_formid( recid ); var str = "
"; if (butflag) { str = str + ""; str = str + ""; str = str + ""; str = str + ""; } str = str + ""; str = str + ""; str = str + ""; str = str + ""; if (! butflag) { str = str + ""; } /* str = str + ""; str = str + ""; str = str + " "; */ str = str + "
"; return str; } /** * GetActive Recs **/ function rec_active( recid ) { dataString = ""; var request = RecAjax("search", dataString); request.done( function(data) { $.each(data, function(key, val) { console.log("Key " + key + " > VAL " + val ); $("#"+trx_logarea( recid )).append( "Key " + key + " > VAL " + val + "
" ); }); console.log("Req OK: "+ data); // console.log("request"+ req); ChangeState(recid, trx_downbut(recid) , trx_endbut(recid)); }); } /** * New record **/ function rec_new( ) { var myDate = new Date() console.log("New ID "+ myDate.getTime()); var recid = "rec-"+ myDate.getTime(); console.log("[rec_new] New Rec " + recid); $("#buttonscontainer").append( "
" ); $("#"+rs_trxarea(recid)).append( "
" ); console.log("[rec_new"+recid+"] add div (TRXArea, ButtonArea) ok " ); var formid = rs_formid( recid ); var str = newformstr(recid, butflag=true); $("#"+rs_buttonarea(recid)).append( str ); $("#"+trx_stopbut(recid)).hide(); $("#"+trx_downbut(recid)).hide(); $("#"+trx_endbut(recid)).hide(); console.log("[rec_new "+recid+"] Form OK"); $("#"+rs_buttonarea(recid)).append( "
cancella
" ); // INSERT AND POPULATE BUTTON AREA $("#"+rs_trxarea(recid)).append( "
Nuova trasmissione
" ); // Bind the Delete Links $("#"+rs_dellink(recid)).click(function(){ console.log("Remove " + rs_trxarea(recid) + "[ID"+recid+"]"); // $("#"+rs_trxarea(recid)).remove(); recDelete (recid,rs_trxarea(recid)); }); // FORM SUBMIT: THE REC IS STOPPEND AND MUST BE PROCESSED $("#"+formid).submit(function(event){ // Immediately, mark the end time (stop action) ChangeState(recid, trx_downbut(recid) , trx_endbut(recid)); // Force a Name while (true) { if ( $("#"+rs_trxname(recid)).val() == "" ) { var tmpname = prompt("Nessun nome di trasmissione!!!"); $("#"+rs_trxname(recid)).val(tmpname); $("#"+trx_logarea(recid)).append("Titolo: "+ tmpname +"
"); } else { break; } } event.preventDefault(); // Update data (send to server) in order to save some information recUpdate(recid); recStart(recid); }); // End of form SUBMIT // Bind the STOP button $("#"+trx_stopbut(recid)).click( function(event){ event.preventDefault(); ChangeState(recid, trx_stopbut(recid) , trx_downbut(recid)); recUpdate(recid); }); // End of STOP button // Bind the START button $("#"+trx_startbut(recid)).click( function(event){ // Immediately, mark the start time (start action) and send it to Server ChangeState(recid, trx_startbut(recid) , trx_stopbut(recid)); event.preventDefault(); recNew( recid ); }); // End of START button console.log("New form has been built."); } /* Delete Record */ function recDelete ( recid, targetarea ) { var formid = rs_formid( recid ); var dataString = "recid="+recid console.log("Del rec: "+dataString); var req_del = RecAjax("delete", dataString); req_del.done (function(data) { $.each(data, function(del_key, del_val) { console.log("K:V " + del_key +":"+del_val ); if (del_key == "message") { $("#"+targetarea).fadeOut( 200, function() { $(this).remove(); }); console.log("delete area "+rs_trxarea(key)); } if (del_key == "error") { alert("Impossibile cancellare elemento:\n" + del_val ); } }); }); } /* New Record */ function recNew ( recid ) { var formid = rs_formid( recid ); var dataString = $("#"+formid).serialize(); console.log("New rec: "+dataString); var request = RecAjax("create", dataString); request.done( function(data) { $.each(data, function(key, val) { console.log("Received (K:V) ("+key+":"+val+")") ; if (key == "msg") { $("#"+trx_logarea(recid)).html("Nuova Registrazione
(recid:"+recid+")
"); $("#"+trx_logarea(recid)).append("Inizio: "+ $("#"+rs_inputstart(recid)).val() +"
"); } if (key == "error") { $("#"+trx_logarea( recid )).html("Errore: impossibile creare una nuova registrazione"+val+" "); } }); } ); return request; } /* Update Record */ function recUpdate( recid ) { var formid = rs_formid( recid ); var dataString = $("#"+formid).serialize(); console.log("Sending Ajax Update request: "+ dataString); //event.preventDefault(); var request = RecAjax("update", dataString ); request.done( function(data) { $.each(data, function(key, val) { console.log("recUpdate receive (k:v) ("+key+":"+val+")" ); if (key == "message") { var str = ""; str += "RecID "+ recid + "
" str += "nome "+ $("#"+rs_trxname(recid)).val() + "
" str += "Inizio "+ $("#"+rs_inputstart(recid)).val() + "
" str += "Fine "+ $("#"+rs_inputend(recid)).val() + "
" $("#"+trx_logarea(recid)).html( str ); // if all elements have been recorded if ($("#"+rs_trxname(recid)).val() != "") { $("#"+trx_logarea(recid)).append( "In Elaborazione" ); } } if (key == "error") { $("#"+trx_logarea( recid )).append( "Error:" + val +"
" ); } }); // end of each }); // end of request.done } /* * * AJAX REQUEST * */ function RecAjax(apipath, dataString ) { var srv = srvaddr + "api/" + apipath ; var request = $.ajax({ type: "POST", cache: false, url: srv, data: dataString, dataType: "json" }); request.fail(function (jqXHR, textStatus, errorThrown){ console.error("The following error occured: "+ jqXHR.status +"-"+ textStatus + "-" + errorThrown ); if (jqXHR.status == 0 && jqXHR.readyState === 4) { alert("Errore di connessione, impossibile inviare i dati al server "+ srv); } else { alert("Error: "+jqXHR.status +"\nTextStatus: "+ textStatus + "\n Ready State "+jqXHR.readyState+"\n" + errorThrown ); } }); return request; } /* * GetNow (data parser) */ function getnow() { var myDate = new Date() var displayDate = myDate.getFullYear() + '/' + (myDate.getMonth()+1) + '/' + myDate.getDate(); displayDate = displayDate +' '+ myDate.getHours()+':'+myDate.getMinutes()+':'+myDate.getSeconds(); return displayDate; } /* FUNCTION: CHANGE STATE (gui) */ function ChangeState(recid, from, to) { console.log("ChangeState: " + from + " --> " + to ); $("#"+from).css("display", "none"); $("#"+to).css("display", "inline"); // take the date var displayDate = getnow(); if ( from == trx_startbut(recid) ) { $("#"+rs_inputstart(recid)).val( displayDate ); console.log("ChangeState: set "+rs_inputstart(recid)+ " to "+ displayDate ) } if ( from == trx_stopbut(recid) ) { $("#"+rs_inputend(recid)).val( displayDate ); console.log("ChangeState: set '"+rs_inputend(recid)+ "' to "+ displayDate ) } if ( from == trx_downbut(recid) ) { $("input[type=submit]").attr("disabled", "disabled"); console.log("ChangeState: set '"+rs_inputend(recid)+ "' to "+ displayDate ); } } // End function ChangeState // vim: set ts=4 sw=4 et: