{"version":3,"sources":["pages/Landing.page.tsx","components/Header.component.tsx","actions/mapHelper.tsx","components/Directions.component.tsx","actions/gaevents.ts","actions/dataHelper.ts","containers/ServiceSearch.tsx","containers/ServiceItem.tsx","actions/searchActions.ts","containers/ServiceListItem.tsx","containers/CategoryResultsView.tsx","containers/RecentItemsAndFavouritesView.tsx","components/Feedback.component.tsx","components/Footer.component.tsx","components/SupportContact.component.tsx","components/ProfileModal.component.tsx","containers/CategoryItem.tsx","components/Map.component.tsx","containers/CategoryListView.tsx","components/Services.component.tsx","components/SearchModal.component.tsx","actions/generalHelper.tsx","components/Home.component.tsx","components/mobile/MobileHeader.component.tsx","components/mobile/MobileMap.component.tsx","containers/mobile/ServiceListItemMobile.tsx","containers/mobile/CategoryResultsViewMobile.tsx","containers/mobile/RecentItemsAndFavouritesViewMobile.tsx","components/mobile/MobileRecent.component.tsx","containers/mobile/CategoryItemMobile.tsx","components/mobile/MobileSupportContact.component.tsx","containers/mobile/CategoryListViewMobile.tsx","components/mobile/MobileServices.component.tsx","pages/Privacy.page.tsx","pages/Disclaimer.page.tsx","components/mobile/MobileFeedback.component.tsx","components/mobile/MobileContactUs.component.tsx","components/mobile/MobileHome.component.tsx","pages/Home.page.tsx","App.tsx","index.tsx"],"names":["HeaderLogo","styled","img","LandingPage","setShowLandingPage","className","src","style","margin","color","fontSize","Button","onClick","_servufeatureLayer","BannerContainer","div","HeaderComponent","state","showMenu","showFilter","Grid","Row","target","href","rel","React","Component","DirectionsComponent","points","useState","activeIndex","setActiveIndex","Accordion","Title","active","index","e","titleProps","Icon","name","Content","map","item","gaFeedbackSubmitted","rating","commentlength","IsServiceProvider","d","Date","now","ReactGAN","event","action","category","label","toString","value","gaFavouritesClicked","orgname","IsFavourite","gaProviderInfo","Orgname","gaCategoryInfo","console","log","gaMobileFilter","bOnline","gaRecentlyVisitedFilterClicked","bTurnedOn","bFavourites","gaFavouriteFilterClicked","bRecent","setDefaultOptions","version","_csvResults","search","loadMap","mapRef","a","loadModules","css","ArcGISMap","MapView","arcGISMap","basemap","mapView","container","current","loadFeatureLayer","isMobile","setMapUpdates","setFeatureLayerView","FeatureLayer","title","content","getFeatureLayerId","featureLayerId","servufeatureLayer","portalItem","id","outFields","add","whenLayerView","then","view","watch","num","zoomToLayer","loadDirectionLayer","GraphicsLayer","Graphic","Track","directionsLayer","tracker","graphic","symbol","type","size","outline","width","geolocationOptions","timeout","loadMapSearch","setMyLocation","setTrack","selectedItemRef","getDirections","Search","popupEnabled","autoNavigate","on","result","feature","geometry","undefined","key","firstSource","allSources","getItemAt","zoomScale","to","myLocation","featurePopup","setOpenSearch","setDirectionsVisible","setButtonVisible","RouteTask","RouteParameters","FeatureSet","routeTask","url","addGraphic","point","visible","graphics","getRoute","routeParams","stops","features","resultGraphic","toArray","returnDirections","solve","data","directions_container","routeResults","forEach","Distance","Time","route","attributes","Total_Kilometers","Total_TravelTime","close","goTo","extent","document","getElementById","innerHTML","directions","createElement","ui","distance","length","direction","text","toFixed","time","appendChild","push","accordian","ReactDOM","render","removeAll","getGeoResults","featureLayerView","queryObjectIds","objectIds","query","createQuery","queryFeatures","results","geoArr","i","turf","longitude","latitude","sort","b","aPoint","bPoint","units","OrgName","localeCompare","layer","queryExtent","filterLayerView","isCategoryChange","selectedItem","getPopupData","onItemSelect","selectedCategory","distanceFilter","militaryStatus","currentID","PID","address","Address","serviceName","filter","where","distanceFilters","getDistanceFilters","panel","remove","clear","window","scrollTo","spatialRelationship","getFeatureLayer","getSearchLocation","searchText","Locator","includeDefaultSources","sources","locator","singleLineFieldName","countryCode","placeholder","searchResult","getMapZoom","loadRecentItems","setVisited","FilterWithGeometry","JSON","parse","localStorage","getItem","recentVisited","popUpQuery","obj","clickedTime","loadFavourites","setFavourites","favourites","setToFavourites","setItem","stringify","removeFromFavourites","favouriteItemIndex","findIndex","element","splice","getOnlineResults","csvResult","onlineArray","getOnlineData","getOnlineServices","fetch","featureLayerIdApi","res","json","FeatureIdResult","csvOnlineServicesApi","onlineServicesResult","ServiceItem","orgDetails","onDirections","isFavourite","setIsFavourite","orgName","openHours","OpenHours","website","Website","Specialises","Phone","PhonePretty","isOnline","useEffect","some","checkFavourite","phoner","Card","marginTop","border","boxShadow","Mobile","paddingTop","Popup","trigger","position","Header","Description","marginLeft","paddingBottom","marginBottom","open","startsWith","opacity","getMilitaryStatus","Cookies","get","pid","cookies","gender","birthYear","status","militaryBackground","serviceType","serviceClickApi","method","mode","headers","body","sendFeedback","feedback","viewedItems","feedbackApi","storeSearchHistory","availableIndex","toLocaleString","searchHistory","getSearchResultsData","toLowerCase","geoResults","onlineResults","includes","ServiceSearch","setSelectedItem","searchTerm","isSearching","setIsSearching","searchResults","setSearchResults","loadSearch","onSearch","description","suggest","addressResults","isAddress","Fragment","loading","onResultSelect","onSearchChange","resultRenderer","ServiceListItem","highlightOnHover","List","Item","onMouseEnter","onMouseLeave","display","lineHeight","CategoryResultsView","showOnlineResults","setShowOnlineResults","showGeoResults","setShowGeoResults","resultsToShow","setResultsToShow","categories","find","displayName","Group","widths","toggle","bInperonOn","Divider","selection","divided","relaxed","org","RecentItemsAndFavouritesView","visited","showRecentlyVisited","setShowRecentlyVisited","showFavourites","setShowFavourites","FeedbackComponent","setOpen","submitted","isSubmitted","setRating","setFeedback","Number","charLeft","setCharLeft","setPosition","Modal","onClose","onOpen","inverted","min","max","onChange","Rating","maxRating","Form","TextArea","rows","maxLength","feedbackText","currentCharCount","findLeftChars","Field","Radio","checked","Message","positive","Actions","visitedPlaces","arrayoflines","split","FooterContainer","footer","LiContainer","li","PContainer","p","FooterComponent","columns","Column","Image","float","textAlign","SupportContact","clickedOpenArms","setClickedOpenArms","clickedLifeLine","setClickedLifeLine","clickedRespect","setClickedRespect","centered","stackable","alt","left","icon","right","highlighted","distanceSlider","ServiceIcon","CategoryItem","mobile","largeScreen","CategoryListView","setSelectedCategory","setIsRecentItemView","padded","relatedCategory","ServiceComponent","setHoverItem","setDistanceFilter","isRecentItemView","basic","popup","maxHeight","SearchModal","openSearch","iconClass","useIsMount","isMountRef","useRef","sleep","ms","Promise","resolve","setTimeout","MapComponent","setOnlineResults","setGeoResults","isMount","track","mapUpdates","hoverItem","initialLoad","values","loadDistanceFilter","loadOnlineData","bufferVariablesChanged","FilterValue","Slider","steps","visibleElements","labels","precision","labelFormatFunction","start","stop","highlightQuery","highlight","term","onFilterLayerView","ph","py","when","location","dockEnabled","center","zoom","catch","error","filterOnlineResults","filterGeoResults","val","ref","profileArray","allYears","x","ProfileModal","openModal","setOpenModal","setCookieValue","storedCookies","getAll","birth_year","military","service","profileSkipped","handleSubmit","skipped","birth","servingstatus","servicetype","set","path","maxAge","gaPersonalInfoSkipped","year","gaPersonalInfoSubmitted","dimmer","marginRight","as","Dropdown","fluid","options","aboutme","labelPosition","primary","HomeComponent","cookieAccepted","setCookieAccepted","isCookieAccepted","overlay","cookieName","onAccept","expires","MobileHeaderComponent","setMenuVisible","setSearchSelectedItem","handleMenuClick","setMainLocation","showSearch","setShowSearch","searchtext","show","ServiceListItemMobile","CategoryResultsViewMobile","MobileMapComponent","recentVisible","onlineSelected","inPersonClicked","directionsVisible","buttonVisible","zoomInToNearest","setZoomInToNearest","showZoomOutModal","setShowZoomOutModal","canShowZoomOutModal","setCanShowZoomOutModal","prevFeatureLayerView","usePrevious","isUpdating","queryFeatureCount","featureCount","queryFeaturesJSON","f","y","cen","fetchOnlineData","onWarningModalClose","Sidebar","Pushable","animation","onHide","Pusher","dimmed","Segment","height","RecentItemsAndFavouritesViewMobile","MobileRecentComponent","setRecentVisible","CategoryItemMobile","MobileSupportContact","CategoryListViewMobile","serviceClick","padding","MobileServiceComponent","searchSelectedItem","mainLocation","setVisible","setOnlineSelected","showMap","setShowMap","setSearchText","setInPersonClicked","_setSelectedItem","handleInPersonClick","handleOnlineClick","handleBackClick","Menu","vertical","renderServiceResult","PrivacyPage","DisclaimerPage","MobileFeedbackComponent","FooterContainerMobile","MobileContactUs","MENUS","MobileHomeComponent","setTitle","menuVisible","servicesKey","setServicesKey","menu","bottom","overlayClasses","HomePage","App","showLandingPage","component","ReactGA","initialize","StrictMode"],"mappings":"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","file":"static/js/main.6ce5f7a6.chunk.js","sourcesContent":["import React from \"react\";\nimport \"semantic-ui-css/semantic.min.css\";\nimport styled from \"styled-components\";\nimport { Button } from \"semantic-ui-react\";\n\nconst HeaderLogo = styled.img`\n height 120%;\n width:120%;\nmargin-left : -40px;\nmargin right : auto;\n display : block;\n \n\n`;\n\n\nexport const LandingPage = ({ setShowLandingPage }: any) => {\n return (\n \n \n \n
\n
\n\n \n\n\n \n\n\n

\n Connecting our Defence and Veteran Community

\n to Services and Support\n

\n \n \n \n \n \n \n

\n ** Servulink Digital Hub is not affiliated with or acting on behalf of any government organization or entity. **

\n

\n \n \n
\n
\n );\n};\n","import React from \"react\";\nimport { Grid } from \"semantic-ui-react\";\nimport styled from \"styled-components\";\n\nconst BannerContainer = styled.div`\n position: relative;\n z-index: 999;\n background-color: #002060;\n width: 100%;\n text-align: center;\n margin: 0 auto;\n padding: 8px;\n box-shadow: 0 1px 5px #000000;\n`;\n\nconst HeaderLogo = styled.img`\n max-height: 45px;\n`;\ninterface IState {\n showMenu: boolean;\n showFilter: boolean;\n}\n\nclass HeaderComponent extends React.Component {\n state: IState = {\n showMenu: false,\n showFilter: false,\n };\n\n render() {\n return (\n \n \n \n \n \n \n \n \n Servulink Digital Hub\n \n \n \n );\n }\n}\n\nexport default HeaderComponent;\n","import React from \"react\";\nimport { loadModules } from \"esri-loader\";\nimport DirectionsComponent from \"../components/Directions.component\";\nimport ReactDOM from \"react-dom\";\nimport * as turf from \"@turf/turf\";\nimport { getFeatureLayerId } from './dataHelper';\nimport {setDefaultOptions} from \"esri-loader\";\nimport {gaGeolocate} from \"./gaevents\"\n \n setDefaultOptions({version: '4.22'});\nlet _servufeatureLayer: any;\n\nexport const loadMap = async (mapRef: any) => {\n const [ArcGISMap, MapView] = await loadModules(\n [\"esri/Map\", \"esri/views/MapView\"],\n { css: true }\n );\n let arcGISMap = new ArcGISMap({ basemap: \"streets-navigation-vector\" });\n let mapView = new MapView({\n container: mapRef.current,\n map: arcGISMap,\n });\n return { arcGISMap, mapView };\n};\n\nexport const loadFeatureLayer = async ({\n arcGISMap,\n mapView,\n isMobile,\n setMapUpdates,\n setFeatureLayerView\n}: any) => {\n const [FeatureLayer] = await loadModules([\"esri/layers/FeatureLayer\"], {\n css: true,\n });\n const template = {\n title: \"{OrgName}\",\n content: isMobile\n ? `
Address:
{Address}
Website:
{Website}`\n : `{Address}

{Website}`,\n };\n let { featureLayerId } = await getFeatureLayerId();\n let servufeatureLayer = new FeatureLayer({\n portalItem: {\n id: featureLayerId,\n },\n outFields: [\"*\"],\n // popupTemplate: template,\n });\n arcGISMap.add(servufeatureLayer);\n mapView.whenLayerView(servufeatureLayer).then((view: any) => {\n view.watch(\"updating\", function (value: any) {\n if (!value) {\n setMapUpdates((num: number) => ++num);\n }\n });\n setFeatureLayerView(view);\n });\n if (!isMobile) {\n await zoomToLayer(servufeatureLayer, mapView);\n }\n return { servufeatureLayer };\n};\n\nexport const loadDirectionLayer = async (\n arcGISMap: any,\n mapView: any,\n isMobile: boolean = false\n) => {\n const [GraphicsLayer, Graphic, Track] = await loadModules(\n [\"esri/layers/GraphicsLayer\", \"esri/Graphic\", \"esri/widgets/Track\"],\n {\n css: true,\n }\n );\n let directionsLayer = new GraphicsLayer();\n arcGISMap.add(directionsLayer);\n let tracker;\n if (!isMobile) {\n tracker = new Track({\n view: mapView,\n graphic: new Graphic({\n symbol: {\n type: \"simple-marker\",\n size: \"15px\",\n color: \"blue\",\n outline: {\n color: \"#ffffff\",\n width: \"1.5px\",\n },\n },\n }),\n geolocationOptions: {\n timeout: 5000,\n },\n });\n }\n return { directionsLayer, tracker };\n};\n\nexport const loadMapSearch = async ({\n mapView,\n setMyLocation,\n setTrack,\n isMobile,\n selectedItemRef,\n getDirections,\n}: any) => {\n const [Search] = await loadModules([\"esri/widgets/Search\"], {\n css: true,\n });\n let search = new Search({\n view: mapView,\n popupEnabled: false,\n autoNavigate: true,\n });\n if (isMobile) {\n search.on(\"select-result\", function (result: any) {\n setMyLocation(result.result.feature);\n if (selectedItemRef.current) {\n getDirections(selectedItemRef.current.geometry);\n }\n });\n } else {\n search.on(\"select-result\", (result: any) => {\n if (result.result.key === undefined) setTrack(true);\n setMyLocation(result.result.feature);\n });\n }\n\n\n search.watch(\"viewModel.state\", function (state: any) {\n if (state === \"ready\") {\n var firstSource = search.allSources.getItemAt(0);\n if (firstSource) {\n firstSource.zoomScale = 100000;\n }\n }\n });\n\n return search;\n};\n\nexport const getDirections = async ({\n to,\n isMobile,\n directionsLayer,\n myLocation,\n search,\n mapView,\n featurePopup,\n setOpenSearch,\n setDirectionsVisible,\n setButtonVisible,\n}: any) => {\n const [RouteTask, RouteParameters, FeatureSet, Graphic] = await loadModules(\n [\n \"esri/tasks/RouteTask\",\n \"esri/tasks/support/RouteParameters\",\n \"esri/tasks/support/FeatureSet\",\n \"esri/Graphic\",\n ],\n { css: true }\n );\n let routeTask = new RouteTask({\n url:\n \"https://utility.arcgis.com/usrsvcs/appservices/F3AQiOtolTH3vXr2/rest/services/World/Route/NAServer/Route_World/solve\",\n });\n\n const addGraphic = (point: any) => {\n let graphic = new Graphic({\n symbol: {\n type: \"simple-marker\",\n color: \"black\",\n size: isMobile ? \"5px\" : \"7px\",\n },\n geometry: point,\n visible: isMobile ? false : true,\n });\n directionsLayer.graphics.add(graphic);\n };\n\n const getRoute = () => {\n let routeParams = new RouteParameters({\n stops: new FeatureSet({\n features: [\n ...([...(myLocation ? [myLocation] : [search.resultGraphic])]),\n ...directionsLayer.graphics.toArray(),\n ],\n }),\n returnDirections: true,\n });\n routeTask.solve(routeParams).then(function (data: { routeResults: any[] }) {\n console.log(data);\n data.routeResults.forEach(function (result) {\n result.route.symbol = {\n type: \"simple-line\",\n color: [5, 150, 255],\n width: 3,\n };\n gaGeolocate(result.route.attributes.Total_Kilometers,result.route.attributes.Total_TravelTime);\n directionsLayer.graphics.add(result.route);\n featurePopup.close();\n mapView.goTo(result.route.geometry.extent);\n });\n\n let directions_container: any;\n if (isMobile) {\n directions_container = document.getElementById(\"directions-container\");\n directions_container.innerHTML = \"\";\n } else {\n let directions = document.createElement(\"div\");\n directions.id = \"directions-panel\";\n mapView.ui.add(directions, \"top-right\");\n }\n\n let points: any[] = [];\n let features = data.routeResults[0].directions.features;\n features.forEach(function (result: any) {\n let distance = result.attributes.length * 1.609344;\n if (isMobile) {\n let direction = document.createElement(\"p\");\n direction.className = \"direction-point\";\n direction.innerHTML = `${result.attributes.text} (${distance.toFixed(\n 2\n )} km) - ${result.attributes.time.toFixed(2)} min)`;\n directions_container.appendChild(direction);\n } else {\n points.push(\n `${result.attributes.text} (${distance.toFixed(\n 2\n )} km - ${result.attributes.time.toFixed(2)} min)`\n );\n }\n });\n if (!isMobile) {\n const accordian = ;\n ReactDOM.render(accordian, document.getElementById(\"directions-panel\"));\n } else {\n setDirectionsVisible(true);\n setButtonVisible(true);\n }\n });\n };\n if (search.resultGraphic || myLocation) {\n directionsLayer.removeAll();\n addGraphic(to);\n getRoute();\n } else setOpenSearch(true);\n};\n\nexport const getGeoResults = async ({\n featureLayerView,\n servufeatureLayer,\n myLocation,\n}: any) => {\n if (featureLayerView) {\n const objectIds = await featureLayerView.queryObjectIds();\n if (!objectIds.length) {\n return [];\n }\n const query = featureLayerView.createQuery();\n query.objectIds = objectIds;\n const results = await servufeatureLayer.queryFeatures(query);\n let geoArr = [];\n for (let i = 0; i < results.features.length; i++) {\n const obj = results.features[i].attributes;\n obj.geometry = results.features[i].geometry;\n geoArr.push(results.features[i].attributes);\n }\n if (myLocation) {\n const { geometry }: any = myLocation;\n let current = turf.point([geometry.longitude, geometry.latitude]);\n geoArr = geoArr.sort((a, b) => {\n let aPoint = turf.point([a.geometry.longitude, a.geometry.latitude]);\n let bPoint = turf.point([b.geometry.longitude, b.geometry.latitude]);\n return (\n turf.distance(current, aPoint, { units: \"miles\" }) -\n turf.distance(current, bPoint, { units: \"miles\" })\n );\n });\n } else {\n geoArr = geoArr.sort((a, b) => a.OrgName.localeCompare(b.OrgName));\n }\n return geoArr;\n } else {\n return [];\n }\n};\n\nexport const zoomToLayer = async (layer: any, mapView: any) => {\n const { extent } = await layer.queryExtent();\n await mapView.goTo(extent);\n};\n\nexport const filterLayerView = async ({\n isCategoryChange,\n isMobile,\n selectedItem,\n featureLayerView,\n getPopupData,\n onItemSelect,\n selectedCategory,\n directionsLayer,\n search,\n setTrack,\n myLocation,\n distanceFilter,\n militaryStatus,\n}: any) => {\n // let statement = await fetchCookieFilterStatement(militaryStatus);\n if (featureLayerView) {\n if (selectedItem) {\n const { PID: currentID, Address: address, OrgName: serviceName }: any = selectedItem;\n featureLayerView.filter = {\n where: \"PID='\" + currentID + \"'\",\n };\n if (address !== \"Online\") {\n getPopupData(selectedItem);\n }\n onItemSelect(currentID, serviceName);\n } else {\n let distanceFilters = getDistanceFilters(myLocation, distanceFilter);\n if (selectedCategory) {\n featureLayerView.filter = {\n // where: `${selectedCategory} = 'Y' ${statement ? ` AND ${statement} = 'Y'` : \"\"\n // }`,\n where: `${selectedCategory} = 'Y'`,\n ...distanceFilters,\n };\n if (!isMobile) {\n const panel = document.getElementById(\"directions-panel\");\n if (panel) panel.remove();\n search.clear();\n setTrack(false);\n } else {\n let directions_container: any;\n directions_container = document.getElementById(\"directions-container\");\n directions_container.innerHTML = '';\n const text = document.createElement('P');\n text.className = 'no-directions-available';\n text.innerHTML = 'No directions Available';\n directions_container.appendChild(text);\n }\n if (directionsLayer) {\n directionsLayer.removeAll();\n }\n } else if (featureLayerView) {\n featureLayerView.filter = {\n // where: `${statement ? `${statement}='Y` : \"\"}`,\n ...distanceFilters,\n };\n }\n }\n if (isCategoryChange && selectedCategory) {\n window.scrollTo(0, 0);\n }\n }\n};\n\nconst getDistanceFilters = (myLocation: any, distanceFilter: any) => {\n if (myLocation && distanceFilter > 0) {\n const currentLocation = myLocation.geometry;\n return {\n geometry: currentLocation,\n spatialRelationship: \"contains\",\n distance: distanceFilter,\n units: \"kilometers\",\n };\n }\n return {};\n};\n\nexport const getFeatureLayer = async () => {\n let { featureLayerId } = await getFeatureLayerId();\n if (!_servufeatureLayer) {\n const [FeatureLayer] = await loadModules([\"esri/layers/FeatureLayer\"], {\n css: true,\n });\n _servufeatureLayer = new FeatureLayer({\n portalItem: {\n id: featureLayerId,\n },\n outFields: [\"*\"],\n });\n }\n return _servufeatureLayer;\n}\n\nexport const getSearchLocation = async (searchText: String) => {\n const [Search, Locator] = await loadModules(\n [\"esri/widgets/Search\", \"esri/tasks/Locator\"],\n { css: true }\n );\n let search = new Search({\n includeDefaultSources: false,\n sources: [\n {\n locator: new Locator({\n url:\n \"https://geocode.arcgis.com/arcgis/rest/services/World/GeocodeServer\",\n }),\n singleLineFieldName: \"SingleLine\",\n countryCode: \"AUS\",\n name: \"Address\",\n placeholder: \"Search by Address\",\n },\n ],\n });\n\n let searchResult = await search.search(searchText);\n return searchResult?.results[0]?.results[0]?.feature;\n}\n\nexport const getMapZoom = (distanceFilter: number) => {\n switch (distanceFilter) {\n case 0:\n return 2;\n case 10:\n case 20:\n return 11;\n case 30:\n case 40:\n return 9;\n case 50:\n case 60:\n return 7;\n case 70:\n case 80:\n return 6;\n case 90:\n case 100:\n return 5;\n }\n}","import React, { useState } from 'react'\nimport { Accordion, Icon } from 'semantic-ui-react';\n\ninterface DirectionsComponentProps {\n points: any,\n}\n\nconst DirectionsComponent = ({points}: DirectionsComponentProps) => {\n const [activeIndex, setActiveIndex] = useState(0);\n\n const handleClick = (e: any, titleProps: any) => {\n const { index } = titleProps\n const newIndex = activeIndex === index ? -1 : index\n setActiveIndex(newIndex)\n }\n\n return (\n \n \n \n Directions\n \n \n
\n {points.map((item: any) => (\n

{item}

\n ))}\n
\n
\n
\n )\n}\n\nexport default DirectionsComponent","import ReactGAN from \"react-ga4\";\n\n\n\nexport function gaRecommendationSkipped( ) : void {\n\n var d = Date.now();\n\n ReactGAN.event({\n action: \"Recommendation process Skipped\",\n category: \"User Details\",\n label : 'user has skipped the recommendation process',\n value : d,\n\n });\n\n}\n\n\nexport function gaRecommendationSubmitted(score : number , email : string ) : void {\n\n var d = Date.now();\n\n ReactGAN.event({\n action: \"Recommendation score\",\n category: \"User Details\",\n label : score.toString(),\n value : score,\n\n });\n\n // ReactGAN.event({\n // action: \"Recommendation email\",\n // category: \"User Details\",\n // label : email,\n // value : 1,\n\n // });\n \n \n ReactGAN.event({\n action: \"Recommendation date\",\n category: \"User Details\",\n label : Date.now.toString(),\n\n });\n\n\n\n}\n\n\n\n\nexport function gaPersonalInfoSkipped( ) : void {\n\n var d = Date.now();\n\n ReactGAN.event({\n action: \"Anonymous Info Skipped\",\n category: \"User Details\",\n label : 'user has skipped',\n value : d,\n\n });\n\n}\n\n\nexport function gaPersonalInfoSubmitted(gender : string, year: number, status : string, military : string, servicetype : string ) : void {\n \n var d = Date.now();\n \n ReactGAN.event({\n action: \"Gender Submitted\",\n category: \"User Details\",\n label : gender,\n value : d,\n\n });\n \n ReactGAN.event({\n action: \"Birth Year Submitted\",\n category: \"User Details\",\n label : year.toString(),\n value : d,\n\n });\n \n ReactGAN.event({\n action: \"Status Submitted\",\n category: \"User Details\",\n label : status,\n value : d,\n\n });\n \n ReactGAN.event({\n action: \"Military Background Submitted\",\n category: \"User Details\",\n label : military,\n value : d,\n\n }); \n \n ReactGAN.event({\n action: \"Service Type Submitted\",\n category: \"User Details\",\n label : servicetype,\n value : d,\n\n });\n \n console.log(gender,year,status,military,servicetype,d);\n}\n\n\nexport function gaPersonalInfoResubmitted(info :string, thevalue :string) : void {\n \n if (info == \"gender\" )\n {\n ReactGAN.event({\n action: \"Gender changed\",\n category: \"User Details\",\n label : thevalue,\n });\n }\n\n if (info == \"birth_year\" )\n {\n ReactGAN.event({\n action: \"Birth Year changed\",\n category: \"User Details\",\n label : thevalue,\n });\n }\n\n if (info == \"military\" )\n {\n ReactGAN.event({\n action: \"Military Background changed\",\n category: \"User Details\",\n label : thevalue,\n });\n }\n\n if (info == \"status\" )\n {\n ReactGAN.event({\n action: \"Status changed\",\n category: \"User Details\",\n label : thevalue,\n });\n }\n\n if (info == \"service\" )\n {\n ReactGAN.event({\n action: \"Service Type changed\",\n category: \"User Details\",\n label : thevalue,\n });\n }\nconsole.log(info,thevalue);\n \n}\n\n\n\nexport function gaFilterDistanceBarChange(FilterValue : number) : void {\n ReactGAN.event({\n action: \"Filter Distance Bar Changed \",\n category: \"UI\",\n label : FilterValue.toString(),\n value : FilterValue,\n });\n}\n\nexport function gaGeolocate(Distance: number, Time : number ) : void {\n //write two events\n \n ReactGAN.event({\n action: \"Route Selected\",\n category: \"Geolocation\",\n label: \"Geolocation Route\"\n });\n \n ReactGAN.event({\n action: \"Travel Distance Kilometers\",\n category: \"Geolocation\",\n label: \"Total Distance Kilometers\",\n value : Distance * 1.609,\n });\n \n ReactGAN.event({\n action: \"Travel Time in Hours\",\n category: \"Geolocation\",\n label: \"Total Time hours\",\n value : Time/60,\n });\n \n}\n\nexport function gaFeedbackSubmitted(rating : number, commentlength : number, IsServiceProvider : boolean ) : void {\n \n var d = Date.now();\n \n ReactGAN.event({\n action: \"Feedback Rating Submitted\",\n category: \"Feedback\",\n label : d.toString(),\n value : rating,\n });\n \n if (commentlength > 0)\n {\n ReactGAN.event({\n action: \"Feedback Comment Submitted\",\n category: \"Feedback\",\n label : d.toString(),\n value : commentlength,\n });\n }\n \n if (IsServiceProvider == true)\n {\n ReactGAN.event({\n action: \"Feedback left by Provider\",\n category: \"Feedback\",\n label : d.toString(),\n });\n }\n else\n {\n ReactGAN.event({\n action: \"Feedback left by Veteran\",\n category: \"Feedback\",\n label : d.toString(),\n });\n \n }\n \n \n}\n\n\nexport function gaWebsiteClicked(viaButton : boolean, orgname: string) : void {\n \n if (viaButton == true)\n {\n ReactGAN.event({\n action: \"Clicked on Website \",\n category: \"UI\",\n label : orgname,\n });\n }\n else\n {\n ReactGAN.event({\n action: \"Clicked on Website via Popup Link \",\n category: \"UI\",\n label : orgname,\n });\n }\n \n \n}\n\n\nexport function gaAboutMeClicked() : void {\n ReactGAN.event({\n action: \"About Me Clicked \",\n category: \"UI\",\n });\n}\n\n\n\nexport function gaFavouritesClicked(orgname : string, IsFavourite : boolean) : void {\n \n if (IsFavourite == true)\n {\n ReactGAN.event({\n action: \"Organisation Favourited \",\n category: \"UI\",\n label : orgname,\n });\n }\n else\n {\n ReactGAN.event({\n action: \"Organisation Removed from Favourites \",\n category: \"UI\",\n label : orgname,\n });\n \n }\n}\nexport function gaFeedbackClicked() : void {\n ReactGAN.event({\n action: \"About Me Clicked \",\n category: \"UI\",\n });\n}\n\n\n\n\nexport function gaSearchUsed(SearchText : string) : void {\n ReactGAN.event({\n action: \"Clicked on Provider \",\n category: \"Provider\",\n });\n}\n\nexport function gaProviderInfo(Orgname: string) : void {\n ReactGAN.event({\n action: \"Provider\" ,\n category: \"Provider Selected\",\n label : Orgname,\n \n });\n}\n\n\nexport function gaCategoryInfo(category: string): void {\n console.log(\"Category Analytics \")\n ReactGAN.event({\n action: \"Category \",\n category: \"Category Selected\",\n label : category\n });\n}\n\n\n\n\nexport function gaFavouritesCategoryClicked() : void {\n ReactGAN.event({\n action: \"About Me Clicked \",\n category: \"UI\",\n });\n}\n\n\n\nexport function gaMobileFilter(bOnline : boolean) : void {\n \n if (bOnline)\n {\n ReactGAN.event({\n action: \"Online Filter On\",\n category: \"UI Mobile\",\n label : \"Online Filter On for Mobile \"\n });\n }\n else\n {\n ReactGAN.event({\n action: \"In Person Filter On\",\n category: \"UI Mobile\",\n label : \"In Person Filter On for Mobile \"\n });\n \n }\n}\n\n\n\nexport function gaOnlineFilterClicked(bTurnedOn : boolean, bInperonOn : boolean) : void {\n \n if (!bTurnedOn)\n {\n if (bInperonOn)\n {\n ReactGAN.event({\n action: \"Online Filter Turned On\",\n category: \"UI\",\n label : \"In Person Filter is On\"\n });\n /////////////////////////// console.log(\"Online ON Inperson on\") ;\n }\n else\n {\n ReactGAN.event({\n action: \"Online Filter Turned On\",\n category: \"UI\",\n label : \"In Person Filter off\"\n });\n //console.log(\"Online ON Inperson off\") ;\n }\n \n } \n else\n if (bInperonOn)\n {\n ReactGAN.event({\n action: \"Online Filter Turned Off\",\n category: \"UI\",\n label : \"In Person Filter is On\"\n });\n // console.log(\"Online Off Inperson on\") ;\n }\n else\n {\n ReactGAN.event({\n action: \"Online Filter Turned Off\",\n category: \"UI\",\n label : \"In Person Filter off\"\n });\n // console.log(\"Online Off Inperson off\") ;\n }\n \n \n}\nexport function gaInPersonFilterClicked(bTurnedOn : boolean, bOnline : boolean) : void {\n \n if (!bTurnedOn)\n {\n if (bOnline)\n {\n ReactGAN.event({\n action: \"In Person Filter Turned On\",\n category: \"UI\",\n label : \"Online Filter is On\"\n });\n // console.log(\"Inperson ON Online on\") ;\n }\n else\n {\n ReactGAN.event({\n action: \"In Person Filter Turned On\",\n category: \"UI\",\n label : \"Online Filter off\"\n });\n // console.log(\"Inperson ON Online off\") ;\n }\n \n } \n else\n if (bOnline)\n {\n ReactGAN.event({\n action: \"In Person Filter Turned Off\",\n category: \"UI\",\n label : \"Online Filter is On\"\n });\n //console.log(\"Inperson Off Online on\") ;\n }\n else\n {\n ReactGAN.event({\n action: \"In Person Filter Turned Off\",\n category: \"UI\",\n label : \"Online Filter off\"\n });\n // console.log(\"Inperson Off Online off\") ;\n }\n\n}\n\nexport function gaRecentlyVisitedFilterClicked(bTurnedOn : boolean, bFavourites : boolean) : void {\n \n if (!bTurnedOn)\n {\n if (bFavourites)\n {\n ReactGAN.event({\n action: \"Recently Visited Filter Turned On\",\n category: \"UI\",\n label : \"Favourites Filter is On\"\n });\n // console.log(\"Recently ON Favourites on\") ;\n }\n else\n {\n ReactGAN.event({\n action: \"Recently Visited Filter Turned On\",\n category: \"UI\",\n label : \"Favourites Filter off\"\n });\n // console.log(\"Recently ON Favourites off\") ;\n }\n \n } \n else\n if (bFavourites)\n {\n ReactGAN.event({\n action: \"Recently Visited Filter Turned Off\",\n category: \"UI\",\n label : \"Favourites Filter is On\"\n });\n // console.log(\"Recently Off Favourites on\") ;\n }\n else\n {\n ReactGAN.event({\n action: \"Recently Visited Filter Turned Off\",\n category: \"UI\",\n label : \"Favourites Filter off\"\n });\n // console.log(\"Recently Off Favourites off\") ;\n }\n\n}\n\n\nexport function gaFavouriteFilterClicked(bTurnedOn : boolean, bRecent : boolean) : void {\n \n if (!bTurnedOn)\n {\n if (bRecent)\n {\n ReactGAN.event({\n action: \"Favourites Filter Turned On\",\n category: \"UI\",\n label : \"Recently Visited Filter is On\"\n });\n // console.log(\"Favourites ON Recently on\") ;\n }\n else\n {\n ReactGAN.event({\n action: \"Favourites Filter Turned On\",\n category: \"UI\",\n label : \"Recently Visited Filter off\"\n });\n // console.log(\"Favourites ON Recently off\") ;\n }\n \n } \n else\n if (bRecent)\n {\n ReactGAN.event({\n action: \"Favourites Filter Turned Off\",\n category: \"UI\",\n label : \"Recently Visited Filter is On\"\n });\n // console.log(\"Favourites Off Recently on\") ;\n }\n else\n {\n ReactGAN.event({\n action: \"Favourites Filter Turned Off\",\n category: \"UI\",\n label : \"Recently Visited Filter off\"\n });\n // console.log(\"Favourites Off Recently off\") ;\n }\n\n}\n\n","import { getFeatureLayer } from \"./mapHelper\";\nimport { featureLayerIdApi, csvOnlineServicesApi} from \"../config.json\";\n\nlet _csvResults: any;\n\nexport const loadRecentItems = async (setVisited: any, servufeatureLayer: any | undefined) => {\n if (!servufeatureLayer) {\n servufeatureLayer = await getFeatureLayer();\n }\n let FilterWithGeometry: any[] = [];\n let recentVisited: any[] = await JSON.parse(\n localStorage.getItem(\"recentSearches\") || \"[]\"\n );\n const popUpQuery = await servufeatureLayer.createQuery();\n for (let i = 0; i < recentVisited.length; i++) {\n const isOnline = recentVisited[i].Address === \"Online\";\n if (!isOnline) {\n popUpQuery.where = `PID='${recentVisited[i].PID}'`;\n let result = await servufeatureLayer.queryFeatures(popUpQuery);\n if (result.features.length) {\n let obj = result.features[0].attributes;\n obj.geometry = result.features[0].geometry;\n obj.clickedTime = recentVisited[i].clickedTime;\n FilterWithGeometry.push(obj);\n }\n } else {\n FilterWithGeometry.push(recentVisited[i]);\n }\n }\n setVisited(FilterWithGeometry);\n}\n\nexport const loadFavourites=async (setFavourites: any, servufeatureLayer: any | undefined)=>{\n if (!servufeatureLayer) {\n servufeatureLayer = await getFeatureLayer();\n }\n let FilterWithGeometry: any[] = [];\n let favourites: any[] = await JSON.parse(\n localStorage.getItem(\"favourites\") || \"[]\"\n );\n const popUpQuery = await servufeatureLayer.createQuery();\n for (let i = 0; i < favourites.length; i++) {\n const isOnline = favourites[i].Address === \"Online\";\n if (!isOnline) {\n popUpQuery.where = `PID='${favourites[i].PID}'`;\n let result = await servufeatureLayer.queryFeatures(popUpQuery);\n if (result.features.length) {\n let obj = result.features[0].attributes;\n obj.geometry = result.features[0].geometry;\n FilterWithGeometry.push(obj);\n }\n } else {\n FilterWithGeometry.push(favourites[i]);\n }\n }\n setFavourites(FilterWithGeometry);\n}\n\nexport const checkFavourite = (PID: any) => {\n let favourites = JSON.parse(localStorage.getItem(\"favourites\") || \"[]\");\n return favourites.some((element: any) => {\n if (element.PID === PID) {\n return true;\n } else {\n return false;\n }\n });\n};\n\nexport const setToFavourites=async(item:any)=>{\n let favourites = JSON.parse(localStorage.getItem(\"favourites\") || \"[]\");\n favourites.push(item);\n localStorage.setItem(\"favourites\", JSON.stringify(favourites));\n}\n\nexport const removeFromFavourites = async (PID: any) => {\n let favourites = JSON.parse(localStorage.getItem(\"favourites\") || \"[]\");\n let favouriteItemIndex = favourites.findIndex((element:any)=>element.PID === PID);\n favourites.splice(favouriteItemIndex, 1);\n localStorage.setItem(\"favourites\", JSON.stringify(favourites));\n};\n\nexport const fetchCookieFilterStatement = async (militaryStatus: any) => {\n if (militaryStatus) {\n switch (militaryStatus) {\n case \"serving\":\n return \"Serving\";\n\n case \"former_serving\":\n return \"Veterans\";\n\n case \"family_of_serving\":\n return \"ServingFam\";\n\n case \"family_of_former_serving\":\n return \"VeteranFam\";\n\n default:\n return undefined;\n }\n }\n};\n\nexport const getOnlineResults = async ({\n selectedCategory,\n csvResult,\n militaryStatus,\n}: any) => {\n // let statement = await fetchCookieFilterStatement(militaryStatus);\n if (selectedCategory) {\n let onlineArray = csvResult.filter(\n (item: any) =>\n // statement\n // ? item.Address === \"Online\" &&\n // item[selectedCategory] === \"Y\" &&\n // item[statement] === \"Y\"\n // : item.Address === \"Online\" && item[selectedCategory] === \"Y\"\n item.Address === \"Online\" && item[selectedCategory] === \"Y\"\n );\n\n onlineArray = onlineArray.sort((a: any, b: any) =>\n a.OrgName.localeCompare(b.OrgName)\n );\n return onlineArray;\n } else {\n return [];\n }\n};\n\nexport const getOnlineData = async () => {\n if (!_csvResults) {\n _csvResults = [];\n _csvResults = await getOnlineServices();\n }\n return _csvResults;\n};\n\nexport const getFeatureLayerId = async () => {\n try {\n let FeatureIdResult = await fetch(featureLayerIdApi).then((res) => {\n return res.json();\n });\n return FeatureIdResult;\n } catch (error) {\n return error;\n }\n};\n\nexport const getOnlineServices = async () => {\n try {\n let onlineServicesResult = await fetch(csvOnlineServicesApi).then((res) => {\n return res.json();\n });\n return onlineServicesResult;\n } catch (error) {\n return error;\n }\n};\n","import { loadModules } from \"esri-loader\";\nimport React, { useEffect, useState } from \"react\";\nimport { Icon, Search } from \"semantic-ui-react\";\nimport { getSearchResultsData } from \"../actions/searchActions\";\n\ninterface ServiceSearchProps {\n setSelectedItem: Function;\n searchTerm: Function;\n csvResult?: any;\n servufeatureLayer?: any;\n isMobile?: boolean;\n}\n\nlet search: any;\n\nexport const ServiceSearch = ({\n setSelectedItem,\n searchTerm,\n csvResult,\n servufeatureLayer,\n isMobile\n}: ServiceSearchProps) => {\n const [isSearching, setIsSearching] = useState(false);\n const [searchResults, setSearchResults] = useState([]);\n\n useEffect(() => {\n loadSearch();\n }, []);\n const loadSearch = async () => {\n const [Search, Locator] = await loadModules(\n [\"esri/widgets/Search\", \"esri/tasks/Locator\"],\n { css: true }\n );\n search = new Search({\n includeDefaultSources: false,\n sources: [\n {\n locator: new Locator({\n url:\n \"https://geocode.arcgis.com/arcgis/rest/services/World/GeocodeServer\",\n }),\n singleLineFieldName: \"SingleLine\",\n countryCode: \"AUS\",\n name: \"Address\",\n placeholder: \"Search by Address\",\n },\n ],\n });\n };\n\n const onSearch = async (event: any, { value: searchText }: any) => {\n if (searchText) {\n setIsSearching(true);\n let results: any = await getSearchResultsData(searchText, servufeatureLayer, csvResult);\n results = results.map((item: any) => {\n let isOnline = item.Address === \"Online\";\n return {\n title: item.OrgName,\n description: (\n
\n {isOnline ? item.Website : item.Address}\n
\n ),\n item,\n key: item.PID,\n };\n });\n if (!isMobile) {\n let addressResults = await search.suggest(searchText);\n if (addressResults?.results[0]?.results) {\n addressResults?.results[0]?.results.forEach(\n ({ text: name, key }: any) => {\n results.push({\n title: name,\n isAddress: true,\n key: key,\n });\n }\n );\n }\n }\n setSearchResults(results);\n setIsSearching(false);\n } else {\n setSearchResults([]);\n }\n };\n\n const renderResult = ({ title, isAddress, item }: any) => {\n let isOnline = !isAddress && item.Address === \"Online\";\n return (\n \n
\n {isOnline ? (\n \n ) : isAddress ? (\n \n ) : (\n \n )}\n {title}\n
\n
\n );\n };\n\n return (\n \n
\n \n data.result.isAddress\n ? searchTerm(data.result.title)\n : setSelectedItem(data.result.item)\n }\n onSearchChange={onSearch}\n results={searchResults.length ? searchResults : []}\n placeholder={`Search by Service Name${!isMobile ? ' or Address' : ''}`}\n resultRenderer={renderResult}\n />\n
\n
\n );\n};\n","import React, { useState, useEffect } from \"react\";\nimport { Button, Card, Icon, Popup } from \"semantic-ui-react\";\nimport Mobile, { isMobile } from 'is-mobile';\nimport { checkFavourite, setToFavourites, removeFromFavourites } from \"../actions/dataHelper\";\nimport {gaFavouritesClicked, gaWebsiteClicked} from '../actions/gaevents';\n\ninterface ServiceItemProps {\n orgDetails: any;\n onDirections: any;\n}\n\nexport const ServiceItem = ({ orgDetails, onDirections }: ServiceItemProps) => {\n const [isFavourite, setIsFavourite] = useState(false);\n const {\n PID,\n OrgName: orgName,\n Address: address,\n OpenHours: openHours,\n Website: website,\n Specialises : Specialises,\n Phone : Phone,\n PhonePretty : PhonePretty\n } = orgDetails;\n const isOnline = address === \"Online\";\n\n useEffect(() => {\n setIsFavourite(checkFavourite(PID));\n }, [PID]);\n\n const addToFavourites = () => {\n setToFavourites(orgDetails);\n setIsFavourite(true);\n gaFavouritesClicked(orgName,true);\n }\n\n const removeFavourite = () => {\n removeFromFavourites(PID);\n setIsFavourite(false);\n gaFavouritesClicked(orgName,false);\n }\n \n const WebsiteClickedNotOnline = () => {\n // removeFromFavourites(PID);\n // setIsFavourite(false);\n \n window.open( `${!website.startsWith(\"http\") ? \"https://\" : \"\"}${website}`)\n console.log(\"notonline\");\n \n gaWebsiteClicked(true, orgName);\n }\n \n const phoner = 'tel:' + Phone ;\n\n return (\n
\n \n \n {isFavourite ? (\n }\n position=\"bottom right\"\n />\n ) : (\n \n }\n position=\"bottom right\"\n />\n )}\n \n {!isOnline && }\n
\n {orgName}\n {!isOnline && {address}}\n {openHours}\n
\n
\n
\n {!isOnline && (\n \n
\n {website && (\n \n Website\n \n )}\n \n
\n
\n )}\n {isOnline && (\n \n
\n \n {website}\n \n
\n

\n Phone : {PhonePretty}\n

\n

\n Specialises in :

\n {Specialises}\n
\n )}\n
\n
\n );\n};\n","import Cookies from \"universal-cookie\";\nimport { serviceClickApi, feedbackApi } from \"../config.json\";\nimport { getOnlineData } from \"./dataHelper\";\nimport { getFeatureLayer } from \"./mapHelper\";\n\nexport const getMilitaryStatus = () => {\n const cookies = new Cookies();\n return cookies.get('status') || undefined;\n}\n\nexport const onItemSelect = (pid: string, serviceName: string) => {\n const cookies = new Cookies();\n const data = {\n gender: cookies.get(\"gender\"),\n birthYear: cookies.get(\"birth_year\"),\n status: cookies.get(\"status\"),\n militaryBackground: cookies.get(\"military\"),\n serviceType: cookies.get(\"service\"),\n pid,\n serviceName\n };\n\n fetch(serviceClickApi, {\n method: \"POST\",\n mode: \"cors\",\n headers: {\n \"Content-Type\": \"application/json\",\n },\n body: JSON.stringify(data),\n });\n};\n\nexport const sendFeedback = (\n rating: String,\n position: String | Number | undefined,\n feedback: Array,\n viewedItems: Array\n) => {\n fetch(feedbackApi, {\n method: \"POST\",\n mode: \"cors\",\n headers: {\n \"Content-Type\": \"application/json\",\n },\n body: JSON.stringify({ rating, position, feedback, viewedItems }),\n });\n};\n\nexport const storeSearchHistory = (item: any) => {\n const { Address, OrgName, OpenHours, Website } = item;\n let PID = item.id ? item.id : item.PID\n let availableIndex: any;\n let clickedTime = new Date().toLocaleString();\n var searchHistory = JSON.parse(\n localStorage.getItem(\"recentSearches\") || \"[]\"\n );\n if (searchHistory.length > 0) {\n if (searchHistory.length === 50) {\n searchHistory.splice(0, 1);\n }\n availableIndex = searchHistory.findIndex((element:any)=> element.id===PID || element.PID===PID)\n }\n if (availableIndex>=0) {\n searchHistory.splice(availableIndex, 1);\n searchHistory.push({\n PID,\n clickedTime,\n OrgName,\n Address,\n Website,\n OpenHours,\n });\n } else {\n searchHistory.push({\n PID,\n clickedTime,\n OrgName,\n Address,\n Website,\n OpenHours,\n });\n }\n localStorage.setItem(\"recentSearches\", JSON.stringify(searchHistory));\n};\n\nexport const getSearchResultsData = async (searchText: String, servufeatureLayer?:any, csvResult?:any) => {\n if(!servufeatureLayer){\n servufeatureLayer = await getFeatureLayer();\n }\n if(!csvResult){\n csvResult = await getOnlineData();\n }\n const query = servufeatureLayer.createQuery();\n query.where = `lower(OrgName) like '%${searchText.toLowerCase()}%' or lower(Address) like '%${searchText.toLowerCase()}%'`;\n query.outFields = [\"*\"];\n let geoResults = await servufeatureLayer.queryFeatures(query);\n geoResults = geoResults.features.map((obj: any) => {\n return { geometry: obj.geometry, ...obj.attributes };\n });\n let onlineResults = csvResult.filter(\n (item: any) =>\n item.Address === \"Online\" && //online results only\n ((item.OrgName &&\n item.OrgName.toLowerCase().includes(searchText.toLowerCase())) || //orgname has search text\n (item.Website &&\n item.Website.toLowerCase().includes(searchText.toLowerCase())))\n ); //web address has search text\n return [...geoResults, ...onlineResults];\n};","import React from \"react\";\nimport { List } from \"semantic-ui-react\";\nimport { storeSearchHistory } from \"../actions/searchActions\";\nimport {gaProviderInfo} from '../actions/gaevents';\n\ninterface ServiceListItemProps {\n item: any;\n setSelectedItem: Function;\n highlightOnHover: Function;\n}\n\nexport const ServiceListItem = ({\n item,\n setSelectedItem,\n highlightOnHover,\n}: ServiceListItemProps) => {\n const { Address: address, OrgName: orgName } = item;\n const isOnline = address === \"Online\";\n return (\n {\n setSelectedItem(item);\n storeSearchHistory(item);\n gaProviderInfo(orgName);\n }}\n onMouseEnter={() => highlightOnHover(item)}\n onMouseLeave={() => highlightOnHover(\"\")}\n className=\"location-list\"\n >\n \n \n
\n {orgName}\n
\n \n
\n \n );\n};\n","import React, { useEffect, useState } from \"react\";\nimport { Button, Divider, List } from \"semantic-ui-react\";\nimport { ServiceListItem } from \"./ServiceListItem\";\nimport categories from \"../configs/categories.json\";\nimport {gaInPersonFilterClicked,gaOnlineFilterClicked} from '../actions/gaevents';\n\ninterface CategoryResultsViewProps {\n onlineResults: any[];\n geoResults: any[];\n setSelectedItem: Function;\n highlightOnHover: Function;\n selectedCategory: any;\n}\n\nexport const CategoryResultsView = ({\n onlineResults,\n geoResults,\n setSelectedItem,\n highlightOnHover,\n selectedCategory,\n}: CategoryResultsViewProps) => {\n const [showOnlineResults, setShowOnlineResults] = useState(false);\n const [showGeoResults, setShowGeoResults] = useState(true);\n const [resultsToShow, setResultsToShow] = useState([]);\n\n useEffect(() => {\n if (showOnlineResults && showGeoResults) {\n //sort by name\n let results = [...onlineResults, ...geoResults].sort((a, b) =>\n a.OrgName.localeCompare(b.OrgName)\n );\n setResultsToShow(results);\n } else if (showOnlineResults) {\n\n setResultsToShow(onlineResults);\n } else if (showGeoResults) {\n //already sorted\n setResultsToShow(geoResults);\n } else {\n setResultsToShow([]);\n }\n }, [showGeoResults, showOnlineResults, geoResults, onlineResults]);\n\n const OnlineClicked = () => {\n setShowOnlineResults(!showOnlineResults);\n gaOnlineFilterClicked(showOnlineResults,showGeoResults);\n\n }\n \n \n const InPersonClicked = () => {\n setShowGeoResults(!showGeoResults);\n gaInPersonFilterClicked(showGeoResults,showOnlineResults);\n\n }\n\n return (\n \n

\n {categories.find((i) => i.category === selectedCategory)?.displayName ||\n \"\"}\n

\n \n \n Online\n \n \n In-Person\n \n \n\n \n\n \n {resultsToShow.map((org) => (\n \n ))}\n \n
\n );\n};\n","import React, { useEffect, useState } from \"react\";\nimport { Button, Divider, List } from \"semantic-ui-react\";\nimport { ServiceListItem } from \"./ServiceListItem\";\nimport { loadRecentItems, loadFavourites } from \"../actions/dataHelper\";\nimport {gaRecentlyVisitedFilterClicked,gaFavouriteFilterClicked} from '../actions/gaevents';\n\ninterface RecentItemsAndFavouritesViewProps {\n setSelectedItem: Function;\n highlightOnHover: Function;\n servufeatureLayer: any;\n}\nexport const RecentItemsAndFavouritesView = ({\n setSelectedItem,\n highlightOnHover,\n servufeatureLayer,\n}: RecentItemsAndFavouritesViewProps) => {\n const [visited, setVisited] = useState([]);\n const [favourites, setFavourites] = useState([]);\n const [showRecentlyVisited, setShowRecentlyVisited] = useState(true);\n const [showFavourites, setShowFavourites] = useState(false);\n useEffect(() => {\n loadRecentItems(setVisited, servufeatureLayer);\n loadFavourites(setFavourites, servufeatureLayer);\n\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n\n const RecentClicked = () => {\n setShowRecentlyVisited(!showRecentlyVisited);\n gaRecentlyVisitedFilterClicked(showRecentlyVisited,showFavourites);\n\n }\n \n \n const FavouritesClicked = () => {\n setShowFavourites(!showFavourites);\n gaFavouriteFilterClicked(showFavourites,showRecentlyVisited);\n\n }\n\n\n\n return (\n \n

Favourites/ Recently Visited

\n \n \n Recently Visited\n \n \n Favourites\n \n \n\n \n \n {showRecentlyVisited\n ? visited\n .sort(function (a, b) {\n return a.clickedTime > b.clickedTime ? -1 : 1;\n })\n .map((org) => (\n \n ))\n : showFavourites\n ? favourites.map((org) => (\n \n ))\n : \"\"}\n \n
\n );\n};\n","import React, { useState } from \"react\";\nimport {\n Button,\n Header,\n Modal,\n Rating,\n Form,\n TextArea,\n Message,\n Radio,\n} from \"semantic-ui-react\";\nimport { sendFeedback } from \"../actions/searchActions\";\nimport {gaFeedbackSubmitted} from \"../actions/gaevents\";\n\nexport const FeedbackComponent = () => {\n const [open, setOpen] = useState(false);\n const [submitted, isSubmitted] = useState(false);\n const [rating, setRating] = useState(8);\n const [feedback, setFeedback] = useState(\"\");\n const [charLeft, setCharLeft] = useState(Number);\n const [position,setPosition] = useState(\"I am a Veteran/Family Member\");\n\n const findLeftChars = (feedbackText: any) => {\n let currentCharCount = feedbackText.length;\n let remainCharCount = 1380 - currentCharCount;\n setCharLeft(remainCharCount);\n };\n\n //for submitting feedback\n const submitFeedback = () => {\n let historyArray: any[] = JSON.parse(\n localStorage.getItem(\"recentSearches\") || \"[]\"\n );\n let visitedPlaces: any[] = historyArray\n .sort((a, b) => (a.clickedTime > b.clickedTime ? -1 : 1))\n .map((item) => item.OrgName);\n \n if (position.includes(\"Provider\")) \n {\n gaFeedbackSubmitted(rating,feedback.length,true);\n }\n else\n {\n gaFeedbackSubmitted(rating,feedback.length,false);\n }\n let arrayoflines : any[] = feedback.split('\\n');\n \n \n //console.log({ rating, position,feedback, visitedPlaces });\n sendFeedback(`${rating}/10`, position,arrayoflines, visitedPlaces);\n isSubmitted(true);\n };\n\n const onClose = () => {\n setRating(0);\n isSubmitted(false);\n setOpen(false);\n setPosition(\"I am a Veteran/Family Member\");\n };\n\n return (\n setOpen(false)}\n onOpen={() => setOpen(true)}\n open={open}\n trigger={\n \n }\n >\n We Welcome Your Feedback\n \n {!submitted && (\n \n
\n
How would you rate your experience?
\n
1 10
\n setRating(e.target.value)}\n className=\"ratingSlider\"\n />\n
\n \n
\n
\n
Do you have any additional comments?
\n
(If you wish to you may leave an email address within your feedback comments)
\n
\n {\n setFeedback(e.target.value);\n findLeftChars(e.target.value);\n }}\n />\n \n Remaining:{charLeft}\n
\n \n \n setPosition(value)}\n />\n \n \n setPosition(value)}\n />\n \n
\n
\n
\n )}\n {submitted && (\n \n \n Thank you for your feedback\n \n \n )}\n
\n \n \n \n \n );\n};\n","import React from 'react'\nimport { Link } from 'react-router-dom';\nimport { Grid, Image } from 'semantic-ui-react'\nimport styled from 'styled-components'\nimport { FeedbackComponent } from './Feedback.component'\n\nconst FooterContainer = styled.footer`\n width: 100%;\n background-color: #292828;\n color: white;\n padding: 3rem 3.5rem 3rem 2.5rem;\n`\nconst LiContainer = styled.li`\n font-family: 'Courgette', cursive;\n font-size: 14px;\n color: #aaaaaa;\n margin: 1.5rem 0 0;\n list-style-type: none;\n text-align: left;\n`\nconst PContainer = styled.p`\n color: #cccccc;\n font-family: 'Heebo', sans-serif;\n font-size: 16px;\n text-align: left;\n`\n\nexport const FooterComponent=()=> {\n return (\n \n \n \n \n \n \n Empowering veterans and their families to connect with services,\n support and community\n \n \n \n \n \n \n
\n \n \n \n\n \n \n \n\n \n \n \n\n \n \n \n \n \n \n
\n
\n
\n \n \n
\n LEGAL\n
\n Privacy Policy\n
\n
\n Disclaimer\n
\n
\n
\n
\n \n \n
\n FEEDBACK\n \n
\n
\n
\n
\n
\n );\n \n};\n\n ","import React, { useState } from \"react\";\nimport { Grid, Image, Button, Icon } from \"semantic-ui-react\";\n\nconst SupportContact = () => {\n const [clickedOpenArms, setClickedOpenArms] = useState(false);\n const [clickedLifeLine, setClickedLifeLine] = useState(false);\n const [clickedRespect, setClickedRespect] = useState(false);\n\n return (\n
\n \n \n \n \n
\n \n setClickedLifeLine(true)}\n href={clickedLifeLine ? \"tel:131114\" : undefined}\n >\n \n {clickedLifeLine ? \"131114\" : \"CALL NOW\"}\n \n
\n
\n \n
\n \n setClickedOpenArms(true)}\n href={clickedOpenArms ? \"tel:1800011046\" : undefined}\n >\n \n {clickedOpenArms ? \"1800011046\" : \"CALL NOW\"}\n \n
\n
\n \n
\n \n setClickedRespect(true)}\n href={clickedRespect ? \"tel:1800011046\" : undefined}\n >\n \n {clickedRespect ? \"1800737732\" : \"CALL NOW\"}\n \n
\n
\n \n
\n
\n
\n );\n};\n\nexport default SupportContact;\n","import React, { useState, useEffect } from 'react';\nimport { Modal, Dropdown, Button, Form } from 'semantic-ui-react';\nimport Cookies from \"universal-cookie\";\nimport aboutme from \"../configs/aboutme.json\";\nimport {gaPersonalInfoSubmitted,gaPersonalInfoSkipped} from \"../actions/gaevents\";\n\nlet profileArray: any[] = [];\nlet maxOffset = 120;\nlet thisYear = 2020;\nlet allYears: any[] = [];\nfor (let x = 0; x <= maxOffset; x++) {\n allYears.push({\n key: `${thisYear - x}`,\n text: thisYear - x,\n value: `${thisYear - x}`,\n });\n}\n\nconst ProfileModal = () => {\n const [openModal, setOpenModal] = useState(false);\n const cookies = new Cookies();\n\n useEffect(() => {\n let storedCookies = cookies.getAll();\n if(!storedCookies.gender && !storedCookies.birth_year && !storedCookies.status && !storedCookies.military && !storedCookies.service && !storedCookies.profileSkipped) {\n setOpenModal(true);\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n function setCookieValue(key: any, value: any) {\n profileArray[key] = value;\n };\n\n const handleSubmit = (skipped : boolean) => {\n\n let gender = \"\";\n let birth = 0;\n let servingstatus = \"\";\n let military = \"\";\n let servicetype = \"\";\n \n for (let item in profileArray) \n {\n cookies.set(item, profileArray[item], { path: \"/\", maxAge: 31536000});\n if (item == \"gender\")\n gender = profileArray[item];\n if (item == \"birth_year\")\n birth = profileArray[item];\n if (item == \"status\")\n servingstatus = profileArray[item];\n if (item == \"military\")\n military = profileArray[item];\n if (item == \"service\")\n servicetype = profileArray[item];\n }\n\n if (! skipped)\n {\n gaPersonalInfoSubmitted(gender,birth,servingstatus,military,servicetype);\n }\n else\n {\n cookies.set(\"profileSkipped\", \"skipped\", {path: \"/\", maxAge: 31536000});\n gaPersonalInfoSkipped();\n }\n setOpenModal(false);\n }\n\n return (\n setOpenModal(false)}\n open={openModal}\n dimmer={'blurring'}\n className='profile-modal'\n >\n Welcome to the Servulink Digital Hub\n
\n If you would like to assist us with improving the Digital Hub, please fill in any of the following information.\n Please Note:
This information is anonymous and assists us to understand our users.
\n It is completely optional and has no bearing on any searches you make.
\n
\n \n \n
\n Gender\n setCookieValue(\"gender\", data.value)}\n />\n BirthYear\n setCookieValue(\"birth_year\", data.value)}\n />\n Status\n setCookieValue(\"status\", data.value)}\n />\n Military Background\n setCookieValue(\"military\", data.value)}\n />\n Service Type\n setCookieValue(\"service\", data.value)}\n />\n
\n
\n \n \n handleSubmit(false)}\n primary\n />\n \n \n )\n}\n\nexport default ProfileModal\n","import React from \"react\";\nimport { Button, Grid } from \"semantic-ui-react\";\nimport styled from \"styled-components\";\n\nconst PContainer = styled.p`\n font-weight: bold;\n width: 100%;\n`;\n\nconst ServiceIcon = styled.img`\n width: 50px;\n height: 55px;\n padding-bottom: 5px;\n /*background: linear-gradient(45deg, #002060, #aaaaaa);*/\n`;\n\ninterface CategoryItemProps {\n displayName: String;\n onClick: any;\n icon: any;\n}\n\nexport const CategoryItem = ({\n displayName,\n onClick,\n icon,\n}: CategoryItemProps) => {\n return (\n \n \n \n );\n};","import React, { useState, useEffect, useRef } from \"react\";\nimport { loadModules } from \"esri-loader\";\nimport { ServiceComponent } from \"./Services.component\";\n//import { FilterBar } from \"./FilterBar.component\";\nimport { SearchModal } from \"./SearchModal.component\";\n//import { AboutMe } from \"./AboutMe.component\";\nimport { onItemSelect } from \"../actions/searchActions\";\nimport { useIsMount } from \"../actions/generalHelper\";\nimport {\n getDirections,\n loadDirectionLayer,\n loadFeatureLayer,\n loadMap,\n loadMapSearch,\n getGeoResults,\n filterLayerView,\n getMapZoom\n} from \"../actions/mapHelper\";\nimport {\n getOnlineResults,\n getOnlineData,\n} from \"../actions/dataHelper\";\n\nimport {gaFilterDistanceBarChange} from \"../actions/gaevents\";\n\nlet directionsLayer: any;\nlet mapView: any;\nlet servufeatureLayer: any;\nlet featureLayerView: any;\nlet search: any;\nlet csvResult: any[] = [];\nlet tracker: any;\nlet arcGISMap: any;\nlet highlighted: any;\nlet featurePopup: any;\nlet distanceSlider: any;\n\nexport const MapComponent = () => {\n const [selectedCategory, setSelectedCategory] = useState<\n string | undefined\n >();\n const [onlineResults, setOnlineResults] = useState([]);\n const [geoResults, setGeoResults] = useState([]);\n const [distanceFilter, setDistanceFilter] = useState(0);\n const [openSearch, setOpenSearch] = useState(false);\n const mapRef = useRef(null);\n const isMount = useIsMount();\n const [selectedItem, setSelectedItem] = useState();\n const [track, setTrack] = useState(false);\n const [mapUpdates, setMapUpdates] = useState(0);\n const [hoverItem, setHoverItem] = useState();\n const [myLocation, setMyLocation] = useState();\n const [militaryStatus, setMilitaryStatus] = useState();\n\n useEffect(() => {\n initialLoad();\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n useEffect(() => {\n if (distanceSlider) distanceSlider.values = [distanceFilter];\n }, [distanceFilter]);\n\n const initialLoad = async () => {\n ({ arcGISMap, mapView } = await loadMap(mapRef));\n ({ servufeatureLayer } = await loadFeatureLayer({\n arcGISMap,\n mapView,\n setMapUpdates,\n setFeatureLayerView: (view: any) => featureLayerView = view\n }));\n ({ directionsLayer, tracker } = await loadDirectionLayer(\n arcGISMap,\n mapView\n ));\n search = await loadMapSearch({ mapView, setMyLocation, setTrack });\n await loadDistanceFilter();\n await loadOnlineData();\n };\n\n const loadDistanceFilter = async () => {\n const [Slider] = await loadModules([\"esri/widgets/Slider\"], {\n css: true,\n });\n distanceSlider = new Slider({\n container: \"buffer-slider\",\n min: 0,\n max: 100,\n steps: 10,\n visibleElements: {\n labels: true,\n },\n precision: 0,\n labelFormatFunction: function (value: { toString: () => string }) {\n return `${value.toString()} km`;\n },\n values: [distanceFilter]\n });\n\n distanceSlider.on([\"thumb-change\", \"thumb-drag\"], bufferVariablesChanged);\n\n function bufferVariablesChanged(event: { value: number }) {\n gaFilterDistanceBarChange(event.value); \n setDistanceFilter(event.value);\n }\n };\n\n const loadOnlineData = async () => {\n csvResult = await getOnlineData();\n };\n\n\n useEffect(() => {\n if (!isMount) {\n if (track) {\n tracker.start();\n } else tracker.stop();\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [track]);\n\n useEffect(() => {\n if (!isMount) {\n const highlightQuery = servufeatureLayer.createQuery();\n highlightQuery.where = `PID='${hoverItem.PID}'`;\n highlightQuery.outFields = [\"*\"];\n servufeatureLayer\n .queryFeatures(highlightQuery)\n .then(function (result: any) {\n if (highlighted) {\n highlighted.remove();\n }\n highlighted = featureLayerView.highlight(result.features[0]);\n });\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [hoverItem]);\n\n const searchTerm = async (term: string) => {\n await search.search(term);\n if (selectedItem)\n getDirections({\n to: selectedItem.geometry,\n directionsLayer,\n myLocation,\n search,\n mapView,\n featurePopup,\n setOpenSearch,\n });\n onFilterLayerView();\n };\n\n //for testing popup data and zoom in\n const getPopupData = (selectedItem: any) => {\n featurePopup = mapView.popup;\n \n let ph = selectedItem.Phone;\n let py = selectedItem.PhonePretty;\n let phoner = \"\";\n if (selectedItem.PhonePretty == \"No Number Provided\")\n {\n phoner = '

Phone: No Number Provided

' + \n \"Specialises in:\" +\n \"

\" +\n selectedItem.Specialises;\n }\n else\n {\n phoner = \"

\" +\n '

Phone: ' + py + '

' +\n \"Specialises in:\" +\n \"

\" +\n selectedItem.Specialises;\n //let samp = 'mynum';\n } \n \n mapView.when(function () {\n featurePopup.open({\n title: selectedItem.OrgName,\n content:\n selectedItem.Address +\n \"

\" +\n `${selectedItem.Website}`\n + \n phoner,\n location: selectedItem.geometry,\n dockEnabled: true,\n });\n //zoom in\n mapView\n .goTo({\n center: selectedItem.geometry,\n zoom: 15,\n })\n .catch(function (error: any) {\n if (error.name !== \"AbortError\") {\n console.error(error);\n }\n });\n });\n };\n\n const filterOnlineResults = async () => {\n let onlineResults = await getOnlineResults({ selectedCategory, csvResult, militaryStatus });\n setOnlineResults(onlineResults);\n };\n\n useEffect(() => {\n filterGeoResults();\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [mapUpdates]);\n\n //testing cookie results\n // useEffect(() => {\n // filterGeoResults();\n // filterOnlineResults();\n // onFilterLayerView();\n // // eslint-disable-next-line react-hooks/exhaustive-deps\n // }, [militaryStatus]);\n\n const filterGeoResults = async () => {\n if (!selectedItem && selectedCategory) {\n const geoResults = await getGeoResults({\n featureLayerView,\n servufeatureLayer,\n myLocation,\n });\n setGeoResults(geoResults);\n }\n };\n\n const onFilterLayerView = (isCategoryChange: boolean = false, isMobile: boolean = false) => {\n filterLayerView({\n isCategoryChange,\n isMobile,\n selectedItem,\n featureLayerView,\n getPopupData,\n onItemSelect,\n selectedCategory,\n directionsLayer,\n search,\n setTrack,\n myLocation,\n distanceFilter,\n militaryStatus\n });\n };\n\n useEffect(() => {\n filterGeoResults();\n filterOnlineResults();\n onFilterLayerView(true);\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [selectedCategory]);\n\n useEffect(() => {\n onFilterLayerView();\n if (distanceFilter !== 0 && !myLocation) {\n setOpenSearch(true)\n } else if (mapView) {\n onFilterLayerView();\n mapView.goTo({\n center: myLocation,\n zoom: getMapZoom(distanceFilter),\n });\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [distanceFilter]);\n\n useEffect(() => {\n onFilterLayerView();\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [selectedItem]);\n\n return (\n
\n
\n \n
\n
\n
\n
\n
\n \n getDirections({\n to: selectedItem.geometry,\n directionsLayer,\n myLocation,\n search,\n mapView,\n featurePopup,\n setOpenSearch,\n })\n }\n selectedCategory={selectedCategory}\n setSelectedCategory={(val: any) => {\n if (featureLayerView) setSelectedCategory(val);\n }}\n onlineResults={onlineResults}\n geoResults={geoResults}\n setSelectedItem={setSelectedItem}\n selectedItem={selectedItem}\n setHoverItem={setHoverItem}\n searchTerm={searchTerm}\n servufeatureLayer={servufeatureLayer}\n csvResult={csvResult}\n mapView={mapView}\n setDistanceFilter={setDistanceFilter}\n />\n
\n
\n
\n
\n
\n \n
\n
\n \n
\n );\n};\n","import React from \"react\";\nimport { Grid } from \"semantic-ui-react\";\nimport { FooterComponent } from \"../components/Footer.component\";\nimport SupportContact from \"../components/SupportContact.component\";\nimport categories from \"../configs/categories.json\";\nimport { CategoryItem } from \"./CategoryItem\";\nimport {gaCategoryInfo} from '../actions/gaevents';\n\ninterface CategoryListViewProps {\n setSelectedCategory: Function;\n setIsRecentItemView: Function;\n}\n\nexport const CategoryListView = ({\n setSelectedCategory,\n setIsRecentItemView,\n}: CategoryListViewProps) => {\n return (\n \n \n \n {categories.map(\n ({ category, relatedCategory, icon, displayName }: any) => (\n {\n setSelectedCategory(category);\n gaCategoryInfo(category);\n }}\n key={category}\n />\n )\n )}\n setIsRecentItemView(true)}\n />\n \n \n\n \n \n \n );\n};","import React, { useState } from \"react\";\nimport { Icon, Button } from \"semantic-ui-react\";\nimport \"../styles/App.css\";\nimport { ServiceItem } from \"../containers/ServiceItem\";\nimport { ServiceSearch } from \"../containers/ServiceSearch\";\nimport { CategoryResultsView } from \"../containers/CategoryResultsView\";\nimport { RecentItemsAndFavouritesView } from \"../containers/RecentItemsAndFavouritesView\";\nimport { CategoryListView } from \"../containers/CategoryListView\";\nimport { zoomToLayer } from \"../actions/mapHelper\";\n\ninterface ServiceComponentProps {\n getDirections: Function;\n selectedCategory: string | undefined;\n setSelectedCategory: Function;\n onlineResults: any[];\n geoResults: any[];\n selectedItem: any;\n setSelectedItem: Function;\n setHoverItem: Function;\n searchTerm: Function;\n servufeatureLayer: any;\n csvResult: any;\n mapView: any;\n setDistanceFilter: Function\n}\n\nexport const ServiceComponent = ({\n selectedCategory,\n setSelectedCategory,\n getDirections,\n onlineResults,\n geoResults,\n selectedItem,\n setSelectedItem,\n setHoverItem,\n searchTerm,\n servufeatureLayer,\n csvResult,\n mapView,\n setDistanceFilter\n}: ServiceComponentProps) => {\n const [isRecentItemView, setIsRecentItemView] = useState(false);\n const highlightOnHover = (item: any) => {\n if (item.Address !== \"Online\") setHoverItem(item);\n };\n\n return (\n
\n
\n \n {\n setSelectedItem(undefined);\n setSelectedCategory(undefined);\n setIsRecentItemView(false);\n zoomToLayer(servufeatureLayer, mapView);\n setDistanceFilter(0);\n mapView.popup.close();\n }\n }\n >\n \n \n
\n
\n {(selectedItem || selectedCategory || isRecentItemView) && (\n \n selectedItem\n ? setSelectedItem(undefined)\n : selectedCategory\n ? setSelectedCategory(undefined)\n : isRecentItemView\n ? setIsRecentItemView(false)\n : undefined\n }\n >\n \n Go Back{\" \"}\n \n )}\n
\n\n {selectedItem ? (\n getDirections(selectedItem)}\n />\n ) : selectedCategory ? (\n \n ) : isRecentItemView ? (\n \n ) : (\n \n )}\n
\n );\n};\n","import React, { useEffect } from 'react';\nimport { Modal } from 'semantic-ui-react';\nimport { loadModules } from \"esri-loader\";\n\ninterface SearchModalProps {\n openSearch: any;\n setOpenSearch: Function;\n searchTerm: Function;\n setTrack: Function;\n}\n\nlet search: any;\n\nexport const SearchModal = ({openSearch, setOpenSearch, searchTerm, setTrack}: SearchModalProps) => {\n\n useEffect(()=>{\n loadModules(\n [ \"esri/widgets/Search\", \"esri/tasks/Locator\" ],\n { css: true }\n ).then(([Search, Locator]) => {\n search = new Search({\n container: 'search-container',\n iconClass: 'none',\n includeDefaultSources: false,\n sources: [{\n locator: new Locator({ url: \"https://geocode.arcgis.com/arcgis/rest/services/World/GeocodeServer\" }),\n singleLineFieldName: \"SingleLine\",\n countryCode: \"AUS\",\n name: \"ArcGIS Australia Geocoding Service\",\n placeholder: \"My Location\",\n }]\n });\n\n search.on(\"search-complete\", (result: any) => {\n let searchText;\n if(result.searchTerm === '' && result.results[0].results.length > 0) {\n searchText = result.results[0].results[0].name;\n setTrack(true);\n } \n else if (result.searchTerm === '') return;\n else searchText = result.searchTerm;\n searchTerm(searchText);\n setOpenSearch(false);\n })\n })\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [openSearch])\n\n return (\n setOpenSearch(false)}\n open={openSearch}\n className='search-modal'\n >\n Enter Search Location\n \n
\n
\n \n )\n}\n","import { useRef, useEffect } from 'react';\n\nexport const useIsMount = () => {\n const isMountRef = useRef(true);\n useEffect(() => {\n isMountRef.current = false;\n }, []);\n \n return isMountRef.current;\n};\n\nexport const sleep = (ms: number) => {\n return new Promise(resolve => setTimeout(resolve, ms));\n}","import React, { useEffect, useState } from \"react\";\nimport HeaderComponent from \"./Header.component\";\nimport { MapComponent } from \"./Map.component\";\nimport Recommend from './Recommend.component';\nimport GeneralMessage from \"./GeneralMessage.component\";\nimport ProfileModal from \"./ProfileModal.component\";\nimport CookieConsent from \"react-cookie-consent\";\nimport Cookies from \"universal-cookie\";\n\nexport const HomeComponent = () => {\n const [cookieAccepted, setCookieAccepted] = useState(false);\n\n useEffect(() => {\n const cookies = new Cookies();\n let isCookieAccepted = cookies.get(\"CookieConsent\");\n console.log({ isCookieAccepted });\n if (isCookieAccepted) {\n setCookieAccepted(true);\n }\n }, []);\n\n return (\n
\n
\n \n \n {cookieAccepted && }\n
\n setCookieAccepted(true)}\n expires={30}\n >\n This website uses cookies to enhance the user experience.{\" \"}\n \n
\n );\n};\n","import React, { useState } from 'react'\nimport styled from 'styled-components'\nimport { getSearchLocation } from '../../actions/mapHelper'\nimport { ServiceSearch } from '../../containers/ServiceSearch'\n\ninterface MobileHeaderComponentProps {\n title: any;\n setMenuVisible: Function;\n setSearchSelectedItem: Function;\n setMainLocation: Function;\n handleMenuClick:Function;\n}\n\nconst BannerContainer = styled.div`\n display:flex;\n background-color: #002060;\n width: 100%;\n align-items: center;\n margin: auto;\n height: 7vh;\n`\n\nconst MobileHeaderComponent = ({ title, setMenuVisible, setSearchSelectedItem, setMainLocation,handleMenuClick }: MobileHeaderComponentProps) => {\n const [showSearch, setShowSearch] = useState(false);\n\n const onSearch = async (searchtext: String) => {\n await getSearchLocation(searchtext);\n }\n\n const homeView = () => {\n setSearchSelectedItem(undefined);\n handleMenuClick(\"Services and Support\");\n };\n\n return (\n \n \n setMenuVisible(true)} />\n homeView()}/>\n

{title}

\n setShowSearch(show => !show)} />\n \n {showSearch && { setSearchSelectedItem(item); setShowSearch(false); }} searchTerm={onSearch} isMobile={true} />}\n
\n\n )\n}\n\nexport default MobileHeaderComponent;\n","import React, {useState, useEffect, useRef} from \"react\";\nimport {Segment, Sidebar, Button, Modal} from \"semantic-ui-react\";\n//import {FilterBar} from \"./MobileFilterBar.component\";\nimport {sleep, useIsMount} from \"../../actions/generalHelper\";\nimport {ServiceItem} from \"../../containers/ServiceItem\";\nimport {\n loadDirectionLayer,\n loadFeatureLayer,\n loadMap,\n loadMapSearch,\n getDirections,\n getGeoResults,\n filterLayerView,\n getMapZoom\n} from \"../../actions/mapHelper\";\nimport {\n getOnlineData,\n getOnlineResults\n} from \"../../actions/dataHelper\";\nimport {onItemSelect, getMilitaryStatus} from '../../actions/searchActions';\nimport {CategoryResultsViewMobile} from \"../../containers/mobile/CategoryResultsViewMobile\";\nimport * as turf from '@turf/turf';\n\ninterface MobileMapComponentProps {\n selectedCategory: any;\n searchText: any;\n setOpenSearch: Function;\n selectedItem: any;\n setSelectedItem: Function;\n selectedItemRef: any;\n recentVisible: any;\n onlineSelected: any;\n myLocation: any;\n setMyLocation: Function;\n inPersonClicked: any;\n}\n\nlet arcGISMap: any;\nlet mapView: any;\nlet search: any;\nlet servufeatureLayer: any;\nlet directionsLayer: any;\nlet popup: any;\n\nconst MobileMapComponent = ({\n selectedCategory,\n searchText,\n setOpenSearch,\n selectedItem,\n setSelectedItem,\n selectedItemRef,\n recentVisible,\n onlineSelected,\n myLocation,\n setMyLocation,\n inPersonClicked,\n }: MobileMapComponentProps) => {\n const [distanceFilter, setDistanceFilter] = useState(0);\n const [directionsVisible, setDirectionsVisible] = useState(false);\n const [buttonVisible, setButtonVisible] = useState(false);\n const [mapUpdates, setMapUpdates] = useState(0);\n const mapRef = useRef(null);\n const isMount = useIsMount();\n const militaryStatus = getMilitaryStatus();\n const [onlineResults, setOnlineResults] = useState([]);\n const [geoResults, setGeoResults] = useState([]);\n const [featureLayerView, setFeatureLayerView] = useState();\n const [zoomInToNearest, setZoomInToNearest] = useState(false);\n const [showZoomOutModal, setShowZoomOutModal] = useState(false);\n const [canShowZoomOutModal, setCanShowZoomOutModal] = useState(true);\n\n useEffect(() => {\n initialLoad();\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n const initialLoad = async () => {\n ({arcGISMap, mapView} = await loadMap(mapRef));\n ({servufeatureLayer} = await loadFeatureLayer({\n arcGISMap,\n mapView,\n isMobile: true,\n setMapUpdates,\n setFeatureLayerView\n }));\n ({directionsLayer} = await loadDirectionLayer(arcGISMap, mapView, true));\n search = await loadMapSearch({\n mapView,\n selectedItemRef,\n setMyLocation,\n getDirections: (geometry: any) =>\n getDirections({\n to: geometry,\n isMobile: true,\n directionsLayer,\n search,\n mapView,\n featurePopup: popup,\n setOpenSearch,\n setDirectionsVisible,\n setButtonVisible,\n }),\n isMobile: true,\n });\n };\n\n const onFilterLayerView = async (isCategoryChange: boolean = false, isMobile: boolean = true) => {\n await filterLayerView({\n isCategoryChange,\n isMobile,\n selectedItem,\n featureLayerView,\n getPopupData,\n onItemSelect,\n selectedCategory,\n directionsLayer,\n search,\n myLocation,\n distanceFilter,\n militaryStatus\n });\n };\n\n const usePrevious = (value: any) => {\n const ref = useRef();\n useEffect(() => {\n ref.current = value;\n });\n return ref.current;\n }\n const prevFeatureLayerView = usePrevious(featureLayerView);\n\n useEffect(() => {\n setZoomInToNearest(false);\n if (featureLayerView) {\n onFilterLayerView(true);\n if (!prevFeatureLayerView) {\n sleep(250).then(() => mapView.goTo({center: myLocation, zoom: 10}));\n }\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [selectedCategory, featureLayerView]);\n\n useEffect(() => {\n if (!featureLayerView || featureLayerView.isUpdating() || !selectedCategory) return;\n featureLayerView.queryFeatureCount().then((featureCount: any) => {\n if (featureCount === 0) {\n setShowZoomOutModal(true);\n } else if (!zoomInToNearest) {\n setZoomInToNearest(true);\n featureLayerView.queryFeaturesJSON().then((json: any) => {\n const points = json.features.map((f: any) => [f.geometry.x, f.geometry.y]);\n const cen = turf.centroid(turf.points(points));\n sleep(250).then(() => mapView.goTo({center: cen, zoom: 10}));\n }).catch((e: any) => console.log(e));\n }\n }).catch((e: any) => console.log(e));\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [featureLayerView, mapUpdates, selectedCategory, featureLayerView?.isUpdating()]);\n\n useEffect(() => {\n filterGeoResults();\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [mapUpdates, selectedCategory]);\n\n useEffect(() => {\n if (onlineSelected) {\n fetchOnlineData();\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [onlineSelected]);\n\n useEffect(() => {\n if (selectedCategory && inPersonClicked) setCanShowZoomOutModal(false);\n }, [selectedCategory, inPersonClicked]);\n\n const filterGeoResults = async () => {\n if (!selectedItem && selectedCategory) {\n try {\n const geoResults = await getGeoResults({featureLayerView, servufeatureLayer, myLocation});\n setGeoResults(geoResults);\n } catch (e) {\n console.log(e);\n }\n }\n };\n\n const fetchOnlineData = async () => {\n const csvResult = await getOnlineData();\n const militaryStatus = getMilitaryStatus();\n const onlineResults = await getOnlineResults({selectedCategory, csvResult, militaryStatus});\n setOnlineResults(onlineResults);\n }\n\n useEffect(() => {\n if (myLocation && !selectedItem && inPersonClicked) {\n onFilterLayerView();\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [myLocation]);\n\n useEffect(() => {\n if (!isMount) {\n if (!myLocation) setOpenSearch(true);\n else {\n onFilterLayerView();\n sleep(500).then(() => mapView.goTo({\n center: myLocation,\n zoom: getMapZoom(distanceFilter),\n }));\n }\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [distanceFilter]);\n\n useEffect(() => {\n if (search) search.search(searchText);\n }, [searchText]);\n\n useEffect(() => {\n if (!isMount) {\n onFilterLayerView();\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [selectedItem]);\n\n useEffect(() => {\n if (!isMount) {\n // setDistanceFilter(20); removed by shane\n if (myLocation) {\n mapView.goTo({\n center: myLocation,\n zoom: 10,\n });\n }\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [inPersonClicked]);\n\n function getPopupData(selectedItem: any) {\n popup = mapView.popup;\n \n let ph = selectedItem.Phone;\n let py = selectedItem.PhonePretty;\n let phoner = \"\";\n if (selectedItem.PhonePretty == \"No Number Provided\")\n {\n phoner = '

Phone: No Number Provided

' + \n \"Specialises in:\" +\n \"

\" +\n selectedItem.Specialises;\n }\n else\n {\n phoner = \"

\" +\n '

Phone: ' + py + '

' +\n \"Specialises in:\" +\n \"

\" +\n selectedItem.Specialises;\n //let samp = 'mynum';\n } \n \n mapView.when(function () {\n popup.open({\n title: selectedItem.OrgName,\n content: `
${selectedItem.Address}
${selectedItem.Website}`\n + \n phoner,\n location: selectedItem.geometry,\n dockEnabled: true,\n });\n mapView.goTo({\n center: selectedItem.geometry,\n zoom: 11,\n });\n });\n }\n\n const renderMap = () => {\n return (\n \n {!recentVisible\n //&& \n \n }\n
\n \n );\n }\n\n const onWarningModalClose = () => {\n setShowZoomOutModal(false);\n setCanShowZoomOutModal(false);\n };\n\n return (\n
\n {renderMap()}\n {!directionsVisible && selectedItem && !recentVisible\n &&
\n {\n setSelectedItem(undefined);\n setButtonVisible(false);\n }}>\n \n Go Back\n
}\n\n \n No service providers in the immediate area\n \n

Please zoom out to see the closest providers.

\n
\n \n \n \n \n\n {buttonVisible && directionsVisible && setDirectionsVisible(true)}\n >\n \n Directions\n }\n\n \n setDirectionsVisible(false)}\n visible={directionsVisible}\n >\n \n
\n \n \n \n {selectedItem\n ? \n getDirections({\n to: selectedItem.geometry,\n isMobile: true,\n directionsLayer,\n myLocation,\n search,\n mapView,\n featurePopup: popup,\n setOpenSearch,\n setDirectionsVisible,\n setButtonVisible,\n })\n }\n />\n :\n }\n\n \n \n \n
\n );\n};\n\nexport default MobileMapComponent;\n","import React from \"react\";\nimport { List } from \"semantic-ui-react\";\nimport { storeSearchHistory } from \"../../actions/searchActions\";\nimport {gaProviderInfo} from '../../actions/gaevents';\n\ninterface ServiceListItemMobileProps {\n item: any;\n setSelectedItem: Function;\n}\n\nexport const ServiceListItemMobile = ({\n item,\n setSelectedItem,\n}: ServiceListItemMobileProps) => {\n const { Address: address, OrgName: orgName } = item;\n const isOnline = address === \"Online\";\n return (\n {\n setSelectedItem(item);\n storeSearchHistory(item);\n gaProviderInfo(orgName);\n }}\n className=\"location-list\"\n >\n \n \n
\n {orgName}\n
\n \n
\n \n );\n};\n","import React, { useEffect, useState } from \"react\";\nimport { List } from \"semantic-ui-react\";\nimport { ServiceListItemMobile } from \"./ServiceListItemMobile\";\nimport {gaMobileFilter} from '../../actions/gaevents';\n\ninterface CategoryResultsViewMobileProps {\n onlineResults: any[];\n geoResults: any[];\n setSelectedItem: Function;\n showOnlineResults: boolean;\n}\n\nexport const CategoryResultsViewMobile = ({\n onlineResults,\n geoResults,\n setSelectedItem,\n showOnlineResults\n}: CategoryResultsViewMobileProps) => {\n const [resultsToShow, setResultsToShow] = useState([]);\n\n useEffect(() => {\n if (showOnlineResults) {\n setResultsToShow(onlineResults);\n gaMobileFilter(true);\n } else {\n //already sorted\n setResultsToShow(geoResults);\n gaMobileFilter(false);\n\n }\n }, [showOnlineResults, onlineResults, geoResults]);\n\n return (\n \n {resultsToShow.map((org) =>\n \n )}\n \n );\n};\n","import React, { useEffect, useState } from \"react\";\nimport { List, Button, Divider } from \"semantic-ui-react\";\nimport { loadRecentItems, loadFavourites } from \"../../actions/dataHelper\";\nimport { ServiceListItemMobile } from \"./ServiceListItemMobile\";\nimport {gaRecentlyVisitedFilterClicked,gaFavouriteFilterClicked} from '../../actions/gaevents';\n\ninterface RecentItemsAndFavouritesViewMobileProps {\n setSelectedItem: Function;\n}\n\nexport const RecentItemsAndFavouritesViewMobile = ({\n setSelectedItem,\n}: RecentItemsAndFavouritesViewMobileProps) => {\n const [visited, setVisited] = useState([]);\n const [favourites, setFavourites] = useState([]);\n const [showRecentlyVisited, setShowRecentlyVisited] = useState(true);\n const [showFavourites, setShowFavourites] = useState(false);\n\n useEffect(() => {\n loadRecentItems(setVisited, undefined);\n loadFavourites(setFavourites, undefined);\n }, []);\n\n\n const RecentClicked = () => {\n setShowRecentlyVisited(!showRecentlyVisited);\n gaRecentlyVisitedFilterClicked(showRecentlyVisited,showFavourites);\n\n }\n \n \n const FavouritesClicked = () => {\n setShowFavourites(!showFavourites);\n gaFavouriteFilterClicked(showFavourites,showRecentlyVisited);\n\n }\n\n\n\n\n return (\n
\n \n \n \n Recently Visited\n \n \n Favourites\n \n \n\n \n \n {showRecentlyVisited\n ? visited\n .sort(function (a, b) {\n return a.clickedTime > b.clickedTime ? -1 : 1;\n })\n .map((org) => (\n \n ))\n : showFavourites\n ? favourites.map((org) => (\n \n ))\n : \"\"}\n \n \n
\n );\n};\n\n","import React from 'react'\nimport { Segment } from \"semantic-ui-react\";\nimport { RecentItemsAndFavouritesViewMobile } from '../../containers/mobile/RecentItemsAndFavouritesViewMobile';\n\ninterface MobileRecentComponentProps {\n setSelectedItem: Function;\n setRecentVisible: Function;\n}\n\nconst MobileRecentComponent = ({ setRecentVisible, setSelectedItem }: MobileRecentComponentProps) => {\n return (\n
\n
\n setRecentVisible(false)} />\n

Favourites/ Recently Visited

\n
\n \n \n \n
\n )\n}\n\nexport default MobileRecentComponent;","import React from \"react\";\nimport { Button } from \"semantic-ui-react\";\nimport styled from \"styled-components\";\n\nconst PContainer = styled.p`\n font-weight: bold;\n font-size: 3.7vw;\n width: 100%;\n`;\n\nconst ServiceIcon = styled.img`\n width: 13vw;\n height: 13vw;\n /*background: linear-gradient(45deg, #002060, #aaaaaa);*/\n`;\n\ninterface CategoryItemMobileProps {\n displayName: String;\n onClick: any;\n icon: any;\n}\n\nexport const CategoryItemMobile = ({\n displayName,\n onClick,\n icon,\n}: CategoryItemMobileProps) => {\n return (\n
\n \n {displayName}\n
\n );\n};\n","import React, { useState } from \"react\";\nimport { Grid, Image, Button, Icon } from \"semantic-ui-react\";\n\nconst MobileSupportContact = () => {\n const [clickedOpenArms, setClickedOpenArms] = useState(false);\n const [clickedLifeLine, setClickedLifeLine] = useState(false);\n const [clickedRespect, setClickedRespect] = useState(false);\n\n\n return (\n
\n \n \n \n
\n \n setClickedLifeLine(true)}\n href={clickedLifeLine ? \"tel:131114\" : undefined}\n >\n \n {clickedLifeLine ? \"131114\" : \"CALL NOW\"}\n \n
\n
\n \n
\n \n setClickedOpenArms(true)}\n href={clickedOpenArms ? \"tel:1800011046\" : undefined}\n >\n \n {clickedOpenArms ? \"1800011046\" : \"CALL NOW\"}\n \n
\n
\n \n
\n \n setClickedRespect(true)}\n href={clickedRespect ? \"tel:1800011046\" : undefined}\n >\n \n {clickedRespect ? \"1800737732\" : \"CALL NOW\"}\n \n
\n
\n
\n
\n
\n );\n};\n\nexport default MobileSupportContact;\n","import React from \"react\";\nimport categories from \"../../configs/categories.json\";\nimport { CategoryItemMobile } from \"./CategoryItemMobile\";\nimport MobileSupportContact from \"../../components/mobile/MobileSupportContact.component\";\nimport {gaCategoryInfo} from '../../actions/gaevents';\n\ninterface CategoryListViewMobileProps {\n serviceClick: Function;\n setIsRecentItemView: Function;\n}\n\nexport const CategoryListViewMobile = ({\n serviceClick,\n setIsRecentItemView,\n}: CategoryListViewMobileProps) => {\n\n return (\n
\n {categories.map(\n ({ category, icon, displayName }: any) => (\n {\n serviceClick(category);\n gaCategoryInfo(category);\n }}\n key={category}\n />\n )\n )}\n setIsRecentItemView(true)}\n />\n \n
\n );\n};\n","import React, { useEffect, useState } from 'react';\nimport { Sidebar, Segment, Menu, Modal } from 'semantic-ui-react';\nimport MobileMapComponent from './MobileMap.component';\nimport { SearchModal } from '../SearchModal.component';\nimport MobileRecentComponent from './MobileRecent.component';\nimport { CategoryListViewMobile } from '../../containers/mobile/CategoryListViewMobile';\nimport categories from \"../../configs/categories.json\";\n\nconst MobileServiceComponent = ({ searchSelectedItem, mainLocation }: any) => {\n const [selectedCategory, setSelectedCategory] = useState('');\n const [recentVisible, setRecentVisible] = useState(false);\n const [visible, setVisible] = useState(false);\n const [openSearch, setOpenSearch] = useState(false);\n const [onlineSelected, setOnlineSelected] = useState(false);\n const [showMap, setShowMap] = useState(false);\n const [searchText, setSearchText] = useState('');\n const [inPersonClicked, setInPersonClicked] = useState(false);\n const [myLocation, setMyLocation] = useState();\n const [selectedItem, _setSelectedItem] = useState();\n const selectedItemRef = React.useRef(selectedItem);\n const setSelectedItem = (data: any) => {\n selectedItemRef.current = data;\n _setSelectedItem(data);\n };\n\n useEffect(() => {\n if (searchSelectedItem) {\n setSelectedItem(searchSelectedItem);\n }\n }, [searchSelectedItem]);\n\n useEffect(() => {\n if (mainLocation) {\n setMyLocation(mainLocation);\n }\n }, [mainLocation]);\n\n const renderServiceResult = () => {\n return (\n \n \n
\n \n {!recentVisible &&

{categories.find((i) => i.category === selectedCategory)?.displayName || \"\"}

}\n
\n \n console.log('setTrack')} />\n
\n
\n );\n }\n\n const renderSearchSelection = () => {\n return (\n setVisible(false)}\n open={visible}\n >\n \n In-Person\n Online\n \n \n );\n }\n\n const handleInPersonClick = () => {\n setVisible(false);\n setInPersonClicked(true);\n if(searchText) {\n setShowMap(true);\n } else setOpenSearch(true);\n }\n\n const handleOnlineClick = () => {\n setVisible(false);\n setOnlineSelected(true);\n setShowMap(true);\n }\n\n const serviceClick = (service: string) => {\n setSelectedCategory(service);\n setVisible(true);\n }\n\n const handleBackClick = () => {\n setSelectedCategory('');\n setOnlineSelected(false);\n setSelectedItem(undefined);\n setInPersonClicked(false);\n setShowMap(false);\n }\n\n const searchTerm = (searchText: any) => {\n setSearchText(searchText);\n setShowMap(true);\n }\n\n return (\n
\n {renderSearchSelection()}\n {renderServiceResult()}\n {!showMap && !selectedItem &&\n \n {recentVisible\n ? \n : }\n \n }\n
\n );\n};\n\nexport default MobileServiceComponent;\n","import React from \"react\";\nimport \"semantic-ui-css/semantic.min.css\";\nimport Mobile from 'is-mobile';\nimport { Button } from \"semantic-ui-react\";\n\nconst PrivacyPage = ({handleMenuClick}:any) => {\n\n return (\n
\n

\n PRIVACY COMMITMENT\n

\n

\n Servulink Pty Ltd ACN 634 691 197 and its Associated Entities as defined in the Corporations Act\n (Cth) 2001 ("we", "our" or "us"), recognize the trust you are placing in us through your dealings with\n us, including in applying for a position with us. We do everything we can to maintain that trust. This\n is our personal standard. Under law, your rights to privacy are also protected. Privacy laws place\n strict requirements on us to treat certain information collected as confidential, to store your\n information securely and to allow you easy access to check and correct your information.\n

\n

\n SCOPE OF OUR PRIVACY POLICY\n

\n

\n Our Privacy Policy explains how we collect information about you and how we may store,\n maintain and use that information.\n

\n

\n WHAT INFORMATION DO WE COLLECT DURING APPLICATION USE?\n

\n

\n Servulink does not collect your personally identifiable information. \n We may collect the following Application user information from you:\n

\n
    \n
  • your device location, searched locations, search queries, and service provider selections.
  • \n
\n

\n WHY DO WE COLLECT THIS INFORMATION?\n

\n

\n We use the collected information for the purpose of building a more intuitive application into the\n future, linking users up with service providers based on search history and preferences. We also use the collected\n information to report back to the service providers regarding the types of users searching for their services.\n

\n

\n DO WE SHARE INFORMATION WITH THIRD PARTIES?\n

\n

\n We may disclose user information we hold to our service provider contacts for the purpose of assessing\n their services performance, and improving their service delivery. If you are a user who feels uncomfortable with this information sharing\n you may turn off the logging of cookies on your device.\n

\n

\n Where applicable information is shared with these third parties, they are obliged to observe the\n confidential nature of such information and are prohibited from using any or all of this information\n other than for the purpose for which it was provided. We will also disclose information to a law\n enforcement agency if we are requested to do so by that agency in relation to suspected unlawful\n activity. We may also disclose user information as part of a visa application process or where\n required to do so by law.\n

\n \n

\n We do not sell or trade personal information.\n

\n \n

\n GOOGLE ANALYTICS\n

\n

\n We use Google Analytics to monitor and analyze the use of our App. Google Analytics is a web analytics service \n offered by Google that tracks and reports website/app traffic. Google uses the data collected to track and monitor the use of our App. \n This data is shared with other Google services. Google may use the collected data to contextualize and personalize the ads of its own advertising network.\n

\n

\n For more information on the privacy practices of Google, please visit the Google Privacy & Terms web page: https://policies.google.com/privacy.\n You can opt-out of having made your activity on the App available to Google Analytics by installing the Google Analytics opt-out browser add-on. \n The add-on prevents the Google Analytics JavaScript (ga.js, analytics.js, and dc.js) from sharing information with Google Analytics about visits activity.\n

\n\n \n

\n USER INFORMATION ACCESS\n

\n

\n If you wish to access, correct or delete any user information we hold about you, please contact\n our Privacy Manager on info@servulink.com.au.\n

\n

\n SECURITY\n

\n

\n We understand the importance of your personal information and have appropriate procedures in\n place to safeguard and secure the information we collect to prevent unauthorized access or\n disclosure, maintain data accuracy and ensure the appropriate use of information. We also take\n measures in respect of destroying or de-identifying user information that is no longer needed\n for any lawful purpose.\n

\n \n

\n GOVERNMENT ORGANISATIONS/ENTITIES\n

\n

\n We are not affiliated with or acting on behalf of any Government Organisation or Government entities.\n

\n

\n We are not affiliated with or acting on behalf of any of the service providers listed on our App.\n

\n \n \n

\n PRIVACY COMPLAINTS\n

\n

\n If you believe that our organisation has breached your privacy rights in any way, or you would like to\n discuss any issues about our privacy policy please contact our Privacy Manager on\n info@servulink.com.au\n

\n

\n All such enquiries or complaints will be taken seriously and handled with impartiality and discretion.\n If you have complained about something which the relevant privacy laws cover, we will thoroughly\n investigate all aspects of your complaint including ascertaining the relevant facts and what your\n expectations are for any resolution. During our investigation we may need to seek further\n information from you as to the nature of or factual circumstances surrounding your complaint.\n

\n

\n We will endeavour to respond to you at all times promptly and to offer a practical solution which is\n consistent with our legal obligations. \n

\n\n {Mobile() ? \n
\n handleMenuClick(\"Services and Support\")}\n positive\n className={\"ui right floated button\"}\n >\n {\"Go Back\"}\n \n
\n : null}\n
\n );\n};\n\nexport default PrivacyPage\n","import React from \"react\";\nimport \"semantic-ui-css/semantic.min.css\";\nimport Mobile from 'is-mobile';\nimport { Button } from \"semantic-ui-react\";\n\nconst DisclaimerPage = ({handleMenuClick}:any) => {\n\n return (\n
\n {Mobile() ? null :

Disclaimer

}\n

\n The content of this website is provided for information and communication purposes only. While care is\n taken to ensure the information is accurate and reliable, Servulink makes no warranty, either express or\n implied, concerning the suitability, reliability, availability, timeliness or accuracy of the content of this\n website for any purpose. By accessing this website you acknowledge and agree that you will not rely on the\n information contained in the website and that Servulink will not be liable for the information provided on this\n website or incorporated into it by reference or for the use of such information. Information is provided on\n the basis that all persons accessing the site are solely responsible for assessing the relevance and\n accuracy of its content. Content may not be free from errors, omissions or inconsistencies. It is\n recommended that users exercise care with its use. No liability is accepted for any information or services\n which may appear in any other format. Servulink accepts no responsibility or liability for the condition or\n content of any information or services which may appear on any linked websites.\n

\n {Mobile() ? \n
\n handleMenuClick(\"Services and Support\")}\n positive\n className={\"ui right floated button\"}\n >\n {\"Go Back\"}\n \n
\n : null}\n
\n );\n};\n\nexport default DisclaimerPage\n","import React, { useState } from 'react'\nimport {\n Button,\n Rating,\n Form,\n TextArea,\n Radio,\n Message,\n } from \"semantic-ui-react\";\nimport { sendFeedback } from \"../../actions/searchActions\";\nimport {gaFeedbackSubmitted} from \"../../actions/gaevents\";\n\nconst MobileFeedbackComponent = ({handleMenuClick}:any) => {\n const [submitted, isSubmitted] = useState(false);\n const [rating, setRating] = useState(8);\n const [feedback, setFeedback] = useState(\"\");\n const [position,setPosition] = useState(\"I am a Veteran/Family Member\");\n\n const submitFeedback = () => {\n let historyArray: any[] = JSON.parse(\n localStorage.getItem(\"recentSearches\") || \"[]\"\n );\n let visitedPlaces: any[] = historyArray\n .sort((a, b) => (a.clickedTime > b.clickedTime ? -1 : 1))\n .map((item) => item.OrgName);\n \n if (position.includes(\"Provider\")) \n {\n gaFeedbackSubmitted(rating,feedback.length,true);\n }\n else\n {\n gaFeedbackSubmitted(rating,feedback.length,false);\n }\n \n let arrayoflines : any[] = feedback.split('\\n'); \n //console.log({ rating, position,feedback, visitedPlaces });\n sendFeedback(`${rating}/10`, position,arrayoflines, visitedPlaces);\n isSubmitted(true);\n };\n\n const onClose = () => {\n setRating(0);\n isSubmitted(false);\n setPosition(\"I am a Veteran/Family Member\");\n handleMenuClick(\"Services and Support\");\n };\n\n return (\n
\n {!submitted && (\n
\n
\n
\n

How would you rate your experience?

\n
1 10
\n setRating(e.target.value)}\n className=\"ratingSlider\"\n />\n
\n \n
\n
\n

Do you have any additional comments?

\n
(If you wish to you may leave an email address within your feedback comments)
\n
\n {\n setFeedback(e.target.value);\n }}\n />\n \n
\n \n setPosition(value)}\n />\n \n \n setPosition(value)}\n />\n \n
\n
\n
\n
\n )}\n {submitted && (\n
\n \n Thank you for your feedback\n \n
\n )}\n\n \n {submitted ? \"Close\" : \"Send\"}\n \n\n handleMenuClick(\"Services and Support\")}\n positive\n className={\"ui right floated button\"}\n >\n {\"Go Back\"}\n \n
\n );\n}\n\nexport default MobileFeedbackComponent;","import React from 'react'\nimport { Grid, Image } from 'semantic-ui-react'\nimport styled from 'styled-components'\n \n\nconst FooterContainerMobile = styled.footer` \n bottom:0; \n right:0;\n background-color: #292828;\n color: white;\n padding: 3rem 3.5rem 3rem 2.5rem;\n`\nconst LiContainer = styled.li`\n font-family: 'Courgette', cursive;\n font-size: 14px;\n color: #aaaaaa;\n margin: 1.5rem 0 0;\n list-style-type: none;\n text-align: left;\n`\nconst PContainer = styled.p`\n color: #cccccc;\n font-family: 'Heebo', sans-serif;\n font-size: 16px;\n text-align: left;\n`\n\nexport const MobileContactUs=()=> {\n return (\n \n \n \n \n \n \n Empowering veterans and their families to connect with services,\n support and community\n \n \n \n \n \n\n
\n \n \n \n\n \n \n \n\n \n \n \n\n \n \n \n \n \n \n
\n
\n
\n
\n
\n );\n};\n\n ","import React, { useEffect, useState } from 'react';\nimport '../../styles/MobileComponents.css';\nimport { Icon, Menu, Sidebar } from 'semantic-ui-react';\nimport MobileHeaderComponent from './MobileHeader.component';\nimport MobileServiceComponent from './MobileServices.component';\n//import MobileAboutMe from './MobileAboutMe.component';\nimport PrivacyPage from '../../pages/Privacy.page';\nimport DisclaimerPage from '../../pages/Disclaimer.page';\nimport MobileFeedbackComponent from './MobileFeedback.component';\nimport { MobileContactUs } from \"./MobileContactUs.component\"\nimport ProfileModal from '../ProfileModal.component';\n//import GeneralMessage from '../GeneralMessage.component';\nimport Recommend from '../Recommend.component';\nimport CookieConsent from \"react-cookie-consent\";\nimport Cookies from \"universal-cookie\";\n\nconst MENUS = {\n SERVICES_AND_SUPPORT: 'Services and Support',\n ABOUT_ME: 'About Me',\n FEEDBACK: 'Feedback',\n PRIVACY_POLICY: 'Privacy Policy',\n DISCLAIMER: 'Disclaimer',\n}\n\nexport const MobileHomeComponent = () => {\n const [title, setTitle] = useState('Services and Support');\n const [menuVisible, setMenuVisible] = useState(false);\n const [cookieAccepted, setCookieAccepted] = useState(false);\n const [searchSelectedItem, setSearchSelectedItem] = useState();\n const [mainLocation, setMainLocation] = useState();\n const [servicesKey, setServicesKey] = useState(0);\n\n const handleMenuClick = (menu: any) => {\n if (menu === MENUS.SERVICES_AND_SUPPORT && title === menu) {\n setServicesKey(key => ++key);\n }\n setTitle(menu);\n setMenuVisible(false);\n };\n\n const homeView=()=>{\n setSearchSelectedItem(undefined);\n handleMenuClick(MENUS.SERVICES_AND_SUPPORT)\n }\n\n useEffect(() => {\n const cookies = new Cookies();\n let isCookieAccepted = cookies.get(\"CookieConsent\");\n console.log({ isCookieAccepted });\n if (isCookieAccepted) {\n setCookieAccepted(true);\n }\n }, []);\n\n return (\n
\n \n setMenuVisible(false)}\n vertical\n visible={menuVisible}\n width='thin'\n >\n homeView()}>\n \n All Services\n \n \n handleMenuClick(MENUS.FEEDBACK)}>\n \n Feedback\n \n handleMenuClick(MENUS.PRIVACY_POLICY)}>\n \n Privacy Policy\n \n handleMenuClick(MENUS.DISCLAIMER)}>\n \n Disclaimer\n \n \n \n \n \n \n
\n \n {(() => {\n switch (title) {\n case MENUS.SERVICES_AND_SUPPORT:\n return (\n \n )\n case MENUS.FEEDBACK:\n return (\n \n )\n case MENUS.PRIVACY_POLICY:\n return (\n \n )\n case MENUS.DISCLAIMER:\n return (\n \n )\n }\n })()}\n
\n
\n
\n setCookieAccepted(true)}\n expires={30}\n >\n This website uses cookies to enhance the user experience.{\" \"}\n \n {cookieAccepted && }\n \n \n\n
\n );\n};\n","import React from 'react'\nimport 'semantic-ui-css/semantic.min.css'\nimport { HomeComponent } from '../components/Home.component'\nimport { MobileHomeComponent } from '../components/mobile/MobileHome.component'\nimport Mobile from 'is-mobile';\n\nclass HomePage extends React.Component {\n render() {\n return (\n
\n {Mobile() ? : }\n
\n )\n }\n}\n\nexport default HomePage","import React, { useState } from \"react\";\nimport \"./styles/App.css\";\nimport \"semantic-ui-css/semantic.min.css\";\nimport { LandingPage } from \"./pages/Landing.page\";\nimport HomePage from \"./pages/Home.page\";\nimport DisclaimerPage from \"./pages/Disclaimer.page\";\nimport PrivacyPage from \"./pages/Privacy.page\";\nimport { Switch, Route, BrowserRouter as Router } from \"react-router-dom\";\n\nconst App = () => {\n const [showLandingPage, setShowLandingPage] = useState(true);\n return (\n \n
\n \n \n \n \n showLandingPage ? (\n \n ) : (\n \n )\n }\n />\n \n
\n
\n );\n};\n\nexport default App;\n","import React from 'react';\nimport ReactDOM from 'react-dom';\nimport './styles/index.css';\nimport App from './App';\n//import * as serviceWorker from './serviceWorker';\nimport ReactGA from \"react-ga4\";\n\n//this is for testing we need to refactor this later\nReactGA.initialize( \"G-3LE9PGVM7N\");\n\nReactDOM.render(\n \n \n ,\n document.getElementById('root')\n);\n\n// If you want your app to work offline and load faster, you can change\n// unregister() to register() below. Note this comes with some pitfalls.\n// Learn more about service workers: https://bit.ly/CRA-PWA\n//serviceWorker.unregister();\n"],"sourceRoot":""}