if (info && info[2] == "iot-lab" && info[3] == "info") {
node.arch = info[0].split("-")[0];
- node.id = info[0].split("-")[1];
+ node.id = parseInt(info[0].split("-")[1]);
node.site = info[1];
+ node.x = parseFloat(node.x);
+ node.y = parseFloat(node.y);
+ node.z = parseFloat(node.z);
+ node.selected = false;
node.normalized = true;
}
},
notify: function(node) {
- console.log("[Notify] node " + node.id + " is " + node.boot_state);
+ console.log("[Notify] node " + node.id + " is " + node.selected);
},
createMaps: function($container, sites, nodes) {
var maps = {};
+ var $menu = $("<ul id='sites-tabs' class='nav nav-tabs' data-tabs='sites-tabs'/>").appendTo($container);
+ var $maps = $("<div id='maps' class='tab-content' />").appendTo($container);
+
$.each(sites, function(i, site) {
- var $div = $("<div />").appendTo($container);
- maps[site] = new Senslab.Map($div);
+ var entry = $("<li><a href='#" + site + "' data-toggle='tab'>" + site + "</a></li>").appendTo($menu);
+ var $tab = $("<div class='tab-pane' id='" + site + "' />").appendTo($maps);
+ maps[site] = new Senslab.Map($tab);
maps[site].addNodes(nodes[site]);
});
+
+ $menu.find("li").eq(0).addClass("active");
+ $maps.find("div").eq(0).addClass("active");
+
+ if (!sites.length) {
+ $container.text("No nodes to display.");
+ }
}
};
if (intersects.length > 0) {
var particle = intersects[0].object;
if (particle.data.boot_state != "Suspected") {
- setState(particle, particle.data.boot_state == "Alive" ? "Selected" : "Alive");
+ setSelected(particle, !particle.data.selected);
var $nodeInput = self.$nodeInputs[particle.data.arch];
$nodeInput.val(factorize(self.getNodesId(particle.data.arch)));
self.update();
var particles = this.scene.children;
var nodes = [];
for (var i = 0; i < particles.length; ++i) {
- if (particles[i].data && particles[i].data.arch == arch && particles[i].data.boot_state == "Selected") {
+ if (particles[i].data && particles[i].data.arch == arch && particles[i].data.selected) {
nodes.push(particles[i].id);
}
}
this.update();
};
- Map.prototype.updateSelected = function(arch, selected) {
+ Map.prototype.updateSelected = function(arch, selectedNodes) {
var particles = this.scene.children;
for (var i = 0; i < particles.length; ++i) {
if (particles[i].data && particles[i].data.arch == arch && particles[i].data.boot_state != "Suspected") {
var particle = particles[i];
- var state = $.inArray(particle.id, selected) == -1 ? "Alive" : "Selected";
- if (particle.data.boot_state != state) {
- setState(particle, state);
+ var selected = $.inArray(particle.id, selectedNodes) != -1;
+ if (particle.data.selected != selected) {
+ setSelected(particle, selected);
}
}
}
this.renderer.render(this.scene, this.camera);
};
- function setState(particle, state) {
- particle.data.boot_state = state;
+ function setSelected(particle, selected) {
+ particle.data.selected = selected;
setColor(particle);
Senslab.notify(particle.data);
}
function setColor(particle) {
- var color = colors[particle.data.boot_state] || colors["Selected"];
+ var color = particle.data.selected ? colors["Selected"] : colors[particle.data.boot_state];
particle.material.color.setHex(color);
}