X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=plugins%2Fsenslabmap%2Fstatic%2Fjs%2Fmap.js;h=a75254a43c8a1aeddcc5fd7de2b916a423d01616;hb=c53dc9c19c4b4832d1258cb392774909b6d9a755;hp=f37a14e4fd6cc7070b606234bc69c250e47daa30;hpb=8c57f6e7833ee14d0b49e37fc5b3d51e7546ec35;p=myslice.git diff --git a/plugins/senslabmap/static/js/map.js b/plugins/senslabmap/static/js/map.js index f37a14e4..a75254a4 100644 --- a/plugins/senslabmap/static/js/map.js +++ b/plugins/senslabmap/static/js/map.js @@ -13,12 +13,19 @@ var Senslab = { node.arch = info[0].split("-")[0]; node.id = info[0].split("-")[1]; node.site = info[1]; - return true; - } else { - console.warn("could not normalize node :"); - console.warn(node); - return false; + node.normalized = true; } + }, + notify: function(node) { + console.log("[Notify] node " + node.id + " is " + node.boot_state); + }, + createMaps: function($container, sites, nodes) { + var maps = {}; + $.each(sites, function(i, site) { + var $div = $("
").appendTo($container); + maps[site] = new Senslab.Map($div); + maps[site].addNodes(nodes[site]); + }); } }; @@ -30,10 +37,6 @@ Senslab.Map = function() { "Selected": 0x0099CC }; - function setColor(node) { - node.material.color.setHex(colors[node.boot_state] || colors["Selected"]); - } - var archs = [ "wsn430", "m3", @@ -48,10 +51,6 @@ Senslab.Map = function() { this.phi = -100; this.theta = 0; this.onRot = false; - - this._notify = function(node) { - console.log("[Notify] node " + node.id + " is " + node.boot_state); - }; this.pointerDetectRay = new THREE.Raycaster(); this.pointerDetectRay.ray.direction.set(0, -1, 0); @@ -76,7 +75,8 @@ Senslab.Map = function() { self.$nodeInputs[arch] = $("") .appendTo($container) .change(function() { - self.updateColor(arch, expand($(this).val())); + self.updateSelected(arch, expand($(this).val())); + self.update(); }); }); @@ -108,9 +108,7 @@ Senslab.Map = function() { if (intersects.length > 0) { var node = intersects[0].object; if (node.boot_state != "Suspected") { - node.boot_state = node.boot_state == "Alive" ? "Selected" : "Alive"; - setColor(node); - self._notify(node); + setState(node, node.boot_state == "Alive" ? "Selected" : "Alive"); var $nodeInput = self.$nodeInputs[node.arch]; $nodeInput.val(factorize(self.getNodesId(node.arch))); self.update(); @@ -141,13 +139,13 @@ Senslab.Map = function() { $container.append($canvas); } - + Map.prototype.getNodesId = function(arch) { var allNodes = this.scene.children; var nodes = []; for (var i = 0; i < allNodes.length; ++i) { if (allNodes[i].arch == arch && allNodes[i].boot_state == "Selected") { - nodes.push(parseInt(allNodes[i].id)); + nodes.push(allNodes[i].id); } } return nodes; @@ -163,9 +161,10 @@ Senslab.Map = function() { for(var i = 0; i < nodes.length; ++i) { var material = new THREE.ParticleCanvasMaterial({program: circle}); var particle = new THREE.Particle(material); - particle.id = nodes[i].id; + particle.id = parseInt(nodes[i].id); particle.arch = nodes[i].arch; particle.boot_state = nodes[i].boot_state; + particle.component_id = nodes[i].component_id; particle.position.x = (nodes[i].x - center.x) * 10; particle.position.y = (nodes[i].y - center.y) * 10; particle.position.z = (nodes[i].z - center.z) * 10; @@ -176,21 +175,17 @@ Senslab.Map = function() { this.update(); }; - Map.prototype.updateColor = function(arch, selected) { + Map.prototype.updateSelected = function(arch, selected) { var nodes = this.scene.children; for (var i = 0; i < nodes.length; ++i) { if (nodes[i].arch == arch && nodes[i].boot_state != "Suspected") { var node = nodes[i]; - var id = parseInt(node.id); - var state = $.inArray(id, selected) == -1 ? "Alive" : "Selected"; + var state = $.inArray(node.id, selected) == -1 ? "Alive" : "Selected"; if (node.boot_state != state) { - node.boot_state = state; - this._notify(node); + setState(node, state); } - setColor(node); } } - this.update(); } Map.prototype.updatePosition = function() { @@ -205,6 +200,16 @@ Senslab.Map = function() { this.renderer.render(this.scene, this.camera); }; + function setState(node, state) { + node.boot_state = state; + setColor(node); + Senslab.notify(node); + } + + function setColor(node) { + node.material.color.setHex(colors[node.boot_state] || colors["Selected"]); + } + function getCenter(nodes) { var xmin = 0, ymin = 0, zmin = 0; var xmax = 0, ymax = 0, zmax = 0;