|
@@ -1,3 +1,8 @@
|
|
|
|
+/*
|
|
|
|
+ iGeom
|
|
|
|
+ LInE www.usp.br/line
|
|
|
|
+ */
|
|
|
|
+
|
|
import { ELEMENTS_CLASS } from "../../../core/enums/elements-class-enum";
|
|
import { ELEMENTS_CLASS } from "../../../core/enums/elements-class-enum";
|
|
import { label as Label } from "../../../component-registry/label";
|
|
import { label as Label } from "../../../component-registry/label";
|
|
import { app as App } from "../../../app";
|
|
import { app as App } from "../../../app";
|
|
@@ -11,35 +16,37 @@ const STYLE = {
|
|
fill2: "#828783",
|
|
fill2: "#828783",
|
|
strokeWidth: 1,
|
|
strokeWidth: 1,
|
|
stroke: "#9bc364"
|
|
stroke: "#9bc364"
|
|
-};
|
|
|
|
|
|
+ };
|
|
|
|
+
|
|
export class PointDrawer extends SelectableDrawer {
|
|
export class PointDrawer extends SelectableDrawer {
|
|
- constructor() {
|
|
|
|
|
|
+
|
|
|
|
+ constructor () {
|
|
super();
|
|
super();
|
|
this.point;
|
|
this.point;
|
|
this.label;
|
|
this.label;
|
|
this.text;
|
|
this.text;
|
|
this.states = ["center"];
|
|
this.states = ["center"];
|
|
super.setElementClass(ELEMENTS_CLASS.POINT);
|
|
super.setElementClass(ELEMENTS_CLASS.POINT);
|
|
- }
|
|
|
|
|
|
+ }
|
|
|
|
|
|
- draw(e) {
|
|
|
|
|
|
+ draw (e) {
|
|
if (e != undefined && e.attrs != undefined && e.attrs.genericObject != undefined) {
|
|
if (e != undefined && e.attrs != undefined && e.attrs.genericObject != undefined) {
|
|
const aggregator = this.drawPoint(e.attrs.genericObject);
|
|
const aggregator = this.drawPoint(e.attrs.genericObject);
|
|
return aggregator;
|
|
return aggregator;
|
|
- }
|
|
|
|
|
|
+ }
|
|
if (this.state == undefined) {
|
|
if (this.state == undefined) {
|
|
super.setState(this.states[0]);
|
|
super.setState(this.states[0]);
|
|
App.setStatus("Selecione o centro do Ponto");
|
|
App.setStatus("Selecione o centro do Ponto");
|
|
- }
|
|
|
|
|
|
+ }
|
|
if (this.state == this.states[0]) {
|
|
if (this.state == this.states[0]) {
|
|
App.setStatus("Selecione o centro do Ponto");
|
|
App.setStatus("Selecione o centro do Ponto");
|
|
const aggregator = this.drawPoint();
|
|
const aggregator = this.drawPoint();
|
|
super.setState(this.states[0]);
|
|
super.setState(this.states[0]);
|
|
return aggregator;
|
|
return aggregator;
|
|
|
|
+ }
|
|
}
|
|
}
|
|
- }
|
|
|
|
|
|
|
|
- drawPoint(point) {
|
|
|
|
|
|
+ drawPoint (point) {
|
|
const pos = App.pos();
|
|
const pos = App.pos();
|
|
let drawResult;
|
|
let drawResult;
|
|
if (point == undefined) {
|
|
if (point == undefined) {
|
|
@@ -50,37 +57,32 @@ export class PointDrawer extends SelectableDrawer {
|
|
|
|
|
|
this.point = drawResult.geometricObject;
|
|
this.point = drawResult.geometricObject;
|
|
super.setKonvaObject(drawResult.konvaObject);
|
|
super.setKonvaObject(drawResult.konvaObject);
|
|
- const aggregator = new DrawerAggregator(
|
|
|
|
- this,
|
|
|
|
- this.point,
|
|
|
|
- this.konvaObject,
|
|
|
|
- ELEMENTS_CLASS.POINT
|
|
|
|
- );
|
|
|
|
|
|
+ const aggregator = new DrawerAggregator(this, this.point, this.konvaObject, ELEMENTS_CLASS.POINT); // app/core/drawers/drawer-aggregator.js
|
|
super.addAggregator(aggregator);
|
|
super.addAggregator(aggregator);
|
|
this.konvaObject.on("dragmove", aggregator.update.bind(aggregator));
|
|
this.konvaObject.on("dragmove", aggregator.update.bind(aggregator));
|
|
return aggregator;
|
|
return aggregator;
|
|
- }
|
|
|
|
|
|
+ }
|
|
|
|
|
|
- update(aggregator, event) {
|
|
|
|
|
|
+ update (aggregator, event) {
|
|
aggregator.konvaObject.children.forEach(function (element) {
|
|
aggregator.konvaObject.children.forEach(function (element) {
|
|
if (element.attrs.class == ELEMENTS_CLASS.POINT) {
|
|
if (element.attrs.class == ELEMENTS_CLASS.POINT) {
|
|
aggregator.genericObject.update(element, event);
|
|
aggregator.genericObject.update(element, event);
|
|
- }
|
|
|
|
- });
|
|
|
|
- }
|
|
|
|
|
|
+ }
|
|
|
|
+ });
|
|
|
|
+ }
|
|
|
|
|
|
- inserPointInLineSegment(konvaObject) {
|
|
|
|
|
|
+ inserPointInLineSegment (konvaObject) {
|
|
const drawerAggregators = objects.getByKonvaObject(konvaObject);
|
|
const drawerAggregators = objects.getByKonvaObject(konvaObject);
|
|
if (drawerAggregators == undefined || drawerAggregators.length == 0) return;
|
|
if (drawerAggregators == undefined || drawerAggregators.length == 0) return;
|
|
const drawerAggregator = drawerAggregators[0];
|
|
const drawerAggregator = drawerAggregators[0];
|
|
drawerAggregator.drawer.insertPoint(drawerAggregator);
|
|
drawerAggregator.drawer.insertPoint(drawerAggregator);
|
|
- }
|
|
|
|
|
|
+ }
|
|
|
|
|
|
- static drawAndGetPoint(x, y, useLabel) {
|
|
|
|
|
|
+ static drawAndGetPoint (x, y, useLabel) {
|
|
return PointDrawer.drawPoint(new PointModel(x, y), useLabel);
|
|
return PointDrawer.drawPoint(new PointModel(x, y), useLabel);
|
|
- }
|
|
|
|
|
|
+ }
|
|
|
|
|
|
- static drawPoint(point, useLabel, draggable, selectable) {
|
|
|
|
|
|
+ static drawPoint (point, useLabel, draggable, selectable) {
|
|
const group = SelectableDrawer.getKonvaGroup(draggable);
|
|
const group = SelectableDrawer.getKonvaGroup(draggable);
|
|
const circle = PointDrawer.getKonvaCircle(point, draggable, selectable);
|
|
const circle = PointDrawer.getKonvaCircle(point, draggable, selectable);
|
|
|
|
|
|
@@ -89,7 +91,7 @@ export class PointDrawer extends SelectableDrawer {
|
|
point.setLabel(label);
|
|
point.setLabel(label);
|
|
const text = PointDrawer.getKonvaText(point, label);
|
|
const text = PointDrawer.getKonvaText(point, label);
|
|
group.add(text);
|
|
group.add(text);
|
|
- }
|
|
|
|
|
|
+ }
|
|
|
|
|
|
if (selectable == undefined || selectable)
|
|
if (selectable == undefined || selectable)
|
|
SelectableDrawer.setSelectableIfSelectorChanged(circle);
|
|
SelectableDrawer.setSelectableIfSelectorChanged(circle);
|
|
@@ -103,17 +105,17 @@ export class PointDrawer extends SelectableDrawer {
|
|
SelectableDrawer.drawObject(circle);
|
|
SelectableDrawer.drawObject(circle);
|
|
SelectableDrawer.setMaxIndex(circle);
|
|
SelectableDrawer.setMaxIndex(circle);
|
|
return { geometricObject: point, konvaObject: circle };
|
|
return { geometricObject: point, konvaObject: circle };
|
|
|
|
+ }
|
|
}
|
|
}
|
|
- }
|
|
|
|
|
|
|
|
- static getKonvaCircle(point, draggable, selectable) {
|
|
|
|
|
|
+ static getKonvaCircle (point, draggable, selectable) {
|
|
let fill = draggable == undefined || draggable ? STYLE.fill : STYLE.fill2;
|
|
let fill = draggable == undefined || draggable ? STYLE.fill : STYLE.fill2;
|
|
let stroke = draggable == undefined || draggable ? STYLE.stroke : STYLE.fill2;
|
|
let stroke = draggable == undefined || draggable ? STYLE.stroke : STYLE.fill2;
|
|
|
|
|
|
if (point.backgroundColor != undefined) {
|
|
if (point.backgroundColor != undefined) {
|
|
fill = point.backgroundColor;
|
|
fill = point.backgroundColor;
|
|
stroke = point.backgroundColor;
|
|
stroke = point.backgroundColor;
|
|
- }
|
|
|
|
|
|
+ }
|
|
|
|
|
|
return new Konva.Circle({
|
|
return new Konva.Circle({
|
|
x: point.posX,
|
|
x: point.posX,
|
|
@@ -133,9 +135,10 @@ export class PointDrawer extends SelectableDrawer {
|
|
startPosY: point.posY,
|
|
startPosY: point.posY,
|
|
listening: true,
|
|
listening: true,
|
|
selectable: selectable
|
|
selectable: selectable
|
|
- });
|
|
|
|
- }
|
|
|
|
- static getKonvaText(point, label) {
|
|
|
|
|
|
+ });
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ static getKonvaText (point, label) {
|
|
return new Konva.Text({
|
|
return new Konva.Text({
|
|
x: point.posX + 10,
|
|
x: point.posX + 10,
|
|
y: point.posY - 10,
|
|
y: point.posY - 10,
|
|
@@ -149,6 +152,7 @@ export class PointDrawer extends SelectableDrawer {
|
|
resizeEnabled: false,
|
|
resizeEnabled: false,
|
|
transformEnabled: false,
|
|
transformEnabled: false,
|
|
selectable: false
|
|
selectable: false
|
|
- });
|
|
|
|
- }
|
|
|
|
-}
|
|
|
|
|
|
+ });
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ }
|