sr-npm 1.7.796 → 1.7.798
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/package.json +1 -1
- package/pages/careersMultiBoxesPage.js +111 -110
- package/pages/homePage.js +18 -1
- package/pages/pagesUtils.js +122 -0
- package/tests/multiSearchBoxCareers.spec.js +6 -5
package/package.json
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
const { COLLECTIONS,CUSTOM_VALUES_COLLECTION_FIELDS,JOBS_COLLECTION_FIELDS } = require('../backend/collectionConsts');
|
|
2
2
|
const { queryParams} = require('wix-location-frontend');
|
|
3
3
|
const { location } = require("@wix/site-location");
|
|
4
|
-
const {CAREERS_MULTI_BOXES_PAGE_CONSTS,FiltersIds,fieldTitlesInCMS
|
|
5
|
-
const { groupValuesByField, debounce, getAllRecords, getFieldById, getFieldByTitle,getCorrectOption,getOptionIndexFromCheckBox } = require('./pagesUtils');
|
|
4
|
+
const {CAREERS_MULTI_BOXES_PAGE_CONSTS,FiltersIds,fieldTitlesInCMS} = require('../backend/careersMultiBoxesPageIds');
|
|
5
|
+
const { groupValuesByField, debounce, getAllRecords, getFieldById, getFieldByTitle,getCorrectOption,getOptionIndexFromCheckBox,loadPrimarySearchRepeater,bindPrimarySearch,primarySearch } = require('./pagesUtils');
|
|
6
6
|
|
|
7
7
|
let dontUpdateThisCheckBox;
|
|
8
8
|
const selectedByField = new Map(); // fieldId -> array of selected value IDs
|
|
@@ -54,29 +54,28 @@ async function clearAll(_$w) {
|
|
|
54
54
|
}
|
|
55
55
|
|
|
56
56
|
|
|
57
|
-
async function loadPrimarySearchRepeater(_$w) {
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
57
|
+
// async function loadPrimarySearchRepeater(_$w) {
|
|
58
|
+
// try {
|
|
59
|
+
// _$w(CAREERS_MULTI_BOXES_PAGE_CONSTS.JOB_RESULTS_REPEATER).onItemReady(async ($item, itemData) => {
|
|
60
|
+
// $item(CAREERS_MULTI_BOXES_PAGE_CONSTS.PRIMARY_SEARCH_POSITION_BUTTON).label = itemData.title || '';
|
|
61
|
+
// $item(CAREERS_MULTI_BOXES_PAGE_CONSTS.PRIMARY_SEARCH_POSITION_BUTTON).onClick(async () => {
|
|
62
|
+
// await location.to(itemData["link-jobs-title"]);
|
|
63
|
+
// })
|
|
64
64
|
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
}
|
|
65
|
+
// });
|
|
66
|
+
|
|
67
|
+
// _$w(CAREERS_MULTI_BOXES_PAGE_CONSTS.CATEGORY_RESULTS_REPEATER).onItemReady(async ($item, itemData) => {
|
|
68
|
+
// $item(CAREERS_MULTI_BOXES_PAGE_CONSTS.PRIMARY_SEARCH_CATEGORY_BUTTON).label = itemData.title || '';
|
|
69
|
+
// $item(CAREERS_MULTI_BOXES_PAGE_CONSTS.PRIMARY_SEARCH_CATEGORY_BUTTON).onClick(async () => {
|
|
70
|
+
// const baseUrl = await location.baseUrl();
|
|
71
|
+
// const encodedCategory=encodeURIComponent(itemData._id);
|
|
72
|
+
// await location.to(`${baseUrl}/search?category=${encodedCategory}`);
|
|
73
|
+
// });
|
|
74
|
+
// });
|
|
75
|
+
// } catch (error) {
|
|
76
|
+
// console.error('Failed to load primary search repeater:', error);
|
|
77
|
+
// }
|
|
78
|
+
// }
|
|
80
79
|
|
|
81
80
|
async function handleUrlParams(_$w,urlParams) {
|
|
82
81
|
try {
|
|
@@ -90,7 +89,7 @@ async function handleUrlParams(_$w,urlParams) {
|
|
|
90
89
|
applyFiltering=await handleParams(_$w,"category",urlParams.category)
|
|
91
90
|
}
|
|
92
91
|
if(urlParams.keyword) {
|
|
93
|
-
applyFiltering=await primarySearch(_$w, decodeURIComponent(urlParams.keyword));
|
|
92
|
+
applyFiltering=await primarySearch(_$w, decodeURIComponent(urlParams.keyword), alljobs);
|
|
94
93
|
_$w(CAREERS_MULTI_BOXES_PAGE_CONSTS.PRIMARY_SEARCH_INPUT).value=decodeURIComponent(urlParams.keyword);
|
|
95
94
|
keyword=true;
|
|
96
95
|
}
|
|
@@ -484,26 +483,26 @@ async function refreshFacetCounts(_$w,clearAll=false) {
|
|
|
484
483
|
}
|
|
485
484
|
|
|
486
485
|
|
|
487
|
-
async function primarySearch(_$w,query) {
|
|
488
|
-
|
|
489
|
-
|
|
490
|
-
|
|
491
|
-
|
|
492
|
-
|
|
493
|
-
|
|
494
|
-
|
|
495
|
-
|
|
496
|
-
|
|
497
|
-
|
|
498
|
-
|
|
499
|
-
|
|
500
|
-
|
|
501
|
-
|
|
502
|
-
|
|
503
|
-
|
|
504
|
-
|
|
505
|
-
|
|
506
|
-
}
|
|
486
|
+
// async function primarySearch(_$w,query) {
|
|
487
|
+
// console.log("primary search query: ", query);
|
|
488
|
+
// if(query.length===0 || query===undefined || query==='') {
|
|
489
|
+
// _$w(CAREERS_MULTI_BOXES_PAGE_CONSTS.PRIMARY_SEARCH_MULTI_BOX).changeState("categoryResults");
|
|
490
|
+
// return false;
|
|
491
|
+
// }
|
|
492
|
+
|
|
493
|
+
// let filteredJobs=alljobs.filter(job=>job.title.toLowerCase().includes(query));
|
|
494
|
+
// console.log("filteredJobs.length: ", filteredJobs.length);
|
|
495
|
+
// if(filteredJobs.length>0) {
|
|
496
|
+
// currentJobs=filteredJobs;
|
|
497
|
+
// _$w(CAREERS_MULTI_BOXES_PAGE_CONSTS.PRIMARY_SEARCH_MULTI_BOX).changeState("jobResults");
|
|
498
|
+
// _$w(CAREERS_MULTI_BOXES_PAGE_CONSTS.JOB_RESULTS_REPEATER).data = currentJobs
|
|
499
|
+
// return true;
|
|
500
|
+
// }
|
|
501
|
+
// else {
|
|
502
|
+
// _$w(CAREERS_MULTI_BOXES_PAGE_CONSTS.PRIMARY_SEARCH_MULTI_BOX).changeState("noResults");
|
|
503
|
+
// return false;
|
|
504
|
+
// }
|
|
505
|
+
// }
|
|
507
506
|
async function secondarySearch(_$w,query) {
|
|
508
507
|
if(query.length===0 || query===undefined || query==='') {
|
|
509
508
|
secondarySearchIsFilled=false;
|
|
@@ -534,84 +533,86 @@ async function secondarySearch(_$w,query) {
|
|
|
534
533
|
}
|
|
535
534
|
async function bindSearchInput(_$w) {
|
|
536
535
|
try {
|
|
537
|
-
|
|
538
|
-
|
|
539
|
-
|
|
540
|
-
|
|
536
|
+
await bindPrimarySearch(_$w,allvaluesobjects,alljobs);
|
|
537
|
+
|
|
538
|
+
// const primarySearchDebounced = debounce(async () => {
|
|
539
|
+
// const query = (_$w(CAREERS_MULTI_BOXES_PAGE_CONSTS.PRIMARY_SEARCH_INPUT).value || '').toLowerCase().trim();
|
|
540
|
+
// await primarySearch(_$w, query);
|
|
541
|
+
// }, 150);
|
|
541
542
|
|
|
542
543
|
const secondarySearchDebounced = debounce(async () => {
|
|
543
544
|
const query = (_$w(CAREERS_MULTI_BOXES_PAGE_CONSTS.SECONDARY_SEARCH_INPUT).value || '').toLowerCase().trim();
|
|
544
545
|
await secondarySearch(_$w, query);
|
|
545
546
|
}, 150);
|
|
546
547
|
|
|
547
|
-
|
|
548
|
-
|
|
549
|
-
|
|
550
|
-
|
|
551
|
-
_$w(CAREERS_MULTI_BOXES_PAGE_CONSTS.PRIMARY_SEARCH_INPUT).onClick(async () => {
|
|
552
|
-
|
|
553
|
-
|
|
554
|
-
|
|
555
|
-
|
|
556
|
-
|
|
557
|
-
|
|
558
|
-
|
|
559
|
-
});
|
|
560
|
-
|
|
561
|
-
_$w(CAREERS_MULTI_BOXES_PAGE_CONSTS.RESULTS_CONTAINER).onMouseOut(async () => {
|
|
562
|
-
|
|
563
|
-
});
|
|
564
|
-
|
|
565
|
-
_$w(CAREERS_MULTI_BOXES_PAGE_CONSTS.PRIMARY_SEARCH_INPUT).onKeyPress(async (event) => {
|
|
566
|
-
|
|
567
|
-
|
|
568
|
-
|
|
569
|
-
|
|
570
|
-
|
|
571
|
-
|
|
572
|
-
|
|
573
|
-
|
|
574
|
-
|
|
575
|
-
|
|
576
|
-
|
|
577
|
-
|
|
578
|
-
|
|
579
|
-
|
|
580
|
-
|
|
581
|
-
|
|
582
|
-
});
|
|
548
|
+
// _$w(CAREERS_MULTI_BOXES_PAGE_CONSTS.PRIMARY_SEARCH_INPUT).onInput(async () => {
|
|
549
|
+
// await primarySearchDebounced();
|
|
550
|
+
// });
|
|
551
|
+
|
|
552
|
+
// _$w(CAREERS_MULTI_BOXES_PAGE_CONSTS.PRIMARY_SEARCH_INPUT).onClick(async () => {
|
|
553
|
+
// _$w(CAREERS_MULTI_BOXES_PAGE_CONSTS.RESULTS_CONTAINER).expand();
|
|
554
|
+
// if(_$w(CAREERS_MULTI_BOXES_PAGE_CONSTS.PRIMARY_SEARCH_INPUT).value.trim()!=='') {
|
|
555
|
+
// await primarySearch(_$w, _$w(CAREERS_MULTI_BOXES_PAGE_CONSTS.PRIMARY_SEARCH_INPUT).value.trim());
|
|
556
|
+
// }
|
|
557
|
+
// else {
|
|
558
|
+
// await loadCategoriesListPrimarySearch(_$w);
|
|
559
|
+
// }
|
|
560
|
+
// });
|
|
561
|
+
|
|
562
|
+
// _$w(CAREERS_MULTI_BOXES_PAGE_CONSTS.RESULTS_CONTAINER).onMouseOut(async () => {
|
|
563
|
+
// _$w(CAREERS_MULTI_BOXES_PAGE_CONSTS.RESULTS_CONTAINER).collapse();
|
|
564
|
+
// });
|
|
565
|
+
|
|
566
|
+
// _$w(CAREERS_MULTI_BOXES_PAGE_CONSTS.PRIMARY_SEARCH_INPUT).onKeyPress(async (event) => {
|
|
567
|
+
// if( event.key==='Enter') {
|
|
568
|
+
// if(_$w(CAREERS_MULTI_BOXES_PAGE_CONSTS.PRIMARY_SEARCH_INPUT).value.trim()==='') {
|
|
569
|
+
// _$w(CAREERS_MULTI_BOXES_PAGE_CONSTS.RESULTS_CONTAINER).collapse();
|
|
570
|
+
// await updateJobsAndNumbersAndFilters(_$w);
|
|
571
|
+
|
|
572
|
+
// }
|
|
573
|
+
// else {
|
|
574
|
+
// let encodedKeyWord=encodeURIComponent(_$w(CAREERS_MULTI_BOXES_PAGE_CONSTS.PRIMARY_SEARCH_INPUT).value);
|
|
575
|
+
// const baseUrl = await location.baseUrl();
|
|
576
|
+
// await location.to(`${baseUrl}/search?keyword=${encodedKeyWord}`);
|
|
577
|
+
// // queryParams.add({ keyword:encodedKeyWord });
|
|
578
|
+
// // handleUrlParams(_$w,{keyword:encodedKeyWord});
|
|
579
|
+
// // _$w(CAREERS_MULTI_BOXES_PAGE_CONSTS.RESULTS_CONTAINER).collapse();
|
|
580
|
+
// // await primarySearch(_$w, _$w(CAREERS_MULTI_BOXES_PAGE_CONSTS.PRIMARY_SEARCH_INPUT).value.trim());
|
|
581
|
+
// }
|
|
582
|
+
// }
|
|
583
|
+
// });
|
|
583
584
|
_$w(CAREERS_MULTI_BOXES_PAGE_CONSTS.SECONDARY_SEARCH_INPUT).onInput(secondarySearchDebounced);
|
|
584
585
|
|
|
585
|
-
_$w(CAREERS_MULTI_BOXES_PAGE_CONSTS.PRIMARY_SEARCH_BUTTON).onClick(async () => {
|
|
586
|
-
|
|
587
|
-
|
|
588
|
-
|
|
589
|
-
|
|
590
|
-
|
|
591
|
-
|
|
592
|
-
|
|
593
|
-
|
|
594
|
-
|
|
595
|
-
|
|
596
|
-
|
|
597
|
-
|
|
598
|
-
});
|
|
586
|
+
// _$w(CAREERS_MULTI_BOXES_PAGE_CONSTS.PRIMARY_SEARCH_BUTTON).onClick(async () => {
|
|
587
|
+
// if(_$w(CAREERS_MULTI_BOXES_PAGE_CONSTS.PRIMARY_SEARCH_INPUT).value.trim()==='') {
|
|
588
|
+
// _$w(CAREERS_MULTI_BOXES_PAGE_CONSTS.RESULTS_CONTAINER).collapse();
|
|
589
|
+
// await updateJobsAndNumbersAndFilters(_$w);
|
|
590
|
+
// }
|
|
591
|
+
// else {
|
|
592
|
+
// let encodedKeyWord=encodeURIComponent(_$w(CAREERS_MULTI_BOXES_PAGE_CONSTS.PRIMARY_SEARCH_INPUT).value);
|
|
593
|
+
// const baseUrl = await location.baseUrl();
|
|
594
|
+
// await location.to(`${baseUrl}/search?keyword=${encodedKeyWord}`);
|
|
595
|
+
// // queryParams.add({ keyword:encodedKeyWord });
|
|
596
|
+
// // await primarySearch(_$w, _$w(CAREERS_MULTI_BOXES_PAGE_CONSTS.PRIMARY_SEARCH_INPUT).value.trim());
|
|
597
|
+
// // _$w(CAREERS_MULTI_BOXES_PAGE_CONSTS.RESULTS_CONTAINER).collapse();
|
|
598
|
+
// }
|
|
599
|
+
// });
|
|
599
600
|
} catch (error) {
|
|
600
601
|
console.error('Failed to bind search input:', error);
|
|
601
602
|
}
|
|
602
603
|
}
|
|
603
604
|
|
|
604
|
-
async function loadCategoriesListPrimarySearch(_$w) {
|
|
605
|
-
|
|
606
|
-
|
|
607
|
-
|
|
608
|
-
|
|
609
|
-
|
|
610
|
-
|
|
611
|
-
|
|
612
|
-
|
|
613
|
-
|
|
614
|
-
}
|
|
605
|
+
// async function loadCategoriesListPrimarySearch(_$w) {
|
|
606
|
+
// _$w(CAREERS_MULTI_BOXES_PAGE_CONSTS.PRIMARY_SEARCH_MULTI_BOX).changeState("categoryResults");
|
|
607
|
+
// let categoryValues=[]
|
|
608
|
+
// for(const value of allvaluesobjects) {
|
|
609
|
+
// if(value.customField===CATEGORY_CUSTOM_FIELD_ID_IN_CMS) {
|
|
610
|
+
// categoryValues.push({title:value.title+` (${value.totalJobs})` ,_id:value._id});
|
|
611
|
+
// }
|
|
612
|
+
// }
|
|
613
|
+
// console.log("categoryValues: ", categoryValues);
|
|
614
|
+
// _$w(CAREERS_MULTI_BOXES_PAGE_CONSTS.CATEGORY_RESULTS_REPEATER).data = categoryValues;
|
|
615
|
+
// }
|
|
615
616
|
|
|
616
617
|
module.exports = {
|
|
617
618
|
careersMultiBoxesPageOnReady,
|
package/pages/homePage.js
CHANGED
|
@@ -5,12 +5,29 @@ const {
|
|
|
5
5
|
const { handleOnLocationClick } = require('../public/mapUtils');
|
|
6
6
|
const { filterBrokenMarkers } = require('../public/utils');
|
|
7
7
|
const { location } = require('@wix/site-location');
|
|
8
|
+
const {wixData} = require('wix-data');
|
|
9
|
+
const { COLLECTIONS } = require('../backend/collectionConsts');
|
|
10
|
+
const { bindPrimarySearch,getAllRecords,loadPrimarySearchRepeater } = require('./pagesUtils');
|
|
8
11
|
let thisObjectVar;
|
|
9
12
|
let searchByCityFlag=false;
|
|
10
|
-
async function homePageOnReady(_$w,thisObject) {
|
|
13
|
+
async function homePageOnReady(_$w,thisObject=null) {
|
|
14
|
+
|
|
15
|
+
const queryResult = await wixData.query(COLLECTIONS.SITE_CONFIGS).find();
|
|
16
|
+
const siteconfig = queryResult.items[0];
|
|
17
|
+
if(siteconfig.categorySearch==="true") {
|
|
18
|
+
const allJobs=await getAllRecords(COLLECTIONS.JOBS);
|
|
19
|
+
const allvaluesobjects=await getAllRecords(COLLECTIONS.CUSTOM_VALUES);
|
|
20
|
+
Promise.all([
|
|
21
|
+
bindPrimarySearch(_$w,allvaluesobjects,allJobs),
|
|
22
|
+
loadPrimarySearchRepeater(_$w)
|
|
23
|
+
]);
|
|
24
|
+
}
|
|
25
|
+
else{
|
|
26
|
+
|
|
11
27
|
thisObjectVar=thisObject;
|
|
12
28
|
await bind(_$w);
|
|
13
29
|
await init(_$w);
|
|
30
|
+
}
|
|
14
31
|
|
|
15
32
|
}
|
|
16
33
|
|
package/pages/pagesUtils.js
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
const { items: wixData } = require('@wix/data');
|
|
2
2
|
const { JOBS_COLLECTION_FIELDS } = require('../backend/collectionConsts');
|
|
3
|
+
const { CAREERS_MULTI_BOXES_PAGE_CONSTS,CATEGORY_CUSTOM_FIELD_ID_IN_CMS } = require('../backend/careersMultiBoxesPageIds');
|
|
3
4
|
|
|
4
5
|
function groupValuesByField(values, refKey) {
|
|
5
6
|
const map = new Map();
|
|
@@ -58,6 +59,124 @@ function groupValuesByField(values, refKey) {
|
|
|
58
59
|
}
|
|
59
60
|
}
|
|
60
61
|
|
|
62
|
+
async function loadPrimarySearchRepeater(_$w) {
|
|
63
|
+
try {
|
|
64
|
+
_$w(CAREERS_MULTI_BOXES_PAGE_CONSTS.JOB_RESULTS_REPEATER).onItemReady(async ($item, itemData) => {
|
|
65
|
+
$item(CAREERS_MULTI_BOXES_PAGE_CONSTS.PRIMARY_SEARCH_POSITION_BUTTON).label = itemData.title || '';
|
|
66
|
+
$item(CAREERS_MULTI_BOXES_PAGE_CONSTS.PRIMARY_SEARCH_POSITION_BUTTON).onClick(async () => {
|
|
67
|
+
await location.to(itemData["link-jobs-title"]);
|
|
68
|
+
})
|
|
69
|
+
|
|
70
|
+
});
|
|
71
|
+
|
|
72
|
+
_$w(CAREERS_MULTI_BOXES_PAGE_CONSTS.CATEGORY_RESULTS_REPEATER).onItemReady(async ($item, itemData) => {
|
|
73
|
+
$item(CAREERS_MULTI_BOXES_PAGE_CONSTS.PRIMARY_SEARCH_CATEGORY_BUTTON).label = itemData.title || '';
|
|
74
|
+
$item(CAREERS_MULTI_BOXES_PAGE_CONSTS.PRIMARY_SEARCH_CATEGORY_BUTTON).onClick(async () => {
|
|
75
|
+
const baseUrl = await location.baseUrl();
|
|
76
|
+
const encodedCategory=encodeURIComponent(itemData._id);
|
|
77
|
+
await location.to(`${baseUrl}/search?category=${encodedCategory}`);
|
|
78
|
+
});
|
|
79
|
+
});
|
|
80
|
+
} catch (error) {
|
|
81
|
+
console.error('Failed to load primary search repeater:', error);
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
async function bindPrimarySearch(_$w,allvaluesobjects,alljobs) {
|
|
86
|
+
|
|
87
|
+
const primarySearchDebounced = debounce(async () => {
|
|
88
|
+
const query = (_$w(CAREERS_MULTI_BOXES_PAGE_CONSTS.PRIMARY_SEARCH_INPUT).value || '').toLowerCase().trim();
|
|
89
|
+
await primarySearch(_$w, query, alljobs);
|
|
90
|
+
}, 150);
|
|
91
|
+
|
|
92
|
+
_$w(CAREERS_MULTI_BOXES_PAGE_CONSTS.PRIMARY_SEARCH_INPUT).onInput(async () => {
|
|
93
|
+
await primarySearchDebounced();
|
|
94
|
+
});
|
|
95
|
+
|
|
96
|
+
_$w(CAREERS_MULTI_BOXES_PAGE_CONSTS.PRIMARY_SEARCH_INPUT).onClick(async () => {
|
|
97
|
+
_$w(CAREERS_MULTI_BOXES_PAGE_CONSTS.RESULTS_CONTAINER).expand();
|
|
98
|
+
if(_$w(CAREERS_MULTI_BOXES_PAGE_CONSTS.PRIMARY_SEARCH_INPUT).value.trim()!=='') {
|
|
99
|
+
await primarySearch(_$w, _$w(CAREERS_MULTI_BOXES_PAGE_CONSTS.PRIMARY_SEARCH_INPUT).value.trim(), alljobs);
|
|
100
|
+
}
|
|
101
|
+
else {
|
|
102
|
+
await loadCategoriesListPrimarySearch(_$w,allvaluesobjects);
|
|
103
|
+
}
|
|
104
|
+
});
|
|
105
|
+
|
|
106
|
+
_$w(CAREERS_MULTI_BOXES_PAGE_CONSTS.RESULTS_CONTAINER).onMouseOut(async () => {
|
|
107
|
+
_$w(CAREERS_MULTI_BOXES_PAGE_CONSTS.RESULTS_CONTAINER).collapse();
|
|
108
|
+
});
|
|
109
|
+
|
|
110
|
+
_$w(CAREERS_MULTI_BOXES_PAGE_CONSTS.PRIMARY_SEARCH_INPUT).onKeyPress(async (event) => {
|
|
111
|
+
if( event.key==='Enter') {
|
|
112
|
+
if(_$w(CAREERS_MULTI_BOXES_PAGE_CONSTS.PRIMARY_SEARCH_INPUT).value.trim()==='') {
|
|
113
|
+
_$w(CAREERS_MULTI_BOXES_PAGE_CONSTS.RESULTS_CONTAINER).collapse();
|
|
114
|
+
// await updateJobsAndNumbersAndFilters(_$w);
|
|
115
|
+
|
|
116
|
+
}
|
|
117
|
+
else {
|
|
118
|
+
let encodedKeyWord=encodeURIComponent(_$w(CAREERS_MULTI_BOXES_PAGE_CONSTS.PRIMARY_SEARCH_INPUT).value);
|
|
119
|
+
const baseUrl = await location.baseUrl();
|
|
120
|
+
await location.to(`${baseUrl}/search?keyword=${encodedKeyWord}`);
|
|
121
|
+
// queryParams.add({ keyword:encodedKeyWord });
|
|
122
|
+
// handleUrlParams(_$w,{keyword:encodedKeyWord});
|
|
123
|
+
// _$w(CAREERS_MULTI_BOXES_PAGE_CONSTS.RESULTS_CONTAINER).collapse();
|
|
124
|
+
// await primarySearch(_$w, _$w(CAREERS_MULTI_BOXES_PAGE_CONSTS.PRIMARY_SEARCH_INPUT).value.trim());
|
|
125
|
+
}
|
|
126
|
+
}
|
|
127
|
+
});
|
|
128
|
+
|
|
129
|
+
_$w(CAREERS_MULTI_BOXES_PAGE_CONSTS.PRIMARY_SEARCH_BUTTON).onClick(async () => {
|
|
130
|
+
if(_$w(CAREERS_MULTI_BOXES_PAGE_CONSTS.PRIMARY_SEARCH_INPUT).value.trim()==='') {
|
|
131
|
+
_$w(CAREERS_MULTI_BOXES_PAGE_CONSTS.RESULTS_CONTAINER).collapse();
|
|
132
|
+
//await updateJobsAndNumbersAndFilters(_$w);
|
|
133
|
+
}
|
|
134
|
+
else {
|
|
135
|
+
let encodedKeyWord=encodeURIComponent(_$w(CAREERS_MULTI_BOXES_PAGE_CONSTS.PRIMARY_SEARCH_INPUT).value);
|
|
136
|
+
const baseUrl = await location.baseUrl();
|
|
137
|
+
await location.to(`${baseUrl}/search?keyword=${encodedKeyWord}`);
|
|
138
|
+
// queryParams.add({ keyword:encodedKeyWord });
|
|
139
|
+
// await primarySearch(_$w, _$w(CAREERS_MULTI_BOXES_PAGE_CONSTS.PRIMARY_SEARCH_INPUT).value.trim());
|
|
140
|
+
// _$w(CAREERS_MULTI_BOXES_PAGE_CONSTS.RESULTS_CONTAINER).collapse();
|
|
141
|
+
}
|
|
142
|
+
});
|
|
143
|
+
|
|
144
|
+
|
|
145
|
+
}
|
|
146
|
+
|
|
147
|
+
async function loadCategoriesListPrimarySearch(_$w,allvaluesobjects) {
|
|
148
|
+
_$w(CAREERS_MULTI_BOXES_PAGE_CONSTS.PRIMARY_SEARCH_MULTI_BOX).changeState("categoryResults");
|
|
149
|
+
let categoryValues=[]
|
|
150
|
+
for(const value of allvaluesobjects) {
|
|
151
|
+
if(value.customField===CATEGORY_CUSTOM_FIELD_ID_IN_CMS) {
|
|
152
|
+
categoryValues.push({title:value.title+` (${value.totalJobs})` ,_id:value._id});
|
|
153
|
+
}
|
|
154
|
+
}
|
|
155
|
+
console.log("categoryValues: ", categoryValues);
|
|
156
|
+
_$w(CAREERS_MULTI_BOXES_PAGE_CONSTS.CATEGORY_RESULTS_REPEATER).data = categoryValues;
|
|
157
|
+
}
|
|
158
|
+
|
|
159
|
+
async function primarySearch(_$w,query,alljobs) {
|
|
160
|
+
console.log("primary search query: ", query);
|
|
161
|
+
if(query.length===0 || query===undefined || query==='') {
|
|
162
|
+
_$w(CAREERS_MULTI_BOXES_PAGE_CONSTS.PRIMARY_SEARCH_MULTI_BOX).changeState("categoryResults");
|
|
163
|
+
return false;
|
|
164
|
+
}
|
|
165
|
+
|
|
166
|
+
let filteredJobs=alljobs.filter(job=>job.title.toLowerCase().includes(query));
|
|
167
|
+
console.log("filteredJobs.length: ", filteredJobs.length);
|
|
168
|
+
if(filteredJobs.length>0) {
|
|
169
|
+
//currentJobs=filteredJobs;
|
|
170
|
+
_$w(CAREERS_MULTI_BOXES_PAGE_CONSTS.PRIMARY_SEARCH_MULTI_BOX).changeState("jobResults");
|
|
171
|
+
_$w(CAREERS_MULTI_BOXES_PAGE_CONSTS.JOB_RESULTS_REPEATER).data = filteredJobs
|
|
172
|
+
return true;
|
|
173
|
+
}
|
|
174
|
+
else {
|
|
175
|
+
_$w(CAREERS_MULTI_BOXES_PAGE_CONSTS.PRIMARY_SEARCH_MULTI_BOX).changeState("noResults");
|
|
176
|
+
return false;
|
|
177
|
+
}
|
|
178
|
+
}
|
|
179
|
+
|
|
61
180
|
module.exports = {
|
|
62
181
|
groupValuesByField,
|
|
63
182
|
debounce,
|
|
@@ -66,4 +185,7 @@ function groupValuesByField(values, refKey) {
|
|
|
66
185
|
getFieldByTitle,
|
|
67
186
|
getCorrectOption,
|
|
68
187
|
getOptionIndexFromCheckBox,
|
|
188
|
+
loadPrimarySearchRepeater,
|
|
189
|
+
bindPrimarySearch,
|
|
190
|
+
primarySearch,
|
|
69
191
|
}
|
|
@@ -28,13 +28,14 @@ Module.prototype.require = function(id) {
|
|
|
28
28
|
};
|
|
29
29
|
|
|
30
30
|
const careersMultiBoxesPage = rewire('../pages/careersMultiBoxesPage');
|
|
31
|
+
const pagesUtils = rewire('../pages/pagesUtils');
|
|
31
32
|
|
|
32
33
|
// Restore original require
|
|
33
34
|
Module.prototype.require = originalRequire;
|
|
34
35
|
|
|
35
36
|
const secondarySearch = careersMultiBoxesPage.__get__('secondarySearch');
|
|
36
|
-
const primarySearch =
|
|
37
|
-
const loadCategoriesListPrimarySearch =
|
|
37
|
+
const primarySearch = pagesUtils.__get__('primarySearch');
|
|
38
|
+
const loadCategoriesListPrimarySearch = pagesUtils.__get__('loadCategoriesListPrimarySearch');
|
|
38
39
|
|
|
39
40
|
|
|
40
41
|
|
|
@@ -165,7 +166,7 @@ describe('primarySearch function tests', () => {
|
|
|
165
166
|
});
|
|
166
167
|
careersMultiBoxesPage.__set__('alljobs', mockJobs);
|
|
167
168
|
|
|
168
|
-
await primarySearch(mockW, 'product');
|
|
169
|
+
await primarySearch(mockW, 'product',mockJobs);
|
|
169
170
|
|
|
170
171
|
expect(mockprimarySearchMultiBox.changeState).toHaveBeenCalledWith('jobResults');
|
|
171
172
|
expect(mockprimarySearcJobResult.data).toHaveLength(11);
|
|
@@ -178,7 +179,7 @@ describe('primarySearch function tests', () => {
|
|
|
178
179
|
});
|
|
179
180
|
careersMultiBoxesPage.__set__('alljobs', mockJobs);
|
|
180
181
|
|
|
181
|
-
await primarySearch(mockW, 'unicorn hunter');
|
|
182
|
+
await primarySearch(mockW, 'unicorn hunter',mockJobs);
|
|
182
183
|
|
|
183
184
|
expect(mockprimarySearchMultiBox.changeState).toHaveBeenCalledWith('noResults');
|
|
184
185
|
expect(mockprimarySearcJobResult.data).toBeNull();
|
|
@@ -193,7 +194,7 @@ describe('primarySearch function tests', () => {
|
|
|
193
194
|
|
|
194
195
|
careersMultiBoxesPage.__set__('allvaluesobjects', mockCategoryValues);
|
|
195
196
|
|
|
196
|
-
await loadCategoriesListPrimarySearch(mockW);
|
|
197
|
+
await loadCategoriesListPrimarySearch(mockW,mockCategoryValues);
|
|
197
198
|
|
|
198
199
|
expect(mockprimarySearchMultiBox.changeState).toHaveBeenCalledWith('categoryResults');
|
|
199
200
|
expect(mockCategoryResultsRepeater.data).toHaveLength(3);
|