@aggdirect/coolmap-services 1.0.5 → 1.0.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,2 +1,2 @@
1
- !function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports,require("@angular/core"),require("mapbox-gl"),require("@turf/turf"),require("rxjs"),require("@angular/common/http"),require("@angular/material/snack-bar"),require("@angular/platform-browser"),require("@deck.gl/mapbox"),require("@deck.gl/layers")):"function"==typeof define&&define.amd?define("coolmap-services",["exports","@angular/core","mapbox-gl","@turf/turf","rxjs","@angular/common/http","@angular/material/snack-bar","@angular/platform-browser","@deck.gl/mapbox","@deck.gl/layers"],t):t((e="undefined"!=typeof globalThis?globalThis:e||self)["coolmap-services"]={},e.ng.core,e.mapboxgl,e.turf,e.rxjs,e.ng.common.http,e.ng.material.snackBar,e.ng.platformBrowser,e.mapbox,e.layers)}(this,(function(e,t,o,i,n,r,a,s,p,u){"use strict";function c(e,t,o,i){return new(o||(o=Promise))((function(n,r){function a(e){try{p(i.next(e))}catch(e){r(e)}}function s(e){try{p(i.throw(e))}catch(e){r(e)}}function p(e){var t;e.done?n(e.value):(t=e.value,t instanceof o?t:new o((function(e){e(t)}))).then(a,s)}p((i=i.apply(e,t||[])).next())}))}function l(e,t){var o,i,n,r,a={label:0,sent:function(){if(1&n[0])throw n[1];return n[1]},trys:[],ops:[]};return r={next:s(0),throw:s(1),return:s(2)},"function"==typeof Symbol&&(r[Symbol.iterator]=function(){return this}),r;function s(s){return function(p){return function(s){if(o)throw new TypeError("Generator is already executing.");for(;r&&(r=0,s[0]&&(a=0)),a;)try{if(o=1,i&&(n=2&s[0]?i.return:s[0]?i.throw||((n=i.return)&&n.call(i),0):i.next)&&!(n=n.call(i,s[1])).done)return n;switch(i=0,n&&(s=[2&s[0],n.value]),s[0]){case 0:case 1:n=s;break;case 4:return a.label++,{value:s[1],done:!1};case 5:a.label++,i=s[1],s=[0];continue;case 7:s=a.ops.pop(),a.trys.pop();continue;default:if(!(n=a.trys,(n=n.length>0&&n[n.length-1])||6!==s[0]&&2!==s[0])){a=0;continue}if(3===s[0]&&(!n||s[1]>n[0]&&s[1]<n[3])){a.label=s[1];break}if(6===s[0]&&a.label<n[1]){a.label=n[1],n=s;break}if(n&&a.label<n[2]){a.label=n[2],a.ops.push(s);break}n[2]&&a.ops.pop(),a.trys.pop();continue}s=t.call(e,a)}catch(e){s=[6,e],i=0}finally{o=n=0}if(5&s[0])throw s[1];return{value:s[0]?s[1]:void 0,done:!0}}([s,p])}}}Object.create;Object.create;var d=function(){function e(e,t){this.http=e,this.snackBar=t,this.analyticsRESTURL="",this.RESTURLPrefix="",this.pickupOptions=[],this.destOptions=[],this.ownerOptions=[],this.customerOptions=[],this.unitOptions=[],this.materialOptions=[],this.jcodeOptions=[],this.driverOption=[],this.truckingCompanayOption=[],this.routeNameOptions=[],this.preventnavChange=new n.BehaviorSubject(!1),this.navChangeObserve=this.preventnavChange.asObservable(),this.clearViewRouteforJobCode=new n.BehaviorSubject(!1),this.clearViewRouteforJobCodeObserve=this.clearViewRouteforJobCode.asObservable(),this.preVentJobdetailclose=new n.BehaviorSubject(!1),this.getpreVentJobdetailclose=this.preVentJobdetailclose.asObservable(),this.routeDetailsUtility=new n.BehaviorSubject({}),this.getrouteDetailsUtility=this.routeDetailsUtility.asObservable(),this.removeMapEntity=new n.BehaviorSubject({}),this.removeMapEntityUtility=this.removeMapEntity.asObservable(),this.dict=new Map,this.analyticsRESTURL="https://test-analytics.aggdirect.com/REST/",this.RESTURLPrefix="https://test-server.aggdirect.com/REST/"}return e.prototype.getDateFormat=function(e,t){t=t||"-";var o=e;return(null==o?void 0:o.getFullYear())+t+((o?o.getMonth():0)+1)+t+(null==o?void 0:o.getDate())},e.prototype.getData=function(e){return this.http.get(""+this.analyticsRESTURL+e)},e.prototype.postdata=function(e,t){return this.http.post(""+this.analyticsRESTURL+e,t)},e.prototype.postDataWithRestUrl=function(e,t){return this.http.post(""+this.RESTURLPrefix+e,t)},e.prototype.fetchAutoCompleteLocations=function(e){return this.http.get("https://api.mapbox.com/geocoding/v5/mapbox.places/"+e+".json?access_token=pk.eyJ1Ijoic2FudGFudS1vZ21hIiwiYSI6ImNsOGQ0cDVrNjAweTMzb3RmdG9ieTU5ZDkifQ.I6ZS7mViZYSvBo4zz-mGQQ&country=US")},e.prototype.openSnackBar=function(e,t){this.snackBar.open(e,"",{duration:5e3,verticalPosition:"top",horizontalPosition:"center",panelClass:[t||"default"]})},e.prototype.makeOptions=function(e){var t,o=this;e.order_number&&(-1===this.jcodeOptions.findIndex((function(t){return t.job_id===e.job_id}))&&this.jcodeOptions.push({job_code:e.order_number,job_id:e.job_id}),e.driver_list&&(null===(t=e.driver_list)||void 0===t?void 0:t.length)>0&&e.driver_list.forEach((function(e){-1===o.driverOption.findIndex((function(t){return t===e.driver_name}))&&o.driverOption.push(e.driver_name),-1===o.truckingCompanayOption.findIndex((function(t){return t===e.trucking_company}))&&o.truckingCompanayOption.push(e.trucking_company)}))),-1===this.pickupOptions.findIndex((function(t){return t===e.pickup_location}))&&this.pickupOptions.push(e.pickup_location),-1===this.destOptions.findIndex((function(t){return t===e.delivery_location}))&&this.destOptions.push(e.delivery_location),-1===this.customerOptions.findIndex((function(t){return t===e.customer_name}))&&this.customerOptions.push(e.customer_name),-1===this.unitOptions.findIndex((function(t){return t===e.unit}))&&this.unitOptions.push(e.unit),-1===this.materialOptions.findIndex((function(t){return t===e.material}))&&this.materialOptions.push(e.material),e.route_name&&-1===this.routeNameOptions.findIndex((function(t){return t===e.route_name}))&&this.routeNameOptions.push(e.route_name)},e.prototype.filter=function(e,t){if("string"!=typeof e)return[];var o=e.toLowerCase();if(""===o)return[];var i=[];this.unitOptions.map((function(e){e.toLowerCase().includes(o)&&i.push({type:"unit",label:e,value:e})})),this.customerOptions.map((function(e){e.toLowerCase().includes(o)&&i.push({type:"customer",label:e,value:e})})),this.materialOptions.map((function(e){e.toLowerCase().includes(o)&&i.push({type:"material",label:e,value:e})})),this.pickupOptions.map((function(e){e.toLowerCase().includes(o)&&i.push({type:"pickup location",label:e,value:e})})),this.destOptions.map((function(e){e.toLowerCase().includes(o)&&i.push({type:"destination location",label:e,value:e})})),this.jcodeOptions.map((function(e){e.job_code.toLowerCase().includes(o)&&i.push({type:"job",label:e.job_code,value:e})})),this.driverOption.map((function(e){e.toLowerCase().includes(o)&&i.push({type:"Driver",label:e,value:e})})),this.truckingCompanayOption.map((function(e){e.toLowerCase().includes(o)&&i.push({type:"Trucking Company",label:e,value:e})})),this.routeNameOptions.map((function(e){e.toLowerCase().includes(o)&&i.push({type:"Route name",label:e,value:e})}));var n={};t.map((function(e){n[e.name+e.type]=e}));var r=[];return i.map((function(e){e.label+e.type in n||r.push(e)})),r},e.prototype.getSearchResults=function(e,t){return e.filter((function(e){var o,i,n=[];if(t.length>0){if("unit"===t[0].type&&n.push(t[0].name===e[t[0].type]),"customer"===t[0].type&&n.push(t[0].name===e.customer_name),"material"===t[0].type&&n.push(t[0].name===e[t[0].type]),"pickup location"===t[0].type&&n.push(t[0].name===e.pickup_location),"destination location"===t[0].type&&n.push(t[0].name===e.delivery_location),"job"===t[0].type&&n.push(t[0].name===e.order_number),"Route name"===t[0].type&&n.push(t[0].name===e.route_name),"Driver"===t[0].type)-1!==(null===(o=e.driver_list)||void 0===o?void 0:o.findIndex((function(e){return t[0].name===e.driver_name})))&&n.push(!0);if("Trucking Company"===t[0].type)-1!==(null===(i=e.driver_list)||void 0===i?void 0:i.findIndex((function(e){return t[0].name===e.trucking_company})))&&n.push(!0)}return n.length>0&&n.reduce((function(e,t){return e&&t}))}))},e.prototype.clearOptions=function(){this.pickupOptions=[],this.destOptions=[],this.ownerOptions=[],this.customerOptions=[],this.unitOptions=[],this.materialOptions=[],this.jcodeOptions=[],this.routeNameOptions=[]},e.prototype.setdictValue=function(e,t){this.dict.set(e,t)},e.prototype.getdictValue=function(e){return JSON.parse(this.dict.get(e))},e.prototype.removedictValue=function(e){this.dict.delete(e)},e.prototype.conveySearchIcon=function(e){return!(!e||"object"==typeof e)},e}();d.ɵprov=t.ɵɵdefineInjectable({factory:function(){return new d(t.ɵɵinject(r.HttpClient),t.ɵɵinject(a.MatSnackBar))},token:d,providedIn:"root"}),d.decorators=[{type:t.Injectable,args:[{providedIn:"root"}]}],d.ctorParameters=function(){return[{type:r.HttpClient},{type:a.MatSnackBar}]};var h=function(){function e(e,t){this.utils=e,this.eventManager=t,this.markerOriginList=[],this.markerDestinationList=[],this.initiatecoolmap=new n.BehaviorSubject(!0),this.reintiatecoolmap=this.initiatecoolmap.asObservable(),this.bounds=new o.LngLatBounds,this.originDestinationCordinates=[],this.eventManager.addGlobalEventListener("window","resize",this.onResize.bind(this)),this.windowActualHeightWidth={availHeight:0}}return e.prototype.initiateMapForAddRoute=function(e){var t=this;return new Promise((function(i,n){t.map.remove(),t.map=new o.Map({accessToken:"pk.eyJ1Ijoic2FudGFudS1vZ21hIiwiYSI6ImNsOGQ0cDVrNjAweTMzb3RmdG9ieTU5ZDkifQ.I6ZS7mViZYSvBo4zz-mGQQ",container:e,style:"mapbox://styles/santanu-ogma/cl8ep33uz003414n1twlosz9d",center:[-77.036873,38.907192],zoom:10,bearing:0,pitch:65,interactive:!0}),t.map.once("load",(function(e){i(e)}))}))},e.prototype.loadMapProperty=function(e,t,n,r,a){var s=this;return new Promise((function(a,p){var u=e.features[0].geometry.coordinates[0],c="Ton"===n?"#ff7272":"Load"===n?"#a3c52e":"#ae23d1",l=e.features[0].geometry.coordinates[e.features[0].geometry.coordinates.length-1];s.extendBound(e.features[0].geometry.coordinates,!0).then((function(a){for(var p={type:"FeatureCollection",features:[{type:"Feature",properties:{},geometry:{type:"Point",coordinates:u}}]},d=i.length(e.features[0]),h=[],m=10*e.features[0].geometry.coordinates.length,f=0;f<d;f+=d/m){var y=i.along(e.features[0],f);h.push(y.geometry.coordinates)}e.features[0].geometry.coordinates=h;var g=e.features[0].geometry.coordinates,v=new o.Marker(document.createElement("div")).setLngLat(g[0]).addTo(s.map).togglePopup();s.map.getSource("line"+t)&&s.removeRouteAndMarker(t).then((function(){})),s.map.addSource("line"+t,{type:"geojson",lineMetrics:!0,data:e}),s.map.addLayer({type:"line",source:"line"+t,id:"line"+t,paint:{"line-width":2,"line-gradient":["interpolate",["linear"],["line-progress"],0,"Ton"===n?"#d7f7e4":"Load"===n?"#c9d8f5":"#f5dcc1",1,"Ton"===n?"#ff7272":"Load"===n?"#a3c52e":"#ae23d1"]},layout:{"line-cap":"round","line-join":"round"}});var b={counter:0,pinRouteGeojson:e,steps:m,point:p,pointId:"point"+t,marker:v,pinRoute:g,lineId:"line"+t,index:t,origin:u,destination:l,lineDistance:d,linecolor:c,route:r,isViewRoute:!0};s.createMarker(b),s.map.on("mouseenter","line"+t,(function(e){s.map.setPaintProperty("line"+t,"line-width",5),s.map.setPaintProperty("line"+t,"line-opacity",1);var o={coordinate:[e.lngLat.lng,e.lngLat.lat],pickup:r.pickup_location?r.pickup_location:"",drop:r.delivery_location?r.delivery_location:"",routeType:r.project?"Project":"Route",title:r.project?r.project:r.route_name?r.route_name:"",material:r.material?r.material:"",type:r.unit?r.unit:""};s.createPopup(o)})),s.map.on("mouseleave","line"+t,(function(e){s.map.setPaintProperty("line"+t,"line-width",2),s.popup&&s.popup.remove()}))})),s.map.once("idle",(function(e){a(!0)}))}))},e.prototype.drawLine=function(e,t,o,i,n){var r,a=this,s=e[0],p=e[e.length-1];if(s[0]&&s[1]&&p&&p[0]&&p[1]){if(r=this.provideLineColor(o.unit,n),i){var u={top:this.padding.top,bottom:this.padding.bottom+(this.windowActualHeightWidth.availHeight-(window.innerHeight-65)),left:this.padding.left,right:this.padding.right};this.map.fitBounds([s,p],{padding:u},{fitboundCompleteJob:!0})}this.map.getSource("route-source-for-job-code"+t)&&this.removeRouteAndMarker(t).then((function(){})),this.map.addSource("route-source-for-job-code"+t,{type:"geojson",data:{type:"Feature",properties:{},geometry:{type:"LineString",coordinates:e}}}),this.map.addLayer({id:"route-for-job-code"+t,type:"line",source:"route-source-for-job-code"+t,paint:{"line-color":r,"line-width":2},layout:{"line-cap":"round","line-join":"round"}});var c={origin:s,destination:p,index:t,linecolor:r,route:o};this.createMarker(c),this.map.on("mouseenter","route-for-job-code"+t,(function(e){a.popup&&a.popup.remove(),a.map.setPaintProperty("route-for-job-code"+t,"line-width",5),a.map.setPaintProperty("route-for-job-code"+t,"line-opacity",1);var i={coordinate:[e.lngLat.lng,e.lngLat.lat],pickup:o.pickup_location?o.pickup_location:"",drop:o.delivery_location?o.delivery_location:"",jobCode:o.project?o.order_number:null,customer:o.project?o.customer_name:null,routeType:o.project?"Project":"Route",title:o.project?o.project:o.route_name?o.route_name:"",material:o.material?o.material:"",type:o.unit?o.unit:""};a.createPopup(i)})),this.map.on("mouseleave","route-for-job-code"+t,(function(e){a.map.setPaintProperty("route-for-job-code"+t,"line-width",2),a.popup&&a.popup.remove()}))}},e.prototype.provideLineColor=function(e,t){var o,i=!(!t||["jobrouteList","addroute"].includes(t));switch(e){case"Ton":o=i?"#39c471":"#ff7272";break;case"Load":o=i?"#326ad3":"#a3c52e";break;case"Hourly":o=i?"#ffad56":"#ae23d1"}return o},e.prototype.showRoutePopup=function(e,t,o){if(this.popup&&(this.popup.remove(),this.map.setPaintProperty((o?"line":"route-for-job-code")+e.layer.props.data.index,"line-width",2)),e.color&&"none"!==this.map.getLayoutProperty(e.layer.id,"visibility")){this.map.setPaintProperty((o?"line":"route-for-job-code")+e.layer.props.data.index,"line-width",5),this.map.setPaintProperty((o?"line":"route-for-job-code")+e.layer.props.data.index,"line-opacity",1);var i={coordinate:e.coordinate,pickup:e.layer.props.data.route.pickup_location?e.layer.props.data.route.pickup_location:"",drop:e.layer.props.data.route.delivery_location?e.layer.props.data.route.delivery_location:"",jobCode:e.layer.props.data.route.project?e.layer.props.data.route.order_number:"",customer:e.layer.props.data.route.project?e.layer.props.data.route.customer_name:"",routeType:e.layer.props.data.route.project?"Project":"Route",title:e.layer.props.data.route.project?e.layer.props.data.route.project:e.layer.props.data.route.route_name?e.layer.props.data.route.route_name:"",material:e.layer.props.data.route.material?e.layer.props.data.route.material:"",type:e.layer.props.data.route.unit?e.layer.props.data.route.unit:""};this.createPopup(i)}},e.prototype.createPopup=function(e){this.popup=new o.Popup({closeButton:!1,closeOnClick:!1,closeOnMove:!0,anchor:"bottom-left"}),this.popup.setLngLat(e.coordinate).setHTML('\n <div class="destination">\n <div class="duration">\n <p class="pickprt"><b>Pickup Location:</b> '+e.pickup+'</p>\n <p class="dropprt"><b>Drop Location:</b> '+e.drop+"</p>\n </div>\n "+(e.jobCode?"<span><b>Job Code:</b> "+e.jobCode+"</span>":"")+"\n "+(e.customer?"<span><b>Customer:</b> "+e.customer+"</span>":"")+"\n <span><b>"+e.routeType+" Name:</b> "+e.title+"</span>\n <span><b>Material:</b> "+e.material+"</span>\n <span><b>Type:</b> "+e.type+"</span>\n </div>\n ").addTo(this.map)},e.prototype.hexToRGB=function(e){return e.replace(/^#?([a-f\d])([a-f\d])([a-f\d])$/i,(function(e,t,o,i){return"#"+t+t+o+o+i+i})).substring(1).match(/.{2}/g).map((function(e){return parseInt(e,16)}))},e.prototype.createMarker=function(e){var t,i,n=this;if(e.origin[0]&&e.origin[1]&&e.destination[0]&&e.destination[1]){var r=new o.Popup({closeButton:!1}).setHTML("<b>Pickup: </b>"+(null===(t=e.route)||void 0===t?void 0:t.pickup_location)),a=new o.Popup({closeButton:!1}).setHTML("<b>Delivery: </b>"+(null===(i=e.route)||void 0===i?void 0:i.delivery_location)),s=document.createElement("div");s.className="marker",s.innerHTML="<span class='markerPointer' style='background:"+e.linecolor+"'><b>P</b><span class='markerSpan' style='border-top: 10px solid "+e.linecolor+"'></span></span>";var c=new o.Marker(s).setPopup(r).setLngLat(e.origin).addTo(this.map);c.getElement().addEventListener("mouseenter",(function(){return c.togglePopup()})),c.getElement().addEventListener("mouseleave",(function(){return c.togglePopup()}));var l=document.createElement("div");l.className="marker",l.innerHTML="<span class='markerPointer' style='background:"+e.linecolor+"'><b>D</b><span class='markerSpan' style='border-top: 10px solid "+e.linecolor+"'></span></span>";var d=new o.Marker(l).setPopup(a).setLngLat(e.destination).addTo(this.map);d.getElement().addEventListener("mouseenter",(function(){return d.togglePopup()})),d.getElement().addEventListener("mouseleave",(function(){return d.togglePopup()})),this.markerOriginList[e.index]=c,this.markerDestinationList[e.index]=d;var h=this.hexToRGB(e.linecolor),m=new p.MapboxLayer({id:"arc-layer"+e.index,type:u.ArcLayer,pickable:!0,data:{route:e.route,index:e.index},getWidth:1,getSourcePosition:e.origin,getTargetPosition:e.destination,getTargetColor:[255,255,255],getSourceColor:[h[0],h[1],h[2]],onHover:function(t,o){return n.showRoutePopup(t,o,e.isViewRoute)}});this.map.addLayer(m)}},e.prototype.removeRouteAndMarker=function(e){return c(this,void 0,void 0,(function(){return l(this,(function(t){switch(t.label){case 0:return this.map?(this.map.getLayer("arc-layer"+e)&&this.map.removeLayer("arc-layer"+e),this.map.getLayer("line"+e)&&this.map.removeLayer("line"+e),this.map.getLayer("custom_layer"+e)&&this.map.removeLayer("custom_layer"+e),this.map.getSource("line"+e)&&this.map.removeSource("line"+e),this.map.getLayer("route-for-job-code"+e)&&this.map.removeLayer("route-for-job-code"+e),this.map.getSource("route-source-for-job-code"+e)&&this.map.removeSource("route-source-for-job-code"+e),this.findMarkerBound(e),this.markerOriginList[e]&&this.markerOriginList[e].remove(),this.markerDestinationList[e]&&this.markerDestinationList[e].remove(),[4,!0]):[3,2];case 1:t.sent(),t.label=2;case 2:return[2]}}))}))},e.prototype.findMarkerBound=function(e){var t=this,o=this.originDestinationCordinates.findIndex((function(o){var i,n,r,a;return o[0][0].toFixed(6)==(null===(n=null===(i=t.markerOriginList[e])||void 0===i?void 0:i.getLngLat())||void 0===n?void 0:n.lng.toFixed(6))&&o[0][1].toFixed(6)==(null===(a=null===(r=t.markerOriginList[e])||void 0===r?void 0:r.getLngLat())||void 0===a?void 0:a.lat.toFixed(6))}));o>=0&&this.originDestinationCordinates.splice(o,1)},e.prototype.filterRoute=function(e,t,o){return c(this,void 0,void 0,(function(){return l(this,(function(i){switch(i.label){case 0:return e&&(this.map.getLayer("route-for-job-code"+e)&&(this.map.setLayoutProperty("route-for-job-code"+e,"visibility",t),this.markerOriginList[e].getElement().style.display="visible"===t?"block":t,this.markerDestinationList[e].getElement().style.display="visible"===t?"block":t,"none"===t&&o&&(this.findMarkerBound(e),this.extendReBound())),this.map.getLayer("arc-layer"+e)&&this.map.setLayoutProperty("arc-layer"+e,"visibility",t)),[4,!0];case 1:return i.sent(),[2]}}))}))},e.prototype.extendBound=function(e,t){var o=this;return new Promise((function(i,n){if(e){if("string"==typeof e){var r=e.split(";");(r=r.map((function(e){return o.formateLatLong(e)}))).forEach((function(e,t){1===e.length&&r.splice(t,1)})),e=r}e[0][0]&&e[0][1]&&e[e.length-1][0]&&e[e.length-1][1]&&(o.originDestinationCordinates.push(e),e.map((function(e){o.bounds.extend(e)})))}if(t){var a={top:o.padding.top,bottom:o.padding.bottom+(o.windowActualHeightWidth.availHeight-(window.innerHeight-65)),left:o.padding.left,right:o.padding.right};setTimeout((function(){t&&Object.keys(o.bounds).length>0&&o.map.fitBounds(o.bounds,{padding:a},{fitboundComplete:!0})}),100),o.map.once("moveend",(function(e){e.fitboundComplete&&i(!0)}))}}))},e.prototype.extendReBound=function(e){var t=this;return new Promise((function(e,i){t.bounds=new o.LngLatBounds,t.originDestinationCordinates.length>=0?t.originDestinationCordinates.map((function(o,i){if(o.map((function(e){t.bounds.extend(e)})),i===t.originDestinationCordinates.length-1){var n={top:t.padding.top,bottom:t.padding.bottom+(t.windowActualHeightWidth.availHeight-(window.innerHeight-65)),left:t.padding.left,right:t.padding.right};setTimeout((function(){t.originDestinationCordinates.length>0&&t.map.fitBounds(t.bounds,{padding:n})}),500),e(!0)}})):e(!0)}))},e.prototype.plotRoute=function(e,t,o,i,n){var r=this;return new Promise((function(a,s){var p={};if(["jobcode"].includes(o))p.job=e.job_id,r.utils.postDataWithRestUrl("schedule/job/path",p).subscribe((function(s){if(s.data.route){var p=s.data.route.split(";");(p=p.map((function(e){return r.formateLatLong(e)}))).forEach((function(e,t){1===e.length&&p.splice(t,1)})),e.path=p,r.extendBound(e.path,n),e.path&&e.path.length>0&&r.drawLine(e.path,t,e,i,o),e.index=t}else r.extendBound(null,n);a(!0)}),(function(e){e&&s(!1)}));else if(["jobrouteList","addroute"].includes(o)&&e.path&&e.path.length>0){var u=e.path.split(";");(u=u.map((function(e){return r.formateLatLong(e)}))).forEach((function(e,t){1===e.length&&u.splice(t,1)})),r.extendBound(u,n),r.drawLine(u,t,e,i,o)}}))},e.prototype.clearBound=function(){this.bounds=new o.LngLatBounds,this.originDestinationCordinates=[],this.clearPadding()},e.prototype.formateLatLong=function(e){return e?e.split(",").map((function(e){return+e})).reverse():null},e.prototype.clearBoundWithCordinates=function(){this.bounds=new o.LngLatBounds,this.originDestinationCordinates=[]},e.prototype.onResize=function(e){var t=this;this.bounds.isEmpty()||(this.windowActualHeightWidth.availHeight=window.innerHeight>window.screen.availHeight?window.innerHeight:window.screen.availHeight,setTimeout((function(){t.map.fitBounds(t.bounds,{padding:{top:t.padding.top,bottom:t.padding.bottom+(t.windowActualHeightWidth.availHeight-(e.target.innerHeight-65)),left:t.padding.left,right:t.padding.right}})}),500))},e.prototype.setWindowHeight=function(e){this.windowActualHeightWidth.availHeight=e},e.prototype.setPadding=function(e){this.padding=e},e.prototype.clearPadding=function(){this.padding=null},e.prototype.removeJobFromMap=function(e){var t=this;e.map((function(o,i){var n=o.job_id?o.job_id:o.route_id;t.removeRouteAndMarker(n),i===e.length-1&&t.extendReBound()}))},e}();h.ɵprov=t.ɵɵdefineInjectable({factory:function(){return new h(t.ɵɵinject(d),t.ɵɵinject(s.EventManager))},token:h,providedIn:"root"}),h.decorators=[{type:t.Injectable,args:[{providedIn:"root"}]}],h.ctorParameters=function(){return[{type:d},{type:s.EventManager}]};var m,f=function(){this.index=0};(m=e.EstinationEnum||(e.EstinationEnum={})).estimated_distance="miles",m.estimated_time="time";var y;(y=e.JobCodeOverviewEnum||(e.JobCodeOverviewEnum={})).customer_contact="Customer Contact",y.delivery_contact="Delivery Contact",y.pickup_location="Pickup",y.delivery_location="Delivery",y.project="Project Name",y.unit="Job Type";var g;(g=e.DriverSmsCardEnum||(e.DriverSmsCardEnum={})).order_number="Jobcode",g.date="Date",g.values="Total tasks",g.material="Material",g.unit="Unit",g.pickup_location="Pickup Address",g.delivery_location="Delivery Address";var v=function(){};e.CoolmapService=h,e.DriversmsCardKey=["order_number","date","values","material","unit","pickup_location","delivery_location"],e.EstinationData=["estimated_distance","estimated_time"],e.JobCodeOverviewData=["customer_contact","delivery_contact","pickup_location","delivery_location","project","unit"],e.PopupData=v,e.Route=f,e.UtilsService=d,Object.defineProperty(e,"__esModule",{value:!0})}));
1
+ !function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports,require("@angular/core"),require("mapbox-gl"),require("@turf/turf"),require("rxjs"),require("@angular/common/http"),require("@angular/material/snack-bar"),require("@angular/platform-browser"),require("@deck.gl/mapbox"),require("@deck.gl/layers")):"function"==typeof define&&define.amd?define("coolmap-services",["exports","@angular/core","mapbox-gl","@turf/turf","rxjs","@angular/common/http","@angular/material/snack-bar","@angular/platform-browser","@deck.gl/mapbox","@deck.gl/layers"],t):t((e="undefined"!=typeof globalThis?globalThis:e||self)["coolmap-services"]={},e.ng.core,e.mapboxgl,e.turf,e.rxjs,e.ng.common.http,e.ng.material.snackBar,e.ng.platformBrowser,e.mapbox,e.layers)}(this,(function(e,t,o,i,n,r,a,s,p,u){"use strict";function c(e,t,o,i){return new(o||(o=Promise))((function(n,r){function a(e){try{p(i.next(e))}catch(e){r(e)}}function s(e){try{p(i.throw(e))}catch(e){r(e)}}function p(e){var t;e.done?n(e.value):(t=e.value,t instanceof o?t:new o((function(e){e(t)}))).then(a,s)}p((i=i.apply(e,t||[])).next())}))}function l(e,t){var o,i,n,r,a={label:0,sent:function(){if(1&n[0])throw n[1];return n[1]},trys:[],ops:[]};return r={next:s(0),throw:s(1),return:s(2)},"function"==typeof Symbol&&(r[Symbol.iterator]=function(){return this}),r;function s(s){return function(p){return function(s){if(o)throw new TypeError("Generator is already executing.");for(;r&&(r=0,s[0]&&(a=0)),a;)try{if(o=1,i&&(n=2&s[0]?i.return:s[0]?i.throw||((n=i.return)&&n.call(i),0):i.next)&&!(n=n.call(i,s[1])).done)return n;switch(i=0,n&&(s=[2&s[0],n.value]),s[0]){case 0:case 1:n=s;break;case 4:return a.label++,{value:s[1],done:!1};case 5:a.label++,i=s[1],s=[0];continue;case 7:s=a.ops.pop(),a.trys.pop();continue;default:if(!(n=a.trys,(n=n.length>0&&n[n.length-1])||6!==s[0]&&2!==s[0])){a=0;continue}if(3===s[0]&&(!n||s[1]>n[0]&&s[1]<n[3])){a.label=s[1];break}if(6===s[0]&&a.label<n[1]){a.label=n[1],n=s;break}if(n&&a.label<n[2]){a.label=n[2],a.ops.push(s);break}n[2]&&a.ops.pop(),a.trys.pop();continue}s=t.call(e,a)}catch(e){s=[6,e],i=0}finally{o=n=0}if(5&s[0])throw s[1];return{value:s[0]?s[1]:void 0,done:!0}}([s,p])}}}Object.create;Object.create;var d=function(){function e(e,t){this.http=e,this.snackBar=t,this.analyticsRESTURL="",this.RESTURLPrefix="",this.pickupOptions=[],this.destOptions=[],this.ownerOptions=[],this.customerOptions=[],this.unitOptions=[],this.materialOptions=[],this.jcodeOptions=[],this.driverOption=[],this.truckingCompanayOption=[],this.routeNameOptions=[],this.preventnavChange=new n.BehaviorSubject(!1),this.navChangeObserve=this.preventnavChange.asObservable(),this.clearViewRouteforJobCode=new n.BehaviorSubject(!1),this.clearViewRouteforJobCodeObserve=this.clearViewRouteforJobCode.asObservable(),this.preVentJobdetailclose=new n.BehaviorSubject(!1),this.getpreVentJobdetailclose=this.preVentJobdetailclose.asObservable(),this.routeDetailsUtility=new n.BehaviorSubject({}),this.getrouteDetailsUtility=this.routeDetailsUtility.asObservable(),this.removeMapEntity=new n.BehaviorSubject({}),this.removeMapEntityUtility=this.removeMapEntity.asObservable(),this.dict=new Map,this.analyticsRESTURL="https://test-analytics.aggdirect.com/REST/",this.RESTURLPrefix="https://test-server.aggdirect.com/REST/"}return e.prototype.getDateFormat=function(e,t){t=t||"-";var o=e;return(null==o?void 0:o.getFullYear())+t+((o?o.getMonth():0)+1)+t+(null==o?void 0:o.getDate())},e.prototype.getData=function(e){return this.http.get(""+this.analyticsRESTURL+e)},e.prototype.postdata=function(e,t){return this.http.post(""+this.analyticsRESTURL+e,t)},e.prototype.postDataWithRestUrl=function(e,t){return this.http.post(""+this.RESTURLPrefix+e,t)},e.prototype.fetchAutoCompleteLocations=function(e){return this.http.get("https://api.mapbox.com/geocoding/v5/mapbox.places/"+e+".json?access_token=pk.eyJ1Ijoic2FudGFudS1vZ21hIiwiYSI6ImNsOGQ0cDVrNjAweTMzb3RmdG9ieTU5ZDkifQ.I6ZS7mViZYSvBo4zz-mGQQ&country=US")},e.prototype.openSnackBar=function(e,t){this.snackBar.open(e,"",{duration:5e3,verticalPosition:"top",horizontalPosition:"center",panelClass:[t||"default"]})},e.prototype.makeOptions=function(e){var t,o=this;e.order_number&&(-1===this.jcodeOptions.findIndex((function(t){return t.job_id===e.job_id}))&&this.jcodeOptions.push({job_code:e.order_number,job_id:e.job_id}),e.driver_list&&(null===(t=e.driver_list)||void 0===t?void 0:t.length)>0&&e.driver_list.forEach((function(e){-1===o.driverOption.findIndex((function(t){return t===e.driver_name}))&&o.driverOption.push(e.driver_name),-1===o.truckingCompanayOption.findIndex((function(t){return t===e.trucking_company}))&&o.truckingCompanayOption.push(e.trucking_company)}))),-1===this.pickupOptions.findIndex((function(t){return t===e.pickup_location}))&&this.pickupOptions.push(e.pickup_location),-1===this.destOptions.findIndex((function(t){return t===e.delivery_location}))&&this.destOptions.push(e.delivery_location),-1===this.customerOptions.findIndex((function(t){return t===e.customer_name}))&&this.customerOptions.push(e.customer_name),-1===this.unitOptions.findIndex((function(t){return t===e.unit}))&&this.unitOptions.push(e.unit),-1===this.materialOptions.findIndex((function(t){return t===e.material}))&&this.materialOptions.push(e.material),e.route_name&&-1===this.routeNameOptions.findIndex((function(t){return t===e.route_name}))&&this.routeNameOptions.push(e.route_name)},e.prototype.filter=function(e,t){if("string"!=typeof e)return[];var o=e.toLowerCase();if(""===o)return[];var i=[];this.unitOptions.map((function(e){e.toLowerCase().includes(o)&&i.push({type:"unit",label:e,value:e})})),this.customerOptions.map((function(e){e.toLowerCase().includes(o)&&i.push({type:"customer",label:e,value:e})})),this.materialOptions.map((function(e){e.toLowerCase().includes(o)&&i.push({type:"material",label:e,value:e})})),this.pickupOptions.map((function(e){e.toLowerCase().includes(o)&&i.push({type:"pickup location",label:e,value:e})})),this.destOptions.map((function(e){e.toLowerCase().includes(o)&&i.push({type:"destination location",label:e,value:e})})),this.jcodeOptions.map((function(e){e.job_code.toLowerCase().includes(o)&&i.push({type:"job",label:e.job_code,value:e})})),this.driverOption.map((function(e){e.toLowerCase().includes(o)&&i.push({type:"Driver",label:e,value:e})})),this.truckingCompanayOption.map((function(e){e.toLowerCase().includes(o)&&i.push({type:"Trucking Company",label:e,value:e})})),this.routeNameOptions.map((function(e){e.toLowerCase().includes(o)&&i.push({type:"Route name",label:e,value:e})}));var n={};t.map((function(e){n[e.name+e.type]=e}));var r=[];return i.map((function(e){e.label+e.type in n||r.push(e)})),r},e.prototype.getSearchResults=function(e,t){return e.filter((function(e){var o,i,n=[];if(t.length>0){if("unit"===t[0].type&&n.push(t[0].name===e[t[0].type]),"customer"===t[0].type&&n.push(t[0].name===e.customer_name),"material"===t[0].type&&n.push(t[0].name===e[t[0].type]),"pickup location"===t[0].type&&n.push(t[0].name===e.pickup_location),"destination location"===t[0].type&&n.push(t[0].name===e.delivery_location),"job"===t[0].type&&n.push(t[0].name===e.order_number),"Route name"===t[0].type&&n.push(t[0].name===e.route_name),"Driver"===t[0].type)-1!==(null===(o=e.driver_list)||void 0===o?void 0:o.findIndex((function(e){return t[0].name===e.driver_name})))&&n.push(!0);if("Trucking Company"===t[0].type)-1!==(null===(i=e.driver_list)||void 0===i?void 0:i.findIndex((function(e){return t[0].name===e.trucking_company})))&&n.push(!0)}return n.length>0&&n.reduce((function(e,t){return e&&t}))}))},e.prototype.clearOptions=function(){this.pickupOptions=[],this.destOptions=[],this.ownerOptions=[],this.customerOptions=[],this.unitOptions=[],this.materialOptions=[],this.jcodeOptions=[],this.routeNameOptions=[]},e.prototype.setdictValue=function(e,t){this.dict.set(e,t)},e.prototype.getdictValue=function(e){return JSON.parse(this.dict.get(e))},e.prototype.removedictValue=function(e){this.dict.delete(e)},e.prototype.conveySearchIcon=function(e){return!(!e||"object"==typeof e)},e}();d.ɵprov=t.ɵɵdefineInjectable({factory:function(){return new d(t.ɵɵinject(r.HttpClient),t.ɵɵinject(a.MatSnackBar))},token:d,providedIn:"root"}),d.decorators=[{type:t.Injectable,args:[{providedIn:"root"}]}],d.ctorParameters=function(){return[{type:r.HttpClient},{type:a.MatSnackBar}]};var h=function(){function e(e,t){this.utils=e,this.eventManager=t,this.markerOriginList=[],this.markerDestinationList=[],this.initiatecoolmap=new n.BehaviorSubject(!0),this.reintiatecoolmap=this.initiatecoolmap.asObservable(),this.bounds=new o.LngLatBounds,this.originDestinationCordinates=[],this.eventManager.addGlobalEventListener("window","resize",this.onResize.bind(this)),this.windowActualHeightWidth={availHeight:0}}return e.prototype.initiateMapForAddRoute=function(e){var t=this;return new Promise((function(i,n){t.map=new o.Map({accessToken:"pk.eyJ1Ijoic2FudGFudS1vZ21hIiwiYSI6ImNsOGQ0cDVrNjAweTMzb3RmdG9ieTU5ZDkifQ.I6ZS7mViZYSvBo4zz-mGQQ",container:e,style:"mapbox://styles/santanu-ogma/cl8ep33uz003414n1twlosz9d",center:[-77.036873,38.907192],zoom:10,bearing:0,pitch:65,interactive:!0}),t.map.once("load",(function(e){i(e)}))}))},e.prototype.loadMapProperty=function(e,t,n,r,a){var s=this;return new Promise((function(a,p){var u=e.features[0].geometry.coordinates[0],c="Ton"===n?"#ff7272":"Load"===n?"#a3c52e":"#ae23d1",l=e.features[0].geometry.coordinates[e.features[0].geometry.coordinates.length-1];s.extendBound(e.features[0].geometry.coordinates,!0).then((function(a){for(var p={type:"FeatureCollection",features:[{type:"Feature",properties:{},geometry:{type:"Point",coordinates:u}}]},d=i.length(e.features[0]),h=[],m=10*e.features[0].geometry.coordinates.length,f=0;f<d;f+=d/m){var y=i.along(e.features[0],f);h.push(y.geometry.coordinates)}e.features[0].geometry.coordinates=h;var g=e.features[0].geometry.coordinates,v=new o.Marker(document.createElement("div")).setLngLat(g[0]).addTo(s.map).togglePopup();s.map.getSource("line"+t)&&s.removeRouteAndMarker(t).then((function(){})),s.map.addSource("line"+t,{type:"geojson",lineMetrics:!0,data:e}),s.map.addLayer({type:"line",source:"line"+t,id:"line"+t,paint:{"line-width":2,"line-gradient":["interpolate",["linear"],["line-progress"],0,"Ton"===n?"#d7f7e4":"Load"===n?"#c9d8f5":"#f5dcc1",1,"Ton"===n?"#ff7272":"Load"===n?"#a3c52e":"#ae23d1"]},layout:{"line-cap":"round","line-join":"round"}});var b={counter:0,pinRouteGeojson:e,steps:m,point:p,pointId:"point"+t,marker:v,pinRoute:g,lineId:"line"+t,index:t,origin:u,destination:l,lineDistance:d,linecolor:c,route:r,isViewRoute:!0};s.createMarker(b),s.map.on("mouseenter","line"+t,(function(e){s.map.setPaintProperty("line"+t,"line-width",5),s.map.setPaintProperty("line"+t,"line-opacity",1);var o={coordinate:[e.lngLat.lng,e.lngLat.lat],pickup:r.pickup_location?r.pickup_location:"",drop:r.delivery_location?r.delivery_location:"",routeType:r.project?"Project":"Route",title:r.project?r.project:r.route_name?r.route_name:"",material:r.material?r.material:"",type:r.unit?r.unit:""};s.createPopup(o)})),s.map.on("mouseleave","line"+t,(function(e){s.map.setPaintProperty("line"+t,"line-width",2),s.popup&&s.popup.remove()}))})),s.map.once("idle",(function(e){a(!0)}))}))},e.prototype.drawLine=function(e,t,o,i,n){var r,a=this,s=e[0],p=e[e.length-1];if(s[0]&&s[1]&&p&&p[0]&&p[1]){if(r=this.provideLineColor(o.unit,n),i){var u={top:this.padding.top,bottom:this.padding.bottom+(this.windowActualHeightWidth.availHeight-(window.innerHeight-65)),left:this.padding.left,right:this.padding.right};this.map.fitBounds([s,p],{padding:u},{fitboundCompleteJob:!0})}this.map.getSource("route-source-for-job-code"+t)&&this.removeRouteAndMarker(t).then((function(){})),this.map.addSource("route-source-for-job-code"+t,{type:"geojson",data:{type:"Feature",properties:{},geometry:{type:"LineString",coordinates:e}}}),this.map.addLayer({id:"route-for-job-code"+t,type:"line",source:"route-source-for-job-code"+t,paint:{"line-color":r,"line-width":2},layout:{"line-cap":"round","line-join":"round"}});var c={origin:s,destination:p,index:t,linecolor:r,route:o};this.createMarker(c),this.map.on("mouseenter","route-for-job-code"+t,(function(e){a.popup&&a.popup.remove(),a.map.setPaintProperty("route-for-job-code"+t,"line-width",5),a.map.setPaintProperty("route-for-job-code"+t,"line-opacity",1);var i={coordinate:[e.lngLat.lng,e.lngLat.lat],pickup:o.pickup_location?o.pickup_location:"",drop:o.delivery_location?o.delivery_location:"",jobCode:o.project?o.order_number:null,customer:o.project?o.customer_name:null,routeType:o.project?"Project":"Route",title:o.project?o.project:o.route_name?o.route_name:"",material:o.material?o.material:"",type:o.unit?o.unit:""};a.createPopup(i)})),this.map.on("mouseleave","route-for-job-code"+t,(function(e){a.map.setPaintProperty("route-for-job-code"+t,"line-width",2),a.popup&&a.popup.remove()}))}},e.prototype.provideLineColor=function(e,t){var o,i=!(!t||["jobrouteList","addroute"].includes(t));switch(e){case"Ton":o=i?"#39c471":"#ff7272";break;case"Load":o=i?"#326ad3":"#a3c52e";break;case"Hourly":o=i?"#ffad56":"#ae23d1"}return o},e.prototype.showRoutePopup=function(e,t,o){if(this.popup&&(this.popup.remove(),this.map.setPaintProperty((o?"line":"route-for-job-code")+e.layer.props.data.index,"line-width",2)),e.color&&"none"!==this.map.getLayoutProperty(e.layer.id,"visibility")){this.map.setPaintProperty((o?"line":"route-for-job-code")+e.layer.props.data.index,"line-width",5),this.map.setPaintProperty((o?"line":"route-for-job-code")+e.layer.props.data.index,"line-opacity",1);var i={coordinate:e.coordinate,pickup:e.layer.props.data.route.pickup_location?e.layer.props.data.route.pickup_location:"",drop:e.layer.props.data.route.delivery_location?e.layer.props.data.route.delivery_location:"",jobCode:e.layer.props.data.route.project?e.layer.props.data.route.order_number:"",customer:e.layer.props.data.route.project?e.layer.props.data.route.customer_name:"",routeType:e.layer.props.data.route.project?"Project":"Route",title:e.layer.props.data.route.project?e.layer.props.data.route.project:e.layer.props.data.route.route_name?e.layer.props.data.route.route_name:"",material:e.layer.props.data.route.material?e.layer.props.data.route.material:"",type:e.layer.props.data.route.unit?e.layer.props.data.route.unit:""};this.createPopup(i)}},e.prototype.createPopup=function(e){this.popup=new o.Popup({closeButton:!1,closeOnClick:!1,closeOnMove:!0,anchor:"bottom-left"}),this.popup.setLngLat(e.coordinate).setHTML('\n <div class="destination">\n <div class="duration">\n <p class="pickprt"><b>Pickup Location:</b> '+e.pickup+'</p>\n <p class="dropprt"><b>Drop Location:</b> '+e.drop+"</p>\n </div>\n "+(e.jobCode?"<span><b>Job Code:</b> "+e.jobCode+"</span>":"")+"\n "+(e.customer?"<span><b>Customer:</b> "+e.customer+"</span>":"")+"\n <span><b>"+e.routeType+" Name:</b> "+e.title+"</span>\n <span><b>Material:</b> "+e.material+"</span>\n <span><b>Type:</b> "+e.type+"</span>\n </div>\n ").addTo(this.map)},e.prototype.hexToRGB=function(e){return e.replace(/^#?([a-f\d])([a-f\d])([a-f\d])$/i,(function(e,t,o,i){return"#"+t+t+o+o+i+i})).substring(1).match(/.{2}/g).map((function(e){return parseInt(e,16)}))},e.prototype.createMarker=function(e){var t,i,n=this;if(e.origin[0]&&e.origin[1]&&e.destination[0]&&e.destination[1]){var r=new o.Popup({closeButton:!1}).setHTML("<b>Pickup: </b>"+(null===(t=e.route)||void 0===t?void 0:t.pickup_location)),a=new o.Popup({closeButton:!1}).setHTML("<b>Delivery: </b>"+(null===(i=e.route)||void 0===i?void 0:i.delivery_location)),s=document.createElement("div");s.className="marker",s.innerHTML="<span class='markerPointer' style='background:"+e.linecolor+"'><b>P</b><span class='markerSpan' style='border-top: 10px solid "+e.linecolor+"'></span></span>";var c=new o.Marker(s).setPopup(r).setLngLat(e.origin).addTo(this.map);c.getElement().addEventListener("mouseenter",(function(){return c.togglePopup()})),c.getElement().addEventListener("mouseleave",(function(){return c.togglePopup()}));var l=document.createElement("div");l.className="marker",l.innerHTML="<span class='markerPointer' style='background:"+e.linecolor+"'><b>D</b><span class='markerSpan' style='border-top: 10px solid "+e.linecolor+"'></span></span>";var d=new o.Marker(l).setPopup(a).setLngLat(e.destination).addTo(this.map);d.getElement().addEventListener("mouseenter",(function(){return d.togglePopup()})),d.getElement().addEventListener("mouseleave",(function(){return d.togglePopup()})),this.markerOriginList[e.index]=c,this.markerDestinationList[e.index]=d;var h=this.hexToRGB(e.linecolor),m=new p.MapboxLayer({id:"arc-layer"+e.index,type:u.ArcLayer,pickable:!0,data:{route:e.route,index:e.index},getWidth:1,getSourcePosition:e.origin,getTargetPosition:e.destination,getTargetColor:[255,255,255],getSourceColor:[h[0],h[1],h[2]],onHover:function(t,o){return n.showRoutePopup(t,o,e.isViewRoute)}});this.map.addLayer(m)}},e.prototype.removeRouteAndMarker=function(e){return c(this,void 0,void 0,(function(){return l(this,(function(t){switch(t.label){case 0:return this.map?(this.map.getLayer("arc-layer"+e)&&this.map.removeLayer("arc-layer"+e),this.map.getLayer("line"+e)&&this.map.removeLayer("line"+e),this.map.getLayer("custom_layer"+e)&&this.map.removeLayer("custom_layer"+e),this.map.getSource("line"+e)&&this.map.removeSource("line"+e),this.map.getLayer("route-for-job-code"+e)&&this.map.removeLayer("route-for-job-code"+e),this.map.getSource("route-source-for-job-code"+e)&&this.map.removeSource("route-source-for-job-code"+e),this.findMarkerBound(e),this.markerOriginList[e]&&this.markerOriginList[e].remove(),this.markerDestinationList[e]&&this.markerDestinationList[e].remove(),[4,!0]):[3,2];case 1:t.sent(),t.label=2;case 2:return[2]}}))}))},e.prototype.findMarkerBound=function(e){var t=this,o=this.originDestinationCordinates.findIndex((function(o){var i,n,r,a;return o[0][0].toFixed(6)==(null===(n=null===(i=t.markerOriginList[e])||void 0===i?void 0:i.getLngLat())||void 0===n?void 0:n.lng.toFixed(6))&&o[0][1].toFixed(6)==(null===(a=null===(r=t.markerOriginList[e])||void 0===r?void 0:r.getLngLat())||void 0===a?void 0:a.lat.toFixed(6))}));o>=0&&this.originDestinationCordinates.splice(o,1)},e.prototype.filterRoute=function(e,t,o){return c(this,void 0,void 0,(function(){return l(this,(function(i){switch(i.label){case 0:return e&&(this.map.getLayer("route-for-job-code"+e)&&(this.map.setLayoutProperty("route-for-job-code"+e,"visibility",t),this.markerOriginList[e].getElement().style.display="visible"===t?"block":t,this.markerDestinationList[e].getElement().style.display="visible"===t?"block":t,"none"===t&&o&&(this.findMarkerBound(e),this.extendReBound())),this.map.getLayer("arc-layer"+e)&&this.map.setLayoutProperty("arc-layer"+e,"visibility",t)),[4,!0];case 1:return i.sent(),[2]}}))}))},e.prototype.extendBound=function(e,t){var o=this;return new Promise((function(i,n){if(e){if("string"==typeof e){var r=e.split(";");(r=r.map((function(e){return o.formateLatLong(e)}))).forEach((function(e,t){1===e.length&&r.splice(t,1)})),e=r}e[0][0]&&e[0][1]&&e[e.length-1][0]&&e[e.length-1][1]&&(o.originDestinationCordinates.push(e),e.map((function(e){o.bounds.extend(e)})))}if(t){var a={top:o.padding.top,bottom:o.padding.bottom+(o.windowActualHeightWidth.availHeight-(window.innerHeight-65)),left:o.padding.left,right:o.padding.right};setTimeout((function(){t&&Object.keys(o.bounds).length>0&&o.map.fitBounds(o.bounds,{padding:a},{fitboundComplete:!0})}),100),o.map.once("moveend",(function(e){e.fitboundComplete&&i(!0)}))}}))},e.prototype.extendReBound=function(e){var t=this;return new Promise((function(e,i){t.bounds=new o.LngLatBounds,t.originDestinationCordinates.length>=0?t.originDestinationCordinates.map((function(o,i){if(o.map((function(e){t.bounds.extend(e)})),i===t.originDestinationCordinates.length-1){var n={top:t.padding.top,bottom:t.padding.bottom+(t.windowActualHeightWidth.availHeight-(window.innerHeight-65)),left:t.padding.left,right:t.padding.right};setTimeout((function(){t.originDestinationCordinates.length>0&&t.map.fitBounds(t.bounds,{padding:n})}),500),e(!0)}})):e(!0)}))},e.prototype.plotRoute=function(e,t,o,i,n){var r=this;return new Promise((function(a,s){var p={};if(["jobcode"].includes(o))p.job=e.job_id,r.utils.postDataWithRestUrl("schedule/job/path",p).subscribe((function(s){if(s.data.route){var p=s.data.route.split(";");(p=p.map((function(e){return r.formateLatLong(e)}))).forEach((function(e,t){1===e.length&&p.splice(t,1)})),e.path=p,r.extendBound(e.path,n),e.path&&e.path.length>0&&r.drawLine(e.path,t,e,i,o),e.index=t}else r.extendBound(null,n);a(!0)}),(function(e){e&&s(!1)}));else if(["jobrouteList","addroute"].includes(o)&&e.path&&e.path.length>0){var u=e.path.split(";");(u=u.map((function(e){return r.formateLatLong(e)}))).forEach((function(e,t){1===e.length&&u.splice(t,1)})),r.extendBound(u,n),r.drawLine(u,t,e,i,o)}}))},e.prototype.clearBound=function(){this.bounds=new o.LngLatBounds,this.originDestinationCordinates=[],this.clearPadding()},e.prototype.formateLatLong=function(e){return e?e.split(",").map((function(e){return+e})).reverse():null},e.prototype.clearBoundWithCordinates=function(){this.bounds=new o.LngLatBounds,this.originDestinationCordinates=[]},e.prototype.onResize=function(e){var t=this;this.bounds.isEmpty()||(this.windowActualHeightWidth.availHeight=window.innerHeight>window.screen.availHeight?window.innerHeight:window.screen.availHeight,setTimeout((function(){t.map.fitBounds(t.bounds,{padding:{top:t.padding.top,bottom:t.padding.bottom+(t.windowActualHeightWidth.availHeight-(e.target.innerHeight-65)),left:t.padding.left,right:t.padding.right}})}),500))},e.prototype.setWindowHeight=function(e){this.windowActualHeightWidth.availHeight=e},e.prototype.setPadding=function(e){this.padding=e},e.prototype.clearPadding=function(){this.padding=null},e.prototype.removeJobFromMap=function(e){var t=this;e.map((function(o,i){var n=o.job_id?o.job_id:o.route_id;t.removeRouteAndMarker(n),i===e.length-1&&t.extendReBound()}))},e}();h.ɵprov=t.ɵɵdefineInjectable({factory:function(){return new h(t.ɵɵinject(d),t.ɵɵinject(s.EventManager))},token:h,providedIn:"root"}),h.decorators=[{type:t.Injectable,args:[{providedIn:"root"}]}],h.ctorParameters=function(){return[{type:d},{type:s.EventManager}]};var m,f=function(){this.index=0};(m=e.EstinationEnum||(e.EstinationEnum={})).estimated_distance="miles",m.estimated_time="time";var y;(y=e.JobCodeOverviewEnum||(e.JobCodeOverviewEnum={})).customer_contact="Customer Contact",y.delivery_contact="Delivery Contact",y.pickup_location="Pickup",y.delivery_location="Delivery",y.project="Project Name",y.unit="Job Type";var g;(g=e.DriverSmsCardEnum||(e.DriverSmsCardEnum={})).order_number="Jobcode",g.date="Date",g.values="Total tasks",g.material="Material",g.unit="Unit",g.pickup_location="Pickup Address",g.delivery_location="Delivery Address";var v=function(){};e.CoolmapService=h,e.DriversmsCardKey=["order_number","date","values","material","unit","pickup_location","delivery_location"],e.EstinationData=["estimated_distance","estimated_time"],e.JobCodeOverviewData=["customer_contact","delivery_contact","pickup_location","delivery_location","project","unit"],e.PopupData=v,e.Route=f,e.UtilsService=d,Object.defineProperty(e,"__esModule",{value:!0})}));
2
2
  //# sourceMappingURL=coolmap-services.umd.min.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../node_modules/tslib/tslib.es6.js","../../../projects/coolmap-services/src/lib/service/utils.service.ts","../../../projects/coolmap-services/src/lib/service/coolmap.service.ts","../../../projects/coolmap-services/src/lib/service/data-model.ts"],"names":["__awaiter","thisArg","_arguments","P","generator","Promise","resolve","reject","fulfilled","value","step","next","e","rejected","result","done","then","apply","__generator","body","f","y","t","g","_","label","sent","trys","ops","verb","throw","return","Symbol","iterator","this","n","v","op","TypeError","call","pop","length","push","Object","create","UtilsService","http","snackBar","analyticsRESTURL","RESTURLPrefix","pickupOptions","destOptions","ownerOptions","customerOptions","unitOptions","materialOptions","jcodeOptions","driverOption","truckingCompanayOption","routeNameOptions","preventnavChange","BehaviorSubject","navChangeObserve","asObservable","clearViewRouteforJobCode","clearViewRouteforJobCodeObserve","preVentJobdetailclose","getpreVentJobdetailclose","routeDetailsUtility","getrouteDetailsUtility","removeMapEntity","removeMapEntityUtility","dict","Map","prototype","getDateFormat","strVal","seprater","mydate","getFullYear","getMonth","getDate","getData","path","get","postdata","data","post","postDataWithRestUrl","fetchAutoCompleteLocations","keyword","openSnackBar","message","className","open","duration","verticalPosition","horizontalPosition","panelClass","makeOptions","item","_this","order_number","findIndex","elem","job_id","job_code","driver_list","_a","forEach","driver","pickup_location","delivery_location","customer","customer_name","unit","material","route_name","filter","filters","filterValue","toLowerCase","searchResults","map","includes","type","searchDict","furtherFilter","search","getSearchResults","list","filterval","element","result_list_boolean","ele","_b","reduce","prev","curr","clearOptions","setdictValue","key","set","getdictValue","JSON","parse","removedictValue","delete","conveySearchIcon","Injectable","args","providedIn","HttpClient","MatSnackBar","CoolmapService","utils","eventManager","markerOriginList","markerDestinationList","initiatecoolmap","reintiatecoolmap","bounds","mapboxgl.LngLatBounds","originDestinationCordinates","addGlobalEventListener","onResize","bind","windowActualHeightWidth","availHeight","initiateMapForAddRoute","el","remove","mapboxgl.Map","accessToken","container","style","center","zoom","bearing","pitch","interactive","once","res","loadMapProperty","pinRouteGeojson","index","route","bottom","origin","features","geometry","coordinates","linecolor","destination","extendBound","point","properties","lineDistance","turf.length","arc","steps","i","segment","turf.along","pinRoute","marker","mapboxgl.Marker","document","createElement","setLngLat","addTo","togglePopup","getSource","removeRouteAndMarker","addSource","lineMetrics","addLayer","source","id","paint","line-width","line-gradient","layout","line-cap","line-join","dataSetForMap","counter","pointId","lineId","isViewRoute","createMarker","on","setPaintProperty","datasetForPopup","coordinate","lngLat","lng","lat","pickup","drop","routeType","project","title","createPopup","popup","drawLine","cordinates","enablefitbound","provideLineColor","padding","top","window","innerHeight","left","right","fitBounds","fitboundCompleteJob","line-color","jobCode","unitType","color","checkType","showRoutePopup","arcDetails","event","layer","props","getLayoutProperty","mapboxgl.Popup","closeButton","closeOnClick","closeOnMove","anchor","setHTML","hexToRGB","hex","replace","m","r","b","substring","match","x","parseInt","routeDetails","popupForDestination","innerHTML","originMarker_1","setPopup","getElement","addEventListener","elementForDestination","destinationMarker_1","colorArray","arcLayer","MapboxLayer","ArcLayer","pickable","getWidth","getSourcePosition","getTargetPosition","getTargetColor","getSourceColor","onHover","info","getLayer","removeLayer","removeSource","findMarkerBound","_e","indexOfCordinates","_c","_d","toFixed","getLngLat","splice","filterRoute","ID","visibility","showAllFitbound","setLayoutProperty","display","extendReBound","path_1","split","formateLatLong","extend","padding_1","setTimeout","keys","fitboundComplete","padding_2","plotRoute","param","subscribe","path_2","err","path_3","clearBound","clearPadding","latlong","reverse","clearBoundWithCordinates","isEmpty","screen","target","setWindowHeight","setPadding","removeJobFromMap","EventManager","EstinationEnum","JobCodeOverviewEnum","DriverSmsCardEnum"],"mappings":"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","sourcesContent":["/******************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n if (typeof b !== \"function\" && b !== null)\r\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __esDecorate(ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) {\r\n function accept(f) { if (f !== void 0 && typeof f !== \"function\") throw new TypeError(\"Function expected\"); return f; }\r\n var kind = contextIn.kind, key = kind === \"getter\" ? \"get\" : kind === \"setter\" ? \"set\" : \"value\";\r\n var target = !descriptorIn && ctor ? contextIn[\"static\"] ? ctor : ctor.prototype : null;\r\n var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {});\r\n var _, done = false;\r\n for (var i = decorators.length - 1; i >= 0; i--) {\r\n var context = {};\r\n for (var p in contextIn) context[p] = p === \"access\" ? {} : contextIn[p];\r\n for (var p in contextIn.access) context.access[p] = contextIn.access[p];\r\n context.addInitializer = function (f) { if (done) throw new TypeError(\"Cannot add initializers after decoration has completed\"); extraInitializers.push(accept(f || null)); };\r\n var result = (0, decorators[i])(kind === \"accessor\" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context);\r\n if (kind === \"accessor\") {\r\n if (result === void 0) continue;\r\n if (result === null || typeof result !== \"object\") throw new TypeError(\"Object expected\");\r\n if (_ = accept(result.get)) descriptor.get = _;\r\n if (_ = accept(result.set)) descriptor.set = _;\r\n if (_ = accept(result.init)) initializers.push(_);\r\n }\r\n else if (_ = accept(result)) {\r\n if (kind === \"field\") initializers.push(_);\r\n else descriptor[key] = _;\r\n }\r\n }\r\n if (target) Object.defineProperty(target, contextIn.name, descriptor);\r\n done = true;\r\n};\r\n\r\nexport function __runInitializers(thisArg, initializers, value) {\r\n var useValue = arguments.length > 2;\r\n for (var i = 0; i < initializers.length; i++) {\r\n value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg);\r\n }\r\n return useValue ? value : void 0;\r\n};\r\n\r\nexport function __propKey(x) {\r\n return typeof x === \"symbol\" ? x : \"\".concat(x);\r\n};\r\n\r\nexport function __setFunctionName(f, name, prefix) {\r\n if (typeof name === \"symbol\") name = name.description ? \"[\".concat(name.description, \"]\") : \"\";\r\n return Object.defineProperty(f, \"name\", { configurable: true, value: prefix ? \"\".concat(prefix, \" \", name) : name });\r\n};\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (g && (g = 0, op[0] && (_ = 0)), _) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n var desc = Object.getOwnPropertyDescriptor(m, k);\r\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\r\n desc = { enumerable: true, get: function() { return m[k]; } };\r\n }\r\n Object.defineProperty(o, k2, desc);\r\n}) : (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n});\r\n\r\nexport function __exportStar(m, o) {\r\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n}\r\n\r\nexport function __spreadArray(to, from, pack) {\r\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\r\n if (ar || !(i in from)) {\r\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\r\n ar[i] = from[i];\r\n }\r\n }\r\n return to.concat(ar || Array.prototype.slice.call(from));\r\n}\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: false } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nvar __setModuleDefault = Object.create ? (function(o, v) {\r\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\r\n}) : function(o, v) {\r\n o[\"default\"] = v;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\r\n __setModuleDefault(result, mod);\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\r\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\r\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\r\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\r\n}\r\n\r\nexport function __classPrivateFieldIn(state, receiver) {\r\n if (receiver === null || (typeof receiver !== \"object\" && typeof receiver !== \"function\")) throw new TypeError(\"Cannot use 'in' operator on non-object\");\r\n return typeof state === \"function\" ? receiver === state : state.has(receiver);\r\n}\r\n","import { HttpClient } from '@angular/common/http';\r\nimport { Injectable } from '@angular/core';\r\nimport { MatSnackBar } from '@angular/material/snack-bar';\r\nimport { BehaviorSubject } from 'rxjs';\r\nimport { Route } from './data-model';\r\n\r\n@Injectable({ providedIn: 'root' })\r\nexport class UtilsService {\r\n analyticsRESTURL = '';\r\n RESTURLPrefix = '';\r\n pickupOptions: any[] = [];\r\n destOptions: any[] = [];\r\n ownerOptions: any[] = [];\r\n customerOptions: any[] = [];\r\n unitOptions: any[] = [];\r\n materialOptions: any[] = [];\r\n jcodeOptions: any[] = [];\r\n driverOption: any[] = [];\r\n truckingCompanayOption: any[] = [];\r\n routeNameOptions: any[] = [];\r\n public preventnavChange = new BehaviorSubject(false);\r\n navChangeObserve = this.preventnavChange.asObservable();\r\n clearViewRouteforJobCode = new BehaviorSubject(false);\r\n clearViewRouteforJobCodeObserve = this.clearViewRouteforJobCode.asObservable();\r\n preVentJobdetailclose = new BehaviorSubject(false);\r\n getpreVentJobdetailclose = this.preVentJobdetailclose.asObservable();\r\n routeDetailsUtility = new BehaviorSubject({});\r\n getrouteDetailsUtility = this.routeDetailsUtility.asObservable();\r\n removeMapEntity = new BehaviorSubject({});\r\n removeMapEntityUtility = this.removeMapEntity.asObservable();\r\n dict = new Map<string, string>();\r\n constructor(public http: HttpClient,public snackBar: MatSnackBar) {\r\n this.analyticsRESTURL = 'https://test-analytics.aggdirect.com/REST/';\r\n this.RESTURLPrefix = 'https://test-server.aggdirect.com/REST/';\r\n }\r\n getDateFormat(strVal: Date | null, seprater?: string) {\r\n seprater = seprater ? seprater : '-';\r\n const mydate = strVal;\r\n return mydate?.getFullYear() + seprater + ((mydate ? mydate.getMonth() : 0) + 1) + seprater + mydate?.getDate();\r\n }\r\n getData(path: string) { return this.http.get(`${this.analyticsRESTURL}${path}`) }\r\n postdata(path: string, data: any) { return this.http.post(`${this.analyticsRESTURL}${path}`, data) }\r\n postDataWithRestUrl(path: string, data: any) { return this.http.post(`${this.RESTURLPrefix}${path}`, data) }\r\n fetchAutoCompleteLocations(keyword: string) {\r\n return this.http.get(`https://api.mapbox.com/geocoding/v5/mapbox.places/${keyword}.json?access_token=pk.eyJ1Ijoic2FudGFudS1vZ21hIiwiYSI6ImNsOGQ0cDVrNjAweTMzb3RmdG9ieTU5ZDkifQ.I6ZS7mViZYSvBo4zz-mGQQ&country=US`)\r\n }\r\n openSnackBar(message: string, className?: string) {\r\n this.snackBar.open(message, '', {\r\n duration: 5000, verticalPosition: 'top', horizontalPosition: 'center', panelClass: [className ? className : 'default']\r\n });\r\n }\r\n\r\n makeOptions(item: Route) {\r\n if (item.order_number) {\r\n (this.jcodeOptions.findIndex((elem) => elem.job_id === item.job_id) === -1) ? this.jcodeOptions.push({ job_code: item.order_number, job_id: item.job_id }) : null;\r\n if (item.driver_list && item.driver_list?.length > 0) {\r\n item.driver_list.forEach((driver) => {\r\n this.driverOption.findIndex(elem => elem === driver['driver_name']) === -1 ? this.driverOption.push(driver['driver_name']) : null;\r\n this.truckingCompanayOption.findIndex(elem => elem === driver['trucking_company']) === -1 ? this.truckingCompanayOption.push(driver['trucking_company']) : null;\r\n });\r\n }\r\n }\r\n ((this.pickupOptions.findIndex((elem) => elem === item.pickup_location)) === -1) ? this.pickupOptions.push(item.pickup_location) : null;\r\n ((this.destOptions.findIndex((elem) => elem === item.delivery_location)) === -1) ? this.destOptions.push(item.delivery_location) : null;\r\n (this.customerOptions.findIndex((customer) => customer === item.customer_name) === -1) ? this.customerOptions.push(item.customer_name) : null;\r\n (this.unitOptions.findIndex((elem) => elem === item.unit) === -1) ? this.unitOptions.push(item.unit) : null;\r\n (this.materialOptions.findIndex((elem) => elem === item.material) === -1) ? this.materialOptions.push(item.material) : null;\r\n if (item.route_name) this.routeNameOptions.findIndex(elem => elem === item.route_name) === -1 ? this.routeNameOptions.push(item.route_name) : null;\r\n }\r\n\r\n filter(value: string, filters: any) {\r\n if (typeof value !== 'string') { return [] }\r\n const filterValue = value.toLowerCase();\r\n if (filterValue === '') { return [] }\r\n const searchResults: any[] = [];\r\n this.unitOptions.map(unit => {\r\n if (unit.toLowerCase().includes(filterValue)) {\r\n searchResults.push({ \"type\": \"unit\", \"label\": unit, \"value\": unit })\r\n }\r\n });\r\n this.customerOptions.map(unit => {\r\n if (unit.toLowerCase().includes(filterValue)) {\r\n searchResults.push({ \"type\": \"customer\", \"label\": unit, \"value\": unit })\r\n }\r\n });\r\n this.materialOptions.map(unit => {\r\n if (unit.toLowerCase().includes(filterValue)) {\r\n searchResults.push({ \"type\": \"material\", \"label\": unit, \"value\": unit })\r\n }\r\n });\r\n this.pickupOptions.map(unit => {\r\n if (unit.toLowerCase().includes(filterValue)) {\r\n searchResults.push({ \"type\": \"pickup location\", \"label\": unit, \"value\": unit })\r\n }\r\n });\r\n this.destOptions.map(unit => {\r\n if (unit.toLowerCase().includes(filterValue)) {\r\n searchResults.push({ \"type\": \"destination location\", \"label\": unit, \"value\": unit })\r\n }\r\n });\r\n this.jcodeOptions.map(unit => {\r\n if (unit.job_code.toLowerCase().includes(filterValue)) {\r\n searchResults.push({ \"type\": \"job\", \"label\": unit['job_code'], \"value\": unit })\r\n }\r\n });\r\n this.driverOption.map(unit => {\r\n if (unit.toLowerCase().includes(filterValue)) {\r\n searchResults.push({ \"type\": \"Driver\", \"label\": unit, \"value\": unit })\r\n }\r\n });\r\n\r\n this.truckingCompanayOption.map(unit => {\r\n if (unit.toLowerCase().includes(filterValue)) {\r\n searchResults.push({ \"type\": \"Trucking Company\", \"label\": unit, \"value\": unit })\r\n }\r\n });\r\n this.routeNameOptions.map(unit => {\r\n if (unit.toLowerCase().includes(filterValue)) {\r\n searchResults.push({ \"type\": \"Route name\", \"label\": unit, \"value\": unit })\r\n }\r\n });\r\n const searchDict: any = {}\r\n filters.map((filter: { [x: string]: any; }) => {\r\n searchDict[filter['name'] + filter['type']] = filter;\r\n })\r\n const furtherFilter: any[] = [];\r\n searchResults.map(search => {\r\n if ((search['label'] + search['type']) in searchDict) { }\r\n else { furtherFilter.push(search) }\r\n });\r\n return furtherFilter;\r\n }\r\n\r\n getSearchResults(list: Route[], filterval: any): any {\r\n return list.filter(element => {\r\n const result_list_boolean = []\r\n if (filterval.length > 0) {\r\n if (filterval[0]['type'] === 'unit') {\r\n result_list_boolean.push(filterval[0]['name'] === element[filterval[0]['type'] as keyof Route]);\r\n }\r\n if (filterval[0]['type'] === 'customer') {\r\n result_list_boolean.push(filterval[0]['name'] === element['customer_name']);\r\n }\r\n if (filterval[0]['type'] === 'material') {\r\n result_list_boolean.push(filterval[0]['name'] === element[filterval[0]['type'] as keyof Route]);\r\n }\r\n if (filterval[0]['type'] === 'pickup location') {\r\n result_list_boolean.push(filterval[0]['name'] === element['pickup_location']);\r\n }\r\n if (filterval[0]['type'] === 'destination location') {\r\n result_list_boolean.push(filterval[0]['name'] === element['delivery_location']);\r\n }\r\n if (filterval[0]['type'] === 'job') {\r\n result_list_boolean.push(filterval[0]['name'] === element['order_number']);\r\n }\r\n if (filterval[0]['type'] === 'Route name') {\r\n result_list_boolean.push(filterval[0]['name'] === element['route_name']);\r\n }\r\n if (filterval[0]['type'] === 'Driver') {\r\n const index = element.driver_list?.findIndex(ele => { return filterval[0]['name'] === ele['driver_name'] });\r\n if (index !== -1) result_list_boolean.push(true);\r\n }\r\n if (filterval[0]['type'] === 'Trucking Company') {\r\n const index = element.driver_list?.findIndex(ele => { return filterval[0]['name'] === ele['trucking_company'] });\r\n if (index !== -1) result_list_boolean.push(true);\r\n }\r\n }\r\n if (result_list_boolean.length > 0) {\r\n return result_list_boolean.reduce((prev, curr) => prev && curr);\r\n }\r\n return false;\r\n });\r\n }\r\n\r\n clearOptions() {\r\n this.pickupOptions = [];\r\n this.destOptions = [];\r\n this.ownerOptions = [];\r\n this.customerOptions = [];\r\n this.unitOptions = [];\r\n this.materialOptions = [];\r\n this.jcodeOptions = [];\r\n this.routeNameOptions = [];\r\n }\r\n setdictValue(key: string, value: string) {\r\n this.dict.set(key, value);\r\n }\r\n getdictValue(key: string) {\r\n return JSON.parse(this.dict.get(key));\r\n }\r\n removedictValue(key: string) {\r\n this.dict.delete(key);\r\n }\r\n conveySearchIcon(value: any): boolean{\r\n if(value && typeof(value) !== 'object') return true;\r\n return false\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport * as mapboxgl from 'mapbox-gl';\r\nimport * as turf from '@turf/turf';\r\nimport { BehaviorSubject } from 'rxjs';\r\nimport { PopupData, Route } from './data-model';\r\nimport { UtilsService } from './utils.service';\r\nimport { EventManager } from '@angular/platform-browser';\r\nimport { MapboxLayer } from \"@deck.gl/mapbox\";\r\nimport { ArcLayer } from '@deck.gl/layers';\r\n\r\ndeclare const Threebox: any;\r\n\r\n@Injectable({ providedIn: 'root' })\r\nexport class CoolmapService {\r\n map!: mapboxgl.Map\r\n markerOriginList: mapboxgl.Marker[] = [];\r\n markerDestinationList: mapboxgl.Marker[] = [];\r\n initiatecoolmap = new BehaviorSubject(true);\r\n reintiatecoolmap = this.initiatecoolmap.asObservable();\r\n bounds = new mapboxgl.LngLatBounds();\r\n originDestinationCordinates: any = [];\r\n padding!: any;\r\n windowActualHeightWidth!: any;\r\n popup: mapboxgl.Popup;\r\n\r\n constructor(public utils: UtilsService, public eventManager: EventManager) {\r\n this.eventManager.addGlobalEventListener('window', 'resize', this.onResize.bind(this)); this.windowActualHeightWidth = { availHeight: 0 };\r\n }\r\n\r\n initiateMapForAddRoute(el: HTMLElement) {\r\n return new Promise((resolve, reject) => {\r\n this.map.remove();\r\n this.map = new mapboxgl.Map({\r\n accessToken: 'pk.eyJ1Ijoic2FudGFudS1vZ21hIiwiYSI6ImNsOGQ0cDVrNjAweTMzb3RmdG9ieTU5ZDkifQ.I6ZS7mViZYSvBo4zz-mGQQ',\r\n container: el,\r\n style: 'mapbox://styles/santanu-ogma/cl8ep33uz003414n1twlosz9d',\r\n center: [-77.036873, 38.907192],\r\n zoom: 10, bearing: 0, pitch: 65, interactive: true,\r\n });\r\n this.map.once('load', (res) => {\r\n resolve(res);\r\n });\r\n });\r\n }\r\n // Below method Load route with animation\r\n loadMapProperty(pinRouteGeojson: any, index: number, unit: any, route?: any, bottom?: number) {\r\n return new Promise((resolve, reject)=>{\r\n let origin = pinRouteGeojson.features[0].geometry.coordinates[0];\r\n const linecolor = (unit === 'Ton') ? '#ff7272' : (unit === 'Load') ? '#a3c52e' : '#ae23d1';\r\n let destination = pinRouteGeojson.features[0].geometry.coordinates[pinRouteGeojson.features[0].geometry.coordinates.length - 1];\r\n this.extendBound(pinRouteGeojson.features[0].geometry.coordinates, true).then((res: any) => {\r\n const point: any = {\r\n 'type': 'FeatureCollection',\r\n 'features': [\r\n { 'type': 'Feature', 'properties': {}, 'geometry': { 'type': 'Point', 'coordinates': origin } }\r\n ]\r\n }\r\n const lineDistance = turf.length(pinRouteGeojson.features[0]);\r\n const arc = [];\r\n const steps = 10 * pinRouteGeojson.features[0].geometry.coordinates.length;\r\n for (let i = 0; i < lineDistance; i += lineDistance / steps) {\r\n const segment = turf.along(pinRouteGeojson.features[0], i);\r\n arc.push(segment.geometry.coordinates);\r\n }\r\n pinRouteGeojson.features[0].geometry.coordinates = arc;\r\n const pinRoute = pinRouteGeojson.features[0].geometry.coordinates;\r\n const marker = new mapboxgl.Marker(document.createElement('div'))\r\n .setLngLat(pinRoute[0]).addTo(this.map).togglePopup();\r\n\r\n if (this.map.getSource(`line${index}`)) {\r\n this.removeRouteAndMarker(index).then(() => { })\r\n }\r\n\r\n this.map.addSource(`line${index}`, { type: 'geojson', lineMetrics: true, data: pinRouteGeojson });\r\n this.map.addLayer({\r\n type: 'line',\r\n source: `line${index}`,\r\n id: `line${index}`,\r\n paint: {\r\n 'line-width': 2,\r\n 'line-gradient': [\r\n 'interpolate',\r\n ['linear'],\r\n ['line-progress'],\r\n 0, unit === 'Ton' ? '#d7f7e4' : unit === 'Load' ? '#c9d8f5' : '#f5dcc1',\r\n 1, unit === 'Ton' ? '#ff7272' : unit === 'Load' ? '#a3c52e' : '#ae23d1',\r\n ]\r\n },\r\n layout: { 'line-cap': 'round', 'line-join': 'round' }\r\n });\r\n\r\n const dataSetForMap = {\r\n counter: 0, pinRouteGeojson, steps,\r\n point, pointId: `point${index}`,\r\n marker, pinRoute, lineId: `line${index}`, index,\r\n origin, destination, lineDistance,\r\n linecolor, route, isViewRoute: true\r\n }\r\n this.createMarker(dataSetForMap);\r\n this.map.on('mouseenter', `line${index}`, (e) => {\r\n this.map.setPaintProperty(`line${index}`, 'line-width', 5);\r\n this.map.setPaintProperty(`line${index}`, 'line-opacity', 1);\r\n const datasetForPopup: PopupData = {\r\n coordinate: [e.lngLat.lng, e.lngLat.lat],\r\n pickup: route.pickup_location ? route.pickup_location : '',\r\n drop: route.delivery_location ? route.delivery_location : '',\r\n routeType: route.project ? 'Project' : 'Route',\r\n title: route.project ? route.project : route.route_name ? route.route_name : '',\r\n material: route.material ? route.material : '',\r\n type: route.unit ? route.unit : ''\r\n }\r\n this.createPopup(datasetForPopup);\r\n });\r\n this.map.on('mouseleave', `line${index}`, (e) => {\r\n this.map.setPaintProperty(`line${index}`, 'line-width', 2);\r\n if (this.popup) {\r\n this.popup.remove();\r\n }\r\n });\r\n })\r\n\r\n this.map.once('idle', (res) => {\r\n resolve(true)\r\n });\r\n})\r\n }\r\n // Below method Load route without animation\r\n drawLine(cordinates?: any, index?: number | any, route?: any, enablefitbound?: boolean, routeType?: string) {\r\n let linecolor: any;\r\n let origin = cordinates[0]; let destination = cordinates[cordinates.length - 1]\r\n if (origin[0] && origin[1] && destination && destination[0] && destination[1]) {\r\n linecolor = this.provideLineColor(route['unit'], routeType);\r\n if (enablefitbound) {\r\n const padding = {\r\n top: this.padding.top, bottom: this.padding.bottom + (this.windowActualHeightWidth.availHeight - (window.innerHeight - 65)),\r\n left: this.padding.left, right: this.padding.right\r\n }\r\n this.map.fitBounds([origin, destination], { padding }, { fitboundCompleteJob: true })\r\n }\r\n if (this.map.getSource(`route-source-for-job-code${index}`)) {\r\n this.removeRouteAndMarker(index).then(() => { })\r\n }\r\n this.map.addSource(`route-source-for-job-code${index}`, {\r\n 'type': 'geojson',\r\n 'data': { 'type': 'Feature', 'properties': {}, 'geometry': { 'type': 'LineString', 'coordinates': cordinates } }\r\n });\r\n this.map.addLayer({\r\n 'id': `route-for-job-code${index}`, 'type': 'line', 'source': `route-source-for-job-code${index}`,\r\n paint: { 'line-color': linecolor, 'line-width': 2 },\r\n layout: { 'line-cap': 'round', 'line-join': 'round' }\r\n });\r\n const dataSetForMap = {\r\n origin, destination, index, linecolor, route\r\n }\r\n this.createMarker(dataSetForMap);\r\n this.map.on('mouseenter', `route-for-job-code${index}`, (e) => {\r\n if (this.popup) {\r\n this.popup.remove();\r\n }\r\n this.map.setPaintProperty(`route-for-job-code${index}`, 'line-width', 5);\r\n this.map.setPaintProperty(`route-for-job-code${index}`, 'line-opacity', 1);\r\n const datasetForPopup: PopupData = {\r\n coordinate: [e.lngLat.lng, e.lngLat.lat],\r\n pickup: route.pickup_location ? route.pickup_location : '',\r\n drop: route.delivery_location ? route.delivery_location : '',\r\n jobCode: route.project ? route.order_number : null,\r\n customer: route.project ? route.customer_name : null,\r\n routeType: route.project ? 'Project' : 'Route',\r\n title: route.project ? route.project : route.route_name ? route.route_name : '',\r\n material: route.material ? route.material : '',\r\n type: route.unit ? route.unit : ''\r\n }\r\n this.createPopup(datasetForPopup);\r\n });\r\n this.map.on('mouseleave', `route-for-job-code${index}`, (e) => {\r\n this.map.setPaintProperty(`route-for-job-code${index}`, 'line-width', 2);\r\n if (this.popup) {\r\n this.popup.remove();\r\n }\r\n });\r\n }\r\n }\r\n\r\n provideLineColor(unitType: string, type?: string | undefined) {\r\n let checkType = (type && !['jobrouteList', 'addroute'].includes(type)) ? true : false;\r\n let color;\r\n switch (unitType) {\r\n case \"Ton\":\r\n color = checkType ? '#39c471' : '#ff7272';\r\n break;\r\n case \"Load\":\r\n color = checkType ? '#326ad3' : '#a3c52e';\r\n break;\r\n case \"Hourly\":\r\n color = checkType ? '#ffad56' : '#ae23d1';\r\n break;\r\n }\r\n return color;\r\n }\r\n\r\n showRoutePopup(arcDetails, event, isViewRoute?): void {\r\n if (this.popup) {\r\n this.popup.remove();\r\n this.map.setPaintProperty(`${isViewRoute ? 'line' : 'route-for-job-code'}${arcDetails.layer.props.data.index}`, 'line-width', 2);\r\n }\r\n if (arcDetails.color && this.map.getLayoutProperty(arcDetails.layer.id, 'visibility') !== 'none') {\r\n this.map.setPaintProperty(`${isViewRoute ? 'line' : 'route-for-job-code'}${arcDetails.layer.props.data.index}`, 'line-width', 5);\r\n this.map.setPaintProperty(`${isViewRoute ? 'line' : 'route-for-job-code'}${arcDetails.layer.props.data.index}`, 'line-opacity', 1);\r\n\r\n const datasetForPopup: PopupData = {\r\n coordinate: arcDetails.coordinate,\r\n pickup: arcDetails.layer.props.data.route.pickup_location ? arcDetails.layer.props.data.route.pickup_location : '',\r\n drop: arcDetails.layer.props.data.route.delivery_location ? arcDetails.layer.props.data.route.delivery_location : '',\r\n jobCode: arcDetails.layer.props.data.route.project ? arcDetails.layer.props.data.route.order_number : '',\r\n customer: arcDetails.layer.props.data.route.project ? arcDetails.layer.props.data.route.customer_name : '',\r\n routeType: arcDetails.layer.props.data.route.project ? 'Project' : 'Route',\r\n title: arcDetails.layer.props.data.route.project ? arcDetails.layer.props.data.route.project : arcDetails.layer.props.data.route.route_name ? arcDetails.layer.props.data.route.route_name : '',\r\n material: arcDetails.layer.props.data.route.material ? arcDetails.layer.props.data.route.material : '',\r\n type: arcDetails.layer.props.data.route.unit ? arcDetails.layer.props.data.route.unit : ''\r\n }\r\n this.createPopup(datasetForPopup);\r\n }\r\n }\r\n\r\n createPopup(datasetForPopup: PopupData): void {\r\n this.popup = new mapboxgl.Popup({\r\n closeButton: false,\r\n closeOnClick: false,\r\n closeOnMove: true,\r\n anchor: 'bottom-left'\r\n });\r\n\r\n this.popup.setLngLat(datasetForPopup.coordinate)\r\n .setHTML(`\r\n <div class=\"destination\">\r\n <div class=\"duration\">\r\n <p class=\"pickprt\"><b>Pickup Location:</b> ${datasetForPopup.pickup}</p>\r\n <p class=\"dropprt\"><b>Drop Location:</b> ${datasetForPopup.drop}</p>\r\n </div>\r\n ${datasetForPopup.jobCode ? '<span><b>Job Code:</b> ' + datasetForPopup.jobCode + '</span>' : ''}\r\n ${datasetForPopup.customer ? '<span><b>Customer:</b> ' + datasetForPopup.customer + '</span>' : ''}\r\n <span><b>${datasetForPopup.routeType} Name:</b> ${datasetForPopup.title}</span>\r\n <span><b>Material:</b> ${datasetForPopup.material}</span>\r\n <span><b>Type:</b> ${datasetForPopup.type}</span>\r\n </div>\r\n `)\r\n .addTo(this.map);\r\n }\r\n\r\n hexToRGB(hex: any): [number, number, number] {\r\n return hex.replace(/^#?([a-f\\d])([a-f\\d])([a-f\\d])$/i\r\n , (m, r, g, b) => '#' + r + r + g + g + b + b)\r\n .substring(1).match(/.{2}/g)\r\n .map(x => parseInt(x, 16))\r\n }\r\n\r\n createMarker(routeDetails) {\r\n if (routeDetails.origin[0] && routeDetails.origin[1] && routeDetails.destination[0] && routeDetails.destination[1]) {\r\n\r\n const popup = new mapboxgl.Popup({ closeButton: false }).setHTML('<b>Pickup: </b>' + routeDetails.route?.pickup_location);\r\n const popupForDestination = new mapboxgl.Popup({ closeButton: false })\r\n .setHTML('<b>Delivery: </b>' + routeDetails.route?.delivery_location);\r\n\r\n const el = document.createElement('div');\r\n el.className = 'marker';\r\n el.innerHTML = `<span class='markerPointer' style='background:${routeDetails.linecolor}'><b>P</b><span class='markerSpan' style='border-top: 10px solid ${routeDetails.linecolor}'></span></span>`\r\n\r\n const originMarker = new mapboxgl.Marker(el)\r\n .setPopup(popup).setLngLat(routeDetails.origin).addTo(this.map);\r\n\r\n originMarker.getElement().addEventListener('mouseenter', () => originMarker.togglePopup());\r\n originMarker.getElement().addEventListener('mouseleave', () => originMarker.togglePopup());\r\n\r\n const elementForDestination = document.createElement('div');\r\n elementForDestination.className = 'marker';\r\n elementForDestination.innerHTML = `<span class='markerPointer' style='background:${routeDetails.linecolor}'><b>D</b><span class='markerSpan' style='border-top: 10px solid ${routeDetails.linecolor}'></span></span>`\r\n\r\n const destinationMarker = new mapboxgl.Marker(elementForDestination).setPopup(popupForDestination).setLngLat(routeDetails.destination).addTo(this.map);\r\n destinationMarker.getElement().addEventListener('mouseenter', () => destinationMarker.togglePopup());\r\n destinationMarker.getElement().addEventListener('mouseleave', () => destinationMarker.togglePopup());\r\n this.markerOriginList[routeDetails.index] = originMarker;\r\n this.markerDestinationList[routeDetails.index] = destinationMarker;\r\n\r\n const colorArray = this.hexToRGB(routeDetails.linecolor)\r\n const arcLayer = new MapboxLayer({\r\n id: 'arc-layer' + routeDetails.index,\r\n type: ArcLayer,\r\n pickable: true,\r\n data: { route: routeDetails.route, index: routeDetails.index },\r\n getWidth: 1,\r\n getSourcePosition: routeDetails.origin,\r\n getTargetPosition: routeDetails.destination,\r\n getTargetColor: [255, 255, 255],\r\n getSourceColor: [colorArray[0], colorArray[1], colorArray[2]],\r\n onHover: (info, event) => this.showRoutePopup(info, event, routeDetails.isViewRoute),\r\n });\r\n this.map.addLayer(arcLayer);\r\n }\r\n }\r\n\r\n async removeRouteAndMarker(index: number | string | any) {\r\n if (this.map) {\r\n this.map.getLayer(`arc-layer${index}`) ? this.map.removeLayer(`arc-layer${index}`) : '';\r\n this.map.getLayer(`line${index}`) ? this.map.removeLayer(`line${index}`) : '';\r\n this.map.getLayer(`custom_layer${index}`) ? this.map.removeLayer(`custom_layer${index}`) : '';\r\n this.map.getSource(`line${index}`) ? this.map.removeSource(`line${index}`) : '';\r\n this.map.getLayer(`route-for-job-code${index}`) ? this.map.removeLayer(`route-for-job-code${index}`) : '';\r\n this.map.getSource(`route-source-for-job-code${index}`) ? this.map.removeSource(`route-source-for-job-code${index}`) : '';\r\n this.findMarkerBound(index);\r\n this.markerOriginList[index] ? this.markerOriginList[index].remove() : '';\r\n this.markerDestinationList[index] ? this.markerDestinationList[index].remove() : '';\r\n await true;\r\n }\r\n }\r\n findMarkerBound(index: any) {\r\n const indexOfCordinates = this.originDestinationCordinates.findIndex((x: any) =>\r\n (x[0][0].toFixed(6) == this.markerOriginList[index]?.getLngLat()?.lng.toFixed(6)) && (x[0][1].toFixed(6) == this.markerOriginList[index]?.getLngLat()?.lat.toFixed(6)));\r\n if (indexOfCordinates >= 0) { this.originDestinationCordinates.splice(indexOfCordinates, 1) }\r\n }\r\n async filterRoute(ID: any, visibility: string, showAllFitbound?: boolean) {\r\n if (ID) {\r\n if (this.map.getLayer(`route-for-job-code${ID}`)) {\r\n this.map.setLayoutProperty(`route-for-job-code${ID}`, 'visibility', visibility);\r\n const originM = this.markerOriginList[ID].getElement();\r\n originM.style.display = ((visibility === 'visible') ? 'block' : visibility);\r\n const destinationM = this.markerDestinationList[ID].getElement();\r\n destinationM.style.display = ((visibility === 'visible') ? 'block' : visibility);\r\n if (visibility === 'none' && showAllFitbound) {\r\n this.findMarkerBound(ID);\r\n this.extendReBound();\r\n }\r\n }\r\n if (this.map.getLayer(`arc-layer${ID}`)) {\r\n this.map.setLayoutProperty(`arc-layer${ID}`, 'visibility', visibility);\r\n }\r\n }\r\n await true;\r\n }\r\n extendBound(route: any, showAllFitbound: boolean | undefined) {\r\n return new Promise((resolve, reject) => {\r\n if (route) {\r\n if (typeof route === 'string') {\r\n let path: any = route.split(';');\r\n path = path.map((ele: string | any) => { return ele = this.formateLatLong(ele) });\r\n path.forEach((ele: any, index: number) => { if (ele.length === 1) path.splice(index, 1) });\r\n route = path\r\n }\r\n if (route[0][0] && route[0][1] && route[route.length - 1][0] && route[route.length - 1][1]) {\r\n this.originDestinationCordinates.push(route);\r\n route.map((item: any) => {\r\n this.bounds.extend(item);\r\n })\r\n }\r\n }\r\n if (showAllFitbound) {\r\n const padding = { top: this.padding.top, bottom: (this.padding.bottom + (this.windowActualHeightWidth.availHeight - (window.innerHeight - 65))), left: this.padding.left, right: this.padding.right }\r\n setTimeout(() => {\r\n if (showAllFitbound && (Object.keys(this.bounds).length > 0)) this.map.fitBounds(this.bounds, { padding }, { fitboundComplete: true })\r\n }, 100);\r\n this.map.once('moveend', (event: any) => { if (event.fitboundComplete) { resolve(true) } });\r\n }\r\n });\r\n }\r\n\r\n extendReBound(bottom?: number) {\r\n return new Promise((resolve, reject) => {\r\n this.bounds = new mapboxgl.LngLatBounds();\r\n\r\n if (this.originDestinationCordinates.length >= 0) {\r\n this.originDestinationCordinates.map((item: any, index: number) => {\r\n item.map((route: any) => {\r\n this.bounds.extend(route);\r\n })\r\n if (index === (this.originDestinationCordinates.length - 1)) {\r\n const padding = { top: this.padding.top, bottom: (this.padding.bottom + (this.windowActualHeightWidth.availHeight - (window.innerHeight - 65))), left: this.padding.left, right: this.padding.right }\r\n setTimeout(() => {\r\n if (this.originDestinationCordinates.length > 0) this.map.fitBounds(this.bounds, { padding });\r\n }, 500);\r\n resolve(true);\r\n }\r\n })\r\n } else {\r\n resolve(true);\r\n }\r\n })\r\n }\r\n plotRoute(route: any, i: number | any, type: string, enablefitbound?: boolean, showAllFitbound?: boolean) {\r\n return new Promise((resolve, reject) => {\r\n let param: any = {};\r\n if (['jobcode'].includes(type)) {\r\n param['job'] = route['job_id']\r\n this.utils.postDataWithRestUrl('schedule/job/path', param).subscribe((res: any) => {\r\n if (res['data']['route']) {\r\n let path = res['data']['route'].split(';');\r\n path = path.map((ele: string | any) => { return ele = this.formateLatLong(ele) });\r\n path.forEach((ele: any, index: number) => { if (ele.length === 1) path.splice(index, 1) });\r\n route['path'] = path;\r\n this.extendBound(route['path'], showAllFitbound);\r\n if (route['path'] && route['path'].length > 0) this.drawLine(route['path'], i, route, enablefitbound, type);\r\n route['index'] = i;\r\n } else {\r\n this.extendBound(null, showAllFitbound);\r\n }\r\n resolve(true);\r\n }, (err) => { if (err) { reject(false) } });\r\n } else if (['jobrouteList', 'addroute'].includes(type)) {\r\n if (route['path'] && route['path'].length > 0) {\r\n let path = route['path'].split(';');\r\n path = path.map((ele: string | any) => { return ele = this.formateLatLong(ele) });\r\n path.forEach((ele: any, index: number) => { if (ele.length === 1) path.splice(index, 1) });\r\n this.extendBound(path, showAllFitbound);\r\n this.drawLine(path, i, route, enablefitbound, type)\r\n };\r\n }\r\n })\r\n }\r\n clearBound() { this.bounds = new mapboxgl.LngLatBounds(); this.originDestinationCordinates = []; this.clearPadding(); }\r\n formateLatLong(latlong: string) { return latlong ? latlong.split(',').map(x => +x).reverse() : null; }\r\n clearBoundWithCordinates() {\r\n this.bounds = new mapboxgl.LngLatBounds(); this.originDestinationCordinates = [];\r\n }\r\n\r\n onResize(event: any) {\r\n if (!this.bounds.isEmpty()) {\r\n this.windowActualHeightWidth.availHeight = (window.innerHeight > window.screen.availHeight) ? window.innerHeight : window.screen.availHeight;\r\n setTimeout(() => {\r\n this.map.fitBounds(this.bounds, { padding: { top: this.padding.top, bottom: this.padding.bottom + (this.windowActualHeightWidth.availHeight - (event.target.innerHeight - 65)), left: this.padding.left, right: this.padding.right } });\r\n }, 500);\r\n }\r\n }\r\n\r\n setWindowHeight(screen: any) {\r\n this.windowActualHeightWidth.availHeight = screen;\r\n }\r\n setPadding(padding: any) { this.padding = padding }\r\n clearPadding() { this.padding = null }\r\n removeJobFromMap(data: Route[]) {\r\n data.map((ele: any, index: number) => {\r\n const id = (ele['job_id'] ? ele['job_id'] : ele['route_id']);\r\n this.removeRouteAndMarker(id);\r\n if (index === (data.length - 1)) {\r\n this.extendReBound();\r\n }\r\n })\r\n }\r\n}\r\n","\r\nexport class Route {\r\n index: number = 0;\r\n type?: string | null;\r\n // Job Code\r\n customer_contact?: string | null;\r\n customer_name?: string | null;\r\n delivery_contact?: string | null;\r\n delivery_lat?: number | null;\r\n delivery_location?: string | null | undefined;\r\n delivery_lon?: number | null;\r\n driver_list?: Array<any>;\r\n material?: string | null;\r\n order_number?: string | null;\r\n pickup_lat?: number | null;\r\n pickup_location?: string | null | undefined;\r\n pickup_lon?: number | null;\r\n project?: string | null;\r\n total_count?: number;\r\n unit?: string | null;\r\n values: any;\r\n job_id?: string;\r\n isSelected?: boolean;\r\n date?: string;\r\n // Add Route\r\n created_at?: string | null;\r\n created_by_name?: string | null;\r\n customer_id?: string | null;\r\n delivery_lat_lng?: string | null;\r\n estimated_distance?: string | null;\r\n estimated_time?: string | null;\r\n materials_id?: string | null;\r\n path?: [number, number];\r\n pickup_lat_lng?: string | null;\r\n route_id?: string | null;\r\n route_name?: string | null;\r\n unit_id?: string | null;\r\n note?: string | null\r\n isActive?: boolean;\r\n prevent?: boolean;\r\n}\r\n\r\nexport const EstinationData = ['estimated_distance', 'estimated_time']\r\nexport enum EstinationEnum {\r\n estimated_distance = \"miles\",\r\n estimated_time = \"time\"\r\n}\r\n\r\nexport const JobCodeOverviewData = ['customer_contact', 'delivery_contact', 'pickup_location', 'delivery_location', 'project', 'unit']\r\nexport enum JobCodeOverviewEnum {\r\n customer_contact = 'Customer Contact',\r\n delivery_contact = 'Delivery Contact',\r\n pickup_location = 'Pickup',\r\n delivery_location = 'Delivery',\r\n project = 'Project Name',\r\n unit = 'Job Type',\r\n}\r\n\r\nexport const DriversmsCardKey = ['order_number', 'date', 'values', 'material', 'unit', 'pickup_location', 'delivery_location']\r\nexport enum DriverSmsCardEnum {\r\n order_number = 'Jobcode',\r\n date = 'Date',\r\n values = 'Total tasks',\r\n material = 'Material',\r\n unit = 'Unit',\r\n pickup_location = 'Pickup Address',\r\n delivery_location = 'Delivery Address'\r\n}\r\n\r\nexport class PopupData {\r\n coordinate: [number, number];\r\n pickup: string | null;\r\n jobCode?: string | null;\r\n customer?: string | null;\r\n drop: string | null;\r\n routeType: string | null;\r\n title: string | null;\r\n material: string | null;\r\n type: string | null;\r\n}\r\n"]}
1
+ {"version":3,"sources":["../../../node_modules/tslib/tslib.es6.js","../../../projects/coolmap-services/src/lib/service/utils.service.ts","../../../projects/coolmap-services/src/lib/service/coolmap.service.ts","../../../projects/coolmap-services/src/lib/service/data-model.ts"],"names":["__awaiter","thisArg","_arguments","P","generator","Promise","resolve","reject","fulfilled","value","step","next","e","rejected","result","done","then","apply","__generator","body","f","y","t","g","_","label","sent","trys","ops","verb","throw","return","Symbol","iterator","this","n","v","op","TypeError","call","pop","length","push","Object","create","UtilsService","http","snackBar","analyticsRESTURL","RESTURLPrefix","pickupOptions","destOptions","ownerOptions","customerOptions","unitOptions","materialOptions","jcodeOptions","driverOption","truckingCompanayOption","routeNameOptions","preventnavChange","BehaviorSubject","navChangeObserve","asObservable","clearViewRouteforJobCode","clearViewRouteforJobCodeObserve","preVentJobdetailclose","getpreVentJobdetailclose","routeDetailsUtility","getrouteDetailsUtility","removeMapEntity","removeMapEntityUtility","dict","Map","prototype","getDateFormat","strVal","seprater","mydate","getFullYear","getMonth","getDate","getData","path","get","postdata","data","post","postDataWithRestUrl","fetchAutoCompleteLocations","keyword","openSnackBar","message","className","open","duration","verticalPosition","horizontalPosition","panelClass","makeOptions","item","_this","order_number","findIndex","elem","job_id","job_code","driver_list","_a","forEach","driver","pickup_location","delivery_location","customer","customer_name","unit","material","route_name","filter","filters","filterValue","toLowerCase","searchResults","map","includes","type","searchDict","furtherFilter","search","getSearchResults","list","filterval","element","result_list_boolean","ele","_b","reduce","prev","curr","clearOptions","setdictValue","key","set","getdictValue","JSON","parse","removedictValue","delete","conveySearchIcon","Injectable","args","providedIn","HttpClient","MatSnackBar","CoolmapService","utils","eventManager","markerOriginList","markerDestinationList","initiatecoolmap","reintiatecoolmap","bounds","mapboxgl.LngLatBounds","originDestinationCordinates","addGlobalEventListener","onResize","bind","windowActualHeightWidth","availHeight","initiateMapForAddRoute","el","mapboxgl.Map","accessToken","container","style","center","zoom","bearing","pitch","interactive","once","res","loadMapProperty","pinRouteGeojson","index","route","bottom","origin","features","geometry","coordinates","linecolor","destination","extendBound","point","properties","lineDistance","turf.length","arc","steps","i","segment","turf.along","pinRoute","marker","mapboxgl.Marker","document","createElement","setLngLat","addTo","togglePopup","getSource","removeRouteAndMarker","addSource","lineMetrics","addLayer","source","id","paint","line-width","line-gradient","layout","line-cap","line-join","dataSetForMap","counter","pointId","lineId","isViewRoute","createMarker","on","setPaintProperty","datasetForPopup","coordinate","lngLat","lng","lat","pickup","drop","routeType","project","title","createPopup","popup","remove","drawLine","cordinates","enablefitbound","provideLineColor","padding","top","window","innerHeight","left","right","fitBounds","fitboundCompleteJob","line-color","jobCode","unitType","color","checkType","showRoutePopup","arcDetails","event","layer","props","getLayoutProperty","mapboxgl.Popup","closeButton","closeOnClick","closeOnMove","anchor","setHTML","hexToRGB","hex","replace","m","r","b","substring","match","x","parseInt","routeDetails","popupForDestination","innerHTML","originMarker_1","setPopup","getElement","addEventListener","elementForDestination","destinationMarker_1","colorArray","arcLayer","MapboxLayer","ArcLayer","pickable","getWidth","getSourcePosition","getTargetPosition","getTargetColor","getSourceColor","onHover","info","getLayer","removeLayer","removeSource","findMarkerBound","_e","indexOfCordinates","_c","_d","toFixed","getLngLat","splice","filterRoute","ID","visibility","showAllFitbound","setLayoutProperty","display","extendReBound","path_1","split","formateLatLong","extend","padding_1","setTimeout","keys","fitboundComplete","padding_2","plotRoute","param","subscribe","path_2","err","path_3","clearBound","clearPadding","latlong","reverse","clearBoundWithCordinates","isEmpty","screen","target","setWindowHeight","setPadding","removeJobFromMap","EventManager","EstinationEnum","JobCodeOverviewEnum","DriverSmsCardEnum"],"mappings":"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","sourcesContent":["/******************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n if (typeof b !== \"function\" && b !== null)\r\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __esDecorate(ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) {\r\n function accept(f) { if (f !== void 0 && typeof f !== \"function\") throw new TypeError(\"Function expected\"); return f; }\r\n var kind = contextIn.kind, key = kind === \"getter\" ? \"get\" : kind === \"setter\" ? \"set\" : \"value\";\r\n var target = !descriptorIn && ctor ? contextIn[\"static\"] ? ctor : ctor.prototype : null;\r\n var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {});\r\n var _, done = false;\r\n for (var i = decorators.length - 1; i >= 0; i--) {\r\n var context = {};\r\n for (var p in contextIn) context[p] = p === \"access\" ? {} : contextIn[p];\r\n for (var p in contextIn.access) context.access[p] = contextIn.access[p];\r\n context.addInitializer = function (f) { if (done) throw new TypeError(\"Cannot add initializers after decoration has completed\"); extraInitializers.push(accept(f || null)); };\r\n var result = (0, decorators[i])(kind === \"accessor\" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context);\r\n if (kind === \"accessor\") {\r\n if (result === void 0) continue;\r\n if (result === null || typeof result !== \"object\") throw new TypeError(\"Object expected\");\r\n if (_ = accept(result.get)) descriptor.get = _;\r\n if (_ = accept(result.set)) descriptor.set = _;\r\n if (_ = accept(result.init)) initializers.push(_);\r\n }\r\n else if (_ = accept(result)) {\r\n if (kind === \"field\") initializers.push(_);\r\n else descriptor[key] = _;\r\n }\r\n }\r\n if (target) Object.defineProperty(target, contextIn.name, descriptor);\r\n done = true;\r\n};\r\n\r\nexport function __runInitializers(thisArg, initializers, value) {\r\n var useValue = arguments.length > 2;\r\n for (var i = 0; i < initializers.length; i++) {\r\n value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg);\r\n }\r\n return useValue ? value : void 0;\r\n};\r\n\r\nexport function __propKey(x) {\r\n return typeof x === \"symbol\" ? x : \"\".concat(x);\r\n};\r\n\r\nexport function __setFunctionName(f, name, prefix) {\r\n if (typeof name === \"symbol\") name = name.description ? \"[\".concat(name.description, \"]\") : \"\";\r\n return Object.defineProperty(f, \"name\", { configurable: true, value: prefix ? \"\".concat(prefix, \" \", name) : name });\r\n};\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (g && (g = 0, op[0] && (_ = 0)), _) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n var desc = Object.getOwnPropertyDescriptor(m, k);\r\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\r\n desc = { enumerable: true, get: function() { return m[k]; } };\r\n }\r\n Object.defineProperty(o, k2, desc);\r\n}) : (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n});\r\n\r\nexport function __exportStar(m, o) {\r\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n}\r\n\r\nexport function __spreadArray(to, from, pack) {\r\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\r\n if (ar || !(i in from)) {\r\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\r\n ar[i] = from[i];\r\n }\r\n }\r\n return to.concat(ar || Array.prototype.slice.call(from));\r\n}\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: false } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nvar __setModuleDefault = Object.create ? (function(o, v) {\r\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\r\n}) : function(o, v) {\r\n o[\"default\"] = v;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\r\n __setModuleDefault(result, mod);\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\r\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\r\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\r\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\r\n}\r\n\r\nexport function __classPrivateFieldIn(state, receiver) {\r\n if (receiver === null || (typeof receiver !== \"object\" && typeof receiver !== \"function\")) throw new TypeError(\"Cannot use 'in' operator on non-object\");\r\n return typeof state === \"function\" ? receiver === state : state.has(receiver);\r\n}\r\n","import { HttpClient } from '@angular/common/http';\r\nimport { Injectable } from '@angular/core';\r\nimport { MatSnackBar } from '@angular/material/snack-bar';\r\nimport { BehaviorSubject } from 'rxjs';\r\nimport { Route } from './data-model';\r\n\r\n@Injectable({ providedIn: 'root' })\r\nexport class UtilsService {\r\n analyticsRESTURL = '';\r\n RESTURLPrefix = '';\r\n pickupOptions: any[] = [];\r\n destOptions: any[] = [];\r\n ownerOptions: any[] = [];\r\n customerOptions: any[] = [];\r\n unitOptions: any[] = [];\r\n materialOptions: any[] = [];\r\n jcodeOptions: any[] = [];\r\n driverOption: any[] = [];\r\n truckingCompanayOption: any[] = [];\r\n routeNameOptions: any[] = [];\r\n public preventnavChange = new BehaviorSubject(false);\r\n navChangeObserve = this.preventnavChange.asObservable();\r\n clearViewRouteforJobCode = new BehaviorSubject(false);\r\n clearViewRouteforJobCodeObserve = this.clearViewRouteforJobCode.asObservable();\r\n preVentJobdetailclose = new BehaviorSubject(false);\r\n getpreVentJobdetailclose = this.preVentJobdetailclose.asObservable();\r\n routeDetailsUtility = new BehaviorSubject({});\r\n getrouteDetailsUtility = this.routeDetailsUtility.asObservable();\r\n removeMapEntity = new BehaviorSubject({});\r\n removeMapEntityUtility = this.removeMapEntity.asObservable();\r\n dict = new Map<string, string>();\r\n constructor(public http: HttpClient,public snackBar: MatSnackBar) {\r\n this.analyticsRESTURL = 'https://test-analytics.aggdirect.com/REST/';\r\n this.RESTURLPrefix = 'https://test-server.aggdirect.com/REST/';\r\n }\r\n getDateFormat(strVal: Date | null, seprater?: string) {\r\n seprater = seprater ? seprater : '-';\r\n const mydate = strVal;\r\n return mydate?.getFullYear() + seprater + ((mydate ? mydate.getMonth() : 0) + 1) + seprater + mydate?.getDate();\r\n }\r\n getData(path: string) { return this.http.get(`${this.analyticsRESTURL}${path}`) }\r\n postdata(path: string, data: any) { return this.http.post(`${this.analyticsRESTURL}${path}`, data) }\r\n postDataWithRestUrl(path: string, data: any) { return this.http.post(`${this.RESTURLPrefix}${path}`, data) }\r\n fetchAutoCompleteLocations(keyword: string) {\r\n return this.http.get(`https://api.mapbox.com/geocoding/v5/mapbox.places/${keyword}.json?access_token=pk.eyJ1Ijoic2FudGFudS1vZ21hIiwiYSI6ImNsOGQ0cDVrNjAweTMzb3RmdG9ieTU5ZDkifQ.I6ZS7mViZYSvBo4zz-mGQQ&country=US`)\r\n }\r\n openSnackBar(message: string, className?: string) {\r\n this.snackBar.open(message, '', {\r\n duration: 5000, verticalPosition: 'top', horizontalPosition: 'center', panelClass: [className ? className : 'default']\r\n });\r\n }\r\n\r\n makeOptions(item: Route) {\r\n if (item.order_number) {\r\n (this.jcodeOptions.findIndex((elem) => elem.job_id === item.job_id) === -1) ? this.jcodeOptions.push({ job_code: item.order_number, job_id: item.job_id }) : null;\r\n if (item.driver_list && item.driver_list?.length > 0) {\r\n item.driver_list.forEach((driver) => {\r\n this.driverOption.findIndex(elem => elem === driver['driver_name']) === -1 ? this.driverOption.push(driver['driver_name']) : null;\r\n this.truckingCompanayOption.findIndex(elem => elem === driver['trucking_company']) === -1 ? this.truckingCompanayOption.push(driver['trucking_company']) : null;\r\n });\r\n }\r\n }\r\n ((this.pickupOptions.findIndex((elem) => elem === item.pickup_location)) === -1) ? this.pickupOptions.push(item.pickup_location) : null;\r\n ((this.destOptions.findIndex((elem) => elem === item.delivery_location)) === -1) ? this.destOptions.push(item.delivery_location) : null;\r\n (this.customerOptions.findIndex((customer) => customer === item.customer_name) === -1) ? this.customerOptions.push(item.customer_name) : null;\r\n (this.unitOptions.findIndex((elem) => elem === item.unit) === -1) ? this.unitOptions.push(item.unit) : null;\r\n (this.materialOptions.findIndex((elem) => elem === item.material) === -1) ? this.materialOptions.push(item.material) : null;\r\n if (item.route_name) this.routeNameOptions.findIndex(elem => elem === item.route_name) === -1 ? this.routeNameOptions.push(item.route_name) : null;\r\n }\r\n\r\n filter(value: string, filters: any) {\r\n if (typeof value !== 'string') { return [] }\r\n const filterValue = value.toLowerCase();\r\n if (filterValue === '') { return [] }\r\n const searchResults: any[] = [];\r\n this.unitOptions.map(unit => {\r\n if (unit.toLowerCase().includes(filterValue)) {\r\n searchResults.push({ \"type\": \"unit\", \"label\": unit, \"value\": unit })\r\n }\r\n });\r\n this.customerOptions.map(unit => {\r\n if (unit.toLowerCase().includes(filterValue)) {\r\n searchResults.push({ \"type\": \"customer\", \"label\": unit, \"value\": unit })\r\n }\r\n });\r\n this.materialOptions.map(unit => {\r\n if (unit.toLowerCase().includes(filterValue)) {\r\n searchResults.push({ \"type\": \"material\", \"label\": unit, \"value\": unit })\r\n }\r\n });\r\n this.pickupOptions.map(unit => {\r\n if (unit.toLowerCase().includes(filterValue)) {\r\n searchResults.push({ \"type\": \"pickup location\", \"label\": unit, \"value\": unit })\r\n }\r\n });\r\n this.destOptions.map(unit => {\r\n if (unit.toLowerCase().includes(filterValue)) {\r\n searchResults.push({ \"type\": \"destination location\", \"label\": unit, \"value\": unit })\r\n }\r\n });\r\n this.jcodeOptions.map(unit => {\r\n if (unit.job_code.toLowerCase().includes(filterValue)) {\r\n searchResults.push({ \"type\": \"job\", \"label\": unit['job_code'], \"value\": unit })\r\n }\r\n });\r\n this.driverOption.map(unit => {\r\n if (unit.toLowerCase().includes(filterValue)) {\r\n searchResults.push({ \"type\": \"Driver\", \"label\": unit, \"value\": unit })\r\n }\r\n });\r\n\r\n this.truckingCompanayOption.map(unit => {\r\n if (unit.toLowerCase().includes(filterValue)) {\r\n searchResults.push({ \"type\": \"Trucking Company\", \"label\": unit, \"value\": unit })\r\n }\r\n });\r\n this.routeNameOptions.map(unit => {\r\n if (unit.toLowerCase().includes(filterValue)) {\r\n searchResults.push({ \"type\": \"Route name\", \"label\": unit, \"value\": unit })\r\n }\r\n });\r\n const searchDict: any = {}\r\n filters.map((filter: { [x: string]: any; }) => {\r\n searchDict[filter['name'] + filter['type']] = filter;\r\n })\r\n const furtherFilter: any[] = [];\r\n searchResults.map(search => {\r\n if ((search['label'] + search['type']) in searchDict) { }\r\n else { furtherFilter.push(search) }\r\n });\r\n return furtherFilter;\r\n }\r\n\r\n getSearchResults(list: Route[], filterval: any): any {\r\n return list.filter(element => {\r\n const result_list_boolean = []\r\n if (filterval.length > 0) {\r\n if (filterval[0]['type'] === 'unit') {\r\n result_list_boolean.push(filterval[0]['name'] === element[filterval[0]['type'] as keyof Route]);\r\n }\r\n if (filterval[0]['type'] === 'customer') {\r\n result_list_boolean.push(filterval[0]['name'] === element['customer_name']);\r\n }\r\n if (filterval[0]['type'] === 'material') {\r\n result_list_boolean.push(filterval[0]['name'] === element[filterval[0]['type'] as keyof Route]);\r\n }\r\n if (filterval[0]['type'] === 'pickup location') {\r\n result_list_boolean.push(filterval[0]['name'] === element['pickup_location']);\r\n }\r\n if (filterval[0]['type'] === 'destination location') {\r\n result_list_boolean.push(filterval[0]['name'] === element['delivery_location']);\r\n }\r\n if (filterval[0]['type'] === 'job') {\r\n result_list_boolean.push(filterval[0]['name'] === element['order_number']);\r\n }\r\n if (filterval[0]['type'] === 'Route name') {\r\n result_list_boolean.push(filterval[0]['name'] === element['route_name']);\r\n }\r\n if (filterval[0]['type'] === 'Driver') {\r\n const index = element.driver_list?.findIndex(ele => { return filterval[0]['name'] === ele['driver_name'] });\r\n if (index !== -1) result_list_boolean.push(true);\r\n }\r\n if (filterval[0]['type'] === 'Trucking Company') {\r\n const index = element.driver_list?.findIndex(ele => { return filterval[0]['name'] === ele['trucking_company'] });\r\n if (index !== -1) result_list_boolean.push(true);\r\n }\r\n }\r\n if (result_list_boolean.length > 0) {\r\n return result_list_boolean.reduce((prev, curr) => prev && curr);\r\n }\r\n return false;\r\n });\r\n }\r\n\r\n clearOptions() {\r\n this.pickupOptions = [];\r\n this.destOptions = [];\r\n this.ownerOptions = [];\r\n this.customerOptions = [];\r\n this.unitOptions = [];\r\n this.materialOptions = [];\r\n this.jcodeOptions = [];\r\n this.routeNameOptions = [];\r\n }\r\n setdictValue(key: string, value: string) {\r\n this.dict.set(key, value);\r\n }\r\n getdictValue(key: string) {\r\n return JSON.parse(this.dict.get(key));\r\n }\r\n removedictValue(key: string) {\r\n this.dict.delete(key);\r\n }\r\n conveySearchIcon(value: any): boolean{\r\n if(value && typeof(value) !== 'object') return true;\r\n return false\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport * as mapboxgl from 'mapbox-gl';\r\nimport * as turf from '@turf/turf';\r\nimport { BehaviorSubject } from 'rxjs';\r\nimport { PopupData, Route } from './data-model';\r\nimport { UtilsService } from './utils.service';\r\nimport { EventManager } from '@angular/platform-browser';\r\nimport { MapboxLayer } from \"@deck.gl/mapbox\";\r\nimport { ArcLayer } from '@deck.gl/layers';\r\n\r\ndeclare const Threebox: any;\r\n\r\n@Injectable({ providedIn: 'root' })\r\nexport class CoolmapService {\r\n map!: mapboxgl.Map\r\n markerOriginList: mapboxgl.Marker[] = [];\r\n markerDestinationList: mapboxgl.Marker[] = [];\r\n initiatecoolmap = new BehaviorSubject(true);\r\n reintiatecoolmap = this.initiatecoolmap.asObservable();\r\n bounds = new mapboxgl.LngLatBounds();\r\n originDestinationCordinates: any = [];\r\n padding!: any;\r\n windowActualHeightWidth!: any;\r\n popup: mapboxgl.Popup;\r\n\r\n constructor(public utils: UtilsService, public eventManager: EventManager) {\r\n this.eventManager.addGlobalEventListener('window', 'resize', this.onResize.bind(this)); this.windowActualHeightWidth = { availHeight: 0 };\r\n }\r\n\r\n initiateMapForAddRoute(el: HTMLElement) {\r\n return new Promise((resolve, reject) => {\r\n // this.map.remove();\r\n this.map = new mapboxgl.Map({\r\n accessToken: 'pk.eyJ1Ijoic2FudGFudS1vZ21hIiwiYSI6ImNsOGQ0cDVrNjAweTMzb3RmdG9ieTU5ZDkifQ.I6ZS7mViZYSvBo4zz-mGQQ',\r\n container: el,\r\n style: 'mapbox://styles/santanu-ogma/cl8ep33uz003414n1twlosz9d',\r\n center: [-77.036873, 38.907192],\r\n zoom: 10, bearing: 0, pitch: 65, interactive: true,\r\n });\r\n this.map.once('load', (res) => {\r\n resolve(res);\r\n });\r\n });\r\n }\r\n // Below method Load route with animation\r\n loadMapProperty(pinRouteGeojson: any, index: number, unit: any, route?: any, bottom?: number) {\r\n return new Promise((resolve, reject)=>{\r\n let origin = pinRouteGeojson.features[0].geometry.coordinates[0];\r\n const linecolor = (unit === 'Ton') ? '#ff7272' : (unit === 'Load') ? '#a3c52e' : '#ae23d1';\r\n let destination = pinRouteGeojson.features[0].geometry.coordinates[pinRouteGeojson.features[0].geometry.coordinates.length - 1];\r\n this.extendBound(pinRouteGeojson.features[0].geometry.coordinates, true).then((res: any) => {\r\n const point: any = {\r\n 'type': 'FeatureCollection',\r\n 'features': [\r\n { 'type': 'Feature', 'properties': {}, 'geometry': { 'type': 'Point', 'coordinates': origin } }\r\n ]\r\n }\r\n const lineDistance = turf.length(pinRouteGeojson.features[0]);\r\n const arc = [];\r\n const steps = 10 * pinRouteGeojson.features[0].geometry.coordinates.length;\r\n for (let i = 0; i < lineDistance; i += lineDistance / steps) {\r\n const segment = turf.along(pinRouteGeojson.features[0], i);\r\n arc.push(segment.geometry.coordinates);\r\n }\r\n pinRouteGeojson.features[0].geometry.coordinates = arc;\r\n const pinRoute = pinRouteGeojson.features[0].geometry.coordinates;\r\n const marker = new mapboxgl.Marker(document.createElement('div'))\r\n .setLngLat(pinRoute[0]).addTo(this.map).togglePopup();\r\n\r\n if (this.map.getSource(`line${index}`)) {\r\n this.removeRouteAndMarker(index).then(() => { })\r\n }\r\n\r\n this.map.addSource(`line${index}`, { type: 'geojson', lineMetrics: true, data: pinRouteGeojson });\r\n this.map.addLayer({\r\n type: 'line',\r\n source: `line${index}`,\r\n id: `line${index}`,\r\n paint: {\r\n 'line-width': 2,\r\n 'line-gradient': [\r\n 'interpolate',\r\n ['linear'],\r\n ['line-progress'],\r\n 0, unit === 'Ton' ? '#d7f7e4' : unit === 'Load' ? '#c9d8f5' : '#f5dcc1',\r\n 1, unit === 'Ton' ? '#ff7272' : unit === 'Load' ? '#a3c52e' : '#ae23d1',\r\n ]\r\n },\r\n layout: { 'line-cap': 'round', 'line-join': 'round' }\r\n });\r\n\r\n const dataSetForMap = {\r\n counter: 0, pinRouteGeojson, steps,\r\n point, pointId: `point${index}`,\r\n marker, pinRoute, lineId: `line${index}`, index,\r\n origin, destination, lineDistance,\r\n linecolor, route, isViewRoute: true\r\n }\r\n this.createMarker(dataSetForMap);\r\n this.map.on('mouseenter', `line${index}`, (e) => {\r\n this.map.setPaintProperty(`line${index}`, 'line-width', 5);\r\n this.map.setPaintProperty(`line${index}`, 'line-opacity', 1);\r\n const datasetForPopup: PopupData = {\r\n coordinate: [e.lngLat.lng, e.lngLat.lat],\r\n pickup: route.pickup_location ? route.pickup_location : '',\r\n drop: route.delivery_location ? route.delivery_location : '',\r\n routeType: route.project ? 'Project' : 'Route',\r\n title: route.project ? route.project : route.route_name ? route.route_name : '',\r\n material: route.material ? route.material : '',\r\n type: route.unit ? route.unit : ''\r\n }\r\n this.createPopup(datasetForPopup);\r\n });\r\n this.map.on('mouseleave', `line${index}`, (e) => {\r\n this.map.setPaintProperty(`line${index}`, 'line-width', 2);\r\n if (this.popup) {\r\n this.popup.remove();\r\n }\r\n });\r\n })\r\n\r\n this.map.once('idle', (res) => {\r\n resolve(true)\r\n });\r\n})\r\n }\r\n // Below method Load route without animation\r\n drawLine(cordinates?: any, index?: number | any, route?: any, enablefitbound?: boolean, routeType?: string) {\r\n let linecolor: any;\r\n let origin = cordinates[0]; let destination = cordinates[cordinates.length - 1]\r\n if (origin[0] && origin[1] && destination && destination[0] && destination[1]) {\r\n linecolor = this.provideLineColor(route['unit'], routeType);\r\n if (enablefitbound) {\r\n const padding = {\r\n top: this.padding.top, bottom: this.padding.bottom + (this.windowActualHeightWidth.availHeight - (window.innerHeight - 65)),\r\n left: this.padding.left, right: this.padding.right\r\n }\r\n this.map.fitBounds([origin, destination], { padding }, { fitboundCompleteJob: true })\r\n }\r\n if (this.map.getSource(`route-source-for-job-code${index}`)) {\r\n this.removeRouteAndMarker(index).then(() => { })\r\n }\r\n this.map.addSource(`route-source-for-job-code${index}`, {\r\n 'type': 'geojson',\r\n 'data': { 'type': 'Feature', 'properties': {}, 'geometry': { 'type': 'LineString', 'coordinates': cordinates } }\r\n });\r\n this.map.addLayer({\r\n 'id': `route-for-job-code${index}`, 'type': 'line', 'source': `route-source-for-job-code${index}`,\r\n paint: { 'line-color': linecolor, 'line-width': 2 },\r\n layout: { 'line-cap': 'round', 'line-join': 'round' }\r\n });\r\n const dataSetForMap = {\r\n origin, destination, index, linecolor, route\r\n }\r\n this.createMarker(dataSetForMap);\r\n this.map.on('mouseenter', `route-for-job-code${index}`, (e) => {\r\n if (this.popup) {\r\n this.popup.remove();\r\n }\r\n this.map.setPaintProperty(`route-for-job-code${index}`, 'line-width', 5);\r\n this.map.setPaintProperty(`route-for-job-code${index}`, 'line-opacity', 1);\r\n const datasetForPopup: PopupData = {\r\n coordinate: [e.lngLat.lng, e.lngLat.lat],\r\n pickup: route.pickup_location ? route.pickup_location : '',\r\n drop: route.delivery_location ? route.delivery_location : '',\r\n jobCode: route.project ? route.order_number : null,\r\n customer: route.project ? route.customer_name : null,\r\n routeType: route.project ? 'Project' : 'Route',\r\n title: route.project ? route.project : route.route_name ? route.route_name : '',\r\n material: route.material ? route.material : '',\r\n type: route.unit ? route.unit : ''\r\n }\r\n this.createPopup(datasetForPopup);\r\n });\r\n this.map.on('mouseleave', `route-for-job-code${index}`, (e) => {\r\n this.map.setPaintProperty(`route-for-job-code${index}`, 'line-width', 2);\r\n if (this.popup) {\r\n this.popup.remove();\r\n }\r\n });\r\n }\r\n }\r\n\r\n provideLineColor(unitType: string, type?: string | undefined) {\r\n let checkType = (type && !['jobrouteList', 'addroute'].includes(type)) ? true : false;\r\n let color;\r\n switch (unitType) {\r\n case \"Ton\":\r\n color = checkType ? '#39c471' : '#ff7272';\r\n break;\r\n case \"Load\":\r\n color = checkType ? '#326ad3' : '#a3c52e';\r\n break;\r\n case \"Hourly\":\r\n color = checkType ? '#ffad56' : '#ae23d1';\r\n break;\r\n }\r\n return color;\r\n }\r\n\r\n showRoutePopup(arcDetails, event, isViewRoute?): void {\r\n if (this.popup) {\r\n this.popup.remove();\r\n this.map.setPaintProperty(`${isViewRoute ? 'line' : 'route-for-job-code'}${arcDetails.layer.props.data.index}`, 'line-width', 2);\r\n }\r\n if (arcDetails.color && this.map.getLayoutProperty(arcDetails.layer.id, 'visibility') !== 'none') {\r\n this.map.setPaintProperty(`${isViewRoute ? 'line' : 'route-for-job-code'}${arcDetails.layer.props.data.index}`, 'line-width', 5);\r\n this.map.setPaintProperty(`${isViewRoute ? 'line' : 'route-for-job-code'}${arcDetails.layer.props.data.index}`, 'line-opacity', 1);\r\n\r\n const datasetForPopup: PopupData = {\r\n coordinate: arcDetails.coordinate,\r\n pickup: arcDetails.layer.props.data.route.pickup_location ? arcDetails.layer.props.data.route.pickup_location : '',\r\n drop: arcDetails.layer.props.data.route.delivery_location ? arcDetails.layer.props.data.route.delivery_location : '',\r\n jobCode: arcDetails.layer.props.data.route.project ? arcDetails.layer.props.data.route.order_number : '',\r\n customer: arcDetails.layer.props.data.route.project ? arcDetails.layer.props.data.route.customer_name : '',\r\n routeType: arcDetails.layer.props.data.route.project ? 'Project' : 'Route',\r\n title: arcDetails.layer.props.data.route.project ? arcDetails.layer.props.data.route.project : arcDetails.layer.props.data.route.route_name ? arcDetails.layer.props.data.route.route_name : '',\r\n material: arcDetails.layer.props.data.route.material ? arcDetails.layer.props.data.route.material : '',\r\n type: arcDetails.layer.props.data.route.unit ? arcDetails.layer.props.data.route.unit : ''\r\n }\r\n this.createPopup(datasetForPopup);\r\n }\r\n }\r\n\r\n createPopup(datasetForPopup: PopupData): void {\r\n this.popup = new mapboxgl.Popup({\r\n closeButton: false,\r\n closeOnClick: false,\r\n closeOnMove: true,\r\n anchor: 'bottom-left'\r\n });\r\n\r\n this.popup.setLngLat(datasetForPopup.coordinate)\r\n .setHTML(`\r\n <div class=\"destination\">\r\n <div class=\"duration\">\r\n <p class=\"pickprt\"><b>Pickup Location:</b> ${datasetForPopup.pickup}</p>\r\n <p class=\"dropprt\"><b>Drop Location:</b> ${datasetForPopup.drop}</p>\r\n </div>\r\n ${datasetForPopup.jobCode ? '<span><b>Job Code:</b> ' + datasetForPopup.jobCode + '</span>' : ''}\r\n ${datasetForPopup.customer ? '<span><b>Customer:</b> ' + datasetForPopup.customer + '</span>' : ''}\r\n <span><b>${datasetForPopup.routeType} Name:</b> ${datasetForPopup.title}</span>\r\n <span><b>Material:</b> ${datasetForPopup.material}</span>\r\n <span><b>Type:</b> ${datasetForPopup.type}</span>\r\n </div>\r\n `)\r\n .addTo(this.map);\r\n }\r\n\r\n hexToRGB(hex: any): [number, number, number] {\r\n return hex.replace(/^#?([a-f\\d])([a-f\\d])([a-f\\d])$/i\r\n , (m, r, g, b) => '#' + r + r + g + g + b + b)\r\n .substring(1).match(/.{2}/g)\r\n .map(x => parseInt(x, 16))\r\n }\r\n\r\n createMarker(routeDetails) {\r\n if (routeDetails.origin[0] && routeDetails.origin[1] && routeDetails.destination[0] && routeDetails.destination[1]) {\r\n\r\n const popup = new mapboxgl.Popup({ closeButton: false }).setHTML('<b>Pickup: </b>' + routeDetails.route?.pickup_location);\r\n const popupForDestination = new mapboxgl.Popup({ closeButton: false })\r\n .setHTML('<b>Delivery: </b>' + routeDetails.route?.delivery_location);\r\n\r\n const el = document.createElement('div');\r\n el.className = 'marker';\r\n el.innerHTML = `<span class='markerPointer' style='background:${routeDetails.linecolor}'><b>P</b><span class='markerSpan' style='border-top: 10px solid ${routeDetails.linecolor}'></span></span>`\r\n\r\n const originMarker = new mapboxgl.Marker(el)\r\n .setPopup(popup).setLngLat(routeDetails.origin).addTo(this.map);\r\n\r\n originMarker.getElement().addEventListener('mouseenter', () => originMarker.togglePopup());\r\n originMarker.getElement().addEventListener('mouseleave', () => originMarker.togglePopup());\r\n\r\n const elementForDestination = document.createElement('div');\r\n elementForDestination.className = 'marker';\r\n elementForDestination.innerHTML = `<span class='markerPointer' style='background:${routeDetails.linecolor}'><b>D</b><span class='markerSpan' style='border-top: 10px solid ${routeDetails.linecolor}'></span></span>`\r\n\r\n const destinationMarker = new mapboxgl.Marker(elementForDestination).setPopup(popupForDestination).setLngLat(routeDetails.destination).addTo(this.map);\r\n destinationMarker.getElement().addEventListener('mouseenter', () => destinationMarker.togglePopup());\r\n destinationMarker.getElement().addEventListener('mouseleave', () => destinationMarker.togglePopup());\r\n this.markerOriginList[routeDetails.index] = originMarker;\r\n this.markerDestinationList[routeDetails.index] = destinationMarker;\r\n\r\n const colorArray = this.hexToRGB(routeDetails.linecolor)\r\n const arcLayer = new MapboxLayer({\r\n id: 'arc-layer' + routeDetails.index,\r\n type: ArcLayer,\r\n pickable: true,\r\n data: { route: routeDetails.route, index: routeDetails.index },\r\n getWidth: 1,\r\n getSourcePosition: routeDetails.origin,\r\n getTargetPosition: routeDetails.destination,\r\n getTargetColor: [255, 255, 255],\r\n getSourceColor: [colorArray[0], colorArray[1], colorArray[2]],\r\n onHover: (info, event) => this.showRoutePopup(info, event, routeDetails.isViewRoute),\r\n });\r\n this.map.addLayer(arcLayer);\r\n }\r\n }\r\n\r\n async removeRouteAndMarker(index: number | string | any) {\r\n if (this.map) {\r\n this.map.getLayer(`arc-layer${index}`) ? this.map.removeLayer(`arc-layer${index}`) : '';\r\n this.map.getLayer(`line${index}`) ? this.map.removeLayer(`line${index}`) : '';\r\n this.map.getLayer(`custom_layer${index}`) ? this.map.removeLayer(`custom_layer${index}`) : '';\r\n this.map.getSource(`line${index}`) ? this.map.removeSource(`line${index}`) : '';\r\n this.map.getLayer(`route-for-job-code${index}`) ? this.map.removeLayer(`route-for-job-code${index}`) : '';\r\n this.map.getSource(`route-source-for-job-code${index}`) ? this.map.removeSource(`route-source-for-job-code${index}`) : '';\r\n this.findMarkerBound(index);\r\n this.markerOriginList[index] ? this.markerOriginList[index].remove() : '';\r\n this.markerDestinationList[index] ? this.markerDestinationList[index].remove() : '';\r\n await true;\r\n }\r\n }\r\n findMarkerBound(index: any) {\r\n const indexOfCordinates = this.originDestinationCordinates.findIndex((x: any) =>\r\n (x[0][0].toFixed(6) == this.markerOriginList[index]?.getLngLat()?.lng.toFixed(6)) && (x[0][1].toFixed(6) == this.markerOriginList[index]?.getLngLat()?.lat.toFixed(6)));\r\n if (indexOfCordinates >= 0) { this.originDestinationCordinates.splice(indexOfCordinates, 1) }\r\n }\r\n async filterRoute(ID: any, visibility: string, showAllFitbound?: boolean) {\r\n if (ID) {\r\n if (this.map.getLayer(`route-for-job-code${ID}`)) {\r\n this.map.setLayoutProperty(`route-for-job-code${ID}`, 'visibility', visibility);\r\n const originM = this.markerOriginList[ID].getElement();\r\n originM.style.display = ((visibility === 'visible') ? 'block' : visibility);\r\n const destinationM = this.markerDestinationList[ID].getElement();\r\n destinationM.style.display = ((visibility === 'visible') ? 'block' : visibility);\r\n if (visibility === 'none' && showAllFitbound) {\r\n this.findMarkerBound(ID);\r\n this.extendReBound();\r\n }\r\n }\r\n if (this.map.getLayer(`arc-layer${ID}`)) {\r\n this.map.setLayoutProperty(`arc-layer${ID}`, 'visibility', visibility);\r\n }\r\n }\r\n await true;\r\n }\r\n extendBound(route: any, showAllFitbound: boolean | undefined) {\r\n return new Promise((resolve, reject) => {\r\n if (route) {\r\n if (typeof route === 'string') {\r\n let path: any = route.split(';');\r\n path = path.map((ele: string | any) => { return ele = this.formateLatLong(ele) });\r\n path.forEach((ele: any, index: number) => { if (ele.length === 1) path.splice(index, 1) });\r\n route = path\r\n }\r\n if (route[0][0] && route[0][1] && route[route.length - 1][0] && route[route.length - 1][1]) {\r\n this.originDestinationCordinates.push(route);\r\n route.map((item: any) => {\r\n this.bounds.extend(item);\r\n })\r\n }\r\n }\r\n if (showAllFitbound) {\r\n const padding = { top: this.padding.top, bottom: (this.padding.bottom + (this.windowActualHeightWidth.availHeight - (window.innerHeight - 65))), left: this.padding.left, right: this.padding.right }\r\n setTimeout(() => {\r\n if (showAllFitbound && (Object.keys(this.bounds).length > 0)) this.map.fitBounds(this.bounds, { padding }, { fitboundComplete: true })\r\n }, 100);\r\n this.map.once('moveend', (event: any) => { if (event.fitboundComplete) { resolve(true) } });\r\n }\r\n });\r\n }\r\n\r\n extendReBound(bottom?: number) {\r\n return new Promise((resolve, reject) => {\r\n this.bounds = new mapboxgl.LngLatBounds();\r\n\r\n if (this.originDestinationCordinates.length >= 0) {\r\n this.originDestinationCordinates.map((item: any, index: number) => {\r\n item.map((route: any) => {\r\n this.bounds.extend(route);\r\n })\r\n if (index === (this.originDestinationCordinates.length - 1)) {\r\n const padding = { top: this.padding.top, bottom: (this.padding.bottom + (this.windowActualHeightWidth.availHeight - (window.innerHeight - 65))), left: this.padding.left, right: this.padding.right }\r\n setTimeout(() => {\r\n if (this.originDestinationCordinates.length > 0) this.map.fitBounds(this.bounds, { padding });\r\n }, 500);\r\n resolve(true);\r\n }\r\n })\r\n } else {\r\n resolve(true);\r\n }\r\n })\r\n }\r\n plotRoute(route: any, i: number | any, type: string, enablefitbound?: boolean, showAllFitbound?: boolean) {\r\n return new Promise((resolve, reject) => {\r\n let param: any = {};\r\n if (['jobcode'].includes(type)) {\r\n param['job'] = route['job_id']\r\n this.utils.postDataWithRestUrl('schedule/job/path', param).subscribe((res: any) => {\r\n if (res['data']['route']) {\r\n let path = res['data']['route'].split(';');\r\n path = path.map((ele: string | any) => { return ele = this.formateLatLong(ele) });\r\n path.forEach((ele: any, index: number) => { if (ele.length === 1) path.splice(index, 1) });\r\n route['path'] = path;\r\n this.extendBound(route['path'], showAllFitbound);\r\n if (route['path'] && route['path'].length > 0) this.drawLine(route['path'], i, route, enablefitbound, type);\r\n route['index'] = i;\r\n } else {\r\n this.extendBound(null, showAllFitbound);\r\n }\r\n resolve(true);\r\n }, (err) => { if (err) { reject(false) } });\r\n } else if (['jobrouteList', 'addroute'].includes(type)) {\r\n if (route['path'] && route['path'].length > 0) {\r\n let path = route['path'].split(';');\r\n path = path.map((ele: string | any) => { return ele = this.formateLatLong(ele) });\r\n path.forEach((ele: any, index: number) => { if (ele.length === 1) path.splice(index, 1) });\r\n this.extendBound(path, showAllFitbound);\r\n this.drawLine(path, i, route, enablefitbound, type)\r\n };\r\n }\r\n })\r\n }\r\n clearBound() { this.bounds = new mapboxgl.LngLatBounds(); this.originDestinationCordinates = []; this.clearPadding(); }\r\n formateLatLong(latlong: string) { return latlong ? latlong.split(',').map(x => +x).reverse() : null; }\r\n clearBoundWithCordinates() {\r\n this.bounds = new mapboxgl.LngLatBounds(); this.originDestinationCordinates = [];\r\n }\r\n\r\n onResize(event: any) {\r\n if (!this.bounds.isEmpty()) {\r\n this.windowActualHeightWidth.availHeight = (window.innerHeight > window.screen.availHeight) ? window.innerHeight : window.screen.availHeight;\r\n setTimeout(() => {\r\n this.map.fitBounds(this.bounds, { padding: { top: this.padding.top, bottom: this.padding.bottom + (this.windowActualHeightWidth.availHeight - (event.target.innerHeight - 65)), left: this.padding.left, right: this.padding.right } });\r\n }, 500);\r\n }\r\n }\r\n\r\n setWindowHeight(screen: any) {\r\n this.windowActualHeightWidth.availHeight = screen;\r\n }\r\n setPadding(padding: any) { this.padding = padding }\r\n clearPadding() { this.padding = null }\r\n removeJobFromMap(data: Route[]) {\r\n data.map((ele: any, index: number) => {\r\n const id = (ele['job_id'] ? ele['job_id'] : ele['route_id']);\r\n this.removeRouteAndMarker(id);\r\n if (index === (data.length - 1)) {\r\n this.extendReBound();\r\n }\r\n })\r\n }\r\n}\r\n","\r\nexport class Route {\r\n index: number = 0;\r\n type?: string | null;\r\n // Job Code\r\n customer_contact?: string | null;\r\n customer_name?: string | null;\r\n delivery_contact?: string | null;\r\n delivery_lat?: number | null;\r\n delivery_location?: string | null | undefined;\r\n delivery_lon?: number | null;\r\n driver_list?: Array<any>;\r\n material?: string | null;\r\n order_number?: string | null;\r\n pickup_lat?: number | null;\r\n pickup_location?: string | null | undefined;\r\n pickup_lon?: number | null;\r\n project?: string | null;\r\n total_count?: number;\r\n unit?: string | null;\r\n values: any;\r\n job_id?: string;\r\n isSelected?: boolean;\r\n date?: string;\r\n // Add Route\r\n created_at?: string | null;\r\n created_by_name?: string | null;\r\n customer_id?: string | null;\r\n delivery_lat_lng?: string | null;\r\n estimated_distance?: string | null;\r\n estimated_time?: string | null;\r\n materials_id?: string | null;\r\n path?: [number, number];\r\n pickup_lat_lng?: string | null;\r\n route_id?: string | null;\r\n route_name?: string | null;\r\n unit_id?: string | null;\r\n note?: string | null\r\n isActive?: boolean;\r\n prevent?: boolean;\r\n}\r\n\r\nexport const EstinationData = ['estimated_distance', 'estimated_time']\r\nexport enum EstinationEnum {\r\n estimated_distance = \"miles\",\r\n estimated_time = \"time\"\r\n}\r\n\r\nexport const JobCodeOverviewData = ['customer_contact', 'delivery_contact', 'pickup_location', 'delivery_location', 'project', 'unit']\r\nexport enum JobCodeOverviewEnum {\r\n customer_contact = 'Customer Contact',\r\n delivery_contact = 'Delivery Contact',\r\n pickup_location = 'Pickup',\r\n delivery_location = 'Delivery',\r\n project = 'Project Name',\r\n unit = 'Job Type',\r\n}\r\n\r\nexport const DriversmsCardKey = ['order_number', 'date', 'values', 'material', 'unit', 'pickup_location', 'delivery_location']\r\nexport enum DriverSmsCardEnum {\r\n order_number = 'Jobcode',\r\n date = 'Date',\r\n values = 'Total tasks',\r\n material = 'Material',\r\n unit = 'Unit',\r\n pickup_location = 'Pickup Address',\r\n delivery_location = 'Delivery Address'\r\n}\r\n\r\nexport class PopupData {\r\n coordinate: [number, number];\r\n pickup: string | null;\r\n jobCode?: string | null;\r\n customer?: string | null;\r\n drop: string | null;\r\n routeType: string | null;\r\n title: string | null;\r\n material: string | null;\r\n type: string | null;\r\n}\r\n"]}