@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.
@@ -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(this._session.getSessionKey(), storeName, finalItem).pipe(tap(res => {
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(this._session.getSessionKey(), storeName).pipe(tap(res => {
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(this._session.getSessionKey(), storeName).pipe(tap(res => {
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(this._session.getSessionKey()).pipe(tap(res => {
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(this._session.getSessionKey());
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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXh0ZW5zaW9ucy5zdG9yYWdlLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9leHRlbnNpb25zL3NyYy9saWIvc2VydmljZXMvZXh0ZW5zaW9ucy5zdG9yYWdlLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsVUFBVTtBQUNWLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM3RCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSw4Q0FBOEMsQ0FBQztBQUNuRixPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSw2Q0FBNkMsQ0FBQztBQUVuRixVQUFVO0FBQ1YsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sV0FBVyxDQUFDO0FBSTdDLE9BQU8sRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUVyQzs7R0FFRztBQUVILE1BQU0sT0FBTyxjQUFjO0lBRXZCOzs7O09BSUc7SUFDSCxZQUEwRCxnQkFBd0IsRUFBVSxRQUE4QixFQUFVLFFBQTZCO1FBQXZHLHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBUTtRQUFVLGFBQVEsR0FBUixRQUFRLENBQXNCO1FBQVUsYUFBUSxHQUFSLFFBQVEsQ0FBcUI7SUFBSSxDQUFDO0lBRXRLOzs7Ozs7T0FNRztJQUNJLE9BQU8sQ0FBSSxTQUFpQixFQUFFLElBQU87UUFDeEMsSUFBSSxTQUFjLENBQUM7UUFDbkIsNEZBQTRGO1FBQzVGLElBQVUsSUFBSyxDQUFDLEtBQUssSUFBVSxJQUFLLENBQUMsSUFBSSxFQUFFO1lBQ3ZDLFNBQVMsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztZQUM3QyxTQUFTLENBQUMsS0FBSyxHQUFHLEVBQUUsQ0FBQztZQUNyQixTQUFTLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQztZQUN0QixTQUFVLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQyxnQkFBZ0IsSUFBSSxLQUFLLENBQUM7U0FDakU7O1lBRUcsU0FBUyxHQUFHLElBQUksQ0FBQztRQUVyQixPQUFPLElBQUksQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsYUFBYSxFQUFFLEVBQUUsU0FBUyxFQUFFLFNBQVMsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEVBQUU7WUFDN0YsSUFBSSxHQUFHLElBQUksS0FBSyxFQUFFO2dCQUNkLE9BQU8sQ0FBQyxLQUFLLENBQUMsb0dBQW9HLEdBQUcsU0FBUyxDQUFDLENBQUM7YUFDbkk7UUFDTCxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ1IsQ0FBQztJQUVEOzs7Ozs7T0FNRztJQUNJLE9BQU8sQ0FBSSxTQUFpQjtRQUMvQixPQUFPLElBQUksQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFJLElBQUksQ0FBQyxRQUFRLENBQUMsYUFBYSxFQUFFLEVBQUUsU0FBUyxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsRUFBRTtZQUNyRixJQUFJLEdBQUcsSUFBSSxJQUFJO2dCQUNYLE9BQU8sQ0FBQyxJQUFJLENBQUMsb0RBQW9ELEdBQUcsU0FBUyxDQUFDLENBQUM7UUFDdkYsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNSLENBQUM7SUFFRDs7OztPQUlHO0lBQ0ksVUFBVSxDQUFDLFNBQWlCO1FBQy9CLE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxhQUFhLEVBQUUsRUFBRSxTQUFTLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxFQUFFO1lBQ3JGLElBQUksR0FBRyxJQUFJLEtBQUs7Z0JBQ1osT0FBTyxDQUFDLElBQUksQ0FBQyxxREFBcUQsR0FBRyxTQUFTLENBQUMsQ0FBQztRQUN4RixDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ1IsQ0FBQztJQUVEOzs7O09BSUc7SUFDSSxLQUFLO1FBQ1IsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLGFBQWEsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsRUFBRTtZQUNyRSxJQUFJLEdBQUcsSUFBSSxLQUFLO2dCQUNaLE9BQU8sQ0FBQyxJQUFJLENBQUMsd0NBQXdDLENBQUMsQ0FBQztRQUMvRCxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ1IsQ0FBQztJQUVEOzs7O09BSUc7SUFDSSxNQUFNO1FBQ1QsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLGFBQWEsRUFBRSxDQUFDLENBQUM7SUFDL0QsQ0FBQzs7O1lBakZKLFVBQVU7Ozt5Q0FRTSxRQUFRLFlBQUksTUFBTSxTQUFDLGdCQUFnQjtZQXBCM0Msb0JBQW9CO1lBRHBCLG1CQUFtQiIsInNvdXJjZXNDb250ZW50IjpbIi8vIEFuZ3VsYXJcclxuaW1wb3J0IHsgSW5qZWN0YWJsZSwgSW5qZWN0LCBPcHRpb25hbCB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XHJcbmltcG9ydCB7IEJhc2VTdG9yYWdlUHJvdmlkZXIgfSBmcm9tIFwiLi4vbW9kZWxzL3Byb3ZpZGVycy9iYXNlL0Jhc2VTdG9yYWdlUHJvdmlkZXJcIjtcclxuaW1wb3J0IHsgQmFzZVNlc3Npb25SZXRyaWV2ZXIgfSBmcm9tIFwiLi4vbW9kZWxzL3Nlc3Npb24vYmFzZS9CYXNlU2Vzc2lvblJldHJpZXZlclwiO1xyXG5cclxuLy8gTW9kZWxsaVxyXG5pbXBvcnQgeyBBUFBTRUFSQ0hfUFJFRklYIH0gZnJvbSAnLi4vdG9rZW5zJztcclxuXHJcbi8vIFJYSlNcclxuaW1wb3J0IHsgT2JzZXJ2YWJsZSB9IGZyb20gXCJyeGpzXCI7XHJcbmltcG9ydCB7IHRhcCB9IGZyb20gXCJyeGpzL29wZXJhdG9yc1wiO1xyXG5cclxuLyoqXHJcbiAqIFNlcnZpY2UgY2hlIGZvcm5pc2NlIGZ1bnppb25hbGl0w6AgZGkgYmFzZSBwZXIgc3RvcmljaXp6YXppb25lIGUgcmVjdXBlcm8gb2dnZXR0aSBkYWxsbyBTdG9yYWdlIExvY2FsZVxyXG4gKi9cclxuQEluamVjdGFibGUoKVxyXG5leHBvcnQgY2xhc3MgU3RvcmFnZVNlcnZpY2Uge1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogQ29zdHJ1dHRvcmVcclxuICAgICAqIFxyXG4gICAgICogQGlnbm9yZVxyXG4gICAgICovXHJcbiAgICBjb25zdHJ1Y3RvcihAT3B0aW9uYWwoKSBASW5qZWN0KEFQUFNFQVJDSF9QUkVGSVgpIHByaXZhdGUgQVBQU0VBUkNIX1BSRUZJWDogc3RyaW5nLCBwcml2YXRlIF9zZXNzaW9uOiBCYXNlU2Vzc2lvblJldHJpZXZlciwgcHJpdmF0ZSBfc3RvcmFnZTogQmFzZVN0b3JhZ2VQcm92aWRlcikgeyB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBJbnNlcmlzY2UgdW4gb2dnZXR0byBjaGUgZnVuZ2EgZGEgY29udGVuaXRvcmUgZGkgb2dnZXR0aSBuZWwgbG9jYWwgc3RvcmFnZSwgcmlwdWxlbmRvbmUgZ2xpIG9nZ2V0dGkgKHN1cHBvbmVuZG8gY2hlIHNpYSB1bmEgdmlldyBkaSByaWNlcmNhKSBlIG1hcmNhbmRvbG8gY29tZSBcclxuICAgICAqIHNhbHZhdG8sIGluIG1vZG8gY2hlIHF1YW5kbyB2aWVuZSByZWN1cGVyYXRvIGlsIHNpc3RlbWEgbm9uIHBlbnNpIGNoZSBzaWEgdW4gb2dnZXR0byB2dW90byBtYSBjaGUgc2FwcGlhIGNoZSBnbGkgb2dnZXR0aSBzb24gc3RhdGkgcmlwdWxpdGkgcGVyIHJpc3Bhcm1pYXJlIHNwYXppb1xyXG4gICAgICogXHJcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gc3RvcmVOYW1lIENoaWF2ZSBkZWwgbG9jYWxTdG9yYWdlIGluIGN1aSBzdG9yaWNpenphcmUgbCdvZ2dldHRvICoqaXRlbXNDb250YWluZXIqKlxyXG4gICAgICogQHBhcmFtIHt7IGl0ZW1zOiBhbnlbXSB9fSBpdGVtc0NvbnRhaW5lciBPZ2dldHRvIGRhIHN0b3JpY2l6emFyZVxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgc2V0SXRlbTxUPihzdG9yZU5hbWU6IHN0cmluZywgaXRlbTogVCk6IE9ic2VydmFibGU8Ym9vbGVhbj4ge1xyXG4gICAgICAgIHZhciBmaW5hbEl0ZW06IGFueTtcclxuICAgICAgICAvL1NlIHN0byBzYWx2YW5kbyB1biBvZ2dldHRvIGNvbiBcIml0ZW1zXCIgZSBcInBhZ2VcIiB2dW9sIGRpcmUgY2hlIMOoIHVuIGFwcHNlYXJjaCwgbGEgcmlwdWxpc2NvXHJcbiAgICAgICAgaWYgKCg8YW55Pml0ZW0pLml0ZW1zICYmICg8YW55Pml0ZW0pLnBhZ2UpIHtcclxuICAgICAgICAgICAgZmluYWxJdGVtID0gSlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeShpdGVtKSk7XHJcbiAgICAgICAgICAgIGZpbmFsSXRlbS5pdGVtcyA9IFtdO1xyXG4gICAgICAgICAgICBmaW5hbEl0ZW0uc2F2ZWRzdGF0ZSA9IHRydWU7XHJcbiAgICAgICAgICAgICg8YW55PmZpbmFsSXRlbSkuc2F2ZWRwcmVmaXggPSB0aGlzLkFQUFNFQVJDSF9QUkVGSVggfHwgJ0hvdCc7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2VcclxuICAgICAgICAgICAgZmluYWxJdGVtID0gaXRlbTtcclxuXHJcbiAgICAgICAgcmV0dXJuIHRoaXMuX3N0b3JhZ2Uuc2V0SXRlbSh0aGlzLl9zZXNzaW9uLmdldFNlc3Npb25LZXkoKSwgc3RvcmVOYW1lLCBmaW5hbEl0ZW0pLnBpcGUodGFwKHJlcyA9PiB7XHJcbiAgICAgICAgICAgIGlmIChyZXMgPT0gZmFsc2UpIHtcclxuICAgICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoXCJJbXBvc3NpYmlsZSBlZmZldHR1YXJlIGlsIHNhbHZhdGFnZ2lvIGRlbGwnb2dnZXR0byBhbGwnaW50ZXJubyBkZWxsbyBTdG9yYWdlIExvY2FsZSBwZXIgbGEgY2hpYXZlIFwiICsgc3RvcmVOYW1lKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0pKTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIFJlY3VwZXJhIHVuIG9nZ2V0dG8gZGFsbG8gU3RvcmFnZSBMb2NhbGVcclxuICAgICAqIFxyXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IHN0b3JlTmFtZSBDaGlhdmUgZGVsIGxvY2FsU3RvcmFnZSBkYSBjdWkgcmVjdXBlcmFyZSBsJ29nZ2V0dG9cclxuICAgICAqIFxyXG4gICAgICogQHJldHVybnMge2FueX0gT2dnZXR0byByZWN1cGVyYXRvIGUgZGVzZXJpYWxpenphdG9cclxuICAgICAqL1xyXG4gICAgcHVibGljIGdldEl0ZW08VD4oc3RvcmVOYW1lOiBzdHJpbmcpOiBPYnNlcnZhYmxlPFQ+IHtcclxuICAgICAgICByZXR1cm4gdGhpcy5fc3RvcmFnZS5nZXRJdGVtPFQ+KHRoaXMuX3Nlc3Npb24uZ2V0U2Vzc2lvbktleSgpLCBzdG9yZU5hbWUpLnBpcGUodGFwKHJlcyA9PiB7XHJcbiAgICAgICAgICAgIGlmIChyZXMgPT0gbnVsbClcclxuICAgICAgICAgICAgICAgIGNvbnNvbGUud2FybihcIkltcG9zc2liaWxlIG90dGVuZXJlIGwnb2dnZXR0byBzYWx2YXRvIGNvbiBjaGlhdmUgXCIgKyBzdG9yZU5hbWUpO1xyXG4gICAgICAgIH0pKTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIFJpcHVsaXNjZSBsbyBTdG9yYWdlIExvY2FsZSBcclxuICAgICAqIFxyXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IHN0b3JlTmFtZSBDaGlhdmUgZGVsIGxvY2FsU3RvcmFnZSBkYSByaXB1bGlyZVxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgcmVtb3ZlSXRlbShzdG9yZU5hbWU6IHN0cmluZyk6IE9ic2VydmFibGU8Ym9vbGVhbj4ge1xyXG4gICAgICAgIHJldHVybiB0aGlzLl9zdG9yYWdlLnJlbW92ZUl0ZW0odGhpcy5fc2Vzc2lvbi5nZXRTZXNzaW9uS2V5KCksIHN0b3JlTmFtZSkucGlwZSh0YXAocmVzID0+IHtcclxuICAgICAgICAgICAgaWYgKHJlcyA9PSBmYWxzZSlcclxuICAgICAgICAgICAgICAgIGNvbnNvbGUud2FybihcIkltcG9zc2liaWxlIHJpbXVvdmVyZSBsJ29nZ2V0dG8gc2FsdmF0byBjb24gY2hpYXZlIFwiICsgc3RvcmVOYW1lKTtcclxuICAgICAgICB9KSk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBSaXB1bGlzY2UgbG8gU3RvcmFnZSBMb2NhbGUgZGkgb2duaSBjb3NhIHNhbHZhdGFcclxuICAgICAqIFxyXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IHN0b3JlTmFtZSBDaGlhdmUgZGVsIGxvY2FsU3RvcmFnZSBkYSByaXB1bGlyZVxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgY2xlYXIoKTogT2JzZXJ2YWJsZTxib29sZWFuPiB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuX3N0b3JhZ2UuY2xlYXIodGhpcy5fc2Vzc2lvbi5nZXRTZXNzaW9uS2V5KCkpLnBpcGUodGFwKHJlcyA9PiB7XHJcbiAgICAgICAgICAgIGlmIChyZXMgPT0gZmFsc2UpXHJcbiAgICAgICAgICAgICAgICBjb25zb2xlLndhcm4oXCJJbXBvc3NpYmlsZSByaXB1bGlyZSBsbyBTdG9yYWdlIExvY2FsZVwiKTtcclxuICAgICAgICB9KSk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBSZXN0aXR1aXNjZSB0dXR0ZSBsZSBjaGlhdmktdmFsb3JlIGFzc29jaWF0ZSBhbGxhIHNlc3Npb25lIGNvcnJlbnRlXHJcbiAgICAgKiBcclxuICAgICAqIEByZXR1cm5zIHtPYnNlcnZhYmxlPHsgW2luZGV4OiBzdHJpbmddOiBzdHJpbmc7IH0+fSBSaXN1bHRhdG8gZGVsbGEgcXVlcnlcclxuICAgICAqL1xyXG4gICAgcHVibGljIGdldEFsbCgpOiBPYnNlcnZhYmxlPHsgW2luZGV4OiBzdHJpbmddOiBzdHJpbmc7IH0+IHtcclxuICAgICAgICByZXR1cm4gdGhpcy5fc3RvcmFnZS5nZXRBbGwodGhpcy5fc2Vzc2lvbi5nZXRTZXNzaW9uS2V5KCkpO1xyXG4gICAgfVxyXG59Il19
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(this._session.getSessionKey(), storeName, finalItem).pipe(tap(res => {
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(this._session.getSessionKey(), storeName).pipe(tap(res => {
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(this._session.getSessionKey(), storeName).pipe(tap(res => {
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(this._session.getSessionKey()).pipe(tap(res => {
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(this._session.getSessionKey());
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(identity, key, value) {
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(identity, key) {
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(identity, key) {
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(identity) {
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(identity) {
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
  /**