sr-npm 1.7.689 → 1.7.690

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.
@@ -12,6 +12,8 @@ const CAREERS_MULTI_BOXES_PAGE_CONSTS={
12
12
  SELECTED_VALUES_REPEATER_ITEM_LABEL: '#selectedValueLabel',
13
13
  DESELECT_BUTTON_ID: '#deselectFilterValueButton',
14
14
  CLEAR_ALL_BUTTON_ID: '#clearAllButton',
15
+ PAGE_BUTTON_NEXT: '#nextPageButton',
16
+ PAGE_BUTTON_PREVIOUS: '#previousPageButton',
15
17
  }
16
18
 
17
19
  const FiltersIds={
@@ -23,6 +25,9 @@ const FiltersIds={
23
25
  "Contract Type": 'contractType',
24
26
  Brands: 'Brands',
25
27
  }
28
+ const Pageination={
29
+ page
30
+ }
26
31
 
27
32
  module.exports = {
28
33
  CAREERS_MULTI_BOXES_PAGE_CONSTS,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "sr-npm",
3
- "version": "1.7.689",
3
+ "version": "1.7.690",
4
4
  "description": "",
5
5
  "main": "index.js",
6
6
  "scripts": {
@@ -12,37 +12,37 @@ let alljobs=[] // all jobs in the database
12
12
  let allvaluesobjects=[] // all values in the database
13
13
  let valueToJobs={} // valueId -> array of jobIds
14
14
  let currentJobs=[] // current jobs that are displayed in the jobs repeater
15
+ const pagination = {
16
+ pageSize: 10,
17
+ currentPage: 1,
18
+ };
15
19
  async function careersMultiBoxesPageOnReady(_$w) {
16
- if(alljobs.length===0) {
17
- alljobs=await getAllRecords(COLLECTIONS.JOBS);
18
- currentJobs=alljobs;
19
- }
20
- if(Object.keys(valueToJobs).length === 0){
21
- allvaluesobjects=await getAllRecords(COLLECTIONS.CUSTOM_VALUES);
22
-
23
- for (const value of allvaluesobjects) {
24
- valueToJobs[value._id]= value.jobIds;
25
- }
26
- }
27
- if(allfields.length===0) {
28
- allfields=await getAllRecords(COLLECTIONS.CUSTOM_FIELDS);
29
- allfields.push({_id:"Location",title:"Location"});
30
- }
31
- await loadJobs(_$w);
20
+ await loadData(_$w);
21
+ await loadJobs(_$w);
32
22
  await loadFilters(_$w);
33
- //selected values repeater on item ready
34
23
  await loadSelectedValuesRepeater(_$w);
35
- console.log("CLEAR_ALL_BUTTON_ID button is loaded: ",CAREERS_MULTI_BOXES_PAGE_CONSTS.CLEAR_ALL_BUTTON_ID)
36
24
  _$w(CAREERS_MULTI_BOXES_PAGE_CONSTS.CLEAR_ALL_BUTTON_ID).onClick(async () => {
37
- console.log("selectedByField before clear: ",selectedByField)
38
-
39
25
  selectedByField.clear();
40
- console.log("selectedByField after clear : ",selectedByField)
41
26
  await applyJobFilters(_$w);
42
27
  await refreshFacetCounts(_$w,true);
43
28
  await updateSelectedValuesRepeater(_$w);
44
29
  updateTotalJobsCountText(_$w);
45
30
  });
31
+ await loadPaginationButtons(_$w);
32
+ }
33
+
34
+ async function loadPaginationButtons(_$w) {
35
+ _$w(CAREERS_MULTI_BOXES_PAGE_CONSTS.PAGE_BUTTON_NEXT).onClick(async () => {
36
+ let nextPageJobs=currentJobs.slice(pagination.pageSize*pagination.currentPage,pagination.pageSize*(pagination.currentPage+1));
37
+ pagination.currentPage++;
38
+ _$w(CAREERS_MULTI_BOXES_PAGE_CONSTS.JOBS_REPEATER).data = nextPageJobs;
39
+ });
40
+
41
+ _$w(CAREERS_MULTI_BOXES_PAGE_CONSTS.PAGE_BUTTON_PREVIOUS).onClick(async () => {
42
+ let previousPageJobs=currentJobs.slice(pagination.pageSize*(pagination.currentPage-1),pagination.pageSize*pagination.currentPage);
43
+ pagination.currentPage--;
44
+ _$w(CAREERS_MULTI_BOXES_PAGE_CONSTS.JOBS_REPEATER).data = previousPageJobs;
45
+ });
46
46
  }
47
47
 
48
48
  async function loadSelectedValuesRepeater(_$w) {
@@ -64,29 +64,14 @@ async function loadSelectedValuesRepeater(_$w) {
64
64
  } else {
65
65
  selectedByField.delete(fieldId);
66
66
  }
67
- console.log("deselecting value for this field: ",fieldId)
68
67
 
69
68
  for(const field of allfields) {
70
69
  if(field._id===fieldId) {
71
- console.log("field: ",field)
72
- console.log("fieldId: ",fieldId)
73
- console.log("valueId: ",valueId)
74
70
  const currentVals = _$w(`#${FiltersIds[field.title]}CheckBox`).value || [];
75
71
  const nextVals = currentVals.filter(v => v !== valueId);
76
72
  _$w(`#${FiltersIds[field.title]}CheckBox`).value = nextVals;
77
73
  }
78
- }
79
-
80
-
81
- // Update the checkbox group UI inside the corresponding filter item
82
- // _$w(CAREERS_MULTI_BOXES_PAGE_CONSTS.FILTER_REPEATER).forEachItem(($filterItem, filterItemData) => {
83
- // if (filterItemData._id === fieldId) {
84
- // const currentVals = $filterItem(CAREERS_MULTI_BOXES_PAGE_CONSTS.FILTER_REPEATER_ITEM_CHECKBOX).value || [];
85
- // const nextVals = currentVals.filter(v => v !== valueId);
86
- // $filterItem(CAREERS_MULTI_BOXES_PAGE_CONSTS.FILTER_REPEATER_ITEM_CHECKBOX).value = nextVals;
87
- // }
88
- // });
89
-
74
+ }
90
75
  await applyJobFilters(_$w);
91
76
  await refreshFacetCounts(_$w);
92
77
  await updateSelectedValuesRepeater(_$w);
@@ -96,13 +81,32 @@ async function loadSelectedValuesRepeater(_$w) {
96
81
  await updateSelectedValuesRepeater(_$w);
97
82
  }
98
83
 
84
+ async function loadData(_$w) {
85
+
86
+ if(alljobs.length===0) {
87
+ alljobs=await getAllRecords(COLLECTIONS.JOBS);
88
+ currentJobs=alljobs;
89
+ }
90
+ if(Object.keys(valueToJobs).length === 0){
91
+ allvaluesobjects=await getAllRecords(COLLECTIONS.CUSTOM_VALUES);
92
+ for (const value of allvaluesobjects) {
93
+ valueToJobs[value._id]= value.jobIds;
94
+ }
95
+ }
96
+ if(allfields.length===0) {
97
+ allfields=await getAllRecords(COLLECTIONS.CUSTOM_FIELDS);
98
+ allfields.push({_id:"Location",title:"Location"});
99
+ }
100
+ }
99
101
  async function loadJobs(_$w) {
100
102
  _$w(CAREERS_MULTI_BOXES_PAGE_CONSTS.JOBS_REPEATER).onItemReady(($item, itemData) => {
101
103
  $item(CAREERS_MULTI_BOXES_PAGE_CONSTS.JOBS_REPEATER_ITEM_TITLE).text = itemData.title || '';
102
104
  $item(CAREERS_MULTI_BOXES_PAGE_CONSTS.JOBS_REPEATER_ITEM_LOCATION).text=itemData.location.fullLocation
103
105
  $item(CAREERS_MULTI_BOXES_PAGE_CONSTS.JOBS_REPEATER_ITEM_EMPLOYMENT_TYPE).text=itemData.employmentType
104
106
  });
105
- _$w(CAREERS_MULTI_BOXES_PAGE_CONSTS.JOBS_REPEATER).data = alljobs;
107
+
108
+ const jobsFirstPage=alljobs.slice(0,pagination.pageSize);
109
+ _$w(CAREERS_MULTI_BOXES_PAGE_CONSTS.JOBS_REPEATER).data = jobsFirstPage;
106
110
  updateTotalJobsCountText(_$w);
107
111
  }
108
112
 
@@ -154,7 +158,6 @@ async function loadJobs(_$w) {
154
158
  countsByFieldId.set(key, new Map(originalOptions.map(o => [o.value, counter[o.label]])));
155
159
  updateOptionsUI(_$w,field.title, field._id, ''); // no search query
156
160
  _$w(`#${FiltersIds[field.title]}CheckBox`).selectedIndices = []; // start empty
157
- //_$w("#CategoryCheckBox").options = valuesByFieldId.get(elemenet);
158
161
  _$w(`#${FiltersIds[field.title]}CheckBox`).onChange(async (ev) => {
159
162
  dontUpdateThisCheckBox=field._id;
160
163
  const selected = ev.target.value; // array of selected value IDs
@@ -173,96 +176,11 @@ async function loadJobs(_$w) {
173
176
  const query = (_$w(`#${FiltersIds[field.title]}input`).value || '').toLowerCase().trim();
174
177
  updateOptionsUI(_$w, field.title, field._id, query);
175
178
  }, 150);
176
- _$w(`#${FiltersIds[field.title]}input`).onInput(runFilter);
177
-
178
-
179
+ _$w(`#${FiltersIds[field.title]}input`).onInput(runFilter);
179
180
  }
180
181
  }
181
182
  }
182
-
183
183
  await refreshFacetCounts(_$w);
184
- // _$w(CAREERS_MULTI_BOXES_PAGE_CONSTS.FILTER_REPEATER).forEachItem(($item, itemData) => {
185
- // const query = ($item(CAREERS_MULTI_BOXES_PAGE_CONSTS.FILTER_LABEL).value || '').toLowerCase().trim();
186
- // updateOptionsUI($item, itemData._id, query);
187
-
188
-
189
-
190
-
191
-
192
- //
193
-
194
-
195
-
196
-
197
- // 3) Bind each filter repeater item
198
- // _$w(CAREERS_MULTI_BOXES_PAGE_CONSTS.FILTER_REPEATER).onItemReady(async ($item, itemData) => {
199
- // // $item(CAREERS_MULTI_BOXES_PAGE_CONSTS.FILTER_LABEL).onClick(()=>{
200
- // // $item(CAREERS_MULTI_BOXES_PAGE_CONSTS.FILTER_CHECKBOX_CONTAINER).collapsed ? $item(CAREERS_MULTI_BOXES_PAGE_CONSTS.FILTER_CHECKBOX_CONTAINER).expand() : $item(CAREERS_MULTI_BOXES_PAGE_CONSTS.FILTER_CHECKBOX_CONTAINER).collapse()
201
- // // })
202
- // const fieldId = itemData._id;
203
-
204
- // // Set the filter label (category name)
205
- // $item(CAREERS_MULTI_BOXES_PAGE_CONSTS.FILTER_LABEL).placeholder = itemData.title
206
-
207
- // // Build CheckboxGroup options for this field
208
- // const fieldValues = valuesByFieldId.get(fieldId) || [];
209
- // let originalOptions=[];
210
- // if(fieldId==="Location") {
211
- // originalOptions=fieldValues.map(city=>({
212
- // label: city.city,
213
- // value: city._id
214
- // }));
215
- // }
216
- // else{
217
- // originalOptions=fieldValues
218
- // }
219
-
220
- // optionsByFieldId.set(fieldId, originalOptions);
221
- // const counter={}
222
-
223
- // for (const val of allvaluesobjects) {
224
- // counter[val.title]=val.totalJobs
225
- // }
226
- // for(const city of cities) {
227
- // counter[city.city]=city.count
228
- // }
229
-
230
- // countsByFieldId.set(fieldId, new Map(originalOptions.map(o => [o.value, counter[o.label]])));
231
-
232
- // // Initialize UI
233
- // updateOptionsUI($item, fieldId, ''); // no search query
234
-
235
- // $item(CAREERS_MULTI_BOXES_PAGE_CONSTS.FILTER_REPEATER_ITEM_CHECKBOX).selectedIndices = []; // start empty
236
- // $item(CAREERS_MULTI_BOXES_PAGE_CONSTS.FILTER_REPEATER_ITEM_CHECKBOX).onChange(async (ev) => {
237
- // dontUpdateThisCheckBox=fieldId;
238
- // const selected = ev.target.value; // array of selected value IDs
239
- // if (selected && selected.length) {
240
- // selectedByField.set(fieldId, selected);
241
- // } else {
242
- // selectedByField.delete(fieldId);
243
- // }
244
- // await applyJobFilters(_$w,fieldId); // re-query jobs
245
- // await refreshFacetCounts(_$w); // recompute and update counts in all lists
246
- // await updateSelectedValuesRepeater(_$w);
247
- // updateTotalJobsCountText(_$w);
248
- // });
249
-
250
- // // Input typing -> only filter this list’s visible options (no Jobs query)
251
- // const runFilter = debounce(() => {
252
- // const query = ($item(CAREERS_MULTI_BOXES_PAGE_CONSTS.FILTER_LABEL).value || '').toLowerCase().trim();
253
- // updateOptionsUI($item, fieldId, query);
254
- // }, 150);
255
- // $item(CAREERS_MULTI_BOXES_PAGE_CONSTS.FILTER_LABEL).onInput(runFilter);
256
- // });
257
-
258
- //await refreshFacetCounts(_$w);
259
- // After counts are ready, re-render all items to show numbers
260
- // _$w(CAREERS_MULTI_BOXES_PAGE_CONSTS.FILTER_REPEATER).forEachItem(($item, itemData) => {
261
- // const query = ($item(CAREERS_MULTI_BOXES_PAGE_CONSTS.FILTER_LABEL).value || '').toLowerCase().trim();
262
- // updateOptionsUI($item, itemData._id, query);
263
-
264
-
265
- // });
266
184
 
267
185
  } catch (err) {
268
186
  console.error('Failed to load filters:', err);
@@ -365,12 +283,16 @@ async function loadJobs(_$w) {
365
283
  }
366
284
 
367
285
  currentJobs=finalFilteredJobs;
368
- console.log("currentJobs length: ",currentJobs.length)
369
- _$w(CAREERS_MULTI_BOXES_PAGE_CONSTS.JOBS_REPEATER).data = currentJobs;
370
-
286
+ const jobsFirstPage=currentJobs.slice(0,pagination.pageSize);
287
+ _$w(CAREERS_MULTI_BOXES_PAGE_CONSTS.JOBS_REPEATER).data = jobsFirstPage;
288
+ handlePaginationButtons(_$w);
371
289
  }
372
290
 
373
-
291
+ function handlePaginationButtons(_$w)
292
+ {
293
+ pagination.currentPage===1? _$w(CAREERS_MULTI_BOXES_PAGE_CONSTS.PAGE_BUTTON_PREVIOUS).disable():_$w(CAREERS_MULTI_BOXES_PAGE_CONSTS.PAGE_BUTTON_PREVIOUS).enable();
294
+ pagination.currentPage===Math.ceil(currentJobs.length/pagination.pageSize)? _$w(CAREERS_MULTI_BOXES_PAGE_CONSTS.PAGE_BUTTON_NEXT).disable():_$w(CAREERS_MULTI_BOXES_PAGE_CONSTS.PAGE_BUTTON_NEXT).enable();
295
+ }
374
296
  async function refreshFacetCounts(_$w,clearAll=false) {
375
297
  const fieldIds = Array.from(optionsByFieldId.keys());
376
298
  const currentJobsIds=currentJobs.map(job=>job._id);
@@ -386,7 +308,6 @@ async function refreshFacetCounts(_$w,clearAll=false) {
386
308
  }
387
309
  countsByFieldId.set(fieldId, counter);
388
310
  }
389
- console.log("countsByFieldId after refreshFacetCounts: ",countsByFieldId)
390
311
 
391
312
  for(const field of allfields) {
392
313
  const query = (_$w(`#${FiltersIds[field.title]}input`).value || '').toLowerCase().trim();
@@ -418,7 +339,6 @@ async function refreshFacetCounts(_$w,clearAll=false) {
418
339
  selectedItems.push({ _id: `${fieldId}:${id}`, label, fieldId, valueId: id });
419
340
  }
420
341
  }
421
- console.log("selectedItems inside updateSelectedValuesRepeater: ",selectedItems)
422
342
  _$w(CAREERS_MULTI_BOXES_PAGE_CONSTS.SELECTED_VALUES_REPEATER).data = selectedItems;
423
343
  }
424
344