simpo-component-library 3.6.593 → 3.6.594
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/esm2022/lib/ecommerce/sections/product-desc/product-desc.component.mjs +2 -2
- package/esm2022/lib/ecommerce/sections/product-list/product-list.component.mjs +2 -2
- package/esm2022/lib/services/analytics.service.mjs +68 -8
- package/fesm2022/simpo-component-library.mjs +68 -9
- package/fesm2022/simpo-component-library.mjs.map +1 -1
- package/lib/ecommerce/sections/product-desc/product-desc.component.d.ts +1 -1
- package/lib/ecommerce/sections/schemes/schemes.component.d.ts +1 -1
- package/lib/sections/pricing-section/pricing-section.component.d.ts +1 -1
- package/lib/services/analytics.service.d.ts +7 -0
- package/package.json +1 -1
- package/simpo-component-library-3.6.594.tgz +0 -0
- package/simpo-component-library-3.6.593.tgz +0 -0
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
import { Inject, Injectable, PLATFORM_ID } from '@angular/core';
|
|
2
2
|
import { interval } from 'rxjs';
|
|
3
|
-
import { DOCUMENT
|
|
3
|
+
import { DOCUMENT } from '@angular/common';
|
|
4
4
|
import { API_URL } from '../tokens/api-token';
|
|
5
5
|
import { LOCAL_STORAGE } from '../services/local-storage.token';
|
|
6
|
+
import { NavigationEnd } from '@angular/router';
|
|
6
7
|
import * as i0 from "@angular/core";
|
|
7
8
|
import * as i1 from "@angular/common/http";
|
|
8
9
|
import * as i2 from "./storage.service";
|
|
@@ -19,8 +20,63 @@ export class AnalyticsService {
|
|
|
19
20
|
this.eventQueue = [];
|
|
20
21
|
this.BATCH_SIZE = 10;
|
|
21
22
|
this.FLUSH_INTERVAL = 5000; // 5 seconds
|
|
23
|
+
// ===== Duration Tracking =====
|
|
24
|
+
this.currentPage = '';
|
|
25
|
+
this.currentContextMetadata = null;
|
|
26
|
+
this.contextStartTime = null;
|
|
27
|
+
this.contextActiveTime = 0;
|
|
22
28
|
this.startAutoFlush();
|
|
23
29
|
this.listenToUnload();
|
|
30
|
+
this.listenToRouteChange();
|
|
31
|
+
}
|
|
32
|
+
startNewContext(metadata) {
|
|
33
|
+
this.closeCurrentContext(); // close previous filter session
|
|
34
|
+
this.currentContextMetadata = metadata;
|
|
35
|
+
this.contextStartTime = Date.now();
|
|
36
|
+
this.contextActiveTime = 0;
|
|
37
|
+
}
|
|
38
|
+
closeCurrentContext(useBeacon = false) {
|
|
39
|
+
if (!this.currentContextMetadata)
|
|
40
|
+
return;
|
|
41
|
+
if (this.contextStartTime) {
|
|
42
|
+
this.contextActiveTime += Date.now() - this.contextStartTime;
|
|
43
|
+
}
|
|
44
|
+
const user = this.storageService.getUser();
|
|
45
|
+
const requestFrom = this.storage.getItem('REQUEST_FROM');
|
|
46
|
+
if (!user || requestFrom === 'ECOMMERCE')
|
|
47
|
+
return;
|
|
48
|
+
const event = {
|
|
49
|
+
businessId: this.storage.getItem('bId') || '',
|
|
50
|
+
businessName: this.storage.getItem('bName') || '',
|
|
51
|
+
userId: user.userId,
|
|
52
|
+
createdTimeStamp: new Date().toISOString(),
|
|
53
|
+
page: this.currentPage,
|
|
54
|
+
duration: this.contextActiveTime,
|
|
55
|
+
metadata: this.currentContextMetadata
|
|
56
|
+
};
|
|
57
|
+
if (useBeacon && navigator.sendBeacon) {
|
|
58
|
+
navigator.sendBeacon(this.API_URL + 'ecommerce/analytics/batch', JSON.stringify([event]));
|
|
59
|
+
}
|
|
60
|
+
else {
|
|
61
|
+
this.eventQueue.push(event);
|
|
62
|
+
}
|
|
63
|
+
this.currentContextMetadata = null;
|
|
64
|
+
this.contextStartTime = null;
|
|
65
|
+
this.contextActiveTime = 0;
|
|
66
|
+
}
|
|
67
|
+
// ===============================
|
|
68
|
+
// 🔥 ROUTE CHANGE LISTENER
|
|
69
|
+
// ===============================
|
|
70
|
+
listenToRouteChange() {
|
|
71
|
+
this.router.events.subscribe(event => {
|
|
72
|
+
if (event instanceof NavigationEnd) {
|
|
73
|
+
// Close previous page context
|
|
74
|
+
this.closeCurrentContext();
|
|
75
|
+
this.currentPage = this.router.url.split('?')[0];
|
|
76
|
+
this.contextStartTime = Date.now();
|
|
77
|
+
this.contextActiveTime = 0;
|
|
78
|
+
}
|
|
79
|
+
});
|
|
24
80
|
}
|
|
25
81
|
trackUser(event) {
|
|
26
82
|
const user = this.storageService.getUser();
|
|
@@ -55,13 +111,17 @@ export class AnalyticsService {
|
|
|
55
111
|
.subscribe({ error: () => { } });
|
|
56
112
|
}
|
|
57
113
|
listenToUnload() {
|
|
58
|
-
|
|
59
|
-
this.document.
|
|
60
|
-
|
|
61
|
-
|
|
114
|
+
this.document.addEventListener('visibilitychange', () => {
|
|
115
|
+
if (this.document.visibilityState === 'visible') {
|
|
116
|
+
this.contextStartTime = Date.now();
|
|
117
|
+
}
|
|
118
|
+
else {
|
|
119
|
+
if (this.contextStartTime) {
|
|
120
|
+
this.contextActiveTime += Date.now() - this.contextStartTime;
|
|
62
121
|
}
|
|
63
|
-
|
|
64
|
-
|
|
122
|
+
this.closeCurrentContext(true);
|
|
123
|
+
}
|
|
124
|
+
});
|
|
65
125
|
}
|
|
66
126
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: AnalyticsService, deps: [{ token: i1.HttpClient }, { token: PLATFORM_ID }, { token: DOCUMENT }, { token: i2.StorageServiceService }, { token: API_URL }, { token: LOCAL_STORAGE }, { token: i3.Router }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
67
127
|
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: AnalyticsService, providedIn: 'root' }); }
|
|
@@ -82,4 +142,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
82
142
|
type: Inject,
|
|
83
143
|
args: [LOCAL_STORAGE]
|
|
84
144
|
}] }, { type: i3.Router }] });
|
|
85
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYW5hbHl0aWNzLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zaW1wby11aS9zcmMvbGliL3NlcnZpY2VzL2FuYWx5dGljcy5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLFdBQVcsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUVoRSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ2hDLE9BQU8sRUFBRSxRQUFRLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUU5RCxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFHOUMsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGlDQUFpQyxDQUFDOzs7OztBQUloRSxNQUFNLE9BQU8sZ0JBQWdCO0lBTXpCLFlBQW9CLElBQWdCLEVBQ0gsVUFBa0IsRUFDckIsUUFBa0IsRUFDM0IsY0FBcUMsRUFDN0IsT0FBZSxFQUNULE9BQW9CLEVBQzNDLE1BQWM7UUFOTixTQUFJLEdBQUosSUFBSSxDQUFZO1FBQ0gsZUFBVSxHQUFWLFVBQVUsQ0FBUTtRQUNyQixhQUFRLEdBQVIsUUFBUSxDQUFVO1FBQzNCLG1CQUFjLEdBQWQsY0FBYyxDQUF1QjtRQUM3QixZQUFPLEdBQVAsT0FBTyxDQUFRO1FBQ1QsWUFBTyxHQUFQLE9BQU8sQ0FBYTtRQUMzQyxXQUFNLEdBQU4sTUFBTSxDQUFRO1FBVmxCLGVBQVUsR0FBVSxFQUFFLENBQUM7UUFDdkIsZUFBVSxHQUFHLEVBQUUsQ0FBQztRQUNoQixtQkFBYyxHQUFHLElBQUksQ0FBQyxDQUFDLFlBQVk7UUFVdkMsSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDO1FBQ3RCLElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQztJQUMxQixDQUFDO0lBRUQsU0FBUyxDQUFDLEtBQVU7UUFDaEIsTUFBTSxJQUFJ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Y3QsIEluamVjdGFibGUsIFBMQVRGT1JNX0lEIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEh0dHBDbGllbnQgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XHJcbmltcG9ydCB7IGludGVydmFsIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IERPQ1VNRU5ULCBpc1BsYXRmb3JtQnJvd3NlciB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XHJcbmltcG9ydCB7IFN0b3JhZ2VTZXJ2aWNlU2VydmljZSB9IGZyb20gJy4vc3RvcmFnZS5zZXJ2aWNlJztcclxuaW1wb3J0IHsgQVBJX1VSTCB9IGZyb20gJy4uL3Rva2Vucy9hcGktdG9rZW4nO1xyXG5pbXBvcnQgeyBVc2VyIH0gZnJvbSAnLi4vZWNvbW1lcmNlL3N0eWxlcy91c2VyLm1vZGFsJztcclxuaW1wb3J0IHsgU3RvcmFnZUxpa2UgfSBmcm9tICcuLi9zZXJ2aWNlcy9zdG9yYWdlLWxpa2UnO1xyXG5pbXBvcnQgeyBMT0NBTF9TVE9SQUdFIH0gZnJvbSAnLi4vc2VydmljZXMvbG9jYWwtc3RvcmFnZS50b2tlbic7XHJcbmltcG9ydCB7IFJvdXRlciB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XHJcblxyXG5ASW5qZWN0YWJsZSh7IHByb3ZpZGVkSW46ICdyb290JyB9KVxyXG5leHBvcnQgY2xhc3MgQW5hbHl0aWNzU2VydmljZSB7XHJcblxyXG4gICAgcHJpdmF0ZSBldmVudFF1ZXVlOiBhbnlbXSA9IFtdO1xyXG4gICAgcHJpdmF0ZSBCQVRDSF9TSVpFID0gMTA7XHJcbiAgICBwcml2YXRlIEZMVVNIX0lOVEVSVkFMID0gNTAwMDsgLy8gNSBzZWNvbmRzXHJcblxyXG4gICAgY29uc3RydWN0b3IocHJpdmF0ZSBodHRwOiBIdHRwQ2xpZW50LFxyXG4gICAgICAgIEBJbmplY3QoUExBVEZPUk1fSUQpIHByaXZhdGUgcGxhdGZvcm1JZDogT2JqZWN0LFxyXG4gICAgICAgIEBJbmplY3QoRE9DVU1FTlQpIHByaXZhdGUgZG9jdW1lbnQ6IERvY3VtZW50LFxyXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgc3RvcmFnZVNlcnZpY2U6IFN0b3JhZ2VTZXJ2aWNlU2VydmljZSxcclxuICAgICAgICBASW5qZWN0KEFQSV9VUkwpIHByaXZhdGUgQVBJX1VSTDogc3RyaW5nLFxyXG4gICAgICAgIEBJbmplY3QoTE9DQUxfU1RPUkFHRSkgcHJpdmF0ZSBzdG9yYWdlOiBTdG9yYWdlTGlrZSxcclxuICAgICAgICBwcml2YXRlIHJvdXRlcjogUm91dGVyXHJcbiAgICApIHtcclxuICAgICAgICB0aGlzLnN0YXJ0QXV0b0ZsdXNoKCk7XHJcbiAgICAgICAgdGhpcy5saXN0ZW5Ub1VubG9hZCgpO1xyXG4gICAgfVxyXG5cclxuICAgIHRyYWNrVXNlcihldmVudDogYW55KSB7XHJcbiAgICAgICAgY29uc3QgdXNlcjogVXNlciB8IG51bGwgPSB0aGlzLnN0b3JhZ2VTZXJ2aWNlLmdldFVzZXIoKTtcclxuICAgICAgICBjb25zdCByZXF1ZXN0RnJvbSA9IHRoaXMuc3RvcmFnZS5nZXRJdGVtKCdSRVFVRVNUX0ZST00nKVxyXG5cclxuICAgICAgICBpZih1c2VyID09PSBudWxsIHx8IHJlcXVlc3RGcm9tID09PSAnRUNPTU1FUkNFJykge1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBjb25zdCBwYWdlID0gdGhpcy5yb3V0ZXIudXJsLnNwbGl0KCc/JylbMF07XHJcblxyXG4gICAgICAgIHRoaXMuZXZlbnRRdWV1ZS5wdXNoKHtcclxuICAgICAgICAgICAgYnVzaW5lc3NJZDogdGhpcy5zdG9yYWdlLmdldEl0ZW0oJ2JJZCcpIHx8ICcnLFxyXG4gICAgICAgICAgICBidXNpbmVzc05hbWU6IHRoaXMuc3RvcmFnZS5nZXRJdGVtKCdiTmFtZScpIHx8ICcnLCAgXHJcbiAgICAgICAgICAgIHVzZXJJZDogdXNlcj8udXNlcklkLFxyXG4gICAgICAgICAgICBjcmVhdGVkVGltZVN0YW1wOiBuZXcgRGF0ZSgpLnRvSVNPU3RyaW5nKCksXHJcbiAgICAgICAgICAgIHBhZ2U6IHBhZ2UsXHJcbiAgICAgICAgICAgIG1ldGFkYXRhOiBldmVudCxcclxuICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgaWYgKHRoaXMuZXZlbnRRdWV1ZS5sZW5ndGggPj0gdGhpcy5CQVRDSF9TSVpFKSB7XHJcbiAgICAgICAgICAgIHRoaXMuZmx1c2goKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBzdGFydEF1dG9GbHVzaCgpIHtcclxuICAgICAgICBpbnRlcnZhbCh0aGlzLkZMVVNIX0lOVEVSVkFMKS5zdWJzY3JpYmUoKCkgPT4ge1xyXG4gICAgICAgICAgICBpZiAodGhpcy5ldmVudFF1ZXVlLmxlbmd0aCA+IDApIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuZmx1c2goKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgZmx1c2goKSB7XHJcbiAgICAgICAgY29uc3QgZXZlbnRzVG9TZW5kID0gWy4uLnRoaXMuZXZlbnRRdWV1ZV07XHJcbiAgICAgICAgdGhpcy5ldmVudFF1ZXVlID0gW107XHJcblxyXG4gICAgICAgIHRoaXMuaHR0cC5wb3N0KHRoaXMuQVBJX1VSTCArICdlY29tbWVyY2UvYW5hbHl0aWNzL2JhdGNoJywgZXZlbnRzVG9TZW5kKVxyXG4gICAgICAgICAgICAuc3Vic2NyaWJlKHsgZXJyb3I6ICgpID0+IHsgfSB9KTtcclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIGxpc3RlblRvVW5sb2FkKCkge1xyXG4gICAgICAgIGlmIChpc1BsYXRmb3JtQnJvd3Nlcih0aGlzLnBsYXRmb3JtSWQpKSB7XHJcbiAgICAgICAgICAgIHRoaXMuZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigndmlzaWJpbGl0eWNoYW5nZScsICgpID0+IHtcclxuICAgICAgICAgICAgICAgIGlmICh0aGlzLmRvY3VtZW50LnZpc2liaWxpdHlTdGF0ZSA9PT0gJ2hpZGRlbicgJiYgdGhpcy5ldmVudFF1ZXVlLmxlbmd0aCA+IDApIHtcclxuICAgICAgICAgICAgICAgICAgICBuYXZpZ2F0b3Iuc2VuZEJlYWNvbihcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5BUElfVVJMICsgJ2Vjb21tZXJjZS9hbmFseXRpY3MvYmF0Y2gnLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBKU09OLnN0cmluZ2lmeSh0aGlzLmV2ZW50UXVldWUpXHJcbiAgICAgICAgICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG59Il19
|
|
145
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYW5hbHl0aWNzLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zaW1wby11aS9zcmMvbGliL3NlcnZpY2VzL2FuYWx5dGljcy5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLFdBQVcsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUVoRSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ2hDLE9BQU8sRUFBRSxRQUFRLEVBQXFCLE1BQU0saUJBQWlCLENBQUM7QUFFOUQsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBRzlDLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUNoRSxPQUFPLEVBQUUsYUFBYSxFQUFVLE1BQU0saUJBQWlCLENBQUM7Ozs7O0FBR3hELE1BQU0sT0FBTyxnQkFBZ0I7SUFZekIsWUFBb0IsSUFBZ0IsRUFDSCxVQUFrQixFQUNyQixRQUFrQixFQUMzQixjQUFxQyxFQUM3QixPQUFlLEVBQ1QsT0FBb0IsRUFDM0MsTUFBYztRQU5OLFNBQUksR0FBSixJQUFJLENBQVk7UUFDSCxlQUFVLEdBQVYsVUFBVSxDQUFRO1FBQ3JCLGFBQVEsR0FBUixRQUFRLENBQVU7UUFDM0IsbUJBQWMsR0FBZCxjQUFjLENBQXVCO1FBQzdCLFlBQU8sR0FBUCxPQUFPLENBQVE7UUFDVCxZQUFPLEdBQVAsT0FBTyxDQUFhO1FBQzNDLFdBQU0sR0FBTixNQUFNLENBQVE7UUFoQmxCLGVBQVUsR0FBVSxFQUFFLENBQUM7UUFDdkIsZUFBVSxHQUFHLEVBQUUsQ0FBQztRQUNoQixtQkFBYyxHQUFHLElBQUksQ0FBQyxDQUFDLFlBQVk7UUFFM0MsZ0NBQWdDO1FBQ3hCLGdCQUFXLEdBQUcsRUFBRSxDQUFDO1FBQ2pCLDJCQUFzQixHQUFRLElBQUksQ0FBQztRQUNuQyxx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QixNQUFNOzJCQUFDLFdBQVc7OzBCQUNsQixNQUFNOzJCQUFDLFFBQVE7OzBCQUVmLE1BQU07MkJBQUMsT0FBTzs7MEJBQ2QsTUFBTTsyQkFBQyxhQUFhIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0LCBJbmplY3RhYmxlLCBQTEFURk9STV9JRCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBIdHRwQ2xpZW50IH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xyXG5pbXBvcnQgeyBpbnRlcnZhbCB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBET0NVTUVOVCwgaXNQbGF0Zm9ybUJyb3dzZXIgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xyXG5pbXBvcnQgeyBTdG9yYWdlU2VydmljZVNlcnZpY2UgfSBmcm9tICcuL3N0b3JhZ2Uuc2VydmljZSc7XHJcbmltcG9ydCB7IEFQSV9VUkwgfSBmcm9tICcuLi90b2tlbnMvYXBpLXRva2VuJztcclxuaW1wb3J0IHsgVXNlciB9IGZyb20gJy4uL2Vjb21tZXJjZS9zdHlsZXMvdXNlci5tb2RhbCc7XHJcbmltcG9ydCB7IFN0b3JhZ2VMaWtlIH0gZnJvbSAnLi4vc2VydmljZXMvc3RvcmFnZS1saWtlJztcclxuaW1wb3J0IHsgTE9DQUxfU1RPUkFHRSB9IGZyb20gJy4uL3NlcnZpY2VzL2xvY2FsLXN0b3JhZ2UudG9rZW4nO1xyXG5pbXBvcnQgeyBOYXZpZ2F0aW9uRW5kLCBSb3V0ZXIgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xyXG5cclxuQEluamVjdGFibGUoeyBwcm92aWRlZEluOiAncm9vdCcgfSlcclxuZXhwb3J0IGNsYXNzIEFuYWx5dGljc1NlcnZpY2Uge1xyXG5cclxuICAgIHByaXZhdGUgZXZlbnRRdWV1ZTogYW55W10gPSBbXTtcclxuICAgIHByaXZhdGUgQkFUQ0hfU0laRSA9IDEwO1xyXG4gICAgcHJpdmF0ZSBGTFVTSF9JTlRFUlZBTCA9IDUwMDA7IC8vIDUgc2Vjb25kc1xyXG5cclxuICAgIC8vID09PT09IER1cmF0aW9uIFRyYWNraW5nID09PT09XHJcbiAgICBwcml2YXRlIGN1cnJlbnRQYWdlID0gJyc7XHJcbiAgICBwcml2YXRlIGN1cnJlbnRDb250ZXh0TWV0YWRhdGE6IGFueSA9IG51bGw7XHJcbiAgICBwcml2YXRlIGNvbnRleHRTdGFydFRpbWU6IG51bWJlciB8IG51bGwgPSBudWxsO1xyXG4gICAgcHJpdmF0ZSBjb250ZXh0QWN0aXZlVGltZSA9IDA7XHJcblxyXG4gICAgY29uc3RydWN0b3IocHJpdmF0ZSBodHRwOiBIdHRwQ2xpZW50LFxyXG4gICAgICAgIEBJbmplY3QoUExBVEZPUk1fSUQpIHByaXZhdGUgcGxhdGZvcm1JZDogT2JqZWN0LFxyXG4gICAgICAgIEBJbmplY3QoRE9DVU1FTlQpIHByaXZhdGUgZG9jdW1lbnQ6IERvY3VtZW50LFxyXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgc3RvcmFnZVNlcnZpY2U6IFN0b3JhZ2VTZXJ2aWNlU2VydmljZSxcclxuICAgICAgICBASW5qZWN0KEFQSV9VUkwpIHByaXZhdGUgQVBJX1VSTDogc3RyaW5nLFxyXG4gICAgICAgIEBJbmplY3QoTE9DQUxfU1RPUkFHRSkgcHJpdmF0ZSBzdG9yYWdlOiBTdG9yYWdlTGlrZSxcclxuICAgICAgICBwcml2YXRlIHJvdXRlcjogUm91dGVyXHJcbiAgICApIHtcclxuICAgICAgICB0aGlzLnN0YXJ0QXV0b0ZsdXNoKCk7XHJcbiAgICAgICAgdGhpcy5saXN0ZW5Ub1VubG9hZCgpO1xyXG4gICAgICAgIHRoaXMubGlzdGVuVG9Sb3V0ZUNoYW5nZSgpO1xyXG4gICAgfVxyXG5cclxuICAgIHN0YXJ0TmV3Q29udGV4dChtZXRhZGF0YTogYW55KSB7XHJcbiAgICAgICAgdGhpcy5jbG9zZUN1cnJlbnRDb250ZXh0KCk7ICAgLy8gY2xvc2UgcHJldmlvdXMgZmlsdGVyIHNlc3Npb25cclxuXHJcbiAgICAgICAgdGhpcy5jdXJyZW50Q29udGV4dE1ldGFkYXRhID0gbWV0YWRhdGE7XHJcbiAgICAgICAgdGhpcy5jb250ZXh0U3RhcnRUaW1lID0gRGF0ZS5ub3coKTtcclxuICAgICAgICB0aGlzLmNvbnRleHRBY3RpdmVUaW1lID0gMDtcclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIGNsb3NlQ3VycmVudENvbnRleHQodXNlQmVhY29uOiBib29sZWFuID0gZmFsc2UpIHtcclxuXHJcbiAgICAgICAgaWYgKCF0aGlzLmN1cnJlbnRDb250ZXh0TWV0YWRhdGEpIHJldHVybjtcclxuXHJcbiAgICAgICAgaWYgKHRoaXMuY29udGV4dFN0YXJ0VGltZSkge1xyXG4gICAgICAgICAgICB0aGlzLmNvbnRleHRBY3RpdmVUaW1lICs9IERhdGUubm93KCkgLSB0aGlzLmNvbnRleHRTdGFydFRpbWU7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBjb25zdCB1c2VyOiBVc2VyIHwgbnVsbCA9IHRoaXMuc3RvcmFnZVNlcnZpY2UuZ2V0VXNlcigpO1xyXG4gICAgICAgIGNvbnN0IHJlcXVlc3RGcm9tID0gdGhpcy5zdG9yYWdlLmdldEl0ZW0oJ1JFUVVFU1RfRlJPTScpO1xyXG5cclxuICAgICAgICBpZiAoIXVzZXIgfHwgcmVxdWVzdEZyb20gPT09ICdFQ09NTUVSQ0UnKSByZXR1cm47XHJcblxyXG4gICAgICAgIGNvbnN0IGV2ZW50ID0ge1xyXG4gICAgICAgICAgICBidXNpbmVzc0lkOiB0aGlzLnN0b3JhZ2UuZ2V0SXRlbSgnYklkJykgfHwgJycsXHJcbiAgICAgICAgICAgIGJ1c2luZXNzTmFtZTogdGhpcy5zdG9yYWdlLmdldEl0ZW0oJ2JOYW1lJykgfHwgJycsXHJcbiAgICAgICAgICAgIHVzZXJJZDogdXNlci51c2VySWQsXHJcbiAgICAgICAgICAgIGNyZWF0ZWRUaW1lU3RhbXA6IG5ldyBEYXRlKCkudG9JU09TdHJpbmcoKSxcclxuICAgICAgICAgICAgcGFnZTogdGhpcy5jdXJyZW50UGFnZSxcclxuICAgICAgICAgICAgZHVyYXRpb246IHRoaXMuY29udGV4dEFjdGl2ZVRpbWUsXHJcbiAgICAgICAgICAgIG1ldGFkYXRhOiB0aGlzLmN1cnJlbnRDb250ZXh0TWV0YWRhdGFcclxuICAgICAgICB9O1xyXG5cclxuICAgICAgICBpZiAodXNlQmVhY29uICYmIG5hdmlnYXRvci5zZW5kQmVhY29uKSB7XHJcbiAgICAgICAgICAgIG5hdmlnYXRvci5zZW5kQmVhY29uKFxyXG4gICAgICAgICAgICAgICAgdGhpcy5BUElfVVJMICsgJ2Vjb21tZXJjZS9hbmFseXRpY3MvYmF0Y2gnLFxyXG4gICAgICAgICAgICAgICAgSlNPTi5zdHJpbmdpZnkoW2V2ZW50XSlcclxuICAgICAgICAgICAgKTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICB0aGlzLmV2ZW50UXVldWUucHVzaChldmVudCk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICB0aGlzLmN1cnJlbnRDb250ZXh0TWV0YWRhdGEgPSBudWxsO1xyXG4gICAgICAgIHRoaXMuY29udGV4dFN0YXJ0VGltZSA9IG51bGw7XHJcbiAgICAgICAgdGhpcy5jb250ZXh0QWN0aXZlVGltZSA9IDA7XHJcbiAgICB9XHJcblxyXG4gICAgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxyXG4gICAgLy8g8J+UpSBST1VURSBDSEFOR0UgTElTVEVORVJcclxuICAgIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cclxuICAgIHByaXZhdGUgbGlzdGVuVG9Sb3V0ZUNoYW5nZSgpIHtcclxuICAgICAgICB0aGlzLnJvdXRlci5ldmVudHMuc3Vic2NyaWJlKGV2ZW50ID0+IHtcclxuICAgICAgICAgICAgaWYgKGV2ZW50IGluc3RhbmNlb2YgTmF2aWdhdGlvbkVuZCkge1xyXG5cclxuICAgICAgICAgICAgICAgIC8vIENsb3NlIHByZXZpb3VzIHBhZ2UgY29udGV4dFxyXG4gICAgICAgICAgICAgICAgdGhpcy5jbG9zZUN1cnJlbnRDb250ZXh0KCk7XHJcblxyXG4gICAgICAgICAgICAgICAgdGhpcy5jdXJyZW50UGFnZSA9IHRoaXMucm91dGVyLnVybC5zcGxpdCgnPycpWzBdO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5jb250ZXh0U3RhcnRUaW1lID0gRGF0ZS5ub3coKTtcclxuICAgICAgICAgICAgICAgIHRoaXMuY29udGV4dEFjdGl2ZVRpbWUgPSAwO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgdHJhY2tVc2VyKGV2ZW50OiBhbnkpIHtcclxuICAgICAgICBjb25zdCB1c2VyOiBVc2VyIHwgbnVsbCA9IHRoaXMuc3RvcmFnZVNlcnZpY2UuZ2V0VXNlcigpO1xyXG4gICAgICAgIGNvbnN0IHJlcXVlc3RGcm9tID0gdGhpcy5zdG9yYWdlLmdldEl0ZW0oJ1JFUVVFU1RfRlJPTScpXHJcblxyXG4gICAgICAgIGlmICh1c2VyID09PSBudWxsIHx8IHJlcXVlc3RGcm9tID09PSAnRUNPTU1FUkNFJykge1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBjb25zdCBwYWdlID0gdGhpcy5yb3V0ZXIudXJsLnNwbGl0KCc/JylbMF07XHJcblxyXG4gICAgICAgIHRoaXMuZXZlbnRRdWV1ZS5wdXNoKHtcclxuICAgICAgICAgICAgYnVzaW5lc3NJZDogdGhpcy5zdG9yYWdlLmdldEl0ZW0oJ2JJZCcpIHx8ICcnLFxyXG4gICAgICAgICAgICBidXNpbmVzc05hbWU6IHRoaXMuc3RvcmFnZS5nZXRJdGVtKCdiTmFtZScpIHx8ICcnLFxyXG4gICAgICAgICAgICB1c2VySWQ6IHVzZXI/LnVzZXJJZCxcclxuICAgICAgICAgICAgY3JlYXRlZFRpbWVTdGFtcDogbmV3IERhdGUoKS50b0lTT1N0cmluZygpLFxyXG4gICAgICAgICAgICBwYWdlOiBwYWdlLFxyXG4gICAgICAgICAgICBtZXRhZGF0YTogZXZlbnQsXHJcbiAgICAgICAgfSk7XHJcblxyXG4gICAgICAgIGlmICh0aGlzLmV2ZW50UXVldWUubGVuZ3RoID49IHRoaXMuQkFUQ0hfU0laRSkge1xyXG4gICAgICAgICAgICB0aGlzLmZsdXNoKCk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgc3RhcnRBdXRvRmx1c2goKSB7XHJcbiAgICAgICAgaW50ZXJ2YWwodGhpcy5GTFVTSF9JTlRFUlZBTCkuc3Vic2NyaWJlKCgpID0+IHtcclxuICAgICAgICAgICAgaWYgKHRoaXMuZXZlbnRRdWV1ZS5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmZsdXNoKCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIGZsdXNoKCkge1xyXG4gICAgICAgIGNvbnN0IGV2ZW50c1RvU2VuZCA9IFsuLi50aGlzLmV2ZW50UXVldWVdO1xyXG4gICAgICAgIHRoaXMuZXZlbnRRdWV1ZSA9IFtdO1xyXG5cclxuICAgICAgICB0aGlzLmh0dHAucG9zdCh0aGlzLkFQSV9VUkwgKyAnZWNvbW1lcmNlL2FuYWx5dGljcy9iYXRjaCcsIGV2ZW50c1RvU2VuZClcclxuICAgICAgICAgICAgLnN1YnNjcmliZSh7IGVycm9yOiAoKSA9PiB7IH0gfSk7XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBsaXN0ZW5Ub1VubG9hZCgpIHtcclxuICAgICAgICB0aGlzLmRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ3Zpc2liaWxpdHljaGFuZ2UnLCAoKSA9PiB7XHJcblxyXG4gICAgICAgICAgICBpZiAodGhpcy5kb2N1bWVudC52aXNpYmlsaXR5U3RhdGUgPT09ICd2aXNpYmxlJykge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5jb250ZXh0U3RhcnRUaW1lID0gRGF0ZS5ub3coKTtcclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuXHJcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5jb250ZXh0U3RhcnRUaW1lKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jb250ZXh0QWN0aXZlVGltZSArPSBEYXRlLm5vdygpIC0gdGhpcy5jb250ZXh0U3RhcnRUaW1lO1xyXG4gICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgIHRoaXMuY2xvc2VDdXJyZW50Q29udGV4dCh0cnVlKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG59Il19
|
|
@@ -34,7 +34,7 @@ import * as i10$1 from '@angular/material/progress-spinner';
|
|
|
34
34
|
import { MatProgressSpinner, MatProgressSpinnerModule } from '@angular/material/progress-spinner';
|
|
35
35
|
import { CdkDrag, CdkDragPlaceholder, moveItemInArray } from '@angular/cdk/drag-drop';
|
|
36
36
|
import * as i2$2 from '@angular/router';
|
|
37
|
-
import { RouterLink } from '@angular/router';
|
|
37
|
+
import { RouterLink, NavigationEnd } from '@angular/router';
|
|
38
38
|
import * as i1$2 from '@angular/platform-browser';
|
|
39
39
|
import * as i7$1 from 'ngx-skeleton-loader';
|
|
40
40
|
import { NgxSkeletonLoaderModule } from 'ngx-skeleton-loader';
|
|
@@ -17692,8 +17692,63 @@ class AnalyticsService {
|
|
|
17692
17692
|
this.eventQueue = [];
|
|
17693
17693
|
this.BATCH_SIZE = 10;
|
|
17694
17694
|
this.FLUSH_INTERVAL = 5000; // 5 seconds
|
|
17695
|
+
// ===== Duration Tracking =====
|
|
17696
|
+
this.currentPage = '';
|
|
17697
|
+
this.currentContextMetadata = null;
|
|
17698
|
+
this.contextStartTime = null;
|
|
17699
|
+
this.contextActiveTime = 0;
|
|
17695
17700
|
this.startAutoFlush();
|
|
17696
17701
|
this.listenToUnload();
|
|
17702
|
+
this.listenToRouteChange();
|
|
17703
|
+
}
|
|
17704
|
+
startNewContext(metadata) {
|
|
17705
|
+
this.closeCurrentContext(); // close previous filter session
|
|
17706
|
+
this.currentContextMetadata = metadata;
|
|
17707
|
+
this.contextStartTime = Date.now();
|
|
17708
|
+
this.contextActiveTime = 0;
|
|
17709
|
+
}
|
|
17710
|
+
closeCurrentContext(useBeacon = false) {
|
|
17711
|
+
if (!this.currentContextMetadata)
|
|
17712
|
+
return;
|
|
17713
|
+
if (this.contextStartTime) {
|
|
17714
|
+
this.contextActiveTime += Date.now() - this.contextStartTime;
|
|
17715
|
+
}
|
|
17716
|
+
const user = this.storageService.getUser();
|
|
17717
|
+
const requestFrom = this.storage.getItem('REQUEST_FROM');
|
|
17718
|
+
if (!user || requestFrom === 'ECOMMERCE')
|
|
17719
|
+
return;
|
|
17720
|
+
const event = {
|
|
17721
|
+
businessId: this.storage.getItem('bId') || '',
|
|
17722
|
+
businessName: this.storage.getItem('bName') || '',
|
|
17723
|
+
userId: user.userId,
|
|
17724
|
+
createdTimeStamp: new Date().toISOString(),
|
|
17725
|
+
page: this.currentPage,
|
|
17726
|
+
duration: this.contextActiveTime,
|
|
17727
|
+
metadata: this.currentContextMetadata
|
|
17728
|
+
};
|
|
17729
|
+
if (useBeacon && navigator.sendBeacon) {
|
|
17730
|
+
navigator.sendBeacon(this.API_URL + 'ecommerce/analytics/batch', JSON.stringify([event]));
|
|
17731
|
+
}
|
|
17732
|
+
else {
|
|
17733
|
+
this.eventQueue.push(event);
|
|
17734
|
+
}
|
|
17735
|
+
this.currentContextMetadata = null;
|
|
17736
|
+
this.contextStartTime = null;
|
|
17737
|
+
this.contextActiveTime = 0;
|
|
17738
|
+
}
|
|
17739
|
+
// ===============================
|
|
17740
|
+
// 🔥 ROUTE CHANGE LISTENER
|
|
17741
|
+
// ===============================
|
|
17742
|
+
listenToRouteChange() {
|
|
17743
|
+
this.router.events.subscribe(event => {
|
|
17744
|
+
if (event instanceof NavigationEnd) {
|
|
17745
|
+
// Close previous page context
|
|
17746
|
+
this.closeCurrentContext();
|
|
17747
|
+
this.currentPage = this.router.url.split('?')[0];
|
|
17748
|
+
this.contextStartTime = Date.now();
|
|
17749
|
+
this.contextActiveTime = 0;
|
|
17750
|
+
}
|
|
17751
|
+
});
|
|
17697
17752
|
}
|
|
17698
17753
|
trackUser(event) {
|
|
17699
17754
|
const user = this.storageService.getUser();
|
|
@@ -17728,13 +17783,17 @@ class AnalyticsService {
|
|
|
17728
17783
|
.subscribe({ error: () => { } });
|
|
17729
17784
|
}
|
|
17730
17785
|
listenToUnload() {
|
|
17731
|
-
|
|
17732
|
-
this.document.
|
|
17733
|
-
|
|
17734
|
-
|
|
17786
|
+
this.document.addEventListener('visibilitychange', () => {
|
|
17787
|
+
if (this.document.visibilityState === 'visible') {
|
|
17788
|
+
this.contextStartTime = Date.now();
|
|
17789
|
+
}
|
|
17790
|
+
else {
|
|
17791
|
+
if (this.contextStartTime) {
|
|
17792
|
+
this.contextActiveTime += Date.now() - this.contextStartTime;
|
|
17735
17793
|
}
|
|
17736
|
-
|
|
17737
|
-
|
|
17794
|
+
this.closeCurrentContext(true);
|
|
17795
|
+
}
|
|
17796
|
+
});
|
|
17738
17797
|
}
|
|
17739
17798
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: AnalyticsService, deps: [{ token: i1.HttpClient }, { token: PLATFORM_ID }, { token: DOCUMENT }, { token: StorageServiceService }, { token: API_URL }, { token: LOCAL_STORAGE }, { token: i2$2.Router }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
17740
17799
|
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: AnalyticsService, providedIn: 'root' }); }
|
|
@@ -17885,7 +17944,7 @@ class ProductDescComponent extends BaseSection {
|
|
|
17885
17944
|
if (productId) {
|
|
17886
17945
|
this.isLoading = true;
|
|
17887
17946
|
// Tracking Analytics
|
|
17888
|
-
this.analyticsService.
|
|
17947
|
+
this.analyticsService.startNewContext({
|
|
17889
17948
|
'PRODUCT': productId
|
|
17890
17949
|
});
|
|
17891
17950
|
this.isItemAsFavorite = false;
|
|
@@ -19070,7 +19129,7 @@ class ProductListComponent extends BaseSection {
|
|
|
19070
19129
|
}
|
|
19071
19130
|
analyticsEvent['CATEGORIES'] = this.categories.filter(x => x.status).map(x => x.id);
|
|
19072
19131
|
analyticsEvent['COLLECTIONS'] = this.collections.filter(x => x.status).map(x => x.id);
|
|
19073
|
-
this.analyticsService.
|
|
19132
|
+
this.analyticsService.startNewContext(analyticsEvent);
|
|
19074
19133
|
}
|
|
19075
19134
|
getCategoriesAndCollection() {
|
|
19076
19135
|
forkJoin([
|