sr-npm 1.7.154 → 1.7.155
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/consts.js +34 -62
- package/backend/data.js +49 -3
- package/package.json +1 -1
- package/pages/careersPage.js +18 -24
package/backend/consts.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
const {saveJobsDataToCMS,saveJobsDescriptionsAndLocationApplyUrlToCMS,aggregateJobsByFieldToCMS,referenceJobsToField,createApiKeyCollectionAndFillIt} = require('./data');
|
|
1
|
+
const {saveJobsDataToCMS,saveJobsDescriptionsAndLocationApplyUrlToCMS,aggregateJobsByFieldToCMS,referenceJobsToField,createApiKeyCollectionAndFillIt,createCollections,aggregateJobs,referenceJobs,syncJobsFast} = require('./data');
|
|
2
2
|
const { createCollectionIfMissing } = require('@hisense-staging/velo-npm/backend');
|
|
3
3
|
const { COLLECTIONS, COLLECTIONS_FIELDS, JOBS_COLLECTION_FIELDS } = require('./collectionConsts');
|
|
4
4
|
|
|
@@ -8,14 +8,11 @@ const TASKS_NAMES = {
|
|
|
8
8
|
SYNC_JOBS: 'syncJobsFromSRAPIToCMS',
|
|
9
9
|
INSERT_JOBS_TO_CMS: 'insertJobsToCMS',
|
|
10
10
|
INSERT_JOBS_DESCRIPTIONS_LOCATION_APPLY_URL_TO_CMS: 'insertJobsDescriptionsLocationApplyUrlToCMS',
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
REFERENCE_JOBS_TO_DEPARTMENT: 'referenceJobsToDepartment',
|
|
15
|
-
CREATE_JOBS_COLLECTION: 'createJobsCollection',
|
|
16
|
-
CREATE_CITIES_COLLECTION: 'createCitiesCollection',
|
|
17
|
-
CREATE_AMOUNT_OF_JOBS_PER_DEPARTMENT_COLLECTION: 'createAmountOfJobsPerDepartmentCollection',
|
|
11
|
+
AGGREGATE_JOBS_BY_FIELD_TO_CMS: 'aggregateJobsByFieldToCMS',
|
|
12
|
+
REFERENCE_JOBS: 'referenceJobs',
|
|
13
|
+
CREATE_COLLECTIONS: 'createCollections',
|
|
18
14
|
CREATE_API_KEY_COLLECTION_AND_FILL_IT: 'createApiKeyCollectionAndFillIt',
|
|
15
|
+
SYNC_JOBS_FAST: 'syncJobsFast',
|
|
19
16
|
}
|
|
20
17
|
|
|
21
18
|
|
|
@@ -23,39 +20,21 @@ const TASKS = {
|
|
|
23
20
|
[TASKS_NAMES.SYNC_JOBS]: {
|
|
24
21
|
name: TASKS_NAMES.SYNC_JOBS,
|
|
25
22
|
childTasks: [
|
|
26
|
-
{ name: TASKS_NAMES.
|
|
27
|
-
{ name: TASKS_NAMES.CREATE_CITIES_COLLECTION },
|
|
28
|
-
{name: TASKS_NAMES.CREATE_AMOUNT_OF_JOBS_PER_DEPARTMENT_COLLECTION},
|
|
23
|
+
{ name: TASKS_NAMES.CREATE_COLLECTIONS},
|
|
29
24
|
{ name: TASKS_NAMES.INSERT_JOBS_TO_CMS },
|
|
30
25
|
{ name: TASKS_NAMES.INSERT_JOBS_DESCRIPTIONS_LOCATION_APPLY_URL_TO_CMS },
|
|
31
|
-
{ name: TASKS_NAMES.
|
|
32
|
-
{
|
|
33
|
-
{ name: TASKS_NAMES.REFERENCE_JOBS_TO_LOCATIONS },
|
|
34
|
-
{ name: TASKS_NAMES.REFERENCE_JOBS_TO_DEPARTMENT },
|
|
26
|
+
{ name: TASKS_NAMES.AGGREGATE_JOBS_BY_FIELD_TO_CMS },
|
|
27
|
+
{name: TASKS_NAMES.REFERENCE_JOBS},
|
|
35
28
|
],
|
|
36
29
|
scheduleChildrenSequentially: true,
|
|
37
|
-
estimatedDurationSec:
|
|
30
|
+
estimatedDurationSec: 60,
|
|
38
31
|
},
|
|
39
|
-
[TASKS_NAMES.
|
|
40
|
-
name: TASKS_NAMES.
|
|
32
|
+
[TASKS_NAMES.CREATE_COLLECTIONS]: {
|
|
33
|
+
name: TASKS_NAMES.CREATE_COLLECTIONS,
|
|
41
34
|
getIdentifier:()=> "SHOULD_NEVER_SKIP",
|
|
42
|
-
process:
|
|
35
|
+
process:createCollections,
|
|
43
36
|
shouldSkipCheck:()=>false,
|
|
44
|
-
estimatedDurationSec:
|
|
45
|
-
},
|
|
46
|
-
[TASKS_NAMES.CREATE_CITIES_COLLECTION]: {
|
|
47
|
-
name: TASKS_NAMES.CREATE_CITIES_COLLECTION,
|
|
48
|
-
getIdentifier:()=> "SHOULD_NEVER_SKIP",
|
|
49
|
-
process:()=>createCollectionIfMissing(COLLECTIONS.CITIES, COLLECTIONS_FIELDS.CITIES),
|
|
50
|
-
shouldSkipCheck:()=>false,
|
|
51
|
-
estimatedDurationSec:3
|
|
52
|
-
},
|
|
53
|
-
[TASKS_NAMES.CREATE_AMOUNT_OF_JOBS_PER_DEPARTMENT_COLLECTION]: {
|
|
54
|
-
name: TASKS_NAMES.CREATE_AMOUNT_OF_JOBS_PER_DEPARTMENT_COLLECTION,
|
|
55
|
-
getIdentifier:()=> "SHOULD_NEVER_SKIP",
|
|
56
|
-
process:()=>createCollectionIfMissing(COLLECTIONS.AMOUNT_OF_JOBS_PER_DEPARTMENT, COLLECTIONS_FIELDS.AMOUNT_OF_JOBS_PER_DEPARTMENT),
|
|
57
|
-
shouldSkipCheck:()=>false,
|
|
58
|
-
estimatedDurationSec:3
|
|
37
|
+
estimatedDurationSec:7
|
|
59
38
|
},
|
|
60
39
|
[TASKS_NAMES.INSERT_JOBS_TO_CMS]: {
|
|
61
40
|
name: TASKS_NAMES.INSERT_JOBS_TO_CMS,
|
|
@@ -71,40 +50,33 @@ const TASKS = {
|
|
|
71
50
|
shouldSkipCheck:()=>false,
|
|
72
51
|
estimatedDurationSec:20
|
|
73
52
|
},
|
|
74
|
-
[TASKS_NAMES.
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
[TASKS_NAMES.REFERENCE_JOBS_TO_LOCATIONS]: {
|
|
89
|
-
name: TASKS_NAMES.REFERENCE_JOBS_TO_LOCATIONS,
|
|
90
|
-
getIdentifier:()=> "SHOULD_NEVER_SKIP",
|
|
91
|
-
process:()=>referenceJobsToField({ referenceField: JOBS_COLLECTION_FIELDS.CITY, sourceCollection: COLLECTIONS.CITIES, jobField: JOBS_COLLECTION_FIELDS.CITY_TEXT }),
|
|
92
|
-
shouldSkipCheck:()=>false,
|
|
93
|
-
estimatedDurationSec:3
|
|
94
|
-
},
|
|
95
|
-
[TASKS_NAMES.REFERENCE_JOBS_TO_DEPARTMENT]: {
|
|
96
|
-
name: TASKS_NAMES.REFERENCE_JOBS_TO_DEPARTMENT,
|
|
97
|
-
getIdentifier:()=> "SHOULD_NEVER_SKIP",
|
|
98
|
-
process:()=>referenceJobsToField({ referenceField: JOBS_COLLECTION_FIELDS.DEPARTMENT_REF, sourceCollection: COLLECTIONS.AMOUNT_OF_JOBS_PER_DEPARTMENT, jobField: JOBS_COLLECTION_FIELDS.DEPARTMENT }),
|
|
99
|
-
shouldSkipCheck:()=>false,
|
|
100
|
-
estimatedDurationSec:3
|
|
101
|
-
},
|
|
53
|
+
[TASKS_NAMES.AGGREGATE_JOBS_BY_FIELD_TO_CMS]: {
|
|
54
|
+
name: TASKS_NAMES.AGGREGATE_JOBS_BY_FIELD_TO_CMS,
|
|
55
|
+
getIdentifier:()=> "SHOULD_NEVER_SKIP",
|
|
56
|
+
process:aggregateJobs,
|
|
57
|
+
shouldSkipCheck:()=>false,
|
|
58
|
+
estimatedDurationSec:6
|
|
59
|
+
},
|
|
60
|
+
[TASKS_NAMES.REFERENCE_JOBS]: {
|
|
61
|
+
name: TASKS_NAMES.REFERENCE_JOBS,
|
|
62
|
+
getIdentifier:()=> "SHOULD_NEVER_SKIP",
|
|
63
|
+
process:referenceJobs,
|
|
64
|
+
shouldSkipCheck:()=>false,
|
|
65
|
+
estimatedDurationSec:6
|
|
66
|
+
},
|
|
102
67
|
[TASKS_NAMES.CREATE_API_KEY_COLLECTION_AND_FILL_IT]: {
|
|
103
68
|
name: TASKS_NAMES.CREATE_API_KEY_COLLECTION_AND_FILL_IT,
|
|
104
69
|
getIdentifier:()=> "SHOULD_NEVER_SKIP",
|
|
105
70
|
process:()=>createApiKeyCollectionAndFillIt(),
|
|
106
71
|
shouldSkipCheck:()=>false,
|
|
107
72
|
estimatedDurationSec:3
|
|
73
|
+
},
|
|
74
|
+
[TASKS_NAMES.SYNC_JOBS_FAST]: {
|
|
75
|
+
name: TASKS_NAMES.SYNC_JOBS_FAST,
|
|
76
|
+
getIdentifier:()=> "SHOULD_NEVER_SKIP",
|
|
77
|
+
process:()=>syncJobsFast(),
|
|
78
|
+
shouldSkipCheck:()=>false,
|
|
79
|
+
estimatedDurationSec:60
|
|
108
80
|
}
|
|
109
81
|
}
|
|
110
82
|
|
package/backend/data.js
CHANGED
|
@@ -29,8 +29,6 @@ async function saveJobsDataToCMS() {
|
|
|
29
29
|
// bulk insert to jobs collection without descriptions first
|
|
30
30
|
const jobsData = positions.content.map(position => {
|
|
31
31
|
validatePosition(position);
|
|
32
|
-
console.log("before: position.department.label", position.department.label);
|
|
33
|
-
console.log("after: position.department.label", position.department.label.replace('&', ' and '));
|
|
34
32
|
const basicJob = {
|
|
35
33
|
_id: position.id,
|
|
36
34
|
title: position.title,
|
|
@@ -45,7 +43,6 @@ async function saveJobsDataToCMS() {
|
|
|
45
43
|
};
|
|
46
44
|
return basicJob;
|
|
47
45
|
});
|
|
48
|
-
console.log("jobsData@@@@@@@", jobsData);
|
|
49
46
|
|
|
50
47
|
const chunkSize = 1000;
|
|
51
48
|
let totalSaved = 0;
|
|
@@ -299,8 +296,57 @@ async function createApiKeyCollectionAndFillIt() {
|
|
|
299
296
|
console.log("Smart token inserted into the ApiKey collection");
|
|
300
297
|
}
|
|
301
298
|
|
|
299
|
+
async function createCollections() {
|
|
300
|
+
console.log("Creating collections");
|
|
301
|
+
Promise.all(
|
|
302
|
+
[createCollectionIfMissing(COLLECTIONS.JOBS, JOBS_COLLECTION_FIELDS.JOBS,{ insert: 'ADMIN', update: 'ADMIN', remove: 'ADMIN', read: 'ANYONE' }),
|
|
303
|
+
createCollectionIfMissing(COLLECTIONS.CITIES, COLLECTIONS_FIELDS.CITIES),
|
|
304
|
+
createCollectionIfMissing(COLLECTIONS.AMOUNT_OF_JOBS_PER_DEPARTMENT, COLLECTIONS_FIELDS.AMOUNT_OF_JOBS_PER_DEPARTMENT)
|
|
305
|
+
]);
|
|
306
|
+
console.log("finished creating Collections");
|
|
307
|
+
}
|
|
308
|
+
|
|
309
|
+
async function aggregateJobs() {
|
|
310
|
+
console.log("Aggregating jobs");
|
|
311
|
+
Promise.all([
|
|
312
|
+
aggregateJobsByFieldToCMS({ field: JOBS_COLLECTION_FIELDS.CITY_TEXT, collection: COLLECTIONS.CITIES }),
|
|
313
|
+
aggregateJobsByFieldToCMS({ field: JOBS_COLLECTION_FIELDS.DEPARTMENT, collection: COLLECTIONS.AMOUNT_OF_JOBS_PER_DEPARTMENT })
|
|
314
|
+
]);
|
|
315
|
+
console.log("finished aggregating jobs");
|
|
316
|
+
}
|
|
317
|
+
|
|
318
|
+
async function referenceJobs() {
|
|
319
|
+
console.log("Reference jobs");
|
|
320
|
+
await referenceJobsToField({ referenceField: JOBS_COLLECTION_FIELDS.DEPARTMENT_REF, sourceCollection: COLLECTIONS.AMOUNT_OF_JOBS_PER_DEPARTMENT, jobField: JOBS_COLLECTION_FIELDS.DEPARTMENT })
|
|
321
|
+
await referenceJobsToField({ referenceField: JOBS_COLLECTION_FIELDS.CITY, sourceCollection: COLLECTIONS.CITIES, jobField: JOBS_COLLECTION_FIELDS.CITY_TEXT }),
|
|
322
|
+
console.log("finished referencing jobs");
|
|
323
|
+
}
|
|
324
|
+
|
|
325
|
+
async function syncJobsFast() {
|
|
326
|
+
console.log("Syncing jobs fast");
|
|
327
|
+
console.log("Creating collections");
|
|
328
|
+
await createCollections();
|
|
329
|
+
console.log("created collections successfully");
|
|
330
|
+
console.log("saving jobs data to CMS");
|
|
331
|
+
await saveJobsDataToCMS();
|
|
332
|
+
console.log("saved jobs data to CMS successfully");
|
|
333
|
+
console.log("saving jobs descriptions and location apply url to CMS");
|
|
334
|
+
await saveJobsDescriptionsAndLocationApplyUrlToCMS();
|
|
335
|
+
console.log("saved jobs descriptions and location apply url to CMS successfully");
|
|
336
|
+
console.log("aggregating jobs");
|
|
337
|
+
await aggregateJobs();
|
|
338
|
+
console.log("aggregated jobs successfully");
|
|
339
|
+
console.log("referencing jobs");
|
|
340
|
+
await referenceJobs();
|
|
341
|
+
console.log("referenced jobs successfully");
|
|
342
|
+
console.log("syncing jobs fast finished successfully");
|
|
343
|
+
}
|
|
302
344
|
|
|
303
345
|
module.exports = {
|
|
346
|
+
syncJobsFast,
|
|
347
|
+
referenceJobs,
|
|
348
|
+
aggregateJobs,
|
|
349
|
+
createCollections,
|
|
304
350
|
saveJobsDataToCMS,
|
|
305
351
|
saveJobsDescriptionsAndLocationApplyUrlToCMS,
|
|
306
352
|
aggregateJobsByFieldToCMS,
|
package/package.json
CHANGED
package/pages/careersPage.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
const { getAllPositions } = require('../backend/queries');
|
|
2
2
|
const {wixData} = require('wix-data');
|
|
3
3
|
const { window } = require('@wix/site-window');
|
|
4
|
-
const { query,queryParams,to
|
|
4
|
+
const { query,queryParams,to } = require("wix-location-frontend");
|
|
5
5
|
const {
|
|
6
6
|
debounce,
|
|
7
7
|
getFilter,
|
|
@@ -21,7 +21,6 @@ async function careersPageOnReady(_$w,thisObject,query) {
|
|
|
21
21
|
queryPageVar=query.page;
|
|
22
22
|
queryKeyWordVar=query.keyWord;
|
|
23
23
|
queryDepartmentVar=query.department;
|
|
24
|
-
console.log("query", query);
|
|
25
24
|
thisObjectVar=thisObject;
|
|
26
25
|
allJobs=await getAllPositions();
|
|
27
26
|
await handleUrlParams(_$w);
|
|
@@ -179,7 +178,7 @@ async function applyFilters(_$w, skipUrlUpdate = false) {
|
|
|
179
178
|
{ elementId: '#searchInput', field: 'title', value: _$w('#searchInput').value }
|
|
180
179
|
];
|
|
181
180
|
|
|
182
|
-
|
|
181
|
+
|
|
183
182
|
|
|
184
183
|
let filters = [];
|
|
185
184
|
let value;
|
|
@@ -260,42 +259,37 @@ async function updateCount(_$w) {
|
|
|
260
259
|
|
|
261
260
|
async function handleDepartmentParam(_$w,department) {
|
|
262
261
|
const departmentValue = department.replace('-', ' ');
|
|
263
|
-
console.log("department inside handleDepartmentParam", departmentValue);
|
|
264
262
|
|
|
265
|
-
|
|
263
|
+
|
|
266
264
|
|
|
267
|
-
console.log("after refresh");
|
|
268
265
|
let dropdownOptions = _$w('#dropdownDepartment').options;
|
|
269
266
|
console.log("dropdown options:", dropdownOptions);
|
|
270
267
|
const optionsFromCMS=await wixData.query("AmountOfJobsPerDepartment").find();
|
|
271
268
|
//+1 because of the "All" option
|
|
272
269
|
|
|
273
270
|
if(dropdownOptions.length!==optionsFromCMS.items.length+1){
|
|
274
|
-
|
|
275
|
-
dropdownOptions=[{
|
|
276
|
-
label: "All",
|
|
277
|
-
value: "RESET_ALL"
|
|
278
|
-
}]
|
|
279
|
-
dropdownOptions.push(...optionsFromCMS.items.map(item=>({
|
|
280
|
-
label: item.title,
|
|
281
|
-
value: item.title
|
|
282
|
-
})));
|
|
283
|
-
_$w('#dropdownDepartment').options=dropdownOptions;
|
|
284
|
-
console.warn("something is wrong with the dropdown options, fixing it");
|
|
271
|
+
fixDropdownOptions(optionsFromCMS, _$w);
|
|
285
272
|
}
|
|
286
273
|
|
|
287
|
-
|
|
288
|
-
// Try setting the value
|
|
289
274
|
_$w('#dropdownDepartment').value = departmentValue;
|
|
290
|
-
console.log("after setting, dropdown value:", _$w('#dropdownDepartment').value);
|
|
291
275
|
|
|
292
|
-
console.log("before applyFilters_$w('#dropdownDepartment').value", _$w('#dropdownDepartment').value);
|
|
293
|
-
|
|
294
276
|
await applyFilters(_$w, true); // Skip URL update since we're handling initial URL params
|
|
295
|
-
// console.log("url", url);
|
|
296
|
-
// await to(url);
|
|
297
277
|
}
|
|
298
278
|
|
|
279
|
+
function fixDropdownOptions(optionsFromCMS, _$w){
|
|
280
|
+
let dropdownOptions = [];
|
|
281
|
+
dropdownOptions=[{
|
|
282
|
+
label: "All",
|
|
283
|
+
value: "RESET_ALL"
|
|
284
|
+
}]
|
|
285
|
+
dropdownOptions.push(...optionsFromCMS.items.map(item=>({
|
|
286
|
+
label: item.title,
|
|
287
|
+
value: item.title
|
|
288
|
+
})));
|
|
289
|
+
_$w('#dropdownDepartment').options=dropdownOptions;
|
|
290
|
+
console.warn("something is wrong with the dropdown options, fixing it");
|
|
291
|
+
|
|
292
|
+
}
|
|
299
293
|
|
|
300
294
|
|
|
301
295
|
|