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)
}
});