sr-npm 1.2.45 → 1.2.47
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 +7 -0
- package/backend/utils.js +2 -1
- package/package.json +1 -1
- package/pages/boardPeoplePage.js +2 -3
- package/pages/careersMultiBoxesPage.js +22 -14
- package/pages/pagesUtils.js +187 -174
- package/pages/positionPage.js +2 -1
- package/pages/supportTeamsPage.js +2 -1
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
const CAREERS_MULTI_BOXES_PAGE_CONSTS={
|
|
2
|
+
JOBS_DATASET: '#jobsDataset',
|
|
2
3
|
FILTER_REPEATER: '#filterReapter',
|
|
3
4
|
JOBS_REPEATER: '#jobsReapter',
|
|
4
5
|
JOBS_REPEATER_ITEM_TITLE: '#jobTitle',
|
|
@@ -30,11 +31,16 @@ const CAREERS_MULTI_BOXES_PAGE_CONSTS={
|
|
|
30
31
|
PRIMARY_SEARCH_CATEGORY_BUTTON: '#primarySearchCategoryButton',
|
|
31
32
|
RESULTS_CONTAINER: '#resultsContainer',
|
|
32
33
|
PRIMARY_SEARCH_BUTTON: '#primarySearchButton',
|
|
34
|
+
}
|
|
33
35
|
|
|
36
|
+
const JOBS_COLLECTION_FIELDS={
|
|
37
|
+
LINK_JOBS_TITLE: 'link-jobs-title',
|
|
38
|
+
LINK_JOBS_REF_ID_SLUG: 'link-jobs-refId-slug',
|
|
34
39
|
}
|
|
35
40
|
|
|
36
41
|
const CATEGORY_CUSTOM_FIELD_ID_IN_CMS='5cd8c873c9e77c0008aa7d23';
|
|
37
42
|
|
|
43
|
+
// used for filters - don't add anything else here
|
|
38
44
|
const fieldTitlesInCMS={
|
|
39
45
|
"brand": "Brands",
|
|
40
46
|
category: "Category",
|
|
@@ -74,4 +80,5 @@ module.exports = {
|
|
|
74
80
|
fieldTitlesInCMS,
|
|
75
81
|
CATEGORY_CUSTOM_FIELD_ID_IN_CMS,
|
|
76
82
|
possibleUrlParams,
|
|
83
|
+
JOBS_COLLECTION_FIELDS,
|
|
77
84
|
}
|
package/backend/utils.js
CHANGED
|
@@ -61,7 +61,8 @@ function normalizeString(str) {
|
|
|
61
61
|
return str
|
|
62
62
|
.normalize('NFD')
|
|
63
63
|
.replace(/\p{Diacritic}/gu, '')
|
|
64
|
-
.replace(
|
|
64
|
+
.replace(/-/g, '') // remove all hyphens
|
|
65
|
+
.replace(/[^A-Za-z0-9]/g, '') // allow only alphanumerics (no hyphens now)
|
|
65
66
|
.trim();
|
|
66
67
|
}
|
|
67
68
|
|
package/package.json
CHANGED
package/pages/boardPeoplePage.js
CHANGED
|
@@ -6,18 +6,17 @@ async function boardPeoplePageOnReady(_$w,) {
|
|
|
6
6
|
}
|
|
7
7
|
|
|
8
8
|
async function bindBoardPeopleRepeaters(_$w) {
|
|
9
|
-
|
|
10
9
|
_$w('#directorsRepeaterItem').onClick((event) => {
|
|
11
10
|
const $item = _$w.at(event.context);
|
|
12
11
|
const clickedItemData = $item('#dynamicDataset').getCurrentItem();
|
|
13
|
-
location.to(
|
|
12
|
+
location.to(`${clickedItemData['link-board-people-title_fld']}`);
|
|
14
13
|
|
|
15
14
|
});
|
|
16
15
|
|
|
17
16
|
_$w('#executivesRepeaterItem').onClick((event) => {
|
|
18
17
|
const $item = _$w.at(event.context);
|
|
19
18
|
const clickedItemData = $item('#dataset1').getCurrentItem();
|
|
20
|
-
location.to(
|
|
19
|
+
location.to(`${clickedItemData['link-board-people-title_fld']}`);
|
|
21
20
|
|
|
22
21
|
});
|
|
23
22
|
}
|
|
@@ -4,8 +4,25 @@ const { CAREERS_PAGE_SELECTORS } = require('../public/selectors');
|
|
|
4
4
|
const { window } = require('@wix/site-window');
|
|
5
5
|
const { queryParams,onChange} = require('wix-location-frontend');
|
|
6
6
|
const { location } = require("@wix/site-location");
|
|
7
|
-
const {
|
|
8
|
-
|
|
7
|
+
const {
|
|
8
|
+
CAREERS_MULTI_BOXES_PAGE_CONSTS,
|
|
9
|
+
FiltersIds,
|
|
10
|
+
fieldTitlesInCMS,
|
|
11
|
+
possibleUrlParams,
|
|
12
|
+
JOBS_COLLECTION_FIELDS
|
|
13
|
+
} = require('../backend/careersMultiBoxesPageIds');
|
|
14
|
+
const { groupValuesByField,
|
|
15
|
+
debounce,
|
|
16
|
+
getAllRecords,
|
|
17
|
+
getFieldById,
|
|
18
|
+
getFieldByTitle,
|
|
19
|
+
getCorrectOption,
|
|
20
|
+
getOptionIndexFromCheckBox,
|
|
21
|
+
loadPrimarySearchRepeater,
|
|
22
|
+
bindPrimarySearch,
|
|
23
|
+
primarySearch,
|
|
24
|
+
getAllDatasetItems
|
|
25
|
+
} = require('./pagesUtils');
|
|
9
26
|
|
|
10
27
|
|
|
11
28
|
let dontUpdateThisCheckBox;
|
|
@@ -134,18 +151,9 @@ async function handleUrlParams(_$w,urlParams,handleBackAndForth=false) {
|
|
|
134
151
|
if(urlParams.keyword) {
|
|
135
152
|
applyFiltering = await primarySearch(_$w, decodeURIComponent(urlParams.keyword));
|
|
136
153
|
_$w(CAREERS_MULTI_BOXES_PAGE_CONSTS.PRIMARY_SEARCH_INPUT).value = decodeURIComponent(urlParams.keyword);
|
|
137
|
-
|
|
138
|
-
await _$w("#jobsDataset").onReadyAsync();
|
|
139
154
|
|
|
140
|
-
|
|
141
|
-
let data = await _$w("#jobsDataset").getItems(0, 1000);
|
|
142
|
-
items.push(...data.items);
|
|
155
|
+
const items = await getAllDatasetItems(_$w, CAREERS_MULTI_BOXES_PAGE_CONSTS.JOBS_DATASET);
|
|
143
156
|
|
|
144
|
-
while (_$w("#jobsDataset").hasNextPage()) {
|
|
145
|
-
const nextItems = await _$w("#jobsDataset").nextPage();
|
|
146
|
-
items.push(...nextItems);
|
|
147
|
-
}
|
|
148
|
-
|
|
149
157
|
currentJobs = items;
|
|
150
158
|
keywordAllJobs = items;
|
|
151
159
|
}
|
|
@@ -310,7 +318,7 @@ async function loadJobsRepeater(_$w) {
|
|
|
310
318
|
_$w(CAREERS_MULTI_BOXES_PAGE_CONSTS.JOBS_REPEATER).onItemReady(($item, itemData) => {
|
|
311
319
|
$item(CAREERS_MULTI_BOXES_PAGE_CONSTS.JOBS_REPEATER_ITEM_TITLE).text = itemData.title;
|
|
312
320
|
$item(CAREERS_MULTI_BOXES_PAGE_CONSTS.JOBS_REPEATER_ITEM_TITLE).onClick(() => {
|
|
313
|
-
location.to(itemData[
|
|
321
|
+
location.to(itemData[JOBS_COLLECTION_FIELDS.LINK_JOBS_TITLE] || itemData[JOBS_COLLECTION_FIELDS.LINK_JOBS_REF_ID_SLUG]);
|
|
314
322
|
});
|
|
315
323
|
$item(CAREERS_MULTI_BOXES_PAGE_CONSTS.JOBS_REPEATER_ITEM_LOCATION).text=itemData.location.fullLocation
|
|
316
324
|
$item(CAREERS_MULTI_BOXES_PAGE_CONSTS.JOBS_REPEATER_ITEM_EMPLOYMENT_TYPE).text=itemData.employmentType
|
|
@@ -496,7 +504,7 @@ function getValueFromValueId(valueIds, value) {
|
|
|
496
504
|
}
|
|
497
505
|
else{
|
|
498
506
|
//if it is not location then we check if selecred values (which is an array) have one of the job values (whcih is also an array)
|
|
499
|
-
if(job[JOBS_COLLECTION_FIELDS.MULTI_REF_JOBS_CUSTOM_VALUES].some(value=>values.includes(value.
|
|
507
|
+
if(job[JOBS_COLLECTION_FIELDS.MULTI_REF_JOBS_CUSTOM_VALUES].some(value=>values.includes(value.valueId))) {
|
|
500
508
|
if(!addedJobsIds.has(job._id)) {
|
|
501
509
|
tempFilteredJobs.push(job);
|
|
502
510
|
addedJobsIds.add(job._id);
|
package/pages/pagesUtils.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
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 } = require('../backend/careersMultiBoxesPageIds');
|
|
3
|
+
const { CAREERS_MULTI_BOXES_PAGE_CONSTS, CATEGORY_CUSTOM_FIELD_ID_IN_CMS, JOBS_COLLECTION_FIELDS } = require('../backend/careersMultiBoxesPageIds');
|
|
4
4
|
const { location } = require("@wix/site-location");
|
|
5
5
|
const { normalizeString } = require('../backend/utils');
|
|
6
6
|
const { getFilter } = require('../public/filterUtils');
|
|
@@ -16,248 +16,261 @@ function groupValuesByField(values, refKey) {
|
|
|
16
16
|
});
|
|
17
17
|
}
|
|
18
18
|
return map;
|
|
19
|
-
|
|
19
|
+
}
|
|
20
20
|
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
};
|
|
21
|
+
const debounce = (fn, ms = 150) => {
|
|
22
|
+
let t;
|
|
23
|
+
return (...args) => {
|
|
24
|
+
clearTimeout(t);
|
|
25
|
+
t = setTimeout(() => fn(...args), ms);
|
|
27
26
|
};
|
|
27
|
+
};
|
|
28
28
|
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
items.push(...res.items);
|
|
40
|
-
}
|
|
41
|
-
return items;
|
|
29
|
+
async function getAllDatasetItems(_$w, datasetSelector) {
|
|
30
|
+
await _$w(datasetSelector).onReadyAsync();
|
|
31
|
+
|
|
32
|
+
let items = [];
|
|
33
|
+
let data = await _$w(datasetSelector).getItems(0, 1000);
|
|
34
|
+
items.push(...data.items);
|
|
35
|
+
|
|
36
|
+
while (_$w(datasetSelector).hasNextPage()) {
|
|
37
|
+
const nextItems = await _$w(datasetSelector).nextPage();
|
|
38
|
+
items.push(...nextItems);
|
|
42
39
|
}
|
|
43
40
|
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
41
|
+
return items;
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
async function getAllRecords(collectionId) {
|
|
45
|
+
const q = wixData.query(collectionId).include(JOBS_COLLECTION_FIELDS.MULTI_REF_JOBS_CUSTOM_VALUES)
|
|
46
|
+
|
|
47
|
+
|
|
48
|
+
const items = [];
|
|
49
|
+
let res = await q.limit(1000).find();
|
|
50
|
+
items.push(...res.items);
|
|
51
|
+
|
|
52
|
+
while (res.hasNext()) {
|
|
53
|
+
res = await res.next();
|
|
50
54
|
items.push(...res.items);
|
|
51
|
-
|
|
52
|
-
while (res.hasNext()) {
|
|
53
|
-
res = await res.next();
|
|
54
|
-
items.push(...res.items);
|
|
55
|
-
}
|
|
56
|
-
return items;
|
|
57
55
|
}
|
|
56
|
+
return items;
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
async function getAllRecordsWithoutMultiRef(collectionId) {
|
|
60
|
+
const q = wixData.query(collectionId)
|
|
58
61
|
|
|
59
|
-
function getFieldById(fieldId,allFields) {
|
|
60
|
-
return allFields.find(field=>field._id===fieldId);
|
|
61
|
-
}
|
|
62
62
|
|
|
63
|
-
|
|
64
|
-
|
|
63
|
+
const items = [];
|
|
64
|
+
let res = await q.limit(1000).find();
|
|
65
|
+
items.push(...res.items);
|
|
66
|
+
|
|
67
|
+
while (res.hasNext()) {
|
|
68
|
+
res = await res.next();
|
|
69
|
+
items.push(...res.items);
|
|
65
70
|
}
|
|
71
|
+
return items;
|
|
72
|
+
}
|
|
66
73
|
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
+
function getFieldById(fieldId,allFields) {
|
|
75
|
+
return allFields.find(field=>field._id===fieldId);
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
function getFieldByTitle(title,allFields) {
|
|
79
|
+
return allFields.find(field=>field.title===title);
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
function getCorrectOption(value,options,param) {
|
|
83
|
+
const standardizedValue = normalizeString(value.toLowerCase())
|
|
84
|
+
if(param==="employmenttype") //employmenttype have a problematic value
|
|
85
|
+
{
|
|
86
|
+
return options.find(option=>normalizeString(option.value.toLowerCase())===standardizedValue);
|
|
74
87
|
}
|
|
88
|
+
return options.find(option=>normalizeString(option.label.toLowerCase())===standardizedValue);
|
|
89
|
+
}
|
|
75
90
|
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
}
|
|
91
|
+
function getOptionIndexFromCheckBox(options,value) {
|
|
92
|
+
const normalizedValue=normalizeString(value.toLowerCase());
|
|
93
|
+
for(let index=0;index<options.length;index++) {
|
|
94
|
+
if(normalizeString(options[index].value.toLowerCase())===normalizedValue) {
|
|
95
|
+
return index;
|
|
82
96
|
}
|
|
83
97
|
}
|
|
98
|
+
}
|
|
84
99
|
|
|
85
100
|
function loadPrimarySearchRepeater(_$w) {
|
|
86
101
|
|
|
102
|
+
_$w(CAREERS_MULTI_BOXES_PAGE_CONSTS.JOB_RESULTS_REPEATER).onItemReady(async ($item, itemData) => {
|
|
103
|
+
$item(CAREERS_MULTI_BOXES_PAGE_CONSTS.PRIMARY_SEARCH_POSITION_BUTTON).label = itemData.title || '';
|
|
104
|
+
});
|
|
105
|
+
|
|
87
106
|
_$w(CAREERS_MULTI_BOXES_PAGE_CONSTS.JOB_RESULTS_REPEATER_ITEM).onClick((event) => {
|
|
88
107
|
const data = _$w(CAREERS_MULTI_BOXES_PAGE_CONSTS.JOB_RESULTS_REPEATER).data;
|
|
89
108
|
const clickedItemData = data.find(
|
|
90
109
|
(item) => item._id === event.context.itemId,
|
|
91
110
|
|
|
92
111
|
);
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
key => key.startsWith('link') && key.includes('jobs') && key.includes('title')
|
|
97
|
-
);
|
|
98
|
-
if (linkKey && clickedItemData[linkKey] ) {
|
|
99
|
-
if(clickedItemData[linkKey].includes("copy-of-jobs")) {
|
|
100
|
-
clickedItemData[linkKey]=clickedItemData[linkKey].replace("copy-of-jobs","jobs")
|
|
101
|
-
}
|
|
102
|
-
location.to(clickedItemData[linkKey]);
|
|
112
|
+
if(!clickedItemData[JOBS_COLLECTION_FIELDS.LINK_JOBS_TITLE] && !clickedItemData[JOBS_COLLECTION_FIELDS.LINK_JOBS_REF_ID_SLUG]) {
|
|
113
|
+
console.error("clickedItemData does not have link-jobs-title or link-jobs-refId-slug");
|
|
114
|
+
return;
|
|
103
115
|
}
|
|
104
116
|
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
$item(CAREERS_MULTI_BOXES_PAGE_CONSTS.PRIMARY_SEARCH_CATEGORY_BUTTON).label = itemData.title || '';
|
|
108
|
-
});
|
|
117
|
+
location.to(clickedItemData[JOBS_COLLECTION_FIELDS.LINK_JOBS_TITLE]||clickedItemData[JOBS_COLLECTION_FIELDS.LINK_JOBS_REF_ID_SLUG]);
|
|
118
|
+
|
|
109
119
|
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
120
|
+
});
|
|
121
|
+
_$w(CAREERS_MULTI_BOXES_PAGE_CONSTS.CATEGORY_RESULTS_REPEATER).onItemReady(async ($item, itemData) => {
|
|
122
|
+
$item(CAREERS_MULTI_BOXES_PAGE_CONSTS.PRIMARY_SEARCH_CATEGORY_BUTTON).label = itemData.title || '';
|
|
123
|
+
});
|
|
124
|
+
|
|
125
|
+
_$w(CAREERS_MULTI_BOXES_PAGE_CONSTS.CATEGORY_RESULTS_REPEATER_ITEM).onClick(async (event) => {
|
|
126
|
+
const data = _$w(CAREERS_MULTI_BOXES_PAGE_CONSTS.CATEGORY_RESULTS_REPEATER).data;
|
|
127
|
+
const clickedItemData = data.find(
|
|
128
|
+
(item) => item._id === event.context.itemId,
|
|
129
|
+
);
|
|
130
|
+
const baseUrl = await location.baseUrl();
|
|
131
|
+
const encodedCategory=encodeURIComponent(clickedItemData._id);
|
|
132
|
+
location.to(`${baseUrl}/search?category=${encodedCategory}`);
|
|
133
|
+
});
|
|
119
134
|
|
|
120
135
|
}
|
|
121
136
|
|
|
122
137
|
function bindPrimarySearch(_$w, allvaluesobjects) {
|
|
123
138
|
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
139
|
+
const handleSearchInput = async () => {
|
|
140
|
+
const query = _$w(CAREERS_MULTI_BOXES_PAGE_CONSTS.PRIMARY_SEARCH_INPUT).value?.toLowerCase().trim() || '';
|
|
141
|
+
await primarySearch(_$w, query);
|
|
142
|
+
}
|
|
128
143
|
|
|
129
|
-
|
|
144
|
+
const primarySearchDebounced = debounce(() => handleSearchInput(), 400);
|
|
130
145
|
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
146
|
+
_$w(CAREERS_MULTI_BOXES_PAGE_CONSTS.PRIMARY_SEARCH_INPUT).onInput(async () => {
|
|
147
|
+
await primarySearchDebounced();
|
|
148
|
+
});
|
|
134
149
|
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
if(_$w(CAREERS_MULTI_BOXES_PAGE_CONSTS.PRIMARY_SEARCH_INPUT).value.trim()!=='') {
|
|
139
|
-
const query = _$w(CAREERS_MULTI_BOXES_PAGE_CONSTS.PRIMARY_SEARCH_INPUT).value?.toLowerCase().trim() || '';
|
|
140
|
-
await primarySearch(_$w, query);
|
|
141
|
-
}
|
|
142
|
-
else {
|
|
143
|
-
await loadCategoriesListPrimarySearch(_$w,allvaluesobjects);
|
|
144
|
-
}
|
|
145
|
-
});
|
|
150
|
+
_$w(CAREERS_MULTI_BOXES_PAGE_CONSTS.PRIMARY_SEARCH_INPUT).onClick(async () => {
|
|
151
|
+
_$w(CAREERS_MULTI_BOXES_PAGE_CONSTS.RESULTS_CONTAINER).expand();
|
|
146
152
|
|
|
147
|
-
_$w(CAREERS_MULTI_BOXES_PAGE_CONSTS.
|
|
148
|
-
_$w(CAREERS_MULTI_BOXES_PAGE_CONSTS.
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
+
if(_$w(CAREERS_MULTI_BOXES_PAGE_CONSTS.PRIMARY_SEARCH_INPUT).value.trim()!=='') {
|
|
154
|
+
const query = _$w(CAREERS_MULTI_BOXES_PAGE_CONSTS.PRIMARY_SEARCH_INPUT).value?.toLowerCase().trim() || '';
|
|
155
|
+
await primarySearch(_$w, query);
|
|
156
|
+
}
|
|
157
|
+
else {
|
|
158
|
+
await loadCategoriesListPrimarySearch(_$w,allvaluesobjects);
|
|
159
|
+
}
|
|
160
|
+
});
|
|
153
161
|
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
// _$w(CAREERS_MULTI_BOXES_PAGE_CONSTS.RESULTS_CONTAINER).collapse();
|
|
158
|
-
const baseUrl = await location.baseUrl();
|
|
159
|
-
location.to(`${baseUrl}/search`);
|
|
160
|
-
|
|
161
|
-
}
|
|
162
|
-
else {
|
|
163
|
-
let encodedKeyWord=encodeURIComponent(_$w(CAREERS_MULTI_BOXES_PAGE_CONSTS.PRIMARY_SEARCH_INPUT).value);
|
|
164
|
-
const baseUrl = await location.baseUrl();
|
|
165
|
-
location.to(`${baseUrl}/search?keyword=${encodedKeyWord}`);
|
|
166
|
-
}
|
|
167
|
-
}
|
|
168
|
-
});
|
|
162
|
+
_$w(CAREERS_MULTI_BOXES_PAGE_CONSTS.RESULTS_CONTAINER).onMouseOut(async () => {
|
|
163
|
+
_$w(CAREERS_MULTI_BOXES_PAGE_CONSTS.RESULTS_CONTAINER).collapse();
|
|
164
|
+
});
|
|
169
165
|
|
|
170
|
-
|
|
166
|
+
_$w(CAREERS_MULTI_BOXES_PAGE_CONSTS.PRIMARY_SEARCH_INPUT).onKeyPress(async (event) => {
|
|
167
|
+
if( event.key === 'Enter') {
|
|
171
168
|
if(_$w(CAREERS_MULTI_BOXES_PAGE_CONSTS.PRIMARY_SEARCH_INPUT).value.trim()==='') {
|
|
169
|
+
// _$w(CAREERS_MULTI_BOXES_PAGE_CONSTS.RESULTS_CONTAINER).collapse();
|
|
172
170
|
const baseUrl = await location.baseUrl();
|
|
173
171
|
location.to(`${baseUrl}/search`);
|
|
174
|
-
|
|
172
|
+
|
|
173
|
+
}
|
|
175
174
|
else {
|
|
176
175
|
let encodedKeyWord=encodeURIComponent(_$w(CAREERS_MULTI_BOXES_PAGE_CONSTS.PRIMARY_SEARCH_INPUT).value);
|
|
177
176
|
const baseUrl = await location.baseUrl();
|
|
178
177
|
location.to(`${baseUrl}/search?keyword=${encodedKeyWord}`);
|
|
179
178
|
}
|
|
180
|
-
}
|
|
179
|
+
}
|
|
180
|
+
});
|
|
181
|
+
|
|
182
|
+
_$w(CAREERS_MULTI_BOXES_PAGE_CONSTS.PRIMARY_SEARCH_BUTTON).onClick(async () => {
|
|
183
|
+
if(_$w(CAREERS_MULTI_BOXES_PAGE_CONSTS.PRIMARY_SEARCH_INPUT).value.trim()==='') {
|
|
184
|
+
const baseUrl = await location.baseUrl();
|
|
185
|
+
location.to(`${baseUrl}/search`);
|
|
186
|
+
}
|
|
187
|
+
else {
|
|
188
|
+
let encodedKeyWord=encodeURIComponent(_$w(CAREERS_MULTI_BOXES_PAGE_CONSTS.PRIMARY_SEARCH_INPUT).value);
|
|
189
|
+
const baseUrl = await location.baseUrl();
|
|
190
|
+
location.to(`${baseUrl}/search?keyword=${encodedKeyWord}`);
|
|
191
|
+
}
|
|
192
|
+
});
|
|
181
193
|
}
|
|
182
194
|
|
|
183
195
|
async function loadCategoriesListPrimarySearch(_$w, allvaluesobjects) {
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
}
|
|
196
|
+
_$w(CAREERS_MULTI_BOXES_PAGE_CONSTS.PRIMARY_SEARCH_MULTI_BOX).changeState("categoryResults");
|
|
197
|
+
|
|
198
|
+
let categoryValues=[]
|
|
199
|
+
for(const value of allvaluesobjects) {
|
|
200
|
+
if(value.customField === CATEGORY_CUSTOM_FIELD_ID_IN_CMS) {
|
|
201
|
+
categoryValues.push({title: value.title+` (${value.count})` , _id: value.valueId});
|
|
191
202
|
}
|
|
192
|
-
|
|
203
|
+
}
|
|
204
|
+
_$w(CAREERS_MULTI_BOXES_PAGE_CONSTS.CATEGORY_RESULTS_REPEATER).data = categoryValues;
|
|
193
205
|
}
|
|
194
206
|
|
|
195
207
|
async function primarySearch(_$w, query) {
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
208
|
+
if(query === undefined || query === '') {
|
|
209
|
+
_$w(CAREERS_MULTI_BOXES_PAGE_CONSTS.PRIMARY_SEARCH_MULTI_BOX).changeState("categoryResults");
|
|
210
|
+
return false;
|
|
211
|
+
}
|
|
200
212
|
|
|
201
|
-
|
|
202
|
-
|
|
213
|
+
const searchByTitle = [{field: 'title', searchTerm: query}];
|
|
214
|
+
const searchByCity = [{field: 'location.fullLocation', searchTerm: query}];
|
|
203
215
|
|
|
204
|
-
|
|
216
|
+
let filter = await getFilter(searchByTitle);
|
|
205
217
|
|
|
218
|
+
await _$w('#jobsDataset').setFilter(filter);
|
|
219
|
+
await _$w('#jobsDataset').refresh();
|
|
220
|
+
|
|
221
|
+
let count = _$w('#jobsDataset').getTotalCount();
|
|
222
|
+
|
|
223
|
+
if( count > 0 ) {
|
|
224
|
+
_$w(CAREERS_MULTI_BOXES_PAGE_CONSTS.RESULTS_CONTAINER).expand();
|
|
225
|
+
_$w(CAREERS_MULTI_BOXES_PAGE_CONSTS.PRIMARY_SEARCH_MULTI_BOX).changeState("jobResults");
|
|
226
|
+
}
|
|
227
|
+
else {
|
|
228
|
+
filter = await getFilter(searchByCity);
|
|
206
229
|
await _$w('#jobsDataset').setFilter(filter);
|
|
207
230
|
await _$w('#jobsDataset').refresh();
|
|
208
231
|
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
if( count > 0 ) {
|
|
232
|
+
count = _$w('#jobsDataset').getTotalCount();
|
|
233
|
+
if (count > 0) {
|
|
212
234
|
_$w(CAREERS_MULTI_BOXES_PAGE_CONSTS.RESULTS_CONTAINER).expand();
|
|
213
235
|
_$w(CAREERS_MULTI_BOXES_PAGE_CONSTS.PRIMARY_SEARCH_MULTI_BOX).changeState("jobResults");
|
|
214
236
|
}
|
|
215
|
-
else
|
|
216
|
-
|
|
217
|
-
await _$w('#jobsDataset').setFilter(filter);
|
|
218
|
-
await _$w('#jobsDataset').refresh();
|
|
219
|
-
|
|
220
|
-
count = _$w('#jobsDataset').getTotalCount();
|
|
221
|
-
if (count > 0) {
|
|
222
|
-
_$w(CAREERS_MULTI_BOXES_PAGE_CONSTS.RESULTS_CONTAINER).expand();
|
|
223
|
-
_$w(CAREERS_MULTI_BOXES_PAGE_CONSTS.PRIMARY_SEARCH_MULTI_BOX).changeState("jobResults");
|
|
224
|
-
}
|
|
225
|
-
else{
|
|
226
|
-
_$w(CAREERS_MULTI_BOXES_PAGE_CONSTS.PRIMARY_SEARCH_MULTI_BOX).changeState("noResults");
|
|
227
|
-
}
|
|
237
|
+
else{
|
|
238
|
+
_$w(CAREERS_MULTI_BOXES_PAGE_CONSTS.PRIMARY_SEARCH_MULTI_BOX).changeState("noResults");
|
|
228
239
|
}
|
|
240
|
+
}
|
|
229
241
|
|
|
230
|
-
|
|
242
|
+
return count > 0;
|
|
231
243
|
}
|
|
232
244
|
|
|
233
245
|
async function getValueFromValueId(valueId) {
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
246
|
+
const result = await getAllRecords(COLLECTIONS.CUSTOM_VALUES);
|
|
247
|
+
console.log("result: ",result);
|
|
248
|
+
console.log("valueId: ",valueId);
|
|
237
249
|
|
|
238
|
-
|
|
250
|
+
return result.find(value => value.valueId === valueId);
|
|
239
251
|
}
|
|
240
252
|
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
253
|
+
async function getLatestJobsByValue(Value) {
|
|
254
|
+
const jobs=Value.multiRefJobsCustomValues;
|
|
255
|
+
const latestJobs = jobs
|
|
256
|
+
.sort((a, b) => new Date(b.releasedDate) - new Date(a.releasedDate))
|
|
257
|
+
.slice(0, 5);
|
|
258
|
+
return latestJobs;
|
|
259
|
+
}
|
|
248
260
|
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
261
|
+
module.exports = {
|
|
262
|
+
groupValuesByField,
|
|
263
|
+
debounce,
|
|
264
|
+
getAllRecords,
|
|
265
|
+
getFieldById,
|
|
266
|
+
getFieldByTitle,
|
|
267
|
+
getCorrectOption,
|
|
268
|
+
getOptionIndexFromCheckBox,
|
|
269
|
+
loadPrimarySearchRepeater,
|
|
270
|
+
bindPrimarySearch,
|
|
271
|
+
primarySearch,
|
|
272
|
+
getLatestJobsByValue,
|
|
273
|
+
getValueFromValueId,
|
|
274
|
+
getAllRecordsWithoutMultiRef,
|
|
275
|
+
getAllDatasetItems
|
|
263
276
|
}
|
package/pages/positionPage.js
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
const { query } = require("wix-location-frontend");
|
|
2
2
|
const { getPositionWithMultiRefField } = require('../backend/queries');
|
|
3
3
|
const { COLLECTIONS,JOBS_COLLECTION_FIELDS,CUSTOM_FIELDS_COLLECTION_FIELDS } = require('../backend/collectionConsts');
|
|
4
|
+
const { JOBS_COLLECTION_FIELDS: TWG_JOBS_COLLECTION_FIELDS } = require('../backend/careersMultiBoxesPageIds');
|
|
4
5
|
const { items: wixData } = require('@wix/data');
|
|
5
6
|
const { location } = require("@wix/site-location");
|
|
6
7
|
const{isElementExistOnPage} = require('psdev-utils');
|
|
@@ -73,7 +74,7 @@ async function getCategoryValue(customValues) {
|
|
|
73
74
|
const clickedItemData = data.find(
|
|
74
75
|
(item) => item._id === event.context.itemId,
|
|
75
76
|
);
|
|
76
|
-
location.to(clickedItemData[
|
|
77
|
+
location.to(clickedItemData[TWG_JOBS_COLLECTION_FIELDS.LINK_JOBS_TITLE] || clickedItemData[TWG_JOBS_COLLECTION_FIELDS.LINK_JOBS_REF_ID_SLUG]);
|
|
77
78
|
});
|
|
78
79
|
}
|
|
79
80
|
if(isElementExistOnPage(_$w('#relatedJobsDataset')))
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
const { getLatestJobsByValue, getValueFromValueId } = require('./pagesUtils');
|
|
2
2
|
const { location } = require("@wix/site-location");
|
|
3
3
|
const { supportTeamsPageIds,supportTeamsPageSections } = require('../backend/consts');
|
|
4
|
+
const { JOBS_COLLECTION_FIELDS } = require('../backend/careersMultiBoxesPageIds');
|
|
4
5
|
const { getAllRecordsWithoutMultiRef } = require('./pagesUtils');
|
|
5
6
|
|
|
6
7
|
let currentItem;
|
|
@@ -60,7 +61,7 @@ async function handleRecentJobsSection(_$w) {
|
|
|
60
61
|
const clickedItemData = data.find(
|
|
61
62
|
(item) => item._id === event.context.itemId,
|
|
62
63
|
);
|
|
63
|
-
location.to(clickedItemData[
|
|
64
|
+
location.to(clickedItemData[JOBS_COLLECTION_FIELDS.LINK_JOBS_TITLE] || clickedItemData[JOBS_COLLECTION_FIELDS.LINK_JOBS_REF_ID_SLUG]);
|
|
64
65
|
});
|
|
65
66
|
|
|
66
67
|
_$w(supportTeamsPageIds.RECENT_JOBS_BUTTON).onClick( () => {
|