diff --git a/html/js/functions.js b/html/js/functions.js index bec2ebf..3459138 100644 --- a/html/js/functions.js +++ b/html/js/functions.js @@ -630,151 +630,170 @@ function getLastHeard(document, event) { $(document).ready(function() { lines = event.data.split("\n"); var duration = 0; - lines.forEach(function(line, index, array) { - if (!inDashboardBlacklist(line)) { - txing = false; - if (line.indexOf("Talker Alias") < 0 && line.indexOf("Downlink Activate") < 0 && line.indexOf("Preamble CSBK") < 0 && line.indexOf("data header") < 0 && line.indexOf("0000:") < 0 && line.length > 0 && (line.indexOf("received") > 0 || line.indexOf("network watchdog") > 0 || line.indexOf("transmission lost") > 0 || line.indexOf("network end of transmission") > 0)) { - if (line.indexOf("received network data") > 0 || line.indexOf("late entry") > 0 || line.indexOf("voice header") > 0 || line.indexOf("network header") > 0 || line.indexOf("received RF header") > 0 || line.indexOf("received RF voice") > 0 || line.indexOf("received network transmission") > 0) { - txing = true; - if (getMode(line) == "DMR Slot 1" ) { - ts1TXing = getMode(line) + ";" + line.substring(line.indexOf("from") + 5, line.indexOf("to")).trim() + ";" + getTarget(line) + ";" + getSource(line); - ts1timestamp = getRawTimestamp(line); - } else { - ts2TXing = getMode(line) + ";" + line.substring(line.indexOf("from") + 5, line.indexOf("to")).trim() + ";" + getTarget(line) + ";" + getSource(line); - ts2timestamp = getRawTimestamp(line); - } - } - if (line.indexOf("network watchdog") > 0 || line.indexOf("end of voice transmission") > 0 || line.indexOf("end of transmission") > 0 || line.indexOf("transmission lost") > 0) { - txing = false; - if (line.indexOf("network watchdog") > 0) { - logIt("Network Watchdog!"); - var rowIndexes = []; - t_lh.rows( function ( idx, data, node ) { - if (getMode(line) == "DMR Slot 1" ) { - if(data[0] == getLocaltimeFromTimestamp(ts1timestamp)){ - rowIndexes.push(idx); - } - return false; - } else { - if(data[0] == getLocaltimeFromTimestamp(ts2timestamp)){ - rowIndexes.push(idx); - } - return false; - } - }); + try { + lines.forEach(function(line, index, array) { + logIt("Line: " + line); + if (!inDashboardBlacklist(line)) { + txing = false; + if (line.indexOf("Talker Alias") < 0 && line.indexOf("Downlink Activate") < 0 && line.indexOf("Preamble CSBK") < 0 && line.indexOf("data header") < 0 && line.indexOf("0000:") < 0 && line.length > 0 && (line.indexOf("received") > 0 || line.indexOf("network watchdog") > 0 || line.indexOf("transmission lost") > 0 || line.indexOf("network end of transmission") > 0)) { + if (line.indexOf("received network data") > 0 || line.indexOf("late entry") > 0 || line.indexOf("voice header") > 0 || line.indexOf("network header") > 0 || line.indexOf("received RF header") > 0 || line.indexOf("received RF voice") > 0 || line.indexOf("received network transmission") > 0) { + txing = true; if (getMode(line) == "DMR Slot 1" ) { - duration = Math.round(Date.parse(getRawTimestamp(line).replace(" ","T")+".000Z")/1000 - Date.parse(ts1timestamp.replace(" ","T")+".000Z")/1000); + ts1TXing = getMode(line) + ";" + line.substring(line.indexOf("from") + 5, line.indexOf("to")).trim() + ";" + getTarget(line) + ";" + getSource(line); + ts1timestamp = getRawTimestamp(line); } else { - duration = Math.round(Date.parse(getRawTimestamp(line).replace(" ","T")+".000Z")/1000 - Date.parse(ts2timestamp.replace(" ","T")+".000Z")/1000); + ts2TXing = getMode(line) + ";" + line.substring(line.indexOf("from") + 5, line.indexOf("to")).trim() + ";" + getTarget(line) + ";" + getSource(line); + ts2timestamp = getRawTimestamp(line); } - if (rowIndexes[0]) { - if (rowIndexes[0] == "0") { - t_lh.row(rowIndexes[0]).remove().draw(false); - } - if (t_lh.row(rowIndexes[0]).data[0] != null) { - newData = [ - t_lh.row(rowIndexes[0]).data[0], - t_lh.row(rowIndexes[0]).data[1], - t_lh.row(rowIndexes[0]).data[2], - t_lh.row(rowIndexes[0]).data[3], - t_lh.row(rowIndexes[0]).data[4], - duration, - "", - "", - getAddToQSO(line) - ]; - $('#lastHeard').dataTable().fnUpdate(newData,rowIndexes[0],undefined,false); + } + if (line.indexOf("network watchdog") > 0 || line.indexOf("end of voice transmission") > 0 || line.indexOf("end of transmission") > 0 || line.indexOf("transmission lost") > 0) { + if ( t_lh.rows().count() == 0) { + throw BreakException; + } + txing = false; + if (line.indexOf("network watchdog") > 0) { + logIt("Network Watchdog!"); + var rowIndexes = []; + t_lh.rows( function ( idx, data, node ) { + if (getMode(line) == "DMR Slot 1" ) { + if(data[0] == getLocaltimeFromTimestamp(ts1timestamp)){ + rowIndexes.push(idx); + } + return false; + } else { + if(data[0] == getLocaltimeFromTimestamp(ts2timestamp)){ + rowIndexes.push(idx); + } + return false; + } + }); + if (getMode(line) == "DMR Slot 1" ) { + duration = Math.round(Date.parse(getRawTimestamp(line).replace(" ","T")+".000Z")/1000 - Date.parse(ts1timestamp.replace(" ","T")+".000Z")/1000); } else { - logIt("Problem replacing watchdog! Indices: " + rowIndexes); + duration = Math.round(Date.parse(getRawTimestamp(line).replace(" ","T")+".000Z")/1000 - Date.parse(ts2timestamp.replace(" ","T")+".000Z")/1000); } - var row = t_lh.row(rowIndexes[0]).node(); - if (txing) { - $(row).addClass('red'); - } else { - $(row).removeClass('red'); + if (rowIndexes[0]) { + if (rowIndexes[0] == "0") { + t_lh.row(rowIndexes[0]).remove().draw(false); + } + if (t_lh.row(rowIndexes[0]).data[0] != null) { + newData = [ + t_lh.row(rowIndexes[0]).data[0], + t_lh.row(rowIndexes[0]).data[1], + t_lh.row(rowIndexes[0]).data[2], + t_lh.row(rowIndexes[0]).data[3], + t_lh.row(rowIndexes[0]).data[4], + duration, + "", + "", + getAddToQSO(line) + ]; + $('#lastHeard').dataTable().fnUpdate(newData,rowIndexes[0],undefined,false); + } else { + logIt("Problem replacing watchdog! Indices: " + rowIndexes); + } + var row = t_lh.row(rowIndexes[0]).node(); + if (txing) { + $(row).addClass('red'); + } else { + $(row).removeClass('red'); + } } } - } - } - logIt("TS1: " + ts1TXing + "|" + ts1timestamp); - logIt("TS2: " + ts2TXing + "|" + ts2timestamp); - getCurrentTXing(); - if (line.indexOf("network watchdog") < 0 ) { - ts1tmp = []; - ts2tmp = []; - if (ts1TXing != null) { - ts1tmp = ts1TXing.split(";"); - } - if (ts2TXing != null) { - ts2tmp = ts2TXing.split(";"); - logIt("ts2tmp: " + ts2tmp); - logIt("ts2timestamp: " + ts2timestamp); } + logIt("TS1: " + ts1TXing + "|" + ts1timestamp); + logIt("TS2: " + ts2TXing + "|" + ts2timestamp); + getCurrentTXing(); + if (line.indexOf("network watchdog") < 0 ) { + ts1tmp = []; + ts2tmp = []; + if (ts1TXing != null) { + ts1tmp = ts1TXing.split(";"); + } + if (ts2TXing != null) { + ts2tmp = ts2TXing.split(";"); + logIt("ts2tmp: " + ts2tmp); + logIt("ts2timestamp: " + ts2timestamp); + } - var rowIndexes = [], - timestamp = getTimestamp(line), - mode = getMode(line), - callsign = getCallsign(line), - target = "", - source = getSource(line), - duration = getDuration(line), - loss = getLoss(line), - ber = getBER(line), - addToQSO = getAddToQSO(line); - if (getMode(line) == "DMR Slot 1" ) { - target = ts1tmp[2]; - } else { - target = ts2tmp[2]; - } - logIt("TXing:" + txing); - if (txing) { - duration = "TXing"; - loss = ""; - ber = ""; - } else { + var rowIndexes = [], + timestamp = getTimestamp(line), + mode = getMode(line), + callsign = getCallsign(line), + target = "", + source = getSource(line), + duration = getDuration(line), + loss = getLoss(line), + ber = getBER(line), + addToQSO = getAddToQSO(line); if (getMode(line) == "DMR Slot 1" ) { - ts1TXing = null; + target = ts1tmp[2]; } else { - ts2TXing = null; + target = ts2tmp[2]; } - } - if (mode == "POCSAG") { - callsign = "POCSAG"; - target = ""; - source = ""; - duration = ""; - loss = ""; - ber = ""; - addToQSO = ""; - } - t_lh.rows( function ( idx, data, node ) { - //if(data[2] == callsign){ - if(data[2].indexOf(callsign) > -1){ - rowIndexes.push(idx); + logIt("TXing:" + txing); + if (txing) { + duration = "TXing"; + loss = ""; + ber = ""; + } else { + if (getMode(line) == "DMR Slot 1" ) { + ts1TXing = null; + } else { + ts2TXing = null; + } } - return false; - }); - - logIt("RowIndexes: " + rowIndexes); - if (rowIndexes[0] == "0") { - t_lh.row(rowIndexes[0]).remove().draw(false); - } - if (rowIndexes[0]) { - if (t_lh.row(rowIndexes[0]).data[0] != null) { - newData = [ - timestamp, - mode, - callsign, - target, - source, - duration, - loss, - ber, - addToQSO - ] + if (mode == "POCSAG") { + callsign = "POCSAG"; + target = ""; + source = ""; + duration = ""; + loss = ""; + ber = ""; + addToQSO = ""; + } + t_lh.rows( function ( idx, data, node ) { + //if(data[2] == callsign){ + if(data[2].indexOf(callsign) > -1){ + rowIndexes.push(idx); + } + return false; + }); + + logIt("RowIndexes: " + rowIndexes); + if (rowIndexes[0] == "0") { + t_lh.row(rowIndexes[0]).remove().draw(false); + } + if (rowIndexes[0]) { + if (t_lh.row(rowIndexes[0]).data[0] != null) { + newData = [ + timestamp, + mode, + callsign, + target, + source, + duration, + loss, + ber, + addToQSO + ] + } else { + newData = [ + timestamp, + mode, + callsign, + target, + source, + duration, + loss, + ber, + addToQSO + ] + } + t_lh.row(rowIndexes[0]).data( newData ).draw(false); } else { - newData = [ + t_lh.row.add( [ timestamp, mode, callsign, @@ -784,32 +803,21 @@ function getLastHeard(document, event) { loss, ber, addToQSO - ] + ] ).draw(false); } - t_lh.row(rowIndexes[0]).data( newData ).draw(false); - } else { - t_lh.row.add( [ - timestamp, - mode, - callsign, - target, - source, - duration, - loss, - ber, - addToQSO - ] ).draw(false); } - } - if (rowIndexes[0]) { - var row = t_lh.row(rowIndexes[0]).node(); - var temp = t_lh.row(rowIndexes[0]).data(); - temp[5] = duration; - $('#lastHeard').dataTable().fnUpdate(temp,rowIndexes[0],undefined,false); + if (rowIndexes[0]) { + var row = t_lh.row(rowIndexes[0]).node(); + var temp = t_lh.row(rowIndexes[0]).data(); + temp[5] = duration; + $('#lastHeard').dataTable().fnUpdate(temp,rowIndexes[0],undefined,false); + } } } - } - }); + }); + } catch (e) { + if (e !== BreakException) throw e; + } }); } diff --git a/html/js/version.js b/html/js/version.js index 8a47999..ad52dc4 100644 --- a/html/js/version.js +++ b/html/js/version.js @@ -1 +1 @@ -var dashboard_version = "2021-04-30 11:28:13"; +var dashboard_version = "2021-04-30 19:52:34";