abmp-npm 1.1.41 → 1.1.43
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/package.json +1 -1
- package/pages/Home.js +35 -9
- package/public/Utils/homePage.js +54 -3
package/package.json
CHANGED
package/pages/Home.js
CHANGED
|
@@ -33,6 +33,7 @@ const homePageOnReady = async ({
|
|
|
33
33
|
getCompiledFiltersOptions,
|
|
34
34
|
getNonCompiledFiltersOptions,
|
|
35
35
|
filterProfiles,
|
|
36
|
+
logMessage,
|
|
36
37
|
}) => {
|
|
37
38
|
const {
|
|
38
39
|
getParamsMapping,
|
|
@@ -52,7 +53,7 @@ const homePageOnReady = async ({
|
|
|
52
53
|
updateUrlParams,
|
|
53
54
|
noSearchCriteria,
|
|
54
55
|
search,
|
|
55
|
-
} = createHomepageUtils(_$w, filterProfiles);
|
|
56
|
+
} = createHomepageUtils(_$w, filterProfiles, logMessage);
|
|
56
57
|
detectMobile();
|
|
57
58
|
initPageUI();
|
|
58
59
|
attachEventListeners();
|
|
@@ -263,20 +264,26 @@ const homePageOnReady = async ({
|
|
|
263
264
|
}
|
|
264
265
|
|
|
265
266
|
async function handleUrlParams() {
|
|
267
|
+
const renderingEnv = await rendering.env();
|
|
266
268
|
const { isDefaultStateParams, filter: newFilter } = await parseAndValidateQueryParams(
|
|
267
269
|
filter,
|
|
268
270
|
pagination
|
|
269
271
|
);
|
|
272
|
+
logMessage(`[handleUrlParams][${renderingEnv}] isDefaultStateParams`, isDefaultStateParams);
|
|
270
273
|
filter = newFilter;
|
|
274
|
+
logMessage(`[handleUrlParams][${renderingEnv}] filter`, JSON.stringify(filter));
|
|
271
275
|
await applyFilterToUI(isDefaultStateParams);
|
|
272
276
|
}
|
|
273
277
|
|
|
274
278
|
async function applyFilterToUI(isDefaultStateParams) {
|
|
279
|
+
const renderingEnv = await rendering.env();
|
|
280
|
+
logMessage(`[applyFilterToUI][${renderingEnv}] isDefaultStateParams`, isDefaultStateParams);
|
|
275
281
|
const setFilterFromParams = async (isInitializeValue = true) => {
|
|
276
282
|
const params = await wixLocation.query();
|
|
283
|
+
logMessage(`[setFilterFromParams][${renderingEnv}] params`, JSON.stringify(params));
|
|
277
284
|
console.log('params inside setFilterFromParams ', params);
|
|
278
285
|
const paramsMapping = getParamsMapping(filter, pagination);
|
|
279
|
-
|
|
286
|
+
for (const [param, { setValue, setUI }] of Object.entries(paramsMapping)) {
|
|
280
287
|
const value = params[param];
|
|
281
288
|
if (value !== undefined && value !== null && value !== '') {
|
|
282
289
|
try {
|
|
@@ -300,15 +307,17 @@ const homePageOnReady = async ({
|
|
|
300
307
|
console.error(`Error setting parameter ${param}:`, error);
|
|
301
308
|
}
|
|
302
309
|
}
|
|
303
|
-
}
|
|
310
|
+
}
|
|
304
311
|
};
|
|
305
312
|
await setFilterFromParams(true);
|
|
306
313
|
if (isDefaultStateParams) {
|
|
307
314
|
console.log('default state set for nearby');
|
|
315
|
+
logMessage(`[applyFilterToUI][${renderingEnv}] default state set for nearby`);
|
|
308
316
|
await Promise.all([fetchFilterData(), nearByHandler(true)]);
|
|
309
317
|
return;
|
|
310
318
|
}
|
|
311
319
|
console.log('not default state');
|
|
320
|
+
logMessage(`[applyFilterToUI][${renderingEnv}] not default state`);
|
|
312
321
|
const searchPromise =
|
|
313
322
|
filter.searchText && filter.searchText.length > 0
|
|
314
323
|
? () =>
|
|
@@ -329,6 +338,7 @@ const homePageOnReady = async ({
|
|
|
329
338
|
searchPromise(),
|
|
330
339
|
]);
|
|
331
340
|
} catch (error) {
|
|
341
|
+
logMessage(`[applyFilterToUI][${renderingEnv}] failed with error:`, error);
|
|
332
342
|
console.error('[applyFilterToUI] failed with error:', error);
|
|
333
343
|
multiStateBoxSelector.changeState('errorState');
|
|
334
344
|
}
|
|
@@ -338,7 +348,11 @@ const homePageOnReady = async ({
|
|
|
338
348
|
* UPDATE PROFILES BASED ON APPLIED/DEFAULT FILTER
|
|
339
349
|
*/
|
|
340
350
|
async function updateResults(timeoutType, preservePagination = false) {
|
|
351
|
+
const renderingEnv = await rendering.env();
|
|
352
|
+
logMessage(`[updateResults][${renderingEnv}] timeoutType`, timeoutType);
|
|
353
|
+
logMessage(`[updateResults][${renderingEnv}] preservePagination`, preservePagination);
|
|
341
354
|
if (debounceTimeout[timeoutType]) {
|
|
355
|
+
logMessage(`[updateResults][${renderingEnv}] clearing timeout type ${timeoutType}`);
|
|
342
356
|
clearTimeout(debounceTimeout[timeoutType]);
|
|
343
357
|
}
|
|
344
358
|
searchResults = await search({
|
|
@@ -349,6 +363,7 @@ const homePageOnReady = async ({
|
|
|
349
363
|
isSearchingNearby: _$w('#nearBy').checked,
|
|
350
364
|
preservePagination,
|
|
351
365
|
});
|
|
366
|
+
logMessage(`[updateResults][${renderingEnv}] searchResults`, JSON.stringify(searchResults));
|
|
352
367
|
!preservePagination && (await updateUrlParams(filter, pagination));
|
|
353
368
|
return searchResults;
|
|
354
369
|
}
|
|
@@ -408,7 +423,8 @@ const homePageOnReady = async ({
|
|
|
408
423
|
// NEAR BY FILTER
|
|
409
424
|
async function nearByHandler(preservePagination = false) {
|
|
410
425
|
const isSearchingNearby = _$w('#nearBy').checked;
|
|
411
|
-
|
|
426
|
+
const renderingEnv = await rendering.env();
|
|
427
|
+
logMessage(`[nearByHandler][${renderingEnv}] isSearchingNearby`, isSearchingNearby);
|
|
412
428
|
// 1. Disable nearby input while processing
|
|
413
429
|
_$w('#nearBy').disable();
|
|
414
430
|
|
|
@@ -418,9 +434,10 @@ const homePageOnReady = async ({
|
|
|
418
434
|
// 3. Do the query
|
|
419
435
|
const { success, filter: newFilter } = await getAndSetUserLocation(isSearchingNearby, filter);
|
|
420
436
|
filter = newFilter;
|
|
437
|
+
logMessage(`[nearByHandler][${renderingEnv}] filter`, JSON.stringify(filter));
|
|
421
438
|
console.log('filter inside nearByHandler', filter);
|
|
422
|
-
const renderingEnv = await rendering.env();
|
|
423
439
|
if (!success) {
|
|
440
|
+
logMessage(`[nearByHandler][${renderingEnv}] failed to get user location`);
|
|
424
441
|
if (renderingEnv !== 'backend') {
|
|
425
442
|
//on Backend environment, geolocation API don't work, so makes no sense to change state for near by
|
|
426
443
|
multiStateBoxSelector.changeState('nearByState');
|
|
@@ -434,8 +451,9 @@ const homePageOnReady = async ({
|
|
|
434
451
|
|
|
435
452
|
// If location is not selected, change state to "resultsState"
|
|
436
453
|
if (!isSearchingNearby) {
|
|
454
|
+
logMessage(`[nearByHandler][${renderingEnv}] !isSearchingNearby, is`);
|
|
437
455
|
if (await noSearchCriteria()) {
|
|
438
|
-
|
|
456
|
+
logMessage(`[nearByHandler][${renderingEnv}] no search criteria and no near by`);
|
|
439
457
|
multiStateBoxSelector.changeState('noSearchCriteria');
|
|
440
458
|
// 4. Re-enable nearby input
|
|
441
459
|
_$w('#nearBy').enable();
|
|
@@ -443,7 +461,7 @@ const homePageOnReady = async ({
|
|
|
443
461
|
}
|
|
444
462
|
multiStateBoxSelector.changeState('resultsState');
|
|
445
463
|
}
|
|
446
|
-
|
|
464
|
+
logMessage(`[nearByHandler][${renderingEnv}] !isSearchingNearby, isSearchingNearby is true`);
|
|
447
465
|
await updateResults('zeroTimeout', preservePagination);
|
|
448
466
|
|
|
449
467
|
// 4. Re-enable nearby input when done
|
|
@@ -461,12 +479,18 @@ const homePageOnReady = async ({
|
|
|
461
479
|
await withWarmUpData(
|
|
462
480
|
'getCompiledFiltersOptions',
|
|
463
481
|
() => getCompiledFiltersOptions(),
|
|
464
|
-
|
|
482
|
+
logMessage
|
|
465
483
|
);
|
|
484
|
+
const renderingEnv = await rendering.env();
|
|
485
|
+
logMessage(`[fetchFilterData][${renderingEnv}] fetched compiled filters`);
|
|
466
486
|
completeStateList = COMPILED_STATE_LIST;
|
|
467
487
|
areasOfPracticesList = COMPILED_AREAS_OF_PRACTICES;
|
|
468
488
|
stateCityMapList = COMPILED_STATE_CITY_MAP;
|
|
469
489
|
} catch (error) {
|
|
490
|
+
const renderingEnv = await rendering.env();
|
|
491
|
+
logMessage(
|
|
492
|
+
`[fetchFilterData][${renderingEnv}] failed to get compiled filters list, falling back to non compiled version with error: ${error}`
|
|
493
|
+
);
|
|
470
494
|
console.error(
|
|
471
495
|
`Failed to get compiled filters list, falling back to non compiled version with error: ${error}`
|
|
472
496
|
);
|
|
@@ -743,7 +767,9 @@ const homePageOnReady = async ({
|
|
|
743
767
|
await updateResults('filterTimeout');
|
|
744
768
|
}
|
|
745
769
|
} catch (error) {
|
|
746
|
-
|
|
770
|
+
const renderingEnv = await rendering.env();
|
|
771
|
+
console.error(`[handleFilterChanged][${renderingEnv}] failed with error:`, error);
|
|
772
|
+
logMessage(`[handleFilterChanged][${renderingEnv}] failed with error:`, error);
|
|
747
773
|
multiStateBoxSelector.changeState('errorState');
|
|
748
774
|
}
|
|
749
775
|
}
|
package/public/Utils/homePage.js
CHANGED
|
@@ -5,7 +5,7 @@ const { DEFAULT_FILTER } = require('../consts.js');
|
|
|
5
5
|
|
|
6
6
|
const { debouncedFunction } = require('./sharedUtils.js');
|
|
7
7
|
|
|
8
|
-
const createHomepageUtils = (_$w, filterProfiles) => {
|
|
8
|
+
const createHomepageUtils = (_$w, filterProfiles, logMessage) => {
|
|
9
9
|
const getFiltersSelectors = filterName => ({
|
|
10
10
|
checkBoxContainerSelector: _$w(`#${filterName}CheckBoxContainer`),
|
|
11
11
|
searchTextInputSelector: _$w(`#${filterName}TextInput`),
|
|
@@ -502,6 +502,8 @@ const createHomepageUtils = (_$w, filterProfiles) => {
|
|
|
502
502
|
}
|
|
503
503
|
async function parseAndValidateQueryParams(filter, pagination) {
|
|
504
504
|
const params = await wixLocation.query();
|
|
505
|
+
const renderingEnv = await rendering.env();
|
|
506
|
+
logMessage(`[parseAndValidateQueryParams][${renderingEnv}] params`, JSON.stringify(params));
|
|
505
507
|
const paramsMapping = getParamsMapping(filter, pagination);
|
|
506
508
|
const {
|
|
507
509
|
siteRevision: _siteRevision,
|
|
@@ -521,15 +523,31 @@ const createHomepageUtils = (_$w, filterProfiles) => {
|
|
|
521
523
|
newFilter.longitude !== 0 &&
|
|
522
524
|
!isSearchingNearby
|
|
523
525
|
) {
|
|
526
|
+
logMessage(
|
|
527
|
+
`[parseAndValidateQueryParams][${renderingEnv}] Auto-enable nearby`,
|
|
528
|
+
JSON.stringify(params)
|
|
529
|
+
);
|
|
524
530
|
await wixQueryParams.add({ nearby: 'true', page: '1' });
|
|
525
531
|
return { isDefaultStateParams: true, filter: newFilter };
|
|
526
532
|
}
|
|
527
533
|
|
|
528
534
|
if (isNoParams) {
|
|
535
|
+
logMessage(
|
|
536
|
+
`[parseAndValidateQueryParams][${renderingEnv}] isNoParams`,
|
|
537
|
+
JSON.stringify(params)
|
|
538
|
+
);
|
|
539
|
+
// search({
|
|
540
|
+
// filter,
|
|
541
|
+
// pagination,
|
|
542
|
+
// debounceTimeout: 0,
|
|
543
|
+
// timeoutType: 'search',
|
|
544
|
+
// isSearchingNearby: false,
|
|
545
|
+
// });
|
|
529
546
|
// Don't search yet - let the caller decide what to do
|
|
530
547
|
// The search will be handled in applyFilterToUI
|
|
531
548
|
return { isDefaultStateParams: true, filter: newFilter };
|
|
532
549
|
}
|
|
550
|
+
logMessage(`[parseAndValidateQueryParams][${renderingEnv}] continued`, JSON.stringify(params));
|
|
533
551
|
let autoAdjustFilters = false;
|
|
534
552
|
const validatePageValue = value => {
|
|
535
553
|
if (!value || isNaN(Number(value)) || Number(value) < 1 || Number(value) > 10) {
|
|
@@ -540,10 +558,18 @@ const createHomepageUtils = (_$w, filterProfiles) => {
|
|
|
540
558
|
};
|
|
541
559
|
const pageValidationResult = validatePageValue(params.page);
|
|
542
560
|
if (!pageValidationResult.valid) {
|
|
561
|
+
logMessage(
|
|
562
|
+
`[parseAndValidateQueryParams][${renderingEnv}] pageValidationResult not valid`,
|
|
563
|
+
JSON.stringify(params)
|
|
564
|
+
);
|
|
543
565
|
paramsMapping.page.setValue({ value: pageValidationResult.value });
|
|
544
566
|
autoAdjustFilters = true;
|
|
545
567
|
}
|
|
546
568
|
if (isSearchingNearby) {
|
|
569
|
+
logMessage(
|
|
570
|
+
`[parseAndValidateQueryParams][${renderingEnv}] isSearchingNearby`,
|
|
571
|
+
JSON.stringify(params)
|
|
572
|
+
);
|
|
547
573
|
//if nearby is true only city,state,zip should be reset, others should be preserved and taken from query params
|
|
548
574
|
const paramsToPreserve = ['practiceAreas', 'searchText', 'page'];
|
|
549
575
|
paramsToPreserve.forEach(paramName => {
|
|
@@ -559,6 +585,10 @@ const createHomepageUtils = (_$w, filterProfiles) => {
|
|
|
559
585
|
autoAdjustFilters = true;
|
|
560
586
|
}
|
|
561
587
|
if (autoAdjustFilters) {
|
|
588
|
+
logMessage(
|
|
589
|
+
`[parseAndValidateQueryParams][${renderingEnv}] autoAdjustFilters`,
|
|
590
|
+
JSON.stringify(params)
|
|
591
|
+
);
|
|
562
592
|
await updateUrlParams(filter, pagination);
|
|
563
593
|
}
|
|
564
594
|
const isNearbyFilter =
|
|
@@ -590,6 +620,8 @@ const createHomepageUtils = (_$w, filterProfiles) => {
|
|
|
590
620
|
const paramsMapping = getParamsMapping(filter, pagination);
|
|
591
621
|
// Get current query parameters
|
|
592
622
|
const currentParams = await wixLocation.query();
|
|
623
|
+
const renderingEnv = await rendering.env();
|
|
624
|
+
logMessage(`[updateUrlParams][${renderingEnv}] currentParams`, JSON.stringify(currentParams));
|
|
593
625
|
// Remove all existing parameters that we manage
|
|
594
626
|
Object.keys(paramsMapping).forEach(async param => {
|
|
595
627
|
if (currentParams[param]) {
|
|
@@ -651,6 +683,7 @@ const createHomepageUtils = (_$w, filterProfiles) => {
|
|
|
651
683
|
preservePagination = false,
|
|
652
684
|
}) {
|
|
653
685
|
const multiStateBoxSelector = _$w('#resultsStateBox');
|
|
686
|
+
const renderingEnv = await rendering.env();
|
|
654
687
|
const initSearchResultsUI = () => {
|
|
655
688
|
JSON.stringify(filter) === JSON.stringify(DEFAULT_FILTER)
|
|
656
689
|
? _$w('#resetFilter').hide()
|
|
@@ -663,6 +696,10 @@ const createHomepageUtils = (_$w, filterProfiles) => {
|
|
|
663
696
|
};
|
|
664
697
|
const runSearchAndUpdateUI = async (filter, isSearchingNearby) => {
|
|
665
698
|
if (!isSearchingNearby) {
|
|
699
|
+
logMessage(
|
|
700
|
+
`[runSearchAndUpdateUI][${renderingEnv}] !isSearchingNearby, filter`,
|
|
701
|
+
JSON.stringify(filter)
|
|
702
|
+
);
|
|
666
703
|
if (
|
|
667
704
|
JSON.stringify({
|
|
668
705
|
...filter,
|
|
@@ -671,11 +708,17 @@ const createHomepageUtils = (_$w, filterProfiles) => {
|
|
|
671
708
|
}) === JSON.stringify(DEFAULT_FILTER)
|
|
672
709
|
) {
|
|
673
710
|
multiStateBoxSelector.changeState('noSearchCriteria');
|
|
674
|
-
|
|
711
|
+
logMessage(
|
|
712
|
+
`[runSearchAndUpdateUI][${renderingEnv}] !isSearchingNearby, no search criteria`
|
|
713
|
+
);
|
|
675
714
|
return [];
|
|
676
715
|
}
|
|
677
716
|
}
|
|
678
|
-
|
|
717
|
+
logMessage(
|
|
718
|
+
`[runSearchAndUpdateUI][${renderingEnv}] isSearchingNearby is true , filter`,
|
|
719
|
+
JSON.stringify({ filter })
|
|
720
|
+
);
|
|
721
|
+
//Don't run setTimeout on SSR
|
|
679
722
|
const funcPromise =
|
|
680
723
|
renderingEnv === 'backend'
|
|
681
724
|
? () => filterProfiles({ filter, isSearchingNearby })
|
|
@@ -688,6 +731,10 @@ const createHomepageUtils = (_$w, filterProfiles) => {
|
|
|
688
731
|
});
|
|
689
732
|
const { success, response, error } = await funcPromise();
|
|
690
733
|
if (!success) {
|
|
734
|
+
logMessage(
|
|
735
|
+
`[runSearchAndUpdateUI][${renderingEnv}] !isSearchingNearby, failed to get search results`,
|
|
736
|
+
error
|
|
737
|
+
);
|
|
691
738
|
_$w('#numberOfResults').text = '';
|
|
692
739
|
console.error('[search] failed with error:', error);
|
|
693
740
|
multiStateBoxSelector.changeState('errorState');
|
|
@@ -701,6 +748,10 @@ const createHomepageUtils = (_$w, filterProfiles) => {
|
|
|
701
748
|
? `'${filter.searchText}' did not match any search. Please try again.`
|
|
702
749
|
: 'No results found for the selected filters. Please adjust your filters and try again'
|
|
703
750
|
}`;
|
|
751
|
+
logMessage(
|
|
752
|
+
`[runSearchAndUpdateUI][${renderingEnv}] !isSearchingNearby, no results found`,
|
|
753
|
+
JSON.stringify({ filter })
|
|
754
|
+
);
|
|
704
755
|
multiStateBoxSelector.changeState('noResultsState');
|
|
705
756
|
return [];
|
|
706
757
|
}
|