function setCookie(name, value ) { var expires = ""; document.cookie = name+"="+value+expires+"; path=/"; } function getCookie(name) { var nameEQ = name + "="; var ca = document.cookie.split(';'); for(var i=0;i < ca.length;i++) { var c = ca[i]; while (c.charAt(0)==' ') c = c.substring(1,c.length); if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length); } return ''; } function updateHTML_Locate(apname, ts, rssi, delta){ $('tr.aprow#' + apname +' td.rssi' ).text(rssi); $('tr.aprow#' + apname +' td.delta' ).text(delta); } function updateHTML_Measure(apname, ts, rssi, delta){ $('tr.aprow#' + apname +' td.rssi' ).text(rssi); $('tr.aprow#' + apname +' td.delta' ).text(delta); } function updateHTML_view(data){ var collected_aps = [] for (var apname in data) { if (data.hasOwnProperty(apname)) { for (var i in data[apname]) { var apinfo = data[apname][i]; var rssi = apinfo[0]; var ts = apinfo[1]; var delta = apinfo[3]; var aptable = $('table#aps') var aprow = $('tr.aprow#' + apname) aprow.show() var rgbval = $('span#rgb_' + (Math.round(rssi))).text() $('td.history', aprow).append('' + rssi +'') $('td.history span', aprow) collected_aps.push(apname) }; }; } var MAX_SIGNALS = 30 $('table#aps tr.aprow:visible').each(function(){ var aprow = $(this) if ($.inArray(aprow.attr('id'), collected_aps) == -1){ $('td.history', aprow).append('-00') }; while ($('td.history span', aprow).length > MAX_SIGNALS){ $('td.history span:first', aprow).remove() }; if ($('td.history span.full', aprow).length == 0){ aprow.hide() }; }); $('table#aps tr.aprow:visible').each(function(){ var aprow = $(this) var sum = 0 var values = $('td.history span.full', aprow) values.each(function(){ sum = sum + parseFloat($(this).text()) }); var mean = sum / values.length; var sum = 0 values.each(function(){ var rssi = parseFloat($(this).text()) sum = sum + (mean - rssi) * (mean - rssi) }); var sigma = sum / values.length; $('td.sigma', aprow).text(Math.round(sigma * 10) / 10) //~ var variance = Math.sqrt(sum / values.length); $('td.mean', aprow).text(Math.round(mean * 10) / 10) var rgbval = $('span#rgb_' + (Math.round(mean))).text() $('td.mean', aprow).css('background-color', rgbval) }); } function receiveAPs(jsid, station, updatefuncSingle, updatefuncAll, filter){ $.get('/getAPInfo?name=' + station + '&jsid=' + jsid + filter, function(data){ if (updatefuncAll){ updatefuncAll(data) } else { for (var apname in data) { if (data.hasOwnProperty(apname)) { for (var i in data[apname]) { var apinfo = data[apname][i]; var rssi = apinfo[0]; var ts = apinfo[1]; var delta = apinfo[3]; updatefuncSingle(apname, ts, rssi, delta) //~ console.log(apinfo[1]); }; } } }; //~ timer.stop() }); }; $(document).ready(function() { // id for this javascript session var jsid = parseInt(Math.random() * 100000000) var station = $('div#stationinfo span#name').text(); var updatefunc = null; var updatefuncAll = null; var filter = '' try { if ($('div#meta span#pagename').text() == 'view2'){ updatefuncAll = updateHTML_view; $('span#clear_hist').click(function(){ $('td.history span').remove() }); } else if ($('div#meta span#pagename').text() == 'locate'){ updatefunc = updateHTML_Locate; filter = '&filter=' $('td.apid').each(function(){ filter = filter + $(this).text() + ',' }); } else if ($('div#meta span#pagename').text() == 'measure'){ // move cut image to end of div onclick $('img.cutplot').dblclick(function(){ $(this).appendTo('div#cutplots') }); $('input#locid').val(getCookie('measure.locid')) $('input#locid').change(function(){ setCookie('measure.locid', $('input#locid').val()) }); updatefunc = updateHTML_Measure; $('form#locationinfo').submit(function(){ var locid = $('form#locationinfo input#locid').val(); var dur = $('form#locationinfo input#duration').val(); if (locid == ''){ alert('need location != ""'); return false; }; $('form#locationinfo span#activity').text('starting...'); $.get('/startMeasureLoc?name=' + station + '&locid=' + locid + '&duration=' + dur, function(data){ if (data.started == ''){ $('form#locationinfo span#activity').text('error: ' + data.error); return false }; $('form#locationinfo td#startts').text(data.started); var dur_in_ms = parseInt(dur) * 1000 + 1000 $('form#locationinfo span#activity').text('started, waiting ' + dur_in_ms + ' ms'); $.timer(dur_in_ms, function(timer){ timer.stop() $('form#locationinfo span#activity').text('checking results...'); $.get('/getMeasurementResults?name=' + station + '&locid=' + locid, function(result_data){ if (result_data.stopped == ''){ alert('measurement not stopped!') return false; }; $('form#locationinfo span#activity').text('got results'); $('form#locationinfo td#endts').text(result_data.stopped); $('table#aplist thead tr').append('loc ' + locid + '') var d = result_data.data; for (var apname in d) { if (d.hasOwnProperty(apname)) { var title = d[apname].rssis $('tr.aprow#' + apname).append('' + d[apname].avg + '') }; }; }); }); }); return false; }); } else if ($('div#meta span#pagename').text() == 'collect'){ $('span#startButton').click(function(){ var startstopval = $('span#startButton').text(); var pathid = $('select#pathid').val(); if (startstopval == 'start'){ $('span#startButton').css('background-color', '#F87217'); $.get('/startCollectPath?station=' + station + '&pathid=' + pathid, function(data){ $('span#startButton').text('stop'); $('span#startButton').css('background-color', '#F76541'); }); } else { $('span#startButton').css('background-color', '#F87217'); if ($('span.untriggeredLocidButton').length > 0){ $.get('/stopCollectPath?station=' + station + '&pathid=' + pathid + '&broken', function(data){ $('span#startButton').text('start'); $('span#startButton').css('background-color', '#52D017'); $('span.locidButton').css('background-color', '#FFFFFF'); }); } else { $.get('/stopCollectPath?station=' + station + '&pathid=' + pathid, function(data){ $('span#startButton').text('start'); $('span#startButton').css('background-color', '#52D017'); $('span.locidButton').css('background-color', '#FFFFFF'); }); }; $('span.locidButton').addClass('untriggeredLocidButton') } return false; }); $('span#nextButton').click(function(){ if ($('span#startButton').text() == 'start'){ // if unstarted - start by clicking next $('span#startButton').click(); return }; var button = $('span.untriggeredLocidButton:first') var locid = button.text() var pathid = $('select#pathid').val(); button.css('background-color', '#F87217'); button.removeClass('untriggeredLocidButton'); var rts = new Date().getTime() / 1000 $.get('/newCollectPathPosition?station=' + station + '&pathid=' + pathid + '&locid=' + locid + '&remotets=' + rts, function(data){ button.css('background-color', '#52D017'); if ($('span.untriggeredLocidButton').length == 0){ $('span#startButton').click() }; //~ alert(data) console.log($('root', data).attr('value')) $('div#feedback').text($('root', data).attr('value') + ' measurements') $('div#feedback').css('opacity', 1.0) $('div#feedback').animate({'opacity': 0.0}, 2000) }); }); buildPushButtons = function(locids){ $('span.locidButton').remove(); $(locids).each(function(i, locid){ if (locid.trim() != ''){ var s = '' + locid.trim() + ''; $('div#pushButtons').append(s) }; }) }; var stored_pathid = getCookie('collectpath.pathid'); if (stored_pathid != ''){ $('select#pathid option[value=' + stored_pathid +']').attr('selected', 'true') var locids = $('span.path#' + stored_pathid).text().split(','); buildPushButtons(locids); }; $('select#pathid').change(function(){ var pathid = $(this).val() var locids = $('span.path#' + pathid).text().split(',') buildPushButtons(locids) setCookie('collectpath.pathid', pathid); }); // move cut image to end of div onclick $('img.cutplot').dblclick(function(){ $(this).appendTo('div#cutplots') }); } else if ($('div#meta span#pagename').text() == 'evaluate'){ $('tr.path').click(function(){ //~ alert($(this).attr('pathid')) $('tr.run#' + $(this).attr('pathid')).toggle() }); if ($('table.optrun:first tr.path').length < 5){ $('tr.run').show() }; } else if ($('div#meta span#pagename').text() == 'evaluatePath'){ $('td#imgs1 img:nth-child(1)').show() $('td#imgs2 img:nth-child(2)').show() // make first set of images switchable var pos = 1; $('td#switch1 span').each(function(){ $(this).attr('pos', pos) $(this).click(function(){ $('td#imgs1 img').hide(); $('td#imgs1 img:nth-child(' + $(this).attr('pos') + ')').show() }); pos += 1; }) // duplicated from above pos = 1; $('td#switch2 span').each(function(){ $(this).attr('pos', pos) $(this).click(function(){ $('td#imgs2 img').hide(); $('td#imgs2 img:nth-child(' + $(this).attr('pos') + ')').show() }); pos += 1; }) } else if ($('div#meta span#pagename').text() == 'optruns'){ var selected_values = [] $('tr.param').click(function(){ $('#curr_hist').remove() var data = selected_values[0] $(selected_values).each(function(i, val){ if (i > 0) data = data + '|' + val }); var title = $('td.name', this).text() $('body').append('') $('#curr_hist').css({'position': 'absolute', 'border': '2px solid grey'}) $('#curr_hist').click(function(){$(this).remove()}) $('#curr_hist').center() }); $('tr.param').hover(function(){ $(this).css('background-color', '#CCCCCC'); var our_class = $('tr.p_' + $(this).attr('n')) our_class.css('background-color', '#CCCCCC'); // clear array selected_values = [] $('td.value', our_class).each(function(){ selected_values.push($(this).text()); }); }, function(){ $(this).css('background-color', 'white'); $('tr.p_' + $(this).attr('n')).css('background-color', 'white'); }); }; if (updatefunc != null || updatefuncAll != null){ $.timer(1000, function(timer){ receiveAPs(jsid, station, updatefunc, updatefuncAll, filter) }); }; } catch(err) { alert(err) } });