brainloper-ui 14.1.4 → 14.1.6
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/esm2020/brainloper-ui.mjs +4 -4
- package/esm2020/public_api.mjs +56 -56
- package/esm2020/src/app/modules/brainloper-ui/brainloper-ui.module.mjs +310 -310
- package/esm2020/src/app/modules/brainloper-ui/components/bread-crumb/bread-crumb.component.mjs +29 -29
- package/esm2020/src/app/modules/brainloper-ui/components/buttons/button-icon/button-icon.component.mjs +23 -23
- package/esm2020/src/app/modules/brainloper-ui/components/buttons/button-label/button-label.component.mjs +83 -83
- package/esm2020/src/app/modules/brainloper-ui/components/carousel/carousel.component.mjs +40 -40
- package/esm2020/src/app/modules/brainloper-ui/components/combos/combos.component.mjs +176 -176
- package/esm2020/src/app/modules/brainloper-ui/components/data-table/data-table.component.mjs +728 -728
- package/esm2020/src/app/modules/brainloper-ui/components/data-table/table-modal/table-modal.component.mjs +118 -118
- package/esm2020/src/app/modules/brainloper-ui/components/file-input/file-input.component.mjs +186 -186
- package/esm2020/src/app/modules/brainloper-ui/components/file-input/imagenes/doc.mjs +1 -1
- package/esm2020/src/app/modules/brainloper-ui/components/file-input/imagenes/fondoTransparente.mjs +1 -1
- package/esm2020/src/app/modules/brainloper-ui/components/file-input/imagenes/pdf.mjs +1 -1
- package/esm2020/src/app/modules/brainloper-ui/components/filters/filters.component.mjs +222 -222
- package/esm2020/src/app/modules/brainloper-ui/components/report/template-fuel/template-fuel.component.mjs +115 -81
- package/esm2020/src/app/modules/brainloper-ui/components/report/template-ot/template-ot.component.mjs +145 -0
- package/esm2020/src/app/modules/brainloper-ui/components/select-filter/select-filter.component.mjs +108 -108
- package/esm2020/src/app/modules/directives/carousel-item.directive.mjs +18 -18
- package/esm2020/src/app/modules/interfaces/buttons/button-icon.mjs +2 -2
- package/esm2020/src/app/modules/interfaces/buttons/button-lavel-edit.mjs +2 -2
- package/esm2020/src/app/modules/interfaces/combos/combos-configuration.mjs +2 -2
- package/esm2020/src/app/modules/interfaces/data-table/params.mjs +2 -2
- package/esm2020/src/app/modules/interfaces/data-table/rules.mjs +2 -2
- package/esm2020/src/app/modules/interfaces/data-table/table-columns.mjs +2 -2
- package/esm2020/src/app/modules/interfaces/data-table/table-configuration.mjs +2 -2
- package/esm2020/src/app/modules/interfaces/enum/enumActions.mjs +8 -8
- package/esm2020/src/app/modules/interfaces/enum/enumRules.mjs +8 -8
- package/esm2020/src/app/modules/interfaces/file-forms-service/file-forms-params.mjs +2 -2
- package/esm2020/src/app/modules/interfaces/file-forms-service/file-input-params.mjs +2 -2
- package/esm2020/src/app/modules/interfaces/filters/header-filters.mjs +2 -2
- package/esm2020/src/app/modules/interfaces/menu-break-crumb/menu-break-crumb.mjs +8 -8
- package/esm2020/src/app/modules/interfaces/report/template-pdf-base.mjs +2 -0
- package/esm2020/src/app/modules/interfaces/report/template-pdf-ot.mjs +2 -2
- package/esm2020/src/app/modules/interfaces/report/template-pfd-fo.mjs +2 -2
- package/esm2020/src/app/modules/services/crypto.service.mjs +37 -37
- package/esm2020/src/app/modules/services/export-data.service.mjs +166 -166
- package/esm2020/src/app/modules/services/file-forms.service.mjs +24 -24
- package/esm2020/src/app/modules/services/fuel-order-pdf.service.mjs +528 -0
- package/esm2020/src/app/modules/services/functions.service.mjs +54 -54
- package/esm2020/src/app/modules/services/generate-pdf.service.mjs +109 -58
- package/esm2020/src/app/modules/services/http.service.mjs +97 -97
- package/esm2020/src/app/modules/services/loading/loading.component.mjs +28 -28
- package/esm2020/src/app/modules/services/local-storage.service.mjs +115 -115
- package/esm2020/src/app/modules/services/message.service.mjs +200 -200
- package/esm2020/src/app/modules/services/screen-size-util.mjs +6 -6
- package/esm2020/src/app/modules/services/session.service.mjs +42 -42
- package/esm2020/src/app/modules/services/work-order-pdf.service.mjs +384 -0
- package/fesm2015/brainloper-ui.mjs +3859 -2818
- package/fesm2015/brainloper-ui.mjs.map +1 -1
- package/fesm2020/brainloper-ui.mjs +3831 -2780
- package/fesm2020/brainloper-ui.mjs.map +1 -1
- package/index.d.ts +5 -5
- package/package.json +3 -2
- package/public_api.d.ts +55 -55
- package/src/app/modules/brainloper-ui/brainloper-ui.module.d.ts +62 -62
- package/src/app/modules/brainloper-ui/components/bread-crumb/bread-crumb.component.d.ts +13 -13
- package/src/app/modules/brainloper-ui/components/buttons/button-icon/button-icon.component.d.ts +10 -10
- package/src/app/modules/brainloper-ui/components/buttons/button-label/button-label.component.d.ts +24 -24
- package/src/app/modules/brainloper-ui/components/carousel/carousel.component.d.ts +16 -16
- package/src/app/modules/brainloper-ui/components/combos/combos.component.d.ts +46 -46
- package/src/app/modules/brainloper-ui/components/data-table/data-table.component.d.ts +125 -125
- package/src/app/modules/brainloper-ui/components/data-table/table-modal/table-modal.component.d.ts +21 -21
- package/src/app/modules/brainloper-ui/components/file-input/file-input.component.d.ts +42 -42
- package/src/app/modules/brainloper-ui/components/file-input/imagenes/doc.d.ts +2 -2
- package/src/app/modules/brainloper-ui/components/file-input/imagenes/fondoTransparente.d.ts +2 -2
- package/src/app/modules/brainloper-ui/components/file-input/imagenes/pdf.d.ts +2 -2
- package/src/app/modules/brainloper-ui/components/filters/filters.component.d.ts +30 -30
- package/src/app/modules/brainloper-ui/components/report/template-fuel/template-fuel.component.d.ts +41 -36
- package/src/app/modules/brainloper-ui/components/report/{generate-pdf/generate-pdf.component.d.ts → template-ot/template-ot.component.d.ts} +40 -35
- package/src/app/modules/brainloper-ui/components/select-filter/select-filter.component.d.ts +26 -26
- package/src/app/modules/directives/carousel-item.directive.d.ts +9 -9
- package/src/app/modules/interfaces/buttons/button-icon.d.ts +9 -9
- package/src/app/modules/interfaces/buttons/button-lavel-edit.d.ts +6 -6
- package/src/app/modules/interfaces/combos/combos-configuration.d.ts +13 -13
- package/src/app/modules/interfaces/data-table/params.d.ts +7 -7
- package/src/app/modules/interfaces/data-table/rules.d.ts +8 -8
- package/src/app/modules/interfaces/data-table/table-columns.d.ts +25 -25
- package/src/app/modules/interfaces/data-table/table-configuration.d.ts +26 -26
- package/src/app/modules/interfaces/enum/enumActions.d.ts +6 -6
- package/src/app/modules/interfaces/enum/enumRules.d.ts +6 -6
- package/src/app/modules/interfaces/file-forms-service/file-forms-params.d.ts +4 -4
- package/src/app/modules/interfaces/file-forms-service/file-input-params.d.ts +13 -13
- package/src/app/modules/interfaces/filters/header-filters.d.ts +13 -13
- package/src/app/modules/interfaces/menu-break-crumb/menu-break-crumb.d.ts +10 -10
- package/src/app/modules/interfaces/report/template-pdf-base.d.ts +17 -0
- package/src/app/modules/interfaces/report/template-pdf-ot.d.ts +6 -19
- package/src/app/modules/interfaces/report/template-pfd-fo.d.ts +7 -20
- package/src/app/modules/services/crypto.service.d.ts +10 -10
- package/src/app/modules/services/export-data.service.d.ts +18 -18
- package/src/app/modules/services/file-forms.service.d.ts +7 -7
- package/src/app/modules/services/fuel-order-pdf.service.d.ts +59 -0
- package/src/app/modules/services/functions.service.d.ts +13 -13
- package/src/app/modules/services/generate-pdf.service.d.ts +21 -12
- package/src/app/modules/services/http.service.d.ts +22 -22
- package/src/app/modules/services/loading/loading.component.d.ts +15 -15
- package/src/app/modules/services/local-storage.service.d.ts +49 -49
- package/src/app/modules/services/message.service.d.ts +23 -23
- package/src/app/modules/services/screen-size-util.d.ts +3 -3
- package/src/app/modules/services/session.service.d.ts +14 -14
- package/src/app/modules/services/work-order-pdf.service.d.ts +60 -0
- package/esm2020/src/app/modules/brainloper-ui/components/report/generate-pdf/generate-pdf.component.mjs +0 -80
|
@@ -1,28 +1,28 @@
|
|
|
1
|
-
import { Component, Inject, ViewEncapsulation } from '@angular/core';
|
|
2
|
-
import { MAT_DIALOG_DATA } from '@angular/material/dialog';
|
|
3
|
-
import * as i0 from "@angular/core";
|
|
4
|
-
import * as i1 from "@angular/material/dialog";
|
|
5
|
-
export class LoadingComponent {
|
|
6
|
-
constructor(dialogRef, data) {
|
|
7
|
-
this.dialogRef = dialogRef;
|
|
8
|
-
this.data = data;
|
|
9
|
-
this.options = {
|
|
10
|
-
path: '/assets/loading.json'
|
|
11
|
-
};
|
|
12
|
-
}
|
|
13
|
-
ngOnInit() {
|
|
14
|
-
}
|
|
15
|
-
animationCreated(animationItem) {
|
|
16
|
-
console.log(animationItem);
|
|
17
|
-
}
|
|
18
|
-
}
|
|
19
|
-
LoadingComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: LoadingComponent, deps: [{ token: i1.MatDialogRef }, { token: MAT_DIALOG_DATA }], target: i0.ɵɵFactoryTarget.Component });
|
|
20
|
-
LoadingComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: LoadingComponent, selector: "app-loading", ngImport: i0, template: "<div style=\"display: flex; justify-content: center;align-items: center; flex-direction: column;\">\n\n <div style='font-size: 20px;'>\n <strong>{{data.title}}</strong>\n </div>\n <div>\n <!-- <ng-lottie width='170px' [options]=\"options\" (animationCreated)=\"animationCreated($event)\"></ng-lottie> -->\n <img width='170px' src=\"assets/loading.gif\" alt=\"\">\n </div>\n <div style='text-align: center;'>\n {{data.message}}\n </div>\n\n</div>\n", styles: [".mat-dialog-container{overflow:hidden!important;background-color:#fff!important}\n"], encapsulation: i0.ViewEncapsulation.None });
|
|
21
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: LoadingComponent, decorators: [{
|
|
22
|
-
type: Component,
|
|
23
|
-
args: [{ selector: 'app-loading', encapsulation: ViewEncapsulation.None, template: "<div style=\"display: flex; justify-content: center;align-items: center; flex-direction: column;\">\n\n <div style='font-size: 20px;'>\n <strong>{{data.title}}</strong>\n </div>\n <div>\n <!-- <ng-lottie width='170px' [options]=\"options\" (animationCreated)=\"animationCreated($event)\"></ng-lottie> -->\n <img width='170px' src=\"assets/loading.gif\" alt=\"\">\n </div>\n <div style='text-align: center;'>\n {{data.message}}\n </div>\n\n</div>\n", styles: [".mat-dialog-container{overflow:hidden!important;background-color:#fff!important}\n"] }]
|
|
24
|
-
}], ctorParameters: function () { return [{ type: i1.MatDialogRef }, { type: undefined, decorators: [{
|
|
25
|
-
type: Inject,
|
|
26
|
-
args: [MAT_DIALOG_DATA]
|
|
27
|
-
}] }]; } });
|
|
28
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
1
|
+
import { Component, Inject, ViewEncapsulation } from '@angular/core';
|
|
2
|
+
import { MAT_DIALOG_DATA } from '@angular/material/dialog';
|
|
3
|
+
import * as i0 from "@angular/core";
|
|
4
|
+
import * as i1 from "@angular/material/dialog";
|
|
5
|
+
export class LoadingComponent {
|
|
6
|
+
constructor(dialogRef, data) {
|
|
7
|
+
this.dialogRef = dialogRef;
|
|
8
|
+
this.data = data;
|
|
9
|
+
this.options = {
|
|
10
|
+
path: '/assets/loading.json'
|
|
11
|
+
};
|
|
12
|
+
}
|
|
13
|
+
ngOnInit() {
|
|
14
|
+
}
|
|
15
|
+
animationCreated(animationItem) {
|
|
16
|
+
console.log(animationItem);
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
LoadingComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: LoadingComponent, deps: [{ token: i1.MatDialogRef }, { token: MAT_DIALOG_DATA }], target: i0.ɵɵFactoryTarget.Component });
|
|
20
|
+
LoadingComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: LoadingComponent, selector: "app-loading", ngImport: i0, template: "<div style=\"display: flex; justify-content: center;align-items: center; flex-direction: column;\">\r\n\r\n <div style='font-size: 20px;'>\r\n <strong>{{data.title}}</strong>\r\n </div>\r\n <div>\r\n <!-- <ng-lottie width='170px' [options]=\"options\" (animationCreated)=\"animationCreated($event)\"></ng-lottie> -->\r\n <img width='170px' src=\"assets/loading.gif\" alt=\"\">\r\n </div>\r\n <div style='text-align: center;'>\r\n {{data.message}}\r\n </div>\r\n\r\n</div>\r\n", styles: [".mat-dialog-container{overflow:hidden!important;background-color:#fff!important}\n"], encapsulation: i0.ViewEncapsulation.None });
|
|
21
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: LoadingComponent, decorators: [{
|
|
22
|
+
type: Component,
|
|
23
|
+
args: [{ selector: 'app-loading', encapsulation: ViewEncapsulation.None, template: "<div style=\"display: flex; justify-content: center;align-items: center; flex-direction: column;\">\r\n\r\n <div style='font-size: 20px;'>\r\n <strong>{{data.title}}</strong>\r\n </div>\r\n <div>\r\n <!-- <ng-lottie width='170px' [options]=\"options\" (animationCreated)=\"animationCreated($event)\"></ng-lottie> -->\r\n <img width='170px' src=\"assets/loading.gif\" alt=\"\">\r\n </div>\r\n <div style='text-align: center;'>\r\n {{data.message}}\r\n </div>\r\n\r\n</div>\r\n", styles: [".mat-dialog-container{overflow:hidden!important;background-color:#fff!important}\n"] }]
|
|
24
|
+
}], ctorParameters: function () { return [{ type: i1.MatDialogRef }, { type: undefined, decorators: [{
|
|
25
|
+
type: Inject,
|
|
26
|
+
args: [MAT_DIALOG_DATA]
|
|
27
|
+
}] }]; } });
|
|
28
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9hZGluZy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBwL21vZHVsZXMvc2VydmljZXMvbG9hZGluZy9sb2FkaW5nLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvbW9kdWxlcy9zZXJ2aWNlcy9sb2FkaW5nL2xvYWRpbmcuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBVSxNQUFNLEVBQUUsaUJBQWlCLEVBQUcsTUFBTSxlQUFlLENBQUM7QUFHOUUsT0FBTyxFQUFnQixlQUFlLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQzs7O0FBU3pFLE1BQU0sT0FBTyxnQkFBZ0I7SUFNM0IsWUFDUyxTQUF5QyxFQUNoQixJQUFJO1FBRDdCLGNBQVMsR0FBVCxTQUFTLENBQWdDO1FBQ2hCLFNBQUksR0FBSixJQUFJLENBQUE7UUFOdEMsWUFBTyxHQUFxQjtZQUMxQixJQUFJLEVBQUUsc0JBQXNCO1NBQzdCLENBQUM7SUFLRSxDQUFDO0lBRUwsUUFBUTtJQUVSLENBQUM7SUFFRCxnQkFBZ0IsQ0FBQyxhQUE0QjtRQUMzQyxPQUFPLENBQUMsR0FBRyxDQUFDLGFBQWEsQ0FBQyxDQUFDO0lBQzdCLENBQUM7OzZHQWpCVSxnQkFBZ0IsOENBUWpCLGVBQWU7aUdBUmQsZ0JBQWdCLG1EQ1o3QiwyZ0JBY0E7MkZERmEsZ0JBQWdCO2tCQU41QixTQUFTOytCQUNFLGFBQWEsaUJBR1IsaUJBQWlCLENBQUMsSUFBSTs7MEJBVWxDLE1BQU07MkJBQUMsZUFBZSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgT25Jbml0LCBJbmplY3QsIFZpZXdFbmNhcHN1bGF0aW9uICB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBBbmltYXRpb25JdGVtIH0gZnJvbSAnbG90dGllLXdlYic7XHJcbmltcG9ydCB7IEFuaW1hdGlvbk9wdGlvbnMgfSBmcm9tICduZ3gtbG90dGllJztcclxuaW1wb3J0IHsgTWF0RGlhbG9nUmVmLCBNQVRfRElBTE9HX0RBVEEgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9kaWFsb2cnO1xyXG5cclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnYXBwLWxvYWRpbmcnLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9sb2FkaW5nLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9sb2FkaW5nLmNvbXBvbmVudC5zY3NzJ10sXHJcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZVxyXG59KVxyXG5leHBvcnQgY2xhc3MgTG9hZGluZ0NvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XHJcblxyXG4gIG9wdGlvbnM6IEFuaW1hdGlvbk9wdGlvbnMgPSB7XHJcbiAgICBwYXRoOiAnL2Fzc2V0cy9sb2FkaW5nLmpzb24nXHJcbiAgfTtcclxuIFxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHVibGljIGRpYWxvZ1JlZjogTWF0RGlhbG9nUmVmPExvYWRpbmdDb21wb25lbnQ+LFxyXG4gICAgQEluamVjdChNQVRfRElBTE9HX0RBVEEpIHB1YmxpYyBkYXRhXHJcbiAgKSB7IH1cclxuXHJcbiAgbmdPbkluaXQoKTogdm9pZCB7XHJcblxyXG4gIH1cclxuXHJcbiAgYW5pbWF0aW9uQ3JlYXRlZChhbmltYXRpb25JdGVtOiBBbmltYXRpb25JdGVtKTogdm9pZCB7XHJcbiAgICBjb25zb2xlLmxvZyhhbmltYXRpb25JdGVtKTtcclxuICB9XHJcblxyXG4gIFxyXG5cclxufVxyXG4iLCI8ZGl2IHN0eWxlPVwiZGlzcGxheTogZmxleDsganVzdGlmeS1jb250ZW50OiBjZW50ZXI7YWxpZ24taXRlbXM6IGNlbnRlcjsgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcIj5cclxuXHJcbiAgICA8ZGl2IHN0eWxlPSdmb250LXNpemU6IDIwcHg7Jz5cclxuICAgICAgICA8c3Ryb25nPnt7ZGF0YS50aXRsZX19PC9zdHJvbmc+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxkaXY+XHJcbiAgICAgICAgPCEtLSA8bmctbG90dGllIHdpZHRoPScxNzBweCcgW29wdGlvbnNdPVwib3B0aW9uc1wiIChhbmltYXRpb25DcmVhdGVkKT1cImFuaW1hdGlvbkNyZWF0ZWQoJGV2ZW50KVwiPjwvbmctbG90dGllPiAtLT5cclxuICAgICAgICA8aW1nIHdpZHRoPScxNzBweCcgc3JjPVwiYXNzZXRzL2xvYWRpbmcuZ2lmXCIgYWx0PVwiXCI+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxkaXYgc3R5bGU9J3RleHQtYWxpZ246IGNlbnRlcjsnPlxyXG4gICAgICAgIHt7ZGF0YS5tZXNzYWdlfX1cclxuICAgIDwvZGl2PlxyXG5cclxuPC9kaXY+XHJcbiJdfQ==
|
|
@@ -1,115 +1,115 @@
|
|
|
1
|
-
import { compress, decompress } from 'lz-string';
|
|
2
|
-
import { Injectable } from '@angular/core';
|
|
3
|
-
import * as i0 from "@angular/core";
|
|
4
|
-
export class LocalStorageService {
|
|
5
|
-
constructor() {
|
|
6
|
-
this.prefix = 'bl-f';
|
|
7
|
-
this.store = window.localStorage;
|
|
8
|
-
this.prefix += '.';
|
|
9
|
-
}
|
|
10
|
-
/**
|
|
11
|
-
* set key in local storage
|
|
12
|
-
* @param key key
|
|
13
|
-
* @param value value
|
|
14
|
-
*/
|
|
15
|
-
set(key, value) {
|
|
16
|
-
key = this.prefix + key;
|
|
17
|
-
this.store.setItem(key, compress(JSON.stringify(value))); // compress data
|
|
18
|
-
return true;
|
|
19
|
-
}
|
|
20
|
-
/**
|
|
21
|
-
* get key in local storage
|
|
22
|
-
* @param key key
|
|
23
|
-
* @returns value as object
|
|
24
|
-
*/
|
|
25
|
-
get(key) {
|
|
26
|
-
key = this.prefix + key;
|
|
27
|
-
const datacompressed = this.store.getItem(key);
|
|
28
|
-
if (!datacompressed) {
|
|
29
|
-
return null;
|
|
30
|
-
}
|
|
31
|
-
const item = decompress(datacompressed); // decompress
|
|
32
|
-
return JSON.parse(item);
|
|
33
|
-
}
|
|
34
|
-
/**
|
|
35
|
-
* remove a key
|
|
36
|
-
* @param key key to remove
|
|
37
|
-
* @returns boolean
|
|
38
|
-
*/
|
|
39
|
-
remove(key) {
|
|
40
|
-
key = this.prefix + key;
|
|
41
|
-
this.store.removeItem(key);
|
|
42
|
-
return true;
|
|
43
|
-
}
|
|
44
|
-
/**
|
|
45
|
-
* clear all
|
|
46
|
-
* @returns boolean
|
|
47
|
-
*/
|
|
48
|
-
clear() {
|
|
49
|
-
this.store.clear();
|
|
50
|
-
return true;
|
|
51
|
-
}
|
|
52
|
-
/**
|
|
53
|
-
* get all keys present in local storage
|
|
54
|
-
* @returns array of keys
|
|
55
|
-
*/
|
|
56
|
-
getAllKeys() {
|
|
57
|
-
let keys = [];
|
|
58
|
-
for (let index = 0; index < this.store.length; index++) {
|
|
59
|
-
const key = this.store.key(index);
|
|
60
|
-
if (key.indexOf(this.prefix) === 0) {
|
|
61
|
-
keys.push(key.substr(this.prefix.length));
|
|
62
|
-
}
|
|
63
|
-
}
|
|
64
|
-
return keys;
|
|
65
|
-
}
|
|
66
|
-
/**
|
|
67
|
-
* set key with expire time
|
|
68
|
-
* @param key key
|
|
69
|
-
* @param value value
|
|
70
|
-
* @returns true if set correctly
|
|
71
|
-
*/
|
|
72
|
-
setWhitExpiry(key, value) {
|
|
73
|
-
const now = new Date();
|
|
74
|
-
const ttl = 3600 * 1000;
|
|
75
|
-
const item = {
|
|
76
|
-
value: value,
|
|
77
|
-
expiry: now.getTime() + ttl,
|
|
78
|
-
};
|
|
79
|
-
key = this.prefix + key;
|
|
80
|
-
this.store.setItem(key, compress(JSON.stringify(item))); // compress data
|
|
81
|
-
return true;
|
|
82
|
-
}
|
|
83
|
-
/**
|
|
84
|
-
* return key with expire time
|
|
85
|
-
* @param key key
|
|
86
|
-
* @returns return object with data or null if key expired
|
|
87
|
-
*/
|
|
88
|
-
getWithExpiry(key) {
|
|
89
|
-
key = this.prefix + key;
|
|
90
|
-
const datacompressed = this.store.getItem(key);
|
|
91
|
-
if (!datacompressed) {
|
|
92
|
-
return null;
|
|
93
|
-
}
|
|
94
|
-
const itemStr = decompress(datacompressed); // decompress
|
|
95
|
-
const item = JSON.parse(itemStr);
|
|
96
|
-
const now = new Date();
|
|
97
|
-
if (!item) {
|
|
98
|
-
return null;
|
|
99
|
-
}
|
|
100
|
-
if (now.getTime() > item.expiry) {
|
|
101
|
-
this.store.removeItem(key);
|
|
102
|
-
return null;
|
|
103
|
-
}
|
|
104
|
-
return item.value;
|
|
105
|
-
}
|
|
106
|
-
}
|
|
107
|
-
LocalStorageService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: LocalStorageService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
108
|
-
LocalStorageService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: LocalStorageService, providedIn: 'root' });
|
|
109
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: LocalStorageService, decorators: [{
|
|
110
|
-
type: Injectable,
|
|
111
|
-
args: [{
|
|
112
|
-
providedIn: 'root',
|
|
113
|
-
}]
|
|
114
|
-
}], ctorParameters: function () { return []; } });
|
|
115
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
1
|
+
import { compress, decompress } from 'lz-string';
|
|
2
|
+
import { Injectable } from '@angular/core';
|
|
3
|
+
import * as i0 from "@angular/core";
|
|
4
|
+
export class LocalStorageService {
|
|
5
|
+
constructor() {
|
|
6
|
+
this.prefix = 'bl-f';
|
|
7
|
+
this.store = window.localStorage;
|
|
8
|
+
this.prefix += '.';
|
|
9
|
+
}
|
|
10
|
+
/**
|
|
11
|
+
* set key in local storage
|
|
12
|
+
* @param key key
|
|
13
|
+
* @param value value
|
|
14
|
+
*/
|
|
15
|
+
set(key, value) {
|
|
16
|
+
key = this.prefix + key;
|
|
17
|
+
this.store.setItem(key, compress(JSON.stringify(value))); // compress data
|
|
18
|
+
return true;
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* get key in local storage
|
|
22
|
+
* @param key key
|
|
23
|
+
* @returns value as object
|
|
24
|
+
*/
|
|
25
|
+
get(key) {
|
|
26
|
+
key = this.prefix + key;
|
|
27
|
+
const datacompressed = this.store.getItem(key);
|
|
28
|
+
if (!datacompressed) {
|
|
29
|
+
return null;
|
|
30
|
+
}
|
|
31
|
+
const item = decompress(datacompressed); // decompress
|
|
32
|
+
return JSON.parse(item);
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* remove a key
|
|
36
|
+
* @param key key to remove
|
|
37
|
+
* @returns boolean
|
|
38
|
+
*/
|
|
39
|
+
remove(key) {
|
|
40
|
+
key = this.prefix + key;
|
|
41
|
+
this.store.removeItem(key);
|
|
42
|
+
return true;
|
|
43
|
+
}
|
|
44
|
+
/**
|
|
45
|
+
* clear all
|
|
46
|
+
* @returns boolean
|
|
47
|
+
*/
|
|
48
|
+
clear() {
|
|
49
|
+
this.store.clear();
|
|
50
|
+
return true;
|
|
51
|
+
}
|
|
52
|
+
/**
|
|
53
|
+
* get all keys present in local storage
|
|
54
|
+
* @returns array of keys
|
|
55
|
+
*/
|
|
56
|
+
getAllKeys() {
|
|
57
|
+
let keys = [];
|
|
58
|
+
for (let index = 0; index < this.store.length; index++) {
|
|
59
|
+
const key = this.store.key(index);
|
|
60
|
+
if (key.indexOf(this.prefix) === 0) {
|
|
61
|
+
keys.push(key.substr(this.prefix.length));
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
return keys;
|
|
65
|
+
}
|
|
66
|
+
/**
|
|
67
|
+
* set key with expire time
|
|
68
|
+
* @param key key
|
|
69
|
+
* @param value value
|
|
70
|
+
* @returns true if set correctly
|
|
71
|
+
*/
|
|
72
|
+
setWhitExpiry(key, value) {
|
|
73
|
+
const now = new Date();
|
|
74
|
+
const ttl = 3600 * 1000;
|
|
75
|
+
const item = {
|
|
76
|
+
value: value,
|
|
77
|
+
expiry: now.getTime() + ttl,
|
|
78
|
+
};
|
|
79
|
+
key = this.prefix + key;
|
|
80
|
+
this.store.setItem(key, compress(JSON.stringify(item))); // compress data
|
|
81
|
+
return true;
|
|
82
|
+
}
|
|
83
|
+
/**
|
|
84
|
+
* return key with expire time
|
|
85
|
+
* @param key key
|
|
86
|
+
* @returns return object with data or null if key expired
|
|
87
|
+
*/
|
|
88
|
+
getWithExpiry(key) {
|
|
89
|
+
key = this.prefix + key;
|
|
90
|
+
const datacompressed = this.store.getItem(key);
|
|
91
|
+
if (!datacompressed) {
|
|
92
|
+
return null;
|
|
93
|
+
}
|
|
94
|
+
const itemStr = decompress(datacompressed); // decompress
|
|
95
|
+
const item = JSON.parse(itemStr);
|
|
96
|
+
const now = new Date();
|
|
97
|
+
if (!item) {
|
|
98
|
+
return null;
|
|
99
|
+
}
|
|
100
|
+
if (now.getTime() > item.expiry) {
|
|
101
|
+
this.store.removeItem(key);
|
|
102
|
+
return null;
|
|
103
|
+
}
|
|
104
|
+
return item.value;
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
LocalStorageService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: LocalStorageService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
108
|
+
LocalStorageService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: LocalStorageService, providedIn: 'root' });
|
|
109
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: LocalStorageService, decorators: [{
|
|
110
|
+
type: Injectable,
|
|
111
|
+
args: [{
|
|
112
|
+
providedIn: 'root',
|
|
113
|
+
}]
|
|
114
|
+
}], ctorParameters: function () { return []; } });
|
|
115
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9jYWwtc3RvcmFnZS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9tb2R1bGVzL3NlcnZpY2VzL2xvY2FsLXN0b3JhZ2Uuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLFVBQVUsRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUNqRCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDOztBQUszQyxNQUFNLE9BQU8sbUJBQW1CO0lBRzlCO1FBRlEsV0FBTSxHQUFXLE1BQU0sQ0FBQztRQUN4QixVQUFLLEdBQVEsTUFBTSxDQUFDLFlBQVksQ0FBQztRQUV2QyxJQUFJLENBQUMsTUFBTSxJQUFJLEdBQUcsQ0FBQztJQUNyQixDQUFDO0lBRUQ7Ozs7T0FJRztJQUNILEdBQUcsQ0FBSSxHQUFXLEVBQUUsS0FBUTtRQUMxQixHQUFHLEdBQUcsSUFBSSxDQUFDLE1BQU0sR0FBRyxHQUFHLENBQUM7UUFDeEIsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsR0FBRyxFQUFFLFFBQVEsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLGdCQUFnQjtRQUMxRSxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFFQTs7OztPQUlHO0lBQ0osR0FBRyxDQUFJLEdBQVc7UUFDaEIsR0FBRyxHQUFHLElBQUksQ0FBQyxNQUFNLEdBQUcsR0FBRyxDQUFDO1FBQ3hCLE1BQU0sY0FBYyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQy9DLElBQUksQ0FBQyxjQUFjLEVBQUU7WUFDbkIsT0FBTyxJQUFJLENBQUM7U0FDYjtRQUNELE1BQU0sSUFBSSxHQUFHLFVBQVUsQ0FBQyxjQUFjLENBQVcsQ0FBQyxDQUFDLGFBQWE7UUFDaEUsT0FBTyxJQUFJLENB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bXBvcnQgeyBjb21wcmVzcywgZGVjb21wcmVzcyB9IGZyb20gJ2x6LXN0cmluZyc7XHJcbmltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuXHJcbkBJbmplY3RhYmxlKHtcclxuICBwcm92aWRlZEluOiAncm9vdCcsXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBMb2NhbFN0b3JhZ2VTZXJ2aWNlIHtcclxuICBwcml2YXRlIHByZWZpeDogc3RyaW5nID0gJ2JsLWYnO1xyXG4gIHByaXZhdGUgc3RvcmU6IGFueSA9IHdpbmRvdy5sb2NhbFN0b3JhZ2U7XHJcbiAgY29uc3RydWN0b3IoKSB7XHJcbiAgICB0aGlzLnByZWZpeCArPSAnLic7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBzZXQga2V5IGluIGxvY2FsIHN0b3JhZ2VcclxuICAgKiBAcGFyYW0ga2V5ICBrZXlcclxuICAgKiBAcGFyYW0gdmFsdWUgIHZhbHVlXHJcbiAgICovXHJcbiAgc2V0PFQ+KGtleTogc3RyaW5nLCB2YWx1ZTogVCkgOiBib29sZWFue1xyXG4gICAga2V5ID0gdGhpcy5wcmVmaXggKyBrZXk7XHJcbiAgICB0aGlzLnN0b3JlLnNldEl0ZW0oa2V5LCBjb21wcmVzcyhKU09OLnN0cmluZ2lmeSh2YWx1ZSkpKTsgLy8gY29tcHJlc3MgZGF0YVxyXG4gICAgcmV0dXJuIHRydWU7XHJcbiAgfVxyXG5cclxuICAgLyoqXHJcbiAgICAqIGdldCBrZXkgaW4gbG9jYWwgc3RvcmFnZVxyXG4gICAgKiBAcGFyYW0ga2V5ICBrZXlcclxuICAgICogQHJldHVybnMgIHZhbHVlIGFzIG9iamVjdFxyXG4gICAgKi9cclxuICBnZXQ8VD4oa2V5OiBzdHJpbmcpIDogVCB8IG51bGwge1xyXG4gICAga2V5ID0gdGhpcy5wcmVmaXggKyBrZXk7XHJcbiAgICBjb25zdCBkYXRhY29tcHJlc3NlZCA9IHRoaXMuc3RvcmUuZ2V0SXRlbShrZXkpO1xyXG4gICAgaWYgKCFkYXRhY29tcHJlc3NlZCkge1xyXG4gICAgICByZXR1cm4gbnVsbDtcclxuICAgIH1cclxuICAgIGNvbnN0IGl0ZW0gPSBkZWNvbXByZXNzKGRhdGFjb21wcmVzc2VkKSBhcyBzdHJpbmc7IC8vIGRlY29tcHJlc3NcclxuICAgIHJldHVybiBKU09OLnBhcnNlKGl0ZW0pIGFzIFQ7XHJcbiAgfVxyXG4gIC8qKlxyXG4gICAqIHJlbW92ZSBhIGtleVxyXG4gICAqIEBwYXJhbSBrZXkga2V5IHRvIHJlbW92ZVxyXG4gICAqIEByZXR1cm5zIGJvb2xlYW5cclxuICAgKi9cclxuICByZW1vdmUoa2V5OiBzdHJpbmcpOiBib29sZWFuIHtcclxuICAgIGtleSA9IHRoaXMucHJlZml4ICsga2V5O1xyXG4gICAgdGhpcy5zdG9yZS5yZW1vdmVJdGVtKGtleSk7XHJcbiAgICByZXR1cm4gdHJ1ZTtcclxuICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICogY2xlYXIgYWxsXHJcbiAgICogQHJldHVybnMgYm9vbGVhblxyXG4gICAqL1xyXG4gIGNsZWFyKCk6Ym9vbGVhbntcclxuICAgIHRoaXMuc3RvcmUuY2xlYXIoKVxyXG4gICAgcmV0dXJuIHRydWU7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBnZXQgYWxsIGtleXMgcHJlc2VudCBpbiBsb2NhbCBzdG9yYWdlXHJcbiAgICogQHJldHVybnMgIGFycmF5IG9mIGtleXNcclxuICAgKi9cclxuICBnZXRBbGxLZXlzKCk6IEFycmF5PHN0cmluZz4ge1xyXG4gICAgbGV0IGtleXMgPSBbXTtcclxuICAgIGZvciAobGV0IGluZGV4ID0gMDsgaW5kZXggPCB0aGlzLnN0b3JlLmxlbmd0aDsgaW5kZXgrKykge1xyXG4gICAgICBjb25zdCBrZXkgPSB0aGlzLnN0b3JlLmtleShpbmRleCk7XHJcbiAgICAgIGlmIChrZXkuaW5kZXhPZih0aGlzLnByZWZpeCkgPT09IDApIHtcclxuICAgICAgICBrZXlzLnB1c2goa2V5LnN1YnN0cih0aGlzLnByZWZpeC5sZW5ndGgpKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIGtleXM7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBzZXQga2V5IHdpdGggZXhwaXJlIHRpbWVcclxuICAgKiBAcGFyYW0ga2V5IGtleVxyXG4gICAqIEBwYXJhbSB2YWx1ZSAgdmFsdWVcclxuICAgKiBAcmV0dXJucyB0cnVlIGlmIHNldCBjb3JyZWN0bHlcclxuICAgKi9cclxuICBzZXRXaGl0RXhwaXJ5PFQ+KGtleTogc3RyaW5nLCB2YWx1ZTogVCk6IGJvb2xlYW4ge1xyXG4gICAgY29uc3Qgbm93ID0gbmV3IERhdGUoKTtcclxuICAgIGNvbnN0IHR0bCA9IDM2MDAgKiAxMDAwO1xyXG4gICAgY29uc3QgaXRlbSA9IHtcclxuICAgICAgdmFsdWU6IHZhbHVlLFxyXG4gICAgICBleHBpcnk6IG5vdy5nZXRUaW1lKCkgKyB0dGwsXHJcbiAgICB9O1xyXG5cclxuICAgIGtleSA9IHRoaXMucHJlZml4ICsga2V5O1xyXG4gICAgdGhpcy5zdG9yZS5zZXRJdGVtKGtleSwgY29tcHJlc3MoSlNPTi5zdHJpbmdpZnkoaXRlbSkpKTsgLy8gY29tcHJlc3MgZGF0YVxyXG4gICAgcmV0dXJuIHRydWU7XHJcbiAgfVxyXG4gLyoqXHJcbiAgKiByZXR1cm4ga2V5IHdpdGggZXhwaXJlIHRpbWVcclxuICAqIEBwYXJhbSBrZXkga2V5XHJcbiAgKiBAcmV0dXJucyByZXR1cm4gb2JqZWN0IHdpdGggZGF0YSBvciBudWxsIGlmIGtleSBleHBpcmVkXHJcbiAgKi9cclxuXHJcbiAgZ2V0V2l0aEV4cGlyeTxUPihrZXk6IHN0cmluZyk6IFQgfCBudWxsIHtcclxuICAgIGtleSA9IHRoaXMucHJlZml4ICsga2V5O1xyXG4gICAgY29uc3QgZGF0YWNvbXByZXNzZWQgPSB0aGlzLnN0b3JlLmdldEl0ZW0oa2V5KTtcclxuICAgIGlmICghZGF0YWNvbXByZXNzZWQpIHtcclxuICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICB9XHJcbiAgICBjb25zdCBpdGVtU3RyID0gZGVjb21wcmVzcyhkYXRhY29tcHJlc3NlZCkgYXMgc3RyaW5nOyAvLyBkZWNvbXByZXNzXHJcblxyXG4gICAgY29uc3QgaXRlbSA9IEpTT04ucGFyc2UoaXRlbVN0cik7XHJcbiAgICBjb25zdCBub3cgPSBuZXcgRGF0ZSgpO1xyXG4gICAgaWYgKCFpdGVtKSB7XHJcbiAgICAgIHJldHVybiBudWxsO1xyXG4gICAgfVxyXG4gICAgaWYgKG5vdy5nZXRUaW1lKCkgPiBpdGVtLmV4cGlyeSkge1xyXG4gICAgICB0aGlzLnN0b3JlLnJlbW92ZUl0ZW0oa2V5KTtcclxuICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gaXRlbS52YWx1ZSBhcyBUO1xyXG4gIH1cclxufVxyXG4iXX0=
|