@esfaenza/extensions 11.2.16 → 11.2.20
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 +48 -25
- package/bundles/esfaenza-extensions.umd.js.map +1 -1
- package/bundles/esfaenza-extensions.umd.min.js +2 -2
- package/bundles/esfaenza-extensions.umd.min.js.map +1 -1
- package/esfaenza-extensions.metadata.json +1 -1
- package/esm2015/lib/models/CsvHeaders.js +1 -1
- package/esm2015/lib/models/providers/base/BaseStorageProvider.js +15 -1
- package/esm2015/lib/models/providers/implementation/DefaultStorageProvider.js +12 -9
- package/esm2015/lib/services/extensions.exports.service.js +16 -9
- package/esm2015/lib/services/extensions.storage.service.js +11 -9
- package/fesm2015/esfaenza-extensions.js +49 -24
- package/fesm2015/esfaenza-extensions.js.map +1 -1
- package/lib/models/CsvHeaders.d.ts +4 -0
- package/lib/models/providers/base/BaseStorageProvider.d.ts +17 -13
- package/lib/models/providers/implementation/DefaultStorageProvider.d.ts +8 -7
- package/lib/services/extensions.storage.service.d.ts +3 -0
- package/package.json +2 -2
|
@@ -4,9 +4,12 @@ import { BaseStorageProvider } from "../models/providers/base/BaseStorageProvide
|
|
|
4
4
|
import { BaseSessionRetriever } from "../models/session/base/BaseSessionRetriever";
|
|
5
5
|
// Modelli
|
|
6
6
|
import { APPSEARCH_PREFIX } from '../tokens';
|
|
7
|
-
import { tap } from "rxjs/operators";
|
|
7
|
+
import { tap, first } from "rxjs/operators";
|
|
8
8
|
/**
|
|
9
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
|
|
10
13
|
*/
|
|
11
14
|
export class StorageService {
|
|
12
15
|
/**
|
|
@@ -37,10 +40,9 @@ export class StorageService {
|
|
|
37
40
|
}
|
|
38
41
|
else
|
|
39
42
|
finalItem = item;
|
|
40
|
-
return this._storage.setItem(
|
|
41
|
-
if (res == false)
|
|
43
|
+
return this._storage.setItem(storeName, finalItem).pipe(first(), tap(res => {
|
|
44
|
+
if (res == false)
|
|
42
45
|
console.error("Impossibile effettuare il salvataggio dell'oggetto all'interno dello Storage Locale per la chiave " + storeName);
|
|
43
|
-
}
|
|
44
46
|
}));
|
|
45
47
|
}
|
|
46
48
|
/**
|
|
@@ -51,7 +53,7 @@ export class StorageService {
|
|
|
51
53
|
* @returns {any} Oggetto recuperato e deserializzato
|
|
52
54
|
*/
|
|
53
55
|
getItem(storeName) {
|
|
54
|
-
return this._storage.getItem(
|
|
56
|
+
return this._storage.getItem(storeName).pipe(first(), tap(res => {
|
|
55
57
|
if (res == null)
|
|
56
58
|
console.warn("Impossibile ottenere l'oggetto salvato con chiave " + storeName);
|
|
57
59
|
}));
|
|
@@ -62,7 +64,7 @@ export class StorageService {
|
|
|
62
64
|
* @param {string} storeName Chiave del localStorage da ripulire
|
|
63
65
|
*/
|
|
64
66
|
removeItem(storeName) {
|
|
65
|
-
return this._storage.removeItem(
|
|
67
|
+
return this._storage.removeItem(storeName).pipe(first(), tap(res => {
|
|
66
68
|
if (res == false)
|
|
67
69
|
console.warn("Impossibile rimuovere l'oggetto salvato con chiave " + storeName);
|
|
68
70
|
}));
|
|
@@ -73,7 +75,7 @@ export class StorageService {
|
|
|
73
75
|
* @param {string} storeName Chiave del localStorage da ripulire
|
|
74
76
|
*/
|
|
75
77
|
clear() {
|
|
76
|
-
return this._storage.clear(
|
|
78
|
+
return this._storage.clear().pipe(first(), tap(res => {
|
|
77
79
|
if (res == false)
|
|
78
80
|
console.warn("Impossibile ripulire lo Storage Locale");
|
|
79
81
|
}));
|
|
@@ -84,7 +86,7 @@ export class StorageService {
|
|
|
84
86
|
* @returns {Observable<{ [index: string]: string; }>} Risultato della query
|
|
85
87
|
*/
|
|
86
88
|
getAll() {
|
|
87
|
-
return this._storage.getAll(
|
|
89
|
+
return this._storage.getAll().pipe(first());
|
|
88
90
|
}
|
|
89
91
|
}
|
|
90
92
|
StorageService.decorators = [
|
|
@@ -95,4 +97,4 @@ StorageService.ctorParameters = () => [
|
|
|
95
97
|
{ type: BaseSessionRetriever },
|
|
96
98
|
{ type: BaseStorageProvider }
|
|
97
99
|
];
|
|
98
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
100
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXh0ZW5zaW9ucy5zdG9yYWdlLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9leHRlbnNpb25zL3NyYy9saWIvc2VydmljZXMvZXh0ZW5zaW9ucy5zdG9yYWdlLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsVUFBVTtBQUNWLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM3RCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSw4Q0FBOEMsQ0FBQztBQUNuRixPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSw2Q0FBNkMsQ0FBQztBQUVuRixVQUFVO0FBQ1YsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sV0FBVyxDQUFDO0FBSTdDLE9BQU8sRUFBRSxHQUFHLEVBQUUsS0FBSyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFNUM7Ozs7O0dBS0c7QUFFSCxNQUFNLE9BQU8sY0FBYztJQUV2Qjs7OztPQUlHO0lBQ0gsWUFBMEQsZ0JBQXdCLEVBQVUsUUFBOEIsRUFBVSxRQUE2QjtRQUF2RyxxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQVE7UUFBVSxhQUFRLEdBQVIsUUFBUSxDQUFzQjtRQUFVLGFBQVEsR0FBUixRQUFRLENBQXFCO0lBQUksQ0FBQztJQUV0Szs7Ozs7O09BTUc7SUFDSSxPQUFPLENBQUksU0FBaUIsRUFBRSxJQUFPO1FBQ3hDLElBQUksU0FBYyxDQUFDO1FBQ25CLDRGQUE0RjtRQUM1RixJQUFVLElBQUssQ0FBQyxLQUFLLElBQVUsSUFBSyxDQUFDLElBQUksRUFBRTtZQUN2QyxTQUFTLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7WUFDN0MsU0FBUyxDQUFDLEtBQUssR0FBRyxFQUFFLENBQUM7WUFDckIsU0FBUyxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUM7WUFDdEIsU0FBVSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUMsZ0JBQWdCLElBQUksS0FBSyxDQUFDO1NBQ2pFOztZQUVHLFNBQVMsR0FBRyxJQUFJLENBQUM7UUFFckIsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxTQUFTLEVBQUUsU0FBUyxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxFQUFFLEdBQUcsQ0FBQyxHQUFHLENBQUMsRUFBRTtZQUN2RSxJQUFJLEdBQUcsSUFBSSxLQUFLO2dCQUNaLE9BQU8sQ0FBQyxLQUFLLENBQUMsb0dBQW9HLEdBQUcsU0FBUyxDQUFDLENBQUM7UUFDeEksQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNSLENBQUM7SUFFRDs7Ozs7O09BTUc7SUFDSSxPQUFPLENBQUksU0FBaUI7UUFDL0IsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBSSxTQUFTLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLEVBQUUsR0FBRyxDQUFDLEdBQUcsQ0FBQyxFQUFFO1lBQy9ELElBQUksR0FBRyxJQUFJLElBQUk7Z0JBQ1gsT0FBTyxDQUFDLElBQUksQ0FBQyxvREFBb0QsR0FBRyxTQUFTLENBQUMsQ0FBQztRQUN2RixDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ1IsQ0FBQztJQUVEOzs7O09BSUc7SUFDSSxVQUFVLENBQUMsU0FBaUI7UUFDL0IsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDLFVBQVUsQ0FBQyxTQUFTLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLEVBQUUsR0FBRyxDQUFDLEdBQUcsQ0FBQyxFQUFFO1lBQy9ELElBQUksR0FBRyxJQUFJLEtBQUs7Z0JBQ1osT0FBTyxDQUFDLElBQUksQ0FBQyxxREFBcUQsR0FBRyxTQUFTLENBQUMsQ0FBQztRQUN4RixDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ1IsQ0FBQztJQUVEOzs7O09BSUc7SUFDSSxLQUFLO1FBQ1IsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDLEtBQUssRUFBRSxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsRUFBRSxHQUFHLENBQUMsR0FBRyxDQUFDLEVBQUU7WUFDakQsSUFBSSxHQUFHLElBQUksS0FBSztnQkFDWixPQUFPLENBQUMsSUFBSSxDQUFDLHdDQUF3QyxDQUFDLENBQUM7UUFDL0QsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNSLENBQUM7SUFFRDs7OztPQUlHO0lBQ0ksTUFBTTtRQUNULE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQztJQUNoRCxDQUFDOzs7WUFoRkosVUFBVTs7O3lDQVFNLFFBQVEsWUFBSSxNQUFNLFNBQUMsZ0JBQWdCO1lBdkIzQyxvQkFBb0I7WUFEcEIsbUJBQW1CIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQW5ndWxhclxyXG5pbXBvcnQgeyBJbmplY3RhYmxlLCBJbmplY3QsIE9wdGlvbmFsIH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcclxuaW1wb3J0IHsgQmFzZVN0b3JhZ2VQcm92aWRlciB9IGZyb20gXCIuLi9tb2RlbHMvcHJvdmlkZXJzL2Jhc2UvQmFzZVN0b3JhZ2VQcm92aWRlclwiO1xyXG5pbXBvcnQgeyBCYXNlU2Vzc2lvblJldHJpZXZlciB9IGZyb20gXCIuLi9tb2RlbHMvc2Vzc2lvbi9iYXNlL0Jhc2VTZXNzaW9uUmV0cmlldmVyXCI7XHJcblxyXG4vLyBNb2RlbGxpXHJcbmltcG9ydCB7IEFQUFNFQVJDSF9QUkVGSVggfSBmcm9tICcuLi90b2tlbnMnO1xyXG5cclxuLy8gUlhKU1xyXG5pbXBvcnQgeyBPYnNlcnZhYmxlIH0gZnJvbSBcInJ4anNcIjtcclxuaW1wb3J0IHsgdGFwLCBmaXJzdCB9IGZyb20gXCJyeGpzL29wZXJhdG9yc1wiO1xyXG5cclxuLyoqXHJcbiAqIFNlcnZpY2UgY2hlIGZvcm5pc2NlIGZ1bnppb25hbGl0w6AgZGkgYmFzZSBwZXIgc3RvcmljaXp6YXppb25lIGUgcmVjdXBlcm8gb2dnZXR0aSBkYWxsbyBTdG9yYWdlIExvY2FsZVxyXG4gKiBcclxuICogTi5COiBJbiBvZ25pIGNoaWFtYXRhIMOoIHByZXNlbnRlIGwnb3BlcmF0b3JlIHJ4anMgKipmaXJzdCgpKiogcGVyIGZhciBzw6wgY2hlIGEgcHJlc2NpbmRlcmUgZGFsbCdpbXBsZW1lbnRhemlvbmUgdXRlbnRlL2RlZmF1bHQgZ2xpIFxyXG4gKiBvYnNlcnZhYmxlIGVmZmV0dHVpbm8gbCd1bnN1YnNjcmliZSBhdXRvbWF0aWNhbWVudGUgdGVybWluYXRhIGxhIHByaW1hIG9wZXJhemluZVxyXG4gKi9cclxuQEluamVjdGFibGUoKVxyXG5leHBvcnQgY2xhc3MgU3RvcmFnZVNlcnZpY2Uge1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogQ29zdHJ1dHRvcmVcclxuICAgICAqIFxyXG4gICAgICogQGlnbm9yZVxyXG4gICAgICovXHJcbiAgICBjb25zdHJ1Y3RvcihAT3B0aW9uYWwoKSBASW5qZWN0KEFQUFNFQVJDSF9QUkVGSVgpIHByaXZhdGUgQVBQU0VBUkNIX1BSRUZJWDogc3RyaW5nLCBwcml2YXRlIF9zZXNzaW9uOiBCYXNlU2Vzc2lvblJldHJpZXZlciwgcHJpdmF0ZSBfc3RvcmFnZTogQmFzZVN0b3JhZ2VQcm92aWRlcikgeyB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBJbnNlcmlzY2UgdW4gb2dnZXR0byBjaGUgZnVuZ2EgZGEgY29udGVuaXRvcmUgZGkgb2dnZXR0aSBuZWwgbG9jYWwgc3RvcmFnZSwgcmlwdWxlbmRvbmUgZ2xpIG9nZ2V0dGkgKHN1cHBvbmVuZG8gY2hlIHNpYSB1bmEgdmlldyBkaSByaWNlcmNhKSBlIG1hcmNhbmRvbG8gY29tZSBcclxuICAgICAqIHNhbHZhdG8sIGluIG1vZG8gY2hlIHF1YW5kbyB2aWVuZSByZWN1cGVyYXRvIGlsIHNpc3RlbWEgbm9uIHBlbnNpIGNoZSBzaWEgdW4gb2dnZXR0byB2dW90byBtYSBjaGUgc2FwcGlhIGNoZSBnbGkgb2dnZXR0aSBzb24gc3RhdGkgcmlwdWxpdGkgcGVyIHJpc3Bhcm1pYXJlIHNwYXppb1xyXG4gICAgICogXHJcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gc3RvcmVOYW1lIENoaWF2ZSBkZWwgbG9jYWxTdG9yYWdlIGluIGN1aSBzdG9yaWNpenphcmUgbCdvZ2dldHRvICoqaXRlbXNDb250YWluZXIqKlxyXG4gICAgICogQHBhcmFtIHt7IGl0ZW1zOiBhbnlbXSB9fSBpdGVtc0NvbnRhaW5lciBPZ2dldHRvIGRhIHN0b3JpY2l6emFyZVxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgc2V0SXRlbTxUPihzdG9yZU5hbWU6IHN0cmluZywgaXRlbTogVCk6IE9ic2VydmFibGU8Ym9vbGVhbj4ge1xyXG4gICAgICAgIHZhciBmaW5hbEl0ZW06IGFueTtcclxuICAgICAgICAvL1NlIHN0byBzYWx2YW5kbyB1biBvZ2dldHRvIGNvbiBcIml0ZW1zXCIgZSBcInBhZ2VcIiB2dW9sIGRpcmUgY2hlIMOoIHVuIGFwcHNlYXJjaCwgbGEgcmlwdWxpc2NvXHJcbiAgICAgICAgaWYgKCg8YW55Pml0ZW0pLml0ZW1zICYmICg8YW55Pml0ZW0pLnBhZ2UpIHtcclxuICAgICAgICAgICAgZmluYWxJdGVtID0gSlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeShpdGVtKSk7XHJcbiAgICAgICAgICAgIGZpbmFsSXRlbS5pdGVtcyA9IFtdO1xyXG4gICAgICAgICAgICBmaW5hbEl0ZW0uc2F2ZWRzdGF0ZSA9IHRydWU7XHJcbiAgICAgICAgICAgICg8YW55PmZpbmFsSXRlbSkuc2F2ZWRwcmVmaXggPSB0aGlzLkFQUFNFQVJDSF9QUkVGSVggfHwgJ0hvdCc7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2VcclxuICAgICAgICAgICAgZmluYWxJdGVtID0gaXRlbTtcclxuXHJcbiAgICAgICAgcmV0dXJuIHRoaXMuX3N0b3JhZ2Uuc2V0SXRlbShzdG9yZU5hbWUsIGZpbmFsSXRlbSkucGlwZShmaXJzdCgpLCB0YXAocmVzID0+IHtcclxuICAgICAgICAgICAgaWYgKHJlcyA9PSBmYWxzZSlcclxuICAgICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoXCJJbXBvc3NpYmlsZSBlZmZldHR1YXJlIGlsIHNhbHZhdGFnZ2lvIGRlbGwnb2dnZXR0byBhbGwnaW50ZXJubyBkZWxsbyBTdG9yYWdlIExvY2FsZSBwZXIgbGEgY2hpYXZlIFwiICsgc3RvcmVOYW1lKTtcclxuICAgICAgICB9KSk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBSZWN1cGVyYSB1biBvZ2dldHRvIGRhbGxvIFN0b3JhZ2UgTG9jYWxlXHJcbiAgICAgKiBcclxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBzdG9yZU5hbWUgQ2hpYXZlIGRlbCBsb2NhbFN0b3JhZ2UgZGEgY3VpIHJlY3VwZXJhcmUgbCdvZ2dldHRvXHJcbiAgICAgKiBcclxuICAgICAqIEByZXR1cm5zIHthbnl9IE9nZ2V0dG8gcmVjdXBlcmF0byBlIGRlc2VyaWFsaXp6YXRvXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBnZXRJdGVtPFQ+KHN0b3JlTmFtZTogc3RyaW5nKTogT2JzZXJ2YWJsZTxUPiB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuX3N0b3JhZ2UuZ2V0SXRlbTxUPihzdG9yZU5hbWUpLnBpcGUoZmlyc3QoKSwgdGFwKHJlcyA9PiB7XHJcbiAgICAgICAgICAgIGlmIChyZXMgPT0gbnVsbClcclxuICAgICAgICAgICAgICAgIGNvbnNvbGUud2FybihcIkltcG9zc2liaWxlIG90dGVuZXJlIGwnb2dnZXR0byBzYWx2YXRvIGNvbiBjaGlhdmUgXCIgKyBzdG9yZU5hbWUpO1xyXG4gICAgICAgIH0pKTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIFJpcHVsaXNjZSBsbyBTdG9yYWdlIExvY2FsZSBcclxuICAgICAqIFxyXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IHN0b3JlTmFtZSBDaGlhdmUgZGVsIGxvY2FsU3RvcmFnZSBkYSByaXB1bGlyZVxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgcmVtb3ZlSXRlbShzdG9yZU5hbWU6IHN0cmluZyk6IE9ic2VydmFibGU8Ym9vbGVhbj4ge1xyXG4gICAgICAgIHJldHVybiB0aGlzLl9zdG9yYWdlLnJlbW92ZUl0ZW0oc3RvcmVOYW1lKS5waXBlKGZpcnN0KCksIHRhcChyZXMgPT4ge1xyXG4gICAgICAgICAgICBpZiAocmVzID09IGZhbHNlKVxyXG4gICAgICAgICAgICAgICAgY29uc29sZS53YXJuKFwiSW1wb3NzaWJpbGUgcmltdW92ZXJlIGwnb2dnZXR0byBzYWx2YXRvIGNvbiBjaGlhdmUgXCIgKyBzdG9yZU5hbWUpO1xyXG4gICAgICAgIH0pKTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIFJpcHVsaXNjZSBsbyBTdG9yYWdlIExvY2FsZSBkaSBvZ25pIGNvc2Egc2FsdmF0YVxyXG4gICAgICogXHJcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gc3RvcmVOYW1lIENoaWF2ZSBkZWwgbG9jYWxTdG9yYWdlIGRhIHJpcHVsaXJlXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBjbGVhcigpOiBPYnNlcnZhYmxlPGJvb2xlYW4+IHtcclxuICAgICAgICByZXR1cm4gdGhpcy5fc3RvcmFnZS5jbGVhcigpLnBpcGUoZmlyc3QoKSwgdGFwKHJlcyA9PiB7XHJcbiAgICAgICAgICAgIGlmIChyZXMgPT0gZmFsc2UpXHJcbiAgICAgICAgICAgICAgICBjb25zb2xlLndhcm4oXCJJbXBvc3NpYmlsZSByaXB1bGlyZSBsbyBTdG9yYWdlIExvY2FsZVwiKTtcclxuICAgICAgICB9KSk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBSZXN0aXR1aXNjZSB0dXR0ZSBsZSBjaGlhdmktdmFsb3JlIGFzc29jaWF0ZSBhbGxhIHNlc3Npb25lIGNvcnJlbnRlXHJcbiAgICAgKiBcclxuICAgICAqIEByZXR1cm5zIHtPYnNlcnZhYmxlPHsgW2luZGV4OiBzdHJpbmddOiBzdHJpbmc7IH0+fSBSaXN1bHRhdG8gZGVsbGEgcXVlcnlcclxuICAgICAqL1xyXG4gICAgcHVibGljIGdldEFsbCgpOiBPYnNlcnZhYmxlPHsgW2luZGV4OiBzdHJpbmddOiBzdHJpbmc7IH0+IHtcclxuICAgICAgICByZXR1cm4gdGhpcy5fc3RvcmFnZS5nZXRBbGwoKS5waXBlKGZpcnN0KCkpO1xyXG4gICAgfVxyXG59Il19
|
|
@@ -2,7 +2,7 @@ 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 { tap } from 'rxjs/operators';
|
|
5
|
+
import { first, tap } from 'rxjs/operators';
|
|
6
6
|
import { of } from 'rxjs';
|
|
7
7
|
|
|
8
8
|
/**
|
|
@@ -982,7 +982,7 @@ class ExportService {
|
|
|
982
982
|
columns.forEach(t => {
|
|
983
983
|
var propValue = obj.properties[t.key];
|
|
984
984
|
Object.defineProperty(obj, t.key + "_exp", { value: propValue, writable: false, enumerable: true });
|
|
985
|
-
headers.push({ label: t.label, key: t.key + "_exp", order: t.order });
|
|
985
|
+
headers.push({ label: t.label, key: t.key + "_exp", order: t.order, type: t.type });
|
|
986
986
|
});
|
|
987
987
|
//Tirati fuori tutti gli header faccio sort sull'ordinamento
|
|
988
988
|
return headers.sort((a, b) => { return a.order - b.order; });
|
|
@@ -1035,7 +1035,7 @@ class ExportService {
|
|
|
1035
1035
|
// Se è un formato data mi assicuro di non stampare mai una data 00:00:00 altrimenti in esportazione viene uno schifo
|
|
1036
1036
|
var val = obj[prop] ? this.dates.trimSeconds(obj[prop].toString()) : "";
|
|
1037
1037
|
Object.defineProperty(obj, prop + "_nofmt", { value: val, writable: false, enumerable: true });
|
|
1038
|
-
headers.push({ label: lbl ? lbl : prop + "_nofmt", key: prop + "_nofmt", order: order });
|
|
1038
|
+
headers.push({ label: lbl ? lbl : prop + "_nofmt", key: prop + "_nofmt", order: order, type: "string" });
|
|
1039
1039
|
}
|
|
1040
1040
|
else {
|
|
1041
1041
|
// Caso formato numerico
|
|
@@ -1047,7 +1047,7 @@ class ExportService {
|
|
|
1047
1047
|
// Il singolo punto che c'è, se presente (separatore decimali) lo trasformo in virgola
|
|
1048
1048
|
let valConverted = val.replace(".", ",");
|
|
1049
1049
|
Object.defineProperty(obj, prop + "_fmt", { value: valConverted, writable: false, enumerable: true });
|
|
1050
|
-
headers.push({ label: lbl ? lbl : prop + "_fmt", key: prop + "_fmt", order: order });
|
|
1050
|
+
headers.push({ label: lbl ? lbl : prop + "_fmt", key: prop + "_fmt", order: order, type: "number" });
|
|
1051
1051
|
}
|
|
1052
1052
|
else {
|
|
1053
1053
|
// Se ho un formato data trasformo in dayjs, formatto ed esporto
|
|
@@ -1055,7 +1055,7 @@ class ExportService {
|
|
|
1055
1055
|
// Se non funziona provo a definirgli la formattazione standard del metering per quel linguaggio
|
|
1056
1056
|
let val = this.dates.getFormatted(obj[prop], format.length <= 10, false);
|
|
1057
1057
|
Object.defineProperty(obj, prop + "_fmt", { value: val !== null && val !== void 0 ? val : "", writable: false, enumerable: true });
|
|
1058
|
-
headers.push({ label: lbl ? lbl : prop + "_fmt", key: prop + "_fmt", order: order });
|
|
1058
|
+
headers.push({ label: lbl ? lbl : prop + "_fmt", key: prop + "_fmt", order: order, type: "date" });
|
|
1059
1059
|
}
|
|
1060
1060
|
}
|
|
1061
1061
|
}
|
|
@@ -1088,16 +1088,19 @@ class ExportService {
|
|
|
1088
1088
|
let order = obj[prop + csvOrdPrefix];
|
|
1089
1089
|
//Se per questa proprietà ho un formato lo applico
|
|
1090
1090
|
let format = obj[prop + csvFormatPrefix];
|
|
1091
|
+
let type = "string";
|
|
1091
1092
|
if (format == "F") {
|
|
1092
1093
|
let val = value.toString();
|
|
1093
1094
|
val = val.replace(/,/, "");
|
|
1094
1095
|
value = val.replace(".", ",");
|
|
1096
|
+
type = "number";
|
|
1095
1097
|
}
|
|
1096
1098
|
else if (format) {
|
|
1097
1099
|
value = this.dates.getFormatted(value, format.length <= 10, false);
|
|
1100
|
+
type = "date";
|
|
1098
1101
|
}
|
|
1099
1102
|
Object.defineProperty(obj, prop, { value: value, writable: false, enumerable: true });
|
|
1100
|
-
headers.push({ label: lbl ? lbl : prop, key: prop, order: order });
|
|
1103
|
+
headers.push({ label: lbl ? lbl : prop, key: prop, order: order, type: type });
|
|
1101
1104
|
}
|
|
1102
1105
|
/**
|
|
1103
1106
|
* Setup per l'esportazione di una lista di valori pivottati dinamicamente:
|
|
@@ -1139,15 +1142,19 @@ class ExportService {
|
|
|
1139
1142
|
tmpRes = JSON.parse(JSON.stringify(listitem));
|
|
1140
1143
|
jumps.forEach(pp => { tmpRes = tmpRes[pp]; });
|
|
1141
1144
|
let value = tmpRes;
|
|
1145
|
+
let type = "string";
|
|
1142
1146
|
if (valueformat == "F") {
|
|
1143
1147
|
let val = value != null ? value.toString() : "";
|
|
1144
1148
|
val = val.replace(/,/, "");
|
|
1145
1149
|
value = val.replace(".", ",");
|
|
1150
|
+
type = "number";
|
|
1146
1151
|
}
|
|
1147
|
-
else if (valueformat)
|
|
1152
|
+
else if (valueformat) {
|
|
1148
1153
|
value = this.dates.getFormatted(obj[prop], valueformat.length <= 10, false);
|
|
1154
|
+
type = "date";
|
|
1155
|
+
}
|
|
1149
1156
|
Object.defineProperty(obj, prop + idx, { value: value, writable: false });
|
|
1150
|
-
headers.push({ label: header, key: prop + idx, order: order + idx });
|
|
1157
|
+
headers.push({ label: header, key: prop + idx, order: order + idx, type: type });
|
|
1151
1158
|
}
|
|
1152
1159
|
}
|
|
1153
1160
|
/**
|
|
@@ -1194,7 +1201,7 @@ class ExportService {
|
|
|
1194
1201
|
let value = tmpRes;
|
|
1195
1202
|
let propname = prop + idx.toString() + idxinternal.toString();
|
|
1196
1203
|
Object.defineProperty(obj, propname, { value: value, writable: false });
|
|
1197
|
-
headers.push({ label: header + " " + desc, key: propname, order: order + idx });
|
|
1204
|
+
headers.push({ label: header + " " + desc, key: propname, order: order + idx, type: 'string' });
|
|
1198
1205
|
});
|
|
1199
1206
|
}
|
|
1200
1207
|
}
|
|
@@ -1739,6 +1746,20 @@ UtilityService.decorators = [
|
|
|
1739
1746
|
* che generi una chiave univoca di sessione su cui tutte le operazioni di questa classe saranno eseguite
|
|
1740
1747
|
*/
|
|
1741
1748
|
class BaseStorageProvider {
|
|
1749
|
+
/** @ignore Costruttore */
|
|
1750
|
+
constructor(session) {
|
|
1751
|
+
this.session = session;
|
|
1752
|
+
}
|
|
1753
|
+
/**
|
|
1754
|
+
* Ottiene la chiave "Reale" da utilizzare per la persistenza di una chiave generica
|
|
1755
|
+
*
|
|
1756
|
+
* @param {string} key Chiave da storicizzare
|
|
1757
|
+
*
|
|
1758
|
+
* @returns {string} Unione fra l'identificativo della sessione e la chiave specificata
|
|
1759
|
+
*/
|
|
1760
|
+
getKey(key) {
|
|
1761
|
+
return this.session.getSessionKey() + "§" + key + "§";
|
|
1762
|
+
}
|
|
1742
1763
|
}
|
|
1743
1764
|
|
|
1744
1765
|
/**
|
|
@@ -1750,6 +1771,9 @@ class BaseSessionRetriever {
|
|
|
1750
1771
|
// Angular
|
|
1751
1772
|
/**
|
|
1752
1773
|
* Service che fornisce funzionalità di base per storicizzazione e recupero oggetti dallo Storage Locale
|
|
1774
|
+
*
|
|
1775
|
+
* N.B: In ogni chiamata è presente l'operatore rxjs **first()** per far sì che a prescindere dall'implementazione utente/default gli
|
|
1776
|
+
* observable effettuino l'unsubscribe automaticamente terminata la prima operazine
|
|
1753
1777
|
*/
|
|
1754
1778
|
class StorageService {
|
|
1755
1779
|
/**
|
|
@@ -1780,10 +1804,9 @@ class StorageService {
|
|
|
1780
1804
|
}
|
|
1781
1805
|
else
|
|
1782
1806
|
finalItem = item;
|
|
1783
|
-
return this._storage.setItem(
|
|
1784
|
-
if (res == false)
|
|
1807
|
+
return this._storage.setItem(storeName, finalItem).pipe(first(), tap(res => {
|
|
1808
|
+
if (res == false)
|
|
1785
1809
|
console.error("Impossibile effettuare il salvataggio dell'oggetto all'interno dello Storage Locale per la chiave " + storeName);
|
|
1786
|
-
}
|
|
1787
1810
|
}));
|
|
1788
1811
|
}
|
|
1789
1812
|
/**
|
|
@@ -1794,7 +1817,7 @@ class StorageService {
|
|
|
1794
1817
|
* @returns {any} Oggetto recuperato e deserializzato
|
|
1795
1818
|
*/
|
|
1796
1819
|
getItem(storeName) {
|
|
1797
|
-
return this._storage.getItem(
|
|
1820
|
+
return this._storage.getItem(storeName).pipe(first(), tap(res => {
|
|
1798
1821
|
if (res == null)
|
|
1799
1822
|
console.warn("Impossibile ottenere l'oggetto salvato con chiave " + storeName);
|
|
1800
1823
|
}));
|
|
@@ -1805,7 +1828,7 @@ class StorageService {
|
|
|
1805
1828
|
* @param {string} storeName Chiave del localStorage da ripulire
|
|
1806
1829
|
*/
|
|
1807
1830
|
removeItem(storeName) {
|
|
1808
|
-
return this._storage.removeItem(
|
|
1831
|
+
return this._storage.removeItem(storeName).pipe(first(), tap(res => {
|
|
1809
1832
|
if (res == false)
|
|
1810
1833
|
console.warn("Impossibile rimuovere l'oggetto salvato con chiave " + storeName);
|
|
1811
1834
|
}));
|
|
@@ -1816,7 +1839,7 @@ class StorageService {
|
|
|
1816
1839
|
* @param {string} storeName Chiave del localStorage da ripulire
|
|
1817
1840
|
*/
|
|
1818
1841
|
clear() {
|
|
1819
|
-
return this._storage.clear(
|
|
1842
|
+
return this._storage.clear().pipe(first(), tap(res => {
|
|
1820
1843
|
if (res == false)
|
|
1821
1844
|
console.warn("Impossibile ripulire lo Storage Locale");
|
|
1822
1845
|
}));
|
|
@@ -1827,7 +1850,7 @@ class StorageService {
|
|
|
1827
1850
|
* @returns {Observable<{ [index: string]: string; }>} Risultato della query
|
|
1828
1851
|
*/
|
|
1829
1852
|
getAll() {
|
|
1830
|
-
return this._storage.getAll(
|
|
1853
|
+
return this._storage.getAll().pipe(first());
|
|
1831
1854
|
}
|
|
1832
1855
|
}
|
|
1833
1856
|
StorageService.decorators = [
|
|
@@ -1865,10 +1888,10 @@ DefaultSessionRetriever.ctorParameters = () => [];
|
|
|
1865
1888
|
|
|
1866
1889
|
/** Implementazione di default per la classe **BaseStorageProvider** */
|
|
1867
1890
|
class DefaultStorageProvider extends BaseStorageProvider {
|
|
1868
|
-
/** @ignore Costruttore
|
|
1869
|
-
constructor() { super(); }
|
|
1891
|
+
/** @ignore Costruttore */
|
|
1892
|
+
constructor(session) { super(session); }
|
|
1870
1893
|
/** @ignore Implementazione di Default con localStorage. Identity viene ignorata perché essendo già nel localStorage è già per sito */
|
|
1871
|
-
setItem(
|
|
1894
|
+
setItem(key, value) {
|
|
1872
1895
|
try {
|
|
1873
1896
|
localStorage.setItem(key, JSON.stringify(value));
|
|
1874
1897
|
return of(true);
|
|
@@ -1893,7 +1916,7 @@ class DefaultStorageProvider extends BaseStorageProvider {
|
|
|
1893
1916
|
}
|
|
1894
1917
|
}
|
|
1895
1918
|
/** @ignore Implementazione di Default con localStorage. Identity viene ignorata perché essendo già nel localStorage è già per sito */
|
|
1896
|
-
getItem(
|
|
1919
|
+
getItem(key) {
|
|
1897
1920
|
try {
|
|
1898
1921
|
var ret = JSON.parse(localStorage.getItem(key));
|
|
1899
1922
|
return of(ret);
|
|
@@ -1903,7 +1926,7 @@ class DefaultStorageProvider extends BaseStorageProvider {
|
|
|
1903
1926
|
}
|
|
1904
1927
|
}
|
|
1905
1928
|
/** @ignore Implementazione di Default con localStorage. Identity viene ignorata perché essendo già nel localStorage è già per sito */
|
|
1906
|
-
removeItem(
|
|
1929
|
+
removeItem(key) {
|
|
1907
1930
|
try {
|
|
1908
1931
|
localStorage.removeItem(key);
|
|
1909
1932
|
return of(true);
|
|
@@ -1913,7 +1936,7 @@ class DefaultStorageProvider extends BaseStorageProvider {
|
|
|
1913
1936
|
}
|
|
1914
1937
|
}
|
|
1915
1938
|
/** @ignore Implementazione di Default con localStorage. Identity viene ignorata perché essendo già nel localStorage è già per sito */
|
|
1916
|
-
clear(
|
|
1939
|
+
clear() {
|
|
1917
1940
|
try {
|
|
1918
1941
|
localStorage.clear();
|
|
1919
1942
|
return of(true);
|
|
@@ -1923,7 +1946,7 @@ class DefaultStorageProvider extends BaseStorageProvider {
|
|
|
1923
1946
|
}
|
|
1924
1947
|
}
|
|
1925
1948
|
/** @ignore Implementazione di Default con localStorage. Identity viene ignorata perché essendo già nel localStorage è già per sito */
|
|
1926
|
-
getAll(
|
|
1949
|
+
getAll() {
|
|
1927
1950
|
var ret = {};
|
|
1928
1951
|
for (let key in localStorage) {
|
|
1929
1952
|
ret[key] = localStorage[key];
|
|
@@ -1934,7 +1957,9 @@ class DefaultStorageProvider extends BaseStorageProvider {
|
|
|
1934
1957
|
DefaultStorageProvider.decorators = [
|
|
1935
1958
|
{ type: Injectable }
|
|
1936
1959
|
];
|
|
1937
|
-
DefaultStorageProvider.ctorParameters = () => [
|
|
1960
|
+
DefaultStorageProvider.ctorParameters = () => [
|
|
1961
|
+
{ type: BaseSessionRetriever }
|
|
1962
|
+
];
|
|
1938
1963
|
|
|
1939
1964
|
// Angular
|
|
1940
1965
|
/**
|