Kaynağa Gözat

Update 'src/app/components/intersection-component/drawers/intersection-drawer.js'

Fix ID numbering and read of GEO with 3 straight lines (not fineshed!)
Several comments and try/catch to allow debug
leo 2 yıl önce
ebeveyn
işleme
9553d01813

+ 61 - 21
src/app/components/intersection-component/drawers/intersection-drawer.js

@@ -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