var queryParams = NUTELLA.parseURLParameters();
var componentId = NUTELLA.parseComponentId();
var run_id = queryParams.run_id;
var app_id = queryParams.app_id;
// Initialize nutella and interface
var nutella = NUTELLA.init(queryParams.broker, app_id, run_id, componentId);
$('.navbar-right').append("
"+queryParams.app_id+"")
.append(""+run_id+"");
//$(window).scroll(function(){
// console.log('this');
//});
// PUB/SUB -------------------------------------------------------
// Publish
$("#publish_frm").submit(function(e) {
e.preventDefault();
var inputs = $('#publish_frm :input');
nutella.net.publish(inputs[0].value, inputs[1].value)
});
// Subscribe
$("#sub_frm").submit(function(e) {
e.preventDefault();
var channel = $('#sub_frm :input')[0];
$("#sub_list").append('' + channel.value + '').append(" ");
nutella.net.subscribe(channel.value, function(message, from){
appendMessage(channel.value, message, from);
});
});
// Unsubscribe
$("#sub_frm").on('click', ".label-default", function(e){
this.remove();
nutella.net.unsubscribe(this.innerText);
});
// Append messages to table
function appendMessage(channel, message, from) {
$("#messages").prepend('' + channel + ' | ' + message+ ' | ' + JSON.stringify(from) + ' |
');
}
// Remove all messages
$("#remove_messages").click(function(){
console.log("pippo");
$("#messages tbody").empty();
});
// REQ/RES -------------------------------------------------------
// Request
$("#request_frm").submit(function(e) {
e.preventDefault();
var inputs = $('#request_frm :input');
nutella.net.request(inputs[0].value, inputs[1].value, function(res){
if (typeof res === 'object')
$("#response").text(JSON.stringify(res));
else
$("#response").text(res);
});
});
// Handle request
$("#handle_frm").submit(function(e) {
e.preventDefault();
if ($('#handle_btn').hasClass('btn-danger')) {
$('#handle_req_ch').prop('disabled', false);
$('#handle_req_cb').prop('disabled', false);
$('#handle_btn').removeClass('btn-danger').text('Handle request');
} else {
$('#handle_req_ch').prop('disabled', true);
$('#handle_req_cb').prop('disabled', true);
$('#handle_btn').addClass('btn-danger').text('Stop handling request');
var channel = $('#handle_req_ch').val();
var response = $('#handle_req_cb').val();
nutella.net.handle_requests(channel, function(req, from) {
return response;
});
}
});
// SIM -------------------------------------------------------
var rp_sim = new RoomPlacesSimulator(nutella);
nutella.location.ready(function() {
var resources = nutella.location.resources;
var hotspots = resources.filter(function(el){
return el.type==='STATIC';
}).map(function(el){
return el.rid;
});
var beacons = resources.filter(function(el){
return el.model==='IBEACON';
}).map(function(el){
return el.rid;
});
var minDistance = resources.filter(function(el){
return el.type==='STATIC';
}).map(function(el){
return el.proximity_range;
}).reduce(function(prev, cur){
return cur < prev ? cur : prev;
}, Infinity);
// Update UI
$("#beacon_ls").val(beacons.join(', '));
$("#hotsp_ls").val(hotspots.join(', '));
$("#distance_fr").val(Math.floor(minDistance / 3 * 100) / 100);
});
// Start / stop simulator
$("#sim_frm").submit(function(e) {
e.preventDefault();
if ($('#start_sim_btn').hasClass('btn-danger')) {
$("#beacon_ls").prop('disabled', false);
$("#hotsp_ls").prop('disabled', false);
$("#distance_fr").prop('disabled', false);
$('#start_sim_btn').removeClass('btn-danger').addClass('btn-success').text('Start simulator');
// Stop simulator
rp_sim.stop();
} else {
$("#beacon_ls").prop('disabled', true);
$("#hotsp_ls").prop('disabled', true);
$("#distance_fr").prop('disabled', true);
$('#start_sim_btn').removeClass('btn-success').addClass('btn-danger').text('Stop simulator');
// Configure and start simulator
rp_sim.setHotspots($("#hotsp_ls").val().split(", "));
rp_sim.setBeacons($("#beacon_ls").val().split(", "));
rp_sim.setDistance(parseFloat($("#distance_fr").val()));
rp_sim.start();
}
});