diff --git a/build/lib/getPoiPolyPointsAsync.js b/build/lib/getPoiPolyPointsAsync.js index 378d227..5bdf0b9 100644 --- a/build/lib/getPoiPolyPointsAsync.js +++ b/build/lib/getPoiPolyPointsAsync.js @@ -38,9 +38,11 @@ const getPoiPolyPointsAsync = async ({ const analyzedBbox = (0, import_turf.bbox)(analyzedFeature); const analyzedBox = (0, import_turf.bboxPolygon)(analyzedBbox); const sideLength = Math.sqrt((0, import_turf.area)(analyzedBox)) / 1e3; - console.log("sideLength >>>", sideLength); + if (false) + console.log("sideLength >>>", sideLength); const sideLengthDivisor = (0, import_getDevisor.getDevisor)(sideLength); - console.log("sideLengthDivisor >>>", sideLengthDivisor); + if (false) + console.log("sideLengthDivisor >>>", sideLengthDivisor); const cellWidth = sideLength / sideLengthDivisor; let bufferedBbox; switch (type) { @@ -54,9 +56,11 @@ const getPoiPolyPointsAsync = async ({ throw new Error("Invalid type in getPoiPolyPointsAsync"); } const squareBoxGrid = (0, import_turf.squareGrid)(bufferedBbox, cellWidth); - console.log("squareBoxGrid >>>", squareBoxGrid.features.length); + if (false) + console.log("squareBoxGrid >>>", squareBoxGrid.features.length); const squareBoxGridReduced = squareBoxGrid.features.filter((feature) => !(0, import_turf.booleanDisjoint)(feature, analyzedFeature)); - console.log("squareBoxGridReduced >>>", squareBoxGridReduced.length); + if (false) + console.log("squareBoxGridReduced >>>", squareBoxGridReduced.length); let resultPoiPoints = []; let resultPolyLines = []; for (const feature of squareBoxGridReduced) { diff --git a/build/lib/getPoiPolyPointsAsync.js.map b/build/lib/getPoiPolyPointsAsync.js.map index 32cb44a..63a5436 100644 --- a/build/lib/getPoiPolyPointsAsync.js.map +++ b/build/lib/getPoiPolyPointsAsync.js.map @@ -1,7 +1,7 @@ { "version": 3, "sources": ["../../src/lib/getPoiPolyPointsAsync.ts"], - "sourcesContent": ["import {\n\tBBox,\n\tFeature,\n\tLineString,\n\tPoint,\n\tPolygon,\n\tarea,\n\tbbox,\n\tbboxPolygon,\n\tbooleanDisjoint,\n\tbuffer,\n\tfeatureCollection,\n\tpointToLineDistance,\n\tpointsWithinPolygon,\n\tsquareGrid,\n} from \"@turf/turf\";\nimport { getDevisor } from \"./getDevisor\";\nimport { traps } from \"./atudo/traps\";\n\nexport enum AnalyzedType {\n\tPOLYGONE,\n\tLINESTRING,\n}\n\ntype Options = {\n\tanalyzedFeature: Feature | Feature;\n\ttype: AnalyzedType;\n\tmaxTrapDistance?: number | undefined;\n};\n\nconst getPoiPolyPointsAsync = async ({\n\tanalyzedFeature,\n\ttype,\n\tmaxTrapDistance,\n}: Options): Promise<{\n\tresultPoiPoints: Feature[];\n\tresultPolyLines: Feature[];\n}> => {\n\t// const areaPolygon = Object.values(data!.areaPolygons!)[0];\n\tconst analyzedBbox = bbox(analyzedFeature);\n\tconst analyzedBox = bboxPolygon(analyzedBbox);\n\n\tconst sideLength = Math.sqrt(area(analyzedBox)) / 1_000;\n\tconsole.log(\"sideLength >>>\", sideLength);\n\n\tconst sideLengthDivisor = getDevisor(sideLength);\n\tconsole.log(\"sideLengthDivisor >>>\", sideLengthDivisor);\n\n\tconst cellWidth = sideLength / sideLengthDivisor;\n\n\tlet bufferedBbox: BBox;\n\n\tswitch (type) {\n\t\tcase AnalyzedType.POLYGONE:\n\t\t\tbufferedBbox = bbox(buffer(analyzedFeature, cellWidth, { units: \"kilometers\" }));\n\t\t\tbreak;\n\t\tcase AnalyzedType.LINESTRING:\n\t\t\tbufferedBbox = bbox(buffer(analyzedBox, cellWidth, { units: \"kilometers\" }));\n\t\t\tbreak;\n\t\tdefault:\n\t\t\tthrow new Error(\"Invalid type in getPoiPolyPointsAsync\");\n\t}\n\n\tconst squareBoxGrid = squareGrid(bufferedBbox, cellWidth);\n\tconsole.log(\"squareBoxGrid >>>\", squareBoxGrid.features.length);\n\n\tconst squareBoxGridReduced = squareBoxGrid.features.filter((feature) => !booleanDisjoint(feature, analyzedFeature));\n\tconsole.log(\"squareBoxGridReduced >>>\", squareBoxGridReduced.length);\n\n\tlet resultPoiPoints: Feature[] = [];\n\tlet resultPolyLines: Feature[] = [];\n\n\tfor (const feature of squareBoxGridReduced) {\n\t\tconst tmpBbox = bbox(feature);\n\n\t\tconst { poiPoints, polyLines } = await traps(\n\t\t\t{\n\t\t\t\tlng: tmpBbox[0],\n\t\t\t\tlat: tmpBbox[1],\n\t\t\t},\n\t\t\t{\n\t\t\t\tlng: tmpBbox[2],\n\t\t\t\tlat: tmpBbox[3],\n\t\t\t},\n\t\t);\n\n\t\tresultPoiPoints = resultPoiPoints.concat(poiPoints);\n\t\tresultPolyLines = resultPolyLines.concat(polyLines);\n\t}\n\n\tswitch (type) {\n\t\tcase AnalyzedType.POLYGONE:\n\t\t\tresultPoiPoints = pointsWithinPolygon(\n\t\t\t\tfeatureCollection(resultPoiPoints),\n\t\t\t\tanalyzedFeature as Feature,\n\t\t\t).features;\n\n\t\t\tresultPolyLines = resultPolyLines.filter((polyLine) => {\n\t\t\t\treturn !booleanDisjoint(polyLine, analyzedFeature);\n\t\t\t});\n\t\t\tbreak;\n\n\t\tcase AnalyzedType.LINESTRING:\n\t\t\tresultPoiPoints = resultPoiPoints.filter((poiPoint) => {\n\t\t\t\tconst trapDistance = pointToLineDistance(poiPoint, analyzedFeature as Feature, {\n\t\t\t\t\tunits: \"meters\",\n\t\t\t\t});\n\n\t\t\t\treturn trapDistance <= maxTrapDistance!;\n\t\t\t});\n\n\t\t\tresultPolyLines = resultPolyLines.filter((polyLine) => {\n\t\t\t\treturn !booleanDisjoint(polyLine, analyzedFeature);\n\t\t\t});\n\t\t\tbreak;\n\n\t\tdefault:\n\t\t\tthrow new Error(\"Invalid type in getPoiPolyPointsAsync\");\n\t}\n\n\treturn { resultPoiPoints, resultPolyLines };\n};\n\nexport default getPoiPolyPointsAsync;\n"], - "mappings": ";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,kBAeO;AACP,wBAA2B;AAC3B,mBAAsB;AAEf,IAAK,eAAL,kBAAKA,kBAAL;AACN,EAAAA,4BAAA;AACA,EAAAA,4BAAA;AAFW,SAAAA;AAAA,GAAA;AAWZ,MAAM,wBAAwB,OAAO;AAAA,EACpC;AAAA,EACA;AAAA,EACA;AACD,MAGM;AAEL,QAAM,mBAAe,kBAAK,eAAe;AACzC,QAAM,kBAAc,yBAAY,YAAY;AAE5C,QAAM,aAAa,KAAK,SAAK,kBAAK,WAAW,CAAC,IAAI;AAClD,UAAQ,IAAI,kBAAkB,UAAU;AAExC,QAAM,wBAAoB,8BAAW,UAAU;AAC/C,UAAQ,IAAI,yBAAyB,iBAAiB;AAEtD,QAAM,YAAY,aAAa;AAE/B,MAAI;AAEJ,UAAQ,MAAM;AAAA,IACb,KAAK;AACJ,yBAAe,sBAAK,oBAAO,iBAAiB,WAAW,EAAE,OAAO,aAAa,CAAC,CAAC;AAC/E;AAAA,IACD,KAAK;AACJ,yBAAe,sBAAK,oBAAO,aAAa,WAAW,EAAE,OAAO,aAAa,CAAC,CAAC;AAC3E;AAAA,IACD;AACC,YAAM,IAAI,MAAM,uCAAuC;AAAA,EACzD;AAEA,QAAM,oBAAgB,wBAAW,cAAc,SAAS;AACxD,UAAQ,IAAI,qBAAqB,cAAc,SAAS,MAAM;AAE9D,QAAM,uBAAuB,cAAc,SAAS,OAAO,CAAC,YAAY,KAAC,6BAAgB,SAAS,eAAe,CAAC;AAClH,UAAQ,IAAI,4BAA4B,qBAAqB,MAAM;AAEnE,MAAI,kBAAmD,CAAC;AACxD,MAAI,kBAAyD,CAAC;AAE9D,aAAW,WAAW,sBAAsB;AAC3C,UAAM,cAAU,kBAAK,OAAO;AAE5B,UAAM,EAAE,WAAW,UAAU,IAAI,UAAM;AAAA,MACtC;AAAA,QACC,KAAK,QAAQ,CAAC;AAAA,QACd,KAAK,QAAQ,CAAC;AAAA,MACf;AAAA,MACA;AAAA,QACC,KAAK,QAAQ,CAAC;AAAA,QACd,KAAK,QAAQ,CAAC;AAAA,MACf;AAAA,IACD;AAEA,sBAAkB,gBAAgB,OAAO,SAAS;AAClD,sBAAkB,gBAAgB,OAAO,SAAS;AAAA,EACnD;AAEA,UAAQ,MAAM;AAAA,IACb,KAAK;AACJ,4BAAkB;AAAA,YACjB,+BAAkB,eAAe;AAAA,QACjC;AAAA,MACD,EAAE;AAEF,wBAAkB,gBAAgB,OAAO,CAAC,aAAa;AACtD,eAAO,KAAC,6BAAgB,UAAU,eAAe;AAAA,MAClD,CAAC;AACD;AAAA,IAED,KAAK;AACJ,wBAAkB,gBAAgB,OAAO,CAAC,aAAa;AACtD,cAAM,mBAAe,iCAAoB,UAAU,iBAAwC;AAAA,UAC1F,OAAO;AAAA,QACR,CAAC;AAED,eAAO,gBAAgB;AAAA,MACxB,CAAC;AAED,wBAAkB,gBAAgB,OAAO,CAAC,aAAa;AACtD,eAAO,KAAC,6BAAgB,UAAU,eAAe;AAAA,MAClD,CAAC;AACD;AAAA,IAED;AACC,YAAM,IAAI,MAAM,uCAAuC;AAAA,EACzD;AAEA,SAAO,EAAE,iBAAiB,gBAAgB;AAC3C;AAEA,IAAO,gCAAQ;", + "sourcesContent": ["import {\n\tBBox,\n\tFeature,\n\tLineString,\n\tPoint,\n\tPolygon,\n\tarea,\n\tbbox,\n\tbboxPolygon,\n\tbooleanDisjoint,\n\tbuffer,\n\tfeatureCollection,\n\tpointToLineDistance,\n\tpointsWithinPolygon,\n\tsquareGrid,\n} from \"@turf/turf\";\nimport { getDevisor } from \"./getDevisor\";\nimport { traps } from \"./atudo/traps\";\n\nexport enum AnalyzedType {\n\tPOLYGONE,\n\tLINESTRING,\n}\n\ntype Options = {\n\tanalyzedFeature: Feature | Feature;\n\ttype: AnalyzedType;\n\tmaxTrapDistance?: number | undefined;\n};\n\nconst getPoiPolyPointsAsync = async ({\n\tanalyzedFeature,\n\ttype,\n\tmaxTrapDistance,\n}: Options): Promise<{\n\tresultPoiPoints: Feature[];\n\tresultPolyLines: Feature[];\n}> => {\n\t// const areaPolygon = Object.values(data!.areaPolygons!)[0];\n\tconst analyzedBbox = bbox(analyzedFeature);\n\tconst analyzedBox = bboxPolygon(analyzedBbox);\n\n\tconst sideLength = Math.sqrt(area(analyzedBox)) / 1_000;\n\tif (process.env.NODE_ENV === \"development\") console.log(\"sideLength >>>\", sideLength);\n\n\tconst sideLengthDivisor = getDevisor(sideLength);\n\tif (process.env.NODE_ENV === \"development\") console.log(\"sideLengthDivisor >>>\", sideLengthDivisor);\n\n\tconst cellWidth = sideLength / sideLengthDivisor;\n\n\tlet bufferedBbox: BBox;\n\n\tswitch (type) {\n\t\tcase AnalyzedType.POLYGONE:\n\t\t\tbufferedBbox = bbox(buffer(analyzedFeature, cellWidth, { units: \"kilometers\" }));\n\t\t\tbreak;\n\t\tcase AnalyzedType.LINESTRING:\n\t\t\tbufferedBbox = bbox(buffer(analyzedBox, cellWidth, { units: \"kilometers\" }));\n\t\t\tbreak;\n\t\tdefault:\n\t\t\tthrow new Error(\"Invalid type in getPoiPolyPointsAsync\");\n\t}\n\n\tconst squareBoxGrid = squareGrid(bufferedBbox, cellWidth);\n\tif (process.env.NODE_ENV === \"development\") console.log(\"squareBoxGrid >>>\", squareBoxGrid.features.length);\n\n\tconst squareBoxGridReduced = squareBoxGrid.features.filter((feature) => !booleanDisjoint(feature, analyzedFeature));\n\tif (process.env.NODE_ENV === \"development\") console.log(\"squareBoxGridReduced >>>\", squareBoxGridReduced.length);\n\n\tlet resultPoiPoints: Feature[] = [];\n\tlet resultPolyLines: Feature[] = [];\n\n\tfor (const feature of squareBoxGridReduced) {\n\t\tconst tmpBbox = bbox(feature);\n\n\t\tconst { poiPoints, polyLines } = await traps(\n\t\t\t{\n\t\t\t\tlng: tmpBbox[0],\n\t\t\t\tlat: tmpBbox[1],\n\t\t\t},\n\t\t\t{\n\t\t\t\tlng: tmpBbox[2],\n\t\t\t\tlat: tmpBbox[3],\n\t\t\t},\n\t\t);\n\n\t\tresultPoiPoints = resultPoiPoints.concat(poiPoints);\n\t\tresultPolyLines = resultPolyLines.concat(polyLines);\n\t}\n\n\tswitch (type) {\n\t\tcase AnalyzedType.POLYGONE:\n\t\t\tresultPoiPoints = pointsWithinPolygon(\n\t\t\t\tfeatureCollection(resultPoiPoints),\n\t\t\t\tanalyzedFeature as Feature,\n\t\t\t).features;\n\n\t\t\tresultPolyLines = resultPolyLines.filter((polyLine) => {\n\t\t\t\treturn !booleanDisjoint(polyLine, analyzedFeature);\n\t\t\t});\n\t\t\tbreak;\n\n\t\tcase AnalyzedType.LINESTRING:\n\t\t\tresultPoiPoints = resultPoiPoints.filter((poiPoint) => {\n\t\t\t\tconst trapDistance = pointToLineDistance(poiPoint, analyzedFeature as Feature, {\n\t\t\t\t\tunits: \"meters\",\n\t\t\t\t});\n\n\t\t\t\treturn trapDistance <= maxTrapDistance!;\n\t\t\t});\n\n\t\t\tresultPolyLines = resultPolyLines.filter((polyLine) => {\n\t\t\t\treturn !booleanDisjoint(polyLine, analyzedFeature);\n\t\t\t});\n\t\t\tbreak;\n\n\t\tdefault:\n\t\t\tthrow new Error(\"Invalid type in getPoiPolyPointsAsync\");\n\t}\n\n\treturn { resultPoiPoints, resultPolyLines };\n};\n\nexport default getPoiPolyPointsAsync;\n"], + "mappings": ";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,kBAeO;AACP,wBAA2B;AAC3B,mBAAsB;AAEf,IAAK,eAAL,kBAAKA,kBAAL;AACN,EAAAA,4BAAA;AACA,EAAAA,4BAAA;AAFW,SAAAA;AAAA,GAAA;AAWZ,MAAM,wBAAwB,OAAO;AAAA,EACpC;AAAA,EACA;AAAA,EACA;AACD,MAGM;AAEL,QAAM,mBAAe,kBAAK,eAAe;AACzC,QAAM,kBAAc,yBAAY,YAAY;AAE5C,QAAM,aAAa,KAAK,SAAK,kBAAK,WAAW,CAAC,IAAI;AAClD,MAAI;AAAwC,YAAQ,IAAI,kBAAkB,UAAU;AAEpF,QAAM,wBAAoB,8BAAW,UAAU;AAC/C,MAAI;AAAwC,YAAQ,IAAI,yBAAyB,iBAAiB;AAElG,QAAM,YAAY,aAAa;AAE/B,MAAI;AAEJ,UAAQ,MAAM;AAAA,IACb,KAAK;AACJ,yBAAe,sBAAK,oBAAO,iBAAiB,WAAW,EAAE,OAAO,aAAa,CAAC,CAAC;AAC/E;AAAA,IACD,KAAK;AACJ,yBAAe,sBAAK,oBAAO,aAAa,WAAW,EAAE,OAAO,aAAa,CAAC,CAAC;AAC3E;AAAA,IACD;AACC,YAAM,IAAI,MAAM,uCAAuC;AAAA,EACzD;AAEA,QAAM,oBAAgB,wBAAW,cAAc,SAAS;AACxD,MAAI;AAAwC,YAAQ,IAAI,qBAAqB,cAAc,SAAS,MAAM;AAE1G,QAAM,uBAAuB,cAAc,SAAS,OAAO,CAAC,YAAY,KAAC,6BAAgB,SAAS,eAAe,CAAC;AAClH,MAAI;AAAwC,YAAQ,IAAI,4BAA4B,qBAAqB,MAAM;AAE/G,MAAI,kBAAmD,CAAC;AACxD,MAAI,kBAAyD,CAAC;AAE9D,aAAW,WAAW,sBAAsB;AAC3C,UAAM,cAAU,kBAAK,OAAO;AAE5B,UAAM,EAAE,WAAW,UAAU,IAAI,UAAM;AAAA,MACtC;AAAA,QACC,KAAK,QAAQ,CAAC;AAAA,QACd,KAAK,QAAQ,CAAC;AAAA,MACf;AAAA,MACA;AAAA,QACC,KAAK,QAAQ,CAAC;AAAA,QACd,KAAK,QAAQ,CAAC;AAAA,MACf;AAAA,IACD;AAEA,sBAAkB,gBAAgB,OAAO,SAAS;AAClD,sBAAkB,gBAAgB,OAAO,SAAS;AAAA,EACnD;AAEA,UAAQ,MAAM;AAAA,IACb,KAAK;AACJ,4BAAkB;AAAA,YACjB,+BAAkB,eAAe;AAAA,QACjC;AAAA,MACD,EAAE;AAEF,wBAAkB,gBAAgB,OAAO,CAAC,aAAa;AACtD,eAAO,KAAC,6BAAgB,UAAU,eAAe;AAAA,MAClD,CAAC;AACD;AAAA,IAED,KAAK;AACJ,wBAAkB,gBAAgB,OAAO,CAAC,aAAa;AACtD,cAAM,mBAAe,iCAAoB,UAAU,iBAAwC;AAAA,UAC1F,OAAO;AAAA,QACR,CAAC;AAED,eAAO,gBAAgB;AAAA,MACxB,CAAC;AAED,wBAAkB,gBAAgB,OAAO,CAAC,aAAa;AACtD,eAAO,KAAC,6BAAgB,UAAU,eAAe;AAAA,MAClD,CAAC;AACD;AAAA,IAED;AACC,YAAM,IAAI,MAAM,uCAAuC;AAAA,EACzD;AAEA,SAAO,EAAE,iBAAiB,gBAAgB;AAC3C;AAEA,IAAO,gCAAQ;", "names": ["AnalyzedType"] } diff --git a/build/server/hooks/patchOrCreateArea.js b/build/server/hooks/patchOrCreateArea.js index 4382f65..fbc24ec 100644 --- a/build/server/hooks/patchOrCreateArea.js +++ b/build/server/hooks/patchOrCreateArea.js @@ -54,8 +54,10 @@ const patchOrCreateArea = () => { analyzedFeature: areaPolygon, type: import_getPoiPolyPointsAsync.AnalyzedType.POLYGONE }); - console.log("resultPoiPoints >>>", resultPoiPoints.length); - console.log("resultPolyLines >>>", resultPolyLines.length); + if (false) { + console.log("resultPoiPoints >>>", resultPoiPoints.length); + console.log("resultPolyLines >>>", resultPolyLines.length); + } data.polyLinesFeatureCollection = (0, import_helpers.featureCollection)(resultPolyLines); const resultTypeTraps = (0, import_determineTrapTypes.determineTrapTypes)(resultPoiPoints); const { @@ -76,7 +78,8 @@ const patchOrCreateArea = () => { }); } const endTime = performance.now(); - console.log(`patchOrCreateArea() dauerte: ${(endTime - startTime) / 1e3} Sekunden`); + if (false) + console.log(`patchOrCreateArea() dauerte: ${(endTime - startTime) / 1e3} Sekunden`); return context; }; }; diff --git a/build/server/hooks/patchOrCreateArea.js.map b/build/server/hooks/patchOrCreateArea.js.map index cd3030d..ccb129a 100644 --- a/build/server/hooks/patchOrCreateArea.js.map +++ b/build/server/hooks/patchOrCreateArea.js.map @@ -1,7 +1,7 @@ { "version": 3, "sources": ["../../../src/server/hooks/patchOrCreateArea.ts"], - "sourcesContent": ["import { featureCollection } from \"@turf/helpers\";\nimport { determineTrapTypes } from \"../../lib/atudo/determineTrapTypes\";\n// import { traps } from \"../../lib/atudo/traps\";\nimport { Scheduler } from \"../../lib/Scheduler\";\n\nimport type { Hook, HookContext } from \"@feathersjs/feathers\";\nimport { trapsChain } from \"./trapsChain\";\nimport getPoiPolyPointsAsync, { AnalyzedType } from \"../../lib/getPoiPolyPointsAsync\";\n\nconst patchOrCreateArea = (): Hook => {\n\treturn async (context: HookContext) => {\n\t\tconst startTime = performance.now();\n\t\tconst { data, service, params } = context;\n\t\tconst { _id } = data!;\n\n\t\tdata!.timestamp = new Date().toString();\n\n\t\tScheduler.pause(_id);\n\t\tservice.emit(\"status\", { _id: data!._id, status: \"loading\" });\n\n\t\tconst [record] = (await service.find({\n\t\t\tquery: { _id, $select: [\"areaTraps\"] },\n\t\t\tpaginate: false,\n\t\t})) as Partial;\n\n\t\tif (params.patchSourceFromClient || params.patchSourceFromServer) {\n\t\t\tconst areaPolygon = Object.values(data!.areaPolygons!)[0];\n\n\t\t\t// eslint-disable-next-line prefer-const\n\t\t\tlet { resultPoiPoints, resultPolyLines } = await getPoiPolyPointsAsync({\n\t\t\t\tanalyzedFeature: areaPolygon,\n\t\t\t\ttype: AnalyzedType.POLYGONE,\n\t\t\t});\n\t\t\tconsole.log(\"resultPoiPoints >>>\", resultPoiPoints.length);\n\t\t\tconsole.log(\"resultPolyLines >>>\", resultPolyLines.length);\n\n\t\t\tdata!.polyLinesFeatureCollection = featureCollection(resultPolyLines);\n\n\t\t\tconst resultTypeTraps = determineTrapTypes(resultPoiPoints);\n\t\t\tconst {\n\t\t\t\ttraps: areaTraps,\n\t\t\t\testablishedTraps,\n\t\t\t\tnewTraps,\n\t\t\t\trejectedTraps,\n\t\t\t} = trapsChain(record?.areaTraps, resultTypeTraps);\n\n\t\t\tdata!.areaTraps = areaTraps;\n\t\t\tdata!.areaTrapsEstablished = establishedTraps;\n\t\t\tdata!.areaTrapsNew = newTraps;\n\t\t\tdata!.areaTrapsRejected = rejectedTraps;\n\t\t\t// data!.areaTrapsNew = newTraps;\n\t\t\t// data!.areaTrapsRejected = rejectedTraps;\n\t\t}\n\n\t\tif (record !== undefined) {\n\t\t\tcontext.result = await service.patch(_id, data as Partial, {\n\t\t\t\t...params,\n\t\t\t\tpublishEvent: false,\n\t\t\t});\n\t\t}\n\n\t\tconst endTime = performance.now();\n\t\tconsole.log(`patchOrCreateArea() dauerte: ${(endTime - startTime) / 1_000} Sekunden`);\n\n\t\treturn context;\n\t};\n};\n\nexport { patchOrCreateArea };\n"], - "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,qBAAkC;AAClC,gCAAmC;AAEnC,uBAA0B;AAG1B,wBAA2B;AAC3B,mCAAoD;AAEpD,MAAM,oBAAoB,MAAY;AACrC,SAAO,OAAO,YAAyC;AACtD,UAAM,YAAY,YAAY,IAAI;AAClC,UAAM,EAAE,MAAM,SAAS,OAAO,IAAI;AAClC,UAAM,EAAE,IAAI,IAAI;AAEhB,SAAM,aAAY,oBAAI,KAAK,GAAE,SAAS;AAEtC,+BAAU,MAAM,GAAG;AACnB,YAAQ,KAAK,UAAU,EAAE,KAAK,KAAM,KAAK,QAAQ,UAAU,CAAC;AAE5D,UAAM,CAAC,MAAM,IAAK,MAAM,QAAQ,KAAK;AAAA,MACpC,OAAO,EAAE,KAAK,SAAS,CAAC,WAAW,EAAE;AAAA,MACrC,UAAU;AAAA,IACX,CAAC;AAED,QAAI,OAAO,yBAAyB,OAAO,uBAAuB;AACjE,YAAM,cAAc,OAAO,OAAO,KAAM,YAAa,EAAE,CAAC;AAGxD,UAAI,EAAE,iBAAiB,gBAAgB,IAAI,UAAM,6BAAAA,SAAsB;AAAA,QACtE,iBAAiB;AAAA,QACjB,MAAM,0CAAa;AAAA,MACpB,CAAC;AACD,cAAQ,IAAI,uBAAuB,gBAAgB,MAAM;AACzD,cAAQ,IAAI,uBAAuB,gBAAgB,MAAM;AAEzD,WAAM,iCAA6B,kCAAkB,eAAe;AAEpE,YAAM,sBAAkB,8CAAmB,eAAe;AAC1D,YAAM;AAAA,QACL,OAAO;AAAA,QACP;AAAA,QACA;AAAA,QACA;AAAA,MACD,QAAI,8BAAW,iCAAQ,WAAW,eAAe;AAEjD,WAAM,YAAY;AAClB,WAAM,uBAAuB;AAC7B,WAAM,eAAe;AACrB,WAAM,oBAAoB;AAAA,IAG3B;AAEA,QAAI,WAAW,QAAW;AACzB,cAAQ,SAAS,MAAM,QAAQ,MAAM,KAAK,MAAiC;AAAA,QAC1E,GAAG;AAAA,QACH,cAAc;AAAA,MACf,CAAC;AAAA,IACF;AAEA,UAAM,UAAU,YAAY,IAAI;AAChC,YAAQ,IAAI,iCAAiC,UAAU,aAAa,GAAK,WAAW;AAEpF,WAAO;AAAA,EACR;AACD;", + "sourcesContent": ["import { featureCollection } from \"@turf/helpers\";\nimport { determineTrapTypes } from \"../../lib/atudo/determineTrapTypes\";\n// import { traps } from \"../../lib/atudo/traps\";\nimport { Scheduler } from \"../../lib/Scheduler\";\n\nimport type { Hook, HookContext } from \"@feathersjs/feathers\";\nimport { trapsChain } from \"./trapsChain\";\nimport getPoiPolyPointsAsync, { AnalyzedType } from \"../../lib/getPoiPolyPointsAsync\";\n\nconst patchOrCreateArea = (): Hook => {\n\treturn async (context: HookContext) => {\n\t\tconst startTime = performance.now();\n\t\tconst { data, service, params } = context;\n\t\tconst { _id } = data!;\n\n\t\tdata!.timestamp = new Date().toString();\n\n\t\tScheduler.pause(_id);\n\t\tservice.emit(\"status\", { _id: data!._id, status: \"loading\" });\n\n\t\tconst [record] = (await service.find({\n\t\t\tquery: { _id, $select: [\"areaTraps\"] },\n\t\t\tpaginate: false,\n\t\t})) as Partial;\n\n\t\tif (params.patchSourceFromClient || params.patchSourceFromServer) {\n\t\t\tconst areaPolygon = Object.values(data!.areaPolygons!)[0];\n\n\t\t\t// eslint-disable-next-line prefer-const\n\t\t\tlet { resultPoiPoints, resultPolyLines } = await getPoiPolyPointsAsync({\n\t\t\t\tanalyzedFeature: areaPolygon,\n\t\t\t\ttype: AnalyzedType.POLYGONE,\n\t\t\t});\n\n\t\t\tif (process.env.NODE_ENV === \"development\") {\n\t\t\t\tconsole.log(\"resultPoiPoints >>>\", resultPoiPoints.length);\n\t\t\t\tconsole.log(\"resultPolyLines >>>\", resultPolyLines.length);\n\t\t\t}\n\n\t\t\tdata!.polyLinesFeatureCollection = featureCollection(resultPolyLines);\n\n\t\t\tconst resultTypeTraps = determineTrapTypes(resultPoiPoints);\n\t\t\tconst {\n\t\t\t\ttraps: areaTraps,\n\t\t\t\testablishedTraps,\n\t\t\t\tnewTraps,\n\t\t\t\trejectedTraps,\n\t\t\t} = trapsChain(record?.areaTraps, resultTypeTraps);\n\n\t\t\tdata!.areaTraps = areaTraps;\n\t\t\tdata!.areaTrapsEstablished = establishedTraps;\n\t\t\tdata!.areaTrapsNew = newTraps;\n\t\t\tdata!.areaTrapsRejected = rejectedTraps;\n\t\t\t// data!.areaTrapsNew = newTraps;\n\t\t\t// data!.areaTrapsRejected = rejectedTraps;\n\t\t}\n\n\t\tif (record !== undefined) {\n\t\t\tcontext.result = await service.patch(_id, data as Partial, {\n\t\t\t\t...params,\n\t\t\t\tpublishEvent: false,\n\t\t\t});\n\t\t}\n\n\t\tconst endTime = performance.now();\n\t\tif (process.env.NODE_ENV === \"development\")\n\t\t\tconsole.log(`patchOrCreateArea() dauerte: ${(endTime - startTime) / 1_000} Sekunden`);\n\n\t\treturn context;\n\t};\n};\n\nexport { patchOrCreateArea };\n"], + "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,qBAAkC;AAClC,gCAAmC;AAEnC,uBAA0B;AAG1B,wBAA2B;AAC3B,mCAAoD;AAEpD,MAAM,oBAAoB,MAAY;AACrC,SAAO,OAAO,YAAyC;AACtD,UAAM,YAAY,YAAY,IAAI;AAClC,UAAM,EAAE,MAAM,SAAS,OAAO,IAAI;AAClC,UAAM,EAAE,IAAI,IAAI;AAEhB,SAAM,aAAY,oBAAI,KAAK,GAAE,SAAS;AAEtC,+BAAU,MAAM,GAAG;AACnB,YAAQ,KAAK,UAAU,EAAE,KAAK,KAAM,KAAK,QAAQ,UAAU,CAAC;AAE5D,UAAM,CAAC,MAAM,IAAK,MAAM,QAAQ,KAAK;AAAA,MACpC,OAAO,EAAE,KAAK,SAAS,CAAC,WAAW,EAAE;AAAA,MACrC,UAAU;AAAA,IACX,CAAC;AAED,QAAI,OAAO,yBAAyB,OAAO,uBAAuB;AACjE,YAAM,cAAc,OAAO,OAAO,KAAM,YAAa,EAAE,CAAC;AAGxD,UAAI,EAAE,iBAAiB,gBAAgB,IAAI,UAAM,6BAAAA,SAAsB;AAAA,QACtE,iBAAiB;AAAA,QACjB,MAAM,0CAAa;AAAA,MACpB,CAAC;AAED,UAAI,OAAwC;AAC3C,gBAAQ,IAAI,uBAAuB,gBAAgB,MAAM;AACzD,gBAAQ,IAAI,uBAAuB,gBAAgB,MAAM;AAAA,MAC1D;AAEA,WAAM,iCAA6B,kCAAkB,eAAe;AAEpE,YAAM,sBAAkB,8CAAmB,eAAe;AAC1D,YAAM;AAAA,QACL,OAAO;AAAA,QACP;AAAA,QACA;AAAA,QACA;AAAA,MACD,QAAI,8BAAW,iCAAQ,WAAW,eAAe;AAEjD,WAAM,YAAY;AAClB,WAAM,uBAAuB;AAC7B,WAAM,eAAe;AACrB,WAAM,oBAAoB;AAAA,IAG3B;AAEA,QAAI,WAAW,QAAW;AACzB,cAAQ,SAAS,MAAM,QAAQ,MAAM,KAAK,MAAiC;AAAA,QAC1E,GAAG;AAAA,QACH,cAAc;AAAA,MACf,CAAC;AAAA,IACF;AAEA,UAAM,UAAU,YAAY,IAAI;AAChC,QAAI;AACH,cAAQ,IAAI,iCAAiC,UAAU,aAAa,GAAK,WAAW;AAErF,WAAO;AAAA,EACR;AACD;", "names": ["getPoiPolyPointsAsync"] } diff --git a/build/server/hooks/patchOrCreateRoute.js b/build/server/hooks/patchOrCreateRoute.js index b97dbc3..e85a3cc 100644 --- a/build/server/hooks/patchOrCreateRoute.js +++ b/build/server/hooks/patchOrCreateRoute.js @@ -78,7 +78,8 @@ const patchOrCreateRoute = () => { profile: activeProfile.name, annotations: ["duration", "distance"] }).send().then((response) => response.body); - console.log("matrix", matrix); + if (false) + console.log("matrix", matrix); const directions = await directionsService.getDirections({ profile: activeProfile.name, exclude: activeProfile.actualExclusion.length > 0 ? activeProfile.actualExclusion.join(",") : void 0, diff --git a/build/server/hooks/patchOrCreateRoute.js.map b/build/server/hooks/patchOrCreateRoute.js.map index 86e4689..74e7976 100644 --- a/build/server/hooks/patchOrCreateRoute.js.map +++ b/build/server/hooks/patchOrCreateRoute.js.map @@ -1,7 +1,7 @@ { "version": 3, "sources": ["../../../src/server/hooks/patchOrCreateRoute.ts"], - "sourcesContent": ["import Directions, {\n\tDirectionsResponse,\n\tDirectionsService,\n\tDirectionsWaypoint,\n} from \"@mapbox/mapbox-sdk/services/directions\";\nimport Matrix, { MatrixService } from \"@mapbox/mapbox-sdk/services/matrix\";\nimport { performance } from \"perf_hooks\";\nimport { Scheduler } from \"../../lib/Scheduler\";\nimport { trapsChain } from \"./trapsChain\";\n\nimport type { Hook, HookContext } from \"@feathersjs/feathers\";\nimport polyline from \"@mapbox/polyline\";\nimport { Feature, feature, LineString, Point } from \"@turf/turf\";\nimport getPoiPolyPointsAsync, { AnalyzedType } from \"../../lib/getPoiPolyPointsAsync\";\nimport { determineTrapTypes } from \"../../lib/atudo/determineTrapTypes\";\n\nconst patchOrCreateRoute = (): Hook => {\n\tlet directionsService: DirectionsService | null = null;\n\tlet matrixService: MatrixService | null = null;\n\n\treturn async (context: HookContext) => {\n\t\tif (!directionsService) {\n\t\t\tdirectionsService = Directions({\n\t\t\t\taccessToken: process.env.MAPBOX_TOKEN!,\n\t\t\t});\n\t\t}\n\n\t\tif (!matrixService) {\n\t\t\tmatrixService = Matrix({\n\t\t\t\taccessToken: process.env.MAPBOX_TOKEN!,\n\t\t\t});\n\t\t}\n\n\t\tconst { data, service, params } = context;\n\t\tconst { _id, activeProfile, maxTrapDistance } = data!;\n\n\t\tdata!.timestamp = new Date().toString();\n\n\t\tScheduler.pause(_id);\n\t\tservice.emit(\"status\", { _id: data!._id, status: \"loading\" });\n\n\t\tconst [record] = (await service.find({\n\t\t\tquery: { _id },\n\t\t\tpaginate: false,\n\t\t})) as radarTrap.Routes;\n\n\t\tif (params.patchSourceFromClient || params.patchSourceFromServer) {\n\t\t\tconst matrix = await matrixService\n\t\t\t\t.getMatrix({\n\t\t\t\t\tpoints: [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tcoordinates: data!.src.geometry.coordinates,\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tcoordinates: data!.dst.geometry.coordinates,\n\t\t\t\t\t\t},\n\t\t\t\t\t] as DirectionsWaypoint[],\n\t\t\t\t\tsources: [0],\n\t\t\t\t\t//destinations: [1],\n\t\t\t\t\tprofile: activeProfile!.name,\n\t\t\t\t\tannotations: [\"duration\", \"distance\"],\n\t\t\t\t})\n\t\t\t\t.send()\n\t\t\t\t.then((response) => response.body);\n\n\t\t\tconsole.log(\"matrix\", matrix);\n\n\t\t\tconst directions = await directionsService\n\t\t\t\t.getDirections({\n\t\t\t\t\tprofile: activeProfile!.name,\n\t\t\t\t\texclude:\n\t\t\t\t\t\tactiveProfile!.actualExclusion.length > 0\n\t\t\t\t\t\t\t? (activeProfile!.actualExclusion.join(\",\") as any)\n\t\t\t\t\t\t\t: undefined,\n\t\t\t\t\toverview: \"full\",\n\t\t\t\t\t/* annotations: [\n\t\t\t\t\t\t\"distance\",\n\t\t\t\t\t\t\"duration\",\n\t\t\t\t\t\t\"congestion\",\n\t\t\t\t\t\t\"speed\",\n\t\t\t\t\t], */\n\t\t\t\t\talternatives: false,\n\t\t\t\t\twaypoints: [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tcoordinates: data!.src.geometry.coordinates,\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tcoordinates: data!.dst.geometry.coordinates,\n\t\t\t\t\t\t},\n\t\t\t\t\t] as DirectionsWaypoint[],\n\t\t\t\t})\n\t\t\t\t.send()\n\t\t\t\t.then((response) => response.body)\n\t\t\t\t.catch((ex) => {\n\t\t\t\t\tconsole.log(\"Error in directionsService.getDirections()\", ex);\n\t\t\t\t});\n\n\t\t\tdata!.directions = [];\n\n\t\t\tfor (const route of (directions as DirectionsResponse).routes) {\n\t\t\t\ttry {\n\t\t\t\t\tconst startTime = performance.now();\n\t\t\t\t\tconst directionLine = feature(polyline.toGeoJSON(route.geometry));\n\n\t\t\t\t\t// eslint-disable-next-line prefer-const\n\t\t\t\t\tlet { resultPoiPoints, resultPolyLines } = await getPoiPolyPointsAsync({\n\t\t\t\t\t\tanalyzedFeature: directionLine,\n\t\t\t\t\t\ttype: AnalyzedType.LINESTRING,\n\t\t\t\t\t\tmaxTrapDistance,\n\t\t\t\t\t});\n\t\t\t\t\tconsole.log(\"resultPoiPoints >>>\", resultPoiPoints.length);\n\t\t\t\t\tconsole.log(\"resultPolyLines >>>\", resultPolyLines.length);\n\n\t\t\t\t\tconst traps = determineTrapTypes(resultPoiPoints as Feature[]);\n\n\t\t\t\t\tconst endTime = performance.now();\n\t\t\t\t\tconsole.log(`getTrapsFrom() dauerte: ${(endTime - startTime) / 1_000} Sekunden`);\n\n\t\t\t\t\troute.duration = matrix.durations![0][1];\n\t\t\t\t\tconst length = data!.directions.push({\n\t\t\t\t\t\tdirection: route,\n\t\t\t\t\t\tmatrix,\n\t\t\t\t\t\tpolyLineFeatures: resultPolyLines,\n\t\t\t\t\t});\n\n\t\t\t\t\tconst {\n\t\t\t\t\t\ttraps: routeTraps,\n\t\t\t\t\t\testablishedTraps,\n\t\t\t\t\t\tnewTraps,\n\t\t\t\t\t\trejectedTraps,\n\t\t\t\t\t} = trapsChain(record?.directions![length - 1].routeTraps, traps);\n\n\t\t\t\t\tdata!.directions[length - 1].routeTraps = routeTraps;\n\t\t\t\t\tdata!.directions[length - 1].routeTrapsEstablished = establishedTraps;\n\t\t\t\t\tdata!.directions[length - 1].routeTrapsNew = newTraps;\n\t\t\t\t\tdata!.directions[length - 1].routeTrapsRejected = rejectedTraps;\n\t\t\t\t} catch (error) {\n\t\t\t\t\tconsole.log(error);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif (record !== undefined) {\n\t\t\tcontext.result = await service.patch(_id, data as Partial, {\n\t\t\t\t...params,\n\t\t\t\tpublishEvent: false,\n\t\t\t});\n\n\t\t\t// return context;\n\t\t}\n\n\t\treturn context;\n\t};\n};\n\nexport { patchOrCreateRoute };\n"], - "mappings": "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", + "sourcesContent": ["import Directions, {\n\tDirectionsResponse,\n\tDirectionsService,\n\tDirectionsWaypoint,\n} from \"@mapbox/mapbox-sdk/services/directions\";\nimport Matrix, { MatrixService } from \"@mapbox/mapbox-sdk/services/matrix\";\nimport { performance } from \"perf_hooks\";\nimport { Scheduler } from \"../../lib/Scheduler\";\nimport { trapsChain } from \"./trapsChain\";\n\nimport type { Hook, HookContext } from \"@feathersjs/feathers\";\nimport polyline from \"@mapbox/polyline\";\nimport { Feature, feature, LineString, Point } from \"@turf/turf\";\nimport getPoiPolyPointsAsync, { AnalyzedType } from \"../../lib/getPoiPolyPointsAsync\";\nimport { determineTrapTypes } from \"../../lib/atudo/determineTrapTypes\";\n\nconst patchOrCreateRoute = (): Hook => {\n\tlet directionsService: DirectionsService | null = null;\n\tlet matrixService: MatrixService | null = null;\n\n\treturn async (context: HookContext) => {\n\t\tif (!directionsService) {\n\t\t\tdirectionsService = Directions({\n\t\t\t\taccessToken: process.env.MAPBOX_TOKEN!,\n\t\t\t});\n\t\t}\n\n\t\tif (!matrixService) {\n\t\t\tmatrixService = Matrix({\n\t\t\t\taccessToken: process.env.MAPBOX_TOKEN!,\n\t\t\t});\n\t\t}\n\n\t\tconst { data, service, params } = context;\n\t\tconst { _id, activeProfile, maxTrapDistance } = data!;\n\n\t\tdata!.timestamp = new Date().toString();\n\n\t\tScheduler.pause(_id);\n\t\tservice.emit(\"status\", { _id: data!._id, status: \"loading\" });\n\n\t\tconst [record] = (await service.find({\n\t\t\tquery: { _id },\n\t\t\tpaginate: false,\n\t\t})) as radarTrap.Routes;\n\n\t\tif (params.patchSourceFromClient || params.patchSourceFromServer) {\n\t\t\tconst matrix = await matrixService\n\t\t\t\t.getMatrix({\n\t\t\t\t\tpoints: [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tcoordinates: data!.src.geometry.coordinates,\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tcoordinates: data!.dst.geometry.coordinates,\n\t\t\t\t\t\t},\n\t\t\t\t\t] as DirectionsWaypoint[],\n\t\t\t\t\tsources: [0],\n\t\t\t\t\t//destinations: [1],\n\t\t\t\t\tprofile: activeProfile!.name,\n\t\t\t\t\tannotations: [\"duration\", \"distance\"],\n\t\t\t\t})\n\t\t\t\t.send()\n\t\t\t\t.then((response) => response.body);\n\n\t\t\tif (process.env.NODE_ENV === \"development\") console.log(\"matrix\", matrix);\n\n\t\t\tconst directions = await directionsService\n\t\t\t\t.getDirections({\n\t\t\t\t\tprofile: activeProfile!.name,\n\t\t\t\t\texclude:\n\t\t\t\t\t\tactiveProfile!.actualExclusion.length > 0\n\t\t\t\t\t\t\t? (activeProfile!.actualExclusion.join(\",\") as any)\n\t\t\t\t\t\t\t: undefined,\n\t\t\t\t\toverview: \"full\",\n\t\t\t\t\t/* annotations: [\n\t\t\t\t\t\t\"distance\",\n\t\t\t\t\t\t\"duration\",\n\t\t\t\t\t\t\"congestion\",\n\t\t\t\t\t\t\"speed\",\n\t\t\t\t\t], */\n\t\t\t\t\talternatives: false,\n\t\t\t\t\twaypoints: [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tcoordinates: data!.src.geometry.coordinates,\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tcoordinates: data!.dst.geometry.coordinates,\n\t\t\t\t\t\t},\n\t\t\t\t\t] as DirectionsWaypoint[],\n\t\t\t\t})\n\t\t\t\t.send()\n\t\t\t\t.then((response) => response.body)\n\t\t\t\t.catch((ex) => {\n\t\t\t\t\tconsole.log(\"Error in directionsService.getDirections()\", ex);\n\t\t\t\t});\n\n\t\t\tdata!.directions = [];\n\n\t\t\tfor (const route of (directions as DirectionsResponse).routes) {\n\t\t\t\ttry {\n\t\t\t\t\tconst startTime = performance.now();\n\t\t\t\t\tconst directionLine = feature(polyline.toGeoJSON(route.geometry));\n\n\t\t\t\t\t// eslint-disable-next-line prefer-const\n\t\t\t\t\tlet { resultPoiPoints, resultPolyLines } = await getPoiPolyPointsAsync({\n\t\t\t\t\t\tanalyzedFeature: directionLine,\n\t\t\t\t\t\ttype: AnalyzedType.LINESTRING,\n\t\t\t\t\t\tmaxTrapDistance,\n\t\t\t\t\t});\n\t\t\t\t\tconsole.log(\"resultPoiPoints >>>\", resultPoiPoints.length);\n\t\t\t\t\tconsole.log(\"resultPolyLines >>>\", resultPolyLines.length);\n\n\t\t\t\t\tconst traps = determineTrapTypes(resultPoiPoints as Feature[]);\n\n\t\t\t\t\tconst endTime = performance.now();\n\t\t\t\t\tconsole.log(`getTrapsFrom() dauerte: ${(endTime - startTime) / 1_000} Sekunden`);\n\n\t\t\t\t\troute.duration = matrix.durations![0][1];\n\t\t\t\t\tconst length = data!.directions.push({\n\t\t\t\t\t\tdirection: route,\n\t\t\t\t\t\tmatrix,\n\t\t\t\t\t\tpolyLineFeatures: resultPolyLines,\n\t\t\t\t\t});\n\n\t\t\t\t\tconst {\n\t\t\t\t\t\ttraps: routeTraps,\n\t\t\t\t\t\testablishedTraps,\n\t\t\t\t\t\tnewTraps,\n\t\t\t\t\t\trejectedTraps,\n\t\t\t\t\t} = trapsChain(record?.directions![length - 1].routeTraps, traps);\n\n\t\t\t\t\tdata!.directions[length - 1].routeTraps = routeTraps;\n\t\t\t\t\tdata!.directions[length - 1].routeTrapsEstablished = establishedTraps;\n\t\t\t\t\tdata!.directions[length - 1].routeTrapsNew = newTraps;\n\t\t\t\t\tdata!.directions[length - 1].routeTrapsRejected = rejectedTraps;\n\t\t\t\t} catch (error) {\n\t\t\t\t\tconsole.log(error);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif (record !== undefined) {\n\t\t\tcontext.result = await service.patch(_id, data as Partial, {\n\t\t\t\t...params,\n\t\t\t\tpublishEvent: false,\n\t\t\t});\n\n\t\t\t// return context;\n\t\t}\n\n\t\treturn context;\n\t};\n};\n\nexport { patchOrCreateRoute };\n"], + "mappings": "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", "names": ["Directions", "Matrix", "polyline", "getPoiPolyPointsAsync"] } diff --git a/src/lib/getPoiPolyPointsAsync.ts b/src/lib/getPoiPolyPointsAsync.ts index 1502853..6b9c315 100644 --- a/src/lib/getPoiPolyPointsAsync.ts +++ b/src/lib/getPoiPolyPointsAsync.ts @@ -41,10 +41,10 @@ const getPoiPolyPointsAsync = async ({ const analyzedBox = bboxPolygon(analyzedBbox); const sideLength = Math.sqrt(area(analyzedBox)) / 1_000; - console.log("sideLength >>>", sideLength); + if (process.env.NODE_ENV === "development") console.log("sideLength >>>", sideLength); const sideLengthDivisor = getDevisor(sideLength); - console.log("sideLengthDivisor >>>", sideLengthDivisor); + if (process.env.NODE_ENV === "development") console.log("sideLengthDivisor >>>", sideLengthDivisor); const cellWidth = sideLength / sideLengthDivisor; @@ -62,10 +62,10 @@ const getPoiPolyPointsAsync = async ({ } const squareBoxGrid = squareGrid(bufferedBbox, cellWidth); - console.log("squareBoxGrid >>>", squareBoxGrid.features.length); + if (process.env.NODE_ENV === "development") console.log("squareBoxGrid >>>", squareBoxGrid.features.length); const squareBoxGridReduced = squareBoxGrid.features.filter((feature) => !booleanDisjoint(feature, analyzedFeature)); - console.log("squareBoxGridReduced >>>", squareBoxGridReduced.length); + if (process.env.NODE_ENV === "development") console.log("squareBoxGridReduced >>>", squareBoxGridReduced.length); let resultPoiPoints: Feature[] = []; let resultPolyLines: Feature[] = []; diff --git a/src/server/hooks/patchOrCreateArea.ts b/src/server/hooks/patchOrCreateArea.ts index d6cf329..fe4ebc2 100644 --- a/src/server/hooks/patchOrCreateArea.ts +++ b/src/server/hooks/patchOrCreateArea.ts @@ -31,8 +31,11 @@ const patchOrCreateArea = (): Hook => { analyzedFeature: areaPolygon, type: AnalyzedType.POLYGONE, }); - console.log("resultPoiPoints >>>", resultPoiPoints.length); - console.log("resultPolyLines >>>", resultPolyLines.length); + + if (process.env.NODE_ENV === "development") { + console.log("resultPoiPoints >>>", resultPoiPoints.length); + console.log("resultPolyLines >>>", resultPolyLines.length); + } data!.polyLinesFeatureCollection = featureCollection(resultPolyLines); @@ -60,7 +63,8 @@ const patchOrCreateArea = (): Hook => { } const endTime = performance.now(); - console.log(`patchOrCreateArea() dauerte: ${(endTime - startTime) / 1_000} Sekunden`); + if (process.env.NODE_ENV === "development") + console.log(`patchOrCreateArea() dauerte: ${(endTime - startTime) / 1_000} Sekunden`); return context; }; diff --git a/src/server/hooks/patchOrCreateRoute.ts b/src/server/hooks/patchOrCreateRoute.ts index 25c8047..60f824c 100644 --- a/src/server/hooks/patchOrCreateRoute.ts +++ b/src/server/hooks/patchOrCreateRoute.ts @@ -63,7 +63,7 @@ const patchOrCreateRoute = (): Hook => { .send() .then((response) => response.body); - console.log("matrix", matrix); + if (process.env.NODE_ENV === "development") console.log("matrix", matrix); const directions = await directionsService .getDirections({