|
@@ -1,3 +1,14 @@
|
|
|
+/*
|
|
|
+ * iGeom by LInE
|
|
|
+ * Free software to student private data
|
|
|
+ *
|
|
|
+ * http://www.matematica.br/igeom
|
|
|
+ * http://www.usp.br/line
|
|
|
+ *
|
|
|
+ * ./app/core/parser/parser-orchestrator.js
|
|
|
+ * @version 2023/07/14: Fixe reading GEO file with midpoint
|
|
|
+ */
|
|
|
+
|
|
|
import { ELEMENTS_CLASS } from "../enums/elements-class-enum";
|
|
|
import { PointModel } from "../../components/point-component/models/point-model";
|
|
|
import { MiddlePointModel } from "../../components/middle-point/models/middle-point-model";
|
|
@@ -15,72 +26,114 @@ export class ParserOrchestrator {
|
|
|
this.drawersMap = new Map();
|
|
|
this.tools = menu.tools;
|
|
|
}
|
|
|
+
|
|
|
orchestrate () {
|
|
|
-var aux = "";
|
|
|
-var ii=0;
|
|
|
- for (const i in this.mapArr) { this.do(this.mapArr[i]); aux += "(" + ii + "," + this.mapArr[i] + "); "; ii++; }
|
|
|
- for (const i in this.list) this.draw(this.list[i]);
|
|
|
-console.log("parser-orchestrator.js: orchestrate(): " + aux);
|
|
|
+ var aux = ""; //D
|
|
|
+ var ii=0; //D
|
|
|
+ try {
|
|
|
+ for (const i in this.mapArr) {
|
|
|
+ this.do(this.mapArr[i]);
|
|
|
+ //D aux += "(" + ii + "," + this.mapArr[i] + "); "; ii++;
|
|
|
+ }
|
|
|
+ for (const i in this.list) {
|
|
|
+ aux += "(" + ii + "," + this.list[i] + "); "; ii++;
|
|
|
+ this.draw(this.list[i]);
|
|
|
+ }
|
|
|
+ } catch (error) {
|
|
|
+ console.log("parser-orchestrator.js!orchestrate(): error " + error + "\n * " + aux);
|
|
|
+ }
|
|
|
+ console.log("parser-orchestrator.js: orchestrate(): end"); //D
|
|
|
}
|
|
|
+
|
|
|
do (map) {
|
|
|
+ var aux = "", int_type = "-1"; //D
|
|
|
let object;
|
|
|
- switch (map.get("type")) {
|
|
|
- case ELEMENTS_CLASS.CIRCUMFERENCE:
|
|
|
- object = CircumferenceModel.do(map, this.list);
|
|
|
- break;
|
|
|
- case ELEMENTS_CLASS.INTERSECTION_POINT:
|
|
|
- object = IntersectionModel.do(map, this.list);
|
|
|
- break;
|
|
|
- case ELEMENTS_CLASS.POINT:
|
|
|
- object = PointModel.do(map, this.list);
|
|
|
- break;
|
|
|
- case ELEMENTS_CLASS.MIDDLE_POINT:
|
|
|
- object = MiddlePointModel.do(map, this.list);
|
|
|
- break;
|
|
|
- case ELEMENTS_CLASS.LINE_SEGMENT:
|
|
|
- object = LineSegmentModel.do(map, this.list);
|
|
|
- break;
|
|
|
- case ELEMENTS_CLASS.LINE:
|
|
|
- object = LineModel.do(map, this.list);
|
|
|
- break;
|
|
|
- default:
|
|
|
- break;
|
|
|
- }
|
|
|
- if (object == undefined) return;
|
|
|
- switch (object.elementClass) {
|
|
|
- case ELEMENTS_CLASS.CIRCUMFERENCE:
|
|
|
- Label.pushLower(object.label);
|
|
|
- case ELEMENTS_CLASS.LINE_SEGMENT:
|
|
|
- Label.pushLower(object.label);
|
|
|
- default:
|
|
|
- Label.pushUpper(object.label);
|
|
|
- }
|
|
|
- this.list.push(object);
|
|
|
- }
|
|
|
- draw (object) {
|
|
|
- if (object == undefined) return;
|
|
|
- let drawer;
|
|
|
+ try {
|
|
|
+ aux = "1, "; //D
|
|
|
+ int_type = map.get("type");
|
|
|
+ switch (int_type) {
|
|
|
+ case ELEMENTS_CLASS.CIRCUMFERENCE:
|
|
|
+ aux = "2, "; //D
|
|
|
+ object = CircumferenceModel.do(map, this.list);
|
|
|
+ break;
|
|
|
+ case ELEMENTS_CLASS.INTERSECTION_POINT:
|
|
|
+ aux = "3, "; //D
|
|
|
+ object = IntersectionModel.do(map, this.list);
|
|
|
+ break;
|
|
|
+ case ELEMENTS_CLASS.POINT:
|
|
|
+ aux = "4, "; //D
|
|
|
+ object = PointModel.do(map, this.list);
|
|
|
+ break;
|
|
|
+ case ELEMENTS_CLASS.MIDDLE_POINT:
|
|
|
+ aux = "5, "; //D
|
|
|
+ object = MiddlePointModel.do(map, this.list);
|
|
|
+ break;
|
|
|
+ case ELEMENTS_CLASS.LINE_SEGMENT:
|
|
|
+ aux = "6, "; //D
|
|
|
+ object = LineSegmentModel.do(map, this.list);
|
|
|
+ break;
|
|
|
+ case ELEMENTS_CLASS.LINE:
|
|
|
+ aux = "7, "; //D
|
|
|
+ object = LineModel.do(map, this.list);
|
|
|
+ break;
|
|
|
+ default:
|
|
|
+ aux = "switch type missing! ELEMENTS_CLASS elementClass NOT implemented yet! Look iGeomJS code or try to report this to iGeomJS developers..."; //D
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ if (object == undefined) return;
|
|
|
+ switch (object.elementClass) {
|
|
|
+ case ELEMENTS_CLASS.CIRCUMFERENCE:
|
|
|
+ Label.pushLower(object.label);
|
|
|
+ case ELEMENTS_CLASS.LINE_SEGMENT:
|
|
|
+ Label.pushLower(object.label);
|
|
|
+ //TODO: missing ELEMENTS_CLASS.MIDDLE_POINT ??
|
|
|
+ default:
|
|
|
+ Label.pushUpper(object.label);
|
|
|
+ }
|
|
|
+ this.list.push(object);
|
|
|
+ } catch (error) { console.log("parser-orchestrator.js!do(map): error " + error + "\n * " + aux); }
|
|
|
+ } // do(map)
|
|
|
|
|
|
- switch (object.elementClass) {
|
|
|
- case ELEMENTS_CLASS.CIRCUMFERENCE:
|
|
|
- drawer = this.getDrawer(ELEMENTS_CLASS.CIRCUMFERENCE)
|
|
|
- break;
|
|
|
- case ELEMENTS_CLASS.INTERSECTION_POINT:
|
|
|
- drawer = this.getDrawer(ELEMENTS_CLASS.INTERSECTION_POINT)
|
|
|
- break;
|
|
|
- case ELEMENTS_CLASS.POINT:
|
|
|
- drawer = this.getDrawer(ELEMENTS_CLASS.POINT)
|
|
|
- break;
|
|
|
- case ELEMENTS_CLASS.LINE_SEGMENT:
|
|
|
- drawer = this.getDrawer(ELEMENTS_CLASS.LINE_SEGMENT)
|
|
|
- break;
|
|
|
- case ELEMENTS_CLASS.LINE:
|
|
|
- drawer = this.getDrawer(ELEMENTS_CLASS.LINE)
|
|
|
- break;
|
|
|
- default:
|
|
|
- break;
|
|
|
- }
|
|
|
- drawer.draw ({ attrs: { genericObject: object } });
|
|
|
+ draw (object) {
|
|
|
+ var aux = ""; //D
|
|
|
+ try {
|
|
|
+ console.log("parser-orchestrator.js: draw(object): " + object); //D
|
|
|
+ aux = "1, "; //D
|
|
|
+ if (object == undefined) return;
|
|
|
+ aux += "2, "; //D
|
|
|
+ let drawer;
|
|
|
+ aux += "3, "; //D
|
|
|
+ switch (object.elementClass) {
|
|
|
+ case ELEMENTS_CLASS.CIRCUMFERENCE:
|
|
|
+ aux += "4, "; //D
|
|
|
+ drawer = this.getDrawer(ELEMENTS_CLASS.CIRCUMFERENCE);
|
|
|
+ break;
|
|
|
+ case ELEMENTS_CLASS.INTERSECTION_POINT:
|
|
|
+ aux += "5, "; //D
|
|
|
+ drawer = this.getDrawer(ELEMENTS_CLASS.INTERSECTION_POINT);
|
|
|
+ break;
|
|
|
+ case ELEMENTS_CLASS.POINT:
|
|
|
+ aux += "6, "; //D
|
|
|
+ drawer = this.getDrawer(ELEMENTS_CLASS.POINT);
|
|
|
+ break;
|
|
|
+ case ELEMENTS_CLASS.LINE_SEGMENT:
|
|
|
+ aux += "7, "; //D
|
|
|
+ drawer = this.getDrawer(ELEMENTS_CLASS.LINE_SEGMENT);
|
|
|
+ break;
|
|
|
+ case ELEMENTS_CLASS.LINE:
|
|
|
+ aux += "8, "; //D
|
|
|
+ drawer = this.getDrawer(ELEMENTS_CLASS.LINE);
|
|
|
+ break;
|
|
|
+ case ELEMENTS_CLASS.MIDDLE_POINT:
|
|
|
+ aux += "9, "; //D
|
|
|
+ drawer = this.getDrawer(ELEMENTS_CLASS.MIDDLE_POINT);
|
|
|
+ break;
|
|
|
+ default:
|
|
|
+ aux += "10 = object.elementClass NOT implemented yet! Look iGeomJS code or try to report this to iGeomJS developers..."; //D
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ drawer.draw ({ attrs: { genericObject: object } });
|
|
|
+ } catch (error) { console.log("parser-orchestrator.js!draw(object): error " + error + "\n * " + aux); }
|
|
|
}
|
|
|
|
|
|
getDrawer (elementClass) {
|