brainloper-ui 15.0.1 → 17.0.0

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.
Files changed (94) hide show
  1. package/esm2022/src/app/modules/brainloper-ui/brainloper-ui.module.mjs +314 -0
  2. package/esm2022/src/app/modules/brainloper-ui/components/bread-crumb/bread-crumb.component.mjs +30 -0
  3. package/esm2022/src/app/modules/brainloper-ui/components/buttons/button-icon/button-icon.component.mjs +23 -0
  4. package/esm2022/src/app/modules/brainloper-ui/components/buttons/button-label/button-label.component.mjs +83 -0
  5. package/esm2022/src/app/modules/brainloper-ui/components/carousel/carousel.component.mjs +42 -0
  6. package/esm2022/src/app/modules/brainloper-ui/components/combos/combos.component.mjs +183 -0
  7. package/esm2022/src/app/modules/brainloper-ui/components/data-table/data-table.component.mjs +746 -0
  8. package/esm2022/src/app/modules/brainloper-ui/components/data-table/table-modal/table-modal.component.mjs +122 -0
  9. package/esm2022/src/app/modules/brainloper-ui/components/file-input/file-input.component.mjs +205 -0
  10. package/esm2022/src/app/modules/brainloper-ui/components/filters/filters.component.mjs +227 -0
  11. package/esm2022/src/app/modules/brainloper-ui/components/report/template-fuel/template-fuel.component.mjs +89 -0
  12. package/esm2022/src/app/modules/brainloper-ui/components/report/template-ot/template-ot.component.mjs +86 -0
  13. package/esm2022/src/app/modules/brainloper-ui/components/select-filter/select-filter.component.mjs +117 -0
  14. package/esm2022/src/app/modules/directives/carousel-item.directive.mjs +20 -0
  15. package/esm2022/src/app/modules/interfaces/menu-break-crumb/menu-break-crumb.mjs +6 -0
  16. package/esm2022/src/app/modules/services/crypto.service.mjs +38 -0
  17. package/esm2022/src/app/modules/services/export-data.service.mjs +169 -0
  18. package/esm2022/src/app/modules/services/file-forms.service.mjs +24 -0
  19. package/esm2022/src/app/modules/services/fuel-order-pdf.service.mjs +346 -0
  20. package/esm2022/src/app/modules/services/functions.service.mjs +75 -0
  21. package/esm2022/src/app/modules/services/generate-pdf.service.mjs +93 -0
  22. package/esm2022/src/app/modules/services/http.service.mjs +142 -0
  23. package/esm2022/src/app/modules/services/loading/loading.component.mjs +30 -0
  24. package/esm2022/src/app/modules/services/local-storage.service.mjs +115 -0
  25. package/esm2022/src/app/modules/services/message.service.mjs +202 -0
  26. package/esm2022/src/app/modules/services/purchase-order-pdf.service.mjs +179 -0
  27. package/esm2022/src/app/modules/services/session.service.mjs +43 -0
  28. package/esm2022/src/app/modules/services/work-order-pdf.service.mjs +363 -0
  29. package/{fesm2020 → fesm2022}/brainloper-ui.mjs +541 -443
  30. package/{fesm2020 → fesm2022}/brainloper-ui.mjs.map +1 -1
  31. package/package.json +17 -23
  32. package/src/app/modules/brainloper-ui/components/bread-crumb/bread-crumb.component.d.ts +1 -1
  33. package/src/app/modules/brainloper-ui/components/buttons/button-icon/button-icon.component.d.ts +1 -1
  34. package/src/app/modules/brainloper-ui/components/buttons/button-label/button-label.component.d.ts +1 -1
  35. package/src/app/modules/brainloper-ui/components/carousel/carousel.component.d.ts +1 -1
  36. package/src/app/modules/brainloper-ui/components/combos/combos.component.d.ts +1 -1
  37. package/src/app/modules/brainloper-ui/components/data-table/data-table.component.d.ts +1 -1
  38. package/src/app/modules/brainloper-ui/components/file-input/file-input.component.d.ts +1 -1
  39. package/src/app/modules/brainloper-ui/components/filters/filters.component.d.ts +1 -1
  40. package/src/app/modules/brainloper-ui/components/select-filter/select-filter.component.d.ts +1 -1
  41. package/src/app/modules/directives/carousel-item.directive.d.ts +1 -1
  42. package/esm2020/src/app/modules/brainloper-ui/brainloper-ui.module.mjs +0 -306
  43. package/esm2020/src/app/modules/brainloper-ui/components/bread-crumb/bread-crumb.component.mjs +0 -29
  44. package/esm2020/src/app/modules/brainloper-ui/components/buttons/button-icon/button-icon.component.mjs +0 -23
  45. package/esm2020/src/app/modules/brainloper-ui/components/buttons/button-label/button-label.component.mjs +0 -83
  46. package/esm2020/src/app/modules/brainloper-ui/components/carousel/carousel.component.mjs +0 -40
  47. package/esm2020/src/app/modules/brainloper-ui/components/combos/combos.component.mjs +0 -176
  48. package/esm2020/src/app/modules/brainloper-ui/components/data-table/data-table.component.mjs +0 -728
  49. package/esm2020/src/app/modules/brainloper-ui/components/data-table/table-modal/table-modal.component.mjs +0 -118
  50. package/esm2020/src/app/modules/brainloper-ui/components/file-input/file-input.component.mjs +0 -187
  51. package/esm2020/src/app/modules/brainloper-ui/components/filters/filters.component.mjs +0 -222
  52. package/esm2020/src/app/modules/brainloper-ui/components/report/template-fuel/template-fuel.component.mjs +0 -84
  53. package/esm2020/src/app/modules/brainloper-ui/components/report/template-ot/template-ot.component.mjs +0 -81
  54. package/esm2020/src/app/modules/brainloper-ui/components/select-filter/select-filter.component.mjs +0 -108
  55. package/esm2020/src/app/modules/directives/carousel-item.directive.mjs +0 -18
  56. package/esm2020/src/app/modules/interfaces/menu-break-crumb/menu-break-crumb.mjs +0 -8
  57. package/esm2020/src/app/modules/services/crypto.service.mjs +0 -37
  58. package/esm2020/src/app/modules/services/export-data.service.mjs +0 -166
  59. package/esm2020/src/app/modules/services/file-forms.service.mjs +0 -24
  60. package/esm2020/src/app/modules/services/fuel-order-pdf.service.mjs +0 -346
  61. package/esm2020/src/app/modules/services/functions.service.mjs +0 -75
  62. package/esm2020/src/app/modules/services/generate-pdf.service.mjs +0 -89
  63. package/esm2020/src/app/modules/services/http.service.mjs +0 -140
  64. package/esm2020/src/app/modules/services/loading/loading.component.mjs +0 -28
  65. package/esm2020/src/app/modules/services/local-storage.service.mjs +0 -115
  66. package/esm2020/src/app/modules/services/message.service.mjs +0 -200
  67. package/esm2020/src/app/modules/services/purchase-order-pdf.service.mjs +0 -178
  68. package/esm2020/src/app/modules/services/session.service.mjs +0 -42
  69. package/esm2020/src/app/modules/services/work-order-pdf.service.mjs +0 -363
  70. package/fesm2015/brainloper-ui.mjs +0 -3914
  71. package/fesm2015/brainloper-ui.mjs.map +0 -1
  72. /package/{esm2020 → esm2022}/brainloper-ui.mjs +0 -0
  73. /package/{esm2020 → esm2022}/public_api.mjs +0 -0
  74. /package/{esm2020 → esm2022}/src/app/modules/brainloper-ui/components/file-input/imagenes/doc.mjs +0 -0
  75. /package/{esm2020 → esm2022}/src/app/modules/brainloper-ui/components/file-input/imagenes/fondoTransparente.mjs +0 -0
  76. /package/{esm2020 → esm2022}/src/app/modules/brainloper-ui/components/file-input/imagenes/pdf.mjs +0 -0
  77. /package/{esm2020 → esm2022}/src/app/modules/interfaces/buttons/button-icon.mjs +0 -0
  78. /package/{esm2020 → esm2022}/src/app/modules/interfaces/buttons/button-lavel-edit.mjs +0 -0
  79. /package/{esm2020 → esm2022}/src/app/modules/interfaces/combos/combos-configuration.mjs +0 -0
  80. /package/{esm2020 → esm2022}/src/app/modules/interfaces/data-table/params.mjs +0 -0
  81. /package/{esm2020 → esm2022}/src/app/modules/interfaces/data-table/rules.mjs +0 -0
  82. /package/{esm2020 → esm2022}/src/app/modules/interfaces/data-table/table-columns.mjs +0 -0
  83. /package/{esm2020 → esm2022}/src/app/modules/interfaces/data-table/table-configuration.mjs +0 -0
  84. /package/{esm2020 → esm2022}/src/app/modules/interfaces/enum/enumActions.mjs +0 -0
  85. /package/{esm2020 → esm2022}/src/app/modules/interfaces/enum/enumRules.mjs +0 -0
  86. /package/{esm2020 → esm2022}/src/app/modules/interfaces/enum/httpResponseType.mjs +0 -0
  87. /package/{esm2020 → esm2022}/src/app/modules/interfaces/file-forms-service/file-forms-params.mjs +0 -0
  88. /package/{esm2020 → esm2022}/src/app/modules/interfaces/file-forms-service/file-input-params.mjs +0 -0
  89. /package/{esm2020 → esm2022}/src/app/modules/interfaces/filters/header-filters.mjs +0 -0
  90. /package/{esm2020 → esm2022}/src/app/modules/interfaces/report/template-pdf-base.mjs +0 -0
  91. /package/{esm2020 → esm2022}/src/app/modules/interfaces/report/template-pdf-ot.mjs +0 -0
  92. /package/{esm2020 → esm2022}/src/app/modules/interfaces/report/template-pdf-purchase-order.mjs +0 -0
  93. /package/{esm2020 → esm2022}/src/app/modules/interfaces/report/template-pfd-fo.mjs +0 -0
  94. /package/{esm2020 → esm2022}/src/app/modules/services/screen-size-util.mjs +0 -0
@@ -0,0 +1,117 @@
1
+ import { Component, EventEmitter, Input, Output, ViewChild } from '@angular/core';
2
+ import * as i0 from "@angular/core";
3
+ import * as i1 from "@angular/forms";
4
+ import * as i2 from "@angular/common";
5
+ import * as i3 from "@angular/material/progress-spinner";
6
+ import * as i4 from "@angular/material/input";
7
+ export class SelectFilterComponent {
8
+ searchFormValueChangesSubscription;
9
+ input;
10
+ array;
11
+ placeholder;
12
+ color;
13
+ displayMember;
14
+ showSpinner = true;
15
+ noResultsMessage = 'No results';
16
+ hasGroup;
17
+ groupArrayName;
18
+ noResults = false;
19
+ localSpinner = false;
20
+ filteredReturn = new EventEmitter();
21
+ filteredItems = [];
22
+ searchForm;
23
+ constructor(fb) {
24
+ this.searchForm = fb.group({
25
+ value: ''
26
+ });
27
+ }
28
+ ngOnInit() {
29
+ this.searchFormValueChangesSubscription = this.searchForm.valueChanges.subscribe(value => {
30
+ const searchValue = value['value'] ? value['value'].toLowerCase() : '';
31
+ if (this.showSpinner) {
32
+ this.localSpinner = true;
33
+ }
34
+ if (searchValue) {
35
+ if (this.displayMember == null) {
36
+ this.filteredItems = this.array.filter(name => name.toLowerCase().includes(searchValue));
37
+ }
38
+ else if (this.hasGroup && this.groupArrayName && this.displayMember) {
39
+ this.filteredItems = this.array.map(a => {
40
+ const objCopy = { ...a };
41
+ objCopy[this.groupArrayName] = objCopy[this.groupArrayName].filter(g => g[this.displayMember].toLowerCase().includes(searchValue));
42
+ return objCopy;
43
+ }).filter(x => x[this.groupArrayName].length > 0);
44
+ }
45
+ else {
46
+ this.filteredItems = this.array.filter(name => name[this.displayMember].toLowerCase().includes(searchValue));
47
+ }
48
+ this.noResults = this.filteredItems.length === 0;
49
+ }
50
+ else {
51
+ this.filteredItems = [...this.array];
52
+ this.noResults = false;
53
+ }
54
+ this.filteredReturn.emit(this.filteredItems);
55
+ setTimeout(() => {
56
+ if (this.showSpinner) {
57
+ this.localSpinner = false;
58
+ }
59
+ }, 2000);
60
+ });
61
+ setTimeout(() => {
62
+ this.input.nativeElement.focus();
63
+ }, 500);
64
+ if (!this.placeholder) {
65
+ this.placeholder = 'Search...';
66
+ }
67
+ }
68
+ handleKeydown(event) {
69
+ const isAlphanumeric = (event.key && event.key.length === 1) ||
70
+ (event.code >= 'KeyA' && event.code <= 'KeyZ') ||
71
+ (event.code >= 'Digit0' && event.code <= 'Digit9') ||
72
+ (event.code === 'Space');
73
+ if (isAlphanumeric) {
74
+ event.stopPropagation();
75
+ }
76
+ }
77
+ ngOnDestroy() {
78
+ this.filteredReturn.emit(this.array);
79
+ this.searchFormValueChangesSubscription.unsubscribe();
80
+ }
81
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: SelectFilterComponent, deps: [{ token: i1.FormBuilder }], target: i0.ɵɵFactoryTarget.Component });
82
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: SelectFilterComponent, selector: "app-select-filter", inputs: { array: "array", placeholder: "placeholder", color: "color", displayMember: "displayMember", showSpinner: "showSpinner", noResultsMessage: "noResultsMessage", hasGroup: "hasGroup", groupArrayName: "groupArrayName" }, outputs: { filteredReturn: "filteredReturn" }, viewQueries: [{ propertyName: "input", first: true, predicate: ["input"], descendants: true, static: true }], ngImport: i0, template: "<form [formGroup]=\"searchForm\" class=\"mat-filter\" [ngStyle]=\"{'background-color': color ? color : 'white'}\">\n <div>\n <input #input class=\"mat-filter-input\" matInput placeholder=\"{{placeholder}}\" formControlName=\"value\" (keydown)=\"handleKeydown($event)\">\n <mat-spinner *ngIf=\"localSpinner\" class=\"spinner\" diameter=\"16\"></mat-spinner>\n </div>\n <div *ngIf=\"noResults\"\n class=\"noResultsMessage\">\n {{noResultsMessage}}\n</div>\n</form>\n", styles: [".mat-filter{position:sticky;top:0;border-bottom-width:1px;border-bottom-style:solid;border-bottom-color:gray;z-index:100;font-size:inherit;box-shadow:none;border-radius:0;padding:16px;-webkit-box-sizing:border-box;box-sizing:border-box}.mat-filter-input{-webkit-appearance:none;-moz-appearance:none;appearance:none;outline:none;border:0;background-color:unset;color:gray;width:100%}.spinner{position:absolute;right:16px;top:calc(50% - 8px)}.noResultsMessage{margin-top:10px;font-family:Roboto,Helvetica Neue,sans-serif;font-size:16px}\n"], dependencies: [{ kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "component", type: i3.MatProgressSpinner, selector: "mat-progress-spinner, mat-spinner", inputs: ["color", "mode", "value", "diameter", "strokeWidth"], exportAs: ["matProgressSpinner"] }, { kind: "directive", type: i4.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "directive", type: i1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i1.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }] });
83
+ }
84
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: SelectFilterComponent, decorators: [{
85
+ type: Component,
86
+ args: [{ selector: 'app-select-filter', template: "<form [formGroup]=\"searchForm\" class=\"mat-filter\" [ngStyle]=\"{'background-color': color ? color : 'white'}\">\n <div>\n <input #input class=\"mat-filter-input\" matInput placeholder=\"{{placeholder}}\" formControlName=\"value\" (keydown)=\"handleKeydown($event)\">\n <mat-spinner *ngIf=\"localSpinner\" class=\"spinner\" diameter=\"16\"></mat-spinner>\n </div>\n <div *ngIf=\"noResults\"\n class=\"noResultsMessage\">\n {{noResultsMessage}}\n</div>\n</form>\n", styles: [".mat-filter{position:sticky;top:0;border-bottom-width:1px;border-bottom-style:solid;border-bottom-color:gray;z-index:100;font-size:inherit;box-shadow:none;border-radius:0;padding:16px;-webkit-box-sizing:border-box;box-sizing:border-box}.mat-filter-input{-webkit-appearance:none;-moz-appearance:none;appearance:none;outline:none;border:0;background-color:unset;color:gray;width:100%}.spinner{position:absolute;right:16px;top:calc(50% - 8px)}.noResultsMessage{margin-top:10px;font-family:Roboto,Helvetica Neue,sans-serif;font-size:16px}\n"] }]
87
+ }], ctorParameters: () => [{ type: i1.FormBuilder }], propDecorators: { input: [{
88
+ type: ViewChild,
89
+ args: ['input', { static: true }]
90
+ }], array: [{
91
+ type: Input,
92
+ args: ['array']
93
+ }], placeholder: [{
94
+ type: Input,
95
+ args: ['placeholder']
96
+ }], color: [{
97
+ type: Input,
98
+ args: ['color']
99
+ }], displayMember: [{
100
+ type: Input,
101
+ args: ['displayMember']
102
+ }], showSpinner: [{
103
+ type: Input,
104
+ args: ['showSpinner']
105
+ }], noResultsMessage: [{
106
+ type: Input,
107
+ args: ['noResultsMessage']
108
+ }], hasGroup: [{
109
+ type: Input,
110
+ args: ['hasGroup']
111
+ }], groupArrayName: [{
112
+ type: Input,
113
+ args: ['groupArrayName']
114
+ }], filteredReturn: [{
115
+ type: Output
116
+ }] } });
117
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VsZWN0LWZpbHRlci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBwL21vZHVsZXMvYnJhaW5sb3Blci11aS9jb21wb25lbnRzL3NlbGVjdC1maWx0ZXIvc2VsZWN0LWZpbHRlci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBwL21vZHVsZXMvYnJhaW5sb3Blci11aS9jb21wb25lbnRzL3NlbGVjdC1maWx0ZXIvc2VsZWN0LWZpbHRlci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQXFCLE1BQU0sRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7Ozs7OztBQWdCckcsTUFBTSxPQUFPLHFCQUFxQjtJQUV4QixrQ0FBa0MsQ0FBZTtJQUNuQixLQUFLLENBQUM7SUFFNUIsS0FBSyxDQUFNO0lBQ0wsV0FBVyxDQUFTO0lBQzFCLEtBQUssQ0FBUztJQUNOLGFBQWEsQ0FBUztJQUN4QixXQUFXLEdBQUcsSUFBSSxDQUFDO0lBQ2QsZ0JBQWdCLEdBQUcsWUFBWSxDQUFDO0lBQ3hDLFFBQVEsQ0FBVTtJQUNaLGNBQWMsQ0FBUztJQUVoRCxTQUFTLEdBQUcsS0FBSyxDQUFDO0lBRWxCLFlBQVksR0FBRyxLQUFLLENBQUM7SUFDWCxjQUFjLEdBQUcsSUFBSSxZQUFZLEVBQU8sQ0FBQztJQUU1QyxhQUFhLEdBQVEsRUFBRSxDQUFDO0lBQ3hCLFVBQVUsQ0FBWTtJQUU3QixZQUFZLEVBQWU7UUFDekIsSUFBSSxDQUFDLFVBQVUsR0FBRyxFQUFFLENBQUMsS0FBSyxDQUFDO1lBQ3pCLEtBQUssRUFBRSxFQUFFO1NBQ1YsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVELFFBQVE7UUFDTixJQUFJLENBQUMsa0NBQWtDLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FB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O2dCQUtiLGNBQWM7c0JBQXZCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE9uRGVzdHJveSwgT25Jbml0LCBPdXRwdXQsIFZpZXdDaGlsZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRm9ybUJ1aWxkZXIsIEZvcm1Hcm91cCB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHtcbiAgQSxcbiAgWixcbiAgWkVSTyxcbiAgTklORSxcbiAgU1BBQ0UsIEVORCwgSE9NRSxcbn0gZnJvbSAnQGFuZ3VsYXIvY2RrL2tleWNvZGVzJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYXBwLXNlbGVjdC1maWx0ZXInLFxuICB0ZW1wbGF0ZVVybDogJy4vc2VsZWN0LWZpbHRlci5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL3NlbGVjdC1maWx0ZXIuY29tcG9uZW50LnNjc3MnXVxufSlcbmV4cG9ydCBjbGFzcyBTZWxlY3RGaWx0ZXJDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSAge1xuXG4gIHByaXZhdGUgc2VhcmNoRm9ybVZhbHVlQ2hhbmdlc1N1YnNjcmlwdGlvbjogU3Vic2NyaXB0aW9uO1xuICBAVmlld0NoaWxkKCdpbnB1dCcsIHsgc3RhdGljOiB0cnVlIH0pIGlucHV0O1xuXG4gIEBJbnB1dCgnYXJyYXknKSBhcnJheTogYW55O1xuICBASW5wdXQoJ3BsYWNlaG9sZGVyJykgcGxhY2Vob2xkZXI6IHN0cmluZztcbiAgQElucHV0KCdjb2xvcicpIGNvbG9yOiBzdHJpbmc7XG4gIEBJbnB1dCgnZGlzcGxheU1lbWJlcicpIGRpc3BsYXlNZW1iZXI6IHN0cmluZztcbiAgQElucHV0KCdzaG93U3Bpbm5lcicpIHNob3dTcGlubmVyID0gdHJ1ZTtcbiAgQElucHV0KCdub1Jlc3VsdHNNZXNzYWdlJykgbm9SZXN1bHRzTWVzc2FnZSA9ICdObyByZXN1bHRzJztcbiAgQElucHV0KCdoYXNHcm91cCcpIGhhc0dyb3VwOiBib29sZWFuO1xuICBASW5wdXQoJ2dyb3VwQXJyYXlOYW1lJykgZ3JvdXBBcnJheU5hbWU6IHN0cmluZztcblxuICBub1Jlc3VsdHMgPSBmYWxzZTtcblxuICBsb2NhbFNwaW5uZXIgPSBmYWxzZTtcbiAgQE91dHB1dCgpIGZpbHRlcmVkUmV0dXJuID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG5cbiAgcHVibGljIGZpbHRlcmVkSXRlbXM6IGFueSA9IFtdO1xuICBwdWJsaWMgc2VhcmNoRm9ybTogRm9ybUdyb3VwO1xuXG4gIGNvbnN0cnVjdG9yKGZiOiBGb3JtQnVpbGRlcikge1xuICAgIHRoaXMuc2VhcmNoRm9ybSA9IGZiLmdyb3VwKHtcbiAgICAgIHZhbHVlOiAnJ1xuICAgIH0pO1xuICB9XG5cbiAgbmdPbkluaXQoKSB7XG4gICAgdGhpcy5zZWFyY2hGb3JtVmFsdWVDaGFuZ2VzU3Vic2NyaXB0aW9uID0gdGhpcy5zZWFyY2hGb3JtLnZhbHVlQ2hhbmdlcy5zdWJzY3JpYmUodmFsdWUgPT4ge1xuICAgICAgICBjb25zdCBzZWFyY2hWYWx1ZSA9IHZhbHVlWyd2YWx1ZSddID8gdmFsdWVbJ3ZhbHVlJ10udG9Mb3dlckNhc2UoKSA6ICcnO1xuICAgICAgICBpZiAodGhpcy5zaG93U3Bpbm5lcikge1xuICAgICAgICAgICAgdGhpcy5sb2NhbFNwaW5uZXIgPSB0cnVlO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHNlYXJjaFZhbHVlKSB7XG4gICAgICAgICAgICBpZiAodGhpcy5kaXNwbGF5TWVtYmVyID09IG51bGwpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmZpbHRlcmVkSXRlbXMgPSB0aGlzLmFycmF5LmZpbHRlcihuYW1lID0+IG5hbWUudG9Mb3dlckNhc2UoKS5pbmNsdWRlcyhzZWFyY2hWYWx1ZSkpO1xuICAgICAgICAgICAgfSBlbHNlIGlmICh0aGlzLmhhc0dyb3VwICYmIHRoaXMuZ3JvdXBBcnJheU5hbWUgJiYgdGhpcy5kaXNwbGF5TWVtYmVyKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5maWx0ZXJlZEl0ZW1zID0gdGhpcy5hcnJheS5tYXAoYSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IG9iakNvcHkgPSB7IC4uLmEgfTtcbiAgICAgICAgICAgICAgICAgICAgb2JqQ29weVt0aGlzLmdyb3VwQXJyYXlOYW1lXSA9IG9iakNvcHlbdGhpcy5ncm91cEFycmF5TmFtZV0uZmlsdGVyKGcgPT4gZ1t0aGlzLmRpc3BsYXlNZW1iZXJdLnRvTG93ZXJDYXNlKCkuaW5jbHVkZXMoc2VhcmNoVmFsdWUpKTtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG9iakNvcHk7XG4gICAgICAgICAgICAgICAgfSkuZmlsdGVyKHggPT4geFt0aGlzLmdyb3VwQXJyYXlOYW1lXS5sZW5ndGggPiAwKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgdGhpcy5maWx0ZXJlZEl0ZW1zID0gdGhpcy5hcnJheS5maWx0ZXIobmFtZSA9PiBuYW1lW3RoaXMuZGlzcGxheU1lbWJlcl0udG9Mb3dlckNhc2UoKS5pbmNsdWRlcyhzZWFyY2hWYWx1ZSkpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB0aGlzLm5vUmVzdWx0cyA9IHRoaXMuZmlsdGVyZWRJdGVtcy5sZW5ndGggPT09IDA7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLmZpbHRlcmVkSXRlbXMgPSBbLi4udGhpcy5hcnJheV07XG4gICAgICAgICAgICB0aGlzLm5vUmVzdWx0cyA9IGZhbHNlO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5maWx0ZXJlZFJldHVybi5lbWl0KHRoaXMuZmlsdGVyZWRJdGVtcyk7XG5cbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICBpZiAodGhpcy5zaG93U3Bpbm5lcikge1xuICAgICAgICAgICAgICAgIHRoaXMubG9jYWxTcGlubmVyID0gZmFsc2U7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sIDIwMDApO1xuICAgIH0pO1xuXG4gICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgIHRoaXMuaW5wdXQubmF0aXZlRWxlbWVudC5mb2N1cygpO1xuICAgIH0sIDUwMCk7XG5cbiAgICBpZiAoIXRoaXMucGxhY2Vob2xkZXIpIHtcbiAgICAgICAgdGhpcy5wbGFjZWhvbGRlciA9ICdTZWFyY2guLi4nO1xuICAgIH1cbn1cblxuXG5cbiAgaGFuZGxlS2V5ZG93bihldmVudDogS2V5Ym9hcmRFdmVudCkge1xuICAgIGNvbnN0IGlzQWxwaGFudW1lcmljID0gKGV2ZW50LmtleSAmJiBldmVudC5rZXkubGVuZ3RoID09PSAxKSB8fFxuICAgICAgICAoZXZlbnQuY29kZSA+PSAnS2V5QScgJiYgZXZlbnQuY29kZSA8PSAnS2V5WicpIHx8XG4gICAgICAgIChldmVudC5jb2RlID49ICdEaWdpdDAnICYmIGV2ZW50LmNvZGUgPD0gJ0RpZ2l0OScpIHx8XG4gICAgICAgIChldmVudC5jb2RlID09PSAnU3BhY2UnKTtcblxuICAgIGlmIChpc0FscGhhbnVtZXJpYykge1xuICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICB9XG59XG5cbiAgbmdPbkRlc3Ryb3koKSB7XG4gICAgdGhpcy5maWx0ZXJlZFJldHVybi5lbWl0KHRoaXMuYXJyYXkpO1xuICAgIHRoaXMuc2VhcmNoRm9ybVZhbHVlQ2hhbmdlc1N1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xuICB9XG5cbn1cbiIsIjxmb3JtIFtmb3JtR3JvdXBdPVwic2VhcmNoRm9ybVwiIGNsYXNzPVwibWF0LWZpbHRlclwiIFtuZ1N0eWxlXT1cInsnYmFja2dyb3VuZC1jb2xvcic6IGNvbG9yID8gY29sb3IgOiAnd2hpdGUnfVwiPlxuICA8ZGl2PlxuICA8aW5wdXQgI2lucHV0IGNsYXNzPVwibWF0LWZpbHRlci1pbnB1dFwiIG1hdElucHV0IHBsYWNlaG9sZGVyPVwie3twbGFjZWhvbGRlcn19XCIgZm9ybUNvbnRyb2xOYW1lPVwidmFsdWVcIiAoa2V5ZG93bik9XCJoYW5kbGVLZXlkb3duKCRldmVudClcIj5cbiAgICA8bWF0LXNwaW5uZXIgKm5nSWY9XCJsb2NhbFNwaW5uZXJcIiBjbGFzcz1cInNwaW5uZXJcIiBkaWFtZXRlcj1cIjE2XCI+PC9tYXQtc3Bpbm5lcj5cbiAgPC9kaXY+XG4gIDxkaXYgKm5nSWY9XCJub1Jlc3VsdHNcIlxuICAgICBjbGFzcz1cIm5vUmVzdWx0c01lc3NhZ2VcIj5cbiAge3tub1Jlc3VsdHNNZXNzYWdlfX1cbjwvZGl2PlxuPC9mb3JtPlxuIl19
@@ -0,0 +1,20 @@
1
+ import { Directive, Input } from '@angular/core';
2
+ import * as i0 from "@angular/core";
3
+ export class CarouselItemDirective {
4
+ templateRef;
5
+ carouselItem;
6
+ constructor(templateRef) {
7
+ this.templateRef = templateRef;
8
+ }
9
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: CarouselItemDirective, deps: [{ token: i0.TemplateRef }], target: i0.ɵɵFactoryTarget.Directive });
10
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.3.12", type: CarouselItemDirective, selector: "[carouselItem]", inputs: { carouselItem: "carouselItem" }, ngImport: i0 });
11
+ }
12
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: CarouselItemDirective, decorators: [{
13
+ type: Directive,
14
+ args: [{
15
+ selector: '[carouselItem]'
16
+ }]
17
+ }], ctorParameters: () => [{ type: i0.TemplateRef }], propDecorators: { carouselItem: [{
18
+ type: Input
19
+ }] } });
20
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2Fyb3VzZWwtaXRlbS5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBwL21vZHVsZXMvZGlyZWN0aXZlcy9jYXJvdXNlbC1pdGVtLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBZSxNQUFNLGVBQWUsQ0FBQzs7QUFLOUQsTUFBTSxPQUFPLHFCQUFxQjtJQUdiO0lBRlYsWUFBWSxDQUFVO0lBRS9CLFlBQW1CLFdBQTZCO1FBQTdCLGdCQUFXLEdBQVgsV0FBVyxDQUFrQjtJQUFJLENBQUM7d0dBSDFDLHFCQUFxQjs0RkFBckIscUJBQXFCOzs0RkFBckIscUJBQXFCO2tCQUhqQyxTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSxnQkFBZ0I7aUJBQzNCO2dGQUVVLFlBQVk7c0JBQXBCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEaXJlY3RpdmUsIElucHV0LCBUZW1wbGF0ZVJlZiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5ARGlyZWN0aXZlKHtcbiAgc2VsZWN0b3I6ICdbY2Fyb3VzZWxJdGVtXSdcbn0pXG5leHBvcnQgY2xhc3MgQ2Fyb3VzZWxJdGVtRGlyZWN0aXZlIHtcbiAgQElucHV0KCkgY2Fyb3VzZWxJdGVtITogbnVtYmVyO1xuXG4gIGNvbnN0cnVjdG9yKHB1YmxpYyB0ZW1wbGF0ZVJlZjogVGVtcGxhdGVSZWY8YW55PikgeyB9XG59Il19
@@ -0,0 +1,6 @@
1
+ export class MenuBreadCrumb {
2
+ name = "";
3
+ router = null;
4
+ current = false;
5
+ }
6
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVudS1icmVhay1jcnVtYi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvbW9kdWxlcy9pbnRlcmZhY2VzL21lbnUtYnJlYWstY3J1bWIvbWVudS1icmVhay1jcnVtYi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFNQSxNQUFNLE9BQU8sY0FBYztJQUN6QixJQUFJLEdBQUcsRUFBRSxDQUFBO0lBQ1QsTUFBTSxHQUFJLElBQUksQ0FBQTtJQUNkLE9BQU8sR0FBSSxLQUFLLENBQUE7Q0FDakIiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgaW50ZXJmYWNlIElNZW51QnJlYWRDcnVtYiB7XG4gIG5hbWU6c3RyaW5nLFxuICByb3V0ZXI/OnN0cmluZyxcbiAgY3VycmVudD86Ym9vbGVhblxufVxuXG5leHBvcnQgY2xhc3MgTWVudUJyZWFkQ3J1bWIgaW1wbGVtZW50cyBJTWVudUJyZWFkQ3J1bWIgIHtcbiAgbmFtZSA9IFwiXCJcbiAgcm91dGVyPyA9IG51bGxcbiAgY3VycmVudD8gPSBmYWxzZVxufVxuIl19
@@ -0,0 +1,38 @@
1
+ import { Injectable } from '@angular/core';
2
+ import * as CryptoJS from 'crypto-js';
3
+ import * as i0 from "@angular/core";
4
+ //declare var require: any
5
+ //var CryptoJS = require("crypto-js");
6
+ export class CryptoService {
7
+ key;
8
+ constructor() {
9
+ this.key = "ssaldkmaosweiuf231owdalsd0";
10
+ }
11
+ asignarKey(key) {
12
+ this.key = key;
13
+ }
14
+ encode(data) {
15
+ const strData = JSON.stringify(data);
16
+ let c = CryptoJS.AES.encrypt(strData, this.key);
17
+ return c;
18
+ }
19
+ decode(data) {
20
+ try {
21
+ var bytes = CryptoJS.AES.decrypt(data, this.key);
22
+ var str = bytes.toString(CryptoJS.enc.Utf8);
23
+ return JSON.parse(str);
24
+ }
25
+ catch (e) {
26
+ console.log('Error try to decode string');
27
+ }
28
+ }
29
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: CryptoService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
30
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: CryptoService, providedIn: 'root' });
31
+ }
32
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: CryptoService, decorators: [{
33
+ type: Injectable,
34
+ args: [{
35
+ providedIn: 'root'
36
+ }]
37
+ }], ctorParameters: () => [] });
38
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3J5cHRvLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBwL21vZHVsZXMvc2VydmljZXMvY3J5cHRvLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEtBQUssUUFBUSxNQUFNLFdBQVcsQ0FBQTs7QUFDckMsMEJBQTBCO0FBQzFCLHNDQUFzQztBQUl0QyxNQUFNLE9BQU8sYUFBYTtJQUV0QixHQUFHLENBQVE7SUFDWDtRQUNJLElBQUksQ0FBQyxHQUFHLEdBQUcsNEJBQTRCLENBQUE7SUFDM0MsQ0FBQztJQUVELFVBQVUsQ0FBQyxHQUFHO1FBQ1YsSUFBSSxDQUFDLEdBQUcsR0FBQyxHQUFHLENBQUM7SUFDakIsQ0FBQztJQUNELE1BQU0sQ0FBQyxJQUFJO1FBQ1AsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNyQyxJQUFJLENBQUMsR0FBVSxRQUFRLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxPQUFPLEVBQUUsSUFBSSxDQUFDLEdBQUcsQ0FBUSxDQUFDO1FBQzdELE9BQU8sQ0FBQyxDQUFBO0lBQ2IsQ0FBQztJQUNELE1BQU0sQ0FBQyxJQUFXO1FBQ2YsSUFBRyxDQUFDO1lBQ0gsSUFBSSxLQUFLLEdBQUcsUUFBUSxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUNqRCxJQUFJLEdBQUcsR0FBRyxLQUFLLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUM7WUFFNUMsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ3hCLENBQUM7UUFBQSxPQUFNLENBQUMsRUFBQyxDQUFDO1lBQ1QsT0FBTyxDQUFDLEdBQUcsQ0FBQyw0QkFBNEIsQ0FBQyxDQUFBO1FBQzFDLENBQUM7SUFDSixDQUFDO3dHQXhCUSxhQUFhOzRHQUFiLGFBQWEsY0FGVixNQUFNOzs0RkFFVCxhQUFhO2tCQUh6QixVQUFVO21CQUFDO29CQUNSLFVBQVUsRUFBRSxNQUFNO2lCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCAqIGFzIENyeXB0b0pTIGZyb20gJ2NyeXB0by1qcydcbi8vZGVjbGFyZSB2YXIgcmVxdWlyZTogYW55XG4vL3ZhciBDcnlwdG9KUyA9IHJlcXVpcmUoXCJjcnlwdG8tanNcIik7XG5ASW5qZWN0YWJsZSh7XG4gICAgcHJvdmlkZWRJbjogJ3Jvb3QnXG4gIH0pXG5leHBvcnQgY2xhc3MgQ3J5cHRvU2VydmljZSB7XG5cbiAgICBrZXk6c3RyaW5nO1xuICAgIGNvbnN0cnVjdG9yKCl7XG4gICAgICAgIHRoaXMua2V5ID0gXCJzc2FsZGttYW9zd2VpdWYyMzFvd2RhbHNkMFwiXG4gICAgfVxuXG4gICAgYXNpZ25hcktleShrZXkpe1xuICAgICAgICB0aGlzLmtleT1rZXk7XG4gICAgfVxuICAgIGVuY29kZShkYXRhKSB7XG4gICAgICAgIGNvbnN0IHN0ckRhdGEgPSBKU09OLnN0cmluZ2lmeShkYXRhKTtcbiAgICAgICAgbGV0IGM6c3RyaW5nID0gQ3J5cHRvSlMuQUVTLmVuY3J5cHQoc3RyRGF0YSwgdGhpcy5rZXkpIGFzIGFueTtcbiAgICAgICAgIHJldHVybiBjXG4gICAgfVxuICAgIGRlY29kZShkYXRhOnN0cmluZyl7XG4gICAgICAgdHJ5e1xuICAgICAgICB2YXIgYnl0ZXMgPSBDcnlwdG9KUy5BRVMuZGVjcnlwdChkYXRhLCB0aGlzLmtleSk7XG4gICAgICAgIHZhciBzdHIgPSBieXRlcy50b1N0cmluZyhDcnlwdG9KUy5lbmMuVXRmOCk7XG5cbiAgICAgICAgcmV0dXJuIEpTT04ucGFyc2Uoc3RyKTtcbiAgICAgICB9Y2F0Y2goZSl7XG4gICAgICAgIGNvbnNvbGUubG9nKCdFcnJvciB0cnkgdG8gZGVjb2RlIHN0cmluZycpXG4gICAgICAgfVxuICAgIH1cblxuICAgIC8vIGVuY29kZVNIQTI1NihkYXRhKSB7XG4gICAgLy8gICAgIGNvbnN0IHN0ckRhdGEgPSBKU09OLnN0cmluZ2lmeShkYXRhKTtcbiAgICAvLyAgICAgcmV0dXJuIENyeXB0b0pTLlNIQTI1NihzdHJEYXRhLCB0aGlzLmtleSk7XG4gICAgLy8gfVxufVxuIl19
@@ -0,0 +1,169 @@
1
+ import { Injectable } from '@angular/core';
2
+ import * as fs from 'file-saver';
3
+ import { Workbook } from 'exceljs';
4
+ import * as i0 from "@angular/core";
5
+ import * as i1 from "./http.service";
6
+ import * as i2 from "./functions.service";
7
+ import * as i3 from "./message.service";
8
+ export class ExportDataService {
9
+ http;
10
+ functionEter;
11
+ message;
12
+ constructor(http, functionEter, message) {
13
+ this.http = http;
14
+ this.functionEter = functionEter;
15
+ this.message = message;
16
+ }
17
+ async generateExcelWithSheets(title, header, name, bodies, url, params, filtersPost, titleFields, sheetNameFields, BodyFields) {
18
+ this.message.openLoading("Cargando", "Generando archivo");
19
+ bodies = await this.getDataBody(url, params, bodies, filtersPost);
20
+ const workbook = new Workbook();
21
+ for (let index = 0; index < bodies.length; index++) {
22
+ const body = bodies[index];
23
+ if (titleFields) {
24
+ title = titleFields.map(param => body[param]).join("-");
25
+ }
26
+ var nameSheet = "sheet";
27
+ if (sheetNameFields) {
28
+ nameSheet = sheetNameFields.map(param => body[param]).join("-");
29
+ }
30
+ const worksheet = await this.generateToXlsx(title, header, `(${(index + 1) + ') ' + nameSheet}`, body, null, null, null, BodyFields, false);
31
+ workbook.addWorksheet(worksheet.name, { views: [{ state: 'frozen', ySplit: 1 }] });
32
+ const newWorksheet = workbook.getWorksheet(worksheet.name);
33
+ newWorksheet.model = worksheet.model;
34
+ }
35
+ const buffer = await workbook.xlsx.writeBuffer();
36
+ this.saveAsExcelFile(buffer, name);
37
+ this.message.closeLoading();
38
+ }
39
+ async generateToXlsx(title, header, name, body, url, params, filtersPost, BodyFields, generateFile = true) {
40
+ if (!generateFile)
41
+ this.message.openLoading("Cargando", "Generando el archivo");
42
+ body = await this.getDataBody(url, params, body, filtersPost);
43
+ let workbook = new Workbook();
44
+ let worksheet = workbook.addWorksheet(name);
45
+ // Add new row
46
+ let titleRow = worksheet.addRow([title]);
47
+ // Set font, size and style in title row.
48
+ titleRow.font = {
49
+ name: 'Comic Sans MS',
50
+ family: 4,
51
+ size: 16,
52
+ underline: 'double',
53
+ bold: true,
54
+ };
55
+ // Blank Row
56
+ // worksheet.addRow([]);
57
+ // let addheader = false
58
+ // for (let p of header.filter(x => x.id === null)) {
59
+ // worksheet.addRow([body[p.value]??p.value])
60
+ // addheader = true
61
+ // }
62
+ worksheet.addRow([]);
63
+ let addheader = false;
64
+ for (let p of header.filter(x => x.id === null)) {
65
+ let value = p.value;
66
+ const matches = value.match(/{(.*?)}/g);
67
+ if (matches) {
68
+ matches.forEach(match => {
69
+ const key = match.slice(1, -1);
70
+ value = value.replace(match, body[key] ?? match);
71
+ });
72
+ }
73
+ worksheet.addRow([value]);
74
+ addheader = true;
75
+ }
76
+ if (addheader)
77
+ worksheet.addRow([]);
78
+ //Add Header Row
79
+ let headerRowValue = header.filter(x => x.id != null).map((p) => { return p.value ?? p.id; });
80
+ let _headerRowValue = worksheet.addRow(headerRowValue);
81
+ // Cell Style : Fill and Border
82
+ _headerRowValue.eachCell((cell, number) => {
83
+ cell.fill = {
84
+ type: 'pattern',
85
+ pattern: 'lightUp',
86
+ fgColor: { argb: '6775f500' },
87
+ bgColor: { argb: '6775f500' },
88
+ };
89
+ cell.border = {
90
+ top: { style: 'thin' },
91
+ left: { style: 'thin' },
92
+ bottom: { style: 'thin' },
93
+ right: { style: 'thin' },
94
+ };
95
+ });
96
+ var headerRow = header.filter(x => x.id != null);
97
+ let data = BodyFields != null ? body[BodyFields] ?? [] : body;
98
+ for (let d of data) {
99
+ var row = [];
100
+ for (let h of headerRow) {
101
+ var dh = d[`${h.id}`];
102
+ if (h.rules) {
103
+ for (const rule of h.rules) {
104
+ if (rule.rule == enumRules['==']) {
105
+ if (dh == rule.valueRule.toString())
106
+ dh = rule.valueAction;
107
+ }
108
+ }
109
+ }
110
+ row.push(dh?.toString());
111
+ }
112
+ worksheet.addRow(row);
113
+ }
114
+ worksheet.columns.forEach(function (column, i) {
115
+ var maxLength = 0;
116
+ column["eachCell"]({ includeEmpty: true }, function (cell) {
117
+ var columnLength = cell.value ? cell.value.toString().length : 10;
118
+ if (columnLength > maxLength) {
119
+ maxLength = columnLength;
120
+ }
121
+ });
122
+ column.width = maxLength < 10 ? 10 : maxLength;
123
+ });
124
+ if (!generateFile) {
125
+ return worksheet;
126
+ }
127
+ workbook.xlsx.writeBuffer().then((data) => {
128
+ this.saveAsExcelFile(data, name);
129
+ });
130
+ if (!generateFile)
131
+ this.message.closeLoading();
132
+ }
133
+ saveAsExcelFile(buffer, fileName) {
134
+ const data = new Blob([buffer], {
135
+ type: 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet;charset=UTF-8'
136
+ });
137
+ fs.saveAs(data, `${fileName}_export_${new Date().getTime()}.xlsx`);
138
+ }
139
+ async getDataBody(url, params, body, filtersPost) {
140
+ if (body)
141
+ return body;
142
+ if (url) {
143
+ var res;
144
+ res = await this.http.postDataBody(url, filtersPost, params);
145
+ if (res['count']) {
146
+ return res['data'];
147
+ }
148
+ else {
149
+ return res;
150
+ }
151
+ }
152
+ }
153
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ExportDataService, deps: [{ token: i1.HttpService }, { token: i2.FunctionsService }, { token: i3.MessageService }], target: i0.ɵɵFactoryTarget.Injectable });
154
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ExportDataService, providedIn: 'root' });
155
+ }
156
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ExportDataService, decorators: [{
157
+ type: Injectable,
158
+ args: [{
159
+ providedIn: 'root'
160
+ }]
161
+ }], ctorParameters: () => [{ type: i1.HttpService }, { type: i2.FunctionsService }, { type: i3.MessageService }] });
162
+ var enumRules;
163
+ (function (enumRules) {
164
+ enumRules[enumRules[">"] = 0] = ">";
165
+ enumRules[enumRules["<"] = 1] = "<";
166
+ enumRules[enumRules["=="] = 2] = "==";
167
+ enumRules[enumRules["!="] = 3] = "!=";
168
+ })(enumRules || (enumRules = {}));
169
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXhwb3J0LWRhdGEuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvbW9kdWxlcy9zZXJ2aWNlcy9leHBvcnQtZGF0YS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFM0MsT0FBTyxLQUFLLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFDakMsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLFNBQVMsQ0FBQzs7Ozs7QUFPbkMsTUFBTSxPQUFPLGlCQUFpQjtJQUdsQjtJQUNBO0lBQ0E7SUFIVixZQUNVLElBQWlCLEVBQ2pCLFlBQThCLEVBQzlCLE9BQXVCO1FBRnZCLFNBQUksR0FBSixJQUFJLENBQWE7UUFDakIsaUJBQVksR0FBWixZQUFZLENBQWtCO1FBQzlCLFlBQU8sR0FBUCxPQUFPLENBQWdCO0lBQUksQ0FBQztJQUV0QyxLQUFLLENBQUMsdUJBQXVCLENBQzNCLEtBQWEsRUFDYixNQUFxQixFQUNyQixJQUFZLEVBQ1osTUFBbUIsRUFDbkIsR0FBWSxFQUNaLE1BQWlCLEVBQ2pCLFdBQXVDLEVBQ3ZDLFdBQXNCLEVBQ3RCLGVBQTBCLEVBQzFCLFVBQWtCO1FBRWxCLElBQUksQ0FBQyxPQUFPLENBQUMsV0FBVyxDQUFDLFVBQVUsRUFBRSxtQkFBbUIsQ0FBQyxDQUFBO1FBRTFELE1BQU0sR0FBRyxNQUFNLElBQUksQ0FBQyxXQUFXLENBQVcsR0FBRyxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsV0FBVyxDQUFDLENBQUE7UUFDNUUsTUFBTSxRQUFRLEdBQUcsSUFBSSxRQUFRLEVBQUUsQ0FBQztRQUU5QixLQUFLLElBQUksS0FBSyxHQUFHLENBQUMsRUFBRSxLQUFLLEdBQUcsTUFBTSxDQUFDLE1BQU0sRUFBRSxLQUFLLEVBQUUsRUFBRSxDQUFDO1lBQ25ELE1BQU0sSUFBSSxHQUFHLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUUzQixJQUFJLFdBQVcsRUFBRSxDQUFDO2dCQUNoQixLQUFLLEdBQUcsV0FBVyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUMxRCxDQUFDO1lBRUQsSUFBSSxTQUFTLEdBQUcsT0FBTyxDQUFDO1lBRXhCLElBQUksZUFBZSxFQUFFLENBQUM7Z0JBQ3BCLFNBQVMsR0FBRyxlQUFlLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQ2xFLENBQUM7WUFFRCxNQUFNLFNBQVMsR0FBRyxNQUFNLElBQUksQ0FBQyxjQUFjLENBQUMsS0FBSyxFQUFFLE1BQU0sRUFBRSxJQUFJLENBQUMsS0FBSyxHQUFDLENBQUMsQ0FBQyxHQUFDLElBQUksR0FBQyxTQUFTLEVBQUUsRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFFLEtBQUssQ0FBQyxDQUFDO1lBQ3RJLFFBQVEsQ0FBQyxZQUFZLENBQUMsU0FBUyxDQUFDLElBQUksRUFBRSxFQUFFLEtBQUssRUFBRSxDQUFDLEVBQUUsS0FBSyxFQUFFLFFBQVEsRUFBRSxNQUFNLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUM7WUFDbkYsTUFBTSxZQUFZLEdBQUcsUUFBUSxDQUFDLFlBQVksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDM0QsWUFBWSxDQUFDLEtBQUssR0FBRyxTQUFTLENBQUMsS0FBSyxDQUFDO1FBQ3ZDLENBQUM7UUFFRCxNQUFNLE1BQU0sR0FBRyxNQUFNLFFBQVEsQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7UUFDakQsSUFBSSxDQUFDLGVBQWUsQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFFbkMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxZQUFZLEVBQUUsQ0FBQTtJQUM3QixDQUFDO0lBRU0sS0FBSyxDQUFDLGNBQWMsQ0FDekIsS0FBYSxFQUNiLE1BQXFCLEVBQ3JCLElBQVksRUFDWixJQUFRLEVBQ1IsR0FBWSxFQUNaLE1BQXNCLEVBQ3RCLFdBQXVDLEVBQ3ZDLFVBQWtCLEVBQ2xCLGVBQXdCLElBQUk7UUFFNUIsSUFBSSxDQUFDLFlBQVk7WUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLFdBQVcsQ0FBQyxVQUFVLEVBQUUsc0JBQXNCLENBQUMsQ0FBQTtRQUUvRSxJQUFJLEdBQUcsTUFBTSxJQUFJLENBQUMsV0FBVyxDQUFJLEdBQUcsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLFdBQVcsQ0FBQyxDQUFBO1FBRWhFLElBQUksUUFBUSxHQUFHLElBQUksUUFBUSxFQUFFLENBQUM7UUFDOUIsSUFBSSxTQUFTLEdBQUcsUUFBUSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUU1QyxjQUFjO1FBQ2QsSUFBSSxRQUFRLEdBQUcsU0FBUyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7UUFFekMseUNBQXlDO1FBQ3pDLFFBQVEsQ0FBQyxJQUFJLEdBQUc7WUFDZCxJQUFJLEVBQUUsZUFBZTtZQUNyQixNQUFNLEVBQUUsQ0FBQztZQUNULElBQUksRUFBRSxFQUFFO1lBQ1IsU0FBUyxFQUFFLFFBQVE7WUFDbkIsSUFBSSxFQUFFLElBQUk7U0FDWCxDQUFDO1FBRUYsWUFBWTtRQUNaLHdCQUF3QjtRQUN4Qix3QkFBd0I7UUFDeEIscURBQXFEO1FBQ3JELCtDQUErQztRQUMvQyxxQkFBcUI7UUFDckIsSUFBSTtRQUVKLFNBQVMsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDckIsSUFBSSxTQUFTLEdBQUcsS0FBSyxDQUFDO1FBQ3RCLEtBQUssSUFBSSxDQUFDLElBQUksTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLEtBQUssSUFBSSxDQUFDLEVBQUUsQ0FBQztZQUNoRCxJQUFJLEtBQUssR0FBRyxDQUFDLENBQUMsS0FBSyxDQUFDO1lBQ3BCLE1BQU0sT0FBTyxHQUFHLEtBQUssQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDLENBQUM7WUFDeEMsSUFBSSxPQUFPLEVBQUUsQ0FBQztnQkFDWixPQUFPLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxFQUFFO29CQUN0QixNQUFNLEdBQUcsR0FBRyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO29CQUMvQixLQUFLLEdBQUcsS0FBSyxDQUFDLE9BQU8sQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLEtBQUssQ0FBQyxDQUFDO2dCQUNuRCxDQUFDLENBQUMsQ0FBQztZQUNMLENBQUM7WUFDRCxTQUFTLENBQUMsTUFBTSxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztZQUMxQixTQUFTLEdBQUcsSUFBSSxDQUFDO1FBQ25CLENBQUM7UUFFRCxJQUFJLFNBQVM7WUFBRSxTQUFTLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBRXBDLGdCQUFnQjtRQUNoQixJQUFJLGNBQWMsR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsSUFBSSxJQUFJLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxHQUFHLE9BQU8sQ0FBQyxDQUFDLEtBQUssSUFBRSxDQUFDLENBQUMsRUFBRSxDQUFBLENBQUMsQ0FBQyxDQUFDLENBQUE7UUFDMUYsSUFBSSxlQUFlLEdBQUcsU0FBUyxDQUFDLE1BQU0sQ0FBQyxjQUFjLENBQUMsQ0FBQztRQUV2RCwrQkFBK0I7UUFDL0IsZUFBZSxDQUFDLFFBQVEsQ0FBQyxDQUFDLElBQUksRUFBRSxNQUFNLEVBQUUsRUFBRTtZQUN4QyxJQUFJLENBQUMsSUFBSSxHQUFHO2dCQUNWLElBQUksRUFBRSxTQUFTO2dCQUNmLE9BQU8sRUFBRSxTQUFTO2dCQUNsQixPQUFPLEVBQUUsRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFFO2dCQUM3QixPQUFPLEVBQUUsRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFFO2FBQzlCLENBQUM7WUFDRixJQUFJLENBQUMsTUFBTSxHQUFHO2dCQUNaLEdBQUcsRUFBRSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUU7Z0JBQ3RCLElBQUksRUFBRSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUU7Z0JBQ3ZCLE1BQU0sRUFBRSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUU7Z0JBQ3pCLEtBQUssRUFBRSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUU7YUFDekIsQ0FBQztRQUNKLENBQUMsQ0FBQyxDQUFDO1FBRUgsSUFBSSxTQUFTLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLElBQUksSUFBSSxDQUFDLENBQUE7UUFFaEQsSUFBSSxJQUFJLEdBQUcsVUFBVSxJQUFJLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFBO1FBQzdELEtBQUssSUFBSSxDQUFDLElBQUksSUFBSSxFQUFFLENBQUM7WUFDbkIsSUFBSSxHQUFHLEdBQUcsRUFBRSxDQUFBO1lBQ1osS0FBSyxJQUFJLENBQUMsSUFBSSxTQUFTLEVBQUUsQ0FBQztnQkFDeEIsSUFBSSxFQUFFLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUE7Z0JBQ3JCLElBQUksQ0FBQyxDQUFDLEtBQUssRUFBRSxDQUFDO29CQUNaLEtBQUssTUFBTSxJQUFJLElBQUksQ0FBQyxDQUFDLEtBQUssRUFBRSxDQUFDO3dCQUMzQixJQUFJLElBQUksQ0FBQyxJQUFJLElBQUksU0FBUyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUM7NEJBQ2pDLElBQUksRUFBRSxJQUFJLElBQUksQ0FBQyxTQUFTLENBQUMsUUFBUSxFQUFFO2dDQUNqQyxFQUFFLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQTt3QkFDekIsQ0FBQztvQkFDSCxDQUFDO2dCQUNILENBQUM7Z0JBQ0QsR0FBRyxDQUFDLElBQUksQ0FBQyxFQUFFLEVBQUUsUUFBUSxFQUFFLENBQUMsQ0FBQTtZQUMxQixDQUFDO1lBQ0QsU0FBUyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUN4QixDQUFDO1FBRUQsU0FBUyxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsVUFBVSxNQUFNLEVBQUUsQ0FBQztZQUMzQyxJQUFJLFNBQVMsR0FBRyxDQUFDLENBQUM7WUFDbEIsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDLEVBQUUsWUFBWSxFQUFFLElBQUksRUFBRSxFQUFFLFVBQVUsSUFBSTtnQkFDdkQsSUFBSSxZQUFZLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLEVBQUUsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztnQkFDbEUsSUFBSSxZQUFZLEdBQUcsU0FBUyxFQUFFLENBQUM7b0JBQzdCLFNBQVMsR0FBRyxZQUFZLENBQUM7Z0JBQzNCLENBQUM7WUFDSCxDQUFDLENBQUMsQ0FBQztZQUNILE1BQU0sQ0FBQyxLQUFLLEdBQUcsU0FBUyxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUM7UUFDakQsQ0FBQyxDQUFDLENBQUM7UUFFSCxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7WUFDbEIsT0FBTyxTQUFTLENBQUM7UUFDbkIsQ0FBQztRQUVELFFBQVEsQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUU7WUFDeEMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFDbkMsQ0FBQyxDQUFDLENBQUM7UUFFSCxJQUFJLENBQUMsWUFBWTtZQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsWUFBWSxFQUFFLENBQUE7SUFDaEQsQ0FBQztJQUVPLGVBQWUsQ0FBQyxNQUFXLEVBQUUsUUFBZ0I7UUFDbkQsTUFBTSxJQUFJLEdBQVMsSUFBSSxJQUFJLENBQUMsQ0FBQyxNQUFNLENBQUMsRUFBRTtZQUNwQyxJQUFJLEVBQUUsaUZBQWlGO1NBQ3hGLENBQUMsQ0FBQztRQUNILEVBQUUsQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLEdBQUcsUUFBUSxXQUFXLElBQUksSUFBSSxFQUFFLENBQUMsT0FBTyxFQUFFLE9BQU8sQ0FBQyxDQUFDO0lBQ3JFLENBQUM7SUFFTyxLQUFLLENBQUMsV0FBVyxDQUFJLEdBQVcsRUFBRSxNQUFxQixFQUFFLElBQU8sRUFBRSxXQUF1QztRQUMvRyxJQUFJLElBQUk7WUFBRSxPQUFPLElBQUksQ0FBQztRQUV0QixJQUFJLEdBQUcsRUFBRSxDQUFDO1lBQ1IsSUFBSSxHQUFRLENBQUE7WUFDWixHQUFHLEdBQUcsTUFBTSxJQUFJLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxHQUFHLEVBQUUsV0FBVyxFQUFFLE1BQU0sQ0FBQyxDQUFBO1lBQzVELElBQUksR0FBRyxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUM7Z0JBQ2pCLE9BQU8sR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFBO1lBQ3BCLENBQUM7aUJBQU0sQ0FBQztnQkFDTixPQUFPLEdBQUcsQ0FBQTtZQUNaLENBQUM7UUFDSCxDQUFDO0lBRUgsQ0FBQzt3R0ExTFUsaUJBQWlCOzRHQUFqQixpQkFBaUIsY0FGaEIsTUFBTTs7NEZBRVAsaUJBQWlCO2tCQUg3QixVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQjs7QUE4TEQsSUFBSyxTQUtKO0FBTEQsV0FBSyxTQUFTO0lBQ1osbUNBQUcsQ0FBQTtJQUNILG1DQUFHLENBQUE7SUFDSCxxQ0FBSSxDQUFBO0lBQ0oscUNBQUksQ0FBQTtBQUNOLENBQUMsRUFMSSxTQUFTLEtBQVQsU0FBUyxRQUtiIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTWVzc2FnZVNlcnZpY2UgfSBmcm9tICcuL21lc3NhZ2Uuc2VydmljZSc7XG5pbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBIdHRwU2VydmljZSB9IGZyb20gJy4vaHR0cC5zZXJ2aWNlJztcbmltcG9ydCAqIGFzIGZzIGZyb20gJ2ZpbGUtc2F2ZXInO1xuaW1wb3J0IHsgV29ya2Jvb2sgfSBmcm9tICdleGNlbGpzJztcbmltcG9ydCB7IHBhcmFtcyB9IGZyb20gJy4uL2ludGVyZmFjZXMvZGF0YS10YWJsZS9wYXJhbXMnO1xuaW1wb3J0IHsgRnVuY3Rpb25zU2VydmljZSB9IGZyb20gJy4vZnVuY3Rpb25zLnNlcnZpY2UnO1xuaW1wb3J0IHsgSGVhZGVyRmlsdGVycyB9IGZyb20gJy4uL2ludGVyZmFjZXMvZmlsdGVycy9oZWFkZXItZmlsdGVycyc7XG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290J1xufSlcbmV4cG9ydCBjbGFzcyBFeHBvcnREYXRhU2VydmljZSB7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBodHRwOiBIdHRwU2VydmljZSxcbiAgICBwcml2YXRlIGZ1bmN0aW9uRXRlcjogRnVuY3Rpb25zU2VydmljZSxcbiAgICBwcml2YXRlIG1lc3NhZ2U6IE1lc3NhZ2VTZXJ2aWNlKSB7IH1cblxuICBhc3luYyBnZW5lcmF0ZUV4Y2VsV2l0aFNoZWV0czxUPihcbiAgICB0aXRsZTogc3RyaW5nLFxuICAgIGhlYWRlcjogQXJyYXk8cGFyYW1zPixcbiAgICBuYW1lOiBzdHJpbmcsXG4gICAgYm9kaWVzPzogQXJyYXk8YW55PixcbiAgICB1cmw/OiBzdHJpbmcsXG4gICAgcGFyYW1zPzogcGFyYW1zW10sXG4gICAgZmlsdGVyc1Bvc3Q/OiBBcnJheTxIZWFkZXJGaWx0ZXJzPGFueT4+LFxuICAgIHRpdGxlRmllbGRzPzogc3RyaW5nW10sXG4gICAgc2hlZXROYW1lRmllbGRzPzogc3RyaW5nW10sXG4gICAgQm9keUZpZWxkcz86c3RyaW5nKTogUHJvbWlzZTx2b2lkPiB7XG5cbiAgICB0aGlzLm1lc3NhZ2Uub3BlbkxvYWRpbmcoXCJDYXJnYW5kb1wiLCBcIkdlbmVyYW5kbyBhcmNoaXZvXCIpXG5cbiAgIGJvZGllcyA9IGF3YWl0IHRoaXMuZ2V0RGF0YUJvZHk8QXJyYXk8VD4+KHVybCwgcGFyYW1zLCBib2RpZXMsIGZpbHRlcnNQb3N0KVxuICBjb25zdCB3b3JrYm9vayA9IG5ldyBXb3JrYm9vaygpO1xuXG4gICAgZm9yIChsZXQgaW5kZXggPSAwOyBpbmRleCA8IGJvZGllcy5sZW5ndGg7IGluZGV4KyspIHtcbiAgICAgIGNvbnN0IGJvZHkgPSBib2RpZXNbaW5kZXhdO1xuXG4gICAgICBpZiAodGl0bGVGaWVsZHMpIHtcbiAgICAgICAgdGl0bGUgPSB0aXRsZUZpZWxkcy5tYXAocGFyYW0gPT4gYm9keVtwYXJhbV0pLmpvaW4oXCItXCIpO1xuICAgICAgfVxuXG4gICAgICB2YXIgbmFtZVNoZWV0ID0gXCJzaGVldFwiO1xuXG4gICAgICBpZiAoc2hlZXROYW1lRmllbGRzKSB7XG4gICAgICAgIG5hbWVTaGVldCA9IHNoZWV0TmFtZUZpZWxkcy5tYXAocGFyYW0gPT4gYm9keVtwYXJhbV0pLmpvaW4oXCItXCIpO1xuICAgICAgfVxuXG4gICAgICBjb25zdCB3b3Jrc2hlZXQgPSBhd2FpdCB0aGlzLmdlbmVyYXRlVG9YbHN4KHRpdGxlLCBoZWFkZXIsIGAoJHsoaW5kZXgrMSkrJykgJytuYW1lU2hlZXR9YCwgYm9keSwgbnVsbCwgbnVsbCwgbnVsbCwgQm9keUZpZWxkcywgZmFsc2UpO1xuICAgICAgd29ya2Jvb2suYWRkV29ya3NoZWV0KHdvcmtzaGVldC5uYW1lLCB7IHZpZXdzOiBbeyBzdGF0ZTogJ2Zyb3plbicsIHlTcGxpdDogMSB9XSB9KTtcbiAgICAgIGNvbnN0IG5ld1dvcmtzaGVldCA9IHdvcmtib29rLmdldFdvcmtzaGVldCh3b3Jrc2hlZXQubmFtZSk7XG4gICAgICBuZXdXb3Jrc2hlZXQubW9kZWwgPSB3b3Jrc2hlZXQubW9kZWw7XG4gICAgfVxuXG4gICAgY29uc3QgYnVmZmVyID0gYXdhaXQgd29ya2Jvb2sueGxzeC53cml0ZUJ1ZmZlcigpO1xuICAgIHRoaXMuc2F2ZUFzRXhjZWxGaWxlKGJ1ZmZlciwgbmFtZSk7XG5cbiAgICB0aGlzLm1lc3NhZ2UuY2xvc2VMb2FkaW5nKClcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBnZW5lcmF0ZVRvWGxzeDxUPihcbiAgICB0aXRsZTogc3RyaW5nLFxuICAgIGhlYWRlcjogQXJyYXk8cGFyYW1zPixcbiAgICBuYW1lOiBzdHJpbmcsXG4gICAgYm9keT86IFQsXG4gICAgdXJsPzogc3RyaW5nLFxuICAgIHBhcmFtcz86IEFycmF5PHBhcmFtcz4sXG4gICAgZmlsdGVyc1Bvc3Q/OiBBcnJheTxIZWFkZXJGaWx0ZXJzPGFueT4+LFxuICAgIEJvZHlGaWVsZHM/OnN0cmluZyxcbiAgICBnZW5lcmF0ZUZpbGU6IGJvb2xlYW4gPSB0cnVlKTogUHJvbWlzZTxhbnk+IHtcblxuICAgIGlmICghZ2VuZXJhdGVGaWxlKSB0aGlzLm1lc3NhZ2Uub3BlbkxvYWRpbmcoXCJDYXJnYW5kb1wiLCBcIkdlbmVyYW5kbyBlbCBhcmNoaXZvXCIpXG5cbiAgICBib2R5ID0gYXdhaXQgdGhpcy5nZXREYXRhQm9keTxUPih1cmwsIHBhcmFtcywgYm9keSwgZmlsdGVyc1Bvc3QpXG5cbiAgICBsZXQgd29ya2Jvb2sgPSBuZXcgV29ya2Jvb2soKTtcbiAgICBsZXQgd29ya3NoZWV0ID0gd29ya2Jvb2suYWRkV29ya3NoZWV0KG5hbWUpO1xuXG4gICAgLy8gQWRkIG5ldyByb3dcbiAgICBsZXQgdGl0bGVSb3cgPSB3b3Jrc2hlZXQuYWRkUm93KFt0aXRsZV0pO1xuXG4gICAgLy8gU2V0IGZvbnQsIHNpemUgYW5kIHN0eWxlIGluIHRpdGxlIHJvdy5cbiAgICB0aXRsZVJvdy5mb250ID0ge1xuICAgICAgbmFtZTogJ0NvbWljIFNhbnMgTVMnLFxuICAgICAgZmFtaWx5OiA0LFxuICAgICAgc2l6ZTogMTYsXG4gICAgICB1bmRlcmxpbmU6ICdkb3VibGUnLFxuICAgICAgYm9sZDogdHJ1ZSxcbiAgICB9O1xuXG4gICAgLy8gQmxhbmsgUm93XG4gICAgLy8gd29ya3NoZWV0LmFkZFJvdyhbXSk7XG4gICAgLy8gbGV0IGFkZGhlYWRlciA9IGZhbHNlXG4gICAgLy8gZm9yIChsZXQgcCBvZiBoZWFkZXIuZmlsdGVyKHggPT4geC5pZCA9PT0gbnVsbCkpIHtcbiAgICAvLyAgIHdvcmtzaGVldC5hZGRSb3coW2JvZHlbcC52YWx1ZV0/P3AudmFsdWVdKVxuICAgIC8vICAgYWRkaGVhZGVyID0gdHJ1ZVxuICAgIC8vIH1cblxuICAgIHdvcmtzaGVldC5hZGRSb3coW10pO1xuICAgIGxldCBhZGRoZWFkZXIgPSBmYWxzZTtcbiAgICBmb3IgKGxldCBwIG9mIGhlYWRlci5maWx0ZXIoeCA9PiB4LmlkID09PSBudWxsKSkge1xuICAgICAgbGV0IHZhbHVlID0gcC52YWx1ZTtcbiAgICAgIGNvbnN0IG1hdGNoZXMgPSB2YWx1ZS5tYXRjaCgveyguKj8pfS9nKTtcbiAgICAgIGlmIChtYXRjaGVzKSB7XG4gICAgICAgIG1hdGNoZXMuZm9yRWFjaChtYXRjaCA9PiB7XG4gICAgICAgICAgY29uc3Qga2V5ID0gbWF0Y2guc2xpY2UoMSwgLTEpO1xuICAgICAgICAgIHZhbHVlID0gdmFsdWUucmVwbGFjZShtYXRjaCwgYm9keVtrZXldID8/IG1hdGNoKTtcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgICB3b3Jrc2hlZXQuYWRkUm93KFt2YWx1ZV0pO1xuICAgICAgYWRkaGVhZGVyID0gdHJ1ZTtcbiAgICB9XG5cbiAgICBpZiAoYWRkaGVhZGVyKSB3b3Jrc2hlZXQuYWRkUm93KFtdKTtcblxuICAgIC8vQWRkIEhlYWRlciBSb3dcbiAgICBsZXQgaGVhZGVyUm93VmFsdWUgPSBoZWFkZXIuZmlsdGVyKHggPT4geC5pZCAhPSBudWxsKS5tYXAoKHApID0+IHsgcmV0dXJuIHAudmFsdWU/P3AuaWQgfSlcbiAgICBsZXQgX2hlYWRlclJvd1ZhbHVlID0gd29ya3NoZWV0LmFkZFJvdyhoZWFkZXJSb3dWYWx1ZSk7XG5cbiAgICAvLyBDZWxsIFN0eWxlIDogRmlsbCBhbmQgQm9yZGVyXG4gICAgX2hlYWRlclJvd1ZhbHVlLmVhY2hDZWxsKChjZWxsLCBudW1iZXIpID0+IHtcbiAgICAgIGNlbGwuZmlsbCA9IHtcbiAgICAgICAgdHlwZTogJ3BhdHRlcm4nLFxuICAgICAgICBwYXR0ZXJuOiAnbGlnaHRVcCcsXG4gICAgICAgIGZnQ29sb3I6IHsgYXJnYjogJzY3NzVmNTAwJyB9LFxuICAgICAgICBiZ0NvbG9yOiB7IGFyZ2I6ICc2Nzc1ZjUwMCcgfSxcbiAgICAgIH07XG4gICAgICBjZWxsLmJvcmRlciA9IHtcbiAgICAgICAgdG9wOiB7IHN0eWxlOiAndGhpbicgfSxcbiAgICAgICAgbGVmdDogeyBzdHlsZTogJ3RoaW4nIH0sXG4gICAgICAgIGJvdHRvbTogeyBzdHlsZTogJ3RoaW4nIH0sXG4gICAgICAgIHJpZ2h0OiB7IHN0eWxlOiAndGhpbicgfSxcbiAgICAgIH07XG4gICAgfSk7XG5cbiAgICB2YXIgaGVhZGVyUm93ID0gaGVhZGVyLmZpbHRlcih4ID0+IHguaWQgIT0gbnVsbClcblxuICAgIGxldCBkYXRhID0gQm9keUZpZWxkcyAhPSBudWxsID8gYm9keVtCb2R5RmllbGRzXSA/PyBbXSA6IGJvZHlcbiAgICBmb3IgKGxldCBkIG9mIGRhdGEpIHtcbiAgICAgIHZhciByb3cgPSBbXVxuICAgICAgZm9yIChsZXQgaCBvZiBoZWFkZXJSb3cpIHtcbiAgICAgICAgdmFyIGRoID0gZFtgJHtoLmlkfWBdXG4gICAgICAgIGlmIChoLnJ1bGVzKSB7XG4gICAgICAgICAgZm9yIChjb25zdCBydWxlIG9mIGgucnVsZXMpIHtcbiAgICAgICAgICAgIGlmIChydWxlLnJ1bGUgPT0gZW51bVJ1bGVzWyc9PSddKSB7XG4gICAgICAgICAgICAgIGlmIChkaCA9PSBydWxlLnZhbHVlUnVsZS50b1N0cmluZygpKVxuICAgICAgICAgICAgICAgIGRoID0gcnVsZS52YWx1ZUFjdGlvblxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByb3cucHVzaChkaD8udG9TdHJpbmcoKSlcbiAgICAgIH1cbiAgICAgIHdvcmtzaGVldC5hZGRSb3cocm93KTtcbiAgICB9XG5cbiAgICB3b3Jrc2hlZXQuY29sdW1ucy5mb3JFYWNoKGZ1bmN0aW9uIChjb2x1bW4sIGkpIHtcbiAgICAgIHZhciBtYXhMZW5ndGggPSAwO1xuICAgICAgY29sdW1uW1wiZWFjaENlbGxcIl0oeyBpbmNsdWRlRW1wdHk6IHRydWUgfSwgZnVuY3Rpb24gKGNlbGwpIHtcbiAgICAgICAgdmFyIGNvbHVtbkxlbmd0aCA9IGNlbGwudmFsdWUgPyBjZWxsLnZhbHVlLnRvU3RyaW5nKCkubGVuZ3RoIDogMTA7XG4gICAgICAgIGlmIChjb2x1bW5MZW5ndGggPiBtYXhMZW5ndGgpIHtcbiAgICAgICAgICBtYXhMZW5ndGggPSBjb2x1bW5MZW5ndGg7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgICAgY29sdW1uLndpZHRoID0gbWF4TGVuZ3RoIDwgMTAgPyAxMCA6IG1heExlbmd0aDtcbiAgICB9KTtcblxuICAgIGlmICghZ2VuZXJhdGVGaWxlKSB7XG4gICAgICByZXR1cm4gd29ya3NoZWV0O1xuICAgIH1cblxuICAgIHdvcmtib29rLnhsc3gud3JpdGVCdWZmZXIoKS50aGVuKChkYXRhKSA9PiB7XG4gICAgICB0aGlzLnNhdmVBc0V4Y2VsRmlsZShkYXRhLCBuYW1lKTtcbiAgICB9KTtcblxuICAgIGlmICghZ2VuZXJhdGVGaWxlKSB0aGlzLm1lc3NhZ2UuY2xvc2VMb2FkaW5nKClcbiAgfVxuXG4gIHByaXZhdGUgc2F2ZUFzRXhjZWxGaWxlKGJ1ZmZlcjogYW55LCBmaWxlTmFtZTogc3RyaW5nKTogdm9pZCB7XG4gICAgY29uc3QgZGF0YTogQmxvYiA9IG5ldyBCbG9iKFtidWZmZXJdLCB7XG4gICAgICB0eXBlOiAnYXBwbGljYXRpb24vdm5kLm9wZW54bWxmb3JtYXRzLW9mZmljZWRvY3VtZW50LnNwcmVhZHNoZWV0bWwuc2hlZXQ7Y2hhcnNldD1VVEYtOCdcbiAgICB9KTtcbiAgICBmcy5zYXZlQXMoZGF0YSwgYCR7ZmlsZU5hbWV9X2V4cG9ydF8ke25ldyBEYXRlKCkuZ2V0VGltZSgpfS54bHN4YCk7XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIGdldERhdGFCb2R5PFQ+KHVybDogc3RyaW5nLCBwYXJhbXM6IEFycmF5PHBhcmFtcz4sIGJvZHk6IFQsIGZpbHRlcnNQb3N0PzogQXJyYXk8SGVhZGVyRmlsdGVyczxhbnk+Pik6IFByb21pc2U8VD4ge1xuICAgIGlmIChib2R5KSByZXR1cm4gYm9keTtcblxuICAgIGlmICh1cmwpIHtcbiAgICAgIHZhciByZXM6IGFueVxuICAgICAgcmVzID0gYXdhaXQgdGhpcy5odHRwLnBvc3REYXRhQm9keSh1cmwsIGZpbHRlcnNQb3N0LCBwYXJhbXMpXG4gICAgICBpZiAocmVzWydjb3VudCddKSB7XG4gICAgICAgIHJldHVybiByZXNbJ2RhdGEnXVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIHJlc1xuICAgICAgfVxuICAgIH1cblxuICB9XG59XG5cbmVudW0gZW51bVJ1bGVzIHtcbiAgXCI+XCIsXG4gIFwiPFwiLFxuICBcIj09XCIsXG4gIFwiIT1cIlxufVxuIl19
@@ -0,0 +1,24 @@
1
+ import { Injectable } from '@angular/core';
2
+ import * as i0 from "@angular/core";
3
+ export class FileFormsService {
4
+ constructor() { }
5
+ createMultipartForm(file, params) {
6
+ const formD = new FormData();
7
+ formD.append('file', file, 'form-data'); //Asigna el campo File
8
+ if (params) {
9
+ params.forEach((element) => {
10
+ formD.append(element.id, element.value);
11
+ });
12
+ }
13
+ return (formD);
14
+ }
15
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: FileFormsService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
16
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: FileFormsService, providedIn: 'root' });
17
+ }
18
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: FileFormsService, decorators: [{
19
+ type: Injectable,
20
+ args: [{
21
+ providedIn: 'root'
22
+ }]
23
+ }], ctorParameters: () => [] });
24
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsZS1mb3Jtcy5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9tb2R1bGVzL3NlcnZpY2VzL2ZpbGUtZm9ybXMuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDOztBQUszQyxNQUFNLE9BQU8sZ0JBQWdCO0lBRTNCLGdCQUFnQixDQUFDO0lBRWpCLG1CQUFtQixDQUFDLElBQVMsRUFBRSxNQUFPO1FBRXBDLE1BQU0sS0FBSyxHQUFHLElBQUksUUFBUSxFQUFFLENBQUM7UUFDN0IsS0FBSyxDQUFDLE1BQU0sQ0FBQyxNQUFNLEVBQUMsSUFBSSxFQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUEsc0JBQXNCO1FBQzVELElBQUcsTUFBTSxFQUFDLENBQUM7WUFDVCxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUMsT0FBVyxFQUFFLEVBQUU7Z0JBQzdCLEtBQUssQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLEVBQUUsRUFBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUE7WUFDeEMsQ0FBQyxDQUFDLENBQUM7UUFDTCxDQUFDO1FBQ0QsT0FBTSxDQUFDLEtBQUssQ0FBQyxDQUFBO0lBRWYsQ0FBQzt3R0FmVSxnQkFBZ0I7NEdBQWhCLGdCQUFnQixjQUZmLE1BQU07OzRGQUVQLGdCQUFnQjtrQkFINUIsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnXG59KVxuZXhwb3J0IGNsYXNzIEZpbGVGb3Jtc1NlcnZpY2Uge1xuXG4gIGNvbnN0cnVjdG9yKCkgeyB9XG5cbiAgY3JlYXRlTXVsdGlwYXJ0Rm9ybShmaWxlOkZpbGUsIHBhcmFtcz8pe1xuXG4gICAgY29uc3QgZm9ybUQgPSBuZXcgRm9ybURhdGEoKTtcbiAgICBmb3JtRC5hcHBlbmQoJ2ZpbGUnLGZpbGUsJ2Zvcm0tZGF0YScpOy8vQXNpZ25hIGVsIGNhbXBvIEZpbGVcbiAgICBpZihwYXJhbXMpe1xuICAgICAgcGFyYW1zLmZvckVhY2goKGVsZW1lbnQ6YW55KSA9PiB7XG4gICAgICAgIGZvcm1ELmFwcGVuZChlbGVtZW50LmlkLGVsZW1lbnQudmFsdWUpXG4gICAgICB9KTtcbiAgICB9XG4gICAgcmV0dXJuKGZvcm1EKVxuXG4gIH1cblxufVxuIl19