@abcagency/hc-ui-components 1.4.8 → 1.4.11
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/components/HireControlMap.js +30 -5
- package/dist/components/HireControlMap.js.map +1 -1
- package/dist/components/containers/accordions/filter-item-container.js +2 -2
- package/dist/components/containers/accordions/filter-item-container.js.map +1 -1
- package/dist/components/containers/accordions/map-accordion-item-container.js +6 -2
- package/dist/components/containers/accordions/map-accordion-item-container.js.map +1 -1
- package/dist/components/containers/filter/filter-item-container.js +10 -10
- package/dist/components/containers/filter/filter-item-container.js.map +1 -1
- package/dist/components/containers/maps/info-window-content-container.js.map +1 -1
- package/dist/components/containers/maps/map-container.js +0 -1
- package/dist/components/containers/maps/map-container.js.map +1 -1
- package/dist/components/modules/buttons/button-group-apply.js +12 -12
- package/dist/components/modules/buttons/button-group-apply.js.map +1 -1
- package/dist/components/modules/dialogs/apply-dialog.js +4 -4
- package/dist/components/modules/dialogs/apply-dialog.js.map +1 -1
- package/dist/components/modules/list/field-mapper-desktop.js +2 -2
- package/dist/components/modules/list/field-mapper-desktop.js.map +1 -1
- package/dist/components/modules/list/field-mapper-mobile.js +8 -8
- package/dist/components/modules/list/field-mapper-mobile.js.map +1 -1
- package/dist/components/modules/list/header-item.js +1 -1
- package/dist/components/modules/list/header-item.js.map +1 -1
- package/dist/contexts/mapListContext.js +17 -15
- package/dist/contexts/mapListContext.js.map +1 -1
- package/dist/contexts/placesContext.js +7 -6
- package/dist/contexts/placesContext.js.map +1 -1
- package/dist/services/googlePlacesNearbyService.js +2 -2
- package/dist/services/googlePlacesNearbyService.js.map +1 -1
- package/dist/services/listingAggregatorService.js +7 -8
- package/dist/services/listingAggregatorService.js.map +1 -1
- package/dist/services/listingEntityService.js +3 -2
- package/dist/services/listingEntityService.js.map +1 -1
- package/dist/services/listingService.js +1 -16
- package/dist/services/listingService.js.map +1 -1
- package/dist/types/contexts/mapListContext.d.ts +1 -1
- package/dist/types/services/googlePlacesNearbyService.d.ts +1 -1
- package/dist/types/services/listingAggregatorService.d.ts +2 -2
- package/dist/types/services/listingEntityService.d.ts +2 -3
- package/dist/types/types/GetListingParams.d.ts +1 -1
- package/dist/types/types/ListingEntity.d.ts +2 -1
- package/dist/types/types/ListingFields.d.ts +4 -2
- package/dist/types/types/Listings.d.ts +0 -1
- package/dist/types/util/mapUtil.d.ts +3 -3
- package/dist/util/filterUtil.js +5 -5
- package/dist/util/filterUtil.js.map +1 -1
- package/dist/util/mapUtil.js +33 -25
- package/dist/util/mapUtil.js.map +1 -1
- package/package.json +7 -2
- package/src/components/HireControlMap.js +21 -3
- package/src/components/containers/accordions/filter-item-container.js +2 -2
- package/src/components/containers/accordions/map-accordion-item-container.js +6 -2
- package/src/components/containers/filter/filter-item-container.js +10 -10
- package/src/components/containers/maps/info-window-content-container.js +1 -1
- package/src/components/containers/maps/map-container.js +2 -1
- package/src/components/modules/buttons/button-group-apply.js +8 -8
- package/src/components/modules/dialogs/apply-dialog.js +2 -2
- package/src/components/modules/list/field-mapper-desktop.jsx +2 -2
- package/src/components/modules/list/field-mapper-mobile.jsx +8 -8
- package/src/components/modules/list/header-item.js +1 -1
- package/src/contexts/mapListContext.tsx +37 -40
- package/src/contexts/placesContext.js +6 -6
- package/src/services/googlePlacesNearbyService.ts +3 -2
- package/src/services/listingAggregatorService.ts +12 -11
- package/src/services/listingEntityService.ts +3 -3
- package/src/services/listingService.ts +1 -11
- package/src/types/GetListingParams.ts +1 -1
- package/src/types/ListingEntity.ts +2 -1
- package/src/types/ListingFields.ts +4 -2
- package/src/types/Listings.ts +0 -1
- package/src/util/filterUtil.js +6 -6
- package/src/util/mapUtil.js +48 -41
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"placesContext.js","sources":["../../src/contexts/placesContext.js"],"sourcesContent":["import React, { createContext, useContext, useEffect, useState } from 'react';\n\nimport { markerIconProps } from '~/util/mapIconUtil';\n\nimport { useMap } from '~/contexts/mapContext';\n\nimport { searchNearbyPlaces } from '~/services/googlePlacesNearbyService';\n\nconst PlacesContext = createContext();\n\nexport const usePlaces = () => useContext(PlacesContext);\n\nexport const PlacesProvider = ({ children, placeMappings, markerColors, additionalMapMarkers }) => {\n\tconst { selectedPlaces, zoom, center } = useMap();\n\tconst [poiMarkers, setPoiMarkers] = useState({ markers: [], icon: null });\n\tconst [currentCenter, setCurrentCenter] = useState(center);\n\tconst [currentZoom, setCurrentZoom] = useState(zoom);\n\tconst [placesWindow, setPlacesWindow] = useState(false);\n\tconst [selectedPlaceMarker, setSelectedPlaceMarker] = useState(null);\n\n\tconst getRadiusForZoom = () => {\n\t\tif (currentZoom >= 18) return 1000;\n\t\tif (currentZoom <= 10) return 0;\n\n\t\tlet tempZoom = Math.pow(19 - currentZoom, 4.85);\n\t\tlet radius = tempZoom;\n\t\tlet minRadius = 1500;\n\t\tlet maxRadius = 800000;\n\n\t\tif (radius < minRadius) radius = minRadius;\n\t\telse if (radius > maxRadius) radius = maxRadius;\n\n\t\treturn radius;\n\t};\n\n\tuseEffect(() => {\n\t\tif (!selectedPlaces || (!selectedPlaces.length > 0) || !center || currentZoom < 12) {\n\t\t\tsetPoiMarkers({ markers: [], icon: null });\n\t\t\treturn;\n\t\t}\n\t\tconst fetchPlaces = async () => {\n\t\t\tlet poiTypes = [];\n\t\t\tconst selectedPOICategories = selectedPlaces;\n\t\t\tselectedPOICategories.forEach(pointOfInterest => {\n\t\t\t\tpoiTypes = poiTypes.concat(placeMappings[pointOfInterest]);\n\t\t\t});\n\n\t\t\tconst radius = getRadiusForZoom();\n\t\t\tconst location = { latitude: currentCenter.lat, longitude: currentCenter.lng };\n\n\t\t\ttry {\n\t\t\t\tconst response = await searchNearbyPlaces(poiTypes, location, radius);\n\t\t\t\tconst newMarkers = response.places.map(place => {\n\t\t\t\t\tconst getParentCategory = types => {\n\t\t\t\t\t\tconst selectedTypes = selectedPOICategories.reduce((acc, category) => {\n\t\t\t\t\t\t\treturn acc.concat(placeMappings[category]);\n\t\t\t\t\t\t}, []);\n\n\t\t\t\t\t\tfor (const type of types) {\n\t\t\t\t\t\t\tif (!selectedTypes.includes(type)) continue;\n\t\t\t\t\t\t\tfor (const category in placeMappings) {\n\t\t\t\t\t\t\t\tif (placeMappings[category].includes(type)) {\n\t\t\t\t\t\t\t\t\treturn category;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\n\t\t\t\t\tconst icon = markerIconProps(markerColors.placeMarkers, getParentCategory(place.types));\n\n\t\t\t\t\treturn {\n\t\t\t\t\t\tposition: { lat: place.location.latitude, lng: place.location.longitude },\n\t\t\t\t\t\ttitle: place.displayName.text,\n\t\t\t\t\t\ticon: icon\n\t\t\t\t\t};\n\t\t\t\t});\n\t\t\t\tsetPoiMarkers({ markers: newMarkers, icon: null });\n\t\t\t} catch (error) {\n\t\t\t\tconsole.error('Failed to fetch places:', error);\n\t\t\t}\n\t\t};\n\n\t\tfetchPlaces();\n\t}, [selectedPlaces, currentZoom, currentCenter]);\n\n\treturn (\n\t\t<PlacesContext.Provider value={{\n\t\t\tpoiMarkers,\n\t\t\tsetCurrentCenter,\n\t\t\tcurrentCenter,\n\t\t\tsetCurrentZoom,\n\t\t\tcurrentZoom,\n\t\t\tplacesWindow,\n\t\t\tsetPlacesWindow,\n\t\t\tselectedPlaceMarker,\n\t\t\tsetSelectedPlaceMarker,\n\t\t\tadditionalMapMarkers\n\t\t}}>\n\t\t\t{children}\n\t\t</PlacesContext.Provider>\n\t);\n};\n"],"names":["PlacesContext","createContext","usePlaces","useContext","PlacesProvider","_ref","children","placeMappings","markerColors","additionalMapMarkers","_useMap","useMap","selectedPlaces","zoom","center","_useState","useState","markers","icon","_useState2","_slicedToArray","poiMarkers","setPoiMarkers","_useState3","_useState4","currentCenter","setCurrentCenter","_useState5","_useState6","currentZoom","setCurrentZoom","_useState7","_useState8","placesWindow","setPlacesWindow","_useState9","_useState10","selectedPlaceMarker","setSelectedPlaceMarker","getRadiusForZoom","tempZoom","Math","pow","radius","minRadius","maxRadius","useEffect","length","fetchPlaces","_ref2","_asyncToGenerator","_regeneratorRuntime","mark","_callee","poiTypes","selectedPOICategories","location","response","newMarkers","wrap","_callee$","_context","prev","next","forEach","pointOfInterest","concat","latitude","lat","longitude","lng","searchNearbyPlaces","sent","places","map","place","getParentCategory","types","selectedTypes","reduce","acc","category","_iterator","_createForOfIteratorHelper","_step","s","n","done","type","value","includes","err","e","f","markerIconProps","placeMarkers","position","title","displayName","text","t0","console","error","stop","apply","arguments","React","createElement","Provider"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"placesContext.js","sources":["../../src/contexts/placesContext.js"],"sourcesContent":["import React, { createContext, useContext, useEffect, useState, useCallback } from 'react';\n\nimport { markerIconProps } from '~/util/mapIconUtil';\n\nimport { useMap } from '~/contexts/mapContext';\n\nimport { searchNearbyPlaces } from '~/services/googlePlacesNearbyService';\n\nconst PlacesContext = createContext();\n\nexport const usePlaces = () => useContext(PlacesContext);\n\nexport const PlacesProvider = ({ children, placeMappings, markerColors, additionalMapMarkers, googleMapsApiKey }) => {\n\tconst { selectedPlaces, zoom, center } = useMap();\n\tconst [poiMarkers, setPoiMarkers] = useState({ markers: [], icon: null });\n\tconst [currentCenter, setCurrentCenter] = useState(center);\n\tconst [currentZoom, setCurrentZoom] = useState(zoom);\n\tconst [placesWindow, setPlacesWindow] = useState(false);\n\tconst [selectedPlaceMarker, setSelectedPlaceMarker] = useState(null);\n\n\tconst getRadiusForZoom = useCallback(() => {\n\t\tif (currentZoom >= 18) return 1000;\n\t\tif (currentZoom <= 10) return 0;\n\n\t\tlet tempZoom = Math.pow(19 - currentZoom, 4.85);\n\t\tlet radius = tempZoom;\n\t\tlet minRadius = 1500;\n\t\tlet maxRadius = 800000;\n\n\t\tif (radius < minRadius) radius = minRadius;\n\t\telse if (radius > maxRadius) radius = maxRadius;\n\n\t\treturn radius;\n\t}, [currentZoom]);\n\n\tuseEffect(() => {\n\t\tif (!selectedPlaces || (!selectedPlaces.length > 0) || !center || currentZoom < 12) {\n\t\t\tsetPoiMarkers({ markers: [], icon: null });\n\t\t\treturn;\n\t\t}\n\t\tconst fetchPlaces = async () => {\n\t\t\tlet poiTypes = [];\n\t\t\tconst selectedPOICategories = selectedPlaces;\n\t\t\tselectedPOICategories.forEach(pointOfInterest => {\n\t\t\t\tpoiTypes = poiTypes.concat(placeMappings[pointOfInterest]);\n\t\t\t});\n\n\t\t\tconst radius = getRadiusForZoom();\n\t\t\tconst location = { latitude: currentCenter.lat, longitude: currentCenter.lng };\n\n\t\t\ttry {\n\t\t\t\tconst response = await searchNearbyPlaces(poiTypes, location, radius, googleMapsApiKey || process.env.GOOGLE_MAPS_API_KEY);\n\t\t\t\tconst newMarkers = response.places.map(place => {\n\t\t\t\t\tconst getParentCategory = types => {\n\t\t\t\t\t\tconst selectedTypes = selectedPOICategories.reduce((acc, category) => {\n\t\t\t\t\t\t\treturn acc.concat(placeMappings[category]);\n\t\t\t\t\t\t}, []);\n\n\t\t\t\t\t\tfor (const type of types) {\n\t\t\t\t\t\t\tif (!selectedTypes.includes(type)) continue;\n\t\t\t\t\t\t\tfor (const category in placeMappings) {\n\t\t\t\t\t\t\t\tif (placeMappings[category].includes(type)) {\n\t\t\t\t\t\t\t\t\treturn category;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\n\t\t\t\t\tconst icon = markerIconProps(markerColors.placeMarkers, getParentCategory(place.types));\n\n\t\t\t\t\treturn {\n\t\t\t\t\t\tposition: { lat: place.location.latitude, lng: place.location.longitude },\n\t\t\t\t\t\ttitle: place.displayName.text,\n\t\t\t\t\t\ticon: icon\n\t\t\t\t\t};\n\t\t\t\t});\n\t\t\t\tsetPoiMarkers({ markers: newMarkers, icon: null });\n\t\t\t} catch (error) {\n\t\t\t\tconsole.error('Failed to fetch places:', error);\n\t\t\t}\n\t\t};\n\n\t\tfetchPlaces();\n\t}, [selectedPlaces, currentZoom, currentCenter, placeMappings, markerColors.placeMarkers, googleMapsApiKey, getRadiusForZoom, center]);\n\n\treturn (\n\t\t<PlacesContext.Provider value={{\n\t\t\tpoiMarkers,\n\t\t\tsetCurrentCenter,\n\t\t\tcurrentCenter,\n\t\t\tsetCurrentZoom,\n\t\t\tcurrentZoom,\n\t\t\tplacesWindow,\n\t\t\tsetPlacesWindow,\n\t\t\tselectedPlaceMarker,\n\t\t\tsetSelectedPlaceMarker,\n\t\t\tadditionalMapMarkers\n\t\t}}>\n\t\t\t{children}\n\t\t</PlacesContext.Provider>\n\t);\n};\n"],"names":["PlacesContext","createContext","usePlaces","useContext","PlacesProvider","_ref","children","placeMappings","markerColors","additionalMapMarkers","googleMapsApiKey","_useMap","useMap","selectedPlaces","zoom","center","_useState","useState","markers","icon","_useState2","_slicedToArray","poiMarkers","setPoiMarkers","_useState3","_useState4","currentCenter","setCurrentCenter","_useState5","_useState6","currentZoom","setCurrentZoom","_useState7","_useState8","placesWindow","setPlacesWindow","_useState9","_useState10","selectedPlaceMarker","setSelectedPlaceMarker","getRadiusForZoom","useCallback","tempZoom","Math","pow","radius","minRadius","maxRadius","useEffect","length","fetchPlaces","_ref2","_asyncToGenerator","_regeneratorRuntime","mark","_callee","poiTypes","selectedPOICategories","location","response","newMarkers","wrap","_callee$","_context","prev","next","forEach","pointOfInterest","concat","latitude","lat","longitude","lng","searchNearbyPlaces","process","env","GOOGLE_MAPS_API_KEY","sent","places","map","place","getParentCategory","types","selectedTypes","reduce","acc","category","_iterator","_createForOfIteratorHelper","_step","s","n","done","type","value","includes","err","e","f","markerIconProps","placeMarkers","position","title","displayName","text","t0","console","error","stop","apply","arguments","React","createElement","Provider"],"mappings":"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"}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
const searchNearbyPlaces = async (typesArray, location, radius) => {
|
|
1
|
+
const searchNearbyPlaces = async (typesArray, location, radius, apiKey) => {
|
|
2
2
|
const url = 'https://places.googleapis.com/v1/places:searchNearby';
|
|
3
3
|
const headers = {
|
|
4
4
|
'Content-Type': 'application/json',
|
|
5
|
-
'X-Goog-Api-Key':
|
|
5
|
+
'X-Goog-Api-Key': apiKey || process.env.GOOGLE_MAPS_API_KEY,
|
|
6
6
|
'X-Goog-FieldMask': 'places.location,places.displayName,places.types'
|
|
7
7
|
};
|
|
8
8
|
const data = {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"googlePlacesNearbyService.js","sources":["../../src/services/googlePlacesNearbyService.ts"],"sourcesContent":["export interface Location {\n\tlatitude: number;\n\tlongitude: number;\n}\n\nexport const searchNearbyPlaces = async (\n\ttypesArray: string[],\n\tlocation: Location,\n\tradius: number\n): Promise<any> => {\n\tconst url = 'https://places.googleapis.com/v1/places:searchNearby';\n\tconst headers = {\n\t\t'Content-Type': 'application/json',\n\t\t'X-Goog-Api-Key': process.env.GOOGLE_MAPS_API_KEY as string,\n\t\t'X-Goog-FieldMask': 'places.location,places.displayName,places.types'\n\t};\n\tconst data = {\n\t\tincludedTypes: typesArray,\n\t\tmaxResultCount: 20,\n\t\tlocationRestriction: {\n\t\t\tcircle: {\n\t\t\t\tcenter: location,\n\t\t\t\tradius: radius\n\t\t\t}\n\t\t}\n\t};\n\n\ttry {\n\t\tconst response = await fetch(url, {\n\t\t\tmethod: 'POST',\n\t\t\theaders: headers,\n\t\t\tbody: JSON.stringify(data)\n\t\t});\n\t\tif (!response.ok) {\n\t\t\tthrow new Error(`HTTP error! status: ${response.status}`);\n\t\t}\n\t\treturn await response.json();\n\t} catch (error) {\n\t\tconsole.error('Error making the Nearby Search request:', error);\n\t\tthrow error;\n\t}\n};\n"],"names":[],"mappings":"AAKO,MAAM,kBAAkB,GAAG,OACjC,UAAoB,EACpB,QAAkB,EAClB,MAAc,
|
|
1
|
+
{"version":3,"file":"googlePlacesNearbyService.js","sources":["../../src/services/googlePlacesNearbyService.ts"],"sourcesContent":["export interface Location {\n\tlatitude: number;\n\tlongitude: number;\n}\n\nexport const searchNearbyPlaces = async (\n\ttypesArray: string[],\n\tlocation: Location,\n\tradius: number,\n\tapiKey?: string\n): Promise<any> => {\n\tconst url = 'https://places.googleapis.com/v1/places:searchNearby';\n\tconst headers = {\n\t\t'Content-Type': 'application/json',\n\t\t'X-Goog-Api-Key': apiKey || (process.env.GOOGLE_MAPS_API_KEY as string),\n\t\t'X-Goog-FieldMask': 'places.location,places.displayName,places.types'\n\t};\n\tconst data = {\n\t\tincludedTypes: typesArray,\n\t\tmaxResultCount: 20,\n\t\tlocationRestriction: {\n\t\t\tcircle: {\n\t\t\t\tcenter: location,\n\t\t\t\tradius: radius\n\t\t\t}\n\t\t}\n\t};\n\n\ttry {\n\t\tconst response = await fetch(url, {\n\t\t\tmethod: 'POST',\n\t\t\theaders: headers,\n\t\t\tbody: JSON.stringify(data)\n\t\t});\n\t\tif (!response.ok) {\n\t\t\tthrow new Error(`HTTP error! status: ${response.status}`);\n\t\t}\n\t\treturn await response.json();\n\t} catch (error) {\n\t\tconsole.error('Error making the Nearby Search request:', error);\n\t\tthrow error;\n\t}\n};\n"],"names":[],"mappings":"AAKO,MAAM,kBAAkB,GAAG,OACjC,UAAoB,EACpB,QAAkB,EAClB,MAAc,EACd,MAAe,KACE;IACjB,MAAM,GAAG,GAAG,sDAAsD,CAAC;AACnE,IAAA,MAAM,OAAO,GAAG;AACf,QAAA,cAAc,EAAE,kBAAkB;AAClC,QAAA,gBAAgB,EAAE,MAAM,IAAK,OAAO,CAAC,GAAG,CAAC,mBAA8B;AACvE,QAAA,kBAAkB,EAAE,iDAAiD;KACrE,CAAC;AACF,IAAA,MAAM,IAAI,GAAG;AACZ,QAAA,aAAa,EAAE,UAAU;AACzB,QAAA,cAAc,EAAE,EAAE;AAClB,QAAA,mBAAmB,EAAE;AACpB,YAAA,MAAM,EAAE;AACP,gBAAA,MAAM,EAAE,QAAQ;AAChB,gBAAA,MAAM,EAAE,MAAM;AACd,aAAA;AACD,SAAA;KACD,CAAC;IAEF,IAAI;AACH,QAAA,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,EAAE;AACjC,YAAA,MAAM,EAAE,MAAM;AACd,YAAA,OAAO,EAAE,OAAO;AAChB,YAAA,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC;AAC1B,SAAA,CAAC,CAAC;AACH,QAAA,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE;YACjB,MAAM,IAAI,KAAK,CAAC,CAAA,oBAAA,EAAuB,QAAQ,CAAC,MAAM,CAAE,CAAA,CAAC,CAAC;AAC1D,SAAA;AACD,QAAA,OAAO,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;AAC7B,KAAA;AAAC,IAAA,OAAO,KAAK,EAAE;AACf,QAAA,OAAO,CAAC,KAAK,CAAC,yCAAyC,EAAE,KAAK,CAAC,CAAC;AAChE,QAAA,MAAM,KAAK,CAAC;AACZ,KAAA;AACF;;;;"}
|
|
@@ -5,16 +5,15 @@ import { getDistinctItemsByProximity } from '../util/mapUtil.js';
|
|
|
5
5
|
const fetchListings = async (commuteLocation = null, entities, listings, getListingEntitiesCallback) => {
|
|
6
6
|
try {
|
|
7
7
|
const listingsResult = listings && listings.length > 0 ? listings : await getListings();
|
|
8
|
-
const distinctEntityIds = [
|
|
9
|
-
...new Set(listingsResult.map(listing => listing.entityId))
|
|
10
|
-
];
|
|
11
8
|
const fetchedEntities = !commuteLocation
|
|
12
|
-
? entities && entities.length > 0 ? entities : !getListingEntitiesCallback ? await getListingEntities(
|
|
13
|
-
: !getListingEntitiesCallback ? await getListingEntities(
|
|
9
|
+
? entities && entities.length > 0 ? entities : !getListingEntitiesCallback ? await getListingEntities() : await getListingEntitiesCallback()
|
|
10
|
+
: !getListingEntitiesCallback ? await getListingEntities(`${commuteLocation.lat}, ${commuteLocation.lng}`) : await getListingEntitiesCallback(`${commuteLocation.lat}, ${commuteLocation.lng}`);
|
|
11
|
+
const entitiesByKey = fetchedEntities;
|
|
14
12
|
for (let i = 0; i < listingsResult.length; i++) {
|
|
15
13
|
const listing = listingsResult[i];
|
|
16
|
-
if (listing.
|
|
17
|
-
const entity =
|
|
14
|
+
if (listing.fields && listing.fields.entityKey && listing.fields.entityKey !== '' && listing.fields) {
|
|
15
|
+
const entity = entitiesByKey[listing.fields.entityKey];
|
|
16
|
+
console.log("Entity for listing with travel time", listing.fields.entityKey, entity);
|
|
18
17
|
if (entity) {
|
|
19
18
|
listing.fields.travelTime = entity.travelTime;
|
|
20
19
|
}
|
|
@@ -23,7 +22,7 @@ const fetchListings = async (commuteLocation = null, entities, listings, getList
|
|
|
23
22
|
const distinctItems = getDistinctItemsByProximity(listingsResult, fetchedEntities);
|
|
24
23
|
return {
|
|
25
24
|
listingsResult,
|
|
26
|
-
|
|
25
|
+
entitiesByKey,
|
|
27
26
|
distinctItems
|
|
28
27
|
};
|
|
29
28
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"listingAggregatorService.js","sources":["../../src/services/listingAggregatorService.ts"],"sourcesContent":["import { getListings } from '~/services/listingService';\nimport { getListingEntities } from '~/services/listingEntityService';\nimport { getDistinctItemsByProximity } from '~/util/mapUtil';\nimport { Listing } from '~/types/Listings';\nimport { ListingEntity } from '~/types/ListingEntity';\n\ninterface FetchListingsResult {\n listingsResult: Listing[];\n
|
|
1
|
+
{"version":3,"file":"listingAggregatorService.js","sources":["../../src/services/listingAggregatorService.ts"],"sourcesContent":["import { getListings } from '~/services/listingService';\nimport { getListingEntities } from '~/services/listingEntityService';\nimport { getDistinctItemsByProximity } from '~/util/mapUtil';\nimport { Listing } from '~/types/Listings';\nimport { ListingEntity } from '~/types/ListingEntity';\n\ninterface FetchListingsResult {\n listingsResult: Listing[];\n entitiesByKey: Record<string, ListingEntity>;\n\n distinctItems: any; // Update this type based on the return type of getDistinctItemsByProximity\n}\n\nconst fetchListings = async (\n\tcommuteLocation: any | null = null,\n\tentities: ListingEntity[] | null,\n\tlistings: Listing[] | null,\n\tgetListingEntitiesCallback?: (origin?: string) => Promise<ListingEntity[]>,\n): Promise<FetchListingsResult> => {\n\ttry {\n\t\tconst listingsResult = listings && listings.length > 0 ? listings : await getListings();\n\n\t\tconst fetchedEntities = !commuteLocation\n\t\t\t? entities && entities.length > 0 ? entities : !getListingEntitiesCallback ? await getListingEntities() : await getListingEntitiesCallback()\n\t\t\t: !getListingEntitiesCallback ? await getListingEntities(\n\n\t\t\t\t`${commuteLocation.lat}, ${commuteLocation.lng}`\n\t\t\t) : await getListingEntitiesCallback(\n\t\t\t\t`${commuteLocation.lat}, ${commuteLocation.lng}`);\n\t\t\t\t const entitiesByKey = fetchedEntities;\n\t\tfor (let i = 0; i < listingsResult.length; i++) {\n\t\t\tconst listing = listingsResult[i];\n\t\t\t\t\t\tif (listing.fields && listing.fields.entityKey && listing.fields.entityKey !== '' && listing.fields) {\n\t\t\t\tconst entity = entitiesByKey[listing.fields.entityKey];\n\t\t\t\tconsole.log(\"Entity for listing with travel time\", listing.fields.entityKey, entity);\n\n\t\t\t\tif (entity) {\n\t\t\t\t\tlisting.fields.travelTime = entity.travelTime;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tconst distinctItems = getDistinctItemsByProximity(\n\t\t\tlistingsResult,\n\t\t\tfetchedEntities\n\t\t);\n\n\t\treturn {\n\t\t\tlistingsResult,\n\t\t\tentitiesByKey,\n\t\t\tdistinctItems\n\t\t};\n\t} catch (error) {\n\t\tconsole.error(\"Error fetching listings:\", error);\n\t\tthrow error;\n\t}\n};\n\nexport default fetchListings;\n"],"names":[],"mappings":";;;;AAaA,MAAM,aAAa,GAAG,OACrB,eAA8B,GAAA,IAAI,EAClC,QAAgC,EAChC,QAA0B,EAC1B,0BAA0E,KACzC;IACjC,IAAI;AACH,QAAA,MAAM,cAAc,GAAG,QAAQ,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,GAAG,QAAQ,GAAG,MAAM,WAAW,EAAE,CAAC;QAExF,MAAM,eAAe,GAAG,CAAC,eAAe;AACvC,cAAE,QAAQ,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,GAAG,QAAQ,GAAG,CAAC,0BAA0B,GAAG,MAAM,kBAAkB,EAAE,GAAG,MAAM,0BAA0B,EAAE;AAC5I,cAAE,CAAC,0BAA0B,GAAG,MAAM,kBAAkB,CAEvD,GAAG,eAAe,CAAC,GAAG,CAAA,EAAA,EAAK,eAAe,CAAC,GAAG,CAAE,CAAA,CAChD,GAAG,MAAM,0BAA0B,CACnC,CAAG,EAAA,eAAe,CAAC,GAAG,KAAK,eAAe,CAAC,GAAG,CAAA,CAAE,CAAC,CAAC;QAC1C,MAAM,aAAa,GAAG,eAAe,CAAC;AAChD,QAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,cAAc,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AAC/C,YAAA,MAAM,OAAO,GAAG,cAAc,CAAC,CAAC,CAAC,CAAC;YAC/B,IAAI,OAAO,CAAC,MAAM,IAAI,OAAO,CAAC,MAAM,CAAC,SAAS,IAAI,OAAO,CAAC,MAAM,CAAC,SAAS,KAAK,EAAE,IAAI,OAAO,CAAC,MAAM,EAAE;gBACvG,MAAM,MAAM,GAAG,aAAa,CAAC,OAAO,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;AACvD,gBAAA,OAAO,CAAC,GAAG,CAAC,qCAAqC,EAAE,OAAO,CAAC,MAAM,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;AAErF,gBAAA,IAAI,MAAM,EAAE;oBACX,OAAO,CAAC,MAAM,CAAC,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC;AAC9C,iBAAA;AACD,aAAA;AACD,SAAA;QAED,MAAM,aAAa,GAAG,2BAA2B,CAChD,cAAc,EACd,eAAe,CACf,CAAC;QAEF,OAAO;YACN,cAAc;YACd,aAAa;YACb,aAAa;SACb,CAAC;AACF,KAAA;AAAC,IAAA,OAAO,KAAK,EAAE;AACf,QAAA,OAAO,CAAC,KAAK,CAAC,0BAA0B,EAAE,KAAK,CAAC,CAAC;AACjD,QAAA,MAAM,KAAK,CAAC;AACZ,KAAA;AACF;;;;"}
|
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
import api from '../apis/hcApi.js';
|
|
2
2
|
|
|
3
|
-
const getListingEntities = async (
|
|
3
|
+
const getListingEntities = async (origin = '') => {
|
|
4
4
|
try {
|
|
5
|
-
|
|
5
|
+
//need to update / or add better endpoint fo this to match original functioanlity
|
|
6
|
+
const response = await api.get(`/listingentities/MapEntities?origin=${origin}`);
|
|
6
7
|
return response;
|
|
7
8
|
}
|
|
8
9
|
catch (error) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"listingEntityService.js","sources":["../../src/services/listingEntityService.ts"],"sourcesContent":["import api from '~/apis/hcApi';\
|
|
1
|
+
{"version":3,"file":"listingEntityService.js","sources":["../../src/services/listingEntityService.ts"],"sourcesContent":["import api from '~/apis/hcApi';\n\nexport const getListingEntities = async (origin = ''): Promise<any> => {\n\ttry {\n\t\t//need to update / or add better endpoint fo this to match original functioanlity\n\t\tconst response = await api.get<any>(`/listingentities/MapEntities?origin=${origin}`);\n\t\treturn response;\n\t} catch (error) {\n\t\tconsole.error(\"Error fetching listing entities:\", error);\n\t\tthrow error;\n\t}\n};\n\nexport default {\n\tgetListingEntities\n};\n"],"names":[],"mappings":";;AAEa,MAAA,kBAAkB,GAAG,OAAO,MAAM,GAAG,EAAE,KAAkB;IACrE,IAAI;;QAEH,MAAM,QAAQ,GAAG,MAAM,GAAG,CAAC,GAAG,CAAM,CAAuC,oCAAA,EAAA,MAAM,CAAE,CAAA,CAAC,CAAC;AACrF,QAAA,OAAO,QAAQ,CAAC;AAChB,KAAA;AAAC,IAAA,OAAO,KAAK,EAAE;AACf,QAAA,OAAO,CAAC,KAAK,CAAC,kCAAkC,EAAE,KAAK,CAAC,CAAC;AACzD,QAAA,MAAM,KAAK,CAAC;AACZ,KAAA;AACF;;;;"}
|
|
@@ -2,22 +2,7 @@ import api from '../apis/hcApi.js';
|
|
|
2
2
|
|
|
3
3
|
const getListings = async (params) => {
|
|
4
4
|
try {
|
|
5
|
-
const
|
|
6
|
-
if (params) {
|
|
7
|
-
if (params.location)
|
|
8
|
-
params.location.forEach(loc => query.append('location', loc));
|
|
9
|
-
if (params.category)
|
|
10
|
-
params.category.forEach(cat => query.append('category', cat));
|
|
11
|
-
if (params.categoryClass)
|
|
12
|
-
params.categoryClass.forEach(catClass => query.append('categoryClass', catClass));
|
|
13
|
-
if (params.education)
|
|
14
|
-
params.education.forEach(edu => query.append('education', edu));
|
|
15
|
-
if (params.city)
|
|
16
|
-
params.city.forEach(cty => query.append('city', cty));
|
|
17
|
-
if (params.state)
|
|
18
|
-
params.state.forEach(st => query.append('state', st));
|
|
19
|
-
}
|
|
20
|
-
const response = await api.get(`/Listings?${query.toString()}`);
|
|
5
|
+
const response = await api.get(`/joblistings/maplistings`);
|
|
21
6
|
return response;
|
|
22
7
|
}
|
|
23
8
|
catch (error) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"listingService.js","sources":["../../src/services/listingService.ts"],"sourcesContent":["// listingService.ts\nimport { GetListingsParams } from '~/types/GetListingParams';\nimport api from '../apis/hcApi';\nimport { Listing } from '../types/Listings';\n\nexport const getListings = async (params?: GetListingsParams): Promise<Listing[]> => {\n\ttry {\n\t\tconst
|
|
1
|
+
{"version":3,"file":"listingService.js","sources":["../../src/services/listingService.ts"],"sourcesContent":["// listingService.ts\nimport { GetListingsParams } from '~/types/GetListingParams';\nimport api from '../apis/hcApi';\nimport { Listing } from '../types/Listings';\n\nexport const getListings = async (params?: GetListingsParams): Promise<Listing[]> => {\n\ttry {\n\t\tconst response = await api.get(`/joblistings/maplistings`);\n\n\t\treturn response as Listing[];\n\t} catch (error) {\n\t\tconsole.error(error);\n\t\tthrow error;\n\t}\n};\n\nexport const getListingDetails = async (listingId: string) => {\n\ttry {\n\t\tconst response = await api.get(`/ListingDetails/${listingId}`);\n\t\treturn response;\n\t} catch (error) {\n\t\tconsole.error(error);\n\t\tthrow error;\n\t}\n};\n\nexport default {\n\tgetListings,\n\tgetListingDetails\n};\n"],"names":[],"mappings":";;MAKa,WAAW,GAAG,OAAO,MAA0B,KAAwB;IACnF,IAAI;QACH,MAAM,QAAQ,GAAG,MAAM,GAAG,CAAC,GAAG,CAAC,CAA0B,wBAAA,CAAA,CAAC,CAAC;AAE3D,QAAA,OAAO,QAAqB,CAAC;AAC7B,KAAA;AAAC,IAAA,OAAO,KAAK,EAAE;AACf,QAAA,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;AACrB,QAAA,MAAM,KAAK,CAAC;AACZ,KAAA;AACF;;;;"}
|
|
@@ -73,7 +73,7 @@ interface MapListProviderProps {
|
|
|
73
73
|
defaultFilters?: Record<string, any>;
|
|
74
74
|
containerStyle?: any;
|
|
75
75
|
localStorageKey: string;
|
|
76
|
-
getListingEntitiesCallback?: (
|
|
76
|
+
getListingEntitiesCallback?: (origin?: string) => Promise<any>;
|
|
77
77
|
ExpandListComponent?: React.ComponentType<{
|
|
78
78
|
listing: Listing;
|
|
79
79
|
}> | ((listing: Listing) => JSX.Element) | null;
|
|
@@ -2,4 +2,4 @@ export interface Location {
|
|
|
2
2
|
latitude: number;
|
|
3
3
|
longitude: number;
|
|
4
4
|
}
|
|
5
|
-
export declare const searchNearbyPlaces: (typesArray: string[], location: Location, radius: number) => Promise<any>;
|
|
5
|
+
export declare const searchNearbyPlaces: (typesArray: string[], location: Location, radius: number, apiKey?: string) => Promise<any>;
|
|
@@ -2,8 +2,8 @@ import { Listing } from '~/types/Listings';
|
|
|
2
2
|
import { ListingEntity } from '~/types/ListingEntity';
|
|
3
3
|
interface FetchListingsResult {
|
|
4
4
|
listingsResult: Listing[];
|
|
5
|
-
|
|
5
|
+
entitiesByKey: Record<string, ListingEntity>;
|
|
6
6
|
distinctItems: any;
|
|
7
7
|
}
|
|
8
|
-
declare const fetchListings: (commuteLocation: any | null, entities: ListingEntity[] | null, listings: Listing[] | null, getListingEntitiesCallback?: ((
|
|
8
|
+
declare const fetchListings: (commuteLocation: any | null, entities: ListingEntity[] | null, listings: Listing[] | null, getListingEntitiesCallback?: ((origin?: string) => Promise<ListingEntity[]>) | undefined) => Promise<FetchListingsResult>;
|
|
9
9
|
export default fetchListings;
|
|
@@ -1,6 +1,5 @@
|
|
|
1
|
-
|
|
2
|
-
export declare const getListingEntities: (entityIds: number[], origin?: string) => Promise<ListingEntity[]>;
|
|
1
|
+
export declare const getListingEntities: (origin?: string) => Promise<any>;
|
|
3
2
|
declare const _default: {
|
|
4
|
-
getListingEntities: (
|
|
3
|
+
getListingEntities: (origin?: string) => Promise<any>;
|
|
5
4
|
};
|
|
6
5
|
export default _default;
|
|
@@ -2,9 +2,10 @@ export type ListingFields = {
|
|
|
2
2
|
posted?: string;
|
|
3
3
|
subTitle?: string;
|
|
4
4
|
education?: string;
|
|
5
|
-
|
|
5
|
+
title?: string;
|
|
6
6
|
category?: string;
|
|
7
|
-
|
|
7
|
+
subCategory?: string;
|
|
8
|
+
applyUrl?: string;
|
|
8
9
|
shift?: string;
|
|
9
10
|
custom1?: string;
|
|
10
11
|
custom2?: string;
|
|
@@ -22,5 +23,6 @@ export type ListingFields = {
|
|
|
22
23
|
useClientJobUrl?: boolean;
|
|
23
24
|
dateCreated: Date;
|
|
24
25
|
dateLastEdited?: Date;
|
|
26
|
+
entityKey: string;
|
|
25
27
|
travelTime?: string;
|
|
26
28
|
};
|
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
export function getDistinctItemsByProximity(items: any,
|
|
2
|
-
export function findCloseItems(
|
|
1
|
+
export function getDistinctItemsByProximity(items: any, listingEntitiesDetailsInput: any): any[];
|
|
2
|
+
export function findCloseItems(entitiesByKey: any): {
|
|
3
3
|
item1: any;
|
|
4
4
|
item2: any;
|
|
5
5
|
}[];
|
|
6
|
-
export function adjustItemPositions(
|
|
6
|
+
export function adjustItemPositions(entitiesByKey: any, closeItemPairs: any): any;
|
|
7
7
|
export function clusterOptions(clusterGridSize: any, fillColor: any): {
|
|
8
8
|
gridSize: any;
|
|
9
9
|
maxZoom: number;
|
package/dist/util/filterUtil.js
CHANGED
|
@@ -91,18 +91,18 @@ var generateFilterOptions = function generateFilterOptions(filteredListings, all
|
|
|
91
91
|
return filter.id === fieldName;
|
|
92
92
|
});
|
|
93
93
|
}
|
|
94
|
-
if (fieldName == '
|
|
94
|
+
if (fieldName == 'category') {
|
|
95
95
|
return {
|
|
96
96
|
id: fieldName,
|
|
97
97
|
title: siteConfig.fieldNames[fieldName],
|
|
98
98
|
items: getFilterOptions(allListings, allListings, fieldName)
|
|
99
99
|
};
|
|
100
100
|
}
|
|
101
|
-
if (fieldName == '
|
|
102
|
-
var
|
|
101
|
+
if (fieldName == 'subCategory' && selectedFilters.category) {
|
|
102
|
+
var categoryKeys = Object.keys(selectedFilters.category);
|
|
103
103
|
var _filteredListings = allListings.filter(function (x) {
|
|
104
104
|
var _x$fields;
|
|
105
|
-
return
|
|
105
|
+
return categoryKeys.includes((_x$fields = x.fields) === null || _x$fields === void 0 ? void 0 : _x$fields.category);
|
|
106
106
|
});
|
|
107
107
|
return {
|
|
108
108
|
id: fieldName,
|
|
@@ -264,7 +264,7 @@ var applyFilters = function applyFilters(allListings, selectedFilters, query, li
|
|
|
264
264
|
};
|
|
265
265
|
};
|
|
266
266
|
function searchResults(results, query) {
|
|
267
|
-
var fields = ['id', 'uniqueId', 'fields.posted', 'fields.subtitle', 'fields.education', 'fields.
|
|
267
|
+
var fields = ['id', 'uniqueId', 'fields.posted', 'fields.subtitle', 'fields.education', 'fields.title', 'fields.category', 'fields.subCategory', 'fields.shift', 'fields.citystate', 'fields.city', 'fields.state', 'fields.schedule', 'fields.customflag1', 'fields.bonus', 'fields.remote', 'fields.useclientjoburl', 'fields.datecreated', 'fields.datelastedited'];
|
|
268
268
|
var options = {
|
|
269
269
|
includeScore: true,
|
|
270
270
|
threshold: 0.3,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"filterUtil.js","sources":["../../src/util/filterUtil.js"],"sourcesContent":["/* eslint-disable no-undef */\nimport { getDistinctItemsByProximity } from '~/util/mapUtil';\n\nimport Fuse from 'fuse.js';\n\nexport const getFilterOptions = (listings, filteredListings, field, excludeZeroCount = null) => {\n\tconst options = new Set();\n\tlistings.forEach(listing => {\n\t\tif (listing.fields[field]) {\n\t\t\toptions.add(listing.fields[field]);\n\t\t}\n\t});\n\n\tconst optionCounts = {};\n\toptions.forEach(option => {\n\t\toptionCounts[option] = 0;\n\t});\n\n\tfilteredListings.forEach(listing => {\n\t\tconst value = listing.fields[field];\n\t\tif (value && optionCounts.hasOwnProperty(value)) {\n\t\t\toptionCounts[value] += 1;\n\t\t}\n\t});\n\n\treturn Array.from(options)\n\t\t.sort()\n\t\t.map(option => ({\n\t\t\tname: option,\n\t\t\tcount: optionCounts[option] || 0\n\t\t}))\n\t\t.filter(option => !(excludeZeroCount === true && option.count === 0));\n};\n\nexport const getSpecialFeatureOptions = (listings, filteredListings, siteConfig, favorites) => {\n\tconst specialFeatures = siteConfig.specialFeatures;\n\tconst featureCounts = Object.keys(specialFeatures).sort().reduce((acc, key) => {\n\t\tacc[specialFeatures[key]] = 0;\n\t\treturn acc;\n\t}, {});\n\n\tfilteredListings.forEach(listing => {\n\t\tObject.entries(specialFeatures).forEach(([featureKey, featureName]) => {\n\t\t\tif (listing.fields[featureKey] == 1) {\n\t\t\t\tfeatureCounts[featureName] += 1;\n\t\t\t}\n\t\t});\n\t});\n\n\tconst specialFeatureOptions = Object.entries(featureCounts).map(([name, count]) => ({\n\t\tname,\n\t\tcount\n\t}));\n\n\tfor (let option of specialFeatureOptions) {\n\t\tif (option.name === 'Favorite') {\n\t\t\toption.count = filteredListings.filter(x => favorites.includes(x.id)).length;\n\t\t}\n\t}\n\n\treturn specialFeatureOptions;\n};\n\nconst getPointsOfInterestOptions = pointsOfInterestNames => {\n\treturn Object.entries(pointsOfInterestNames).sort().map(([key, name]) => ({\n\t\tkey,\n\t\tname\n\t}));\n};\n\nexport const generateFilterOptions = (\n\tfilteredListings,\n\tallListings,\n\tsiteConfig,\n\tfilterOptions,\n\tparentField,\n\tfavorites,\n\tselectedFilters\n) => {\n\tif (allListings.length > 0) {\n\t\tconst dynamicFilters = siteConfig.fieldFiltersShown.map(fieldName => {\n\t\t\tif (fieldName === parentField && filterOptions?.filters) {\n\t\t\t\treturn filterOptions.filters.find(filter => filter.id === fieldName);\n\t\t\t}\n\t\t\tif(fieldName == 'categoryClass'){\n\t\t\t\treturn {\n\t\t\t\t\tid: fieldName,\n\t\t\t\t\ttitle: siteConfig.fieldNames[fieldName],\n\t\t\t\t\titems: getFilterOptions(allListings, allListings, fieldName)\n\t\t\t\t};\n\t\t\t}\n\t\t\tif(fieldName == 'category' && selectedFilters.categoryClass){\n\t\t\t\tconst categoryClassKeys = Object.keys(selectedFilters.categoryClass);\n\t\t\t\tconst filteredListings = allListings.filter(\n\t\t\t\t\tx => categoryClassKeys.includes(x.fields?.categoryClass)\n\t\t\t\t);\n\t\t\t\treturn {\n\t\t\t\t\tid: fieldName,\n\t\t\t\t\ttitle: siteConfig.fieldNames[fieldName],\n\t\t\t\t\titems: getFilterOptions(allListings, filteredListings, fieldName, false)\n\t\t\t\t};\n\t\t\t}\n\t\t\tif (fieldName == \"specialFeatures\") {\n\t\t\t\treturn {\n\t\t\t\t\tid: fieldName,\n\t\t\t\t\ttitle: siteConfig.fieldNames[fieldName],\n\t\t\t\t\titems: getSpecialFeatureOptions(allListings, filteredListings, siteConfig, favorites).sort()\n\t\t\t\t};\n\t\t\t}\n\t\t\treturn {\n\t\t\t\tid: fieldName,\n\t\t\t\ttitle: siteConfig.fieldNames[fieldName],\n\t\t\t\titems: getFilterOptions(allListings, filteredListings, fieldName)\n\t\t\t};\n\t\t});\n\n\t\tconst locations =\n\t\t\tsiteConfig.locationFiltersShown.map((fieldName, index) => {\n\t\t\t\tlet locationFilteredListings = allListings;\n\t\t\t\tlocationFilteredListings = allListings.filter(listing => {\n\t\t\t\t\treturn Object.entries(selectedFilters).every(([key, value]) => {\n\t\t\t\t\t\tif (siteConfig.locationFiltersShown.includes(key)) return true;\n\t\t\t\t\t\tif (value && typeof value === 'object' && value[listing.fields[key]] === true) {\n\t\t\t\t\t\t\treturn true;\n\t\t\t\t\t\t}\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t});\n\t\t\t\t});\n\t\t\t\tif (index === 0) {\n\t\t\t\t\treturn {\n\t\t\t\t\t\tid: fieldName,\n\t\t\t\t\t\ttitle: siteConfig.fieldNames[fieldName],\n\t\t\t\t\t\titems: getFilterOptions(allListings, locationFilteredListings, fieldName, true)\n\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t\t if (fieldName === 'entityName' && filterOptions?.locations) {\n\t\t\t\t\tconst cityIncluded = siteConfig.locationFiltersShown.includes('city');\n\t\t\t\t\tconst stateIncluded = siteConfig.locationFiltersShown.includes('state');\n\t\t\t\t\tconst cityStateIncluded = siteConfig.locationFiltersShown.includes('cityState');\n\t\t\t\t\tconst uniqueCities = cityIncluded ? [...new Set(filteredListings.map(listing => listing.fields.city))] : [];\n\t\t\t\t\tconst uniqueStates = stateIncluded ? [...new Set(filteredListings.map(listing => listing.fields.state))] : [];\n\t\t\t\t\tconst uniqueCityStates = cityStateIncluded ? [...new Set(filteredListings.map(listing => listing.fields.cityState))] : [];\n\t\t\t\t\tconst filteredByLocation = locationFilteredListings.filter(listing => {\n\t\t\t\t\t\tconst cityMatches = cityIncluded ? uniqueCities.includes(listing.fields.city) : true;\n\t\t\t\t\t\tconst stateMatches = stateIncluded ? uniqueStates.includes(listing.fields.state) : true;\n\t\t\t\t\t\tconst cityStateMatches = cityStateIncluded ? uniqueCityStates.includes(listing.fields.cityState) : true;\n\t\t\t\t\t\treturn cityMatches && stateMatches && cityStateMatches;\n\t\t\t\t\t});\n\t\t\t\t\treturn {\n\t\t\t\t\t\tid: fieldName,\n\t\t\t\t\t\ttitle: siteConfig.fieldNames[fieldName],\n\t\t\t\t\t\titems: getFilterOptions(allListings, filteredByLocation, fieldName, true)\n\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t\tif (fieldName === 'city') {\n\t\t\t\t\tif (siteConfig.locationFiltersShown.includes('state') && selectedFilters.state) {\n\t\t\t\t\t\tconst selectedStates = Object.keys(selectedFilters.state).filter(\n\t\t\t\t\t\t\tstate => selectedFilters.state[state] === true\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\tconst filteredByLocation = locationFilteredListings.filter(listing =>\n\t\t\t\t\t\t\tselectedStates.includes(listing.fields.state)\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\tid: fieldName,\n\t\t\t\t\t\t\ttitle: siteConfig.fieldNames[fieldName],\n\t\t\t\t\t\t\titems: getFilterOptions(allListings, filteredByLocation, fieldName, true)\n\t\t\t\t\t\t};\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn {\n\t\t\t\t\tid: fieldName,\n\t\t\t\t\ttitle: siteConfig.fieldNames[fieldName],\n\t\t\t\t\titems: getFilterOptions(allListings, filteredListings, fieldName, true)\n\t\t\t\t};\n\t\t\t});\n\n\t\tconst pointsOfInterest = {\n\t\t\tid: \"pointsOfInterest\",\n\t\t\ttitle: siteConfig.pointsOfInterestConfig.title,\n\t\t\titems: getPointsOfInterestOptions(\n\t\t\t\tsiteConfig.pointsOfInterestConfig.pointsOfInterestNames\n\t\t\t)\n\t\t};\n\n\t\treturn {\n\t\t\tfilters: dynamicFilters,\n\t\t\tlocations: locations,\n\t\t\tpointsOfInterest: pointsOfInterest\n\t\t};\n\t}\n\n\treturn null;\n};\n\nexport const applyFilters = (\n\tallListings,\n\tselectedFilters,\n\tquery,\n\tlistingEntities,\n\tfavorites,\n\tsiteConfig\n) => {\n\tlet results = allListings;\n\tlet invertedSpecialFeaturesMap;\n\tif (siteConfig.specialFeatures) {\n\t\tinvertedSpecialFeaturesMap = Object.entries(siteConfig.specialFeatures).reduce((acc, [key, value]) => {\n\t\t\tacc[value] = key;\n\t\t\treturn acc;\n\t\t}, {});\n\n\t}\n\tconst hasFavorite = !!selectedFilters.specialFeatures && !!selectedFilters.specialFeatures.Favorite;\n\n\tif (hasFavorite && selectedFilters.specialFeatures.Favorite == true) {\n\t\tresults = results.filter(x => favorites.includes(x.id));\n\t}\n\tvar favorite;\n\tif (hasFavorite) {\n\t\tfavorite = selectedFilters.specialFeatures.Favorite;\n\t\tdelete selectedFilters.specialFeatures.Favorite;\n\t}\n\tfor (const [field, filterItems] of Object.entries(selectedFilters)) {\n\t\tconst formattedField = field;\n\t\tif (field === \"pointsOfInterest\") continue;\n\t\tif (field === \"specialFeatures\" && invertedSpecialFeaturesMap && Object.keys(filterItems).length > 0) {\n\t\t\tresults = results.filter(listing => {\n\t\t\t\treturn Object.entries(filterItems).some(([filterName, filterValue]) => {\n\t\t\t\t\tconst listingFieldName = invertedSpecialFeaturesMap[filterName];\n\t\t\t\t\treturn filterValue && listing.fields[listingFieldName] == 1;\n\t\t\t\t});\n\t\t\t});\n\t\t} else if (Object.keys(filterItems).length > 0) {\n\t\t\tresults = results.filter(listing =>\n\t\t\t\tfilterItems.hasOwnProperty(listing.fields[formattedField])\n\t\t\t);\n\t\t}\n\t}\n\tif (query) {\n\t\tresults = searchResults(results, query);\n\t}\n\tconst distinctItems = getDistinctItemsByProximity(results, listingEntities);\n\tif (hasFavorite) {\n\t\tselectedFilters.specialFeatures.Favorite = favorite;\n\t}\n\treturn { filteredListings: results, mapItems: distinctItems };\n};\n\nfunction searchResults(results, query) {\n\tconst fields = [\n\t\t'id',\n\t\t'uniqueId',\n\t\t'fields.posted',\n\t\t'fields.subtitle',\n\t\t'fields.education',\n\t\t'fields.position',\n\t\t'fields.category',\n\t\t'fields.categoryclass',\n\t\t'fields.shift',\n\t\t'fields.citystate',\n\t\t'fields.city',\n\t\t'fields.state',\n\t\t'fields.schedule',\n\t\t'fields.customflag1',\n\t\t'fields.bonus',\n\t\t'fields.remote',\n\t\t'fields.useclientjoburl',\n\t\t'fields.datecreated',\n\t\t'fields.datelastedited'\n\t];\n\n\tconst options = {\n\t\tincludeScore: true,\n\t\tthreshold: 0.3,\n\t\tkeys: fields\n\t};\n\n\tconst fuse = new Fuse(results, options);\n\tconst lowerCaseQuery = query.toLowerCase();\n\tconst queryTerms = lowerCaseQuery.split(' ');\n\n\tconst exactIdMatch = results.find(result => result.id.toString() === query || result.uniqueId === query);\n\tif (exactIdMatch) {\n\t\treturn [exactIdMatch];\n\t}\n\n\tconst fuseQuery = queryTerms.map(term => ({\n\t\t$or: fields.map(field => ({ [field]: term }))\n\t}));\n\n\tconst fuseResults = fuse.search({ $and: fuseQuery });\n\n\treturn fuseResults.map(result => result.item);\n}\n\nexport const filterListingsByLocation = (\n\tallListings,\n\tselectedLocation,\n\tlistingEntities\n) => {\n\tlet results = allListings;\n\tif (selectedLocation !== null) {\n\t\tresults = results.filter(item =>\n\t\t\tselectedLocation.items.hasOwnProperty(item.id)\n\t\t);\n\t}\n\tconst mapItems = getDistinctItemsByProximity(results, listingEntities);\n\treturn { filteredListings: results, mapItems: mapItems };\n};\n"],"names":["getFilterOptions","listings","filteredListings","field","excludeZeroCount","arguments","length","undefined","options","Set","forEach","listing","fields","add","optionCounts","option","value","hasOwnProperty","Array","from","sort","map","name","count","filter","getSpecialFeatureOptions","siteConfig","favorites","specialFeatures","featureCounts","Object","keys","reduce","acc","key","entries","_ref","_ref2","_slicedToArray","featureKey","featureName","specialFeatureOptions","_ref3","_ref4","_iterator","_createForOfIteratorHelper","_step","s","n","done","x","includes","id","err","e","f","getPointsOfInterestOptions","pointsOfInterestNames","_ref5","_ref6","generateFilterOptions","allListings","filterOptions","parentField","selectedFilters","dynamicFilters","fieldFiltersShown","fieldName","filters","find","title","fieldNames","items","categoryClass","categoryClassKeys","_x$fields","locations","locationFiltersShown","index","locationFilteredListings","every","_ref7","_ref8","_typeof","cityIncluded","stateIncluded","cityStateIncluded","uniqueCities","_toConsumableArray","city","uniqueStates","state","uniqueCityStates","cityState","filteredByLocation","cityMatches","stateMatches","cityStateMatches","selectedStates","pointsOfInterest","pointsOfInterestConfig","applyFilters","query","listingEntities","results","invertedSpecialFeaturesMap","_ref9","_ref10","hasFavorite","Favorite","favorite","_loop","_Object$entries$_i","_Object$entries","_i","filterItems","formattedField","some","_ref11","_ref12","filterName","filterValue","listingFieldName","searchResults","distinctItems","getDistinctItemsByProximity","mapItems","includeScore","threshold","fuse","Fuse","lowerCaseQuery","toLowerCase","queryTerms","split","exactIdMatch","result","toString","uniqueId","fuseQuery","term","$or","_defineProperty","fuseResults","search","$and","item","filterListingsByLocation","selectedLocation"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"filterUtil.js","sources":["../../src/util/filterUtil.js"],"sourcesContent":["/* eslint-disable no-undef */\nimport { getDistinctItemsByProximity } from '~/util/mapUtil';\n\nimport Fuse from 'fuse.js';\n\nexport const getFilterOptions = (listings, filteredListings, field, excludeZeroCount = null) => {\n\tconst options = new Set();\n\tlistings.forEach(listing => {\n\t\tif (listing.fields[field]) {\n\t\t\toptions.add(listing.fields[field]);\n\t\t}\n\t});\n\n\tconst optionCounts = {};\n\toptions.forEach(option => {\n\t\toptionCounts[option] = 0;\n\t});\n\n\tfilteredListings.forEach(listing => {\n\t\tconst value = listing.fields[field];\n\t\tif (value && optionCounts.hasOwnProperty(value)) {\n\t\t\toptionCounts[value] += 1;\n\t\t}\n\t});\n\n\treturn Array.from(options)\n\t\t.sort()\n\t\t.map(option => ({\n\t\t\tname: option,\n\t\t\tcount: optionCounts[option] || 0\n\t\t}))\n\t\t.filter(option => !(excludeZeroCount === true && option.count === 0));\n};\n\nexport const getSpecialFeatureOptions = (listings, filteredListings, siteConfig, favorites) => {\n\tconst specialFeatures = siteConfig.specialFeatures;\n\tconst featureCounts = Object.keys(specialFeatures).sort().reduce((acc, key) => {\n\t\tacc[specialFeatures[key]] = 0;\n\t\treturn acc;\n\t}, {});\n\n\tfilteredListings.forEach(listing => {\n\t\tObject.entries(specialFeatures).forEach(([featureKey, featureName]) => {\n\t\t\tif (listing.fields[featureKey] == 1) {\n\t\t\t\tfeatureCounts[featureName] += 1;\n\t\t\t}\n\t\t});\n\t});\n\n\tconst specialFeatureOptions = Object.entries(featureCounts).map(([name, count]) => ({\n\t\tname,\n\t\tcount\n\t}));\n\n\tfor (let option of specialFeatureOptions) {\n\t\tif (option.name === 'Favorite') {\n\t\t\toption.count = filteredListings.filter(x => favorites.includes(x.id)).length;\n\t\t}\n\t}\n\n\treturn specialFeatureOptions;\n};\n\nconst getPointsOfInterestOptions = pointsOfInterestNames => {\n\treturn Object.entries(pointsOfInterestNames).sort().map(([key, name]) => ({\n\t\tkey,\n\t\tname\n\t}));\n};\n\nexport const generateFilterOptions = (\n\tfilteredListings,\n\tallListings,\n\tsiteConfig,\n\tfilterOptions,\n\tparentField,\n\tfavorites,\n\tselectedFilters\n) => {\n\tif (allListings.length > 0) {\n\t\tconst dynamicFilters = siteConfig.fieldFiltersShown.map(fieldName => {\n\t\t\tif (fieldName === parentField && filterOptions?.filters) {\n\t\t\t\treturn filterOptions.filters.find(filter => filter.id === fieldName);\n\t\t\t}\n\t\t\tif(fieldName == 'category'){\n\t\t\t\treturn {\n\t\t\t\t\tid: fieldName,\n\t\t\t\t\ttitle: siteConfig.fieldNames[fieldName],\n\t\t\t\t\titems: getFilterOptions(allListings, allListings, fieldName)\n\t\t\t\t};\n\t\t\t}\n\t\t\tif(fieldName == 'subCategory' && selectedFilters.category){\n\t\t\t\tconst categoryKeys = Object.keys(selectedFilters.category);\n\t\t\t\tconst filteredListings = allListings.filter(\n\t\t\t\t\tx => categoryKeys.includes(x.fields?.category)\n\t\t\t\t);\n\t\t\t\treturn {\n\t\t\t\t\tid: fieldName,\n\t\t\t\t\ttitle: siteConfig.fieldNames[fieldName],\n\t\t\t\t\titems: getFilterOptions(allListings, filteredListings, fieldName, false)\n\t\t\t\t};\n\t\t\t}\n\t\t\tif (fieldName == \"specialFeatures\") {\n\t\t\t\treturn {\n\t\t\t\t\tid: fieldName,\n\t\t\t\t\ttitle: siteConfig.fieldNames[fieldName],\n\t\t\t\t\titems: getSpecialFeatureOptions(allListings, filteredListings, siteConfig, favorites).sort()\n\t\t\t\t};\n\t\t\t}\n\t\t\treturn {\n\t\t\t\tid: fieldName,\n\t\t\t\ttitle: siteConfig.fieldNames[fieldName],\n\t\t\t\titems: getFilterOptions(allListings, filteredListings, fieldName)\n\t\t\t};\n\t\t});\n\n\t\tconst locations =\n\t\t\tsiteConfig.locationFiltersShown.map((fieldName, index) => {\n\t\t\t\tlet locationFilteredListings = allListings;\n\t\t\t\tlocationFilteredListings = allListings.filter(listing => {\n\t\t\t\t\treturn Object.entries(selectedFilters).every(([key, value]) => {\n\t\t\t\t\t\tif (siteConfig.locationFiltersShown.includes(key)) return true;\n\t\t\t\t\t\tif (value && typeof value === 'object' && value[listing.fields[key]] === true) {\n\t\t\t\t\t\t\treturn true;\n\t\t\t\t\t\t}\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t});\n\t\t\t\t});\n\t\t\t\tif (index === 0) {\n\t\t\t\t\treturn {\n\t\t\t\t\t\tid: fieldName,\n\t\t\t\t\t\ttitle: siteConfig.fieldNames[fieldName],\n\t\t\t\t\t\titems: getFilterOptions(allListings, locationFilteredListings, fieldName, true)\n\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t\t if (fieldName === 'entityName' && filterOptions?.locations) {\n\t\t\t\t\tconst cityIncluded = siteConfig.locationFiltersShown.includes('city');\n\t\t\t\t\tconst stateIncluded = siteConfig.locationFiltersShown.includes('state');\n\t\t\t\t\tconst cityStateIncluded = siteConfig.locationFiltersShown.includes('cityState');\n\t\t\t\t\tconst uniqueCities = cityIncluded ? [...new Set(filteredListings.map(listing => listing.fields.city))] : [];\n\t\t\t\t\tconst uniqueStates = stateIncluded ? [...new Set(filteredListings.map(listing => listing.fields.state))] : [];\n\t\t\t\t\tconst uniqueCityStates = cityStateIncluded ? [...new Set(filteredListings.map(listing => listing.fields.cityState))] : [];\n\t\t\t\t\tconst filteredByLocation = locationFilteredListings.filter(listing => {\n\t\t\t\t\t\tconst cityMatches = cityIncluded ? uniqueCities.includes(listing.fields.city) : true;\n\t\t\t\t\t\tconst stateMatches = stateIncluded ? uniqueStates.includes(listing.fields.state) : true;\n\t\t\t\t\t\tconst cityStateMatches = cityStateIncluded ? uniqueCityStates.includes(listing.fields.cityState) : true;\n\t\t\t\t\t\treturn cityMatches && stateMatches && cityStateMatches;\n\t\t\t\t\t});\n\t\t\t\t\treturn {\n\t\t\t\t\t\tid: fieldName,\n\t\t\t\t\t\ttitle: siteConfig.fieldNames[fieldName],\n\t\t\t\t\t\titems: getFilterOptions(allListings, filteredByLocation, fieldName, true)\n\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t\tif (fieldName === 'city') {\n\t\t\t\t\tif (siteConfig.locationFiltersShown.includes('state') && selectedFilters.state) {\n\t\t\t\t\t\tconst selectedStates = Object.keys(selectedFilters.state).filter(\n\t\t\t\t\t\t\tstate => selectedFilters.state[state] === true\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\tconst filteredByLocation = locationFilteredListings.filter(listing =>\n\t\t\t\t\t\t\tselectedStates.includes(listing.fields.state)\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\tid: fieldName,\n\t\t\t\t\t\t\ttitle: siteConfig.fieldNames[fieldName],\n\t\t\t\t\t\t\titems: getFilterOptions(allListings, filteredByLocation, fieldName, true)\n\t\t\t\t\t\t};\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn {\n\t\t\t\t\tid: fieldName,\n\t\t\t\t\ttitle: siteConfig.fieldNames[fieldName],\n\t\t\t\t\titems: getFilterOptions(allListings, filteredListings, fieldName, true)\n\t\t\t\t};\n\t\t\t});\n\n\t\tconst pointsOfInterest = {\n\t\t\tid: \"pointsOfInterest\",\n\t\t\ttitle: siteConfig.pointsOfInterestConfig.title,\n\t\t\titems: getPointsOfInterestOptions(\n\t\t\t\tsiteConfig.pointsOfInterestConfig.pointsOfInterestNames\n\t\t\t)\n\t\t};\n\n\t\treturn {\n\t\t\tfilters: dynamicFilters,\n\t\t\tlocations: locations,\n\t\t\tpointsOfInterest: pointsOfInterest\n\t\t};\n\t}\n\n\treturn null;\n};\n\nexport const applyFilters = (\n\tallListings,\n\tselectedFilters,\n\tquery,\n\tlistingEntities,\n\tfavorites,\n\tsiteConfig\n) => {\n\tlet results = allListings;\n\tlet invertedSpecialFeaturesMap;\n\tif (siteConfig.specialFeatures) {\n\t\tinvertedSpecialFeaturesMap = Object.entries(siteConfig.specialFeatures).reduce((acc, [key, value]) => {\n\t\t\tacc[value] = key;\n\t\t\treturn acc;\n\t\t}, {});\n\n\t}\n\tconst hasFavorite = !!selectedFilters.specialFeatures && !!selectedFilters.specialFeatures.Favorite;\n\n\tif (hasFavorite && selectedFilters.specialFeatures.Favorite == true) {\n\t\tresults = results.filter(x => favorites.includes(x.id));\n\t}\n\tvar favorite;\n\tif (hasFavorite) {\n\t\tfavorite = selectedFilters.specialFeatures.Favorite;\n\t\tdelete selectedFilters.specialFeatures.Favorite;\n\t}\n\tfor (const [field, filterItems] of Object.entries(selectedFilters)) {\n\t\tconst formattedField = field;\n\t\tif (field === \"pointsOfInterest\") continue;\n\t\tif (field === \"specialFeatures\" && invertedSpecialFeaturesMap && Object.keys(filterItems).length > 0) {\n\t\t\tresults = results.filter(listing => {\n\t\t\t\treturn Object.entries(filterItems).some(([filterName, filterValue]) => {\n\t\t\t\t\tconst listingFieldName = invertedSpecialFeaturesMap[filterName];\n\t\t\t\t\treturn filterValue && listing.fields[listingFieldName] == 1;\n\t\t\t\t});\n\t\t\t});\n\t\t} else if (Object.keys(filterItems).length > 0) {\n\t\t\tresults = results.filter(listing =>\n\t\t\t\tfilterItems.hasOwnProperty(listing.fields[formattedField])\n\t\t\t);\n\t\t}\n\t}\n\tif (query) {\n\t\tresults = searchResults(results, query);\n\t}\n\tconst distinctItems = getDistinctItemsByProximity(results, listingEntities);\n\tif (hasFavorite) {\n\t\tselectedFilters.specialFeatures.Favorite = favorite;\n\t}\n\treturn { filteredListings: results, mapItems: distinctItems };\n};\n\nfunction searchResults(results, query) {\n\tconst fields = [\n\t\t'id',\n\t\t'uniqueId',\n\t\t'fields.posted',\n\t\t'fields.subtitle',\n\t\t'fields.education',\n\t\t'fields.title',\n\t\t'fields.category',\n\t\t'fields.subCategory',\n\t\t'fields.shift',\n\t\t'fields.citystate',\n\t\t'fields.city',\n\t\t'fields.state',\n\t\t'fields.schedule',\n\t\t'fields.customflag1',\n\t\t'fields.bonus',\n\t\t'fields.remote',\n\t\t'fields.useclientjoburl',\n\t\t'fields.datecreated',\n\t\t'fields.datelastedited'\n\t];\n\n\tconst options = {\n\t\tincludeScore: true,\n\t\tthreshold: 0.3,\n\t\tkeys: fields\n\t};\n\n\tconst fuse = new Fuse(results, options);\n\tconst lowerCaseQuery = query.toLowerCase();\n\tconst queryTerms = lowerCaseQuery.split(' ');\n\n\tconst exactIdMatch = results.find(result => result.id.toString() === query || result.uniqueId === query);\n\tif (exactIdMatch) {\n\t\treturn [exactIdMatch];\n\t}\n\n\tconst fuseQuery = queryTerms.map(term => ({\n\t\t$or: fields.map(field => ({ [field]: term }))\n\t}));\n\n\tconst fuseResults = fuse.search({ $and: fuseQuery });\n\n\treturn fuseResults.map(result => result.item);\n}\n\nexport const filterListingsByLocation = (\n\tallListings,\n\tselectedLocation,\n\tlistingEntities\n) => {\n\tlet results = allListings;\n\tif (selectedLocation !== null) {\n\t\tresults = results.filter(item =>\n\t\t\tselectedLocation.items.hasOwnProperty(item.id)\n\t\t);\n\t}\n\tconst mapItems = getDistinctItemsByProximity(results, listingEntities);\n\treturn { filteredListings: results, mapItems: mapItems };\n};\n"],"names":["getFilterOptions","listings","filteredListings","field","excludeZeroCount","arguments","length","undefined","options","Set","forEach","listing","fields","add","optionCounts","option","value","hasOwnProperty","Array","from","sort","map","name","count","filter","getSpecialFeatureOptions","siteConfig","favorites","specialFeatures","featureCounts","Object","keys","reduce","acc","key","entries","_ref","_ref2","_slicedToArray","featureKey","featureName","specialFeatureOptions","_ref3","_ref4","_iterator","_createForOfIteratorHelper","_step","s","n","done","x","includes","id","err","e","f","getPointsOfInterestOptions","pointsOfInterestNames","_ref5","_ref6","generateFilterOptions","allListings","filterOptions","parentField","selectedFilters","dynamicFilters","fieldFiltersShown","fieldName","filters","find","title","fieldNames","items","category","categoryKeys","_x$fields","locations","locationFiltersShown","index","locationFilteredListings","every","_ref7","_ref8","_typeof","cityIncluded","stateIncluded","cityStateIncluded","uniqueCities","_toConsumableArray","city","uniqueStates","state","uniqueCityStates","cityState","filteredByLocation","cityMatches","stateMatches","cityStateMatches","selectedStates","pointsOfInterest","pointsOfInterestConfig","applyFilters","query","listingEntities","results","invertedSpecialFeaturesMap","_ref9","_ref10","hasFavorite","Favorite","favorite","_loop","_Object$entries$_i","_Object$entries","_i","filterItems","formattedField","some","_ref11","_ref12","filterName","filterValue","listingFieldName","searchResults","distinctItems","getDistinctItemsByProximity","mapItems","includeScore","threshold","fuse","Fuse","lowerCaseQuery","toLowerCase","queryTerms","split","exactIdMatch","result","toString","uniqueId","fuseQuery","term","$or","_defineProperty","fuseResults","search","$and","item","filterListingsByLocation","selectedLocation"],"mappings":"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"}
|
package/dist/util/mapUtil.js
CHANGED
|
@@ -1,34 +1,40 @@
|
|
|
1
1
|
import { objectSpread2 as _objectSpread2, defineProperty as _defineProperty } from '../_virtual/_rollupPluginBabelHelpers.js';
|
|
2
2
|
|
|
3
|
-
var getDistinctItemsByProximity = function getDistinctItemsByProximity(items,
|
|
3
|
+
var getDistinctItemsByProximity = function getDistinctItemsByProximity(items, listingEntitiesDetailsInput) {
|
|
4
4
|
var clusters = {};
|
|
5
|
-
if (!
|
|
5
|
+
if (!listingEntitiesDetailsInput) return [];
|
|
6
|
+
var listingEntitiesDetails = Array.isArray(listingEntitiesDetailsInput) ? listingEntitiesDetailsInput.reduce(function (acc, entity) {
|
|
7
|
+
if (entity !== null && entity !== void 0 && entity.entityKey) acc[entity.entityKey] = entity;
|
|
8
|
+
return acc;
|
|
9
|
+
}, {}) : listingEntitiesDetailsInput;
|
|
6
10
|
var closeItemPairs = findCloseItems(listingEntitiesDetails);
|
|
7
11
|
if (closeItemPairs.length > 0) {
|
|
8
|
-
|
|
12
|
+
var adjusted = adjustItemPositions(listingEntitiesDetails, closeItemPairs);
|
|
13
|
+
Object.assign(listingEntitiesDetails, adjusted);
|
|
9
14
|
}
|
|
10
15
|
items === null || items === void 0 || items.forEach(function (item) {
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
16
|
+
var _item$fields;
|
|
17
|
+
var entityKey = item === null || item === void 0 || (_item$fields = item.fields) === null || _item$fields === void 0 ? void 0 : _item$fields.entityKey;
|
|
18
|
+
if (!entityKey || entityKey === '-1') return;
|
|
19
|
+
var entityDetails = listingEntitiesDetails[entityKey];
|
|
20
|
+
if (!entityDetails) {
|
|
21
|
+
console.error("Details not found for entityKey: ".concat(entityKey));
|
|
22
|
+
return;
|
|
23
|
+
}
|
|
24
|
+
item.mapDetails = entityDetails;
|
|
25
|
+
if (!clusters[entityKey]) {
|
|
26
|
+
clusters[entityKey] = _objectSpread2(_objectSpread2({}, entityDetails), {}, {
|
|
27
|
+
items: _defineProperty({}, item.id, item)
|
|
28
|
+
});
|
|
29
|
+
} else {
|
|
30
|
+
clusters[entityKey].items[item.id] = item;
|
|
25
31
|
}
|
|
26
32
|
});
|
|
27
33
|
return Object.values(clusters);
|
|
28
34
|
};
|
|
29
|
-
var findCloseItems = function findCloseItems(
|
|
35
|
+
var findCloseItems = function findCloseItems(entitiesByKey) {
|
|
30
36
|
var closeItems = [];
|
|
31
|
-
var items = Object.values(
|
|
37
|
+
var items = Object.values(entitiesByKey); // Convert object to array
|
|
32
38
|
var proximityThreshold = 0.0001;
|
|
33
39
|
for (var i = 0; i < items.length; i++) {
|
|
34
40
|
for (var j = i + 1; j < items.length; j++) {
|
|
@@ -44,14 +50,16 @@ var findCloseItems = function findCloseItems(itemsObj) {
|
|
|
44
50
|
}
|
|
45
51
|
return closeItems;
|
|
46
52
|
};
|
|
47
|
-
var adjustItemPositions = function adjustItemPositions(
|
|
53
|
+
var adjustItemPositions = function adjustItemPositions(entitiesByKey, closeItemPairs) {
|
|
48
54
|
var adjustmentValue = 0.0001;
|
|
49
|
-
var adjustedItems = _objectSpread2({},
|
|
50
|
-
|
|
55
|
+
var adjustedItems = _objectSpread2({}, entitiesByKey);
|
|
51
56
|
closeItemPairs.forEach(function (pair) {
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
adjustedItems[
|
|
57
|
+
var key2 = pair.item2.entityKey;
|
|
58
|
+
if (adjustedItems[key2]) {
|
|
59
|
+
adjustedItems[key2] = _objectSpread2(_objectSpread2({}, adjustedItems[key2]), {}, {
|
|
60
|
+
latitude: adjustedItems[key2].latitude + adjustmentValue,
|
|
61
|
+
longitude: adjustedItems[key2].longitude + adjustmentValue
|
|
62
|
+
});
|
|
55
63
|
}
|
|
56
64
|
});
|
|
57
65
|
return adjustedItems;
|