From ec8f781e55c24e1cbae3f0718533e4c925a1d775 Mon Sep 17 00:00:00 2001 From: sora-ext Date: Tue, 4 Mar 2025 17:19:11 +0100 Subject: [PATCH] Add src/client/api_helper.ts --- src/client/api_helper.ts | 41 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 41 insertions(+) create mode 100644 src/client/api_helper.ts diff --git a/src/client/api_helper.ts b/src/client/api_helper.ts new file mode 100644 index 0000000..9ef0ac5 --- /dev/null +++ b/src/client/api_helper.ts @@ -0,0 +1,41 @@ + +import { getGeoLine } from "./types/geom"; + + +export const filter_existing = function (tpe: "nominatim" | "travel", leg: leg, r: geoloc[]) { + switch (tpe) { + case 'nominatim': + return r.filter(e => { + if (leg.hotel && leg.hotel.osm_id == e.osm_id) return false; + if (leg.places.restaurants.find(i => i.osm_id == e.osm_id)) return false; + if (leg.places.activities.find(i => i.osm_id == e.osm_id)) return false; + return true + }) + case 'travel': + console.log(r) + return r.filter(e => { + if (leg.travel.find(i => `${(e as any).from}->${(e as any).to}` == `${(i as any).from}->${(i as any).to}`)) return false; + return true + }) + } +} + +export const process_results = function (tpe: "nominatim" | "travel", r: geoloc[]) { + switch (tpe) { + case 'nominatim': + return r.map((rr) => { + rr.latlon = [parseFloat((rr as any).lat), parseFloat((rr as any).lon)]; + rr.title = (rr as any).display_name.split(",")[0]; + return rr; + }); + case 'travel': + console.log(r) + return r.map(el => { + (el as any).path = getGeoLine( + { lat: (el as any).from_geo.lat, lng: (el as any).from_geo.lon }, + { lat: (el as any).to_geo.lat, lng: (el as any).to_geo.lon }, { dist: 2_500_000 }).map(v => [v.lat, v.lng]); + (el as any).type = "flight"; + return el; + }); + } +} \ No newline at end of file