|
@@ -38,49 +38,82 @@ export class IntersectionDrawer extends Drawer {
|
|
|
|
|
|
// @calledby ./app/core/drawers/stage.js! draw (e): this.drawer.draw(e);
|
|
|
draw (e) {
|
|
|
- var aux = "(debug - uncomment 'aux')"; //D console.log("intersection-drawer.js!draw(e): inicio");
|
|
|
+ var auxE = "", aux = "debug - uncomment 'aux' = "; //D console.log("intersection-drawer.js!draw(e): inicio");
|
|
|
+ var aux4 = "";
|
|
|
try {
|
|
|
- if (e != undefined && e.attrs != undefined) { //D aux += "1, "; //D
|
|
|
+ if (e != undefined && e.attrs != undefined) { //D
|
|
|
+ auxE += "1, "; //D
|
|
|
this.aggregatorA = this.getObjectAggregatorByGenericObject(e.attrs.genericObject.og1);
|
|
|
this.aggregatorB = this.getObjectAggregatorByGenericObject(e.attrs.genericObject.og2);
|
|
|
this.drawByIntersectionPoints([e.attrs.genericObject]);
|
|
|
- console.log("intersection-drawer.js!draw(e): final 1");
|
|
|
+ var aux2 = "this.aggregatorA.id=" + (this.aggregatorA!=undefined?this.aggregatorA.id:"<>");
|
|
|
+ aux2 += ", this.aggregatorB.id=" + (this.aggregatorB!=undefined?this.aggregatorB.id:"<>");
|
|
|
+ console.log("intersection-drawer.js!draw(e): final 1 - " + aux2);
|
|
|
return;
|
|
|
- } //D aux += "2, "; //D
|
|
|
+ } //D
|
|
|
+ auxE += "2, "; //D
|
|
|
if (e == undefined || !this.isValidObject(e.target)) {
|
|
|
- console.log("intersection-drawer.js!draw(e): final 2");
|
|
|
+ var aux3 = (e==undefined? " e==undefined" : (e.target==undefined? "e.target==undefined?" : (e.target.attrs==undefined ? "e.target.attrs==undefined" : undefined)) );
|
|
|
+ console.log("intersection-drawer.js!draw(e): final 2, e : " + aux3);
|
|
|
return;
|
|
|
- } //D aux += "3, "; //D
|
|
|
+ } //D
|
|
|
+ auxE += "3, "; //D
|
|
|
const selectedTool = App.getSelectedTool();
|
|
|
if (selectedTool != undefined && selectedTool.drawer != undefined && selectedTool.drawer.elementClass == ELEMENTS_CLASS.INTERSECTION_POINT) {
|
|
|
- //D aux += "4, ";
|
|
|
- if (this.state == undefined || this.state == IntersectionDrawer.FIRST_OBJECT_STATE) { //D aux += "5, ";
|
|
|
- this.setFirstObject(e.target);
|
|
|
+ //D
|
|
|
+ auxE += "4, ";
|
|
|
+ if (this.state == undefined || this.state == IntersectionDrawer.FIRST_OBJECT_STATE) { //D
|
|
|
+ auxE += "5, ";
|
|
|
+ try {
|
|
|
+ aux4 = "setFirstObject: this.aggregatorA.id = " + (e.target==undefined ? "<>" : JSON.stringify(Object.keys(e.target))); // this.getObjectAggregator(e.target).id);
|
|
|
+// intersection-drawer.js!draw(e): final 3, setFirstObject: error in this.getObjectAggregator(e.target) TypeError: this.getObjectAggregator(...) is undefined
|
|
|
+ // aux4 += ", e.target=" + JSON.stringify(e.target);
|
|
|
+ } catch (error) { aux4 = "setFirstObject: error in this.getObjectAggregator(" + JSON.stringify(Object.keys(e.target)) + ") " + error; };
|
|
|
+ auxE += "6, ";
|
|
|
+ this.setFirstObject(e.target); // this.aggregatorA = this.getObjectAggregator(e.target)
|
|
|
this.setState(IntersectionDrawer.SECOND_OBJECT_STATE);
|
|
|
+ auxE += "7, ";
|
|
|
}
|
|
|
- else if (this.state == IntersectionDrawer.SECOND_OBJECT_STATE) { //D aux += "6, ";
|
|
|
- this.setSecondObject(e.target);
|
|
|
+ else if (this.state == IntersectionDrawer.SECOND_OBJECT_STATE) { //D
|
|
|
+ auxE += "8, ";
|
|
|
+ aux4 = "setSecondObject: this.aggregatorB.id = " + (e.target==undefined ? "<>" : this.getObjectAggregator(e.target).id);
|
|
|
+ this.setSecondObject(e.target); // this.aggregatorB = this.getObjectAggregator(e.target)
|
|
|
this.drawPoint();
|
|
|
+ aux += "9, ";
|
|
|
this.reset();
|
|
|
+ aux += "10, ";
|
|
|
// this.clear();
|
|
|
}
|
|
|
}
|
|
|
- } catch (error) { console.log("intersection-drawer.js!draw(e): " + error + "\n * " + aux); }
|
|
|
- console.log("intersection-drawer.js!draw(e): final 3");
|
|
|
+ } catch (error) { console.log("intersection-drawer.js!draw(e): " + error + " " + auxE + "\n * " + aux); }
|
|
|
+ console.log("intersection-drawer.js!draw(e): final 3, " + aux4);
|
|
|
} // draw(e)
|
|
|
|
|
|
setFirstObject (konvaObject) {
|
|
|
- const aggregator = this.getObjectAggregator(konvaObject);
|
|
|
- this.aggregatorA = aggregator;
|
|
|
+ var aggregator = null;
|
|
|
+ var auxE = "";
|
|
|
+ try {
|
|
|
+ aggregator = this.getObjectAggregator(konvaObject); auxE = " (after aggregator)";
|
|
|
+ this.aggregatorA = aggregator;
|
|
|
+ } catch (error) { console.log("intersection-drawer.js!setFirstObject(konvaObject): " + error + auxE); }
|
|
|
}
|
|
|
|
|
|
setSecondObject (konvaObject) {
|
|
|
- const aggregator = this.getObjectAggregator(konvaObject);
|
|
|
- this.aggregatorB = aggregator;
|
|
|
+ var aggregator = null;
|
|
|
+ var auxE = "";
|
|
|
+ try {
|
|
|
+ aggregator = this.getObjectAggregator(konvaObject); auxE = " (after aggregator)";
|
|
|
+ this.aggregatorB = aggregator;
|
|
|
+ } catch (error) { console.log("intersection-drawer.js!setSecondObject(konvaObject): " + error + auxE); }
|
|
|
}
|
|
|
|
|
|
+ static count = 0;
|
|
|
getObjectAggregator (konvaObject) {
|
|
|
- return objects.getByKonvaObject(konvaObject)[0];
|
|
|
+ const answer = objects.getByKonvaObject(konvaObject); // app/core/application/objects.js: getByKonvaObject(konvaObject)
|
|
|
+ IntersectionDrawer.count++; // D console.trace();
|
|
|
+ console.log("intersection-drawer.js!getObjectAggregator(konvaObject): " + IntersectionDrawer.count +
|
|
|
+ " objects.getByKonvaObject(konvaObject) = " + JSON.stringify(Object.keys(answer))); // Object.keys to avoid "TypeError: cyclic object value"
|
|
|
+ return answer[0];
|
|
|
}
|
|
|
|
|
|
getObjectAggregatorByGenericObject (genericObject) {
|
|
@@ -125,9 +158,16 @@ export class IntersectionDrawer extends Drawer {
|
|
|
// Used to create new intersection point
|
|
|
//@calledby this.draw()
|
|
|
drawPoint () {
|
|
|
- const og1 = this.aggregatorA.genericObject, og2 = this.aggregatorB.genericObject;
|
|
|
- const str_a1 = "og1=(" + og1.elementClass + ",id=" + og1.id + ")"; //D genericObject
|
|
|
- const str_a2 = "og2=(" + og2.elementClass + ",id=" + og2.id + ")"; //D
|
|
|
+ var og1, og2, str_a1, str_a2;
|
|
|
+ if (this.aggregatorA==undefined || this.aggregatorB==undefined) {
|
|
|
+ if (this.aggregatorA==undefined)
|
|
|
+ this.aggregatorA = this.aggregatorB;
|
|
|
+ console.log("intersection-drawer.js!drawPoint(): error undefined: this.aggregatorA=" + this.aggregatorA + " or this.aggregatorB=" + this.aggregatorB);
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ og1 = this.aggregatorA.genericObject, og2 = this.aggregatorB.genericObject;
|
|
|
+ str_a1 = "og1=(" + og1.elementClass + ",id=" + og1.id + ")"; //D genericObject
|
|
|
+ str_a2 = "og2=(" + og2.elementClass + ",id=" + og2.id + ")"; //D
|
|
|
if (this.alreadyHasIntersection(og1,og2,str_a1,str_a2))
|
|
|
return; // intersection already defined by line/segment.pointA or pointB
|
|
|
console.log("intersection-drawer.js!drawPoint(): create intersection between " + str_a1 + " , " + str_a2); //D //leo
|