diff --git a/pandora_console/include/javascript/map/MapController.js b/pandora_console/include/javascript/map/MapController.js index 1ec2528bc8..2837c63f32 100644 --- a/pandora_console/include/javascript/map/MapController.js +++ b/pandora_console/include/javascript/map/MapController.js @@ -17,10 +17,14 @@ var MapController = function(target) { this._target = target; this._id = $(target).data('id'); + this._dialogNodeMargin = 10; + this._marginConstant = 50; } // Atributes MapController.prototype._id = null; +MapController.prototype._dialogNodeMargin = 0; //To be beauty +MapController.prototype._marginConstant = 0; //To be beauty // Methods @@ -52,13 +56,45 @@ MapController.prototype.init_map = function() { .attr("r", "10"); svg.append("g").append("circle") - .attr("id", "node_12") + .attr("id", "node_13") .attr("class", "node") .attr("cx", "780") .attr("cy", "30") .attr("style", "fill: rgb(255, 0, 255);") .attr("r", "10"); + svg.append("g").append("circle") + .attr("id", "node_14") + .attr("class", "node") + .attr("cx", "50") + .attr("cy", "50") + .attr("style", "fill: rgb(112, 51, 51);") + .attr("r", "7"); + + svg.append("g").append("circle") + .attr("id", "node_15") + .attr("class", "node") + .attr("cx", "600") + .attr("cy", "600") + .attr("style", "fill: rgb(98, 149, 54);") + .attr("r", "8"); + + svg.append("g").append("circle") + .attr("id", "node_16") + .attr("class", "node") + .attr("cx", "490") + .attr("cy", "490") + .attr("style", "fill: rgb(250, 103, 18);") + .attr("r", "6"); + + svg.append("g").append("circle") + .attr("id", "node_17") + .attr("class", "node") + .attr("cx", "400") + .attr("cy", "600") + .attr("style", "fill: rgb(50, 50, 128);") + .attr("r", "6"); + this.init_events(); }; @@ -86,15 +122,75 @@ MapController.prototype.click_event = function(event) { } MapController.prototype.popup_map = function(self, event) { - //console.log($(self._target + " svg")); - //console.log(event); - var xPos = event.pageX; - var YPos = event.pageY; + // Node position and dimension + nodeX = parseInt($(event.currentTarget).attr("cx")); + nodeY = parseInt($(event.currentTarget).attr("cy")); + nodeR = parseInt($(event.currentTarget).attr("r")); + + // Map dimensions in pixels + var map_width_with_px = $(self._target + " svg").attr("width"); + var map_height_with_px = $(self._target + " svg").attr("height"); + + // Map dimensions in numbers + var map_width = parseInt(map_width_with_px.slice(0, map_width_with_px.length - 2)); + var map_height = parseInt(map_height_with_px.slice(0, map_height_with_px.length - 2)); + + // Dialog dimensions + var dialog_width = 300; + var dialog_height = 200; + + //To know the position of the dialog box + if (self.xOffset(map_width, nodeX, dialog_width) && self.yOffset(map_height, nodeY, dialog_height)) { + var xPos = event.pageX - dialog_width + nodeR; + var yPos = event.clientY - dialog_height - nodeR - self._dialogNodeMargin; + } + else if (self.yOffset(map_height, nodeY, dialog_height)) { + var xPos = event.pageX - nodeR; + var yPos = event.clientY + -dialog_height - nodeR - self._dialogNodeMargin; + } + else if (self.xOffset(map_width, nodeX, dialog_width)) { + var xPos = event.pageX - dialog_width + nodeR; + var yPos = event.clientY + nodeR + self._dialogNodeMargin; + } + else { + var xPos = event.pageX - nodeR; + var yPos = event.clientY + nodeR + self._dialogNodeMargin; + } + $(self._target + " svg").after($("
").attr("id", "dialog_popup")); $("#dialog_popup").dialog({ modal: false, - title: "Ventana Modarrrrl!!", + closeOnEscape: true, + show: {effect: 'fade', speed: 1000}, + title: "Ventana Modarrl!!", resizable: false, - position: [xPos,YPos] + position: [xPos,yPos], + height: dialog_height, + width: dialog_width }); + +} + +/* +Function xOffset +Return boolean +This function returns true if dialog cuts map's x axis +*/ +MapController.prototype.xOffset = function(map_w, node_x, dialog_w) { + if ((map_w - node_x - this._marginConstant) < dialog_w) { + return true; + } + return false; +} + +/* +Function yOffset +Return boolean +This function returns true if dialog cuts map's y axis +*/ +MapController.prototype.yOffset = function(map_h, node_y, dialog_h) { + if ((map_h - node_y - this._marginConstant) < dialog_h) { + return true; + } + return false; }