sr-npm 1.7.667 → 1.7.669
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.
|
@@ -3,6 +3,8 @@ const CAREERS_MULTI_BOXES_PAGE_CONSTS={
|
|
|
3
3
|
JOBS_REPEATER: '#jobsReapter',
|
|
4
4
|
JOBS_REPEATER_ITEM_TITLE: '#jobTitle',
|
|
5
5
|
JOBS_REPEATER_ITEM_LOCATION: '#locationLabel',
|
|
6
|
+
JOBS_REPEATER_ITEM_EMPLOYMENT_TYPE: '#employmentTypeLabel',
|
|
7
|
+
TotalJobsCountText: '#totalJobsCountText',
|
|
6
8
|
FILTER_LABEL: '#FilterTextInput',
|
|
7
9
|
FILTER_CHECKBOX_CONTAINER: '#FilterCheckBoxContainer',
|
|
8
10
|
FILTER_REPEATER_ITEM_CHECKBOX: '#filterCheckBox',
|
|
@@ -28,6 +28,7 @@ const JOBS_COLLECTION_FIELDS = {
|
|
|
28
28
|
BRAND: 'brand',
|
|
29
29
|
BRAND_REF: 'brandRef',
|
|
30
30
|
MULTI_REF_JOBS_CUSTOM_VALUES: 'multiRefJobsCustomValues',
|
|
31
|
+
EMPLOYMENT_TYPE: 'employmentType',
|
|
31
32
|
}
|
|
32
33
|
const AMOUNT_OF_JOBS_PER_DEPARTMENT_COLLECTION_FIELDS = {
|
|
33
34
|
TITLE: 'title',
|
|
@@ -87,7 +88,8 @@ const COLLECTIONS_FIELDS = {
|
|
|
87
88
|
{key:'departmentref', type: 'REFERENCE', typeMetadata: { reference: { referencedCollectionId: COLLECTIONS.AMOUNT_OF_JOBS_PER_DEPARTMENT } } },
|
|
88
89
|
{key:'city', type: 'REFERENCE', typeMetadata: { reference: { referencedCollectionId: COLLECTIONS.CITIES } } },
|
|
89
90
|
{key:'brandRef', type: 'REFERENCE', typeMetadata: { reference: { referencedCollectionId: COLLECTIONS.BRANDS } } },
|
|
90
|
-
{
|
|
91
|
+
{key: 'image', type: 'IMAGE' },
|
|
92
|
+
{key:'employmentType', type: 'TEXT'},
|
|
91
93
|
],
|
|
92
94
|
TEMPLATE_TYPE: [
|
|
93
95
|
{key:'templateType', type: 'TEXT'},
|
package/backend/data.js
CHANGED
|
@@ -125,6 +125,7 @@ async function saveJobsDataToCMS() {
|
|
|
125
125
|
language: position.language?.label || '',
|
|
126
126
|
brand: getBrand(position.customField),
|
|
127
127
|
jobDescription: null, // Will be filled later
|
|
128
|
+
employmentType: position.typeOfEmployment.label
|
|
128
129
|
};
|
|
129
130
|
|
|
130
131
|
getCustomFieldsAndValuesFromPosition(position,customFieldsLabels,customFieldsValues);
|
package/package.json
CHANGED
|
@@ -25,7 +25,7 @@ async function careersMultiBoxesPageOnReady(_$w) {
|
|
|
25
25
|
}
|
|
26
26
|
|
|
27
27
|
await loadJobs(_$w);
|
|
28
|
-
|
|
28
|
+
await loadFilters(_$w);
|
|
29
29
|
//selected values repeater on item ready
|
|
30
30
|
//await loadSelectedValuesRepeater(_$w);
|
|
31
31
|
// _$w(CAREERS_MULTI_BOXES_PAGE_CONSTS.SELECTED_VALUES_REPEATER).onItemReady(($item, itemData) => {
|
|
@@ -108,13 +108,15 @@ async function loadJobs(_$w) {
|
|
|
108
108
|
_$w(CAREERS_MULTI_BOXES_PAGE_CONSTS.JOBS_REPEATER).onItemReady(($item, itemData) => {
|
|
109
109
|
$item(CAREERS_MULTI_BOXES_PAGE_CONSTS.JOBS_REPEATER_ITEM_TITLE).text = itemData.title || '';
|
|
110
110
|
$item(CAREERS_MULTI_BOXES_PAGE_CONSTS.JOBS_REPEATER_ITEM_LOCATION).text=itemData.location.fullLocation
|
|
111
|
+
$item(CAREERS_MULTI_BOXES_PAGE_CONSTS.JOBS_REPEATER_ITEM_EMPLOYMENT_TYPE).text=itemData.employmentType
|
|
111
112
|
});
|
|
113
|
+
console.log("alljobs: ",alljobs)
|
|
112
114
|
_$w(CAREERS_MULTI_BOXES_PAGE_CONSTS.JOBS_REPEATER).data = alljobs;
|
|
113
115
|
updateTotalJobsCountText(_$w);
|
|
114
116
|
}
|
|
115
117
|
|
|
116
118
|
function updateTotalJobsCountText(_$w) {
|
|
117
|
-
_$w(
|
|
119
|
+
_$w(CAREERS_MULTI_BOXES_PAGE_CONSTS.TotalJobsCountText).text = `${currentJobs.length} Jobs`;
|
|
118
120
|
|
|
119
121
|
}
|
|
120
122
|
|
|
@@ -122,8 +124,10 @@ async function loadJobs(_$w) {
|
|
|
122
124
|
try {
|
|
123
125
|
// 1) Load all categories (fields)
|
|
124
126
|
let fields = await getAllRecords(COLLECTIONS.CUSTOM_FIELDS);
|
|
127
|
+
|
|
125
128
|
fields.push({_id:"Location",title:"Location"});
|
|
126
|
-
|
|
129
|
+
console.log("fields: ",fields)
|
|
130
|
+
// _$w(CAREERS_MULTI_BOXES_PAGE_CONSTS.FILTER_REPEATER).data = fields;
|
|
127
131
|
const cities=await getAllRecords(COLLECTIONS.CITIES);
|
|
128
132
|
for(const city of cities) {
|
|
129
133
|
valueToJobs[city._id]=city.jobIds;
|
|
@@ -133,77 +137,81 @@ async function loadJobs(_$w) {
|
|
|
133
137
|
let valuesByFieldId = groupValuesByField(allvaluesobjects, CUSTOM_VALUES_COLLECTION_FIELDS.CUSTOM_FIELD);
|
|
134
138
|
valuesByFieldId.set("Location",cities)
|
|
135
139
|
valuesByFieldIdGlobal = valuesByFieldId; // store globally
|
|
140
|
+
console.log("valuesByFieldId: ",valuesByFieldId)
|
|
141
|
+
//_$w("#CategoryCheckBox").options = fields;
|
|
142
|
+
|
|
143
|
+
|
|
136
144
|
|
|
137
145
|
|
|
138
146
|
// 3) Bind each filter repeater item
|
|
139
|
-
_$w(CAREERS_MULTI_BOXES_PAGE_CONSTS.FILTER_REPEATER).onItemReady(async ($item, itemData) => {
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
147
|
+
// _$w(CAREERS_MULTI_BOXES_PAGE_CONSTS.FILTER_REPEATER).onItemReady(async ($item, itemData) => {
|
|
148
|
+
// // $item(CAREERS_MULTI_BOXES_PAGE_CONSTS.FILTER_LABEL).onClick(()=>{
|
|
149
|
+
// // $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()
|
|
150
|
+
// // })
|
|
151
|
+
// const fieldId = itemData._id;
|
|
144
152
|
|
|
145
|
-
|
|
146
|
-
|
|
153
|
+
// // Set the filter label (category name)
|
|
154
|
+
// $item(CAREERS_MULTI_BOXES_PAGE_CONSTS.FILTER_LABEL).placeholder = itemData.title
|
|
147
155
|
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
156
|
+
// // Build CheckboxGroup options for this field
|
|
157
|
+
// const fieldValues = valuesByFieldId.get(fieldId) || [];
|
|
158
|
+
// let originalOptions=[];
|
|
159
|
+
// if(fieldId==="Location") {
|
|
160
|
+
// originalOptions=fieldValues.map(city=>({
|
|
161
|
+
// label: city.city,
|
|
162
|
+
// value: city._id
|
|
163
|
+
// }));
|
|
164
|
+
// }
|
|
165
|
+
// else{
|
|
166
|
+
// originalOptions=fieldValues
|
|
167
|
+
// }
|
|
160
168
|
|
|
161
|
-
|
|
162
|
-
|
|
169
|
+
// optionsByFieldId.set(fieldId, originalOptions);
|
|
170
|
+
// const counter={}
|
|
163
171
|
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
172
|
+
// for (const val of allvaluesobjects) {
|
|
173
|
+
// counter[val.title]=val.totalJobs
|
|
174
|
+
// }
|
|
175
|
+
// for(const city of cities) {
|
|
176
|
+
// counter[city.city]=city.count
|
|
177
|
+
// }
|
|
170
178
|
|
|
171
|
-
|
|
179
|
+
// countsByFieldId.set(fieldId, new Map(originalOptions.map(o => [o.value, counter[o.label]])));
|
|
172
180
|
|
|
173
|
-
|
|
174
|
-
|
|
181
|
+
// // Initialize UI
|
|
182
|
+
// updateOptionsUI($item, fieldId, ''); // no search query
|
|
175
183
|
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
});
|
|
184
|
+
// $item(CAREERS_MULTI_BOXES_PAGE_CONSTS.FILTER_REPEATER_ITEM_CHECKBOX).selectedIndices = []; // start empty
|
|
185
|
+
// $item(CAREERS_MULTI_BOXES_PAGE_CONSTS.FILTER_REPEATER_ITEM_CHECKBOX).onChange(async (ev) => {
|
|
186
|
+
// dontUpdateThisCheckBox=fieldId;
|
|
187
|
+
// const selected = ev.target.value; // array of selected value IDs
|
|
188
|
+
// if (selected && selected.length) {
|
|
189
|
+
// selectedByField.set(fieldId, selected);
|
|
190
|
+
// } else {
|
|
191
|
+
// selectedByField.delete(fieldId);
|
|
192
|
+
// }
|
|
193
|
+
// await applyJobFilters(_$w,fieldId); // re-query jobs
|
|
194
|
+
// await refreshFacetCounts(_$w); // recompute and update counts in all lists
|
|
195
|
+
// await updateSelectedValuesRepeater(_$w);
|
|
196
|
+
// updateTotalJobsCountText(_$w);
|
|
197
|
+
// });
|
|
190
198
|
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
199
|
+
// // Input typing -> only filter this list’s visible options (no Jobs query)
|
|
200
|
+
// const runFilter = debounce(() => {
|
|
201
|
+
// const query = ($item(CAREERS_MULTI_BOXES_PAGE_CONSTS.FILTER_LABEL).value || '').toLowerCase().trim();
|
|
202
|
+
// updateOptionsUI($item, fieldId, query);
|
|
203
|
+
// }, 150);
|
|
204
|
+
// $item(CAREERS_MULTI_BOXES_PAGE_CONSTS.FILTER_LABEL).onInput(runFilter);
|
|
205
|
+
// });
|
|
198
206
|
|
|
199
|
-
await refreshFacetCounts(_$w);
|
|
207
|
+
//await refreshFacetCounts(_$w);
|
|
200
208
|
// After counts are ready, re-render all items to show numbers
|
|
201
|
-
_$w(CAREERS_MULTI_BOXES_PAGE_CONSTS.FILTER_REPEATER).forEachItem(($item, itemData) => {
|
|
202
|
-
|
|
203
|
-
|
|
209
|
+
// _$w(CAREERS_MULTI_BOXES_PAGE_CONSTS.FILTER_REPEATER).forEachItem(($item, itemData) => {
|
|
210
|
+
// const query = ($item(CAREERS_MULTI_BOXES_PAGE_CONSTS.FILTER_LABEL).value || '').toLowerCase().trim();
|
|
211
|
+
// updateOptionsUI($item, itemData._id, query);
|
|
204
212
|
|
|
205
213
|
|
|
206
|
-
});
|
|
214
|
+
// });
|
|
207
215
|
} catch (err) {
|
|
208
216
|
console.error('Failed to load filters:', err);
|
|
209
217
|
}
|