@esfaenza/extensions 12.2.8 → 12.2.12
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/bundles/esfaenza-extensions.umd.js +555 -58
- package/bundles/esfaenza-extensions.umd.js.map +1 -1
- package/esfaenza-extensions.d.ts +2 -0
- package/esfaenza-extensions.metadata.json +1 -1
- package/esm2015/esfaenza-extensions.js +3 -1
- package/esm2015/lib/models/ExtensionsModuleConfig.js +1 -1
- package/esm2015/lib/models/providers/base/BaseStorageProvider.js +25 -0
- package/esm2015/lib/models/providers/implementation/DefaultStorageProvider.js +79 -0
- package/esm2015/lib/models/session/base/BaseSessionRetriever.js +6 -0
- package/esm2015/lib/models/session/implementation/DefaultSessionRetriever.js +26 -0
- package/esm2015/lib/modules/extensions.full.module.js +11 -2
- package/esm2015/lib/services/extensions.exports.service.js +5 -5
- package/esm2015/lib/services/extensions.hashing.service.js +32 -11
- package/esm2015/lib/services/extensions.storage.service.js +58 -40
- package/esm2015/public-api.js +3 -1
- package/fesm2015/esfaenza-extensions.js +227 -55
- package/fesm2015/esfaenza-extensions.js.map +1 -1
- package/lib/models/ExtensionsModuleConfig.d.ts +11 -0
- package/lib/models/providers/base/BaseStorageProvider.d.ts +65 -0
- package/lib/models/providers/implementation/DefaultStorageProvider.d.ts +20 -0
- package/lib/models/session/base/BaseSessionRetriever.d.ts +11 -0
- package/lib/models/session/implementation/DefaultSessionRetriever.d.ts +18 -0
- package/lib/modules/extensions.full.module.d.ts +2 -0
- package/lib/services/extensions.hashing.service.d.ts +11 -3
- package/lib/services/extensions.storage.service.d.ts +29 -16
- package/package.json +7 -7
- package/public-api.d.ts +2 -0
|
@@ -1,9 +1,15 @@
|
|
|
1
1
|
// Angular
|
|
2
2
|
import { Injectable, Inject, Optional } from "@angular/core";
|
|
3
|
+
import { BaseStorageProvider } from "../models/providers/base/BaseStorageProvider";
|
|
4
|
+
import { BaseSessionRetriever } from "../models/session/base/BaseSessionRetriever";
|
|
3
5
|
// Modelli
|
|
4
6
|
import { APPSEARCH_PREFIX } from '../tokens';
|
|
7
|
+
import { tap, first } from "rxjs/operators";
|
|
5
8
|
/**
|
|
6
|
-
* Service che fornisce funzionalità di base per storicizzazione e recupero oggetti
|
|
9
|
+
* Service che fornisce funzionalità di base per storicizzazione e recupero oggetti dallo Storage Locale
|
|
10
|
+
*
|
|
11
|
+
* N.B: In ogni chiamata è presente l'operatore rxjs **first()** per far sì che a prescindere dall'implementazione utente/default gli
|
|
12
|
+
* observable effettuino l'unsubscribe automaticamente terminata la prima operazine
|
|
7
13
|
*/
|
|
8
14
|
export class StorageService {
|
|
9
15
|
/**
|
|
@@ -11,8 +17,10 @@ export class StorageService {
|
|
|
11
17
|
*
|
|
12
18
|
* @ignore
|
|
13
19
|
*/
|
|
14
|
-
constructor(APPSEARCH_PREFIX) {
|
|
20
|
+
constructor(APPSEARCH_PREFIX, _session, _storage) {
|
|
15
21
|
this.APPSEARCH_PREFIX = APPSEARCH_PREFIX;
|
|
22
|
+
this._session = _session;
|
|
23
|
+
this._storage = _storage;
|
|
16
24
|
}
|
|
17
25
|
/**
|
|
18
26
|
* Inserisce un oggetto che funga da contenitore di oggetti nel local storage, ripulendone gli oggetti (supponendo che sia una view di ricerca) e marcandolo come
|
|
@@ -21,62 +29,72 @@ export class StorageService {
|
|
|
21
29
|
* @param {string} storeName Chiave del localStorage in cui storicizzare l'oggetto **itemsContainer**
|
|
22
30
|
* @param {{ items: any[] }} itemsContainer Oggetto da storicizzare
|
|
23
31
|
*/
|
|
24
|
-
setItem(storeName,
|
|
25
|
-
var
|
|
26
|
-
//
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
}
|
|
33
|
-
catch (e) {
|
|
34
|
-
console.warn("Spazio del local Storage insufficiente per salvare la view. Fallback a cleanup e salvataggio");
|
|
35
|
-
//Pulisco tutte le view con nome che parta per "Hot"
|
|
36
|
-
for (let key in localStorage) {
|
|
37
|
-
if (localStorage.hasOwnProperty(key) && key.startsWith((_a = this.APPSEARCH_PREFIX) !== null && _a !== void 0 ? _a : 'Hot'))
|
|
38
|
-
delete localStorage[key];
|
|
39
|
-
}
|
|
40
|
-
try {
|
|
41
|
-
localStorage.setItem(storeName, JSON.stringify(item));
|
|
42
|
-
}
|
|
43
|
-
catch (e) {
|
|
44
|
-
console.error("Spazio del local Storage insufficiente per salvare i risultati di ricerca con solo filtri. Non salvo nulla");
|
|
45
|
-
}
|
|
32
|
+
setItem(storeName, item) {
|
|
33
|
+
var finalItem;
|
|
34
|
+
//Se sto salvando un oggetto con "items" e "page" vuol dire che è un appsearch, la ripulisco
|
|
35
|
+
if (item.items && item.page) {
|
|
36
|
+
finalItem = JSON.parse(JSON.stringify(item));
|
|
37
|
+
finalItem.items = [];
|
|
38
|
+
finalItem.savedstate = true;
|
|
39
|
+
finalItem.savedprefix = this.APPSEARCH_PREFIX || 'Hot';
|
|
46
40
|
}
|
|
41
|
+
else
|
|
42
|
+
finalItem = item;
|
|
43
|
+
return this._storage.setItem(storeName, finalItem).pipe(first(), tap(res => {
|
|
44
|
+
if (res == false)
|
|
45
|
+
console.error("Impossibile effettuare il salvataggio dell'oggetto all'interno dello Storage Locale per la chiave " + storeName);
|
|
46
|
+
}));
|
|
47
47
|
}
|
|
48
48
|
/**
|
|
49
|
-
*
|
|
49
|
+
* Recupera un oggetto dallo Storage Locale
|
|
50
|
+
*
|
|
51
|
+
* @param {string} storeName Chiave del localStorage da cui recuperare l'oggetto
|
|
50
52
|
*
|
|
51
|
-
* @
|
|
52
|
-
* @param {any} item Oggetto da storicizzare
|
|
53
|
+
* @returns {any} Oggetto recuperato e deserializzato
|
|
53
54
|
*/
|
|
54
|
-
|
|
55
|
-
|
|
55
|
+
getItem(storeName) {
|
|
56
|
+
return this._storage.getItem(storeName).pipe(first(), tap(res => {
|
|
57
|
+
if (res == null)
|
|
58
|
+
console.warn("Impossibile ottenere l'oggetto salvato con chiave " + storeName);
|
|
59
|
+
}));
|
|
56
60
|
}
|
|
57
61
|
/**
|
|
58
|
-
*
|
|
59
|
-
*
|
|
60
|
-
* @param {string} storeName Chiave del localStorage da cui recuperare l'oggetto
|
|
62
|
+
* Ripulisce lo Storage Locale
|
|
61
63
|
*
|
|
62
|
-
* @
|
|
64
|
+
* @param {string} storeName Chiave del localStorage da ripulire
|
|
63
65
|
*/
|
|
64
|
-
|
|
65
|
-
return
|
|
66
|
+
removeItem(storeName) {
|
|
67
|
+
return this._storage.removeItem(storeName).pipe(first(), tap(res => {
|
|
68
|
+
if (res == false)
|
|
69
|
+
console.warn("Impossibile rimuovere l'oggetto salvato con chiave " + storeName);
|
|
70
|
+
}));
|
|
66
71
|
}
|
|
67
72
|
/**
|
|
68
|
-
* Ripulisce
|
|
73
|
+
* Ripulisce lo Storage Locale di ogni cosa salvata
|
|
69
74
|
*
|
|
70
75
|
* @param {string} storeName Chiave del localStorage da ripulire
|
|
71
76
|
*/
|
|
72
|
-
clear(
|
|
73
|
-
|
|
77
|
+
clear() {
|
|
78
|
+
return this._storage.clear().pipe(first(), tap(res => {
|
|
79
|
+
if (res == false)
|
|
80
|
+
console.warn("Impossibile ripulire lo Storage Locale");
|
|
81
|
+
}));
|
|
82
|
+
}
|
|
83
|
+
/**
|
|
84
|
+
* Restituisce tutte le chiavi-valore associate alla sessione corrente
|
|
85
|
+
*
|
|
86
|
+
* @returns {Observable<{ [index: string]: string; }>} Risultato della query
|
|
87
|
+
*/
|
|
88
|
+
getAll() {
|
|
89
|
+
return this._storage.getAll().pipe(first());
|
|
74
90
|
}
|
|
75
91
|
}
|
|
76
92
|
StorageService.decorators = [
|
|
77
93
|
{ type: Injectable }
|
|
78
94
|
];
|
|
79
95
|
StorageService.ctorParameters = () => [
|
|
80
|
-
{ type: String, decorators: [{ type: Optional }, { type: Inject, args: [APPSEARCH_PREFIX,] }] }
|
|
96
|
+
{ type: String, decorators: [{ type: Optional }, { type: Inject, args: [APPSEARCH_PREFIX,] }] },
|
|
97
|
+
{ type: BaseSessionRetriever },
|
|
98
|
+
{ type: BaseStorageProvider }
|
|
81
99
|
];
|
|
82
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
100
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXh0ZW5zaW9ucy5zdG9yYWdlLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9leHRlbnNpb25zL3NyYy9saWIvc2VydmljZXMvZXh0ZW5zaW9ucy5zdG9yYWdlLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsVUFBVTtBQUNWLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM3RCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSw4Q0FBOEMsQ0FBQztBQUNuRixPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSw2Q0FBNkMsQ0FBQztBQUVuRixVQUFVO0FBQ1YsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sV0FBVyxDQUFDO0FBSTdDLE9BQU8sRUFBRSxHQUFHLEVBQUUsS0FBSyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFNUM7Ozs7O0dBS0c7QUFFSCxNQUFNLE9BQU8sY0FBYztJQUV2Qjs7OztPQUlHO0lBQ0gsWUFBMEQsZ0JBQXdCLEVBQVUsUUFBOEIsRUFBVSxRQUE2QjtRQUF2RyxxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQVE7UUFBVSxhQUFRLEdBQVIsUUFBUSxDQUFzQjtRQUFVLGFBQVEsR0FBUixRQUFRLENBQXFCO0lBQUksQ0FBQztJQUV0Szs7Ozs7O09BTUc7SUFDSSxPQUFPLENBQUksU0FBaUIsRUFBRSxJQUFPO1FBQ3hDLElBQUksU0FBYyxDQUFDO1FBQ25CLDRGQUE0RjtRQUM1RixJQUFVLElBQUssQ0FBQyxLQUFLLElBQVUsSUFBSyxDQUFDLElBQUksRUFBRTtZQUN2QyxTQUFTLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7WUFDN0MsU0FBUyxDQUFDLEtBQUssR0FBRyxFQUFFLENBQUM7WUFDckIsU0FBUyxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUM7WUFDdEIsU0FBVSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUMsZ0JBQWdCLElBQUksS0FBSyxDQUFDO1NBQ2pFOztZQUVHLFNBQVMsR0FBRyxJQUFJLENBQUM7UUFFckIsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxTQUFTLEVBQUUsU0FBUyxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxFQUFFLEdBQUcsQ0FBQyxHQUFHLENBQUMsRUFBRTtZQUN2RSxJQUFJLEdBQUcsSUFBSSxLQUFLO2dCQUNaLE9BQU8sQ0FBQyxLQUFLLENBQUMsb0dBQW9HLEdBQUcsU0FBUyxDQUFDLENBQUM7UUFDeEksQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNSLENBQUM7SUFFRDs7Ozs7O09BTUc7SUFDSSxPQUFPLENBQUksU0FBaUI7UUFDL0IsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBSSxTQUFTLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLEVBQUUsR0FBRyxDQUFDLEdBQUcsQ0FBQyxFQUFFO1lBQy9ELElBQUksR0FBRyxJQUFJLElBQUk7Z0JBQ1gsT0FBTyxDQUFDLElBQUksQ0FBQyxvREFBb0QsR0FBRyxTQUFTLENBQUMsQ0FBQztRQUN2RixDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ1IsQ0FBQztJQUVEOzs7O09BSUc7SUFDSSxVQUFVLENBQUMsU0FBaUI7UUFDL0IsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDLFVBQVUsQ0FBQyxTQUFTLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLEVBQUUsR0FBRyxDQUFDLEdBQUcsQ0FBQyxFQUFFO1lBQy9ELElBQUksR0FBRyxJQUFJLEtBQUs7Z0JBQ1osT0FBTyxDQUFDLElBQUksQ0FBQyxxREFBcUQsR0FBRyxTQUFTLENBQUMsQ0FBQztRQUN4RixDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ1IsQ0FBQztJQUVEOzs7O09BSUc7SUFDSSxLQUFLO1FBQ1IsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDLEtBQUssRUFBRSxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsRUFBRSxHQUFHLENBQUMsR0FBRyxDQUFDLEVBQUU7WUFDakQsSUFBSSxHQUFHLElBQUksS0FBSztnQkFDWixPQUFPLENBQUMsSUFBSSxDQUFDLHdDQUF3QyxDQUFDLENBQUM7UUFDL0QsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNSLENBQUM7SUFFRDs7OztPQUlHO0lBQ0ksTUFBTTtRQUNULE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQztJQUNoRCxDQUFDOzs7WUFoRkosVUFBVTs7O3lDQVFNLFFBQVEsWUFBSSxNQUFNLFNBQUMsZ0JBQWdCO1lBdkIzQyxvQkFBb0I7WUFEcEIsbUJBQW1CIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQW5ndWxhclxyXG5pbXBvcnQgeyBJbmplY3RhYmxlLCBJbmplY3QsIE9wdGlvbmFsIH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcclxuaW1wb3J0IHsgQmFzZVN0b3JhZ2VQcm92aWRlciB9IGZyb20gXCIuLi9tb2RlbHMvcHJvdmlkZXJzL2Jhc2UvQmFzZVN0b3JhZ2VQcm92aWRlclwiO1xyXG5pbXBvcnQgeyBCYXNlU2Vzc2lvblJldHJpZXZlciB9IGZyb20gXCIuLi9tb2RlbHMvc2Vzc2lvbi9iYXNlL0Jhc2VTZXNzaW9uUmV0cmlldmVyXCI7XHJcblxyXG4vLyBNb2RlbGxpXHJcbmltcG9ydCB7IEFQUFNFQVJDSF9QUkVGSVggfSBmcm9tICcuLi90b2tlbnMnO1xyXG5cclxuLy8gUlhKU1xyXG5pbXBvcnQgeyBPYnNlcnZhYmxlIH0gZnJvbSBcInJ4anNcIjtcclxuaW1wb3J0IHsgdGFwLCBmaXJzdCB9IGZyb20gXCJyeGpzL29wZXJhdG9yc1wiO1xyXG5cclxuLyoqXHJcbiAqIFNlcnZpY2UgY2hlIGZvcm5pc2NlIGZ1bnppb25hbGl0w6AgZGkgYmFzZSBwZXIgc3RvcmljaXp6YXppb25lIGUgcmVjdXBlcm8gb2dnZXR0aSBkYWxsbyBTdG9yYWdlIExvY2FsZVxyXG4gKiBcclxuICogTi5COiBJbiBvZ25pIGNoaWFtYXRhIMOoIHByZXNlbnRlIGwnb3BlcmF0b3JlIHJ4anMgKipmaXJzdCgpKiogcGVyIGZhciBzw6wgY2hlIGEgcHJlc2NpbmRlcmUgZGFsbCdpbXBsZW1lbnRhemlvbmUgdXRlbnRlL2RlZmF1bHQgZ2xpIFxyXG4gKiBvYnNlcnZhYmxlIGVmZmV0dHVpbm8gbCd1bnN1YnNjcmliZSBhdXRvbWF0aWNhbWVudGUgdGVybWluYXRhIGxhIHByaW1hIG9wZXJhemluZVxyXG4gKi9cclxuQEluamVjdGFibGUoKVxyXG5leHBvcnQgY2xhc3MgU3RvcmFnZVNlcnZpY2Uge1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogQ29zdHJ1dHRvcmVcclxuICAgICAqIFxyXG4gICAgICogQGlnbm9yZVxyXG4gICAgICovXHJcbiAgICBjb25zdHJ1Y3RvcihAT3B0aW9uYWwoKSBASW5qZWN0KEFQUFNFQVJDSF9QUkVGSVgpIHByaXZhdGUgQVBQU0VBUkNIX1BSRUZJWDogc3RyaW5nLCBwcml2YXRlIF9zZXNzaW9uOiBCYXNlU2Vzc2lvblJldHJpZXZlciwgcHJpdmF0ZSBfc3RvcmFnZTogQmFzZVN0b3JhZ2VQcm92aWRlcikgeyB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBJbnNlcmlzY2UgdW4gb2dnZXR0byBjaGUgZnVuZ2EgZGEgY29udGVuaXRvcmUgZGkgb2dnZXR0aSBuZWwgbG9jYWwgc3RvcmFnZSwgcmlwdWxlbmRvbmUgZ2xpIG9nZ2V0dGkgKHN1cHBvbmVuZG8gY2hlIHNpYSB1bmEgdmlldyBkaSByaWNlcmNhKSBlIG1hcmNhbmRvbG8gY29tZSBcclxuICAgICAqIHNhbHZhdG8sIGluIG1vZG8gY2hlIHF1YW5kbyB2aWVuZSByZWN1cGVyYXRvIGlsIHNpc3RlbWEgbm9uIHBlbnNpIGNoZSBzaWEgdW4gb2dnZXR0byB2dW90byBtYSBjaGUgc2FwcGlhIGNoZSBnbGkgb2dnZXR0aSBzb24gc3RhdGkgcmlwdWxpdGkgcGVyIHJpc3Bhcm1pYXJlIHNwYXppb1xyXG4gICAgICogXHJcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gc3RvcmVOYW1lIENoaWF2ZSBkZWwgbG9jYWxTdG9yYWdlIGluIGN1aSBzdG9yaWNpenphcmUgbCdvZ2dldHRvICoqaXRlbXNDb250YWluZXIqKlxyXG4gICAgICogQHBhcmFtIHt7IGl0ZW1zOiBhbnlbXSB9fSBpdGVtc0NvbnRhaW5lciBPZ2dldHRvIGRhIHN0b3JpY2l6emFyZVxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgc2V0SXRlbTxUPihzdG9yZU5hbWU6IHN0cmluZywgaXRlbTogVCk6IE9ic2VydmFibGU8Ym9vbGVhbj4ge1xyXG4gICAgICAgIHZhciBmaW5hbEl0ZW06IGFueTtcclxuICAgICAgICAvL1NlIHN0byBzYWx2YW5kbyB1biBvZ2dldHRvIGNvbiBcIml0ZW1zXCIgZSBcInBhZ2VcIiB2dW9sIGRpcmUgY2hlIMOoIHVuIGFwcHNlYXJjaCwgbGEgcmlwdWxpc2NvXHJcbiAgICAgICAgaWYgKCg8YW55Pml0ZW0pLml0ZW1zICYmICg8YW55Pml0ZW0pLnBhZ2UpIHtcclxuICAgICAgICAgICAgZmluYWxJdGVtID0gSlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeShpdGVtKSk7XHJcbiAgICAgICAgICAgIGZpbmFsSXRlbS5pdGVtcyA9IFtdO1xyXG4gICAgICAgICAgICBmaW5hbEl0ZW0uc2F2ZWRzdGF0ZSA9IHRydWU7XHJcbiAgICAgICAgICAgICg8YW55PmZpbmFsSXRlbSkuc2F2ZWRwcmVmaXggPSB0aGlzLkFQUFNFQVJDSF9QUkVGSVggfHwgJ0hvdCc7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2VcclxuICAgICAgICAgICAgZmluYWxJdGVtID0gaXRlbTtcclxuXHJcbiAgICAgICAgcmV0dXJuIHRoaXMuX3N0b3JhZ2Uuc2V0SXRlbShzdG9yZU5hbWUsIGZpbmFsSXRlbSkucGlwZShmaXJzdCgpLCB0YXAocmVzID0+IHtcclxuICAgICAgICAgICAgaWYgKHJlcyA9PSBmYWxzZSlcclxuICAgICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoXCJJbXBvc3NpYmlsZSBlZmZldHR1YXJlIGlsIHNhbHZhdGFnZ2lvIGRlbGwnb2dnZXR0byBhbGwnaW50ZXJubyBkZWxsbyBTdG9yYWdlIExvY2FsZSBwZXIgbGEgY2hpYXZlIFwiICsgc3RvcmVOYW1lKTtcclxuICAgICAgICB9KSk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBSZWN1cGVyYSB1biBvZ2dldHRvIGRhbGxvIFN0b3JhZ2UgTG9jYWxlXHJcbiAgICAgKiBcclxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBzdG9yZU5hbWUgQ2hpYXZlIGRlbCBsb2NhbFN0b3JhZ2UgZGEgY3VpIHJlY3VwZXJhcmUgbCdvZ2dldHRvXHJcbiAgICAgKiBcclxuICAgICAqIEByZXR1cm5zIHthbnl9IE9nZ2V0dG8gcmVjdXBlcmF0byBlIGRlc2VyaWFsaXp6YXRvXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBnZXRJdGVtPFQ+KHN0b3JlTmFtZTogc3RyaW5nKTogT2JzZXJ2YWJsZTxUPiB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuX3N0b3JhZ2UuZ2V0SXRlbTxUPihzdG9yZU5hbWUpLnBpcGUoZmlyc3QoKSwgdGFwKHJlcyA9PiB7XHJcbiAgICAgICAgICAgIGlmIChyZXMgPT0gbnVsbClcclxuICAgICAgICAgICAgICAgIGNvbnNvbGUud2FybihcIkltcG9zc2liaWxlIG90dGVuZXJlIGwnb2dnZXR0byBzYWx2YXRvIGNvbiBjaGlhdmUgXCIgKyBzdG9yZU5hbWUpO1xyXG4gICAgICAgIH0pKTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIFJpcHVsaXNjZSBsbyBTdG9yYWdlIExvY2FsZSBcclxuICAgICAqIFxyXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IHN0b3JlTmFtZSBDaGlhdmUgZGVsIGxvY2FsU3RvcmFnZSBkYSByaXB1bGlyZVxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgcmVtb3ZlSXRlbShzdG9yZU5hbWU6IHN0cmluZyk6IE9ic2VydmFibGU8Ym9vbGVhbj4ge1xyXG4gICAgICAgIHJldHVybiB0aGlzLl9zdG9yYWdlLnJlbW92ZUl0ZW0oc3RvcmVOYW1lKS5waXBlKGZpcnN0KCksIHRhcChyZXMgPT4ge1xyXG4gICAgICAgICAgICBpZiAocmVzID09IGZhbHNlKVxyXG4gICAgICAgICAgICAgICAgY29uc29sZS53YXJuKFwiSW1wb3NzaWJpbGUgcmltdW92ZXJlIGwnb2dnZXR0byBzYWx2YXRvIGNvbiBjaGlhdmUgXCIgKyBzdG9yZU5hbWUpO1xyXG4gICAgICAgIH0pKTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIFJpcHVsaXNjZSBsbyBTdG9yYWdlIExvY2FsZSBkaSBvZ25pIGNvc2Egc2FsdmF0YVxyXG4gICAgICogXHJcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gc3RvcmVOYW1lIENoaWF2ZSBkZWwgbG9jYWxTdG9yYWdlIGRhIHJpcHVsaXJlXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBjbGVhcigpOiBPYnNlcnZhYmxlPGJvb2xlYW4+IHtcclxuICAgICAgICByZXR1cm4gdGhpcy5fc3RvcmFnZS5jbGVhcigpLnBpcGUoZmlyc3QoKSwgdGFwKHJlcyA9PiB7XHJcbiAgICAgICAgICAgIGlmIChyZXMgPT0gZmFsc2UpXHJcbiAgICAgICAgICAgICAgICBjb25zb2xlLndhcm4oXCJJbXBvc3NpYmlsZSByaXB1bGlyZSBsbyBTdG9yYWdlIExvY2FsZVwiKTtcclxuICAgICAgICB9KSk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBSZXN0aXR1aXNjZSB0dXR0ZSBsZSBjaGlhdmktdmFsb3JlIGFzc29jaWF0ZSBhbGxhIHNlc3Npb25lIGNvcnJlbnRlXHJcbiAgICAgKiBcclxuICAgICAqIEByZXR1cm5zIHtPYnNlcnZhYmxlPHsgW2luZGV4OiBzdHJpbmddOiBzdHJpbmc7IH0+fSBSaXN1bHRhdG8gZGVsbGEgcXVlcnlcclxuICAgICAqL1xyXG4gICAgcHVibGljIGdldEFsbCgpOiBPYnNlcnZhYmxlPHsgW2luZGV4OiBzdHJpbmddOiBzdHJpbmc7IH0+IHtcclxuICAgICAgICByZXR1cm4gdGhpcy5fc3RvcmFnZS5nZXRBbGwoKS5waXBlKGZpcnN0KCkpO1xyXG4gICAgfVxyXG59Il19
|
package/esm2015/public-api.js
CHANGED
|
@@ -14,4 +14,6 @@ export * from './lib/tokens';
|
|
|
14
14
|
export * from './lib/models/CallResult';
|
|
15
15
|
export * from './lib/models/CsvHeaders';
|
|
16
16
|
export * from './lib/models/GenericItem';
|
|
17
|
-
|
|
17
|
+
export * from './lib/models/providers/base/BaseStorageProvider';
|
|
18
|
+
export * from './lib/models/session/base/BaseSessionRetriever';
|
|
19
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3Byb2plY3RzL2V4dGVuc2lvbnMvc3JjL3B1YmxpYy1hcGkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7O0dBRUc7QUFDSCxjQUFjLGlDQUFpQyxDQUFDO0FBQ2hELGNBQWMsc0NBQXNDLENBQUM7QUFDckQsY0FBYyx5Q0FBeUMsQ0FBQztBQUN4RCxjQUFjLDJDQUEyQyxDQUFDO0FBQzFELGNBQWMsNkNBQTZDLENBQUM7QUFDNUQsY0FBYywyQ0FBMkMsQ0FBQztBQUMxRCxjQUFjLDRDQUE0QyxDQUFDO0FBQzNELGNBQWMsNkNBQTZDLENBQUM7QUFDNUQsY0FBYywyQ0FBMkMsQ0FBQztBQUMxRCxjQUFjLGNBQWMsQ0FBQztBQUM3QixjQUFjLHlCQUF5QixDQUFDO0FBQ3hDLGNBQWMseUJBQXlCLENBQUM7QUFDeEMsY0FBYywwQkFBMEIsQ0FBQztBQUN6QyxjQUFjLGlEQUFpRCxDQUFDO0FBQ2hFLGNBQWMsZ0RBQWdELENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxyXG4gKiBQdWJsaWMgQVBJIFN1cmZhY2Ugb2YgZXh0ZW5zaW9uc1xyXG4gKi9cclxuZXhwb3J0ICogZnJvbSAnLi9saWIvbW9kdWxlcy9leHRlbnNpb25zLm1vZHVsZSc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL21vZHVsZXMvZXh0ZW5zaW9ucy5mdWxsLm1vZHVsZSc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL3NlcnZpY2VzL2V4dGVuc2lvbnMuZGF0ZXMuc2VydmljZSc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL3NlcnZpY2VzL2V4dGVuc2lvbnMuZXhwb3J0cy5zZXJ2aWNlJztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvc2VydmljZXMvZXh0ZW5zaW9ucy5jbGlwYm9hcmQuc2VydmljZSc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL3NlcnZpY2VzL2V4dGVuc2lvbnMuaGFzaGluZy5zZXJ2aWNlJztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvc2VydmljZXMvZXh0ZW5zaW9ucy5tZXNzYWdlcy5zZXJ2aWNlJztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvc2VydmljZXMvZXh0ZW5zaW9ucy51dGlsaXRpZXMuc2VydmljZSc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL3NlcnZpY2VzL2V4dGVuc2lvbnMuc3RvcmFnZS5zZXJ2aWNlJztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvdG9rZW5zJztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvbW9kZWxzL0NhbGxSZXN1bHQnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9tb2RlbHMvQ3N2SGVhZGVycyc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL21vZGVscy9HZW5lcmljSXRlbSc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL21vZGVscy9wcm92aWRlcnMvYmFzZS9CYXNlU3RvcmFnZVByb3ZpZGVyJztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvbW9kZWxzL3Nlc3Npb24vYmFzZS9CYXNlU2Vzc2lvblJldHJpZXZlcic7Il19
|
|
@@ -2,6 +2,8 @@ import { InjectionToken, NgModule, Injectable, Optional, Inject } from '@angular
|
|
|
2
2
|
import { ToastrService } from 'ngx-toastr';
|
|
3
3
|
import swal from 'sweetalert2';
|
|
4
4
|
import { Deserialize } from 'cerialize';
|
|
5
|
+
import { first, tap } from 'rxjs/operators';
|
|
6
|
+
import { of } from 'rxjs';
|
|
5
7
|
|
|
6
8
|
/**
|
|
7
9
|
* Token che identifica il locale da utilizzare per questa libreria, sono supportati i locali 'it-IT' ed 'en-US'
|
|
@@ -1000,14 +1002,14 @@ class ExportService {
|
|
|
1000
1002
|
for (var prop in obj) {
|
|
1001
1003
|
let toCall;
|
|
1002
1004
|
if (typeof obj[prop + listCsvHdrPrefix] !== "undefined")
|
|
1003
|
-
toCall = this.parseList;
|
|
1005
|
+
toCall = this.parseList.bind(this);
|
|
1004
1006
|
else if (typeof obj[prop + dictionaryCsvHdrPrefix] !== "undefined")
|
|
1005
|
-
toCall = this.parseDictionary;
|
|
1007
|
+
toCall = this.parseDictionary.bind(this);
|
|
1006
1008
|
else if (typeof obj[prop + csvVisPrefix] !== "undefined") {
|
|
1007
1009
|
if (typeof obj[prop + csvValueNavigator] !== "undefined")
|
|
1008
|
-
toCall = this.parseObject;
|
|
1010
|
+
toCall = this.parseObject.bind(this);
|
|
1009
1011
|
else
|
|
1010
|
-
toCall = this.parseProperty;
|
|
1012
|
+
toCall = this.parseProperty.bind(this);
|
|
1011
1013
|
}
|
|
1012
1014
|
if (toCall)
|
|
1013
1015
|
toCall(obj, prop, headers);
|
|
@@ -1225,8 +1227,11 @@ class HashingService {
|
|
|
1225
1227
|
/**
|
|
1226
1228
|
* Blacklist dei tipi da ignorare quando si effettua l'hashing degli oggetti
|
|
1227
1229
|
*/
|
|
1228
|
-
this.
|
|
1229
|
-
"
|
|
1230
|
+
this.objBlacklist = {
|
|
1231
|
+
"NgForm": true, "ElementRef": true, "ExtensionsService": true, "ToastrService": true, "LocaleService": true, "AppState": true, "Router": true,
|
|
1232
|
+
"ActivatedRoute": true, "HTTPService": true, "Location": true, "CanvasComponent": true, "ModalDirective": true, "ChangeDetectorRef": true,
|
|
1233
|
+
"DateService": true, "EventEmitter": true, "ViewRef_": true, "Subscriber": true, "ItemLocalization": true
|
|
1234
|
+
};
|
|
1230
1235
|
/**
|
|
1231
1236
|
* Array dei possibili valori di un simbolo esadecimale
|
|
1232
1237
|
*/
|
|
@@ -1250,12 +1255,30 @@ class HashingService {
|
|
|
1250
1255
|
* @param {number} level Livello di ricorsione nel caso venga effettuato l'hash di un oggetto che contiene altri oggetti
|
|
1251
1256
|
* @param {boolean} navigateFullDepth Indica se navigare l'oggetto per l'intera lunghezza. In caso contrario si ferma al secondo livello
|
|
1252
1257
|
*
|
|
1253
|
-
* @returns {string}
|
|
1258
|
+
* @returns {string} Hash generato per l'oggetto in questione
|
|
1254
1259
|
*/
|
|
1255
|
-
hashObject(o, level = 0, navigateFullDepth = false) {
|
|
1260
|
+
hashObject(o, level = 0, navigateFullDepth = false, precise = false) {
|
|
1256
1261
|
var strDef = this.stringify(o, level, navigateFullDepth);
|
|
1257
|
-
var
|
|
1258
|
-
return
|
|
1262
|
+
var hash = precise ? this.md5(strDef) : this.simpleHash(strDef);
|
|
1263
|
+
return hash;
|
|
1264
|
+
}
|
|
1265
|
+
/**
|
|
1266
|
+
* Hash più semplice e più veloce dell'md5, ma meno sicuro
|
|
1267
|
+
*
|
|
1268
|
+
* Vedi https://stackoverflow.com/questions/7616461/generate-a-hash-from-string-in-javascript
|
|
1269
|
+
*
|
|
1270
|
+
* @param {string} str Stringa di cui calcolare l'hash
|
|
1271
|
+
*/
|
|
1272
|
+
simpleHash(str, seed = 0) {
|
|
1273
|
+
let h1 = 0xdeadbeef ^ seed, h2 = 0x41c6ce57 ^ seed;
|
|
1274
|
+
for (let i = 0, ch; i < str.length; i++) {
|
|
1275
|
+
ch = str.charCodeAt(i);
|
|
1276
|
+
h1 = Math.imul(h1 ^ ch, 2654435761);
|
|
1277
|
+
h2 = Math.imul(h2 ^ ch, 1597334677);
|
|
1278
|
+
}
|
|
1279
|
+
h1 = Math.imul(h1 ^ (h1 >>> 16), 2246822507) ^ Math.imul(h2 ^ (h2 >>> 13), 3266489909);
|
|
1280
|
+
h2 = Math.imul(h2 ^ (h2 >>> 16), 2246822507) ^ Math.imul(h1 ^ (h1 >>> 13), 3266489909);
|
|
1281
|
+
return (4294967296 * (2097151 & h2) + (h1 >>> 0)).toString();
|
|
1259
1282
|
}
|
|
1260
1283
|
/**
|
|
1261
1284
|
* Genera una stringa che identifica univocamente l'oggetto in questione
|
|
@@ -1273,14 +1296,14 @@ class HashingService {
|
|
|
1273
1296
|
if (o === false)
|
|
1274
1297
|
return "f";
|
|
1275
1298
|
if (o instanceof Date)
|
|
1276
|
-
return
|
|
1299
|
+
return 'd:' + o.valueOf().toString();
|
|
1277
1300
|
i = typeof o;
|
|
1278
1301
|
if (i === "string")
|
|
1279
|
-
return "s:" + o
|
|
1302
|
+
return "s:" + o;
|
|
1280
1303
|
if (i === "number")
|
|
1281
1304
|
return "n:" + o;
|
|
1282
1305
|
if (o instanceof Function)
|
|
1283
|
-
return "m:" + o.toString()
|
|
1306
|
+
return "m:" + o.toString();
|
|
1284
1307
|
if (o instanceof Array) {
|
|
1285
1308
|
r = [];
|
|
1286
1309
|
for (i = 0; i < o.length; i++) {
|
|
@@ -1294,7 +1317,7 @@ class HashingService {
|
|
|
1294
1317
|
//Se è oggetto, escludo tutti quelli di sistema/inutili
|
|
1295
1318
|
if (o) {
|
|
1296
1319
|
var name = o.__proto__.constructor.name;
|
|
1297
|
-
if (this.
|
|
1320
|
+
if (!this.objBlacklist[name]) {
|
|
1298
1321
|
for (i in o) {
|
|
1299
1322
|
if (o.hasOwnProperty(i) && (level <= 2 || navigateFullDepth)) {
|
|
1300
1323
|
let res = this.stringify(o[i], level + 1, navigateFullDepth);
|
|
@@ -1707,9 +1730,43 @@ UtilityService.decorators = [
|
|
|
1707
1730
|
{ type: Injectable }
|
|
1708
1731
|
];
|
|
1709
1732
|
|
|
1733
|
+
/**
|
|
1734
|
+
* Classe che gestisce la scrittura delle informazioni nello store locale.
|
|
1735
|
+
* Questo store locale potrebbe essere il localStorage (implementazione di default data dal **DefaultStorageProvider**),
|
|
1736
|
+
* oppure un'implementazione custom facente capo a un DB esterno.
|
|
1737
|
+
*
|
|
1738
|
+
* In questo ultimo caso però sarà necessario implementarsi un proprio **BaseSessionRetriever**
|
|
1739
|
+
* che generi una chiave univoca di sessione su cui tutte le operazioni di questa classe saranno eseguite
|
|
1740
|
+
*/
|
|
1741
|
+
class BaseStorageProvider {
|
|
1742
|
+
/** @ignore Costruttore */
|
|
1743
|
+
constructor(session) {
|
|
1744
|
+
this.session = session;
|
|
1745
|
+
}
|
|
1746
|
+
/**
|
|
1747
|
+
* Ottiene la chiave "Reale" da utilizzare per la persistenza di una chiave generica
|
|
1748
|
+
*
|
|
1749
|
+
* @param {string} key Chiave da storicizzare
|
|
1750
|
+
*
|
|
1751
|
+
* @returns {string} Unione fra l'identificativo della sessione e la chiave specificata
|
|
1752
|
+
*/
|
|
1753
|
+
getKey(key) {
|
|
1754
|
+
return this.session.getSessionKey() + "§" + key + "§";
|
|
1755
|
+
}
|
|
1756
|
+
}
|
|
1757
|
+
|
|
1758
|
+
/**
|
|
1759
|
+
* Classe astratta che si occupa di recuperare l'Id sessione univoco per applicazione ed utente collegato
|
|
1760
|
+
*/
|
|
1761
|
+
class BaseSessionRetriever {
|
|
1762
|
+
}
|
|
1763
|
+
|
|
1710
1764
|
// Angular
|
|
1711
1765
|
/**
|
|
1712
|
-
* Service che fornisce funzionalità di base per storicizzazione e recupero oggetti
|
|
1766
|
+
* Service che fornisce funzionalità di base per storicizzazione e recupero oggetti dallo Storage Locale
|
|
1767
|
+
*
|
|
1768
|
+
* N.B: In ogni chiamata è presente l'operatore rxjs **first()** per far sì che a prescindere dall'implementazione utente/default gli
|
|
1769
|
+
* observable effettuino l'unsubscribe automaticamente terminata la prima operazine
|
|
1713
1770
|
*/
|
|
1714
1771
|
class StorageService {
|
|
1715
1772
|
/**
|
|
@@ -1717,8 +1774,10 @@ class StorageService {
|
|
|
1717
1774
|
*
|
|
1718
1775
|
* @ignore
|
|
1719
1776
|
*/
|
|
1720
|
-
constructor(APPSEARCH_PREFIX) {
|
|
1777
|
+
constructor(APPSEARCH_PREFIX, _session, _storage) {
|
|
1721
1778
|
this.APPSEARCH_PREFIX = APPSEARCH_PREFIX;
|
|
1779
|
+
this._session = _session;
|
|
1780
|
+
this._storage = _storage;
|
|
1722
1781
|
}
|
|
1723
1782
|
/**
|
|
1724
1783
|
* Inserisce un oggetto che funga da contenitore di oggetti nel local storage, ripulendone gli oggetti (supponendo che sia una view di ricerca) e marcandolo come
|
|
@@ -1727,63 +1786,172 @@ class StorageService {
|
|
|
1727
1786
|
* @param {string} storeName Chiave del localStorage in cui storicizzare l'oggetto **itemsContainer**
|
|
1728
1787
|
* @param {{ items: any[] }} itemsContainer Oggetto da storicizzare
|
|
1729
1788
|
*/
|
|
1730
|
-
setItem(storeName,
|
|
1731
|
-
var
|
|
1732
|
-
//
|
|
1733
|
-
|
|
1734
|
-
|
|
1735
|
-
|
|
1736
|
-
|
|
1737
|
-
|
|
1738
|
-
}
|
|
1739
|
-
catch (e) {
|
|
1740
|
-
console.warn("Spazio del local Storage insufficiente per salvare la view. Fallback a cleanup e salvataggio");
|
|
1741
|
-
//Pulisco tutte le view con nome che parta per "Hot"
|
|
1742
|
-
for (let key in localStorage) {
|
|
1743
|
-
if (localStorage.hasOwnProperty(key) && key.startsWith((_a = this.APPSEARCH_PREFIX) !== null && _a !== void 0 ? _a : 'Hot'))
|
|
1744
|
-
delete localStorage[key];
|
|
1745
|
-
}
|
|
1746
|
-
try {
|
|
1747
|
-
localStorage.setItem(storeName, JSON.stringify(item));
|
|
1748
|
-
}
|
|
1749
|
-
catch (e) {
|
|
1750
|
-
console.error("Spazio del local Storage insufficiente per salvare i risultati di ricerca con solo filtri. Non salvo nulla");
|
|
1751
|
-
}
|
|
1789
|
+
setItem(storeName, item) {
|
|
1790
|
+
var finalItem;
|
|
1791
|
+
//Se sto salvando un oggetto con "items" e "page" vuol dire che è un appsearch, la ripulisco
|
|
1792
|
+
if (item.items && item.page) {
|
|
1793
|
+
finalItem = JSON.parse(JSON.stringify(item));
|
|
1794
|
+
finalItem.items = [];
|
|
1795
|
+
finalItem.savedstate = true;
|
|
1796
|
+
finalItem.savedprefix = this.APPSEARCH_PREFIX || 'Hot';
|
|
1752
1797
|
}
|
|
1798
|
+
else
|
|
1799
|
+
finalItem = item;
|
|
1800
|
+
return this._storage.setItem(storeName, finalItem).pipe(first(), tap(res => {
|
|
1801
|
+
if (res == false)
|
|
1802
|
+
console.error("Impossibile effettuare il salvataggio dell'oggetto all'interno dello Storage Locale per la chiave " + storeName);
|
|
1803
|
+
}));
|
|
1753
1804
|
}
|
|
1754
1805
|
/**
|
|
1755
|
-
*
|
|
1806
|
+
* Recupera un oggetto dallo Storage Locale
|
|
1807
|
+
*
|
|
1808
|
+
* @param {string} storeName Chiave del localStorage da cui recuperare l'oggetto
|
|
1756
1809
|
*
|
|
1757
|
-
* @
|
|
1758
|
-
* @param {any} item Oggetto da storicizzare
|
|
1810
|
+
* @returns {any} Oggetto recuperato e deserializzato
|
|
1759
1811
|
*/
|
|
1760
|
-
|
|
1761
|
-
|
|
1812
|
+
getItem(storeName) {
|
|
1813
|
+
return this._storage.getItem(storeName).pipe(first(), tap(res => {
|
|
1814
|
+
if (res == null)
|
|
1815
|
+
console.warn("Impossibile ottenere l'oggetto salvato con chiave " + storeName);
|
|
1816
|
+
}));
|
|
1762
1817
|
}
|
|
1763
1818
|
/**
|
|
1764
|
-
*
|
|
1765
|
-
*
|
|
1766
|
-
* @param {string} storeName Chiave del localStorage da cui recuperare l'oggetto
|
|
1819
|
+
* Ripulisce lo Storage Locale
|
|
1767
1820
|
*
|
|
1768
|
-
* @
|
|
1821
|
+
* @param {string} storeName Chiave del localStorage da ripulire
|
|
1769
1822
|
*/
|
|
1770
|
-
|
|
1771
|
-
return
|
|
1823
|
+
removeItem(storeName) {
|
|
1824
|
+
return this._storage.removeItem(storeName).pipe(first(), tap(res => {
|
|
1825
|
+
if (res == false)
|
|
1826
|
+
console.warn("Impossibile rimuovere l'oggetto salvato con chiave " + storeName);
|
|
1827
|
+
}));
|
|
1772
1828
|
}
|
|
1773
1829
|
/**
|
|
1774
|
-
* Ripulisce
|
|
1830
|
+
* Ripulisce lo Storage Locale di ogni cosa salvata
|
|
1775
1831
|
*
|
|
1776
1832
|
* @param {string} storeName Chiave del localStorage da ripulire
|
|
1777
1833
|
*/
|
|
1778
|
-
clear(
|
|
1779
|
-
|
|
1834
|
+
clear() {
|
|
1835
|
+
return this._storage.clear().pipe(first(), tap(res => {
|
|
1836
|
+
if (res == false)
|
|
1837
|
+
console.warn("Impossibile ripulire lo Storage Locale");
|
|
1838
|
+
}));
|
|
1839
|
+
}
|
|
1840
|
+
/**
|
|
1841
|
+
* Restituisce tutte le chiavi-valore associate alla sessione corrente
|
|
1842
|
+
*
|
|
1843
|
+
* @returns {Observable<{ [index: string]: string; }>} Risultato della query
|
|
1844
|
+
*/
|
|
1845
|
+
getAll() {
|
|
1846
|
+
return this._storage.getAll().pipe(first());
|
|
1780
1847
|
}
|
|
1781
1848
|
}
|
|
1782
1849
|
StorageService.decorators = [
|
|
1783
1850
|
{ type: Injectable }
|
|
1784
1851
|
];
|
|
1785
1852
|
StorageService.ctorParameters = () => [
|
|
1786
|
-
{ type: String, decorators: [{ type: Optional }, { type: Inject, args: [APPSEARCH_PREFIX,] }] }
|
|
1853
|
+
{ type: String, decorators: [{ type: Optional }, { type: Inject, args: [APPSEARCH_PREFIX,] }] },
|
|
1854
|
+
{ type: BaseSessionRetriever },
|
|
1855
|
+
{ type: BaseStorageProvider }
|
|
1856
|
+
];
|
|
1857
|
+
|
|
1858
|
+
/**
|
|
1859
|
+
* Implementazione di default per la classe **BaseSessionRetriever**
|
|
1860
|
+
*/
|
|
1861
|
+
class DefaultSessionRetriever extends BaseSessionRetriever {
|
|
1862
|
+
/**
|
|
1863
|
+
* Costruttore
|
|
1864
|
+
*
|
|
1865
|
+
* @ignore
|
|
1866
|
+
*/
|
|
1867
|
+
constructor() { super(); }
|
|
1868
|
+
/**
|
|
1869
|
+
* Ottiene un ID sessione
|
|
1870
|
+
*
|
|
1871
|
+
* @returns {string} ID sessione
|
|
1872
|
+
*/
|
|
1873
|
+
getSessionKey() {
|
|
1874
|
+
return "DUMMY_SESSION";
|
|
1875
|
+
}
|
|
1876
|
+
}
|
|
1877
|
+
DefaultSessionRetriever.decorators = [
|
|
1878
|
+
{ type: Injectable }
|
|
1879
|
+
];
|
|
1880
|
+
DefaultSessionRetriever.ctorParameters = () => [];
|
|
1881
|
+
|
|
1882
|
+
/** Implementazione di default per la classe **BaseStorageProvider** */
|
|
1883
|
+
class DefaultStorageProvider extends BaseStorageProvider {
|
|
1884
|
+
/** @ignore Costruttore */
|
|
1885
|
+
constructor(session) { super(session); }
|
|
1886
|
+
/** @ignore Implementazione di Default con localStorage. Identity viene ignorata perché essendo già nel localStorage è già per sito */
|
|
1887
|
+
setItem(key, value) {
|
|
1888
|
+
try {
|
|
1889
|
+
localStorage.setItem(key, JSON.stringify(value));
|
|
1890
|
+
return of(true);
|
|
1891
|
+
}
|
|
1892
|
+
catch (_a) {
|
|
1893
|
+
// Potrebbe arrivarmi un prefisso di salvataggio nella modalità di default. Questo serve per ripulire le stesse cose con quel prefisso e sperare di liberare spazio
|
|
1894
|
+
if (value.savedprefix) {
|
|
1895
|
+
console.warn("Spazio del local Storage insufficiente, prova a ripulirlo e risalvare");
|
|
1896
|
+
//Pulisco tutte le view con nome che parta per "Hot"
|
|
1897
|
+
for (let key in localStorage) {
|
|
1898
|
+
if (localStorage.hasOwnProperty(key) && key.startsWith(value.savedprefix))
|
|
1899
|
+
delete localStorage[key];
|
|
1900
|
+
}
|
|
1901
|
+
try {
|
|
1902
|
+
localStorage.setItem(key, JSON.stringify(value));
|
|
1903
|
+
}
|
|
1904
|
+
catch (e) {
|
|
1905
|
+
console.error("Spazio del local Storage insufficiente per salvare i risultati di ricerca con solo filtri. Non salvo nulla");
|
|
1906
|
+
}
|
|
1907
|
+
}
|
|
1908
|
+
return of(false);
|
|
1909
|
+
}
|
|
1910
|
+
}
|
|
1911
|
+
/** @ignore Implementazione di Default con localStorage. Identity viene ignorata perché essendo già nel localStorage è già per sito */
|
|
1912
|
+
getItem(key) {
|
|
1913
|
+
try {
|
|
1914
|
+
var ret = JSON.parse(localStorage.getItem(key));
|
|
1915
|
+
return of(ret);
|
|
1916
|
+
}
|
|
1917
|
+
catch (_a) {
|
|
1918
|
+
return of(null);
|
|
1919
|
+
}
|
|
1920
|
+
}
|
|
1921
|
+
/** @ignore Implementazione di Default con localStorage. Identity viene ignorata perché essendo già nel localStorage è già per sito */
|
|
1922
|
+
removeItem(key) {
|
|
1923
|
+
try {
|
|
1924
|
+
localStorage.removeItem(key);
|
|
1925
|
+
return of(true);
|
|
1926
|
+
}
|
|
1927
|
+
catch (_a) {
|
|
1928
|
+
return of(false);
|
|
1929
|
+
}
|
|
1930
|
+
}
|
|
1931
|
+
/** @ignore Implementazione di Default con localStorage. Identity viene ignorata perché essendo già nel localStorage è già per sito */
|
|
1932
|
+
clear() {
|
|
1933
|
+
try {
|
|
1934
|
+
localStorage.clear();
|
|
1935
|
+
return of(true);
|
|
1936
|
+
}
|
|
1937
|
+
catch (_a) {
|
|
1938
|
+
return of(false);
|
|
1939
|
+
}
|
|
1940
|
+
}
|
|
1941
|
+
/** @ignore Implementazione di Default con localStorage. Identity viene ignorata perché essendo già nel localStorage è già per sito */
|
|
1942
|
+
getAll() {
|
|
1943
|
+
var ret = {};
|
|
1944
|
+
for (let key in localStorage) {
|
|
1945
|
+
ret[key] = localStorage[key];
|
|
1946
|
+
}
|
|
1947
|
+
return of(ret);
|
|
1948
|
+
}
|
|
1949
|
+
}
|
|
1950
|
+
DefaultStorageProvider.decorators = [
|
|
1951
|
+
{ type: Injectable }
|
|
1952
|
+
];
|
|
1953
|
+
DefaultStorageProvider.ctorParameters = () => [
|
|
1954
|
+
{ type: BaseSessionRetriever }
|
|
1787
1955
|
];
|
|
1788
1956
|
|
|
1789
1957
|
// Angular
|
|
@@ -1796,6 +1964,8 @@ StorageService.ctorParameters = () => [
|
|
|
1796
1964
|
* MessageService,
|
|
1797
1965
|
* UtilityService,
|
|
1798
1966
|
* StorageService,
|
|
1967
|
+
*
|
|
1968
|
+
* con eventuali provider che utilizzano
|
|
1799
1969
|
*/
|
|
1800
1970
|
class FullExtensionsModule {
|
|
1801
1971
|
static forRoot(config) {
|
|
@@ -1812,7 +1982,9 @@ class FullExtensionsModule {
|
|
|
1812
1982
|
{ provide: EXT_LOCALE, useValue: (config === null || config === void 0 ? void 0 : config.locale) || 'it-IT' },
|
|
1813
1983
|
{ provide: EXT_FANCY_ALERTS, useValue: (config === null || config === void 0 ? void 0 : config.fancy_alerts) || true },
|
|
1814
1984
|
{ provide: APPSEARCH_PREFIX, useValue: (config === null || config === void 0 ? void 0 : config.appsearch_prefix) || 'Hot' },
|
|
1815
|
-
{ provide: EXT_ALLOW_UTC, useValue: (config === null || config === void 0 ? void 0 : config.allow_utc) == null ? false : config === null || config === void 0 ? void 0 : config.allow_utc }
|
|
1985
|
+
{ provide: EXT_ALLOW_UTC, useValue: (config === null || config === void 0 ? void 0 : config.allow_utc) == null ? false : config === null || config === void 0 ? void 0 : config.allow_utc },
|
|
1986
|
+
{ provide: BaseSessionRetriever, useClass: (config === null || config === void 0 ? void 0 : config.sessionRetriever) || DefaultSessionRetriever },
|
|
1987
|
+
{ provide: BaseStorageProvider, useClass: (config === null || config === void 0 ? void 0 : config.storageProvider) || DefaultStorageProvider },
|
|
1816
1988
|
]
|
|
1817
1989
|
};
|
|
1818
1990
|
}
|
|
@@ -1847,5 +2019,5 @@ class GenericItem {
|
|
|
1847
2019
|
* Generated bundle index. Do not edit.
|
|
1848
2020
|
*/
|
|
1849
2021
|
|
|
1850
|
-
export { APPSEARCH_PREFIX, CallResult, ClipboardService, CsvHeaders, DateService, EXT_ALLOW_UTC, EXT_FANCY_ALERTS, EXT_LOCALE, Export, ExportAs, ExportDictionary, ExportList, ExportService, ExtensionsModule, FullExtensionsModule, GenericItem, HashingService, MessageService, StorageService, UtilityService };
|
|
2022
|
+
export { APPSEARCH_PREFIX, BaseSessionRetriever, BaseStorageProvider, CallResult, ClipboardService, CsvHeaders, DateService, EXT_ALLOW_UTC, EXT_FANCY_ALERTS, EXT_LOCALE, Export, ExportAs, ExportDictionary, ExportList, ExportService, ExtensionsModule, FullExtensionsModule, GenericItem, HashingService, MessageService, StorageService, UtilityService, DefaultSessionRetriever as ɵa, DefaultStorageProvider as ɵb };
|
|
1851
2023
|
//# sourceMappingURL=esfaenza-extensions.js.map
|