123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115 |
- import { Drawer } from "../../../core/drawers/drawer";
- import { ELEMENTS_CLASS } from "../../../core/enums/elements-class-enum";
- import { label as Label } from "../../../component-registry/label";
- import { app as App } from "../../../app";
- import { PointModel } from "../models/point-model";
- import { DrawerAggregator } from "../../../core/drawers/drawer-aggregator";
- import { stageManager as Stages } from "../../../core/application/stage-manager";
- const HOVER_STYLE = {
- fill: "#9bc364",
- strokeWidth: 2,
- stroke: "#FF0000"
- };
- const STYLE = {
- fill: "#9bc364",
- strokeWidth: 1,
- stroke: "#9bc364"
- };
- export class PointDrawer extends Drawer {
- constructor() {
- super();
- this.point;
- this.label;
- this.text;
- this.states = ["center"];
- }
- draw() {
- if (this.state == undefined) {
- super.setState(this.states[0]);
- App.setStatus("Selecione o centro do Ponto");
- }
- if (this.state == this.states[0]) {
- App.setStatus("Selecione o centro do Ponto");
- const pos = App.pos();
- if (pos == undefined) return;
- const drawResult = PointDrawer.drawAndGetPoint(pos.x, pos.y, true);
- this.point = drawResult.geometricObject;
- super.setKonvaObject(drawResult.konvaObject);
- super.addAggregator(
- new DrawerAggregator(this, this.point, this.konvaObject)
- );
- super.setState(this.states[0]);
- }
- }
- update() {}
- static drawAndGetPoint(x, y, useLabel) {
- return PointDrawer.drawPoint(new PointModel(x, y), useLabel);
- }
- static drawPoint(point, useLabel) {
- const group = Drawer.getKonvaGroup();
- const circle = PointDrawer.getKonvaCircle(point);
- group.add(circle);
- if (useLabel != undefined && useLabel) {
- const label = Label.draw();
- point.setLabel(label);
- const text = PointDrawer.getKonvaText(point, label);
- group.add(text);
- } else {
- if (point.label != undefined) {
- const text = PointDrawer.getKonvaText(point, point.label);
- group.add(text);
- }
- }
- PointDrawer.configureCircleEvents(circle);
- Drawer.drawObject(group);
- return { geometricObject: point, konvaObject: group };
- }
- static getKonvaCircle(point) {
- return new Konva.Circle({
- x: point.posX,
- y: point.posY,
- radius: 5,
- fill: STYLE.fill,
- stroke: STYLE.fill,
- strokeWidth: 1,
- strokeScaleEnabled: false,
- draggable: false,
- resizeEnabled: false,
- transformEnabled: false,
- style: STYLE,
- class: ELEMENTS_CLASS.POINT,
- connections: [],
- listening: true
- });
- }
- static getKonvaText(point, label) {
- return new Konva.Text({
- x: point.posX + 10,
- y: point.posY - 10,
- text: label,
- fontSize: 12,
- fontFamily: "Calibri",
- fill: "#434a45",
- draggable: false,
- resizeEnabled: false,
- transformEnabled: false,
- selectable: false
- });
- }
- static configureCircleEvents(circle) {
- circle.on("mouseover", function() {
- this.strokeWidth(HOVER_STYLE.strokeWidth);
- this.stroke(HOVER_STYLE.stroke);
- Stages.getCurrentKonvaStage().draw();
- });
- circle.on("mouseout", function() {
- this.strokeWidth(STYLE.strokeWidth);
- this.stroke(STYLE.stroke);
- Stages.getCurrentKonvaStage().draw();
- });
- }
- }
|