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: