1 line
15 KiB
JavaScript
1 line
15 KiB
JavaScript
import{i as e}from"./rolldown-runtime-B1FJdls4.js";import{Kt as t,Vt as n}from"./vendor-quasar-BdHTqpDy.js";/* empty css */import{a as r}from"./vendor-vue-core-CuXzcq2w.js";import{d as i,f as a,h as o,m as s,o as c,p as l,s as u,u as d}from"./vendor-leaflet-core-Dyrj7Rn0.js";import{t as f}from"./socketio-D07G01kR.js";import{t as p}from"./vendor-openrouteservice-DNyyTee3.js";import{n as m,t as h}from"./simulation-DRMY3tZ9.js";var g={home:{name:`Home`,icon:`mdi-home`,coords:{lat:40.910773020811,lng:-73.891069806448}},work_places:{name:`Work Places`,icon:`mdi-briefcase`,subitems:{jeong:{name:`Jeong`,icon:`mdi-doctor`,coords:{lat:40.76624975651346,lng:-73.81444335286128},address:`35-02 150th Pl, Flushing, NY 11354`},santos:{name:`Santos`,icon:`mdi-doctor`,coords:{lat:40.74504671877868,lng:-73.8880099638491},address:`77-08 Broadway, Elmhurst, NY 11373`},natalya_qns:{name:`Natalya (Qns)`,icon:`mdi-doctor`,coords:{lat:40.69644966409178,lng:-73.837453217826},address:`110-14 Jamaica Ave, Richmond Hill, NY 11418`},natalya_bx:{name:`Natalya (Bronx)`,icon:`mdi-doctor`,coords:{lat:40.85384419116598,lng:-73.86314767911834},address:`2109 Matthews Ave, Bronx, NY 10462`},office:{name:`Linwood Plaza`,icon:`mdi-allergy`,coords:{lat:40.86141832913106,lng:-73.96997583196286},address:`158 Linwood Plaza, Fort Lee, NJ 07024`}}},strg:{name:`Man Mini Storage`,icon:`mdi-dolly`,coords:{lat:40.75158955085288,lng:-73.9328988710467},address:`31-08 Northern Blvd, Long Island City, NY 11101`},acme:{name:`Acme`,icon:`mdi-cart`,coords:{lat:40.90930366920829,lng:-73.87658695470259},address:`31-08 Northern Blvd, Long Island City, NY 11101`}},_=e(o(),1),v=p,y=class extends _.Class{constructor(e=``,t={},n){super(),s(this,`_apiKey`,void 0),s(this,`_orsOptions`,void 0),this._apiKey=e,this._orsOptions=t,_.Util.setOptions(this,n)}route(e,t,n){let r=new v.Directions({api_key:this._apiKey}),i=e.map(e=>[e.latLng.lng,e.latLng.lat]);return this._orsOptions.coordinates=i,r.calculate(this._orsOptions).then(r=>{this._routeDone(r,e,t,n)}).catch(e=>{console.error(e),t({status:`REQUEST_FAILED`,message:String(e)},void 0)}),this}_routeDone(e,t,n,r){let i=[],a=r??n;if(!e.routes){n.call(a,{status:`NO_ROUTES`,message:`No routes found in response`});return}e.routes.forEach((e,n)=>{let r=this._decodePolyline(e.geometry),a=[],o=[],s=[],c=0,l=0;e.segments.forEach(t=>{s.push({totalDistance:t.distance,totalTime:t.duration}),l+=t.distance,c+=t.duration,t.steps.forEach(t=>{a.push(this._convertInstructions(t));let n=e.way_points[1];r[n]&&o.push(r[n])})}),i.push({name:`Route: ${n+1}`,coordinates:r,instructions:a,summary:{totalDistance:l,totalTime:c},segments:s,inputWaypoints:t,waypoints:o})}),n.call(a,null,i)}_decodePolyline(e,t=!1){let n=[],r=0,i=0,a=0;for(;r<e.length;){let o=0,s=0,c;do c=e.charCodeAt(r++)-63,o|=(c&31)<<s,s+=5;while(c>=32);i+=o&1?~(o>>1):o>>1,o=0,s=0;do c=e.charCodeAt(r++)-63,o|=(c&31)<<s,s+=5;while(c>=32);if(a+=o&1?~(o>>1):o>>1,t){o=0,s=0;do c=e.charCodeAt(r++)-63,o|=(c&31)<<s,s+=5;while(c>=32);o=o&1?~(o>>1):o>>1}n.push(_.latLng(i/1e5,a/1e5))}return n}_convertInstructions(e){return{text:e.instruction,distance:e.distance,time:e.duration,index:e.way_points[0]}}};function b(e,t,n){return typeof e==`string`?new y(e,t??{},n):new y(typeof e.api_key==`string`?e.api_key:``,e,t)}var x=b({api_key:``,profile:`driving-car`,geometry_simplify:!0,host:`/api/ors/proxy/ors`}),S=e=>e.createIcon();new l({color:`black`,accentColor:`rgba(0,0,0,0.25)`,contentHtml:`<icon class="q-icon mdi mdi-crosshairs-gps" />`,contentColor:`white`,scale:1,svg:c}),new l({color:`indianred`,accentColor:`firebrick`,content:`FM`,contentColor:`white`,scale:2,svg:i});var C=new l({color:`#006838`,accentColor:`rgba(0,0,0,0.25)`,content:`S`,contentColor:`white`,scale:1,svg:u}),w=new l({color:`cornflowerblue`,accentColor:`rgba(0,0,0,0.25)`,contentColor:`white`,svg:a,scale:1}),T=new l({color:`#a23337`,accentColor:`rgba(0,0,0,0.25)`,content:`E`,contentColor:`white`,scale:1,svg:d}),E=0;function D(e){return new Promise(t=>{f.emit(`reverse_geocode`,{latitude:e.latitude,longitude:e.longitude},e=>{t(e)})})}var O=async(e,t)=>{let n=Date.now()-E;n<1e3&&await new Promise(e=>setTimeout(e,1e3-n));let r=await D({latitude:e,longitude:t});return E=Date.now(),r},k=r(`locationStore`,{state:()=>({locations:[]}),getters:{},actions:{async getCachedLocation(e){let t=`${(0,_.latLng)(e).lat},${(0,_.latLng)(e).lng}`,n=this.locations.find(e=>e[t]);if(n)return console.log(`Location found in local cache:`,n[t]),n[t];try{let n=await O((0,_.latLng)(e).lat,(0,_.latLng)(e).lng);if(!n)throw Error(`Reverse geocoding failed`);let r={[t]:n};return this.locations.push(r),n}catch(e){throw e instanceof Error&&console.error(`Error fetching location:`,e.message),e}}}});function A({coords:e,delay:t,address:n,type:r,instruction:i}){return new Promise(a=>{f.emit(`simulation_control`,{command:`add`,latitude:e.lat,longitude:e.lng,delay:t,address:n,type:r,instruction:i},e=>{a(e)})})}async function j(e,t,n,r,i,a){let o=h(),s=k();try{let c=!r&&t?await s.getCachedLocation(_.latLng(e.lat,e.lng)):void 0,l=await A({coords:e,delay:n,address:r??c?.address??``,type:i,instruction:a});return l.command_status===`ERROR`?{notificationType:`negative`,responseMessage:`Failed to add location: `+(l.message??`Unknown error`)}:l.data?.simulation?(o.digestUpdate(l.data.simulation),{notificationType:`positive`,responseMessage:l.message??`Location added`}):{notificationType:`negative`,responseMessage:l.message??`Simulation queue data missing`}}catch(e){let t=e instanceof Error?e.message:`Unknown error`;return console.error(`Error adding location:`,e),{notificationType:`negative`,responseMessage:`Failed to add location: `+t}}}var M=r(`leafletStore`,{state:()=>({zoom:10,center:[g.home.coords.lat,g.home.coords.lng],clickedLatLng:null,mapObject:t(null),markerLatLng:null,layerControl:{marker:!0,simQueue:!0,favorites:!0,routing:!1,findMy:!1,locateControl:!0},layerGroups:{marker:t(null),simQueue:t(null),favorites:t(null),routing:t(null),findMy:t(null),locateControl:t(null)},leafletDrawerOpen:!1,locationDrawerSettings:{opened:!1,pinned:!1},fabs:{statusBar:{opened:!1},layerControl:{opened:!1},favorites:{opened:!1},appControl:{opened:!1,openedFab:null}},controlDrawerSettings:{opened:!1,pinned:!1},statusBarSettings:{opened:!1},routeSet:{start:{lat:null,lng:null},end:{lat:null,lng:null},wayPoints:null},routesSet:[],routeSegments:[],routeDirections:[],routeCoordinates:[],baseLayer:{selected:1,options:[{value:1,label:`Open Street Map`,layer:t(_.tileLayer(`https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png`,{maxZoom:19,attribution:`© OpenStreetMap`,minZoom:2,noWrap:!0}))},{value:2,label:`Topography`,layer:t(_.tileLayer(`https://{s}.tile.opentopomap.org/{z}/{x}/{y}.png`,{minZoom:2,maxZoom:17,attribution:`© OpenTopoMap`,noWrap:!0}))},{value:3,label:`Satellite`,layer:t(_.tileLayer(`https://server.arcgisonline.com/ArcGIS/rest/services/World_Imagery/MapServer/tile/{z}/{y}/{x}`,{minZoom:2,maxZoom:19,attribution:`© ArcGIS`,noWrap:!0}))}]},baseLayerWMS:{selected:!1,label:`OpenStreetMap Transparent`,layer:t(_.tileLayer.wms(`https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png`,{minZoom:2,maxZoom:19,attribution:`© OpenStreetMap`,layers:`semitransparent`,transparent:!0,format:`image/png`,opacity:.5}))},routingOptions:{waypoints:[],router:n(x),routeWhileDragging:!0,createMarker:n(function(e,t,n){let r;return r=e===0?C:e===n-1?T:w,_.marker(t.latLng,{draggable:!0,icon:r,contextmenu:!1,contextmenuItems:[]})})}}),getters:{getBaseLayer:e=>e.baseLayer.selected,getOverlayLayer:e=>e.baseLayerWMS.selected},actions:{closeOtherFabs(e){Object.keys(this.fabs).forEach(t=>{let n=t;n!==e&&(this.fabs[n].opened=!1)})},setMap(e){this.mapObject=e},flyTo(e,t,n){this.mapObject&&this.mapObject.flyTo([e,t],n)},setFavLayerGroup(e){this.layerGroups.favorites=e},setLCLayerGroup(e){this.layerGroups.locateControl=e},addToFavLayer(e){this.layerGroups.favorites?.addLayer(e)},removeMap(){this.mapObject=null},clearRouteSegments(){this.routeSegments=[]},setCenter(e,t){this.center=[e,t]},setZoom(e){this.zoom=e},zoomIn(){this.mapObject?.zoomIn()},zoomOut(){this.mapObject?.zoomOut()},setBaseLayer(e,t){if(e===void 0&&this.baseLayer.selected===void 0)return;if(t&&this.mapObject){let e=this.baseLayer.options.filter(e=>e.value===t)[0];e&&(console.log(`OldLayer name: `,e.label),e.layer.remove())}let n=this.baseLayer.options.filter(e=>e.value===this.baseLayer.selected)[0];this.mapObject&&n&&(console.log(`NewLayer name: `,n.label),n.layer.addTo(this.mapObject))},toggleWmsLayer(){let e=this.baseLayerWMS.layer;e&&this.mapObject&&(this.baseLayerWMS.selected?e.addTo(this.mapObject):e.remove())},setMarkerLatLng(e,t){this.markerLatLng=[e,t]},toggleleafletDrawerOpen(){this.leafletDrawerOpen=!this.leafletDrawerOpen},setRouteDirs(e){this.routeDirections=e},closeAllPopups(){this.mapObject&&this.mapObject?.closePopup()},getDistance(e,t){return this.mapObject?.distance(e,t)??null},onLayerToggle(e){console.log(`Layer toggle activated, new val: `,e),e&&(console.log(`Layer toggle activated`),this.mapObject?.invalidateSize())},updateRouteWaypoints(){this.layerControl.routing=!0;let e=[],t=this.routeSet.start,n=this.routeSet.end;t&&typeof t.lat==`number`&&typeof t.lng==`number`&&e.push(_.latLng(t.lat,t.lng)),n&&typeof n.lat==`number`&&typeof n.lng==`number`&&e.push(_.latLng(n.lat,n.lng)),console.log(`Updating route with waypoints: `,e),this.routingOptions.waypoints=e},controlsOpenedHandler(e){this.controlDrawerSettings.opened=e},locationsOpenedHandler(e){this.locationDrawerSettings.opened=e},statusBarOpenedHandler(e){this.statusBarSettings.opened=e},async routeAllPointsToQueue(){let e=e=>new Promise(t=>setTimeout(t,e)),t={notificationType:`negative`,responseMessage:`No route points to add`};if(this.routeSet.start&&this.routeSet.end&&this.routeCoordinates&&this.routeCoordinates&&this.routeCoordinates.length>0)for(let n of this.routeCoordinates){if(n){let e=n.instruction?`instruction`:`coord`;t=await j({lat:Number(n.lat),lng:Number(n.lng)},!1,n.timeFromPrev,void 0,e,n.instruction)}await e(1e3)}return{type:t.notificationType,message:t.responseMessage}},async routeToQueue(){let e={notificationType:`negative`,responseMessage:`No route points to add`},t=e=>new Promise(t=>setTimeout(t,e));if(this.routeSet.start&&this.routeSet.end&&this.routeDirections&&this.routeDirections&&this.routeDirections.length>0)for(let n of this.routeDirections)n.coordinates&&(e=await j({lat:Number(n.coordinates.lat),lng:Number(n.coordinates.lng)},!1,n.time,void 0,`instruction`,n.text)),await t(1e3);return{type:e.notificationType,message:e.responseMessage}},clearRoute(){return this.layerControl.routing=!1,this.clearRouteSegments(),this.routeSet.start={lat:null,lng:null},this.routeSet.end={lat:null,lng:null},{type:`positive`,message:`Route cleared successfully`}},moveToLocation(e){if(!e)return;let{y:t,x:n,bounds:r}=e;if(r&&r.length){let e=_.latLng(r[0][0],r[0][1]),t=_.latLng(r[1][0],r[1][1]);this.mapObject?.fitBounds(_.latLngBounds(e,t))}else this.mapObject?.setView([t,n],14);let i=new _.Marker([0,0]);i?i.setLatLng([t,n]):i=_.marker([t,n]).addTo(this.mapObject)}}}),N=r(`favoriteStore`,{state:()=>({favorites:[],favMap:new Map,categories:[],catMap:new Map,categoriesWithFavorites:new Map,catsWithFavs:[]}),getters:{},actions:{getFavorite(e){return this.favMap.get(e)},favoriteControl({command:e,favorite:t}){let n=m().debugLog,r={status:``,message:``};switch(e){case`set`:if(!t)throw console.log(`Favorite not provided, favdata: %s`,t),r={status:`error`,message:`Favorite not provided.`},Error(`Favorite not provided.`);f.emit(`favorite_control`,{command:`set`,favorite:t},e=>{if(e.command_status==`ERROR`)throw Error(e.message);if(e.data?.favorites)console.log(`Favorite added, favdata: %s`,t),r={status:`OK`,message:e.message?.toString()},this.favorites=e.data.favorites;else throw r={status:`error`,message:`No favorites found.`},Error(e.message);return n&&console.log(`response from favorite_control_add: `,e),e.message});break;case`delete`:f.emit(`favorite_control`,{command:`delete`,favorite:t},e=>{if(e.command_status==`ERROR`)throw r={status:`error`,message:e.message},Error(e.message);if(e.data?.favorites)r={status:`OK`,message:e.message?.toString()},this.favorites=e.data.favorites;else throw r={status:`error`,message:`No favorites found.`},Error(e.message);return n&&console.log(`response from favorite_control_delete: `,e),e.message});break;case`get`:f.emit(`favorite_control`,{command:`get`,favorite:t},e=>{if(e.command_status==`ERROR`)throw r={status:`error`,message:e.message},Error(e.message);if(e.data?.favorites)r={status:`OK`,message:e.message?.toString()},this.favorites=e.data.favorites,this.favMap.clear(),e.data.favorites.forEach(e=>{this.favMap.set(e.id,e)}),this.mapCategoriesAndFavorites();else throw r={status:`error`,message:`No favorites found.`},Error(e.message);return n&&console.log(`response from favorite_control_get: `,e),e.message});break;default:throw r={status:`error`,message:`Invalid command`+e},Error(`Invalid command`+e)}return r},categoryControl({command:e,category:t}){let n=m().debugLog,r={status:``,message:``};switch(e){case`add`:if(!t)throw console.log(`Category not provided, favdata: %s`,t),r={status:`error`,message:`Category not provided.`},Error(`Category not provided.`);f.emit(`category_control`,{command:`add`,category:t},e=>{if(e.command_status==`ERROR`)throw Error(e.message);if(e.data?.categories)console.log(`Category added, favdata: %s`,t),r={status:`OK`,message:e.message?.toString()},this.categories=e.data.categories;else throw r={status:`error`,message:`No categories found.`},Error(e.message);return n&&console.log(`response from category_control_add: `,e),e.message});break;case`delete`:f.emit(`category_control`,{command:`delete`,category:t},e=>{if(e.command_status==`ERROR`)throw r={status:`error`,message:e.message},Error(e.message);if(e.data?.categories)r={status:`OK`,message:e.message?.toString()},this.categories=e.data.categories;else throw r={status:`error`,message:`No categories found.`},Error(e.message);return n&&console.log(`response from category_control_delete: `,e),e.message});break;case`get`:f.emit(`category_control`,{command:`get`,category:t},e=>{if(e.command_status==`ERROR`)throw r={status:`error`,message:e.message},Error(e.message);if(e.data?.categories)r={status:`OK`,message:e.message?.toString()},this.categories=e.data.categories,this.catMap.clear(),e.data.categories.forEach(e=>{this.catMap.set(e.id,e)}),this.mapCategoriesAndFavorites();else throw r={status:`error`,message:`No categories found.`},Error(e.message);return n&&console.log(`response from category_control_get: `,e),e.message});break;default:throw r={status:`error`,message:`Invalid command`+e},Error(`Invalid command`+e)}return r},mapCategoriesAndFavorites(){let e=new Map;for(let t of this.favorites){let n=e.get(t.category_id)||[];t.openedFab=null,n.push(t),e.set(t.category_id,n)}let t=new Map;for(let n of this.categories)t.set(n.id,{...n,favorites:e.get(n.id)||[],openedFab:null});this.categoriesWithFavorites=t,this.catsWithFavs=Array.from(t.values())},initialize(){this.categoryControl({command:`get`}),this.favoriteControl({command:`get`})}}}),P=(e,t)=>{let n=e.__vccOpts||e;for(let[e,r]of t)n[e]=r;return n};export{k as a,C as c,j as i,g as l,N as n,T as o,M as r,S as s,P as t}; |