sr-npm 1.7.1201 → 1.7.1203
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/backend/careersMultiBoxesPageIds.js +0 -7
- package/package.json +2 -2
- package/pages/careersMultiBoxesPage.js +45 -46
- package/pages/careersPage.js +13 -13
- package/pages/homePage.js +9 -10
- package/pages/pagesUtils.js +152 -7
- package/pages/positionPage.js +4 -8
- package/public/index.js +0 -1
- package/public/selectors.js +2 -6
- package/public/primarySearchUtils.js +0 -157
|
@@ -34,12 +34,6 @@ const CAREERS_MULTI_BOXES_PAGE_CONSTS={
|
|
|
34
34
|
RESULTS_MULTI_STATE_BOX: '#multiStateBox1',
|
|
35
35
|
}
|
|
36
36
|
|
|
37
|
-
const PRIMARY_SEARCH_STATES={
|
|
38
|
-
CATEGORY_RESULTS: 'categoryResults',
|
|
39
|
-
JOB_RESULTS: 'jobResults',
|
|
40
|
-
NO_RESULTS: 'noResults',
|
|
41
|
-
}
|
|
42
|
-
|
|
43
37
|
const TWG_JOBS_COLLECTION_FIELDS={
|
|
44
38
|
LINK_JOBS_TITLE: 'link-jobs-title',
|
|
45
39
|
LINK_JOBS_REF_ID_SLUG: 'link-jobs-refId-slug',
|
|
@@ -88,5 +82,4 @@ module.exports = {
|
|
|
88
82
|
CATEGORY_CUSTOM_FIELD_ID_IN_CMS,
|
|
89
83
|
possibleUrlParams,
|
|
90
84
|
TWG_JOBS_COLLECTION_FIELDS,
|
|
91
|
-
PRIMARY_SEARCH_STATES,
|
|
92
85
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "sr-npm",
|
|
3
|
-
"version": "1.7.
|
|
3
|
+
"version": "1.7.1203",
|
|
4
4
|
"description": "",
|
|
5
5
|
"main": "index.js",
|
|
6
6
|
"scripts": {
|
|
@@ -18,7 +18,7 @@
|
|
|
18
18
|
"homepage": "https://github.com/psdevteamenterprise/sr-npm#readme",
|
|
19
19
|
"dependencies": {
|
|
20
20
|
"@hisense-staging/velo-npm": "3.0.19",
|
|
21
|
-
"@wix/data": "^1.0.
|
|
21
|
+
"@wix/data": "^1.0.211",
|
|
22
22
|
"@wix/essentials": "^0.1.24",
|
|
23
23
|
"@wix/secrets": "1.0.53",
|
|
24
24
|
"@wix/site-location": "^1.0.0",
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
const { COLLECTIONS,CUSTOM_VALUES_COLLECTION_FIELDS,JOBS_COLLECTION_FIELDS } = require('../backend/collectionConsts');
|
|
2
|
-
const { CAREERS_PAGE_SELECTORS
|
|
2
|
+
const { CAREERS_PAGE_SELECTORS } = require('../public/selectors');
|
|
3
3
|
|
|
4
4
|
const { window } = require('@wix/site-window');
|
|
5
5
|
const { queryParams,onChange} = require('wix-location-frontend');
|
|
@@ -18,9 +18,11 @@ const { groupValuesByField,
|
|
|
18
18
|
getFieldByTitle,
|
|
19
19
|
getCorrectOption,
|
|
20
20
|
getOptionIndexFromCheckBox,
|
|
21
|
+
loadPrimarySearchRepeater,
|
|
22
|
+
bindPrimarySearch,
|
|
23
|
+
primarySearch,
|
|
21
24
|
getAllDatasetItems
|
|
22
25
|
} = require('./pagesUtils');
|
|
23
|
-
const { handlePrimarySearch, queryPrimarySearchResults } = require('../public/primarySearchUtils');
|
|
24
26
|
|
|
25
27
|
|
|
26
28
|
let dontUpdateThisCheckBox;
|
|
@@ -38,6 +40,7 @@ let secondarySearchIsFilled=false // whether the secondary search is filled with
|
|
|
38
40
|
let keywordAllJobs; // all jobs that are displayed in the jobs repeater when the keyword is filled
|
|
39
41
|
let ActivateURLOnchange=true; // whether to activate the url onchange
|
|
40
42
|
let considerAllJobs=false; // whether to consider all jobs or not
|
|
43
|
+
|
|
41
44
|
const pagination = {
|
|
42
45
|
pageSize: 10,
|
|
43
46
|
currentPage: 1,
|
|
@@ -50,19 +53,18 @@ async function careersMultiBoxesPageOnReady(_$w,urlParams) {
|
|
|
50
53
|
});
|
|
51
54
|
await loadData(_$w);
|
|
52
55
|
await loadJobsRepeater(_$w); // if we remove the await here the job list will be flaky , it doesn't fill it properly
|
|
53
|
-
|
|
56
|
+
loadPrimarySearchRepeater(_$w);
|
|
54
57
|
await loadFilters(_$w);
|
|
55
58
|
loadSelectedValuesRepeater(_$w);
|
|
56
59
|
bindSearchInput(_$w);
|
|
57
60
|
loadPaginationButtons(_$w);
|
|
58
|
-
|
|
61
|
+
if (await window.formFactor() === "Mobile") {
|
|
62
|
+
handleFilterInMobile(_$w);
|
|
63
|
+
}
|
|
59
64
|
await handleUrlParams(_$w, urlParams);
|
|
60
65
|
_$w(CAREERS_MULTI_BOXES_PAGE_CONSTS.CLEAR_ALL_BUTTON_ID).onClick(async () => {
|
|
61
66
|
await clearAll(_$w);
|
|
62
67
|
});
|
|
63
|
-
if (await window.formFactor() === "Mobile") {
|
|
64
|
-
handleFilterInMobile(_$w);
|
|
65
|
-
}
|
|
66
68
|
_$w(CAREERS_MULTI_BOXES_PAGE_CONSTS.RESULTS_MULTI_STATE_BOX).changeState("results");
|
|
67
69
|
}
|
|
68
70
|
|
|
@@ -93,7 +95,6 @@ async function clearAll(_$w,urlOnChange=false) {
|
|
|
93
95
|
secondarySearchIsFilled=false;
|
|
94
96
|
currentJobs=alljobs;
|
|
95
97
|
keywordAllJobs=undefined;
|
|
96
|
-
considerAllJobs=false;
|
|
97
98
|
if(!urlOnChange) {
|
|
98
99
|
console.log("inside clearAll removing url params");
|
|
99
100
|
ActivateURLOnchange=false;
|
|
@@ -116,26 +117,16 @@ function handleFilterInMobile(_$w) {
|
|
|
116
117
|
CAREERS_PAGE_SELECTORS.SECTION_3,
|
|
117
118
|
CAREERS_PAGE_SELECTORS.LINE_3,
|
|
118
119
|
CAREERS_PAGE_SELECTORS.FILTER_ICON];
|
|
119
|
-
|
|
120
|
-
const mobileFilterBoxSelectors = [
|
|
121
|
-
CAREERS_PAGE_SELECTORS.FILTER_BOX,
|
|
122
|
-
CAREERS_PAGE_SELECTORS.REFINE_SEARCH_BUTTON,
|
|
123
|
-
CAREERS_PAGE_SELECTORS.EXIT_BUTTON,
|
|
124
|
-
];
|
|
125
120
|
|
|
126
121
|
_$w(CAREERS_PAGE_SELECTORS.FILTER_ICON).onClick(()=>{
|
|
127
|
-
|
|
128
|
-
_$w(selector).expand();
|
|
129
|
-
});
|
|
122
|
+
_$w(CAREERS_PAGE_SELECTORS.FILTER_BOX).expand();
|
|
130
123
|
searchResultsSelectors.forEach(selector => {
|
|
131
124
|
_$w(selector).collapse();
|
|
132
125
|
});
|
|
133
126
|
});
|
|
134
127
|
|
|
135
128
|
const exitFilterBox = () => {
|
|
136
|
-
|
|
137
|
-
_$w(selector).collapse();
|
|
138
|
-
});
|
|
129
|
+
_$w(CAREERS_PAGE_SELECTORS.FILTER_BOX).collapse();
|
|
139
130
|
searchResultsSelectors.forEach(selector => {
|
|
140
131
|
_$w(selector).expand();
|
|
141
132
|
});
|
|
@@ -148,11 +139,6 @@ function handleFilterInMobile(_$w) {
|
|
|
148
139
|
_$w(CAREERS_PAGE_SELECTORS.REFINE_SEARCH_BUTTON).onClick(()=>{
|
|
149
140
|
exitFilterBox();
|
|
150
141
|
});
|
|
151
|
-
|
|
152
|
-
//onmobile we should collapse the filter box and the refine search button by default
|
|
153
|
-
mobileFilterBoxSelectors.forEach(selector => {
|
|
154
|
-
_$w(selector).collapse();
|
|
155
|
-
});
|
|
156
142
|
}
|
|
157
143
|
|
|
158
144
|
|
|
@@ -162,10 +148,10 @@ async function handleUrlParams(_$w,urlParams,handleBackAndForth=false) {
|
|
|
162
148
|
let currentApplyFilterFlag=false;
|
|
163
149
|
//apply this first to determine all jobs
|
|
164
150
|
if(urlParams.keyword) {
|
|
165
|
-
applyFiltering = await
|
|
151
|
+
applyFiltering = await primarySearch(_$w, decodeURIComponent(urlParams.keyword));
|
|
166
152
|
_$w(CAREERS_MULTI_BOXES_PAGE_CONSTS.PRIMARY_SEARCH_INPUT).value = decodeURIComponent(urlParams.keyword);
|
|
167
153
|
|
|
168
|
-
const items = await getAllDatasetItems(_$w,
|
|
154
|
+
const items = await getAllDatasetItems(_$w, CAREERS_MULTI_BOXES_PAGE_CONSTS.JOBS_DATASET);
|
|
169
155
|
|
|
170
156
|
currentJobs = items;
|
|
171
157
|
keywordAllJobs = items;
|
|
@@ -286,14 +272,14 @@ async function handleParams(_$w,param,values) {
|
|
|
286
272
|
fieldTitle==="brands"? fieldTitle="brand":fieldTitle;
|
|
287
273
|
ActivateURLOnchange=false;
|
|
288
274
|
const previousSelectedSize=selectedByField.size;
|
|
289
|
-
|
|
290
275
|
if (updated.length) {
|
|
291
276
|
selectedByField.set(fieldId, updated);
|
|
292
|
-
|
|
277
|
+
|
|
293
278
|
queryParams.add({ [fieldTitle] : updated.map(val=>encodeURIComponent(val)).join(',') });
|
|
294
279
|
} else {
|
|
295
280
|
selectedByField.delete(fieldId);
|
|
296
281
|
handleConsiderAllJobs(previousSelectedSize,selectedByField.size);
|
|
282
|
+
|
|
297
283
|
queryParams.remove([fieldTitle ]);
|
|
298
284
|
}
|
|
299
285
|
|
|
@@ -403,10 +389,11 @@ async function loadJobsRepeater(_$w) {
|
|
|
403
389
|
fieldTitle==="brands"? fieldTitle="brand":fieldTitle;
|
|
404
390
|
ActivateURLOnchange=false;
|
|
405
391
|
const previousSelectedSize=selectedByField.size;
|
|
392
|
+
|
|
406
393
|
if (selected && selected.length) {
|
|
407
|
-
|
|
408
394
|
selectedByField.set(field._id, selected);
|
|
409
|
-
|
|
395
|
+
|
|
396
|
+
|
|
410
397
|
if(fieldTitle==="brand" || fieldTitle==="storename") {
|
|
411
398
|
//in this case we need the label not valueid
|
|
412
399
|
const valueLabels=getValueFromValueId(selected,value);
|
|
@@ -417,7 +404,7 @@ async function loadJobsRepeater(_$w) {
|
|
|
417
404
|
}
|
|
418
405
|
|
|
419
406
|
} else {
|
|
420
|
-
selectedByField.delete(field._id);
|
|
407
|
+
selectedByField.delete(field._id);
|
|
421
408
|
handleConsiderAllJobs(previousSelectedSize,selectedByField.size);
|
|
422
409
|
queryParams.remove([fieldTitle ]);
|
|
423
410
|
}
|
|
@@ -440,17 +427,6 @@ async function loadJobsRepeater(_$w) {
|
|
|
440
427
|
}
|
|
441
428
|
}
|
|
442
429
|
|
|
443
|
-
|
|
444
|
-
function handleConsiderAllJobs(previousSelectedSize,currentSelectedSize) {
|
|
445
|
-
if(previousSelectedSize===2 && currentSelectedSize===1) {
|
|
446
|
-
considerAllJobs=true;
|
|
447
|
-
}
|
|
448
|
-
else{
|
|
449
|
-
considerAllJobs=false;
|
|
450
|
-
}
|
|
451
|
-
}
|
|
452
|
-
|
|
453
|
-
|
|
454
430
|
function getValueFromValueId(valueIds, value) {
|
|
455
431
|
let valueLabels = [];
|
|
456
432
|
let currentVal
|
|
@@ -470,14 +446,35 @@ function getValueFromValueId(valueIds, value) {
|
|
|
470
446
|
updateTotalJobsCountText(_$w);
|
|
471
447
|
}
|
|
472
448
|
|
|
449
|
+
function handleConsiderAllJobs(previousSelectedSize,currentSelectedSize) {
|
|
450
|
+
if(previousSelectedSize===2 && currentSelectedSize===1) {
|
|
451
|
+
|
|
452
|
+
considerAllJobs=true;
|
|
453
|
+
}
|
|
454
|
+
else{
|
|
455
|
+
considerAllJobs=false;
|
|
456
|
+
}
|
|
457
|
+
}
|
|
458
|
+
|
|
473
459
|
function updateOptionsUI(_$w,fieldTitle, fieldId, searchQuery,clearAll=false) {
|
|
474
460
|
let base = optionsByFieldId.get(fieldId) || [];
|
|
475
|
-
|
|
461
|
+
let countsMap;
|
|
462
|
+
//const countsMap = countsByFieldId.get(fieldId) || new Map();
|
|
463
|
+
if(considerAllJobs)
|
|
464
|
+
{
|
|
465
|
+
const selectedFieldId=Array.from( selectedByField.keys() )[0]
|
|
466
|
+
const relevantFields=allvaluesobjects.filter(val=>val.customField===selectedFieldId)
|
|
467
|
+
countsMap = new Map(relevantFields.map(val=>[val.valueId, val.count]));
|
|
468
|
+
}
|
|
469
|
+
else{
|
|
470
|
+
countsMap = countsByFieldId.get(fieldId) || new Map();
|
|
471
|
+
}
|
|
476
472
|
if(dontUpdateThisCheckBox===fieldId && !clearAll && selectedByField.has(fieldId) )
|
|
477
473
|
{
|
|
478
474
|
dontUpdateThisCheckBox=null;
|
|
479
475
|
return;
|
|
480
476
|
}
|
|
477
|
+
|
|
481
478
|
let filteredbase=[]
|
|
482
479
|
for (const element of base)
|
|
483
480
|
{
|
|
@@ -630,8 +627,8 @@ async function refreshFacetCounts(_$w,clearAll=false) {
|
|
|
630
627
|
|
|
631
628
|
function countJobsPerField(jobs) {
|
|
632
629
|
const fieldIds = Array.from(optionsByFieldId.keys());
|
|
633
|
-
|
|
634
|
-
|
|
630
|
+
|
|
631
|
+
const currentJobsIds=jobs.map(job=>job._id);
|
|
635
632
|
for (const fieldId of fieldIds) {
|
|
636
633
|
let currentoptions = optionsByFieldId.get(fieldId)
|
|
637
634
|
let counter=new Map();
|
|
@@ -702,6 +699,8 @@ async function secondarySearch(_$w,query) {
|
|
|
702
699
|
}
|
|
703
700
|
function bindSearchInput(_$w) {
|
|
704
701
|
try {
|
|
702
|
+
bindPrimarySearch(_$w, allvaluesobjects);
|
|
703
|
+
|
|
705
704
|
const secondarySearchDebounced = debounce(async () => {
|
|
706
705
|
const query = (_$w(CAREERS_MULTI_BOXES_PAGE_CONSTS.SECONDARY_SEARCH_INPUT).value || '').toLowerCase().trim();
|
|
707
706
|
await secondarySearch(_$w, query);
|
package/pages/careersPage.js
CHANGED
|
@@ -6,7 +6,7 @@ const { location } = require("@wix/site-location");
|
|
|
6
6
|
const { COLLECTIONS } = require('../backend/collectionConsts');
|
|
7
7
|
const { careersMultiBoxesPageOnReady } = require('./careersMultiBoxesPage');
|
|
8
8
|
const { debounce, getFilter} = require('../public/filterUtils');
|
|
9
|
-
const { CAREERS_PAGE_SELECTORS, FILTER_FIELDS
|
|
9
|
+
const { CAREERS_PAGE_SELECTORS, FILTER_FIELDS } = require('../public/selectors');
|
|
10
10
|
const { filterBrokenMarkers } = require('../public/utils');
|
|
11
11
|
|
|
12
12
|
let currentLoadedItems =100;
|
|
@@ -58,10 +58,10 @@ async function careersPageOnReady(_$w,thisObject=null,queryParams=null) {
|
|
|
58
58
|
|
|
59
59
|
function activateAutoLoad(_$w)
|
|
60
60
|
{
|
|
61
|
-
_$w(
|
|
61
|
+
_$w(CAREERS_PAGE_SELECTORS.JOBS_DATASET).onReady(() => {
|
|
62
62
|
updateCount(_$w);
|
|
63
63
|
_$w(CAREERS_PAGE_SELECTORS.FOOTER).onViewportEnter(() => {
|
|
64
|
-
if (currentLoadedItems<_$w(
|
|
64
|
+
if (currentLoadedItems<_$w(CAREERS_PAGE_SELECTORS.JOBS_DATASET).getTotalCount()) {
|
|
65
65
|
loadMoreJobs(_$w);
|
|
66
66
|
}
|
|
67
67
|
else {
|
|
@@ -81,7 +81,7 @@ async function loadMoreJobs(_$w) {
|
|
|
81
81
|
pageParamSet = Number(pageParamSet) + 1;
|
|
82
82
|
}
|
|
83
83
|
if (shouldLoad) {
|
|
84
|
-
_$w(
|
|
84
|
+
_$w(CAREERS_PAGE_SELECTORS.JOBS_DATASET).loadMore();
|
|
85
85
|
console.log("loading more jobs");
|
|
86
86
|
|
|
87
87
|
currentLoadedItems = currentLoadedItems + itemsPerPage;
|
|
@@ -148,7 +148,7 @@ async function handlePageParam(_$w) {
|
|
|
148
148
|
//scrolls a bit to load the dataset data
|
|
149
149
|
await window.scrollTo(0, 200,{scrollAnimation:false});
|
|
150
150
|
for (let i = 2; i <= queryPageVar; i++) {
|
|
151
|
-
await _$w(
|
|
151
|
+
await _$w(CAREERS_PAGE_SELECTORS.JOBS_DATASET).loadMore();
|
|
152
152
|
currentLoadedItems=currentLoadedItems+itemsPerPage
|
|
153
153
|
}
|
|
154
154
|
// the timeout is to wait for the repeater to render, then scroll to the last item.
|
|
@@ -170,7 +170,7 @@ async function handlePageParam(_$w) {
|
|
|
170
170
|
}
|
|
171
171
|
|
|
172
172
|
async function bind(_$w) {
|
|
173
|
-
await _$w(
|
|
173
|
+
await _$w(CAREERS_PAGE_SELECTORS.JOBS_DATASET).onReady(async () => {
|
|
174
174
|
await updateCount(_$w);
|
|
175
175
|
await updateMapMarkers(_$w);
|
|
176
176
|
|
|
@@ -337,8 +337,8 @@ async function applyFilters(_$w, skipUrlUpdate = false) {
|
|
|
337
337
|
});
|
|
338
338
|
|
|
339
339
|
const filter = await getFilter(filters, 'and');
|
|
340
|
-
await _$w(
|
|
341
|
-
await _$w(
|
|
340
|
+
await _$w(CAREERS_PAGE_SELECTORS.JOBS_DATASET).setFilter(filter);
|
|
341
|
+
await _$w(CAREERS_PAGE_SELECTORS.JOBS_DATASET).refresh();
|
|
342
342
|
|
|
343
343
|
const count = await updateCount(_$w);
|
|
344
344
|
console.log("updating map markers");
|
|
@@ -357,8 +357,8 @@ async function applyFilters(_$w, skipUrlUpdate = false) {
|
|
|
357
357
|
async function resetFilters(_$w) {
|
|
358
358
|
_$w(CAREERS_PAGE_SELECTORS.SEARCH_INPUT, CAREERS_PAGE_SELECTORS.DROPDOWN_DEPARTMENT, CAREERS_PAGE_SELECTORS.DROPDOWN_LOCATION, CAREERS_PAGE_SELECTORS.DROPDOWN_JOB_TYPE, CAREERS_PAGE_SELECTORS.DROPDOWN_BRAND).value = '';
|
|
359
359
|
|
|
360
|
-
await _$w(
|
|
361
|
-
await _$w(
|
|
360
|
+
await _$w(CAREERS_PAGE_SELECTORS.JOBS_DATASET).setFilter(wixData.filter());
|
|
361
|
+
await _$w(CAREERS_PAGE_SELECTORS.JOBS_DATASET).refresh();
|
|
362
362
|
|
|
363
363
|
_$w(CAREERS_PAGE_SELECTORS.RESULTS_MULTI_STATE).changeState('results');
|
|
364
364
|
|
|
@@ -374,7 +374,7 @@ async function resetFilters(_$w) {
|
|
|
374
374
|
}
|
|
375
375
|
|
|
376
376
|
async function updateCount(_$w) {
|
|
377
|
-
const count = await _$w(
|
|
377
|
+
const count = await _$w(CAREERS_PAGE_SELECTORS.JOBS_DATASET).getTotalCount();
|
|
378
378
|
_$w('#numOfPositionText').text = `Showing ${count} Open Positions`;
|
|
379
379
|
|
|
380
380
|
return count;
|
|
@@ -485,8 +485,8 @@ async function handleJobTypeParam(_$w,jobType) {
|
|
|
485
485
|
}
|
|
486
486
|
|
|
487
487
|
async function updateMapMarkers(_$w){
|
|
488
|
-
const numOfItems = await _$w(
|
|
489
|
-
const items = await _$w(
|
|
488
|
+
const numOfItems = await _$w(CAREERS_PAGE_SELECTORS.JOBS_DATASET).getTotalCount();
|
|
489
|
+
const items = await _$w(CAREERS_PAGE_SELECTORS.JOBS_DATASET).getItems(0, numOfItems);
|
|
490
490
|
const markers = filterBrokenMarkers(items.items).map(item => {
|
|
491
491
|
const location = item.locationAddress.location;
|
|
492
492
|
return {
|
package/pages/homePage.js
CHANGED
|
@@ -4,9 +4,7 @@ const { filterBrokenMarkers } = require('../public/utils');
|
|
|
4
4
|
const { location } = require('@wix/site-location');
|
|
5
5
|
const {wixData} = require('wix-data');
|
|
6
6
|
const { COLLECTIONS } = require('../backend/collectionConsts');
|
|
7
|
-
const { getAllRecords } = require('./pagesUtils');
|
|
8
|
-
const { handlePrimarySearch } = require('../public/primarySearchUtils');
|
|
9
|
-
const { GLOBAL_SECTIONS_SELECTORS } = require('../public/selectors');
|
|
7
|
+
const { bindPrimarySearch, getAllRecords, loadPrimarySearchRepeater } = require('./pagesUtils');
|
|
10
8
|
|
|
11
9
|
let thisObjectVar;
|
|
12
10
|
let searchByCityFlag=false;
|
|
@@ -19,7 +17,8 @@ async function homePageOnReady(_$w,thisObject = null) {
|
|
|
19
17
|
|
|
20
18
|
if(siteconfig.twg) {
|
|
21
19
|
const allvaluesobjects = await getAllRecords(COLLECTIONS.CUSTOM_VALUES);
|
|
22
|
-
|
|
20
|
+
bindPrimarySearch(_$w, allvaluesobjects);
|
|
21
|
+
loadPrimarySearchRepeater(_$w)
|
|
23
22
|
console.log("siteconfig.twg: ",siteconfig.twg);
|
|
24
23
|
|
|
25
24
|
if(siteconfig.twg === "external") {
|
|
@@ -162,10 +161,10 @@ async function handleSearchInput(_$w) {
|
|
|
162
161
|
|
|
163
162
|
let filter = await getFilter(searchByTitle);
|
|
164
163
|
|
|
165
|
-
await _$w(
|
|
166
|
-
await _$w(
|
|
164
|
+
await _$w('#jobsDataset').setFilter(filter);
|
|
165
|
+
await _$w('#jobsDataset').refresh();
|
|
167
166
|
|
|
168
|
-
count = _$w(
|
|
167
|
+
count = _$w('#jobsDataset').getTotalCount();
|
|
169
168
|
|
|
170
169
|
if (count > 0) {
|
|
171
170
|
searchByCityFlag = false;
|
|
@@ -173,9 +172,9 @@ async function handleSearchInput(_$w) {
|
|
|
173
172
|
_$w('#searchMultiStateBox').changeState('results');
|
|
174
173
|
} else {
|
|
175
174
|
filter = await getFilter(searchByCity);
|
|
176
|
-
await _$w(
|
|
177
|
-
await _$w(
|
|
178
|
-
count = _$w(
|
|
175
|
+
await _$w('#jobsDataset').setFilter(filter);
|
|
176
|
+
await _$w('#jobsDataset').refresh();
|
|
177
|
+
count = _$w('#jobsDataset').getTotalCount();
|
|
179
178
|
if( count > 0 )
|
|
180
179
|
{
|
|
181
180
|
searchByCityFlag = true;
|
package/pages/pagesUtils.js
CHANGED
|
@@ -1,6 +1,9 @@
|
|
|
1
1
|
const { items: wixData } = require('@wix/data');
|
|
2
2
|
const { JOBS_COLLECTION_FIELDS,COLLECTIONS } = require('../backend/collectionConsts');
|
|
3
|
+
const { CAREERS_MULTI_BOXES_PAGE_CONSTS, CATEGORY_CUSTOM_FIELD_ID_IN_CMS, TWG_JOBS_COLLECTION_FIELDS } = require('../backend/careersMultiBoxesPageIds');
|
|
4
|
+
const { location } = require("@wix/site-location");
|
|
3
5
|
const { normalizeString } = require('../backend/utils');
|
|
6
|
+
const { getFilter } = require('../public/filterUtils');
|
|
4
7
|
|
|
5
8
|
function groupValuesByField(values, refKey) {
|
|
6
9
|
const map = new Map();
|
|
@@ -78,13 +81,7 @@ function getFieldByTitle(title,allFields) {
|
|
|
78
81
|
|
|
79
82
|
function getCorrectOption(value,options,param) {
|
|
80
83
|
const standardizedValue = normalizeString(value.toLowerCase())
|
|
81
|
-
|
|
82
|
-
{
|
|
83
|
-
//option.value is the id,
|
|
84
|
-
return options.find(option=>normalizeString(option.value.toLowerCase())===standardizedValue);
|
|
85
|
-
}
|
|
86
|
-
//option.label is what we see live in the UI
|
|
87
|
-
return options.find(option=>normalizeString(option.label.toLowerCase())===standardizedValue);
|
|
84
|
+
return options.find(option=>normalizeString(option.value.toLowerCase())===standardizedValue || normalizeString(option.label.toLowerCase())===standardizedValue);
|
|
88
85
|
}
|
|
89
86
|
|
|
90
87
|
function getOptionIndexFromCheckBox(options,value) {
|
|
@@ -96,6 +93,151 @@ function getOptionIndexFromCheckBox(options,value) {
|
|
|
96
93
|
}
|
|
97
94
|
}
|
|
98
95
|
|
|
96
|
+
function loadPrimarySearchRepeater(_$w) {
|
|
97
|
+
|
|
98
|
+
_$w(CAREERS_MULTI_BOXES_PAGE_CONSTS.JOB_RESULTS_REPEATER).onItemReady(async ($item, itemData) => {
|
|
99
|
+
$item(CAREERS_MULTI_BOXES_PAGE_CONSTS.PRIMARY_SEARCH_POSITION_BUTTON).label = itemData.title || '';
|
|
100
|
+
});
|
|
101
|
+
|
|
102
|
+
_$w(CAREERS_MULTI_BOXES_PAGE_CONSTS.JOB_RESULTS_REPEATER_ITEM).onClick((event) => {
|
|
103
|
+
const data = _$w(CAREERS_MULTI_BOXES_PAGE_CONSTS.JOB_RESULTS_REPEATER).data;
|
|
104
|
+
const clickedItemData = data.find(
|
|
105
|
+
(item) => item._id === event.context.itemId,
|
|
106
|
+
|
|
107
|
+
);
|
|
108
|
+
if(!clickedItemData[TWG_JOBS_COLLECTION_FIELDS.LINK_JOBS_TITLE] && !clickedItemData[TWG_JOBS_COLLECTION_FIELDS.LINK_JOBS_REF_ID_SLUG]) {
|
|
109
|
+
console.error("clickedItemData does not have link-jobs-title or link-jobs-refId-slug");
|
|
110
|
+
return;
|
|
111
|
+
}
|
|
112
|
+
|
|
113
|
+
location.to( clickedItemData[TWG_JOBS_COLLECTION_FIELDS.LINK_JOBS_TITLE]|| clickedItemData[TWG_JOBS_COLLECTION_FIELDS.LINK_JOBS_REF_ID_SLUG]);
|
|
114
|
+
|
|
115
|
+
|
|
116
|
+
});
|
|
117
|
+
_$w(CAREERS_MULTI_BOXES_PAGE_CONSTS.CATEGORY_RESULTS_REPEATER).onItemReady(async ($item, itemData) => {
|
|
118
|
+
$item(CAREERS_MULTI_BOXES_PAGE_CONSTS.PRIMARY_SEARCH_CATEGORY_BUTTON).label = itemData.title || '';
|
|
119
|
+
});
|
|
120
|
+
|
|
121
|
+
_$w(CAREERS_MULTI_BOXES_PAGE_CONSTS.CATEGORY_RESULTS_REPEATER_ITEM).onClick(async (event) => {
|
|
122
|
+
const data = _$w(CAREERS_MULTI_BOXES_PAGE_CONSTS.CATEGORY_RESULTS_REPEATER).data;
|
|
123
|
+
const clickedItemData = data.find(
|
|
124
|
+
(item) => item._id === event.context.itemId,
|
|
125
|
+
);
|
|
126
|
+
const baseUrl = await location.baseUrl();
|
|
127
|
+
const encodedCategory=encodeURIComponent(clickedItemData._id);
|
|
128
|
+
location.to(`${baseUrl}/search?category=${encodedCategory}`);
|
|
129
|
+
});
|
|
130
|
+
|
|
131
|
+
}
|
|
132
|
+
|
|
133
|
+
function bindPrimarySearch(_$w, allvaluesobjects) {
|
|
134
|
+
|
|
135
|
+
const handleSearchInput = async () => {
|
|
136
|
+
const query = _$w(CAREERS_MULTI_BOXES_PAGE_CONSTS.PRIMARY_SEARCH_INPUT).value?.toLowerCase().trim() || '';
|
|
137
|
+
await primarySearch(_$w, query);
|
|
138
|
+
}
|
|
139
|
+
|
|
140
|
+
const primarySearchDebounced = debounce(() => handleSearchInput(), 400);
|
|
141
|
+
|
|
142
|
+
_$w(CAREERS_MULTI_BOXES_PAGE_CONSTS.PRIMARY_SEARCH_INPUT).onInput(async () => {
|
|
143
|
+
await primarySearchDebounced();
|
|
144
|
+
});
|
|
145
|
+
|
|
146
|
+
_$w(CAREERS_MULTI_BOXES_PAGE_CONSTS.PRIMARY_SEARCH_INPUT).onClick(async () => {
|
|
147
|
+
_$w(CAREERS_MULTI_BOXES_PAGE_CONSTS.RESULTS_CONTAINER).expand();
|
|
148
|
+
|
|
149
|
+
if(_$w(CAREERS_MULTI_BOXES_PAGE_CONSTS.PRIMARY_SEARCH_INPUT).value.trim()!=='') {
|
|
150
|
+
const query = _$w(CAREERS_MULTI_BOXES_PAGE_CONSTS.PRIMARY_SEARCH_INPUT).value?.toLowerCase().trim() || '';
|
|
151
|
+
await primarySearch(_$w, query);
|
|
152
|
+
}
|
|
153
|
+
else {
|
|
154
|
+
await loadCategoriesListPrimarySearch(_$w,allvaluesobjects);
|
|
155
|
+
}
|
|
156
|
+
});
|
|
157
|
+
|
|
158
|
+
_$w(CAREERS_MULTI_BOXES_PAGE_CONSTS.RESULTS_CONTAINER).onMouseOut(async () => {
|
|
159
|
+
_$w(CAREERS_MULTI_BOXES_PAGE_CONSTS.RESULTS_CONTAINER).collapse();
|
|
160
|
+
});
|
|
161
|
+
|
|
162
|
+
_$w(CAREERS_MULTI_BOXES_PAGE_CONSTS.PRIMARY_SEARCH_INPUT).onKeyPress(async (event) => {
|
|
163
|
+
if( event.key === 'Enter') {
|
|
164
|
+
if(_$w(CAREERS_MULTI_BOXES_PAGE_CONSTS.PRIMARY_SEARCH_INPUT).value.trim()==='') {
|
|
165
|
+
// _$w(CAREERS_MULTI_BOXES_PAGE_CONSTS.RESULTS_CONTAINER).collapse();
|
|
166
|
+
const baseUrl = await location.baseUrl();
|
|
167
|
+
location.to(`${baseUrl}/search`);
|
|
168
|
+
|
|
169
|
+
}
|
|
170
|
+
else {
|
|
171
|
+
let encodedKeyWord=encodeURIComponent(_$w(CAREERS_MULTI_BOXES_PAGE_CONSTS.PRIMARY_SEARCH_INPUT).value);
|
|
172
|
+
const baseUrl = await location.baseUrl();
|
|
173
|
+
location.to(`${baseUrl}/search?keyword=${encodedKeyWord}`);
|
|
174
|
+
}
|
|
175
|
+
}
|
|
176
|
+
});
|
|
177
|
+
|
|
178
|
+
_$w(CAREERS_MULTI_BOXES_PAGE_CONSTS.PRIMARY_SEARCH_BUTTON).onClick(async () => {
|
|
179
|
+
if(_$w(CAREERS_MULTI_BOXES_PAGE_CONSTS.PRIMARY_SEARCH_INPUT).value.trim()==='') {
|
|
180
|
+
const baseUrl = await location.baseUrl();
|
|
181
|
+
location.to(`${baseUrl}/search`);
|
|
182
|
+
}
|
|
183
|
+
else {
|
|
184
|
+
let encodedKeyWord=encodeURIComponent(_$w(CAREERS_MULTI_BOXES_PAGE_CONSTS.PRIMARY_SEARCH_INPUT).value);
|
|
185
|
+
const baseUrl = await location.baseUrl();
|
|
186
|
+
location.to(`${baseUrl}/search?keyword=${encodedKeyWord}`);
|
|
187
|
+
}
|
|
188
|
+
});
|
|
189
|
+
}
|
|
190
|
+
|
|
191
|
+
async function loadCategoriesListPrimarySearch(_$w, allvaluesobjects) {
|
|
192
|
+
_$w(CAREERS_MULTI_BOXES_PAGE_CONSTS.PRIMARY_SEARCH_MULTI_BOX).changeState("categoryResults");
|
|
193
|
+
|
|
194
|
+
let categoryValues=[]
|
|
195
|
+
for(const value of allvaluesobjects) {
|
|
196
|
+
if(value.customField === CATEGORY_CUSTOM_FIELD_ID_IN_CMS) {
|
|
197
|
+
categoryValues.push({title: value.title+` (${value.count})` , _id: value.valueId});
|
|
198
|
+
}
|
|
199
|
+
}
|
|
200
|
+
_$w(CAREERS_MULTI_BOXES_PAGE_CONSTS.CATEGORY_RESULTS_REPEATER).data = categoryValues;
|
|
201
|
+
}
|
|
202
|
+
|
|
203
|
+
async function primarySearch(_$w, query) {
|
|
204
|
+
if(query === undefined || query === '') {
|
|
205
|
+
_$w(CAREERS_MULTI_BOXES_PAGE_CONSTS.PRIMARY_SEARCH_MULTI_BOX).changeState("categoryResults");
|
|
206
|
+
return false;
|
|
207
|
+
}
|
|
208
|
+
|
|
209
|
+
const searchByTitle = [{field: 'title', searchTerm: query}];
|
|
210
|
+
const searchByCity = [{field: 'location.fullLocation', searchTerm: query}];
|
|
211
|
+
|
|
212
|
+
let filter = await getFilter(searchByTitle);
|
|
213
|
+
|
|
214
|
+
await _$w('#jobsDataset').setFilter(filter);
|
|
215
|
+
await _$w('#jobsDataset').refresh();
|
|
216
|
+
|
|
217
|
+
let count = _$w('#jobsDataset').getTotalCount();
|
|
218
|
+
|
|
219
|
+
if( count > 0 ) {
|
|
220
|
+
_$w(CAREERS_MULTI_BOXES_PAGE_CONSTS.RESULTS_CONTAINER).expand();
|
|
221
|
+
_$w(CAREERS_MULTI_BOXES_PAGE_CONSTS.PRIMARY_SEARCH_MULTI_BOX).changeState("jobResults");
|
|
222
|
+
}
|
|
223
|
+
else {
|
|
224
|
+
filter = await getFilter(searchByCity);
|
|
225
|
+
await _$w('#jobsDataset').setFilter(filter);
|
|
226
|
+
await _$w('#jobsDataset').refresh();
|
|
227
|
+
|
|
228
|
+
count = _$w('#jobsDataset').getTotalCount();
|
|
229
|
+
if (count > 0) {
|
|
230
|
+
_$w(CAREERS_MULTI_BOXES_PAGE_CONSTS.RESULTS_CONTAINER).expand();
|
|
231
|
+
_$w(CAREERS_MULTI_BOXES_PAGE_CONSTS.PRIMARY_SEARCH_MULTI_BOX).changeState("jobResults");
|
|
232
|
+
}
|
|
233
|
+
else{
|
|
234
|
+
_$w(CAREERS_MULTI_BOXES_PAGE_CONSTS.PRIMARY_SEARCH_MULTI_BOX).changeState("noResults");
|
|
235
|
+
}
|
|
236
|
+
}
|
|
237
|
+
|
|
238
|
+
return count > 0;
|
|
239
|
+
}
|
|
240
|
+
|
|
99
241
|
async function getValueFromValueId(valueId) {
|
|
100
242
|
const result = await getAllRecords(COLLECTIONS.CUSTOM_VALUES);
|
|
101
243
|
console.log("result: ",result);
|
|
@@ -120,6 +262,9 @@ module.exports = {
|
|
|
120
262
|
getFieldByTitle,
|
|
121
263
|
getCorrectOption,
|
|
122
264
|
getOptionIndexFromCheckBox,
|
|
265
|
+
loadPrimarySearchRepeater,
|
|
266
|
+
bindPrimarySearch,
|
|
267
|
+
primarySearch,
|
|
123
268
|
getLatestJobsByValue,
|
|
124
269
|
getValueFromValueId,
|
|
125
270
|
getAllRecordsWithoutMultiRef,
|
package/pages/positionPage.js
CHANGED
|
@@ -10,6 +10,8 @@ const {
|
|
|
10
10
|
} = require('../public/utils');
|
|
11
11
|
|
|
12
12
|
|
|
13
|
+
|
|
14
|
+
|
|
13
15
|
async function positionPageOnReady(_$w) {
|
|
14
16
|
console.log("positionPageOnReady called");
|
|
15
17
|
await bind(_$w);
|
|
@@ -88,14 +90,8 @@ async function getCategoryValue(customValues) {
|
|
|
88
90
|
}
|
|
89
91
|
|
|
90
92
|
function handleReferFriendButton(_$w,item) {
|
|
91
|
-
if(isElementExistOnPage(_$w('#referFriendButton'))){
|
|
92
|
-
|
|
93
|
-
_$w('#referFriendButton').hide();
|
|
94
|
-
}
|
|
95
|
-
else {
|
|
96
|
-
_$w('#referFriendButton').target="_blank";
|
|
97
|
-
_$w('#referFriendButton').link=item.referFriendLink;
|
|
98
|
-
}
|
|
93
|
+
if(!item.referFriendLink && isElementExistOnPage(_$w('#referFriendButton'))){
|
|
94
|
+
_$w('#referFriendButton').hide();
|
|
99
95
|
}
|
|
100
96
|
}
|
|
101
97
|
|
package/public/index.js
CHANGED
package/public/selectors.js
CHANGED
|
@@ -26,22 +26,19 @@ const CAREERS_PAGE_SELECTORS = {
|
|
|
26
26
|
OPEN_FILTERS_BUTTON: '#openFiltersButton',
|
|
27
27
|
CLOSE_FILTERS_BUTTON: '#closeFiltersButton',
|
|
28
28
|
RESET_FILTERS_BUTTON: '#resetFiltersButton',
|
|
29
|
+
RESET_FILTERS_BUTTON: '#resetFiltersButton',
|
|
29
30
|
|
|
30
31
|
RESULTS_MULTI_STATE: '#resultsMultiState',
|
|
31
32
|
BRANDS_DATASET: '#brandsDataset',
|
|
32
33
|
DEPARTMENTS_DATASET: '#departmentsDataset',
|
|
33
34
|
LOCATIONS_DATASET: '#locationsDataset',
|
|
34
35
|
JOB_TYPES_DATASET: '#jobTypesDataset',
|
|
36
|
+
JOBS_DATASET: '#jobsDataset',
|
|
35
37
|
|
|
36
38
|
GOOGLE_MAPS: '#googleMaps',
|
|
37
39
|
FOOTER: '#footer',
|
|
38
40
|
}
|
|
39
41
|
|
|
40
|
-
const GLOBAL_SECTIONS_SELECTORS = {
|
|
41
|
-
JOBS_DATASET: '#jobsDataset',
|
|
42
|
-
|
|
43
|
-
}
|
|
44
|
-
|
|
45
42
|
const FILTER_FIELDS = {
|
|
46
43
|
DEPARTMENT: 'department',
|
|
47
44
|
LOCATION: 'cityText',
|
|
@@ -52,6 +49,5 @@ const FILTER_FIELDS = {
|
|
|
52
49
|
|
|
53
50
|
module.exports = {
|
|
54
51
|
CAREERS_PAGE_SELECTORS,
|
|
55
|
-
GLOBAL_SECTIONS_SELECTORS,
|
|
56
52
|
FILTER_FIELDS,
|
|
57
53
|
}
|
|
@@ -1,157 +0,0 @@
|
|
|
1
|
-
const { location } = require("@wix/site-location");
|
|
2
|
-
|
|
3
|
-
const { CAREERS_MULTI_BOXES_PAGE_CONSTS, CATEGORY_CUSTOM_FIELD_ID_IN_CMS, PRIMARY_SEARCH_STATES } = require('../backend/careersMultiBoxesPageIds');
|
|
4
|
-
const { GLOBAL_SECTIONS_SELECTORS } = require('../public/selectors');
|
|
5
|
-
const { getFilter } = require('../public/filterUtils');
|
|
6
|
-
const { debounce } = require('../pages/pagesUtils');
|
|
7
|
-
|
|
8
|
-
async function handlePrimarySearch(_$w, allvaluesobjects) {
|
|
9
|
-
// load the categories list before clicking on the primary search input
|
|
10
|
-
loadCategoryRepeaterData(_$w, allvaluesobjects);
|
|
11
|
-
|
|
12
|
-
// wait for the jobs dataset to be ready
|
|
13
|
-
await _$w(GLOBAL_SECTIONS_SELECTORS.JOBS_DATASET).onReadyAsync();
|
|
14
|
-
|
|
15
|
-
await bindPrimarySearch(_$w);
|
|
16
|
-
}
|
|
17
|
-
|
|
18
|
-
function loadCategoryRepeaterData(_$w, allvaluesobjects) {
|
|
19
|
-
let categoryValues=[]
|
|
20
|
-
for(const value of allvaluesobjects) {
|
|
21
|
-
if(value.customField === CATEGORY_CUSTOM_FIELD_ID_IN_CMS) {
|
|
22
|
-
categoryValues.push({title: value.title+` (${value.count})` , _id: value.valueId});
|
|
23
|
-
}
|
|
24
|
-
}
|
|
25
|
-
_$w(CAREERS_MULTI_BOXES_PAGE_CONSTS.CATEGORY_RESULTS_REPEATER).data = categoryValues;
|
|
26
|
-
}
|
|
27
|
-
|
|
28
|
-
async function bindPrimarySearch(_$w) {
|
|
29
|
-
handleCategoryEvents(_$w);
|
|
30
|
-
|
|
31
|
-
await handleSearchInput(_$w);
|
|
32
|
-
|
|
33
|
-
// on mouse out collapse the results container
|
|
34
|
-
_$w(CAREERS_MULTI_BOXES_PAGE_CONSTS.RESULTS_CONTAINER).onMouseOut(async () => {
|
|
35
|
-
_$w(CAREERS_MULTI_BOXES_PAGE_CONSTS.RESULTS_CONTAINER).collapse();
|
|
36
|
-
});
|
|
37
|
-
|
|
38
|
-
// handle the click on the search button
|
|
39
|
-
_$w(CAREERS_MULTI_BOXES_PAGE_CONSTS.PRIMARY_SEARCH_BUTTON).onClick(async () => {
|
|
40
|
-
if(_$w(CAREERS_MULTI_BOXES_PAGE_CONSTS.PRIMARY_SEARCH_INPUT).value.trim()==='') {
|
|
41
|
-
const baseUrl = await location.baseUrl();
|
|
42
|
-
location.to(`${baseUrl}/search`);
|
|
43
|
-
}
|
|
44
|
-
else {
|
|
45
|
-
let encodedKeyWord=encodeURIComponent(_$w(CAREERS_MULTI_BOXES_PAGE_CONSTS.PRIMARY_SEARCH_INPUT).value);
|
|
46
|
-
const baseUrl = await location.baseUrl();
|
|
47
|
-
location.to(`${baseUrl}/search?keyword=${encodedKeyWord}`);
|
|
48
|
-
}
|
|
49
|
-
});
|
|
50
|
-
}
|
|
51
|
-
|
|
52
|
-
function handleCategoryEvents(_$w) {
|
|
53
|
-
// set the label of the category repeater item
|
|
54
|
-
_$w(CAREERS_MULTI_BOXES_PAGE_CONSTS.CATEGORY_RESULTS_REPEATER).onItemReady(async ($item, itemData) => {
|
|
55
|
-
$item(CAREERS_MULTI_BOXES_PAGE_CONSTS.PRIMARY_SEARCH_CATEGORY_BUTTON).label = itemData.title || '';
|
|
56
|
-
});
|
|
57
|
-
|
|
58
|
-
// handle the category repeater item on click
|
|
59
|
-
_$w(CAREERS_MULTI_BOXES_PAGE_CONSTS.CATEGORY_RESULTS_REPEATER_ITEM).onClick(async (event) => {
|
|
60
|
-
const data = _$w(CAREERS_MULTI_BOXES_PAGE_CONSTS.CATEGORY_RESULTS_REPEATER).data;
|
|
61
|
-
const clickedItemData = data.find(
|
|
62
|
-
(item) => item._id === event.context.itemId,
|
|
63
|
-
);
|
|
64
|
-
const baseUrl = await location.baseUrl();
|
|
65
|
-
const encodedCategory=encodeURIComponent(clickedItemData._id);
|
|
66
|
-
location.to(`${baseUrl}/search?category=${encodedCategory}`);
|
|
67
|
-
});
|
|
68
|
-
|
|
69
|
-
}
|
|
70
|
-
|
|
71
|
-
function getSearchQuery(_$w) {
|
|
72
|
-
return _$w(CAREERS_MULTI_BOXES_PAGE_CONSTS.PRIMARY_SEARCH_INPUT).value?.toLowerCase().trim() || '';
|
|
73
|
-
}
|
|
74
|
-
|
|
75
|
-
async function handleSearchInput(_$w) {
|
|
76
|
-
_$w(CAREERS_MULTI_BOXES_PAGE_CONSTS.PRIMARY_SEARCH_INPUT).enable();
|
|
77
|
-
|
|
78
|
-
// on Input call the queryPrimarySearchResults function
|
|
79
|
-
const callQueryPrimarySearchResults = async () => {
|
|
80
|
-
await queryPrimarySearchResults(_$w, getSearchQuery(_$w));
|
|
81
|
-
}
|
|
82
|
-
|
|
83
|
-
_$w(CAREERS_MULTI_BOXES_PAGE_CONSTS.PRIMARY_SEARCH_INPUT).onInput(async () => {
|
|
84
|
-
await debounce(() => callQueryPrimarySearchResults(), 300)();
|
|
85
|
-
});
|
|
86
|
-
|
|
87
|
-
_$w(CAREERS_MULTI_BOXES_PAGE_CONSTS.PRIMARY_SEARCH_INPUT).onClick(async () => {
|
|
88
|
-
_$w(CAREERS_MULTI_BOXES_PAGE_CONSTS.RESULTS_CONTAINER).expand();
|
|
89
|
-
|
|
90
|
-
const searchQuery = getSearchQuery(_$w);
|
|
91
|
-
if(searchQuery !== '') {
|
|
92
|
-
await queryPrimarySearchResults(_$w, searchQuery);
|
|
93
|
-
}
|
|
94
|
-
else {
|
|
95
|
-
_$w(CAREERS_MULTI_BOXES_PAGE_CONSTS.PRIMARY_SEARCH_MULTI_BOX).changeState(PRIMARY_SEARCH_STATES.CATEGORY_RESULTS);
|
|
96
|
-
}
|
|
97
|
-
});
|
|
98
|
-
|
|
99
|
-
_$w(CAREERS_MULTI_BOXES_PAGE_CONSTS.PRIMARY_SEARCH_INPUT).onKeyPress(async (event) => {
|
|
100
|
-
if( event.key === 'Enter') {
|
|
101
|
-
if(getSearchQuery(_$w) === '') {
|
|
102
|
-
// _$w(CAREERS_MULTI_BOXES_PAGE_CONSTS.RESULTS_CONTAINER).collapse();
|
|
103
|
-
const baseUrl = await location.baseUrl();
|
|
104
|
-
location.to(`${baseUrl}/search`);
|
|
105
|
-
|
|
106
|
-
}
|
|
107
|
-
else {
|
|
108
|
-
let encodedKeyWord=encodeURIComponent(_$w(CAREERS_MULTI_BOXES_PAGE_CONSTS.PRIMARY_SEARCH_INPUT).value);
|
|
109
|
-
const baseUrl = await location.baseUrl();
|
|
110
|
-
location.to(`${baseUrl}/search?keyword=${encodedKeyWord}`);
|
|
111
|
-
}
|
|
112
|
-
}
|
|
113
|
-
});
|
|
114
|
-
}
|
|
115
|
-
|
|
116
|
-
async function queryPrimarySearchResults(_$w, query) {
|
|
117
|
-
if(query === undefined || query === '') {
|
|
118
|
-
_$w(CAREERS_MULTI_BOXES_PAGE_CONSTS.PRIMARY_SEARCH_MULTI_BOX).changeState(PRIMARY_SEARCH_STATES.CATEGORY_RESULTS);
|
|
119
|
-
return false;
|
|
120
|
-
}
|
|
121
|
-
|
|
122
|
-
const searchByTitle = [{field: 'title', searchTerm: query}];
|
|
123
|
-
const searchByCity = [{field: 'location.fullLocation', searchTerm: query}];
|
|
124
|
-
|
|
125
|
-
let filter = await getFilter(searchByTitle);
|
|
126
|
-
|
|
127
|
-
await _$w(GLOBAL_SECTIONS_SELECTORS.JOBS_DATASET).setFilter(filter);
|
|
128
|
-
await _$w(GLOBAL_SECTIONS_SELECTORS.JOBS_DATASET).refresh();
|
|
129
|
-
|
|
130
|
-
let count = _$w(GLOBAL_SECTIONS_SELECTORS.JOBS_DATASET).getTotalCount();
|
|
131
|
-
|
|
132
|
-
if( count > 0 ) {
|
|
133
|
-
_$w(CAREERS_MULTI_BOXES_PAGE_CONSTS.RESULTS_CONTAINER).expand();
|
|
134
|
-
_$w(CAREERS_MULTI_BOXES_PAGE_CONSTS.PRIMARY_SEARCH_MULTI_BOX).changeState(PRIMARY_SEARCH_STATES.JOB_RESULTS);
|
|
135
|
-
}
|
|
136
|
-
else {
|
|
137
|
-
filter = await getFilter(searchByCity);
|
|
138
|
-
await _$w(GLOBAL_SECTIONS_SELECTORS.JOBS_DATASET).setFilter(filter);
|
|
139
|
-
await _$w(GLOBAL_SECTIONS_SELECTORS.JOBS_DATASET).refresh();
|
|
140
|
-
|
|
141
|
-
count = _$w(GLOBAL_SECTIONS_SELECTORS.JOBS_DATASET).getTotalCount();
|
|
142
|
-
if (count > 0) {
|
|
143
|
-
_$w(CAREERS_MULTI_BOXES_PAGE_CONSTS.RESULTS_CONTAINER).expand();
|
|
144
|
-
_$w(CAREERS_MULTI_BOXES_PAGE_CONSTS.PRIMARY_SEARCH_MULTI_BOX).changeState(PRIMARY_SEARCH_STATES.JOB_RESULTS);
|
|
145
|
-
}
|
|
146
|
-
else{
|
|
147
|
-
_$w(CAREERS_MULTI_BOXES_PAGE_CONSTS.PRIMARY_SEARCH_MULTI_BOX).changeState(PRIMARY_SEARCH_STATES.NO_RESULTS);
|
|
148
|
-
}
|
|
149
|
-
}
|
|
150
|
-
|
|
151
|
-
return count > 0;
|
|
152
|
-
}
|
|
153
|
-
|
|
154
|
-
module.exports = {
|
|
155
|
-
handlePrimarySearch,
|
|
156
|
-
queryPrimarySearchResults
|
|
157
|
-
}
|