|
@@ -6,7 +6,6 @@ import { ELEMENTS_CLASS } from "../enums/elements-class-enum";
|
|
|
import { app as App } from "../../app";
|
|
|
export class Selector {
|
|
|
constructor() {
|
|
|
- this._objects = [];
|
|
|
this._selectorPosStart;
|
|
|
this._selectorPosNow;
|
|
|
this._mode = "";
|
|
@@ -32,20 +31,41 @@ export class Selector {
|
|
|
Stages.getCurrentKonvaLayer().add(this._selectorRect);
|
|
|
}
|
|
|
|
|
|
- getSelectedObjects() {
|
|
|
- return this._objects;
|
|
|
+ getSelectedAggregators() {
|
|
|
+ return Objects.getSelectedObjects();
|
|
|
}
|
|
|
|
|
|
- getPoints() {
|
|
|
- return this._objects.filter(
|
|
|
+ getSelectedKonvaObjects() {
|
|
|
+ return this.getSelectedAggregators().map(function(aggregator) {
|
|
|
+ if (aggregator.konvaObject.children == undefined) {
|
|
|
+ return aggregator.konvaObject;
|
|
|
+ } else {
|
|
|
+ return aggregator.konvaObject.children.map(function(object) {
|
|
|
+ return object;
|
|
|
+ })[0];
|
|
|
+ }
|
|
|
+ });
|
|
|
+ }
|
|
|
+
|
|
|
+ getSelectedKonvaPoints() {
|
|
|
+ const objects = this.getSelectedKonvaObjects();
|
|
|
+ return objects.filter(
|
|
|
x => x.attrs.class != undefined && x.attrs.class == ELEMENTS_CLASS.POINT
|
|
|
);
|
|
|
}
|
|
|
|
|
|
- getKonvaPoints() {
|
|
|
- return this._objects.filter(
|
|
|
- x => x.attrs.class != undefined && x.attrs.class == ELEMENTS_CLASS.POINT
|
|
|
+ getSelectedPoints() {
|
|
|
+ const objects = this.getSelectedAggregators().filter(
|
|
|
+ x => x.elementClass === ELEMENTS_CLASS.POINT
|
|
|
+ );
|
|
|
+ return objects.map(x => x.genericObject);
|
|
|
+ }
|
|
|
+
|
|
|
+ getSelectedPointsAggregators() {
|
|
|
+ const objects = this.getSelectedAggregators().filter(
|
|
|
+ x => x.elementClass === ELEMENTS_CLASS.POINT
|
|
|
);
|
|
|
+ return objects;
|
|
|
}
|
|
|
|
|
|
startDragSelector(posIn) {
|
|
@@ -77,8 +97,8 @@ export class Selector {
|
|
|
updateDragSelector(posIn) {
|
|
|
if (State.getCurrentState() != APP_STATE.NONE) return;
|
|
|
App.clearSelectedTool();
|
|
|
- let currentObjects = Objects.get();
|
|
|
- let posRect = this.reverse(this._selectorPosStart, this._selectorPosNow);
|
|
|
+ const currentObjects = Objects.get();
|
|
|
+ const posRect = this.reverse(this._selectorPosStart, this._selectorPosNow);
|
|
|
this._selectorPosNow = { x: posIn.x, y: posIn.y };
|
|
|
this._selectorRect.x(posRect.x1);
|
|
|
this._selectorRect.y(posRect.y1);
|
|
@@ -86,19 +106,22 @@ export class Selector {
|
|
|
this._selectorRect.height(posRect.y2 - posRect.y1);
|
|
|
this._selectorRect.visible(true);
|
|
|
for (let i = 0; i < currentObjects.length; i = i + 1) {
|
|
|
- let object = currentObjects[i].konvaObject;
|
|
|
+ const aggregator = currentObjects[i];
|
|
|
+ const object = aggregator.konvaObject;
|
|
|
+ if (object == undefined) return;
|
|
|
if (object.children != undefined && object.children.length > 0) {
|
|
|
for (let j = 0; j < object.children.length; j++) {
|
|
|
- this.style(object.children[j], this._selectorRect);
|
|
|
+ this.style(object.children[j], this._selectorRect, aggregator);
|
|
|
}
|
|
|
} else {
|
|
|
- this.style(object, this._selectorRect);
|
|
|
+ this.style(object, this._selectorRect, aggregator);
|
|
|
}
|
|
|
}
|
|
|
this._stage.draw();
|
|
|
}
|
|
|
|
|
|
- style(object, selectorRect) {
|
|
|
+ style(object, selectorRect, aggregator) {
|
|
|
+ if (object == undefined) return;
|
|
|
if (object.attrs.selectable != undefined) {
|
|
|
if (object.attrs.selectable == false) {
|
|
|
return;
|
|
@@ -107,14 +130,14 @@ export class Selector {
|
|
|
if (this.hitCheck(object, selectorRect)) {
|
|
|
object.stroke("#33BCFF");
|
|
|
object.fill("#33BCFF");
|
|
|
- this.setObject(object);
|
|
|
+ this.setObject(aggregator);
|
|
|
} else {
|
|
|
if (object.attrs.style != undefined) {
|
|
|
- this.removeObject(object);
|
|
|
+ this.removeObject(aggregator);
|
|
|
object.stroke(object.attrs.style.stroke);
|
|
|
object.fill(object.attrs.style.fill);
|
|
|
} else {
|
|
|
- this.removeObject(object);
|
|
|
+ this.removeObject(aggregator);
|
|
|
object.stroke("black");
|
|
|
}
|
|
|
}
|
|
@@ -140,13 +163,11 @@ export class Selector {
|
|
|
}
|
|
|
|
|
|
setObject(object) {
|
|
|
- if (this._objects.includes(object)) return;
|
|
|
- this._objects.push(object);
|
|
|
+ Objects.setSelectedOject(object);
|
|
|
}
|
|
|
|
|
|
removeObject(object) {
|
|
|
- if (this._objects.length == 0) return;
|
|
|
- this._objects.splice(this._objects.indexOf(object), 1);
|
|
|
+ Objects.removeSelectedOject(object);
|
|
|
}
|
|
|
|
|
|
reverse(r1, r2) {
|