From abaa315b248676ec34d3fe042f1b6fdf91c2438c Mon Sep 17 00:00:00 2001 From: TekH Date: Mon, 20 Oct 2025 13:40:38 +0200 Subject: [PATCH] feat(utils): add `findNearest` function to calculate closest point --- EnvelopeGenerator.Web/wwwroot/js/util.js | 11 +++++++++++ EnvelopeGenerator.Web/wwwroot/js/util.min.js | 2 +- 2 files changed, 12 insertions(+), 1 deletion(-) diff --git a/EnvelopeGenerator.Web/wwwroot/js/util.js b/EnvelopeGenerator.Web/wwwroot/js/util.js index 5663930a..c4f137e3 100644 --- a/EnvelopeGenerator.Web/wwwroot/js/util.js +++ b/EnvelopeGenerator.Web/wwwroot/js/util.js @@ -12,4 +12,15 @@ function detailedCurrentDate() { second: '2-digit', timeZoneName: 'shortOffset' }).format(); +} + +function findNearest(origin, getX, getY, ...dests) { + const distanceToOrigin = (point) => Math.sqrt((getX(origin) - getX(point))**2 + (getY(origin) - getY(point))**2); + return dests.reduce( + (nearest, dest) => { + const dist = distanceToOrigin(dest); + return dist < nearest.dist ? {dist, dest} : nearest; + }, + {dist: Infinity, dest: null} + ).dest; } \ No newline at end of file diff --git a/EnvelopeGenerator.Web/wwwroot/js/util.min.js b/EnvelopeGenerator.Web/wwwroot/js/util.min.js index bf9b7d7f..8e71ab49 100644 --- a/EnvelopeGenerator.Web/wwwroot/js/util.min.js +++ b/EnvelopeGenerator.Web/wwwroot/js/util.min.js @@ -1 +1 @@ -function detailedCurrentDate(){return new Intl.DateTimeFormat("de-DE",{day:"2-digit",month:"2-digit",year:"numeric",hour:"2-digit",minute:"2-digit",second:"2-digit",timeZoneName:"shortOffset"}).format()}const B64ToBuff=n=>new Uint8Array(Array.from(atob(n),n=>n.charCodeAt(0))).buffer,getLocaleDateString=()=>(new Date).toLocaleDateString("de-DE"); \ No newline at end of file +function detailedCurrentDate(){return new Intl.DateTimeFormat("de-DE",{day:"2-digit",month:"2-digit",year:"numeric",hour:"2-digit",minute:"2-digit",second:"2-digit",timeZoneName:"shortOffset"}).format()}function findNearest(n,t,i,...r){const u=r=>Math.sqrt((t(n)-t(r))**2+(i(n)-i(r))**2);return r.reduce((n,t)=>{const i=u(t);return inew Uint8Array(Array.from(atob(n),n=>n.charCodeAt(0))).buffer,getLocaleDateString=()=>(new Date).toLocaleDateString("de-DE"); \ No newline at end of file