@abcagency/hc-ui-components 1.3.53 → 1.3.55
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/_virtual/_rollupPluginBabelHelpers.js +10 -1
- package/dist/_virtual/_rollupPluginBabelHelpers.js.map +1 -1
- package/dist/components/HireControlMap.js +1 -1
- package/dist/components/HireControlMap.js.map +1 -1
- package/dist/components/modules/buttons/button-group-apply.js +6 -2
- package/dist/components/modules/buttons/button-group-apply.js.map +1 -1
- package/dist/contexts/mapListContext.js +1 -1
- package/dist/contexts/mapListContext.js.map +1 -1
- package/dist/util/filterUtil.js +53 -27
- package/dist/util/filterUtil.js.map +1 -1
- package/package.json +1 -1
- package/src/components/HireControlMap.js +1 -1
- package/src/components/modules/buttons/button-group-apply.js +6 -3
- package/src/contexts/mapListContext.tsx +1 -1
- package/src/util/filterUtil.js +310 -280
|
@@ -504,6 +504,15 @@ function _toPropertyKey(t) {
|
|
|
504
504
|
var i = _toPrimitive(t, "string");
|
|
505
505
|
return "symbol" == typeof i ? i : i + "";
|
|
506
506
|
}
|
|
507
|
+
function _typeof(o) {
|
|
508
|
+
"@babel/helpers - typeof";
|
|
509
|
+
|
|
510
|
+
return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) {
|
|
511
|
+
return typeof o;
|
|
512
|
+
} : function (o) {
|
|
513
|
+
return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o;
|
|
514
|
+
}, _typeof(o);
|
|
515
|
+
}
|
|
507
516
|
function _unsupportedIterableToArray(r, a) {
|
|
508
517
|
if (r) {
|
|
509
518
|
if ("string" == typeof r) return _arrayLikeToArray(r, a);
|
|
@@ -512,5 +521,5 @@ function _unsupportedIterableToArray(r, a) {
|
|
|
512
521
|
}
|
|
513
522
|
}
|
|
514
523
|
|
|
515
|
-
export { _arrayLikeToArray as arrayLikeToArray, _arrayWithHoles as arrayWithHoles, _arrayWithoutHoles as arrayWithoutHoles, _asyncToGenerator as asyncToGenerator, _createForOfIteratorHelper as createForOfIteratorHelper, _defineProperty as defineProperty, _extends as extends, _iterableToArray as iterableToArray, _iterableToArrayLimit as iterableToArrayLimit, _nonIterableRest as nonIterableRest, _nonIterableSpread as nonIterableSpread, _objectSpread2 as objectSpread2, _objectWithoutProperties as objectWithoutProperties, _objectWithoutPropertiesLoose as objectWithoutPropertiesLoose, _regeneratorRuntime as regeneratorRuntime, _slicedToArray as slicedToArray, _taggedTemplateLiteral as taggedTemplateLiteral, _toConsumableArray as toConsumableArray, _toPrimitive as toPrimitive, _toPropertyKey as toPropertyKey, _unsupportedIterableToArray as unsupportedIterableToArray };
|
|
524
|
+
export { _arrayLikeToArray as arrayLikeToArray, _arrayWithHoles as arrayWithHoles, _arrayWithoutHoles as arrayWithoutHoles, _asyncToGenerator as asyncToGenerator, _createForOfIteratorHelper as createForOfIteratorHelper, _defineProperty as defineProperty, _extends as extends, _iterableToArray as iterableToArray, _iterableToArrayLimit as iterableToArrayLimit, _nonIterableRest as nonIterableRest, _nonIterableSpread as nonIterableSpread, _objectSpread2 as objectSpread2, _objectWithoutProperties as objectWithoutProperties, _objectWithoutPropertiesLoose as objectWithoutPropertiesLoose, _regeneratorRuntime as regeneratorRuntime, _slicedToArray as slicedToArray, _taggedTemplateLiteral as taggedTemplateLiteral, _toConsumableArray as toConsumableArray, _toPrimitive as toPrimitive, _toPropertyKey as toPropertyKey, _typeof as typeof, _unsupportedIterableToArray as unsupportedIterableToArray };
|
|
516
525
|
//# sourceMappingURL=_rollupPluginBabelHelpers.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"_rollupPluginBabelHelpers.js","sources":[],"sourcesContent":[],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"_rollupPluginBabelHelpers.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|
|
@@ -112,7 +112,7 @@ var HomeBody = function HomeBody(_ref3) {
|
|
|
112
112
|
}, /*#__PURE__*/React__default.createElement(MapListProvider, {
|
|
113
113
|
siteConfig: siteConfig,
|
|
114
114
|
resetFilters: resetFilters,
|
|
115
|
-
|
|
115
|
+
navigateToDetails: navigateToDetails,
|
|
116
116
|
navigateToEasyApply: navigateToEasyApply,
|
|
117
117
|
Link: Link,
|
|
118
118
|
linkFormat: linkFormat,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"HireControlMap.js","sources":["../../src/components/HireControlMap.js"],"sourcesContent":["import React, { useEffect, useState } from 'react';\nimport { useLoadScript } from '@react-google-maps/api';\n\nimport Grid from '~/components/modules/grid';\nimport Filter from '~/components/containers/filter/filter-container';\nimport MapList from '~/components/containers/maps/map-list-container';\n\nimport { MapProvider } from '~/contexts/mapContext';\nimport { PlacesProvider } from '~/contexts/placesContext';\nimport { MapListProvider } from '~/contexts/mapListContext';\nimport { TrackEventProvider } from '~/contexts/trackEventContext';\n\nimport { getMapConfig } from '~/services/configService';\nimport { setClientAuthKey } from '~/clientToken.js';\n\nimport '../styles/index.css';\nimport { ThemeProvider } from '~/contexts/themeContext';\n\nconst libraries = ['places'];\n\nexport const HireControlMap = ({\n\tclientToken,\n\tnavigateToDetails = null,\n\tnavigateToEasyApply = null,\n\thandleUrlUpdate = null,\n\tLink = null,\n\tlinkFormat = '/jobs/[slug]',\n\ttrackEvent = (eventType, eventObj) => {console.log(eventType); console.log(eventObj);},\n\tlistings = [],\n\tsetFiltersUrl = null\n}) => {\n\tconst [siteConfig, setSiteconfig] = useState(null);\n\n\tuseEffect(() => {\n\t\tsetClientAuthKey(clientToken);\n\t\tconst fetchSiteConfig = async () => {\n\t\t\ttry {\n\t\t\t\tconst configData = await getMapConfig(clientToken);\n\t\t\t\tsetSiteconfig(configData);\n\t\t\t} catch (error) {\n\t\t\t\tconsole.error('Failed to fetch site configuration:', error);\n\t\t\t}\n\t\t};\n\n\t\tfetchSiteConfig();\n\t}, [clientToken]);\n\n\tconst { isLoaded } = useLoadScript({\n\t\tgoogleMapsApiKey: process.env.GOOGLE_MAPS_API_KEY,\n\t\tversion: 'quarterly',\n\t\tlibraries: libraries\n\t});\n\n\treturn (\n\t\t<div>\n\t\t\t{isLoaded && siteConfig && (\n\t\t\t\t<HomeBody\n\t\t\t\t\tsiteConfig={siteConfig}\n\t\t\t\t\tnavigateToDetails={navigateToDetails}\n\t\t\t\t\tnavigateToEasyApply={navigateToEasyApply}\n\t\t\t\t\tLink={Link}\n\t\t\t\t\tlinkFormat={linkFormat}\n\t\t\t\t\ttrackEvent={trackEvent}\n\t\t\t\t\tlistings={listings}\n\t\t\t\t\tsetFiltersUrl={setFiltersUrl}\n\t\t\t\t\thandleUrlUpdate={handleUrlUpdate}\n\t\t\t\t/>\n\t\t\t)}\n\t\t</div>\n\t);\n};\n\nconst HomeBody = ({ siteConfig, navigateToDetails, navigateToEasyApply, Link, linkFormat, trackEvent, listings, setFiltersUrl, handleUrlUpdate }) => {\n\tconst resetFilters = false;\n\n\treturn (\n\t\t<TrackEventProvider trackEvent={trackEvent}>\n\t\t\t<ThemeProvider uiText={siteConfig.colors.uiText} uiAccent={siteConfig.colors.uiAccent} primary={siteConfig.colors.primary} primaryDark={siteConfig.colors.primaryDark} secondary={siteConfig.colors.secondary} secondaryDark={siteConfig.colors.secondaryDark}>\n\t\t\t\t<MapListProvider\n\t\t\t\t\tsiteConfig={siteConfig}\n\t\t\t\t\tresetFilters={resetFilters}\n\t\t\t\t\tavigateToDetails={navigateToDetails}\n\t\t\t\t\tnavigateToEasyApply={navigateToEasyApply}\n\t\t\t\t\tLink={Link}\n\t\t\t\t\tlinkFormat={linkFormat}\n\t\t\t\t\tlistings={listings}\n\t\t\t\t\tsetFiltersUrl={setFiltersUrl}\n\t\t\t\t\thandleUrlUpdate={handleUrlUpdate}\n\t\t\t\t>\n\t\t\t\t\t<MapProvider resetFilters={resetFilters}>\n\t\t\t\t\t\t<PlacesProvider\n\t\t\t\t\t\t\tplaceMappings={siteConfig.pointsOfInterestConfig.placeMappings ?? {}}\n\t\t\t\t\t\t\tmarkerColors={{\n\t\t\t\t\t\t\t\tfillColor: siteConfig.colors.primary,\n\t\t\t\t\t\t\t\tstrokeColor: siteConfig.colors.primaryDark,\n\t\t\t\t\t\t\t\tselectedFillColor: siteConfig.colors.secondary,\n\t\t\t\t\t\t\t\tselectedStrokeColor: siteConfig.colors.secondaryDark,\n\t\t\t\t\t\t\t\tplaceMarkers: {\n\t\t\t\t\t\t\t\t\tcolors: siteConfig.pointsOfInterestConfig.placeMarkerColors,\n\t\t\t\t\t\t\t\t\tsize: siteConfig.pointsOfInterestConfig.placeMarkerSize\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<Grid\n\t\t\t\t\t\t\t\tas='section'\n\t\t\t\t\t\t\t\tid='job-search-interface'\n\t\t\t\t\t\t\t\tcolumns='md:hc-grid-cols-[1fr_2.5fr] lg:hc-grid-cols-[1fr_3.5fr]'\n\t\t\t\t\t\t\t\tgap='hc-gap-0'\n\t\t\t\t\t\t\t\tautoRows={false}\n\t\t\t\t\t\t\t\tclassName='hc-bundle hc-items-stretch hc-h-screen hc-min-h-[30rem] hc-divide-x hc-divide-uiAccent/20'\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t<Grid.Item className='hc-bg-gray-100'>\n\t\t\t\t\t\t\t\t\t<Filter showMap={siteConfig.showMap} className='hc-hidden md:hc-block' />\n\t\t\t\t\t\t\t\t</Grid.Item>\n\t\t\t\t\t\t\t\t<MapList\n\t\t\t\t\t\t\t\t\tmarkerConfigs={{\n\t\t\t\t\t\t\t\t\t\tfillColor: siteConfig.colors.primary,\n\t\t\t\t\t\t\t\t\t\tstrokeColor: siteConfig.colors.primaryDark,\n\t\t\t\t\t\t\t\t\t\tselectedFillColor: siteConfig.colors.secondary,\n\t\t\t\t\t\t\t\t\t\tselectedStrokeColor: siteConfig.colors.secondaryDark,\n\t\t\t\t\t\t\t\t\t\tplaceMarkers: {\n\t\t\t\t\t\t\t\t\t\t\tcolors: siteConfig.pointsOfInterestConfig.placeMarkerColors,\n\t\t\t\t\t\t\t\t\t\t\tsize: siteConfig.pointsOfInterestConfig.placeMarkerSize\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\t\tmapPosition={siteConfig.mapPosition}\n\t\t\t\t\t\t\t\t\tshowMap={siteConfig.showMap}\n\t\t\t\t\t\t\t\t\tfieldsShown={siteConfig.fieldsShown}\n\t\t\t\t\t\t\t\t\tspecialFeatures={siteConfig.specialFeatures}\n\t\t\t\t\t\t\t\t\tfieldNames={siteConfig.fieldNames}\n\t\t\t\t\t\t\t\t\tplaceMappings={siteConfig.pointsOfInterestConfig.placeMappings ?? {}}\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t</Grid>\n\t\t\t\t\t\t</PlacesProvider>\n\t\t\t\t\t</MapProvider>\n\t\t\t\t</MapListProvider>\n\t\t\t</ThemeProvider>\n\t\t</TrackEventProvider>\n\t);\n};\n\nexport default HireControlMap;\n"],"names":["libraries","HireControlMap","_ref","clientToken","_ref$navigateToDetail","navigateToDetails","_ref$navigateToEasyAp","navigateToEasyApply","_ref$handleUrlUpdate","handleUrlUpdate","_ref$Link","Link","_ref$linkFormat","linkFormat","_ref$trackEvent","trackEvent","eventType","eventObj","console","log","_ref$listings","listings","_ref$setFiltersUrl","setFiltersUrl","_useState","useState","_useState2","_slicedToArray","siteConfig","setSiteconfig","useEffect","setClientAuthKey","fetchSiteConfig","_ref2","_asyncToGenerator","_regeneratorRuntime","mark","_callee","configData","wrap","_callee$","_context","prev","next","getMapConfig","sent","t0","error","stop","apply","arguments","_useLoadScript","useLoadScript","googleMapsApiKey","version","isLoaded","React","createElement","HomeBody","_ref3","_siteConfig$pointsOfI","_siteConfig$pointsOfI2","resetFilters","TrackEventProvider","ThemeProvider","uiText","colors","uiAccent","primary","primaryDark","secondary","secondaryDark","MapListProvider","avigateToDetails","MapProvider","PlacesProvider","placeMappings","pointsOfInterestConfig","markerColors","fillColor","strokeColor","selectedFillColor","selectedStrokeColor","placeMarkers","placeMarkerColors","size","placeMarkerSize","Grid","as","id","columns","gap","autoRows","className","Item","Filter","showMap","MapList","markerConfigs","mapPosition","fieldsShown","specialFeatures","fieldNames"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"HireControlMap.js","sources":["../../src/components/HireControlMap.js"],"sourcesContent":["import React, { useEffect, useState } from 'react';\nimport { useLoadScript } from '@react-google-maps/api';\n\nimport Grid from '~/components/modules/grid';\nimport Filter from '~/components/containers/filter/filter-container';\nimport MapList from '~/components/containers/maps/map-list-container';\n\nimport { MapProvider } from '~/contexts/mapContext';\nimport { PlacesProvider } from '~/contexts/placesContext';\nimport { MapListProvider } from '~/contexts/mapListContext';\nimport { TrackEventProvider } from '~/contexts/trackEventContext';\n\nimport { getMapConfig } from '~/services/configService';\nimport { setClientAuthKey } from '~/clientToken.js';\n\nimport '../styles/index.css';\nimport { ThemeProvider } from '~/contexts/themeContext';\n\nconst libraries = ['places'];\n\nexport const HireControlMap = ({\n\tclientToken,\n\tnavigateToDetails = null,\n\tnavigateToEasyApply = null,\n\thandleUrlUpdate = null,\n\tLink = null,\n\tlinkFormat = '/jobs/[slug]',\n\ttrackEvent = (eventType, eventObj) => {console.log(eventType); console.log(eventObj);},\n\tlistings = [],\n\tsetFiltersUrl = null\n}) => {\n\tconst [siteConfig, setSiteconfig] = useState(null);\n\n\tuseEffect(() => {\n\t\tsetClientAuthKey(clientToken);\n\t\tconst fetchSiteConfig = async () => {\n\t\t\ttry {\n\t\t\t\tconst configData = await getMapConfig(clientToken);\n\t\t\t\tsetSiteconfig(configData);\n\t\t\t} catch (error) {\n\t\t\t\tconsole.error('Failed to fetch site configuration:', error);\n\t\t\t}\n\t\t};\n\n\t\tfetchSiteConfig();\n\t}, [clientToken]);\n\n\tconst { isLoaded } = useLoadScript({\n\t\tgoogleMapsApiKey: process.env.GOOGLE_MAPS_API_KEY,\n\t\tversion: 'quarterly',\n\t\tlibraries: libraries\n\t});\n\n\treturn (\n\t\t<div>\n\t\t\t{isLoaded && siteConfig && (\n\t\t\t\t<HomeBody\n\t\t\t\t\tsiteConfig={siteConfig}\n\t\t\t\t\tnavigateToDetails={navigateToDetails}\n\t\t\t\t\tnavigateToEasyApply={navigateToEasyApply}\n\t\t\t\t\tLink={Link}\n\t\t\t\t\tlinkFormat={linkFormat}\n\t\t\t\t\ttrackEvent={trackEvent}\n\t\t\t\t\tlistings={listings}\n\t\t\t\t\tsetFiltersUrl={setFiltersUrl}\n\t\t\t\t\thandleUrlUpdate={handleUrlUpdate}\n\t\t\t\t/>\n\t\t\t)}\n\t\t</div>\n\t);\n};\n\nconst HomeBody = ({ siteConfig, navigateToDetails, navigateToEasyApply, Link, linkFormat, trackEvent, listings, setFiltersUrl, handleUrlUpdate }) => {\n\tconst resetFilters = false;\n\n\treturn (\n\t\t<TrackEventProvider trackEvent={trackEvent}>\n\t\t\t<ThemeProvider uiText={siteConfig.colors.uiText} uiAccent={siteConfig.colors.uiAccent} primary={siteConfig.colors.primary} primaryDark={siteConfig.colors.primaryDark} secondary={siteConfig.colors.secondary} secondaryDark={siteConfig.colors.secondaryDark}>\n\t\t\t\t<MapListProvider\n\t\t\t\t\tsiteConfig={siteConfig}\n\t\t\t\t\tresetFilters={resetFilters}\n\t\t\t\t\tnavigateToDetails={navigateToDetails}\n\t\t\t\t\tnavigateToEasyApply={navigateToEasyApply}\n\t\t\t\t\tLink={Link}\n\t\t\t\t\tlinkFormat={linkFormat}\n\t\t\t\t\tlistings={listings}\n\t\t\t\t\tsetFiltersUrl={setFiltersUrl}\n\t\t\t\t\thandleUrlUpdate={handleUrlUpdate}\n\t\t\t\t>\n\t\t\t\t\t<MapProvider resetFilters={resetFilters}>\n\t\t\t\t\t\t<PlacesProvider\n\t\t\t\t\t\t\tplaceMappings={siteConfig.pointsOfInterestConfig.placeMappings ?? {}}\n\t\t\t\t\t\t\tmarkerColors={{\n\t\t\t\t\t\t\t\tfillColor: siteConfig.colors.primary,\n\t\t\t\t\t\t\t\tstrokeColor: siteConfig.colors.primaryDark,\n\t\t\t\t\t\t\t\tselectedFillColor: siteConfig.colors.secondary,\n\t\t\t\t\t\t\t\tselectedStrokeColor: siteConfig.colors.secondaryDark,\n\t\t\t\t\t\t\t\tplaceMarkers: {\n\t\t\t\t\t\t\t\t\tcolors: siteConfig.pointsOfInterestConfig.placeMarkerColors,\n\t\t\t\t\t\t\t\t\tsize: siteConfig.pointsOfInterestConfig.placeMarkerSize\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<Grid\n\t\t\t\t\t\t\t\tas='section'\n\t\t\t\t\t\t\t\tid='job-search-interface'\n\t\t\t\t\t\t\t\tcolumns='md:hc-grid-cols-[1fr_2.5fr] lg:hc-grid-cols-[1fr_3.5fr]'\n\t\t\t\t\t\t\t\tgap='hc-gap-0'\n\t\t\t\t\t\t\t\tautoRows={false}\n\t\t\t\t\t\t\t\tclassName='hc-bundle hc-items-stretch hc-h-screen hc-min-h-[30rem] hc-divide-x hc-divide-uiAccent/20'\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t<Grid.Item className='hc-bg-gray-100'>\n\t\t\t\t\t\t\t\t\t<Filter showMap={siteConfig.showMap} className='hc-hidden md:hc-block' />\n\t\t\t\t\t\t\t\t</Grid.Item>\n\t\t\t\t\t\t\t\t<MapList\n\t\t\t\t\t\t\t\t\tmarkerConfigs={{\n\t\t\t\t\t\t\t\t\t\tfillColor: siteConfig.colors.primary,\n\t\t\t\t\t\t\t\t\t\tstrokeColor: siteConfig.colors.primaryDark,\n\t\t\t\t\t\t\t\t\t\tselectedFillColor: siteConfig.colors.secondary,\n\t\t\t\t\t\t\t\t\t\tselectedStrokeColor: siteConfig.colors.secondaryDark,\n\t\t\t\t\t\t\t\t\t\tplaceMarkers: {\n\t\t\t\t\t\t\t\t\t\t\tcolors: siteConfig.pointsOfInterestConfig.placeMarkerColors,\n\t\t\t\t\t\t\t\t\t\t\tsize: siteConfig.pointsOfInterestConfig.placeMarkerSize\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\t\tmapPosition={siteConfig.mapPosition}\n\t\t\t\t\t\t\t\t\tshowMap={siteConfig.showMap}\n\t\t\t\t\t\t\t\t\tfieldsShown={siteConfig.fieldsShown}\n\t\t\t\t\t\t\t\t\tspecialFeatures={siteConfig.specialFeatures}\n\t\t\t\t\t\t\t\t\tfieldNames={siteConfig.fieldNames}\n\t\t\t\t\t\t\t\t\tplaceMappings={siteConfig.pointsOfInterestConfig.placeMappings ?? {}}\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t</Grid>\n\t\t\t\t\t\t</PlacesProvider>\n\t\t\t\t\t</MapProvider>\n\t\t\t\t</MapListProvider>\n\t\t\t</ThemeProvider>\n\t\t</TrackEventProvider>\n\t);\n};\n\nexport default HireControlMap;\n"],"names":["libraries","HireControlMap","_ref","clientToken","_ref$navigateToDetail","navigateToDetails","_ref$navigateToEasyAp","navigateToEasyApply","_ref$handleUrlUpdate","handleUrlUpdate","_ref$Link","Link","_ref$linkFormat","linkFormat","_ref$trackEvent","trackEvent","eventType","eventObj","console","log","_ref$listings","listings","_ref$setFiltersUrl","setFiltersUrl","_useState","useState","_useState2","_slicedToArray","siteConfig","setSiteconfig","useEffect","setClientAuthKey","fetchSiteConfig","_ref2","_asyncToGenerator","_regeneratorRuntime","mark","_callee","configData","wrap","_callee$","_context","prev","next","getMapConfig","sent","t0","error","stop","apply","arguments","_useLoadScript","useLoadScript","googleMapsApiKey","version","isLoaded","React","createElement","HomeBody","_ref3","_siteConfig$pointsOfI","_siteConfig$pointsOfI2","resetFilters","TrackEventProvider","ThemeProvider","uiText","colors","uiAccent","primary","primaryDark","secondary","secondaryDark","MapListProvider","MapProvider","PlacesProvider","placeMappings","pointsOfInterestConfig","markerColors","fillColor","strokeColor","selectedFillColor","selectedStrokeColor","placeMarkers","placeMarkerColors","size","placeMarkerSize","Grid","as","id","columns","gap","autoRows","className","Item","Filter","showMap","MapList","markerConfigs","mapPosition","fieldsShown","specialFeatures","fieldNames"],"mappings":"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"}
|
|
@@ -50,6 +50,10 @@ var ButtonGroupApply = function ButtonGroupApply(_ref) {
|
|
|
50
50
|
entityDisplayName: item === null || item === void 0 || (_item$mapDetails2 = item.mapDetails) === null || _item$mapDetails2 === void 0 ? void 0 : _item$mapDetails2.entityDisplayName
|
|
51
51
|
});
|
|
52
52
|
};
|
|
53
|
+
console.log(detailsUrl);
|
|
54
|
+
console.log(useDetailsPostMessage);
|
|
55
|
+
console.log(navigateToDetails);
|
|
56
|
+
console.log(useDetailsPostMessage === true && !navigateToDetails, 'query result');
|
|
53
57
|
return /*#__PURE__*/React__default.createElement("nav", {
|
|
54
58
|
className: twMerge(_templateObject || (_templateObject = _taggedTemplateLiteral(["\n hc-flex hc-flex-row hc-justify-between hc-gap-2 hc-w-full\n ", "\n "])), className !== null && className !== void 0 ? className : '')
|
|
55
59
|
}, Link && /*#__PURE__*/React__default.createElement(Button.Link, {
|
|
@@ -69,13 +73,13 @@ var ButtonGroupApply = function ButtonGroupApply(_ref) {
|
|
|
69
73
|
variant: detailsButtonVariant,
|
|
70
74
|
className: "map-details-button",
|
|
71
75
|
size: buttonSize
|
|
72
|
-
}, detailsText), detailsUrl && useDetailsPostMessage !== true && navigateToDetails
|
|
76
|
+
}, detailsText), detailsUrl && useDetailsPostMessage !== true && !navigateToDetails && /*#__PURE__*/React__default.createElement(Button.Anchor, {
|
|
73
77
|
href: detailsUrl,
|
|
74
78
|
variant: detailsButtonVariant,
|
|
75
79
|
className: "map-details-button",
|
|
76
80
|
size: buttonSize,
|
|
77
81
|
onClick: trackViewDetails
|
|
78
|
-
}, detailsText), useDetailsPostMessage === true && navigateToDetails
|
|
82
|
+
}, detailsText), useDetailsPostMessage === true && !navigateToDetails && /*#__PURE__*/React__default.createElement(Button.Btn, {
|
|
79
83
|
onClick: function onClick() {
|
|
80
84
|
window.parent.postMessage({
|
|
81
85
|
itemId: itemId,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"button-group-apply.js","sources":["../../../../src/components/modules/buttons/button-group-apply.js"],"sourcesContent":["import React from 'react';\nimport { twMerge } from 'tailwind-merge';\n\nimport Button from '~/components/modules/buttons/default';\nimport ApplyDialog from '../dialogs/apply-dialog';\n\nconst ButtonGroupApply = ({\n\tapplyUrl,\n\tuseDetailsPostMessage,\n\tnavigateToDetails,\n\tnavigateToEasyApply,\n\tLink,\n\tlinkFormat,\n\tapplyText = 'Apply Now',\n\tdetailsUrl,\n\tdetailsText = 'View Details',\n\tclassName,\n\tbuttonSize = 'sm',\n\tapplyButtonVariant = 'primary',\n\tdetailsButtonVariant = 'outline',\n\tincludeDialog = false,\n\tinternalApplyLink,\n\titemId,\n\titem,\n\tcompanyName,\n\ttrackEvent,\n\teventTypes\n}) => {\n\tconst href = linkFormat.replace('[slug]', item.slug ?? item.id);\n\n\tconst trackApply = () => {\n\t\ttrackEvent(eventTypes.APPLY_NOW_CLICKED, { jobTitle: item.fields.position, jobCategory: item.fields.category, entityDisplayName: item?.mapDetails?.entityDisplayName });\n\t};\n\n\tconst trackViewDetails = () => {\n\t\ttrackEvent(eventTypes.VIEW_DETAILS_CLICKED, { jobTitle: item.fields.position, jobCategory: item.fields.category, entityDisplayName: item?.mapDetails?.entityDisplayName });\n\t};\n\n\treturn (\n\t\t<nav\n\t\t\tclassName={twMerge`\n hc-flex hc-flex-row hc-justify-between hc-gap-2 hc-w-full\n ${className ?? ''}\n `}\n\t\t>\n\t\t\t{Link &&\n <Button.Link\n \tLink={Link}\n \thref={href}\n \tvariant={detailsButtonVariant}\n \tsize={buttonSize}\n \tclassName={\"map-details-button\"}\n \tonClick={trackViewDetails}\n >\n \t{detailsText}\n </Button.Link>\n\t\t\t}\n\t\t\t{navigateToDetails &&\n <Button.Anchor\n \thref={href}\n \tonClick={e => {\n \t\te.preventDefault();\n \t\tnavigateToDetails(item);\n \t\ttrackViewDetails();\n \t}}\n \tvariant={detailsButtonVariant}\n \tclassName={\"map-details-button\"}\n \tsize={buttonSize}\n >\n \t{detailsText}\n </Button.Anchor>\n\t\t\t}\n\t\t\t{detailsUrl && useDetailsPostMessage !== true && navigateToDetails === null &&\n <Button.Anchor\n \thref={detailsUrl}\n \tvariant={detailsButtonVariant}\n \tclassName={\"map-details-button\"}\n \tsize={buttonSize}\n \tonClick={trackViewDetails}\n >\n \t{detailsText}\n </Button.Anchor>\n\t\t\t}\n\t\t\t{useDetailsPostMessage === true && navigateToDetails === null &&\n <Button.Btn\n \tonClick={() => {trackViewDetails; window.parent.postMessage({ itemId: itemId, type: 'LISTING_ID' }, '*'); }}\n \tvariant={detailsButtonVariant}\n \tclassName={\"map-details-button\"}\n \tsize={buttonSize}\n >\n \t{detailsText}\n </Button.Btn>}\n\t\t\t{applyUrl && !includeDialog && navigateToEasyApply == null &&\n <Button.Anchor\n \thref={applyUrl}\n \tvariant={applyButtonVariant}\n \tsize={buttonSize}\n \tclassName={\"map-apply-now-button\"}\n \tonClick={trackApply}\n >\n \t{applyText}\n </Button.Anchor>\n\t\t\t}\n\t\t\t{applyUrl && !includeDialog && navigateToEasyApply != null &&\n <Button.Btn\n \tonClick={() => { navigateToEasyApply(item); trackApply(); }}\n \tvariant={applyButtonVariant}\n \tclassName={\"map-apply-now-button\"}\n \tsize={buttonSize}\n >\n \t{applyText}\n </Button.Btn>\n\t\t\t}\n\t\t\t{applyUrl && includeDialog &&\n <ApplyDialog applyUrl={applyUrl} internalApplyLink={internalApplyLink} companyName={companyName}>\n \t<Button.Anchor\n \t\tvariant={applyButtonVariant}\n \t\tsize={buttonSize}\n \t\tclassName={\"map-apply-now-button\"}\n \t\tonClick={trackApply}\n \t>\n \t\t{applyText}\n \t</Button.Anchor>\n </ApplyDialog>\n\t\t\t}\n\t\t</nav>\n\t);\n};\n\nexport default ButtonGroupApply;\n"],"names":["ButtonGroupApply","_ref","_item$slug","applyUrl","useDetailsPostMessage","navigateToDetails","navigateToEasyApply","Link","linkFormat","_ref$applyText","applyText","detailsUrl","_ref$detailsText","detailsText","className","_ref$buttonSize","buttonSize","_ref$applyButtonVaria","applyButtonVariant","_ref$detailsButtonVar","detailsButtonVariant","_ref$includeDialog","includeDialog","internalApplyLink","itemId","item","companyName","trackEvent","eventTypes","href","replace","slug","id","trackApply","_item$mapDetails","APPLY_NOW_CLICKED","jobTitle","fields","position","jobCategory","category","entityDisplayName","mapDetails","trackViewDetails","_item$mapDetails2","VIEW_DETAILS_CLICKED","React","createElement","twMerge","_templateObject","_taggedTemplateLiteral","Button","variant","size","onClick","Anchor","e","preventDefault","Btn","window","parent","postMessage","type","ApplyDialog"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"button-group-apply.js","sources":["../../../../src/components/modules/buttons/button-group-apply.js"],"sourcesContent":["import React from 'react';\nimport { twMerge } from 'tailwind-merge';\n\nimport Button from '~/components/modules/buttons/default';\nimport ApplyDialog from '../dialogs/apply-dialog';\n\nconst ButtonGroupApply = ({\n\tapplyUrl,\n\tuseDetailsPostMessage,\n\tnavigateToDetails,\n\tnavigateToEasyApply,\n\tLink,\n\tlinkFormat,\n\tapplyText = 'Apply Now',\n\tdetailsUrl,\n\tdetailsText = 'View Details',\n\tclassName,\n\tbuttonSize = 'sm',\n\tapplyButtonVariant = 'primary',\n\tdetailsButtonVariant = 'outline',\n\tincludeDialog = false,\n\tinternalApplyLink,\n\titemId,\n\titem,\n\tcompanyName,\n\ttrackEvent,\n\teventTypes\n}) => {\n\tconst href = linkFormat.replace('[slug]', item.slug ?? item.id);\n\n\tconst trackApply = () => {\n\t\ttrackEvent(eventTypes.APPLY_NOW_CLICKED, { jobTitle: item.fields.position, jobCategory: item.fields.category, entityDisplayName: item?.mapDetails?.entityDisplayName });\n\t};\n\n\tconst trackViewDetails = () => {\n\t\ttrackEvent(eventTypes.VIEW_DETAILS_CLICKED, { jobTitle: item.fields.position, jobCategory: item.fields.category, entityDisplayName: item?.mapDetails?.entityDisplayName });\n\t};\n\tconsole.log(detailsUrl);\n\tconsole.log(useDetailsPostMessage);\n\tconsole.log(navigateToDetails);\n\tconsole.log(useDetailsPostMessage === true && !navigateToDetails, 'query result');\n\treturn (\n\t\t<nav\n\t\t\tclassName={twMerge`\n hc-flex hc-flex-row hc-justify-between hc-gap-2 hc-w-full\n ${className ?? ''}\n `}\n\t\t>\n\t\t\t{Link &&\n <Button.Link\n \tLink={Link}\n \thref={href}\n \tvariant={detailsButtonVariant}\n \tsize={buttonSize}\n \tclassName={\"map-details-button\"}\n \tonClick={trackViewDetails}\n >\n \t{detailsText}\n </Button.Link>\n\t\t\t}\n\t\t\t{navigateToDetails &&\n <Button.Anchor\n \thref={href}\n \tonClick={e => {\n \t\te.preventDefault();\n \t\tnavigateToDetails(item);\n \t\ttrackViewDetails();\n \t}}\n \tvariant={detailsButtonVariant}\n \tclassName={\"map-details-button\"}\n \tsize={buttonSize}\n >\n \t{detailsText}\n </Button.Anchor>\n\t\t\t}\n\t\t\t{detailsUrl && useDetailsPostMessage !== true && !navigateToDetails &&\n <Button.Anchor\n \thref={detailsUrl}\n \tvariant={detailsButtonVariant}\n \tclassName={\"map-details-button\"}\n \tsize={buttonSize}\n \tonClick={trackViewDetails}\n >\n \t{detailsText}\n </Button.Anchor>\n\t\t\t}\n\t\t\t{useDetailsPostMessage === true && !navigateToDetails &&\n <Button.Btn\n \tonClick={() => {trackViewDetails; window.parent.postMessage({ itemId: itemId, type: 'LISTING_ID' }, '*'); }}\n \tvariant={detailsButtonVariant}\n \tclassName={\"map-details-button\"}\n \tsize={buttonSize}\n >\n \t{detailsText}\n </Button.Btn>}\n\t\t\t{applyUrl && !includeDialog && navigateToEasyApply == null &&\n <Button.Anchor\n \thref={applyUrl}\n \tvariant={applyButtonVariant}\n \tsize={buttonSize}\n \tclassName={\"map-apply-now-button\"}\n \tonClick={trackApply}\n >\n \t{applyText}\n </Button.Anchor>\n\t\t\t}\n\t\t\t{applyUrl && !includeDialog && navigateToEasyApply != null &&\n <Button.Btn\n \tonClick={() => { navigateToEasyApply(item); trackApply(); }}\n \tvariant={applyButtonVariant}\n \tclassName={\"map-apply-now-button\"}\n \tsize={buttonSize}\n >\n \t{applyText}\n </Button.Btn>\n\t\t\t}\n\t\t\t{applyUrl && includeDialog &&\n <ApplyDialog applyUrl={applyUrl} internalApplyLink={internalApplyLink} companyName={companyName}>\n \t<Button.Anchor\n \t\tvariant={applyButtonVariant}\n \t\tsize={buttonSize}\n \t\tclassName={\"map-apply-now-button\"}\n \t\tonClick={trackApply}\n \t>\n \t\t{applyText}\n \t</Button.Anchor>\n </ApplyDialog>\n\t\t\t}\n\t\t</nav>\n\t);\n};\n\nexport default ButtonGroupApply;\n"],"names":["ButtonGroupApply","_ref","_item$slug","applyUrl","useDetailsPostMessage","navigateToDetails","navigateToEasyApply","Link","linkFormat","_ref$applyText","applyText","detailsUrl","_ref$detailsText","detailsText","className","_ref$buttonSize","buttonSize","_ref$applyButtonVaria","applyButtonVariant","_ref$detailsButtonVar","detailsButtonVariant","_ref$includeDialog","includeDialog","internalApplyLink","itemId","item","companyName","trackEvent","eventTypes","href","replace","slug","id","trackApply","_item$mapDetails","APPLY_NOW_CLICKED","jobTitle","fields","position","jobCategory","category","entityDisplayName","mapDetails","trackViewDetails","_item$mapDetails2","VIEW_DETAILS_CLICKED","console","log","React","createElement","twMerge","_templateObject","_taggedTemplateLiteral","Button","variant","size","onClick","Anchor","e","preventDefault","Btn","window","parent","postMessage","type","ApplyDialog"],"mappings":"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"}
|
|
@@ -133,7 +133,7 @@ const MapListProvider = ({ children, siteConfig, resetFilters, navigateToDetails
|
|
|
133
133
|
if (tempSelectedFilters) {
|
|
134
134
|
const keys = Object.keys(tempSelectedFilters);
|
|
135
135
|
const lastKey = keys[keys.length - 1];
|
|
136
|
-
const options = generateFilterOptions(
|
|
136
|
+
const options = generateFilterOptions(filteredListings, allListings, siteConfig, filterOptions, lastKey, favorites, tempSelectedFilters);
|
|
137
137
|
if (options) {
|
|
138
138
|
setFilterOptions(options);
|
|
139
139
|
if (firstLoad)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mapListContext.js","sources":["../../src/contexts/mapListContext.tsx"],"sourcesContent":["import React, { createContext, useState, useEffect, useContext, ReactNode } from 'react';\n\nimport { generateFilterOptions, applyFilters, filterListingsByLocation } from '~/util/filterUtil';\nimport { getStorageObject, setStorageObject } from '~/util/localStorageUtil';\nimport { updateURLWithFilters, filtersFromURL } from '~/util/urlFilterUtil';\n\nimport { getListingEntities } from \"~/services/listingEntityService\";\nimport fetchListings from '~/services/listingAggregatorService';\n\nimport { Listing } from '~/types/Listings';\nimport { ListingEntity } from '~/types/ListingEntity';\nimport { Recruiter } from '~/types/Recruiter';\nimport { MapConfig, MapConfig as SiteConfig } from '~/types/config/MapConfig';\n\ninterface MapListContextProps {\n loading: boolean;\n allListings: Listing[];\n filteredListings: Listing[];\n mapItems: any;\n query: string | null;\n setNewFilteredListings: (filteredListings: Listing[]) => void;\n setQuery: (query: string | null) => void;\n listingEntities: Record<number, ListingEntity> | null;\n selectedFilters: Record<string, any>;\n setSelectedFilters: (filters: Record<string, any>) => void;\n filterOptions: any;\n recruiters: Record<number, Recruiter>;\n handleFilterListingsByLocation: (selectedLocation: any) => void;\n filterDialogIsOpen: boolean;\n setFilterDialogIsOpen: (isOpen: boolean) => void;\n setMobileTab: (tab: string) => void;\n mobileTab: string;\n siteConfig: SiteConfig;\n favorites: number[];\n resetEntityFilter: () => void;\n handleSettingFavorites: (favorites: number[] | null) => void;\n setFilterByFavorites: (filter: boolean) => void;\n filterByFavorites: boolean;\n commuteLocation: any | null;\n setCommuteLocation: (location: any | null) => void;\n navigateToDetails: (id: number) => void;\n navigateToEasyApply: (id: number) => void;\n Link: React.ComponentType<any>;\n linkFormat: string;\n sortSetting: { field: string; type: string };\n setSortSetting: (setting: { field: string; type: string }) => void;\n trackEvent: (event: string) => void;\n}\n\nconst MapListContext = createContext<MapListContextProps | undefined>(undefined);\n\nexport const useMapList = () => {\n\tconst context = useContext(MapListContext);\n\tif (!context) {\n\t\tthrow new Error('useMapList must be used within a MapListProvider');\n\t}\n\treturn context;\n};\n\nconst getQuery = (): string | null => {\n\tlet query: string | null = null;\n\tif (typeof window !== 'undefined') {\n\t\tquery = localStorage.getItem('query');\n\t}\n\treturn query;\n};\n\ninterface MapListProviderProps {\n children: ReactNode;\n siteConfig: MapConfig;\n resetFilters: boolean;\n navigateToDetails: (id: number) => void;\n navigateToEasyApply: (id: number) => void;\n Link: React.ComponentType<any>;\n linkFormat: string;\n trackEvent: (event: string) => void;\n listings?: Listing[];\n setFiltersUrl?:boolean;\n handleUrlUpdate: (searchParams: string) => void;\n}\n\nexport const MapListProvider: React.FC<MapListProviderProps> = ({\n\tchildren,\n\tsiteConfig,\n\tresetFilters,\n\tnavigateToDetails,\n\tnavigateToEasyApply,\n\tLink,\n\tlinkFormat,\n\ttrackEvent,\n\tlistings = [],\n\tsetFiltersUrl,\n\thandleUrlUpdate,\n}) => {\n\tconst firstLoadFilters = () =>{\n\t\tlet urlFilters = filtersFromURL(window.location)?.filters;\n\t\treturn (setFiltersUrl === true && urlFilters && Object.keys(urlFilters).length > 0) ? urlFilters : getStorageObject('selectedFilters', {}) || {}\n\t}\n\tconst [allListings, setAllListings] = useState<Listing[]>([]);\n\tconst [filteredListings, setFilteredListings] = useState<Listing[]>([]);\n\tconst [loading, setLoading] = useState<boolean>(false);\n\tconst [mapItems, setMapItems] = useState<any>(getStorageObject('mapItems', []) || []);\n\tconst [query, setQuery] = useState<string | null>(() => resetFilters ? null : getQuery());\n\tconst [sortSetting, setSortSetting] = useState<{ field: string; type: string }>(getStorageObject('sortSetting', { field: 'position', type: 'asc' }) || { field: 'position', type: 'asc' });\n\tconst [listingEntities, setListingEntities] = useState<Record<number, ListingEntity> | null>({});\n\tconst [firstLoad, setFirstLoad] = useState<boolean>(true);\n\tconst [commuteLocation, setCommuteLocation] = useState<any | null>(getStorageObject('commuteLocation'));\n\tconst [selectedFilters, setSelectedFilters] = useState<Record<string, any>>(() => resetFilters ? {} : firstLoadFilters());\n\tconst [filterOptions, setFilterOptions] = useState<any>();\n\tconst [recruiters, setRecruiters] = useState<Record<number, Recruiter>>({});\n\tconst [filterDialogIsOpen, setFilterDialogIsOpen] = useState<boolean>(false);\n\tconst [mobileTab, setMobileTab] = useState<string>(\"listTab\");\n\tconst [favorites, setFavorites] = useState<number[]>([]);\n\tconst [filterByFavorites, setFilterByFavorites] = useState<boolean>(false);\n\n\tconst setNewFilteredListings = (filteredListings: Listing[]) => {\n\t\tsetFilteredListings(filteredListings);\n\t};\n\n\n\n\tuseEffect(() => {\n\t\tif (!sortSetting) return;\n\t\tlocalStorage.setItem('sortSetting', JSON.stringify(sortSetting));\n\t\tsetNewFilteredListings(filteredListings);\n\t}, [sortSetting]);\n\n\tuseEffect(() => {\n\t\tconst loadedFavorites = JSON.parse(localStorage.getItem('favorites') || '[]');\n\t\tsetFavorites(loadedFavorites);\n\t}, []);\n\n\tuseEffect(() => {\n\t\tsetStorageObject(\"commuteLocation\", commuteLocation);\n\t}, [commuteLocation]);\n\n\tuseEffect(() => {\n\t\tif (!commuteLocation) return;\n\n\t\tasync function fetchEntities() {\n\t\t\tconst distinctEntityIds = [\n\t\t\t\t...new Set(allListings.map(listing => listing.entityId ?? -1))\n\t\t\t];\n\t\t\ttry {\n\t\t\t\tconst fetchedEntities = await getListingEntities(\n\t\t\t\t\tdistinctEntityIds,\n\t\t\t\t\t`${commuteLocation.lat}, ${commuteLocation.lng}`\n\t\t\t\t);\n\t\t\t\tsetListingEntities(fetchedEntities);\n\t\t\t\tconst newFilteredListings: Listing[] = [...filteredListings] ?? [];\n\t\t\t\tfor (let i = 0; i < allListings.length; i++) {\n\t\t\t\t\tconst listing = newFilteredListings[i];\n\t\t\t\t\tif (\n\t\t\t\t\t\tlisting &&\n\t\t\t\t\t\tlisting.fields &&\n\t\t\t\t\t\tlisting.entityId !== undefined &&\n\t\t\t\t\t\tlisting.entityId !== -1\n\t\t\t\t\t) {\n\t\t\t\t\t\tconst entityId = listing.entityId;\n\t\t\t\t\t\tconst travelTime = fetchedEntities[entityId]?.travelTime;\n\n\t\t\t\t\t\tif (travelTime !== undefined && listing.fields) {\n\t\t\t\t\t\t\tlisting.fields.travelTime = travelTime;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} catch (error) {\n\t\t\t\tconsole.error(\"Failed to fetch listing entities:\", error);\n\t\t\t}\n\t\t}\n\n\t\tfetchEntities();\n\t}, [commuteLocation, allListings, siteConfig.companyId]);\n\n\tuseEffect(() => {\n\t\tconst handleFetchListings = async () => {\n\t\t\tif (!getStorageObject('listings') ?? [].length) {\n\t\t\t\tsetLoading(true);\n\t\t\t}\n\n\t\t\ttry {\n\t\t\t\tconst {\n\t\t\t\t\tlistingsResult,\n\t\t\t\t\tfetchedRecruiters,\n\t\t\t\t\tfetchedEntities,\n\t\t\t\t\tdistinctItems\n\t\t\t\t} = await fetchListings(query ?? '', siteConfig, commuteLocation);\n\t\t\t\tsetAllListings(listingsResult);\n\t\t\t\tsetRecruiters(fetchedRecruiters);\n\t\t\t\tsetListingEntities(fetchedEntities);\n\t\t\t\tsetMapItems(distinctItems);\n\t\t\t} catch (error) {\n\t\t\t\tconsole.log(error);\n\t\t\t}\n\t\t\tsetLoading(false);\n\t\t};\n\t\thandleFetchListings();\n\t}, [query, siteConfig]);\n\n\tuseEffect(() => {\n\t\tconst processListings = () => {\n\t\t\tlet filteredListings: Listing[];\n\t\t\tlet tempSelectedFilters = selectedFilters;\n\t\t\tlet tempQuery = query;\n\n\t\t\tconst { mapItems, filteredListings: tempFilteredListings } = applyFilters(\n\t\t\t\tallListings,\n\t\t\t\ttempSelectedFilters,\n\t\t\t\ttempQuery,\n\t\t\t\tlistingEntities,\n\t\t\t\tfavorites,\n\t\t\t\tsiteConfig\n\t\t\t);\n\t\t\tfilteredListings = tempFilteredListings;\n\n\t\t\tif (filterByFavorites) {\n\t\t\t\tfilteredListings = filteredListings.filter((x: Listing) => favorites.includes(x.id));\n\t\t\t}\n\t\t\tsetNewFilteredListings(filteredListings);\n\t\t\tif (firstLoad && tempSelectedFilters) {\n\t\t\t\t// Update URL with filters if needed\n\t\t\t} else if (Object.keys(tempSelectedFilters).length === 0 && !firstLoad) {\n\t\t\t\tlocalStorage.removeItem('selectedFilters');\n\t\t\t} else if (!firstLoad) {\n\t\t\t\tsetStorageObject('selectedFilters', tempSelectedFilters);\n\t\t\t}\n\t\t\tif(setFiltersUrl === true)\n\t\t\t{\n\t\t\t\tupdateURLWithFilters(tempSelectedFilters, window.location, tempQuery, handleUrlUpdate);\n\t\t\t}\n\t\t\ttempQuery != null ? localStorage.setItem('query', tempQuery) : localStorage.removeItem('query');\n\t\t\tsetMapItems(mapItems);\n\n\t\t\tif (tempSelectedFilters) {\n\t\t\t\tconst keys = Object.keys(tempSelectedFilters);\n\t\t\t\tconst lastKey = keys[keys.length - 1];\n\t\t\t\tconst options = generateFilterOptions(\n\t\t\t\t\tfirstLoad ? allListings : filteredListings,\n\t\t\t\t\tallListings,\n\t\t\t\t\tsiteConfig,\n\t\t\t\t\tfilterOptions,\n\t\t\t\t\tlastKey,\n\t\t\t\t\tfavorites,\n\t\t\t\t\ttempSelectedFilters\n\t\t\t\t);\n\t\t\t\tif (options) {\n\t\t\t\t\tsetFilterOptions(options);\n\t\t\t\t\tif (firstLoad) setFirstLoad(false);\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\n\t\tprocessListings();\n\t}, [selectedFilters, query, listingEntities, filterByFavorites, favorites]);\n\n\tconst handleFilterListingsByLocation = (selectedLocation: any) => {\n\t\tconst { filteredListings } = filterListingsByLocation(\n\t\t\tallListings,\n\t\t\tselectedLocation,\n\t\t\tlistingEntities\n\t\t);\n\t\tsetNewFilteredListings(filteredListings);\n\t};\n\n\tconst resetEntityFilter = () => {\n\t\tlet newFilters = {...selectedFilters};\n\t\tdelete newFilters.entityId;\n\t\tsetSelectedFilters(newFilters);\n\t}\n\n\tconst handleSettingFavorites = (newFavorites: number[] | null) => {\n\t\tif (newFavorites == null) {\n\t\t\tlocalStorage.removeItem('favorites');\n\t\t} else {\n\t\t\tsetFavorites(newFavorites);\n\t\t\tlocalStorage.setItem('favorites', JSON.stringify(newFavorites));\n\t\t}\n\t};\n\n\treturn (\n\t\t<MapListContext.Provider value={{\n\t\t\tloading,\n\t\t\tallListings,\n\t\t\tfilteredListings,\n\t\t\tmapItems,\n\t\t\tquery,\n\t\t\tsetNewFilteredListings,\n\t\t\tsetQuery,\n\t\t\tlistingEntities,\n\t\t\tselectedFilters,\n\t\t\tsetSelectedFilters,\n\t\t\tfilterOptions,\n\t\t\trecruiters,\n\t\t\thandleFilterListingsByLocation,\n\t\t\tfilterDialogIsOpen,\n\t\t\tsetFilterDialogIsOpen,\n\t\t\tsetMobileTab,\n\t\t\tmobileTab,\n\t\t\tsiteConfig,\n\t\t\tfavorites,\n\t\t\thandleSettingFavorites,\n\t\t\tresetEntityFilter,\n\t\t\tsetFilterByFavorites,\n\t\t\tfilterByFavorites,\n\t\t\tcommuteLocation,\n\t\t\tsetCommuteLocation,\n\t\t\tnavigateToDetails,\n\t\t\tnavigateToEasyApply,\n\t\t\tLink,\n\t\t\tlinkFormat,\n\t\t\tsortSetting,\n\t\t\tsetSortSetting,\n\t\t\ttrackEvent\n\t\t}}>\n\t\t\t{children}\n\t\t</MapListContext.Provider>\n\t);\n};\n"],"names":["React"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"mapListContext.js","sources":["../../src/contexts/mapListContext.tsx"],"sourcesContent":["import React, { createContext, useState, useEffect, useContext, ReactNode } from 'react';\n\nimport { generateFilterOptions, applyFilters, filterListingsByLocation } from '~/util/filterUtil';\nimport { getStorageObject, setStorageObject } from '~/util/localStorageUtil';\nimport { updateURLWithFilters, filtersFromURL } from '~/util/urlFilterUtil';\n\nimport { getListingEntities } from \"~/services/listingEntityService\";\nimport fetchListings from '~/services/listingAggregatorService';\n\nimport { Listing } from '~/types/Listings';\nimport { ListingEntity } from '~/types/ListingEntity';\nimport { Recruiter } from '~/types/Recruiter';\nimport { MapConfig, MapConfig as SiteConfig } from '~/types/config/MapConfig';\n\ninterface MapListContextProps {\n loading: boolean;\n allListings: Listing[];\n filteredListings: Listing[];\n mapItems: any;\n query: string | null;\n setNewFilteredListings: (filteredListings: Listing[]) => void;\n setQuery: (query: string | null) => void;\n listingEntities: Record<number, ListingEntity> | null;\n selectedFilters: Record<string, any>;\n setSelectedFilters: (filters: Record<string, any>) => void;\n filterOptions: any;\n recruiters: Record<number, Recruiter>;\n handleFilterListingsByLocation: (selectedLocation: any) => void;\n filterDialogIsOpen: boolean;\n setFilterDialogIsOpen: (isOpen: boolean) => void;\n setMobileTab: (tab: string) => void;\n mobileTab: string;\n siteConfig: SiteConfig;\n favorites: number[];\n resetEntityFilter: () => void;\n handleSettingFavorites: (favorites: number[] | null) => void;\n setFilterByFavorites: (filter: boolean) => void;\n filterByFavorites: boolean;\n commuteLocation: any | null;\n setCommuteLocation: (location: any | null) => void;\n navigateToDetails: (id: number) => void;\n navigateToEasyApply: (id: number) => void;\n Link: React.ComponentType<any>;\n linkFormat: string;\n sortSetting: { field: string; type: string };\n setSortSetting: (setting: { field: string; type: string }) => void;\n trackEvent: (event: string) => void;\n}\n\nconst MapListContext = createContext<MapListContextProps | undefined>(undefined);\n\nexport const useMapList = () => {\n\tconst context = useContext(MapListContext);\n\tif (!context) {\n\t\tthrow new Error('useMapList must be used within a MapListProvider');\n\t}\n\treturn context;\n};\n\nconst getQuery = (): string | null => {\n\tlet query: string | null = null;\n\tif (typeof window !== 'undefined') {\n\t\tquery = localStorage.getItem('query');\n\t}\n\treturn query;\n};\n\ninterface MapListProviderProps {\n children: ReactNode;\n siteConfig: MapConfig;\n resetFilters: boolean;\n navigateToDetails: (id: number) => void;\n navigateToEasyApply: (id: number) => void;\n Link: React.ComponentType<any>;\n linkFormat: string;\n trackEvent: (event: string) => void;\n listings?: Listing[];\n setFiltersUrl?:boolean;\n handleUrlUpdate: (searchParams: string) => void;\n}\n\nexport const MapListProvider: React.FC<MapListProviderProps> = ({\n\tchildren,\n\tsiteConfig,\n\tresetFilters,\n\tnavigateToDetails,\n\tnavigateToEasyApply,\n\tLink,\n\tlinkFormat,\n\ttrackEvent,\n\tlistings = [],\n\tsetFiltersUrl,\n\thandleUrlUpdate,\n}) => {\n\tconst firstLoadFilters = () =>{\n\t\tlet urlFilters = filtersFromURL(window.location)?.filters;\n\t\treturn (setFiltersUrl === true && urlFilters && Object.keys(urlFilters).length > 0) ? urlFilters : getStorageObject('selectedFilters', {}) || {}\n\t}\n\tconst [allListings, setAllListings] = useState<Listing[]>([]);\n\tconst [filteredListings, setFilteredListings] = useState<Listing[]>([]);\n\tconst [loading, setLoading] = useState<boolean>(false);\n\tconst [mapItems, setMapItems] = useState<any>(getStorageObject('mapItems', []) || []);\n\tconst [query, setQuery] = useState<string | null>(() => resetFilters ? null : getQuery());\n\tconst [sortSetting, setSortSetting] = useState<{ field: string; type: string }>(getStorageObject('sortSetting', { field: 'position', type: 'asc' }) || { field: 'position', type: 'asc' });\n\tconst [listingEntities, setListingEntities] = useState<Record<number, ListingEntity> | null>({});\n\tconst [firstLoad, setFirstLoad] = useState<boolean>(true);\n\tconst [commuteLocation, setCommuteLocation] = useState<any | null>(getStorageObject('commuteLocation'));\n\tconst [selectedFilters, setSelectedFilters] = useState<Record<string, any>>(() => resetFilters ? {} : firstLoadFilters());\n\tconst [filterOptions, setFilterOptions] = useState<any>();\n\tconst [recruiters, setRecruiters] = useState<Record<number, Recruiter>>({});\n\tconst [filterDialogIsOpen, setFilterDialogIsOpen] = useState<boolean>(false);\n\tconst [mobileTab, setMobileTab] = useState<string>(\"listTab\");\n\tconst [favorites, setFavorites] = useState<number[]>([]);\n\tconst [filterByFavorites, setFilterByFavorites] = useState<boolean>(false);\n\n\tconst setNewFilteredListings = (filteredListings: Listing[]) => {\n\t\tsetFilteredListings(filteredListings);\n\t};\n\n\n\n\tuseEffect(() => {\n\t\tif (!sortSetting) return;\n\t\tlocalStorage.setItem('sortSetting', JSON.stringify(sortSetting));\n\t\tsetNewFilteredListings(filteredListings);\n\t}, [sortSetting]);\n\n\tuseEffect(() => {\n\t\tconst loadedFavorites = JSON.parse(localStorage.getItem('favorites') || '[]');\n\t\tsetFavorites(loadedFavorites);\n\t}, []);\n\n\tuseEffect(() => {\n\t\tsetStorageObject(\"commuteLocation\", commuteLocation);\n\t}, [commuteLocation]);\n\n\tuseEffect(() => {\n\t\tif (!commuteLocation) return;\n\n\t\tasync function fetchEntities() {\n\t\t\tconst distinctEntityIds = [\n\t\t\t\t...new Set(allListings.map(listing => listing.entityId ?? -1))\n\t\t\t];\n\t\t\ttry {\n\t\t\t\tconst fetchedEntities = await getListingEntities(\n\t\t\t\t\tdistinctEntityIds,\n\t\t\t\t\t`${commuteLocation.lat}, ${commuteLocation.lng}`\n\t\t\t\t);\n\t\t\t\tsetListingEntities(fetchedEntities);\n\t\t\t\tconst newFilteredListings: Listing[] = [...filteredListings] ?? [];\n\t\t\t\tfor (let i = 0; i < allListings.length; i++) {\n\t\t\t\t\tconst listing = newFilteredListings[i];\n\t\t\t\t\tif (\n\t\t\t\t\t\tlisting &&\n\t\t\t\t\t\tlisting.fields &&\n\t\t\t\t\t\tlisting.entityId !== undefined &&\n\t\t\t\t\t\tlisting.entityId !== -1\n\t\t\t\t\t) {\n\t\t\t\t\t\tconst entityId = listing.entityId;\n\t\t\t\t\t\tconst travelTime = fetchedEntities[entityId]?.travelTime;\n\n\t\t\t\t\t\tif (travelTime !== undefined && listing.fields) {\n\t\t\t\t\t\t\tlisting.fields.travelTime = travelTime;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} catch (error) {\n\t\t\t\tconsole.error(\"Failed to fetch listing entities:\", error);\n\t\t\t}\n\t\t}\n\n\t\tfetchEntities();\n\t}, [commuteLocation, allListings, siteConfig.companyId]);\n\n\tuseEffect(() => {\n\t\tconst handleFetchListings = async () => {\n\t\t\tif (!getStorageObject('listings') ?? [].length) {\n\t\t\t\tsetLoading(true);\n\t\t\t}\n\n\t\t\ttry {\n\t\t\t\tconst {\n\t\t\t\t\tlistingsResult,\n\t\t\t\t\tfetchedRecruiters,\n\t\t\t\t\tfetchedEntities,\n\t\t\t\t\tdistinctItems\n\t\t\t\t} = await fetchListings(query ?? '', siteConfig, commuteLocation);\n\t\t\t\tsetAllListings(listingsResult);\n\t\t\t\tsetRecruiters(fetchedRecruiters);\n\t\t\t\tsetListingEntities(fetchedEntities);\n\t\t\t\tsetMapItems(distinctItems);\n\t\t\t} catch (error) {\n\t\t\t\tconsole.log(error);\n\t\t\t}\n\t\t\tsetLoading(false);\n\t\t};\n\t\thandleFetchListings();\n\t}, [query, siteConfig]);\n\n\tuseEffect(() => {\n\t\tconst processListings = () => {\n\t\t\tlet filteredListings: Listing[];\n\t\t\tlet tempSelectedFilters = selectedFilters;\n\t\t\tlet tempQuery = query;\n\n\t\t\tconst { mapItems, filteredListings: tempFilteredListings } = applyFilters(\n\t\t\t\tallListings,\n\t\t\t\ttempSelectedFilters,\n\t\t\t\ttempQuery,\n\t\t\t\tlistingEntities,\n\t\t\t\tfavorites,\n\t\t\t\tsiteConfig\n\t\t\t);\n\t\t\tfilteredListings = tempFilteredListings;\n\n\t\t\tif (filterByFavorites) {\n\t\t\t\tfilteredListings = filteredListings.filter((x: Listing) => favorites.includes(x.id));\n\t\t\t}\n\t\t\tsetNewFilteredListings(filteredListings);\n\t\t\tif (firstLoad && tempSelectedFilters) {\n\t\t\t\t// Update URL with filters if needed\n\t\t\t} else if (Object.keys(tempSelectedFilters).length === 0 && !firstLoad) {\n\t\t\t\tlocalStorage.removeItem('selectedFilters');\n\t\t\t} else if (!firstLoad) {\n\t\t\t\tsetStorageObject('selectedFilters', tempSelectedFilters);\n\t\t\t}\n\t\t\tif(setFiltersUrl === true)\n\t\t\t{\n\t\t\t\tupdateURLWithFilters(tempSelectedFilters, window.location, tempQuery, handleUrlUpdate);\n\t\t\t}\n\t\t\ttempQuery != null ? localStorage.setItem('query', tempQuery) : localStorage.removeItem('query');\n\t\t\tsetMapItems(mapItems);\n\n\t\t\tif (tempSelectedFilters) {\n\t\t\t\tconst keys = Object.keys(tempSelectedFilters);\n\t\t\t\tconst lastKey = keys[keys.length - 1];\n\t\t\t\tconst options = generateFilterOptions(\n\t\t\t\t\tfilteredListings,\n\t\t\t\t\tallListings,\n\t\t\t\t\tsiteConfig,\n\t\t\t\t\tfilterOptions,\n\t\t\t\t\tlastKey,\n\t\t\t\t\tfavorites,\n\t\t\t\t\ttempSelectedFilters\n\t\t\t\t);\n\t\t\t\tif (options) {\n\t\t\t\t\tsetFilterOptions(options);\n\t\t\t\t\tif (firstLoad) setFirstLoad(false);\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\n\t\tprocessListings();\n\t}, [selectedFilters, query, listingEntities, filterByFavorites, favorites]);\n\n\tconst handleFilterListingsByLocation = (selectedLocation: any) => {\n\t\tconst { filteredListings } = filterListingsByLocation(\n\t\t\tallListings,\n\t\t\tselectedLocation,\n\t\t\tlistingEntities\n\t\t);\n\t\tsetNewFilteredListings(filteredListings);\n\t};\n\n\tconst resetEntityFilter = () => {\n\t\tlet newFilters = {...selectedFilters};\n\t\tdelete newFilters.entityId;\n\t\tsetSelectedFilters(newFilters);\n\t}\n\n\tconst handleSettingFavorites = (newFavorites: number[] | null) => {\n\t\tif (newFavorites == null) {\n\t\t\tlocalStorage.removeItem('favorites');\n\t\t} else {\n\t\t\tsetFavorites(newFavorites);\n\t\t\tlocalStorage.setItem('favorites', JSON.stringify(newFavorites));\n\t\t}\n\t};\n\n\treturn (\n\t\t<MapListContext.Provider value={{\n\t\t\tloading,\n\t\t\tallListings,\n\t\t\tfilteredListings,\n\t\t\tmapItems,\n\t\t\tquery,\n\t\t\tsetNewFilteredListings,\n\t\t\tsetQuery,\n\t\t\tlistingEntities,\n\t\t\tselectedFilters,\n\t\t\tsetSelectedFilters,\n\t\t\tfilterOptions,\n\t\t\trecruiters,\n\t\t\thandleFilterListingsByLocation,\n\t\t\tfilterDialogIsOpen,\n\t\t\tsetFilterDialogIsOpen,\n\t\t\tsetMobileTab,\n\t\t\tmobileTab,\n\t\t\tsiteConfig,\n\t\t\tfavorites,\n\t\t\thandleSettingFavorites,\n\t\t\tresetEntityFilter,\n\t\t\tsetFilterByFavorites,\n\t\t\tfilterByFavorites,\n\t\t\tcommuteLocation,\n\t\t\tsetCommuteLocation,\n\t\t\tnavigateToDetails,\n\t\t\tnavigateToEasyApply,\n\t\t\tLink,\n\t\t\tlinkFormat,\n\t\t\tsortSetting,\n\t\t\tsetSortSetting,\n\t\t\ttrackEvent\n\t\t}}>\n\t\t\t{children}\n\t\t</MapListContext.Provider>\n\t);\n};\n"],"names":["React"],"mappings":"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"}
|
package/dist/util/filterUtil.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { slicedToArray as _slicedToArray, typeof as _typeof, toConsumableArray as _toConsumableArray, defineProperty as _defineProperty, createForOfIteratorHelper as _createForOfIteratorHelper } from '../_virtual/_rollupPluginBabelHelpers.js';
|
|
2
2
|
import { getDistinctItemsByProximity } from './mapUtil.js';
|
|
3
3
|
import Fuse from '../packages/hc-ui-components/node_modules/fuse.js/dist/fuse.js';
|
|
4
4
|
|
|
@@ -91,6 +91,25 @@ var generateFilterOptions = function generateFilterOptions(filteredListings, all
|
|
|
91
91
|
return filter.id === fieldName;
|
|
92
92
|
});
|
|
93
93
|
}
|
|
94
|
+
if (fieldName == 'categoryClass') {
|
|
95
|
+
return {
|
|
96
|
+
id: fieldName,
|
|
97
|
+
title: siteConfig.fieldNames[fieldName],
|
|
98
|
+
items: getFilterOptions(allListings, allListings, fieldName)
|
|
99
|
+
};
|
|
100
|
+
}
|
|
101
|
+
if (fieldName == 'category' && selectedFilters.categoryClass) {
|
|
102
|
+
var categoryClassKeys = Object.keys(selectedFilters.categoryClass);
|
|
103
|
+
var _filteredListings = allListings.filter(function (x) {
|
|
104
|
+
var _x$fields;
|
|
105
|
+
return categoryClassKeys.includes((_x$fields = x.fields) === null || _x$fields === void 0 ? void 0 : _x$fields.categoryClass);
|
|
106
|
+
});
|
|
107
|
+
return {
|
|
108
|
+
id: fieldName,
|
|
109
|
+
title: siteConfig.fieldNames[fieldName],
|
|
110
|
+
items: getFilterOptions(allListings, _filteredListings, fieldName, false)
|
|
111
|
+
};
|
|
112
|
+
}
|
|
94
113
|
if (fieldName == "specialFeatures") {
|
|
95
114
|
return {
|
|
96
115
|
id: fieldName,
|
|
@@ -105,10 +124,25 @@ var generateFilterOptions = function generateFilterOptions(filteredListings, all
|
|
|
105
124
|
};
|
|
106
125
|
});
|
|
107
126
|
var locations = siteConfig.locationFiltersShown.map(function (fieldName, index) {
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
127
|
+
var locationFilteredListings = allListings;
|
|
128
|
+
locationFilteredListings = allListings.filter(function (listing) {
|
|
129
|
+
return Object.entries(selectedFilters).every(function (_ref7) {
|
|
130
|
+
var _ref8 = _slicedToArray(_ref7, 2),
|
|
131
|
+
key = _ref8[0],
|
|
132
|
+
value = _ref8[1];
|
|
133
|
+
if (siteConfig.locationFiltersShown.includes(key)) return true;
|
|
134
|
+
if (value && _typeof(value) === 'object' && value[listing.fields[key]] === true) {
|
|
135
|
+
return true;
|
|
136
|
+
}
|
|
137
|
+
return false;
|
|
111
138
|
});
|
|
139
|
+
});
|
|
140
|
+
if (index === 0) {
|
|
141
|
+
return {
|
|
142
|
+
id: fieldName,
|
|
143
|
+
title: siteConfig.fieldNames[fieldName],
|
|
144
|
+
items: getFilterOptions(allListings, locationFilteredListings, fieldName, true)
|
|
145
|
+
};
|
|
112
146
|
}
|
|
113
147
|
if (fieldName === 'entityName' && filterOptions !== null && filterOptions !== void 0 && filterOptions.locations) {
|
|
114
148
|
var cityIncluded = siteConfig.locationFiltersShown.includes('city');
|
|
@@ -123,7 +157,7 @@ var generateFilterOptions = function generateFilterOptions(filteredListings, all
|
|
|
123
157
|
var uniqueCityStates = cityStateIncluded ? _toConsumableArray(new Set(filteredListings.map(function (listing) {
|
|
124
158
|
return listing.fields.cityState;
|
|
125
159
|
}))) : [];
|
|
126
|
-
var filteredByLocation =
|
|
160
|
+
var filteredByLocation = locationFilteredListings.filter(function (listing) {
|
|
127
161
|
var cityMatches = cityIncluded ? uniqueCities.includes(listing.fields.city) : true;
|
|
128
162
|
var stateMatches = stateIncluded ? uniqueStates.includes(listing.fields.state) : true;
|
|
129
163
|
var cityStateMatches = cityStateIncluded ? uniqueCityStates.includes(listing.fields.cityState) : true;
|
|
@@ -135,27 +169,19 @@ var generateFilterOptions = function generateFilterOptions(filteredListings, all
|
|
|
135
169
|
items: getFilterOptions(allListings, filteredByLocation, fieldName, true)
|
|
136
170
|
};
|
|
137
171
|
}
|
|
138
|
-
if (fieldName
|
|
139
|
-
console.log(selectedFilters.state);
|
|
140
|
-
console.log(selectedFilters);
|
|
172
|
+
if (fieldName === 'city') {
|
|
141
173
|
if (siteConfig.locationFiltersShown.includes('state') && selectedFilters.state) {
|
|
142
|
-
var
|
|
143
|
-
return
|
|
144
|
-
})
|
|
145
|
-
var _filteredByLocation =
|
|
146
|
-
return
|
|
174
|
+
var selectedStates = Object.keys(selectedFilters.state).filter(function (state) {
|
|
175
|
+
return selectedFilters.state[state] === true;
|
|
176
|
+
});
|
|
177
|
+
var _filteredByLocation = locationFilteredListings.filter(function (listing) {
|
|
178
|
+
return selectedStates.includes(listing.fields.state);
|
|
147
179
|
});
|
|
148
180
|
return {
|
|
149
181
|
id: fieldName,
|
|
150
182
|
title: siteConfig.fieldNames[fieldName],
|
|
151
183
|
items: getFilterOptions(allListings, _filteredByLocation, fieldName, true)
|
|
152
184
|
};
|
|
153
|
-
} else {
|
|
154
|
-
return {
|
|
155
|
-
id: fieldName,
|
|
156
|
-
title: siteConfig.fieldNames[fieldName],
|
|
157
|
-
items: getFilterOptions(allListings, allListings, fieldName, true)
|
|
158
|
-
};
|
|
159
185
|
}
|
|
160
186
|
}
|
|
161
187
|
return {
|
|
@@ -181,10 +207,10 @@ var applyFilters = function applyFilters(allListings, selectedFilters, query, li
|
|
|
181
207
|
var results = allListings;
|
|
182
208
|
var invertedSpecialFeaturesMap;
|
|
183
209
|
if (siteConfig.specialFeatures) {
|
|
184
|
-
invertedSpecialFeaturesMap = Object.entries(siteConfig.specialFeatures).reduce(function (acc,
|
|
185
|
-
var
|
|
186
|
-
key =
|
|
187
|
-
value =
|
|
210
|
+
invertedSpecialFeaturesMap = Object.entries(siteConfig.specialFeatures).reduce(function (acc, _ref9) {
|
|
211
|
+
var _ref10 = _slicedToArray(_ref9, 2),
|
|
212
|
+
key = _ref10[0],
|
|
213
|
+
value = _ref10[1];
|
|
188
214
|
acc[value] = key;
|
|
189
215
|
return acc;
|
|
190
216
|
}, {});
|
|
@@ -208,10 +234,10 @@ var applyFilters = function applyFilters(allListings, selectedFilters, query, li
|
|
|
208
234
|
if (field === "pointsOfInterest") return 1; // continue
|
|
209
235
|
if (field === "specialFeatures" && invertedSpecialFeaturesMap && Object.keys(filterItems).length > 0) {
|
|
210
236
|
results = results.filter(function (listing) {
|
|
211
|
-
return Object.entries(filterItems).some(function (
|
|
212
|
-
var
|
|
213
|
-
filterName =
|
|
214
|
-
filterValue =
|
|
237
|
+
return Object.entries(filterItems).some(function (_ref11) {
|
|
238
|
+
var _ref12 = _slicedToArray(_ref11, 2),
|
|
239
|
+
filterName = _ref12[0],
|
|
240
|
+
filterValue = _ref12[1];
|
|
215
241
|
var listingFieldName = invertedSpecialFeaturesMap[filterName];
|
|
216
242
|
return filterValue && listing.fields[listingFieldName] == 1;
|
|
217
243
|
});
|
|
@@ -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 == \"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\tif (index === 0 && filterOptions?.locations) {\n\t\t\t\t\treturn filterOptions.locations.find(filter => filter.id === fieldName);\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 = allListings.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\tconsole.log(selectedFilters.state);\n\t\t\t\t\tconsole.log(selectedFilters);\n\t\t\t\t\tif(siteConfig.locationFiltersShown.includes('state') && selectedFilters.state){\n\t\t\t\t\t\tconst stateMatches = [...new Set(filteredListings.map(listing => listing.fields.state))];\n\t\t\t\t\t\tconst filteredByLocation = allListings.filter(listing => stateMatches.includes(listing.fields.state));\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}else{\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, allListings, 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'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);\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","locations","locationFiltersShown","index","cityIncluded","stateIncluded","cityStateIncluded","uniqueCities","_toConsumableArray","city","uniqueStates","state","uniqueCityStates","cityState","filteredByLocation","cityMatches","stateMatches","cityStateMatches","console","log","pointsOfInterest","pointsOfInterestConfig","applyFilters","query","listingEntities","results","invertedSpecialFeaturesMap","_ref7","_ref8","hasFavorite","Favorite","favorite","_loop","_Object$entries$_i","_Object$entries","_i","filterItems","formattedField","some","_ref9","_ref10","filterName","filterValue","listingFieldName","searchResults","distinctItems","getDistinctItemsByProximity","mapItems","includeScore","threshold","fuse","Fuse","lowerCaseQuery","toLowerCase","queryTerms","split","exactIdMatch","result","toString","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 */\r\nimport { getDistinctItemsByProximity } from '~/util/mapUtil';\r\n\r\nimport Fuse from 'fuse.js';\r\n\r\nexport const getFilterOptions = (listings, filteredListings, field, excludeZeroCount = null) => {\r\n\tconst options = new Set();\r\n\tlistings.forEach(listing => {\r\n\t\tif (listing.fields[field]) {\r\n\t\t\toptions.add(listing.fields[field]);\r\n\t\t}\r\n\t});\r\n\r\n\tconst optionCounts = {};\r\n\toptions.forEach(option => {\r\n\t\toptionCounts[option] = 0;\r\n\t});\r\n\r\n\tfilteredListings.forEach(listing => {\r\n\t\tconst value = listing.fields[field];\r\n\t\tif (value && optionCounts.hasOwnProperty(value)) {\r\n\t\t\toptionCounts[value] += 1;\r\n\t\t}\r\n\t});\r\n\r\n\treturn Array.from(options)\r\n\t\t.sort()\r\n\t\t.map(option => ({\r\n\t\t\tname: option,\r\n\t\t\tcount: optionCounts[option] || 0\r\n\t\t}))\r\n\t\t.filter(option => !(excludeZeroCount === true && option.count === 0));\r\n};\r\n\r\nexport const getSpecialFeatureOptions = (listings, filteredListings, siteConfig, favorites) => {\r\n\tconst specialFeatures = siteConfig.specialFeatures;\r\n\tconst featureCounts = Object.keys(specialFeatures).sort().reduce((acc, key) => {\r\n\t\tacc[specialFeatures[key]] = 0;\r\n\t\treturn acc;\r\n\t}, {});\r\n\r\n\tfilteredListings.forEach(listing => {\r\n\t\tObject.entries(specialFeatures).forEach(([featureKey, featureName]) => {\r\n\t\t\tif (listing.fields[featureKey] == 1) {\r\n\t\t\t\tfeatureCounts[featureName] += 1;\r\n\t\t\t}\r\n\t\t});\r\n\t});\r\n\r\n\tconst specialFeatureOptions = Object.entries(featureCounts).map(([name, count]) => ({\r\n\t\tname,\r\n\t\tcount\r\n\t}));\r\n\r\n\tfor (let option of specialFeatureOptions) {\r\n\t\tif (option.name === 'Favorite') {\r\n\t\t\toption.count = filteredListings.filter(x => favorites.includes(x.id)).length;\r\n\t\t}\r\n\t}\r\n\r\n\treturn specialFeatureOptions;\r\n};\r\n\r\nconst getPointsOfInterestOptions = pointsOfInterestNames => {\r\n\treturn Object.entries(pointsOfInterestNames).sort().map(([key, name]) => ({\r\n\t\tkey,\r\n\t\tname\r\n\t}));\r\n};\r\n\r\nexport const generateFilterOptions = (\r\n\tfilteredListings,\r\n\tallListings,\r\n\tsiteConfig,\r\n\tfilterOptions,\r\n\tparentField,\r\n\tfavorites,\r\n\tselectedFilters\r\n) => {\r\n\tif (allListings.length > 0) {\r\n\t\tconst dynamicFilters = siteConfig.fieldFiltersShown.map(fieldName => {\r\n\t\t\tif (fieldName === parentField && filterOptions?.filters) {\r\n\t\t\t\treturn filterOptions.filters.find(filter => filter.id === fieldName);\r\n\t\t\t}\r\n\t\t\tif(fieldName == 'categoryClass'){\r\n\t\t\t\treturn {\r\n\t\t\t\t\tid: fieldName,\r\n\t\t\t\t\ttitle: siteConfig.fieldNames[fieldName],\r\n\t\t\t\t\titems: getFilterOptions(allListings, allListings, fieldName)\r\n\t\t\t\t};\r\n\t\t\t}\r\n\t\t\tif(fieldName == 'category' && selectedFilters.categoryClass){\r\n\t\t\t\tconst categoryClassKeys = Object.keys(selectedFilters.categoryClass);\r\n\t\t\t\tconst filteredListings = allListings.filter(\r\n\t\t\t\t\tx => categoryClassKeys.includes(x.fields?.categoryClass)\r\n\t\t\t\t);\r\n\t\t\t\treturn {\r\n\t\t\t\t\tid: fieldName,\r\n\t\t\t\t\ttitle: siteConfig.fieldNames[fieldName],\r\n\t\t\t\t\titems: getFilterOptions(allListings, filteredListings, fieldName, false)\r\n\t\t\t\t};\r\n\t\t\t}\r\n\t\t\tif (fieldName == \"specialFeatures\") {\r\n\t\t\t\treturn {\r\n\t\t\t\t\tid: fieldName,\r\n\t\t\t\t\ttitle: siteConfig.fieldNames[fieldName],\r\n\t\t\t\t\titems: getSpecialFeatureOptions(allListings, filteredListings, siteConfig, favorites).sort()\r\n\t\t\t\t};\r\n\t\t\t}\r\n\t\t\treturn {\r\n\t\t\t\tid: fieldName,\r\n\t\t\t\ttitle: siteConfig.fieldNames[fieldName],\r\n\t\t\t\titems: getFilterOptions(allListings, filteredListings, fieldName)\r\n\t\t\t};\r\n\t\t});\r\n\r\n\t\tconst locations =\r\n\t\t\tsiteConfig.locationFiltersShown.map((fieldName, index) => {\r\n\t\t\t\tlet locationFilteredListings = allListings;\r\n\t\t\t\tlocationFilteredListings = allListings.filter(listing => {\r\n\t\t\t\t\treturn Object.entries(selectedFilters).every(([key, value]) => {\r\n\t\t\t\t\t\tif (siteConfig.locationFiltersShown.includes(key)) return true;\r\n\t\t\t\t\t\tif (value && typeof value === 'object' && value[listing.fields[key]] === true) {\r\n\t\t\t\t\t\t\treturn true;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\treturn false;\r\n\t\t\t\t\t});\r\n\t\t\t\t});\r\n\t\t\t\tif (index === 0) {\r\n\t\t\t\t\treturn {\r\n\t\t\t\t\t\tid: fieldName,\r\n\t\t\t\t\t\ttitle: siteConfig.fieldNames[fieldName],\r\n\t\t\t\t\t\titems: getFilterOptions(allListings, locationFilteredListings, fieldName, true)\r\n\t\t\t\t\t};\r\n\t\t\t\t}\r\n\t\t\t\t if (fieldName === 'entityName' && filterOptions?.locations) {\r\n\t\t\t\t\tconst cityIncluded = siteConfig.locationFiltersShown.includes('city');\r\n\t\t\t\t\tconst stateIncluded = siteConfig.locationFiltersShown.includes('state');\r\n\t\t\t\t\tconst cityStateIncluded = siteConfig.locationFiltersShown.includes('cityState');\r\n\t\t\t\t\tconst uniqueCities = cityIncluded ? [...new Set(filteredListings.map(listing => listing.fields.city))] : [];\r\n\t\t\t\t\tconst uniqueStates = stateIncluded ? [...new Set(filteredListings.map(listing => listing.fields.state))] : [];\r\n\t\t\t\t\tconst uniqueCityStates = cityStateIncluded ? [...new Set(filteredListings.map(listing => listing.fields.cityState))] : [];\r\n\t\t\t\t\tconst filteredByLocation = locationFilteredListings.filter(listing => {\r\n\t\t\t\t\t\tconst cityMatches = cityIncluded ? uniqueCities.includes(listing.fields.city) : true;\r\n\t\t\t\t\t\tconst stateMatches = stateIncluded ? uniqueStates.includes(listing.fields.state) : true;\r\n\t\t\t\t\t\tconst cityStateMatches = cityStateIncluded ? uniqueCityStates.includes(listing.fields.cityState) : true;\r\n\t\t\t\t\t\treturn cityMatches && stateMatches && cityStateMatches;\r\n\t\t\t\t\t});\r\n\t\t\t\t\treturn {\r\n\t\t\t\t\t\tid: fieldName,\r\n\t\t\t\t\t\ttitle: siteConfig.fieldNames[fieldName],\r\n\t\t\t\t\t\titems: getFilterOptions(allListings, filteredByLocation, fieldName, true)\r\n\t\t\t\t\t};\r\n\t\t\t\t}\r\n\t\t\t\tif (fieldName === 'city') {\r\n\t\t\t\t\tif (siteConfig.locationFiltersShown.includes('state') && selectedFilters.state) {\r\n\t\t\t\t\t\tconst selectedStates = Object.keys(selectedFilters.state).filter(\r\n\t\t\t\t\t\t\tstate => selectedFilters.state[state] === true\r\n\t\t\t\t\t\t);\r\n\r\n\t\t\t\t\t\tconst filteredByLocation = locationFilteredListings.filter(listing =>\r\n\t\t\t\t\t\t\tselectedStates.includes(listing.fields.state)\r\n\t\t\t\t\t\t);\r\n\r\n\t\t\t\t\t\treturn {\r\n\t\t\t\t\t\t\tid: fieldName,\r\n\t\t\t\t\t\t\ttitle: siteConfig.fieldNames[fieldName],\r\n\t\t\t\t\t\t\titems: getFilterOptions(allListings, filteredByLocation, fieldName, true)\r\n\t\t\t\t\t\t};\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\treturn {\r\n\t\t\t\t\tid: fieldName,\r\n\t\t\t\t\ttitle: siteConfig.fieldNames[fieldName],\r\n\t\t\t\t\titems: getFilterOptions(allListings, filteredListings, fieldName, true)\r\n\t\t\t\t};\r\n\t\t\t});\r\n\r\n\t\tconst pointsOfInterest = {\r\n\t\t\tid: \"pointsOfInterest\",\r\n\t\t\ttitle: siteConfig.pointsOfInterestConfig.title,\r\n\t\t\titems: getPointsOfInterestOptions(\r\n\t\t\t\tsiteConfig.pointsOfInterestConfig.pointsOfInterestNames\r\n\t\t\t)\r\n\t\t};\r\n\r\n\t\treturn {\r\n\t\t\tfilters: dynamicFilters,\r\n\t\t\tlocations: locations,\r\n\t\t\tpointsOfInterest: pointsOfInterest\r\n\t\t};\r\n\t}\r\n\r\n\treturn null;\r\n};\r\n\r\nexport const applyFilters = (\r\n\tallListings,\r\n\tselectedFilters,\r\n\tquery,\r\n\tlistingEntities,\r\n\tfavorites,\r\n\tsiteConfig\r\n) => {\r\n\tlet results = allListings;\r\n\tlet invertedSpecialFeaturesMap;\r\n\tif (siteConfig.specialFeatures) {\r\n\t\tinvertedSpecialFeaturesMap = Object.entries(siteConfig.specialFeatures).reduce((acc, [key, value]) => {\r\n\t\t\tacc[value] = key;\r\n\t\t\treturn acc;\r\n\t\t}, {});\r\n\r\n\t}\r\n\tconst hasFavorite = !!selectedFilters.specialFeatures && !!selectedFilters.specialFeatures.Favorite;\r\n\r\n\tif (hasFavorite && selectedFilters.specialFeatures.Favorite == true) {\r\n\t\tresults = results.filter(x => favorites.includes(x.id));\r\n\t}\r\n\tvar favorite;\r\n\tif (hasFavorite) {\r\n\t\tfavorite = selectedFilters.specialFeatures.Favorite;\r\n\t\tdelete selectedFilters.specialFeatures.Favorite;\r\n\t}\r\n\tfor (const [field, filterItems] of Object.entries(selectedFilters)) {\r\n\t\tconst formattedField = field;\r\n\t\tif (field === \"pointsOfInterest\") continue;\r\n\t\tif (field === \"specialFeatures\" && invertedSpecialFeaturesMap && Object.keys(filterItems).length > 0) {\r\n\t\t\tresults = results.filter(listing => {\r\n\t\t\t\treturn Object.entries(filterItems).some(([filterName, filterValue]) => {\r\n\t\t\t\t\tconst listingFieldName = invertedSpecialFeaturesMap[filterName];\r\n\t\t\t\t\treturn filterValue && listing.fields[listingFieldName] == 1;\r\n\t\t\t\t});\r\n\t\t\t});\r\n\t\t} else if (Object.keys(filterItems).length > 0) {\r\n\t\t\tresults = results.filter(listing =>\r\n\t\t\t\tfilterItems.hasOwnProperty(listing.fields[formattedField])\r\n\t\t\t);\r\n\t\t}\r\n\t}\r\n\tif (query) {\r\n\t\tresults = searchResults(results, query);\r\n\t}\r\n\tconst distinctItems = getDistinctItemsByProximity(results, listingEntities);\r\n\tif (hasFavorite) {\r\n\t\tselectedFilters.specialFeatures.Favorite = favorite;\r\n\t}\r\n\treturn { filteredListings: results, mapItems: distinctItems };\r\n};\r\n\r\nfunction searchResults(results, query) {\r\n\tconst fields = [\r\n\t\t'id',\r\n\t\t'fields.posted',\r\n\t\t'fields.subtitle',\r\n\t\t'fields.education',\r\n\t\t'fields.position',\r\n\t\t'fields.category',\r\n\t\t'fields.categoryclass',\r\n\t\t'fields.shift',\r\n\t\t'fields.citystate',\r\n\t\t'fields.city',\r\n\t\t'fields.state',\r\n\t\t'fields.schedule',\r\n\t\t'fields.customflag1',\r\n\t\t'fields.bonus',\r\n\t\t'fields.remote',\r\n\t\t'fields.useclientjoburl',\r\n\t\t'fields.datecreated',\r\n\t\t'fields.datelastedited'\r\n\t];\r\n\r\n\tconst options = {\r\n\t\tincludeScore: true,\r\n\t\tthreshold: 0.3,\r\n\t\tkeys: fields\r\n\t};\r\n\r\n\tconst fuse = new Fuse(results, options);\r\n\tconst lowerCaseQuery = query.toLowerCase();\r\n\tconst queryTerms = lowerCaseQuery.split(' ');\r\n\r\n\tconst exactIdMatch = results.find(result => result.id.toString() === query);\r\n\tif (exactIdMatch) {\r\n\t\treturn [exactIdMatch];\r\n\t}\r\n\r\n\tconst fuseQuery = queryTerms.map(term => ({\r\n\t\t$or: fields.map(field => ({ [field]: term }))\r\n\t}));\r\n\r\n\tconst fuseResults = fuse.search({ $and: fuseQuery });\r\n\r\n\treturn fuseResults.map(result => result.item);\r\n}\r\n\r\nexport const filterListingsByLocation = (\r\n\tallListings,\r\n\tselectedLocation,\r\n\tlistingEntities\r\n) => {\r\n\tlet results = allListings;\r\n\tif (selectedLocation !== null) {\r\n\t\tresults = results.filter(item =>\r\n\t\t\tselectedLocation.items.hasOwnProperty(item.id)\r\n\t\t);\r\n\t}\r\n\tconst mapItems = getDistinctItemsByProximity(results, listingEntities);\r\n\treturn { filteredListings: results, mapItems: mapItems };\r\n};\r\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","fuseQuery","term","$or","_defineProperty","fuseResults","search","$and","item","filterListingsByLocation","selectedLocation"],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -79,7 +79,7 @@ const HomeBody = ({ siteConfig, navigateToDetails, navigateToEasyApply, Link, li
|
|
|
79
79
|
<MapListProvider
|
|
80
80
|
siteConfig={siteConfig}
|
|
81
81
|
resetFilters={resetFilters}
|
|
82
|
-
|
|
82
|
+
navigateToDetails={navigateToDetails}
|
|
83
83
|
navigateToEasyApply={navigateToEasyApply}
|
|
84
84
|
Link={Link}
|
|
85
85
|
linkFormat={linkFormat}
|
|
@@ -35,7 +35,10 @@ const ButtonGroupApply = ({
|
|
|
35
35
|
const trackViewDetails = () => {
|
|
36
36
|
trackEvent(eventTypes.VIEW_DETAILS_CLICKED, { jobTitle: item.fields.position, jobCategory: item.fields.category, entityDisplayName: item?.mapDetails?.entityDisplayName });
|
|
37
37
|
};
|
|
38
|
-
|
|
38
|
+
console.log(detailsUrl);
|
|
39
|
+
console.log(useDetailsPostMessage);
|
|
40
|
+
console.log(navigateToDetails);
|
|
41
|
+
console.log(useDetailsPostMessage === true && !navigateToDetails, 'query result');
|
|
39
42
|
return (
|
|
40
43
|
<nav
|
|
41
44
|
className={twMerge`
|
|
@@ -70,7 +73,7 @@ const ButtonGroupApply = ({
|
|
|
70
73
|
{detailsText}
|
|
71
74
|
</Button.Anchor>
|
|
72
75
|
}
|
|
73
|
-
{detailsUrl && useDetailsPostMessage !== true && navigateToDetails
|
|
76
|
+
{detailsUrl && useDetailsPostMessage !== true && !navigateToDetails &&
|
|
74
77
|
<Button.Anchor
|
|
75
78
|
href={detailsUrl}
|
|
76
79
|
variant={detailsButtonVariant}
|
|
@@ -81,7 +84,7 @@ const ButtonGroupApply = ({
|
|
|
81
84
|
{detailsText}
|
|
82
85
|
</Button.Anchor>
|
|
83
86
|
}
|
|
84
|
-
{useDetailsPostMessage === true && navigateToDetails
|
|
87
|
+
{useDetailsPostMessage === true && !navigateToDetails &&
|
|
85
88
|
<Button.Btn
|
|
86
89
|
onClick={() => {trackViewDetails; window.parent.postMessage({ itemId: itemId, type: 'LISTING_ID' }, '*'); }}
|
|
87
90
|
variant={detailsButtonVariant}
|
|
@@ -235,7 +235,7 @@ export const MapListProvider: React.FC<MapListProviderProps> = ({
|
|
|
235
235
|
const keys = Object.keys(tempSelectedFilters);
|
|
236
236
|
const lastKey = keys[keys.length - 1];
|
|
237
237
|
const options = generateFilterOptions(
|
|
238
|
-
|
|
238
|
+
filteredListings,
|
|
239
239
|
allListings,
|
|
240
240
|
siteConfig,
|
|
241
241
|
filterOptions,
|
package/src/util/filterUtil.js
CHANGED
|
@@ -1,280 +1,310 @@
|
|
|
1
|
-
/* eslint-disable no-undef */
|
|
2
|
-
import { getDistinctItemsByProximity } from '~/util/mapUtil';
|
|
3
|
-
|
|
4
|
-
import Fuse from 'fuse.js';
|
|
5
|
-
|
|
6
|
-
export const getFilterOptions = (listings, filteredListings, field, excludeZeroCount = null) => {
|
|
7
|
-
const options = new Set();
|
|
8
|
-
listings.forEach(listing => {
|
|
9
|
-
if (listing.fields[field]) {
|
|
10
|
-
options.add(listing.fields[field]);
|
|
11
|
-
}
|
|
12
|
-
});
|
|
13
|
-
|
|
14
|
-
const optionCounts = {};
|
|
15
|
-
options.forEach(option => {
|
|
16
|
-
optionCounts[option] = 0;
|
|
17
|
-
});
|
|
18
|
-
|
|
19
|
-
filteredListings.forEach(listing => {
|
|
20
|
-
const value = listing.fields[field];
|
|
21
|
-
if (value && optionCounts.hasOwnProperty(value)) {
|
|
22
|
-
optionCounts[value] += 1;
|
|
23
|
-
}
|
|
24
|
-
});
|
|
25
|
-
|
|
26
|
-
return Array.from(options)
|
|
27
|
-
.sort()
|
|
28
|
-
.map(option => ({
|
|
29
|
-
name: option,
|
|
30
|
-
count: optionCounts[option] || 0
|
|
31
|
-
}))
|
|
32
|
-
.filter(option => !(excludeZeroCount === true && option.count === 0));
|
|
33
|
-
};
|
|
34
|
-
|
|
35
|
-
export const getSpecialFeatureOptions = (listings, filteredListings, siteConfig, favorites) => {
|
|
36
|
-
const specialFeatures = siteConfig.specialFeatures;
|
|
37
|
-
const featureCounts = Object.keys(specialFeatures).sort().reduce((acc, key) => {
|
|
38
|
-
acc[specialFeatures[key]] = 0;
|
|
39
|
-
return acc;
|
|
40
|
-
}, {});
|
|
41
|
-
|
|
42
|
-
filteredListings.forEach(listing => {
|
|
43
|
-
Object.entries(specialFeatures).forEach(([featureKey, featureName]) => {
|
|
44
|
-
if (listing.fields[featureKey] == 1) {
|
|
45
|
-
featureCounts[featureName] += 1;
|
|
46
|
-
}
|
|
47
|
-
});
|
|
48
|
-
});
|
|
49
|
-
|
|
50
|
-
const specialFeatureOptions = Object.entries(featureCounts).map(([name, count]) => ({
|
|
51
|
-
name,
|
|
52
|
-
count
|
|
53
|
-
}));
|
|
54
|
-
|
|
55
|
-
for (let option of specialFeatureOptions) {
|
|
56
|
-
if (option.name === 'Favorite') {
|
|
57
|
-
option.count = filteredListings.filter(x => favorites.includes(x.id)).length;
|
|
58
|
-
}
|
|
59
|
-
}
|
|
60
|
-
|
|
61
|
-
return specialFeatureOptions;
|
|
62
|
-
};
|
|
63
|
-
|
|
64
|
-
const getPointsOfInterestOptions = pointsOfInterestNames => {
|
|
65
|
-
return Object.entries(pointsOfInterestNames).sort().map(([key, name]) => ({
|
|
66
|
-
key,
|
|
67
|
-
name
|
|
68
|
-
}));
|
|
69
|
-
};
|
|
70
|
-
|
|
71
|
-
export const generateFilterOptions = (
|
|
72
|
-
filteredListings,
|
|
73
|
-
allListings,
|
|
74
|
-
siteConfig,
|
|
75
|
-
filterOptions,
|
|
76
|
-
parentField,
|
|
77
|
-
favorites,
|
|
78
|
-
selectedFilters
|
|
79
|
-
) => {
|
|
80
|
-
if (allListings.length > 0) {
|
|
81
|
-
const dynamicFilters = siteConfig.fieldFiltersShown.map(fieldName => {
|
|
82
|
-
if (fieldName === parentField && filterOptions?.filters) {
|
|
83
|
-
return filterOptions.filters.find(filter => filter.id === fieldName);
|
|
84
|
-
}
|
|
85
|
-
if
|
|
86
|
-
return {
|
|
87
|
-
id: fieldName,
|
|
88
|
-
title: siteConfig.fieldNames[fieldName],
|
|
89
|
-
items:
|
|
90
|
-
};
|
|
91
|
-
}
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
}
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
}
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
}
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
}
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
1
|
+
/* eslint-disable no-undef */
|
|
2
|
+
import { getDistinctItemsByProximity } from '~/util/mapUtil';
|
|
3
|
+
|
|
4
|
+
import Fuse from 'fuse.js';
|
|
5
|
+
|
|
6
|
+
export const getFilterOptions = (listings, filteredListings, field, excludeZeroCount = null) => {
|
|
7
|
+
const options = new Set();
|
|
8
|
+
listings.forEach(listing => {
|
|
9
|
+
if (listing.fields[field]) {
|
|
10
|
+
options.add(listing.fields[field]);
|
|
11
|
+
}
|
|
12
|
+
});
|
|
13
|
+
|
|
14
|
+
const optionCounts = {};
|
|
15
|
+
options.forEach(option => {
|
|
16
|
+
optionCounts[option] = 0;
|
|
17
|
+
});
|
|
18
|
+
|
|
19
|
+
filteredListings.forEach(listing => {
|
|
20
|
+
const value = listing.fields[field];
|
|
21
|
+
if (value && optionCounts.hasOwnProperty(value)) {
|
|
22
|
+
optionCounts[value] += 1;
|
|
23
|
+
}
|
|
24
|
+
});
|
|
25
|
+
|
|
26
|
+
return Array.from(options)
|
|
27
|
+
.sort()
|
|
28
|
+
.map(option => ({
|
|
29
|
+
name: option,
|
|
30
|
+
count: optionCounts[option] || 0
|
|
31
|
+
}))
|
|
32
|
+
.filter(option => !(excludeZeroCount === true && option.count === 0));
|
|
33
|
+
};
|
|
34
|
+
|
|
35
|
+
export const getSpecialFeatureOptions = (listings, filteredListings, siteConfig, favorites) => {
|
|
36
|
+
const specialFeatures = siteConfig.specialFeatures;
|
|
37
|
+
const featureCounts = Object.keys(specialFeatures).sort().reduce((acc, key) => {
|
|
38
|
+
acc[specialFeatures[key]] = 0;
|
|
39
|
+
return acc;
|
|
40
|
+
}, {});
|
|
41
|
+
|
|
42
|
+
filteredListings.forEach(listing => {
|
|
43
|
+
Object.entries(specialFeatures).forEach(([featureKey, featureName]) => {
|
|
44
|
+
if (listing.fields[featureKey] == 1) {
|
|
45
|
+
featureCounts[featureName] += 1;
|
|
46
|
+
}
|
|
47
|
+
});
|
|
48
|
+
});
|
|
49
|
+
|
|
50
|
+
const specialFeatureOptions = Object.entries(featureCounts).map(([name, count]) => ({
|
|
51
|
+
name,
|
|
52
|
+
count
|
|
53
|
+
}));
|
|
54
|
+
|
|
55
|
+
for (let option of specialFeatureOptions) {
|
|
56
|
+
if (option.name === 'Favorite') {
|
|
57
|
+
option.count = filteredListings.filter(x => favorites.includes(x.id)).length;
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
return specialFeatureOptions;
|
|
62
|
+
};
|
|
63
|
+
|
|
64
|
+
const getPointsOfInterestOptions = pointsOfInterestNames => {
|
|
65
|
+
return Object.entries(pointsOfInterestNames).sort().map(([key, name]) => ({
|
|
66
|
+
key,
|
|
67
|
+
name
|
|
68
|
+
}));
|
|
69
|
+
};
|
|
70
|
+
|
|
71
|
+
export const generateFilterOptions = (
|
|
72
|
+
filteredListings,
|
|
73
|
+
allListings,
|
|
74
|
+
siteConfig,
|
|
75
|
+
filterOptions,
|
|
76
|
+
parentField,
|
|
77
|
+
favorites,
|
|
78
|
+
selectedFilters
|
|
79
|
+
) => {
|
|
80
|
+
if (allListings.length > 0) {
|
|
81
|
+
const dynamicFilters = siteConfig.fieldFiltersShown.map(fieldName => {
|
|
82
|
+
if (fieldName === parentField && filterOptions?.filters) {
|
|
83
|
+
return filterOptions.filters.find(filter => filter.id === fieldName);
|
|
84
|
+
}
|
|
85
|
+
if(fieldName == 'categoryClass'){
|
|
86
|
+
return {
|
|
87
|
+
id: fieldName,
|
|
88
|
+
title: siteConfig.fieldNames[fieldName],
|
|
89
|
+
items: getFilterOptions(allListings, allListings, fieldName)
|
|
90
|
+
};
|
|
91
|
+
}
|
|
92
|
+
if(fieldName == 'category' && selectedFilters.categoryClass){
|
|
93
|
+
const categoryClassKeys = Object.keys(selectedFilters.categoryClass);
|
|
94
|
+
const filteredListings = allListings.filter(
|
|
95
|
+
x => categoryClassKeys.includes(x.fields?.categoryClass)
|
|
96
|
+
);
|
|
97
|
+
return {
|
|
98
|
+
id: fieldName,
|
|
99
|
+
title: siteConfig.fieldNames[fieldName],
|
|
100
|
+
items: getFilterOptions(allListings, filteredListings, fieldName, false)
|
|
101
|
+
};
|
|
102
|
+
}
|
|
103
|
+
if (fieldName == "specialFeatures") {
|
|
104
|
+
return {
|
|
105
|
+
id: fieldName,
|
|
106
|
+
title: siteConfig.fieldNames[fieldName],
|
|
107
|
+
items: getSpecialFeatureOptions(allListings, filteredListings, siteConfig, favorites).sort()
|
|
108
|
+
};
|
|
109
|
+
}
|
|
110
|
+
return {
|
|
111
|
+
id: fieldName,
|
|
112
|
+
title: siteConfig.fieldNames[fieldName],
|
|
113
|
+
items: getFilterOptions(allListings, filteredListings, fieldName)
|
|
114
|
+
};
|
|
115
|
+
});
|
|
116
|
+
|
|
117
|
+
const locations =
|
|
118
|
+
siteConfig.locationFiltersShown.map((fieldName, index) => {
|
|
119
|
+
let locationFilteredListings = allListings;
|
|
120
|
+
locationFilteredListings = allListings.filter(listing => {
|
|
121
|
+
return Object.entries(selectedFilters).every(([key, value]) => {
|
|
122
|
+
if (siteConfig.locationFiltersShown.includes(key)) return true;
|
|
123
|
+
if (value && typeof value === 'object' && value[listing.fields[key]] === true) {
|
|
124
|
+
return true;
|
|
125
|
+
}
|
|
126
|
+
return false;
|
|
127
|
+
});
|
|
128
|
+
});
|
|
129
|
+
if (index === 0) {
|
|
130
|
+
return {
|
|
131
|
+
id: fieldName,
|
|
132
|
+
title: siteConfig.fieldNames[fieldName],
|
|
133
|
+
items: getFilterOptions(allListings, locationFilteredListings, fieldName, true)
|
|
134
|
+
};
|
|
135
|
+
}
|
|
136
|
+
if (fieldName === 'entityName' && filterOptions?.locations) {
|
|
137
|
+
const cityIncluded = siteConfig.locationFiltersShown.includes('city');
|
|
138
|
+
const stateIncluded = siteConfig.locationFiltersShown.includes('state');
|
|
139
|
+
const cityStateIncluded = siteConfig.locationFiltersShown.includes('cityState');
|
|
140
|
+
const uniqueCities = cityIncluded ? [...new Set(filteredListings.map(listing => listing.fields.city))] : [];
|
|
141
|
+
const uniqueStates = stateIncluded ? [...new Set(filteredListings.map(listing => listing.fields.state))] : [];
|
|
142
|
+
const uniqueCityStates = cityStateIncluded ? [...new Set(filteredListings.map(listing => listing.fields.cityState))] : [];
|
|
143
|
+
const filteredByLocation = locationFilteredListings.filter(listing => {
|
|
144
|
+
const cityMatches = cityIncluded ? uniqueCities.includes(listing.fields.city) : true;
|
|
145
|
+
const stateMatches = stateIncluded ? uniqueStates.includes(listing.fields.state) : true;
|
|
146
|
+
const cityStateMatches = cityStateIncluded ? uniqueCityStates.includes(listing.fields.cityState) : true;
|
|
147
|
+
return cityMatches && stateMatches && cityStateMatches;
|
|
148
|
+
});
|
|
149
|
+
return {
|
|
150
|
+
id: fieldName,
|
|
151
|
+
title: siteConfig.fieldNames[fieldName],
|
|
152
|
+
items: getFilterOptions(allListings, filteredByLocation, fieldName, true)
|
|
153
|
+
};
|
|
154
|
+
}
|
|
155
|
+
if (fieldName === 'city') {
|
|
156
|
+
if (siteConfig.locationFiltersShown.includes('state') && selectedFilters.state) {
|
|
157
|
+
const selectedStates = Object.keys(selectedFilters.state).filter(
|
|
158
|
+
state => selectedFilters.state[state] === true
|
|
159
|
+
);
|
|
160
|
+
|
|
161
|
+
const filteredByLocation = locationFilteredListings.filter(listing =>
|
|
162
|
+
selectedStates.includes(listing.fields.state)
|
|
163
|
+
);
|
|
164
|
+
|
|
165
|
+
return {
|
|
166
|
+
id: fieldName,
|
|
167
|
+
title: siteConfig.fieldNames[fieldName],
|
|
168
|
+
items: getFilterOptions(allListings, filteredByLocation, fieldName, true)
|
|
169
|
+
};
|
|
170
|
+
}
|
|
171
|
+
}
|
|
172
|
+
|
|
173
|
+
return {
|
|
174
|
+
id: fieldName,
|
|
175
|
+
title: siteConfig.fieldNames[fieldName],
|
|
176
|
+
items: getFilterOptions(allListings, filteredListings, fieldName, true)
|
|
177
|
+
};
|
|
178
|
+
});
|
|
179
|
+
|
|
180
|
+
const pointsOfInterest = {
|
|
181
|
+
id: "pointsOfInterest",
|
|
182
|
+
title: siteConfig.pointsOfInterestConfig.title,
|
|
183
|
+
items: getPointsOfInterestOptions(
|
|
184
|
+
siteConfig.pointsOfInterestConfig.pointsOfInterestNames
|
|
185
|
+
)
|
|
186
|
+
};
|
|
187
|
+
|
|
188
|
+
return {
|
|
189
|
+
filters: dynamicFilters,
|
|
190
|
+
locations: locations,
|
|
191
|
+
pointsOfInterest: pointsOfInterest
|
|
192
|
+
};
|
|
193
|
+
}
|
|
194
|
+
|
|
195
|
+
return null;
|
|
196
|
+
};
|
|
197
|
+
|
|
198
|
+
export const applyFilters = (
|
|
199
|
+
allListings,
|
|
200
|
+
selectedFilters,
|
|
201
|
+
query,
|
|
202
|
+
listingEntities,
|
|
203
|
+
favorites,
|
|
204
|
+
siteConfig
|
|
205
|
+
) => {
|
|
206
|
+
let results = allListings;
|
|
207
|
+
let invertedSpecialFeaturesMap;
|
|
208
|
+
if (siteConfig.specialFeatures) {
|
|
209
|
+
invertedSpecialFeaturesMap = Object.entries(siteConfig.specialFeatures).reduce((acc, [key, value]) => {
|
|
210
|
+
acc[value] = key;
|
|
211
|
+
return acc;
|
|
212
|
+
}, {});
|
|
213
|
+
|
|
214
|
+
}
|
|
215
|
+
const hasFavorite = !!selectedFilters.specialFeatures && !!selectedFilters.specialFeatures.Favorite;
|
|
216
|
+
|
|
217
|
+
if (hasFavorite && selectedFilters.specialFeatures.Favorite == true) {
|
|
218
|
+
results = results.filter(x => favorites.includes(x.id));
|
|
219
|
+
}
|
|
220
|
+
var favorite;
|
|
221
|
+
if (hasFavorite) {
|
|
222
|
+
favorite = selectedFilters.specialFeatures.Favorite;
|
|
223
|
+
delete selectedFilters.specialFeatures.Favorite;
|
|
224
|
+
}
|
|
225
|
+
for (const [field, filterItems] of Object.entries(selectedFilters)) {
|
|
226
|
+
const formattedField = field;
|
|
227
|
+
if (field === "pointsOfInterest") continue;
|
|
228
|
+
if (field === "specialFeatures" && invertedSpecialFeaturesMap && Object.keys(filterItems).length > 0) {
|
|
229
|
+
results = results.filter(listing => {
|
|
230
|
+
return Object.entries(filterItems).some(([filterName, filterValue]) => {
|
|
231
|
+
const listingFieldName = invertedSpecialFeaturesMap[filterName];
|
|
232
|
+
return filterValue && listing.fields[listingFieldName] == 1;
|
|
233
|
+
});
|
|
234
|
+
});
|
|
235
|
+
} else if (Object.keys(filterItems).length > 0) {
|
|
236
|
+
results = results.filter(listing =>
|
|
237
|
+
filterItems.hasOwnProperty(listing.fields[formattedField])
|
|
238
|
+
);
|
|
239
|
+
}
|
|
240
|
+
}
|
|
241
|
+
if (query) {
|
|
242
|
+
results = searchResults(results, query);
|
|
243
|
+
}
|
|
244
|
+
const distinctItems = getDistinctItemsByProximity(results, listingEntities);
|
|
245
|
+
if (hasFavorite) {
|
|
246
|
+
selectedFilters.specialFeatures.Favorite = favorite;
|
|
247
|
+
}
|
|
248
|
+
return { filteredListings: results, mapItems: distinctItems };
|
|
249
|
+
};
|
|
250
|
+
|
|
251
|
+
function searchResults(results, query) {
|
|
252
|
+
const fields = [
|
|
253
|
+
'id',
|
|
254
|
+
'fields.posted',
|
|
255
|
+
'fields.subtitle',
|
|
256
|
+
'fields.education',
|
|
257
|
+
'fields.position',
|
|
258
|
+
'fields.category',
|
|
259
|
+
'fields.categoryclass',
|
|
260
|
+
'fields.shift',
|
|
261
|
+
'fields.citystate',
|
|
262
|
+
'fields.city',
|
|
263
|
+
'fields.state',
|
|
264
|
+
'fields.schedule',
|
|
265
|
+
'fields.customflag1',
|
|
266
|
+
'fields.bonus',
|
|
267
|
+
'fields.remote',
|
|
268
|
+
'fields.useclientjoburl',
|
|
269
|
+
'fields.datecreated',
|
|
270
|
+
'fields.datelastedited'
|
|
271
|
+
];
|
|
272
|
+
|
|
273
|
+
const options = {
|
|
274
|
+
includeScore: true,
|
|
275
|
+
threshold: 0.3,
|
|
276
|
+
keys: fields
|
|
277
|
+
};
|
|
278
|
+
|
|
279
|
+
const fuse = new Fuse(results, options);
|
|
280
|
+
const lowerCaseQuery = query.toLowerCase();
|
|
281
|
+
const queryTerms = lowerCaseQuery.split(' ');
|
|
282
|
+
|
|
283
|
+
const exactIdMatch = results.find(result => result.id.toString() === query);
|
|
284
|
+
if (exactIdMatch) {
|
|
285
|
+
return [exactIdMatch];
|
|
286
|
+
}
|
|
287
|
+
|
|
288
|
+
const fuseQuery = queryTerms.map(term => ({
|
|
289
|
+
$or: fields.map(field => ({ [field]: term }))
|
|
290
|
+
}));
|
|
291
|
+
|
|
292
|
+
const fuseResults = fuse.search({ $and: fuseQuery });
|
|
293
|
+
|
|
294
|
+
return fuseResults.map(result => result.item);
|
|
295
|
+
}
|
|
296
|
+
|
|
297
|
+
export const filterListingsByLocation = (
|
|
298
|
+
allListings,
|
|
299
|
+
selectedLocation,
|
|
300
|
+
listingEntities
|
|
301
|
+
) => {
|
|
302
|
+
let results = allListings;
|
|
303
|
+
if (selectedLocation !== null) {
|
|
304
|
+
results = results.filter(item =>
|
|
305
|
+
selectedLocation.items.hasOwnProperty(item.id)
|
|
306
|
+
);
|
|
307
|
+
}
|
|
308
|
+
const mapItems = getDistinctItemsByProximity(results, listingEntities);
|
|
309
|
+
return { filteredListings: results, mapItems: mapItems };
|
|
310
|
+
};
|