sr-npm 1.2.52 → 1.2.54

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.
@@ -35,7 +35,7 @@ const TWG_JOBS_COLLECTION_FIELDS={
35
35
  LINK_JOBS_REF_ID_SLUG: 'link-jobs-refId-slug',
36
36
  }
37
37
 
38
- const CATEGORY_CUSTOM_FIELD_ID_IN_CMS='5cd8c873c9e77c0008aa7d23';
38
+ const CATEGORY_CUSTOM_FIELD_ID_IN_CMS = '5cd8c873c9e77c0008aa7d23';
39
39
 
40
40
  // used for filters - don't add anything else here
41
41
  const fieldTitlesInCMS={
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "sr-npm",
3
- "version": "1.2.52",
3
+ "version": "1.2.54",
4
4
  "description": "",
5
5
  "main": "index.js",
6
6
  "scripts": {
@@ -32,7 +32,7 @@
32
32
  "@eslint/js": "^9.39.0",
33
33
  "eslint": "^9.38.0",
34
34
  "globals": "^16.4.0",
35
- "prettier": "^3.6.2",
35
+ "prettier": "^3.7.3",
36
36
  "rewire": "^9.0.1"
37
37
  }
38
38
  }
@@ -18,11 +18,9 @@ const { groupValuesByField,
18
18
  getFieldByTitle,
19
19
  getCorrectOption,
20
20
  getOptionIndexFromCheckBox,
21
- loadPrimarySearchRepeater,
22
- bindPrimarySearch,
23
- primarySearch,
24
21
  getAllDatasetItems
25
22
  } = require('./pagesUtils');
23
+ const { loadPrimarySearchRepeater, bindPrimarySearch, filterPrimarySearchResults } = require('../public/primarySearchUtil');
26
24
 
27
25
 
28
26
  let dontUpdateThisCheckBox;
@@ -149,7 +147,7 @@ async function handleUrlParams(_$w,urlParams,handleBackAndForth=false) {
149
147
  let currentApplyFilterFlag=false;
150
148
  //apply this first to determine all jobs
151
149
  if(urlParams.keyword) {
152
- applyFiltering = await primarySearch(_$w, decodeURIComponent(urlParams.keyword));
150
+ applyFiltering = await filterPrimarySearchResults(_$w, decodeURIComponent(urlParams.keyword));
153
151
  _$w(CAREERS_MULTI_BOXES_PAGE_CONSTS.PRIMARY_SEARCH_INPUT).value = decodeURIComponent(urlParams.keyword);
154
152
 
155
153
  const items = await getAllDatasetItems(_$w, GLOBAL_SECTIONS_SELECTORS.JOBS_DATASET);
@@ -642,7 +640,8 @@ async function secondarySearch(_$w,query) {
642
640
  await refreshFacetCounts(_$w);
643
641
  return allsecondarySearchJobs;
644
642
  }
645
- function bindSearchInput(_$w) {
643
+
644
+ function bindSearchInput(_$w) {
646
645
  try {
647
646
  bindPrimarySearch(_$w, allvaluesobjects);
648
647
 
package/pages/homePage.js CHANGED
@@ -5,7 +5,8 @@ const { location } = require('@wix/site-location');
5
5
  const {wixData} = require('wix-data');
6
6
  const { COLLECTIONS } = require('../backend/collectionConsts');
7
7
  const { GLOBAL_SECTIONS_SELECTORS } = require('../public/selectors');
8
- const { bindPrimarySearch, getAllRecords, loadPrimarySearchRepeater } = require('./pagesUtils');
8
+ const { getAllRecords } = require('./pagesUtils');
9
+ const { bindPrimarySearch, loadPrimarySearchRepeater } = require('../public/primarySearchUtil');
9
10
 
10
11
  let thisObjectVar;
11
12
  let searchByCityFlag=false;
@@ -1,10 +1,8 @@
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');
3
+ const { CAREERS_MULTI_BOXES_PAGE_CONSTS, CATEGORY_CUSTOM_FIELD_ID_IN_CMS } = require('../backend/careersMultiBoxesPageIds');
4
4
  const { GLOBAL_SECTIONS_SELECTORS} = require('../public/selectors');
5
- const { location } = require("@wix/site-location");
6
5
  const { normalizeString } = require('../backend/utils');
7
- const { getFilter } = require('../public/filterUtils');
8
6
 
9
7
  function groupValuesByField(values, refKey) {
10
8
  const map = new Map();
@@ -98,153 +96,6 @@ function getOptionIndexFromCheckBox(options,value) {
98
96
  }
99
97
  }
100
98
 
101
- function loadPrimarySearchRepeater(_$w) {
102
-
103
- _$w(CAREERS_MULTI_BOXES_PAGE_CONSTS.JOB_RESULTS_REPEATER).onItemReady(async ($item, itemData) => {
104
- $item(CAREERS_MULTI_BOXES_PAGE_CONSTS.PRIMARY_SEARCH_POSITION_BUTTON).label = itemData.title || '';
105
- });
106
-
107
- _$w(CAREERS_MULTI_BOXES_PAGE_CONSTS.JOB_RESULTS_REPEATER_ITEM).onClick((event) => {
108
- const data = _$w(CAREERS_MULTI_BOXES_PAGE_CONSTS.JOB_RESULTS_REPEATER).data;
109
- const clickedItemData = data.find(
110
- (item) => item._id === event.context.itemId,
111
-
112
- );
113
- if(!clickedItemData[TWG_JOBS_COLLECTION_FIELDS.LINK_JOBS_TITLE] && !clickedItemData[TWG_JOBS_COLLECTION_FIELDS.LINK_JOBS_REF_ID_SLUG]) {
114
- console.error("clickedItemData does not have link-jobs-title or link-jobs-refId-slug");
115
- return;
116
- }
117
-
118
- location.to( clickedItemData[TWG_JOBS_COLLECTION_FIELDS.LINK_JOBS_TITLE]|| clickedItemData[TWG_JOBS_COLLECTION_FIELDS.LINK_JOBS_REF_ID_SLUG]);
119
-
120
-
121
- });
122
- _$w(CAREERS_MULTI_BOXES_PAGE_CONSTS.CATEGORY_RESULTS_REPEATER).onItemReady(async ($item, itemData) => {
123
- $item(CAREERS_MULTI_BOXES_PAGE_CONSTS.PRIMARY_SEARCH_CATEGORY_BUTTON).label = itemData.title || '';
124
- });
125
-
126
- _$w(CAREERS_MULTI_BOXES_PAGE_CONSTS.CATEGORY_RESULTS_REPEATER_ITEM).onClick(async (event) => {
127
- const data = _$w(CAREERS_MULTI_BOXES_PAGE_CONSTS.CATEGORY_RESULTS_REPEATER).data;
128
- const clickedItemData = data.find(
129
- (item) => item._id === event.context.itemId,
130
- );
131
- const baseUrl = await location.baseUrl();
132
- const encodedCategory=encodeURIComponent(clickedItemData._id);
133
- location.to(`${baseUrl}/search?category=${encodedCategory}`);
134
- });
135
-
136
- }
137
-
138
- async function bindPrimarySearch(_$w, allvaluesobjects) {
139
- // wait for the jobs dataset to be ready
140
- await _$w(GLOBAL_SECTIONS_SELECTORS.JOBS_DATASET).onReadyAsync();
141
-
142
- const handleSearchInput = async () => {
143
- const query = _$w(CAREERS_MULTI_BOXES_PAGE_CONSTS.PRIMARY_SEARCH_INPUT).value?.toLowerCase().trim() || '';
144
- await primarySearch(_$w, query);
145
- }
146
-
147
- const primarySearchDebounced = debounce(() => handleSearchInput(), 400);
148
-
149
- _$w(CAREERS_MULTI_BOXES_PAGE_CONSTS.PRIMARY_SEARCH_INPUT).onInput(async () => {
150
- await primarySearchDebounced();
151
- });
152
-
153
- _$w(CAREERS_MULTI_BOXES_PAGE_CONSTS.PRIMARY_SEARCH_INPUT).onClick(async () => {
154
- _$w(GLOBAL_SECTIONS_SELECTORS.RESULTS_CONTAINER).expand();
155
-
156
- if(_$w(CAREERS_MULTI_BOXES_PAGE_CONSTS.PRIMARY_SEARCH_INPUT).value.trim()!=='') {
157
- const query = _$w(CAREERS_MULTI_BOXES_PAGE_CONSTS.PRIMARY_SEARCH_INPUT).value?.toLowerCase().trim() || '';
158
- await primarySearch(_$w, query);
159
- }
160
- else {
161
- await loadCategoriesListPrimarySearch(_$w,allvaluesobjects);
162
- }
163
- });
164
-
165
- _$w(GLOBAL_SECTIONS_SELECTORS.RESULTS_CONTAINER).onMouseOut(async () => {
166
- _$w(GLOBAL_SECTIONS_SELECTORS.RESULTS_CONTAINER).collapse();
167
- });
168
-
169
- _$w(CAREERS_MULTI_BOXES_PAGE_CONSTS.PRIMARY_SEARCH_INPUT).onKeyPress(async (event) => {
170
- if( event.key === 'Enter') {
171
- if(_$w(CAREERS_MULTI_BOXES_PAGE_CONSTS.PRIMARY_SEARCH_INPUT).value.trim()==='') {
172
- // _$w(GLOBAL_SECTIONS_SELECTORS.RESULTS_CONTAINER).collapse();
173
- const baseUrl = await location.baseUrl();
174
- location.to(`${baseUrl}/search`);
175
-
176
- }
177
- else {
178
- let encodedKeyWord=encodeURIComponent(_$w(CAREERS_MULTI_BOXES_PAGE_CONSTS.PRIMARY_SEARCH_INPUT).value);
179
- const baseUrl = await location.baseUrl();
180
- location.to(`${baseUrl}/search?keyword=${encodedKeyWord}`);
181
- }
182
- }
183
- });
184
-
185
- _$w(GLOBAL_SECTIONS_SELECTORS.PRIMARY_SEARCH_BUTTON).onClick(async () => {
186
- if(_$w(CAREERS_MULTI_BOXES_PAGE_CONSTS.PRIMARY_SEARCH_INPUT).value.trim()==='') {
187
- const baseUrl = await location.baseUrl();
188
- location.to(`${baseUrl}/search`);
189
- }
190
- else {
191
- let encodedKeyWord=encodeURIComponent(_$w(CAREERS_MULTI_BOXES_PAGE_CONSTS.PRIMARY_SEARCH_INPUT).value);
192
- const baseUrl = await location.baseUrl();
193
- location.to(`${baseUrl}/search?keyword=${encodedKeyWord}`);
194
- }
195
- });
196
- }
197
-
198
- async function loadCategoriesListPrimarySearch(_$w, allvaluesobjects) {
199
- _$w(CAREERS_MULTI_BOXES_PAGE_CONSTS.PRIMARY_SEARCH_MULTI_BOX).changeState(GLOBAL_SECTIONS_SELECTORS.CATEGORY_RESULTS);
200
-
201
- let categoryValues=[]
202
- for(const value of allvaluesobjects) {
203
- if(value.customField === CATEGORY_CUSTOM_FIELD_ID_IN_CMS) {
204
- categoryValues.push({title: value.title+` (${value.count})` , _id: value.valueId});
205
- }
206
- }
207
- _$w(CAREERS_MULTI_BOXES_PAGE_CONSTS.CATEGORY_RESULTS_REPEATER).data = categoryValues;
208
- }
209
-
210
- async function primarySearch(_$w, query) {
211
- if(query === undefined || query === '') {
212
- _$w(CAREERS_MULTI_BOXES_PAGE_CONSTS.PRIMARY_SEARCH_MULTI_BOX).changeState(GLOBAL_SECTIONS_SELECTORS.CATEGORY_RESULTS);
213
- return false;
214
- }
215
-
216
- const searchByTitle = [{field: 'title', searchTerm: query}];
217
- const searchByCity = [{field: 'location.fullLocation', searchTerm: query}];
218
-
219
- let filter = await getFilter(searchByTitle);
220
-
221
- await _$w(GLOBAL_SECTIONS_SELECTORS.JOBS_DATASET).setFilter(filter);
222
- await _$w(GLOBAL_SECTIONS_SELECTORS.JOBS_DATASET).refresh();
223
-
224
- let count = _$w(GLOBAL_SECTIONS_SELECTORS.JOBS_DATASET).getTotalCount();
225
-
226
- if( count > 0 ) {
227
- _$w(GLOBAL_SECTIONS_SELECTORS.RESULTS_CONTAINER).expand();
228
- _$w(CAREERS_MULTI_BOXES_PAGE_CONSTS.PRIMARY_SEARCH_MULTI_BOX).changeState(GLOBAL_SECTIONS_SELECTORS.JOB_RESULTS);
229
- }
230
- else {
231
- filter = await getFilter(searchByCity);
232
- await _$w(GLOBAL_SECTIONS_SELECTORS.JOBS_DATASET).setFilter(filter);
233
- await _$w(GLOBAL_SECTIONS_SELECTORS.JOBS_DATASET).refresh();
234
-
235
- count = _$w(GLOBAL_SECTIONS_SELECTORS.JOBS_DATASET).getTotalCount();
236
- if (count > 0) {
237
- _$w(GLOBAL_SECTIONS_SELECTORS.RESULTS_CONTAINER).expand();
238
- _$w(CAREERS_MULTI_BOXES_PAGE_CONSTS.PRIMARY_SEARCH_MULTI_BOX).changeState(GLOBAL_SECTIONS_SELECTORS.JOB_RESULTS);
239
- }
240
- else{
241
- _$w(CAREERS_MULTI_BOXES_PAGE_CONSTS.PRIMARY_SEARCH_MULTI_BOX).changeState(GLOBAL_SECTIONS_SELECTORS.NO_RESULTS);
242
- }
243
- }
244
-
245
- return count > 0;
246
- }
247
-
248
99
  async function getValueFromValueId(valueId) {
249
100
  const result = await getAllRecords(COLLECTIONS.CUSTOM_VALUES);
250
101
  console.log("result: ",result);
@@ -269,9 +120,6 @@ module.exports = {
269
120
  getFieldByTitle,
270
121
  getCorrectOption,
271
122
  getOptionIndexFromCheckBox,
272
- loadPrimarySearchRepeater,
273
- bindPrimarySearch,
274
- primarySearch,
275
123
  getLatestJobsByValue,
276
124
  getValueFromValueId,
277
125
  getAllRecordsWithoutMultiRef,
@@ -0,0 +1,153 @@
1
+ const { location } = require("@wix/site-location");
2
+ const { CAREERS_MULTI_BOXES_PAGE_CONSTS, TWG_JOBS_COLLECTION_FIELDS, CATEGORY_CUSTOM_FIELD_ID_IN_CMS } = require('../backend/careersMultiBoxesPageIds');
3
+ const { GLOBAL_SECTIONS_SELECTORS} = require('../public/selectors');
4
+ const { getFilter } = require('../public/filterUtils');
5
+ const { debounce } = require('../public/filterUtils');
6
+
7
+ function loadPrimarySearchRepeater(_$w) {
8
+
9
+ _$w(CAREERS_MULTI_BOXES_PAGE_CONSTS.JOB_RESULTS_REPEATER_ITEM).onClick((event) => {
10
+ const $item = _$w.at(event.context);
11
+ const clickedItemData = $item(GLOBAL_SECTIONS_SELECTORS.JOBS_DATASET).getCurrentItem();
12
+
13
+ if(!clickedItemData[TWG_JOBS_COLLECTION_FIELDS.LINK_JOBS_TITLE] && !clickedItemData[TWG_JOBS_COLLECTION_FIELDS.LINK_JOBS_REF_ID_SLUG]) {
14
+ console.error("clickedItemData does not have link-jobs-title or link-jobs-refId-slug");
15
+ return;
16
+ }
17
+
18
+ location.to(clickedItemData[TWG_JOBS_COLLECTION_FIELDS.LINK_JOBS_TITLE] || clickedItemData[TWG_JOBS_COLLECTION_FIELDS.LINK_JOBS_REF_ID_SLUG]);
19
+ });
20
+
21
+ _$w(CAREERS_MULTI_BOXES_PAGE_CONSTS.CATEGORY_RESULTS_REPEATER).onItemReady(async ($item, itemData) => {
22
+ $item(CAREERS_MULTI_BOXES_PAGE_CONSTS.PRIMARY_SEARCH_CATEGORY_BUTTON).label = itemData.title || '';
23
+ });
24
+
25
+ _$w(CAREERS_MULTI_BOXES_PAGE_CONSTS.CATEGORY_RESULTS_REPEATER_ITEM).onClick(async (event) => {
26
+ const data = _$w(CAREERS_MULTI_BOXES_PAGE_CONSTS.CATEGORY_RESULTS_REPEATER).data;
27
+ const clickedItemData = data.find(
28
+ (item) => item._id === event.context.itemId,
29
+ );
30
+ const baseUrl = await location.baseUrl();
31
+ const encodedCategory=encodeURIComponent(clickedItemData._id);
32
+ location.to(`${baseUrl}/search?category=${encodedCategory}`);
33
+ });
34
+
35
+ }
36
+
37
+ function getPrimarySearchInputValue(_$w) {
38
+ return _$w(CAREERS_MULTI_BOXES_PAGE_CONSTS.PRIMARY_SEARCH_INPUT).value?.toLowerCase().trim() || '';
39
+ }
40
+
41
+ async function bindPrimarySearch(_$w, allvaluesobjects) {
42
+ // wait for the jobs dataset to be ready
43
+ await _$w(GLOBAL_SECTIONS_SELECTORS.JOBS_DATASET).onReadyAsync();
44
+
45
+ const handleSearchInput = async () => {
46
+ const query = getPrimarySearchInputValue(_$w);
47
+ await filterPrimarySearchResults(_$w, query);
48
+ }
49
+
50
+ _$w(CAREERS_MULTI_BOXES_PAGE_CONSTS.PRIMARY_SEARCH_INPUT).onInput(async () => {
51
+ await debounce(() => handleSearchInput(), 300);
52
+ });
53
+
54
+ _$w(CAREERS_MULTI_BOXES_PAGE_CONSTS.PRIMARY_SEARCH_INPUT).onClick(async () => {
55
+ _$w(GLOBAL_SECTIONS_SELECTORS.RESULTS_CONTAINER).expand();
56
+
57
+ const query = getPrimarySearchInputValue(_$w);
58
+ if( query !== '') {
59
+ await filterPrimarySearchResults(_$w, query);
60
+ }
61
+ else {
62
+ await loadCategoriesListPrimarySearch(_$w,allvaluesobjects);
63
+ }
64
+ });
65
+
66
+ _$w(GLOBAL_SECTIONS_SELECTORS.RESULTS_CONTAINER).onMouseOut(async () => {
67
+ _$w(GLOBAL_SECTIONS_SELECTORS.RESULTS_CONTAINER).collapse();
68
+ });
69
+
70
+ _$w(CAREERS_MULTI_BOXES_PAGE_CONSTS.PRIMARY_SEARCH_INPUT).onKeyPress(async (event) => {
71
+ if( event.key === 'Enter') {
72
+ if(_$w(CAREERS_MULTI_BOXES_PAGE_CONSTS.PRIMARY_SEARCH_INPUT).value.trim()==='') {
73
+ // _$w(GLOBAL_SECTIONS_SELECTORS.RESULTS_CONTAINER).collapse();
74
+ const baseUrl = await location.baseUrl();
75
+ location.to(`${baseUrl}/search`);
76
+
77
+ }
78
+ else {
79
+ let encodedKeyWord=encodeURIComponent(_$w(CAREERS_MULTI_BOXES_PAGE_CONSTS.PRIMARY_SEARCH_INPUT).value);
80
+ const baseUrl = await location.baseUrl();
81
+ location.to(`${baseUrl}/search?keyword=${encodedKeyWord}`);
82
+ }
83
+ }
84
+ });
85
+
86
+ _$w(GLOBAL_SECTIONS_SELECTORS.PRIMARY_SEARCH_BUTTON).onClick(async () => {
87
+ if(_$w(CAREERS_MULTI_BOXES_PAGE_CONSTS.PRIMARY_SEARCH_INPUT).value.trim()==='') {
88
+ const baseUrl = await location.baseUrl();
89
+ location.to(`${baseUrl}/search`);
90
+ }
91
+ else {
92
+ let encodedKeyWord=encodeURIComponent(_$w(CAREERS_MULTI_BOXES_PAGE_CONSTS.PRIMARY_SEARCH_INPUT).value);
93
+ const baseUrl = await location.baseUrl();
94
+ location.to(`${baseUrl}/search?keyword=${encodedKeyWord}`);
95
+ }
96
+ });
97
+ }
98
+
99
+ async function filterPrimarySearchResults(_$w, query) {
100
+ if(query === undefined || query === '') {
101
+ _$w(CAREERS_MULTI_BOXES_PAGE_CONSTS.PRIMARY_SEARCH_MULTI_BOX).changeState(GLOBAL_SECTIONS_SELECTORS.CATEGORY_RESULTS);
102
+ return false;
103
+ }
104
+
105
+ const searchByTitle = [{field: 'title', searchTerm: query}];
106
+ const searchByCity = [{field: 'location.fullLocation', searchTerm: query}];
107
+
108
+ let filter = await getFilter(searchByTitle);
109
+
110
+ await _$w(GLOBAL_SECTIONS_SELECTORS.JOBS_DATASET).setFilter(filter);
111
+ await _$w(GLOBAL_SECTIONS_SELECTORS.JOBS_DATASET).refresh();
112
+
113
+ let count = _$w(GLOBAL_SECTIONS_SELECTORS.JOBS_DATASET).getTotalCount();
114
+
115
+ if( count > 0 ) {
116
+ _$w(GLOBAL_SECTIONS_SELECTORS.RESULTS_CONTAINER).expand();
117
+ _$w(CAREERS_MULTI_BOXES_PAGE_CONSTS.PRIMARY_SEARCH_MULTI_BOX).changeState(GLOBAL_SECTIONS_SELECTORS.JOB_RESULTS);
118
+ }
119
+ else {
120
+ filter = await getFilter(searchByCity);
121
+ await _$w(GLOBAL_SECTIONS_SELECTORS.JOBS_DATASET).setFilter(filter);
122
+ await _$w(GLOBAL_SECTIONS_SELECTORS.JOBS_DATASET).refresh();
123
+
124
+ count = _$w(GLOBAL_SECTIONS_SELECTORS.JOBS_DATASET).getTotalCount();
125
+ if (count > 0) {
126
+ _$w(GLOBAL_SECTIONS_SELECTORS.RESULTS_CONTAINER).expand();
127
+ _$w(CAREERS_MULTI_BOXES_PAGE_CONSTS.PRIMARY_SEARCH_MULTI_BOX).changeState(GLOBAL_SECTIONS_SELECTORS.JOB_RESULTS);
128
+ }
129
+ else{
130
+ _$w(CAREERS_MULTI_BOXES_PAGE_CONSTS.PRIMARY_SEARCH_MULTI_BOX).changeState(GLOBAL_SECTIONS_SELECTORS.NO_RESULTS);
131
+ }
132
+ }
133
+
134
+ return count > 0;
135
+ }
136
+
137
+ async function loadCategoriesListPrimarySearch(_$w, allvaluesobjects) {
138
+ _$w(CAREERS_MULTI_BOXES_PAGE_CONSTS.PRIMARY_SEARCH_MULTI_BOX).changeState(GLOBAL_SECTIONS_SELECTORS.CATEGORY_RESULTS);
139
+
140
+ let categoryValues=[]
141
+ for(const value of allvaluesobjects) {
142
+ if(value.customField === CATEGORY_CUSTOM_FIELD_ID_IN_CMS) {
143
+ categoryValues.push({title: value.title+` (${value.count})` , _id: value.valueId});
144
+ }
145
+ }
146
+ _$w(CAREERS_MULTI_BOXES_PAGE_CONSTS.CATEGORY_RESULTS_REPEATER).data = categoryValues;
147
+ }
148
+
149
+ module.exports = {
150
+ loadPrimarySearchRepeater,
151
+ bindPrimarySearch,
152
+ filterPrimarySearchResults,
153
+ }