|
@@ -1,4 +1,6 @@
|
|
|
import ObjetoDinamico from './ObjetoDinamico';
|
|
|
+// eslint-disable-next-line import/no-cycle
|
|
|
+import Rotulo from './Rotulo';
|
|
|
|
|
|
/**
|
|
|
* Classe Ponto
|
|
@@ -20,25 +22,25 @@ export default class Ponto extends ObjetoDinamico {
|
|
|
this.raio = 4;
|
|
|
this.espessura = 1;
|
|
|
this.selecionado = false;
|
|
|
-
|
|
|
+ this.rotulo = new Rotulo(this.x, this.y, this);
|
|
|
this.elemento = this.criaPonto();
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
- * Método que devolve o elemento Ponto.
|
|
|
- * @return {Object} Retorna o elemento que representa um Ponto em formato SVG
|
|
|
- */
|
|
|
+ * Método que devolve o elemento Ponto.
|
|
|
+ * @return {Object} Retorna o elemento que representa um Ponto em formato SVG
|
|
|
+ */
|
|
|
draw() {
|
|
|
return this.elemento;
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
- * Verifica se existe um ponto na posição especificada por x e y
|
|
|
- * @param {number} x - Valor da posição no eixo x
|
|
|
- * @param {number} y - Valor da posição no eixo y
|
|
|
- * @return {boolean} Retorna verdadeiro se existe um ponto na posição especificada.
|
|
|
- * Caso contrário, retorna falso.
|
|
|
- */
|
|
|
+ * Verifica se existe um ponto na posição especificada por x e y
|
|
|
+ * @param {number} x - Valor da posição no eixo x
|
|
|
+ * @param {number} y - Valor da posição no eixo y
|
|
|
+ * @return {boolean} Retorna verdadeiro se existe um ponto na posição especificada.
|
|
|
+ * Caso contrário, retorna falso.
|
|
|
+ */
|
|
|
contains(x, y) {
|
|
|
const xDiff = Math.abs(this.x - x);
|
|
|
const yDiff = Math.abs(this.y - y);
|
|
@@ -51,15 +53,22 @@ export default class Ponto extends ObjetoDinamico {
|
|
|
* @return {Object} Retorna o elemento SVG criado que representa o Ponto
|
|
|
*/
|
|
|
criaPonto() {
|
|
|
- const elemento = document.createElementNS(this.svgNS, 'circle');
|
|
|
- elemento.setAttribute('id', 'mycircle');
|
|
|
- elemento.setAttribute('cx', this.x);
|
|
|
- elemento.setAttribute('cy', this.y);
|
|
|
- elemento.setAttribute('r', this.raio);
|
|
|
- elemento.setAttribute('fill', 'lightgreen');
|
|
|
- elemento.setAttribute('stroke', 'black');
|
|
|
- elemento.setAttribute('stroke-width', this.espessura);
|
|
|
- return elemento;
|
|
|
+ const agrupador = document.createElementNS(this.svgNS, 'g');
|
|
|
+
|
|
|
+ const ponto = document.createElementNS(this.svgNS, 'circle');
|
|
|
+ ponto.setAttribute('id', 'mycircle');
|
|
|
+ ponto.setAttribute('cx', this.x);
|
|
|
+ ponto.setAttribute('cy', this.y);
|
|
|
+ ponto.setAttribute('r', this.raio);
|
|
|
+ ponto.setAttribute('fill', 'lightgreen');
|
|
|
+ ponto.setAttribute('stroke', 'black');
|
|
|
+ ponto.setAttribute('stroke-width', this.espessura);
|
|
|
+ agrupador.appendChild(ponto);
|
|
|
+
|
|
|
+ const rotulo = this.rotulo.draw();
|
|
|
+ agrupador.appendChild(rotulo);
|
|
|
+
|
|
|
+ return agrupador;
|
|
|
}
|
|
|
|
|
|
/**
|
|
@@ -68,8 +77,8 @@ export default class Ponto extends ObjetoDinamico {
|
|
|
* @param {number} y Posição relativa ao eixo y onde o ponto será movimentado
|
|
|
*/
|
|
|
mover(x, y) {
|
|
|
- this.x = x;
|
|
|
- this.y = y;
|
|
|
+ this.setX(x);
|
|
|
+ this.setY(y);
|
|
|
}
|
|
|
|
|
|
/**
|