brainloper-ui 1.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.
- package/README.md +3 -0
- package/brainloper-ui.d.ts +5 -0
- package/esm2020/brainloper-ui.mjs +5 -0
- package/esm2020/public_api.mjs +50 -0
- package/esm2020/src/app/modules/brainloper-ui/brainloper-ui.module.mjs +305 -0
- package/esm2020/src/app/modules/brainloper-ui/components/bread-crumb/bread-crumb.component.mjs +29 -0
- package/esm2020/src/app/modules/brainloper-ui/components/buttons/button-icon/button-icon.component.mjs +23 -0
- package/esm2020/src/app/modules/brainloper-ui/components/buttons/button-label/button-label.component.mjs +83 -0
- package/esm2020/src/app/modules/brainloper-ui/components/buttons/combos/combos.component.mjs +144 -0
- package/esm2020/src/app/modules/brainloper-ui/components/carousel/carousel.component.mjs +31 -0
- package/esm2020/src/app/modules/brainloper-ui/components/data-table/data-table.component.mjs +426 -0
- package/esm2020/src/app/modules/brainloper-ui/components/data-table/table-modal/table-modal.component.mjs +100 -0
- package/esm2020/src/app/modules/brainloper-ui/components/file-input/file-input.component.mjs +185 -0
- package/esm2020/src/app/modules/brainloper-ui/components/file-input/imagenes/doc.mjs +2 -0
- package/esm2020/src/app/modules/brainloper-ui/components/file-input/imagenes/fondoTransparente.mjs +2 -0
- package/esm2020/src/app/modules/brainloper-ui/components/file-input/imagenes/pdf.mjs +2 -0
- package/esm2020/src/app/modules/brainloper-ui/components/filters/filters.component.mjs +205 -0
- package/esm2020/src/app/modules/brainloper-ui/components/report/generate-pdf/generate-pdf.component.mjs +80 -0
- package/esm2020/src/app/modules/brainloper-ui/components/report/template-fuel/template-fuel.component.mjs +81 -0
- package/esm2020/src/app/modules/interfaces/buttons/button-icon.mjs +2 -0
- package/esm2020/src/app/modules/interfaces/buttons/button-lavel-edit.mjs +2 -0
- package/esm2020/src/app/modules/interfaces/combos/combos-configuration.mjs +2 -0
- package/esm2020/src/app/modules/interfaces/data-table/params.mjs +2 -0
- package/esm2020/src/app/modules/interfaces/data-table/rules.mjs +2 -0
- package/esm2020/src/app/modules/interfaces/data-table/table-columns.mjs +2 -0
- package/esm2020/src/app/modules/interfaces/data-table/table-configuration.mjs +2 -0
- package/esm2020/src/app/modules/interfaces/enum/enumActions.mjs +7 -0
- package/esm2020/src/app/modules/interfaces/enum/enumRules.mjs +8 -0
- package/esm2020/src/app/modules/interfaces/file-forms-service/file-forms-params.mjs +2 -0
- package/esm2020/src/app/modules/interfaces/file-forms-service/file-input-params.mjs +2 -0
- package/esm2020/src/app/modules/interfaces/filters/header-filters.mjs +2 -0
- package/esm2020/src/app/modules/interfaces/menu-break-crumb/menu-break-crumb.mjs +8 -0
- package/esm2020/src/app/modules/interfaces/report/template-pdf-ot.mjs +2 -0
- package/esm2020/src/app/modules/interfaces/report/template-pfd-fo.mjs +2 -0
- package/esm2020/src/app/modules/services/crypto.service.mjs +37 -0
- package/esm2020/src/app/modules/services/export-data.service.mjs +143 -0
- package/esm2020/src/app/modules/services/file-forms.service.mjs +24 -0
- package/esm2020/src/app/modules/services/functions.service.mjs +48 -0
- package/esm2020/src/app/modules/services/generate-pdf.service.mjs +58 -0
- package/esm2020/src/app/modules/services/http.service.mjs +154 -0
- package/esm2020/src/app/modules/services/loading/loading.component.mjs +28 -0
- package/esm2020/src/app/modules/services/local-storage.service.mjs +115 -0
- package/esm2020/src/app/modules/services/message.service.mjs +172 -0
- package/esm2020/src/app/modules/services/screen-size-util.mjs +6 -0
- package/esm2020/src/app/modules/services/session.service.mjs +42 -0
- package/fesm2015/brainloper-ui.mjs +2448 -0
- package/fesm2015/brainloper-ui.mjs.map +1 -0
- package/fesm2020/brainloper-ui.mjs +2419 -0
- package/fesm2020/brainloper-ui.mjs.map +1 -0
- package/package.json +58 -0
- package/public_api.d.ts +49 -0
- package/src/app/modules/brainloper-ui/brainloper-ui.module.d.ts +73 -0
- package/src/app/modules/brainloper-ui/components/bread-crumb/bread-crumb.component.d.ts +13 -0
- package/src/app/modules/brainloper-ui/components/buttons/button-icon/button-icon.component.d.ts +10 -0
- package/src/app/modules/brainloper-ui/components/buttons/button-label/button-label.component.d.ts +24 -0
- package/src/app/modules/brainloper-ui/components/buttons/combos/combos.component.d.ts +43 -0
- package/src/app/modules/brainloper-ui/components/carousel/carousel.component.d.ts +12 -0
- package/src/app/modules/brainloper-ui/components/data-table/data-table.component.d.ts +87 -0
- package/src/app/modules/brainloper-ui/components/data-table/table-modal/table-modal.component.d.ts +20 -0
- package/src/app/modules/brainloper-ui/components/file-input/file-input.component.d.ts +42 -0
- package/src/app/modules/brainloper-ui/components/file-input/imagenes/doc.d.ts +2 -0
- package/src/app/modules/brainloper-ui/components/file-input/imagenes/fondoTransparente.d.ts +2 -0
- package/src/app/modules/brainloper-ui/components/file-input/imagenes/pdf.d.ts +2 -0
- package/src/app/modules/brainloper-ui/components/filters/filters.component.d.ts +29 -0
- package/src/app/modules/brainloper-ui/components/report/generate-pdf/generate-pdf.component.d.ts +35 -0
- package/src/app/modules/brainloper-ui/components/report/template-fuel/template-fuel.component.d.ts +36 -0
- package/src/app/modules/interfaces/buttons/button-icon.d.ts +9 -0
- package/src/app/modules/interfaces/buttons/button-lavel-edit.d.ts +6 -0
- package/src/app/modules/interfaces/combos/combos-configuration.d.ts +13 -0
- package/src/app/modules/interfaces/data-table/params.d.ts +6 -0
- package/src/app/modules/interfaces/data-table/rules.d.ts +8 -0
- package/src/app/modules/interfaces/data-table/table-columns.d.ts +23 -0
- package/src/app/modules/interfaces/data-table/table-configuration.d.ts +16 -0
- package/src/app/modules/interfaces/enum/enumActions.d.ts +5 -0
- package/src/app/modules/interfaces/enum/enumRules.d.ts +6 -0
- package/src/app/modules/interfaces/file-forms-service/file-forms-params.d.ts +4 -0
- package/src/app/modules/interfaces/file-forms-service/file-input-params.d.ts +13 -0
- package/src/app/modules/interfaces/filters/header-filters.d.ts +12 -0
- package/src/app/modules/interfaces/menu-break-crumb/menu-break-crumb.d.ts +10 -0
- package/src/app/modules/interfaces/report/template-pdf-ot.d.ts +19 -0
- package/src/app/modules/interfaces/report/template-pfd-fo.d.ts +20 -0
- package/src/app/modules/services/crypto.service.d.ts +10 -0
- package/src/app/modules/services/export-data.service.d.ts +15 -0
- package/src/app/modules/services/file-forms.service.d.ts +7 -0
- package/src/app/modules/services/functions.service.d.ts +12 -0
- package/src/app/modules/services/generate-pdf.service.d.ts +12 -0
- package/src/app/modules/services/http.service.d.ts +21 -0
- package/src/app/modules/services/loading/loading.component.d.ts +15 -0
- package/src/app/modules/services/local-storage.service.d.ts +49 -0
- package/src/app/modules/services/message.service.d.ts +20 -0
- package/src/app/modules/services/screen-size-util.d.ts +3 -0
- package/src/app/modules/services/session.service.d.ts +14 -0
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
import { Component, Inject } 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
|
+
import * as i2 from "@angular/forms";
|
|
6
|
+
import * as i3 from "../../../../services/http.service";
|
|
7
|
+
import * as i4 from "@angular/material/form-field";
|
|
8
|
+
import * as i5 from "@angular/material/select";
|
|
9
|
+
import * as i6 from "@angular/material/core";
|
|
10
|
+
import * as i7 from "@angular/material/button";
|
|
11
|
+
import * as i8 from "@angular/common";
|
|
12
|
+
import * as i9 from "@angular/material/input";
|
|
13
|
+
export class TableModalComponent {
|
|
14
|
+
constructor(dialogRef, data, formBuilder, http) {
|
|
15
|
+
this.dialogRef = dialogRef;
|
|
16
|
+
this.data = data;
|
|
17
|
+
this.formBuilder = formBuilder;
|
|
18
|
+
this.http = http;
|
|
19
|
+
this.modalForm = {};
|
|
20
|
+
this.dataCombo = {};
|
|
21
|
+
}
|
|
22
|
+
onNoClick() {
|
|
23
|
+
this.dialogRef.close();
|
|
24
|
+
}
|
|
25
|
+
ngOnInit() {
|
|
26
|
+
let columns = this.data.columns;
|
|
27
|
+
//console.log('data columns', this.data.columns);
|
|
28
|
+
this.data.columns.forEach((element, index) => {
|
|
29
|
+
let text = `{"${element.ID}":""}`;
|
|
30
|
+
let json = JSON.parse(text);
|
|
31
|
+
Object.assign(this.modalForm, json);
|
|
32
|
+
if (element.type == 'combo') {
|
|
33
|
+
Object.assign(this.dataCombo, json);
|
|
34
|
+
}
|
|
35
|
+
if (this.data.action == 'edit') {
|
|
36
|
+
this.modalForm[element.ID] = element.value;
|
|
37
|
+
if (element.type === 'date') {
|
|
38
|
+
if (element.value) {
|
|
39
|
+
let s = element.value.split('/');
|
|
40
|
+
element.value = `${s[2]}-${s[1]}-${s[0]}`;
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
if (element.paramsCombo) {
|
|
45
|
+
//console.log(element.paramsCombo.url);
|
|
46
|
+
//console.log(element.paramsCombo.urlParams);
|
|
47
|
+
this.http
|
|
48
|
+
.getData(element.paramsCombo.url, element.paramsCombo.urlParams)
|
|
49
|
+
.subscribe((res) => {
|
|
50
|
+
if (res['code'] === 0) {
|
|
51
|
+
this.dataCombo[element.ID] = res['body'];
|
|
52
|
+
//console.log(this.dataCombo);
|
|
53
|
+
this.dataCombo[element.ID].forEach((data) => {
|
|
54
|
+
// console.log(data[element.paramsCombo.visibleField], element.value)
|
|
55
|
+
if (data[element.paramsCombo.visibleField] == element.value) {
|
|
56
|
+
this.modalForm[element.ID] =
|
|
57
|
+
data[element.paramsCombo.selectionField];
|
|
58
|
+
this.data.columns[index].value =
|
|
59
|
+
data[element.paramsCombo.selectionField].toString();
|
|
60
|
+
}
|
|
61
|
+
});
|
|
62
|
+
}
|
|
63
|
+
else {
|
|
64
|
+
console.log('error en la consulta');
|
|
65
|
+
}
|
|
66
|
+
}, (err) => {
|
|
67
|
+
console.log(err);
|
|
68
|
+
});
|
|
69
|
+
}
|
|
70
|
+
});
|
|
71
|
+
//console.log(this.dataCombo);
|
|
72
|
+
}
|
|
73
|
+
onSubmit() {
|
|
74
|
+
this.dialogRef.close(this.modalForm);
|
|
75
|
+
}
|
|
76
|
+
onChange(id, $event, type) {
|
|
77
|
+
switch (type) {
|
|
78
|
+
// case 'date':
|
|
79
|
+
// this.modalForm[id] = $event.target.value;
|
|
80
|
+
// break;
|
|
81
|
+
case 'combo':
|
|
82
|
+
this.modalForm[id] = $event.value;
|
|
83
|
+
break;
|
|
84
|
+
default:
|
|
85
|
+
this.modalForm[id] = $event.target.value;
|
|
86
|
+
break;
|
|
87
|
+
}
|
|
88
|
+
//console.log('onChange', $event, id);
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
TableModalComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: TableModalComponent, deps: [{ token: i1.MatDialogRef }, { token: MAT_DIALOG_DATA }, { token: i2.FormBuilder }, { token: i3.HttpService }], target: i0.ɵɵFactoryTarget.Component });
|
|
92
|
+
TableModalComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.1.1", type: TableModalComponent, selector: "app-table-modal", ngImport: i0, template: "<div>\r\n <div style='display:flex; justify-content: space-between;'>\r\n <div>\r\n <strong>\r\n <h3 *ngIf='data.action==\"edit\"'> Editar </h3>\r\n <h3 *ngIf='data.action==\"add\"'> Agregar </h3>\r\n </strong>\r\n </div>\r\n <div mat-dialog-close>\r\n <i class=\"fa fa-times-circle\" style=\"font-size: 150%; position: relative;\"></i>\r\n </div>\r\n </div>\r\n\r\n <form>\r\n\r\n <div *ngFor='let input of data.columns'>\r\n\r\n\r\n\r\n <div *ngIf='data.action==\"edit\"; else Agregar'>\r\n <mat-form-field *ngIf=\"!input.disregardForEdit\">\r\n <div *ngIf='input.type==\"combo\"; else otherInputEdit'>\r\n\r\n <mat-select [value]='input.value' (selectionChange)='onChange(input.ID,$event, input.type)'\r\n placeholder='{{input.paramsCombo.visibleField}}'>\r\n <mat-option *ngFor='let data of dataCombo[input.ID]'\r\n value='{{data[input.paramsCombo.selectionField]}}'>\r\n {{data[input.paramsCombo.visibleField]}}</mat-option>\r\n </mat-select>\r\n </div>\r\n\r\n <ng-template #otherInputEdit>\r\n <input [type]='input.type' [name]='input.ID' [value]='input.value'\r\n (input)='onChange(input.ID,$event, input.type)' matInput [placeholder]='input.label' />\r\n </ng-template>\r\n\r\n <mat-error>Campo Obligatorio</mat-error>\r\n </mat-form-field>\r\n\r\n </div>\r\n\r\n <ng-template #Agregar>\r\n <mat-form-field *ngIf=\"!input.disregardForAdd\">\r\n <div *ngIf='input.type==\"combo\"; else otherInput'>\r\n\r\n <mat-select (selectionChange)='onChange(input.ID,$event, input.type)' placeholder='{{input.label}}'>\r\n <mat-option *ngFor='let data of dataCombo[input.ID]'\r\n value='{{data[input.paramsCombo.selectionField]}}'>\r\n {{data[input.paramsCombo.visibleField]}}</mat-option>\r\n </mat-select>\r\n\r\n </div>\r\n\r\n <ng-template #otherInput>\r\n <input [type]='input.type' [name]='input.ID' (input)='onChange(input.ID, $event, input.type)'\r\n matInput [placeholder]='input.label' />\r\n\r\n </ng-template>\r\n <mat-error>Campo Obligatorio</mat-error>\r\n </mat-form-field>\r\n </ng-template>\r\n\r\n\r\n\r\n\r\n </div>\r\n\r\n <button *ngIf='data.action==\"add\" || data.action==\"edit\"' (click)='onSubmit()' color='primary' mat-raised-button>Guardar</button>\r\n\r\n </form>\r\n</div>\r\n\r\n", styles: ["button{width:100%}mat-form-field{width:100%}\n"], components: [{ type: i4.MatFormField, selector: "mat-form-field", inputs: ["color", "appearance", "hideRequiredMarker", "hintLabel", "floatLabel"], exportAs: ["matFormField"] }, { type: i5.MatSelect, selector: "mat-select", inputs: ["disabled", "disableRipple", "tabIndex"], exportAs: ["matSelect"] }, { type: i6.MatOption, selector: "mat-option", exportAs: ["matOption"] }, { type: i7.MatButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }], directives: [{ type: i8.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i1.MatDialogClose, selector: "[mat-dialog-close], [matDialogClose]", inputs: ["aria-label", "type", "mat-dialog-close", "matDialogClose"], exportAs: ["matDialogClose"] }, { type: i2.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { type: i2.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { type: i2.NgForm, selector: "form:not([ngNoForm]):not([formGroup]),ng-form,[ngForm]", inputs: ["ngFormOptions"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { type: i8.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i9.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"] }, { type: i4.MatError, selector: "mat-error", inputs: ["id"] }] });
|
|
93
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: TableModalComponent, decorators: [{
|
|
94
|
+
type: Component,
|
|
95
|
+
args: [{ selector: 'app-table-modal', template: "<div>\r\n <div style='display:flex; justify-content: space-between;'>\r\n <div>\r\n <strong>\r\n <h3 *ngIf='data.action==\"edit\"'> Editar </h3>\r\n <h3 *ngIf='data.action==\"add\"'> Agregar </h3>\r\n </strong>\r\n </div>\r\n <div mat-dialog-close>\r\n <i class=\"fa fa-times-circle\" style=\"font-size: 150%; position: relative;\"></i>\r\n </div>\r\n </div>\r\n\r\n <form>\r\n\r\n <div *ngFor='let input of data.columns'>\r\n\r\n\r\n\r\n <div *ngIf='data.action==\"edit\"; else Agregar'>\r\n <mat-form-field *ngIf=\"!input.disregardForEdit\">\r\n <div *ngIf='input.type==\"combo\"; else otherInputEdit'>\r\n\r\n <mat-select [value]='input.value' (selectionChange)='onChange(input.ID,$event, input.type)'\r\n placeholder='{{input.paramsCombo.visibleField}}'>\r\n <mat-option *ngFor='let data of dataCombo[input.ID]'\r\n value='{{data[input.paramsCombo.selectionField]}}'>\r\n {{data[input.paramsCombo.visibleField]}}</mat-option>\r\n </mat-select>\r\n </div>\r\n\r\n <ng-template #otherInputEdit>\r\n <input [type]='input.type' [name]='input.ID' [value]='input.value'\r\n (input)='onChange(input.ID,$event, input.type)' matInput [placeholder]='input.label' />\r\n </ng-template>\r\n\r\n <mat-error>Campo Obligatorio</mat-error>\r\n </mat-form-field>\r\n\r\n </div>\r\n\r\n <ng-template #Agregar>\r\n <mat-form-field *ngIf=\"!input.disregardForAdd\">\r\n <div *ngIf='input.type==\"combo\"; else otherInput'>\r\n\r\n <mat-select (selectionChange)='onChange(input.ID,$event, input.type)' placeholder='{{input.label}}'>\r\n <mat-option *ngFor='let data of dataCombo[input.ID]'\r\n value='{{data[input.paramsCombo.selectionField]}}'>\r\n {{data[input.paramsCombo.visibleField]}}</mat-option>\r\n </mat-select>\r\n\r\n </div>\r\n\r\n <ng-template #otherInput>\r\n <input [type]='input.type' [name]='input.ID' (input)='onChange(input.ID, $event, input.type)'\r\n matInput [placeholder]='input.label' />\r\n\r\n </ng-template>\r\n <mat-error>Campo Obligatorio</mat-error>\r\n </mat-form-field>\r\n </ng-template>\r\n\r\n\r\n\r\n\r\n </div>\r\n\r\n <button *ngIf='data.action==\"add\" || data.action==\"edit\"' (click)='onSubmit()' color='primary' mat-raised-button>Guardar</button>\r\n\r\n </form>\r\n</div>\r\n\r\n", styles: ["button{width:100%}mat-form-field{width:100%}\n"] }]
|
|
96
|
+
}], ctorParameters: function () { return [{ type: i1.MatDialogRef }, { type: undefined, decorators: [{
|
|
97
|
+
type: Inject,
|
|
98
|
+
args: [MAT_DIALOG_DATA]
|
|
99
|
+
}] }, { type: i2.FormBuilder }, { type: i3.HttpService }]; } });
|
|
100
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUtbW9kYWwuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9tb2R1bGVzL2JyYWlubG9wZXItdWkvY29tcG9uZW50cy9kYXRhLXRhYmxlL3RhYmxlLW1vZGFsL3RhYmxlLW1vZGFsLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvbW9kdWxlcy9icmFpbmxvcGVyLXVpL2NvbXBvbmVudHMvZGF0YS10YWJsZS90YWJsZS1tb2RhbC90YWJsZS1tb2RhbC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFVLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMxRCxPQUFPLEVBQWdCLGVBQWUsRUFBRSxNQUFNLDBCQUEwQixDQUFDOzs7Ozs7Ozs7OztBQVN6RSxNQUFNLE9BQU8sbUJBQW1CO0lBSTlCLFlBQ1MsU0FBNEMsRUFDbkIsSUFBSSxFQUM1QixXQUF3QixFQUN4QixJQUFpQjtRQUhsQixjQUFTLEdBQVQsU0FBUyxDQUFtQztRQUNuQixTQUFJLEdBQUosSUFBSSxDQUFBO1FBQzVCLGdCQUFXLEdBQVgsV0FBVyxDQUFhO1FBQ3hCLFNBQUksR0FBSixJQUFJLENBQWE7UUFQM0IsY0FBUyxHQUFHLEVBQUUsQ0FBQztRQUNmLGNBQVMsR0FBRyxFQUFFLENBQUM7SUFPWixDQUFDO0lBRUosU0FBUztRQUNQLElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxFQUFFLENBQUM7SUFDekIsQ0FBQztJQUVELFFBQVE7UUFDTixJQUFJLE9BQU8sR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQztRQUNoQyxpREFBaUQ7UUFFakQsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUMsT0FBTyxFQUFFLEtBQUssRUFBRSxFQUFFO1lBQzNDLElB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QUNYLEtBQUssT0FBTztnQkFDVixJQUFJLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQyxHQUFHLE1BQU0sQ0FBQyxLQUFLLENBQUM7Z0JBQ2xDLE1BQU07WUFFUjtnQkFDRSxJQUFJLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQyxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDO2dCQUN6QyxNQUFNO1NBQ1Q7UUFFRCxzQ0FBc0M7SUFDeEMsQ0FBQzs7Z0hBNUZVLG1CQUFtQiw4Q0FNcEIsZUFBZTtvR0FOZCxtQkFBbUIsdURDVmhDLHcrRkF3RUE7MkZEOURhLG1CQUFtQjtrQkFML0IsU0FBUzsrQkFDRSxpQkFBaUI7OzBCQVV4QixNQUFNOzJCQUFDLGVBQWUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIE9uSW5pdCwgSW5qZWN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IE1hdERpYWxvZ1JlZiwgTUFUX0RJQUxPR19EQVRBIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZGlhbG9nJztcclxuaW1wb3J0IHsgRm9ybUJ1aWxkZXIsIEZvcm1Hcm91cCwgRm9ybUNvbnRyb2wgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbmltcG9ydCB7IEh0dHBTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vLi4vc2VydmljZXMvaHR0cC5zZXJ2aWNlJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnYXBwLXRhYmxlLW1vZGFsJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vdGFibGUtbW9kYWwuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL3RhYmxlLW1vZGFsLmNvbXBvbmVudC5zY3NzJ10sXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBUYWJsZU1vZGFsQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcclxuICBtb2RhbEZvcm0gPSB7fTtcclxuICBkYXRhQ29tYm8gPSB7fTtcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwdWJsaWMgZGlhbG9nUmVmOiBNYXREaWFsb2dSZWY8VGFibGVNb2RhbENvbXBvbmVudD4sXHJcbiAgICBASW5qZWN0KE1BVF9ESUFMT0dfREFUQSkgcHVibGljIGRhdGEsXHJcbiAgICBwcml2YXRlIGZvcm1CdWlsZGVyOiBGb3JtQnVpbGRlcixcclxuICAgIHByaXZhdGUgaHR0cDogSHR0cFNlcnZpY2VcclxuICApIHt9XHJcblxyXG4gIG9uTm9DbGljaygpOiB2b2lkIHtcclxuICAgIHRoaXMuZGlhbG9nUmVmLmNsb3NlKCk7XHJcbiAgfVxyXG5cclxuICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgIGxldCBjb2x1bW5zID0gdGhpcy5kYXRhLmNvbHVtbnM7XHJcbiAgICAvL2NvbnNvbGUubG9nKCdkYXRhIGNvbHVtbnMnLCB0aGlzLmRhdGEuY29sdW1ucyk7XHJcblxyXG4gICAgdGhpcy5kYXRhLmNvbHVtbnMuZm9yRWFjaCgoZWxlbWVudCwgaW5kZXgpID0+IHtcclxuICAgICAgbGV0IHRleHQgPSBge1wiJHtlbGVtZW50LklEfVwiOlwiXCJ9YDtcclxuICAgICAgbGV0IGpzb24gPSBKU09OLnBhcnNlKHRleHQpO1xyXG4gICAgICBPYmplY3QuYXNzaWduKHRoaXMubW9kYWxGb3JtLCBqc29uKTtcclxuXHJcbiAgICAgIGlmIChlbGVtZW50LnR5cGUgPT0gJ2NvbWJvJykge1xyXG4gICAgICAgIE9iamVjdC5hc3NpZ24odGhpcy5kYXRhQ29tYm8sIGpzb24pO1xyXG4gICAgICB9XHJcblxyXG4gICAgICBpZiAodGhpcy5kYXRhLmFjdGlvbiA9PSAnZWRpdCcpIHtcclxuICAgICAgICB0aGlzLm1vZGFsRm9ybVtlbGVtZW50LklEXSA9IGVsZW1lbnQudmFsdWU7XHJcbiAgICAgICAgaWYgKGVsZW1lbnQudHlwZSA9PT0gJ2RhdGUnKSB7XHJcbiAgICAgICAgICBpZihlbGVtZW50LnZhbHVlKXtcclxuICAgICAgICAgICAgbGV0IHMgPSBlbGVtZW50LnZhbHVlLnNwbGl0KCcvJyk7XHJcbiAgICAgICAgICAgIGVsZW1lbnQudmFsdWUgPSBgJHtzWzJdfS0ke3NbMV19LSR7c1swXX1gO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG5cclxuICAgICAgaWYgKGVsZW1lbnQucGFyYW1zQ29tYm8pIHtcclxuICAgICAgICAvL2NvbnNvbGUubG9nKGVsZW1lbnQucGFyYW1zQ29tYm8udXJsKTtcclxuICAgICAgICAvL2NvbnNvbGUubG9nKGVsZW1lbnQucGFyYW1zQ29tYm8udXJsUGFyYW1zKTtcclxuXHJcbiAgICAgICAgdGhpcy5odHRwXHJcbiAgICAgICAgICAuZ2V0RGF0YShlbGVtZW50LnBhcmFtc0NvbWJvLnVybCwgZWxlbWVudC5wYXJhbXNDb21iby51cmxQYXJhbXMpXHJcbiAgICAgICAgICAuc3Vic2NyaWJlKFxyXG4gICAgICAgICAgICAocmVzKSA9PiB7XHJcbiAgICAgICAgICAgICAgaWYgKHJlc1snY29kZSddID09PSAwKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmRhdGFDb21ib1tlbGVtZW50LklEXSA9IHJlc1snYm9keSddO1xyXG4gICAgICAgICAgICAgICAgLy9jb25zb2xlLmxvZyh0aGlzLmRhdGFDb21ibyk7XHJcblxyXG4gICAgICAgICAgICAgICAgdGhpcy5kYXRhQ29tYm9bZWxlbWVudC5JRF0uZm9yRWFjaCgoZGF0YSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAvLyBjb25zb2xlLmxvZyhkYXRhW2VsZW1lbnQucGFyYW1zQ29tYm8udmlzaWJsZUZpZWxkXSwgZWxlbWVudC52YWx1ZSlcclxuICAgICAgICAgICAgICAgICAgaWYgKGRhdGFbZWxlbWVudC5wYXJhbXNDb21iby52aXNpYmxlRmllbGRdID09IGVsZW1lbnQudmFsdWUpIHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLm1vZGFsRm9ybVtlbGVtZW50LklEXSA9XHJcbiAgICAgICAgICAgICAgICAgICAgICBkYXRhW2VsZW1lbnQucGFyYW1zQ29tYm8uc2VsZWN0aW9uRmllbGRdO1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZGF0YS5jb2x1bW5zW2luZGV4XS52YWx1ZSA9XHJcbiAgICAgICAgICAgICAgICAgICAgICBkYXRhW2VsZW1lbnQucGFyYW1zQ29tYm8uc2VsZWN0aW9uRmllbGRdLnRvU3RyaW5nKCk7XHJcbiAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICBjb25zb2xlLmxvZygnZXJyb3IgZW4gbGEgY29uc3VsdGEnKTtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIChlcnIpID0+IHtcclxuICAgICAgICAgICAgICBjb25zb2xlLmxvZyhlcnIpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICApO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuXHJcbiAgICAvL2NvbnNvbGUubG9nKHRoaXMuZGF0YUNvbWJvKTtcclxuICB9XHJcblxyXG4gIG9uU3VibWl0KCkge1xyXG4gICAgdGhpcy5kaWFsb2dSZWYuY2xvc2UodGhpcy5tb2RhbEZvcm0pO1xyXG4gIH1cclxuXHJcbiAgb25DaGFuZ2UoaWQ6IGFueSwgJGV2ZW50LCB0eXBlOiBzdHJpbmcpIHtcclxuICAgIHN3aXRjaCAodHlwZSkge1xyXG4gICAgICAvLyBjYXNlICdkYXRlJzpcclxuICAgICAgLy8gICB0aGlzLm1vZGFsRm9ybVtpZF0gPSAkZXZlbnQudGFyZ2V0LnZhbHVlO1xyXG4gICAgICAvLyAgIGJyZWFrO1xyXG4gICAgICBjYXNlICdjb21ibyc6XHJcbiAgICAgICAgdGhpcy5tb2RhbEZvcm1baWRdID0gJGV2ZW50LnZhbHVlO1xyXG4gICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgZGVmYXVsdDpcclxuICAgICAgICB0aGlzLm1vZGFsRm9ybVtpZF0gPSAkZXZlbnQudGFyZ2V0LnZhbHVlO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgfVxyXG5cclxuICAgIC8vY29uc29sZS5sb2coJ29uQ2hhbmdlJywgJGV2ZW50LCBpZCk7XHJcbiAgfVxyXG59XHJcbiIsIjxkaXY+XHJcbiAgICA8ZGl2IHN0eWxlPSdkaXNwbGF5OmZsZXg7IGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjsnPlxyXG4gICAgICAgIDxkaXY+XHJcbiAgICAgICAgICAgIDxzdHJvbmc+XHJcbiAgICAgICAgICAgICAgICA8aDMgKm5nSWY9J2RhdGEuYWN0aW9uPT1cImVkaXRcIic+IEVkaXRhciA8L2gzPlxyXG4gICAgICAgICAgICAgICAgPGgzICpuZ0lmPSdkYXRhLmFjdGlvbj09XCJhZGRcIic+IEFncmVnYXIgPC9oMz5cclxuICAgICAgICAgICAgPC9zdHJvbmc+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGRpdiBtYXQtZGlhbG9nLWNsb3NlPlxyXG4gICAgICAgICAgICA8aSBjbGFzcz1cImZhIGZhLXRpbWVzLWNpcmNsZVwiIHN0eWxlPVwiZm9udC1zaXplOiAxNTAlOyBwb3NpdGlvbjogcmVsYXRpdmU7XCI+PC9pPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcblxyXG4gICAgPGZvcm0+XHJcblxyXG4gICAgICAgIDxkaXYgKm5nRm9yPSdsZXQgaW5wdXQgb2YgZGF0YS5jb2x1bW5zJz5cclxuXHJcblxyXG5cclxuICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9J2RhdGEuYWN0aW9uPT1cImVkaXRcIjsgZWxzZSBBZ3JlZ2FyJz5cclxuICAgICAgICAgICAgICAgICAgPG1hdC1mb3JtLWZpZWxkICpuZ0lmPVwiIWlucHV0LmRpc3JlZ2FyZEZvckVkaXRcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPSdpbnB1dC50eXBlPT1cImNvbWJvXCI7IGVsc2Ugb3RoZXJJbnB1dEVkaXQnPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1zZWxlY3QgW3ZhbHVlXT0naW5wdXQudmFsdWUnIChzZWxlY3Rpb25DaGFuZ2UpPSdvbkNoYW5nZShpbnB1dC5JRCwkZXZlbnQsIGlucHV0LnR5cGUpJ1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9J3t7aW5wdXQucGFyYW1zQ29tYm8udmlzaWJsZUZpZWxkfX0nPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1vcHRpb24gKm5nRm9yPSdsZXQgZGF0YSBvZiBkYXRhQ29tYm9baW5wdXQuSURdJ1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlPSd7e2RhdGFbaW5wdXQucGFyYW1zQ29tYm8uc2VsZWN0aW9uRmllbGRdfX0nPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7ZGF0YVtpbnB1dC5wYXJhbXNDb21iby52aXNpYmxlRmllbGRdfX08L21hdC1vcHRpb24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbWF0LXNlbGVjdD5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlICNvdGhlcklucHV0RWRpdD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IFt0eXBlXT0naW5wdXQudHlwZScgW25hbWVdPSdpbnB1dC5JRCcgW3ZhbHVlXT0naW5wdXQudmFsdWUnXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW5wdXQpPSdvbkNoYW5nZShpbnB1dC5JRCwkZXZlbnQsIGlucHV0LnR5cGUpJyBtYXRJbnB1dCBbcGxhY2Vob2xkZXJdPSdpbnB1dC5sYWJlbCcgLz5cclxuICAgICAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICA8bWF0LWVycm9yPkNhbXBvIE9ibGlnYXRvcmlvPC9tYXQtZXJyb3I+XHJcbiAgICAgICAgICAgICAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XHJcblxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlICNBZ3JlZ2FyPlxyXG4gICAgICAgICAgICAgICAgICA8bWF0LWZvcm0tZmllbGQgKm5nSWY9XCIhaW5wdXQuZGlzcmVnYXJkRm9yQWRkXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj0naW5wdXQudHlwZT09XCJjb21ib1wiOyBlbHNlIG90aGVySW5wdXQnPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1zZWxlY3QgKHNlbGVjdGlvbkNoYW5nZSk9J29uQ2hhbmdlKGlucHV0LklELCRldmVudCwgaW5wdXQudHlwZSknIHBsYWNlaG9sZGVyPSd7e2lucHV0LmxhYmVsfX0nPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1vcHRpb24gKm5nRm9yPSdsZXQgZGF0YSBvZiBkYXRhQ29tYm9baW5wdXQuSURdJ1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlPSd7e2RhdGFbaW5wdXQucGFyYW1zQ29tYm8uc2VsZWN0aW9uRmllbGRdfX0nPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7ZGF0YVtpbnB1dC5wYXJhbXNDb21iby52aXNpYmxlRmllbGRdfX08L21hdC1vcHRpb24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbWF0LXNlbGVjdD5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjb3RoZXJJbnB1dD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IFt0eXBlXT0naW5wdXQudHlwZScgW25hbWVdPSdpbnB1dC5JRCcgKGlucHV0KT0nb25DaGFuZ2UoaW5wdXQuSUQsICRldmVudCwgaW5wdXQudHlwZSknXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXRJbnB1dCBbcGxhY2Vob2xkZXJdPSdpbnB1dC5sYWJlbCcgLz5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgICAgICAgICAgICAgICA8bWF0LWVycm9yPkNhbXBvIE9ibGlnYXRvcmlvPC9tYXQtZXJyb3I+XHJcbiAgICAgICAgICAgICAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XHJcbiAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG5cclxuXHJcblxyXG5cclxuICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgPGJ1dHRvbiAqbmdJZj0nZGF0YS5hY3Rpb249PVwiYWRkXCIgfHwgZGF0YS5hY3Rpb249PVwiZWRpdFwiJyAoY2xpY2spPSdvblN1Ym1pdCgpJyBjb2xvcj0ncHJpbWFyeScgbWF0LXJhaXNlZC1idXR0b24+R3VhcmRhcjwvYnV0dG9uPlxyXG5cclxuICAgIDwvZm9ybT5cclxuPC9kaXY+XHJcblxyXG4iXX0=
|
|
@@ -0,0 +1,185 @@
|
|
|
1
|
+
import { Component, Input, EventEmitter, Output } from '@angular/core';
|
|
2
|
+
import imagenPdf from '../../../brainloper-ui/components/file-input/imagenes/pdf';
|
|
3
|
+
import imagenDoc from '../../../brainloper-ui/components/file-input/imagenes/doc';
|
|
4
|
+
import imagenFondoTransparente from '../../../brainloper-ui/components/file-input/imagenes/fondoTransparente';
|
|
5
|
+
import Compressor from 'compressorjs';
|
|
6
|
+
import { FormControl, Validators } from '@angular/forms';
|
|
7
|
+
import { MaxSizeValidator } from '@angular-material-components/file-input';
|
|
8
|
+
import * as i0 from "@angular/core";
|
|
9
|
+
import * as i1 from "../../../services/file-forms.service";
|
|
10
|
+
import * as i2 from "../../../services/http.service";
|
|
11
|
+
import * as i3 from "../../../services/message.service";
|
|
12
|
+
import * as i4 from "@angular/forms";
|
|
13
|
+
import * as i5 from "@angular/material/form-field";
|
|
14
|
+
import * as i6 from "@angular/material/icon";
|
|
15
|
+
import * as i7 from "@angular/common";
|
|
16
|
+
import * as i8 from "@angular/material/input";
|
|
17
|
+
export class FileInputComponent {
|
|
18
|
+
constructor(fileForms, http, message, formBuilder) {
|
|
19
|
+
this.fileForms = fileForms;
|
|
20
|
+
this.http = http;
|
|
21
|
+
this.message = message;
|
|
22
|
+
this.formBuilder = formBuilder;
|
|
23
|
+
this.color = 'primary';
|
|
24
|
+
this.disabled = false;
|
|
25
|
+
this.multiple = false;
|
|
26
|
+
this.maxSize = 16;
|
|
27
|
+
this.size = 100000; //tamaño a comprimir las imagenes en bites
|
|
28
|
+
this.fileSave = new EventEmitter();
|
|
29
|
+
this.file = null;
|
|
30
|
+
this.icon = 'folder';
|
|
31
|
+
this.formFile = this.formBuilder.group({
|
|
32
|
+
requiredfile: []
|
|
33
|
+
});
|
|
34
|
+
this.fileControl = new FormControl(this.files, [
|
|
35
|
+
Validators.required,
|
|
36
|
+
MaxSizeValidator(this.maxSize * 1024)
|
|
37
|
+
]);
|
|
38
|
+
}
|
|
39
|
+
ngOnInit() {
|
|
40
|
+
this.form = this.formBuilder.group({
|
|
41
|
+
file: []
|
|
42
|
+
});
|
|
43
|
+
this.sizePicture = {
|
|
44
|
+
width: `${this.params.style.width}`,
|
|
45
|
+
height: `${this.params.style.height}`,
|
|
46
|
+
"border-radius": '5%',
|
|
47
|
+
border: `${this.params.style.border}`,
|
|
48
|
+
};
|
|
49
|
+
if (this.params.edit == true) {
|
|
50
|
+
this.edit = 'img';
|
|
51
|
+
}
|
|
52
|
+
else {
|
|
53
|
+
this.edit = '';
|
|
54
|
+
}
|
|
55
|
+
this.typeFile = this.params.typeFile;
|
|
56
|
+
this.functionTypeFile();
|
|
57
|
+
}
|
|
58
|
+
functionTypeFile() {
|
|
59
|
+
if (this.params.style.shape == "circular") {
|
|
60
|
+
this.sizePicture['border-radius'] = "50%";
|
|
61
|
+
this.sizePicture.width = `${screen.width * (this.params.style.width.replace('%', '') / 100)}px`;
|
|
62
|
+
this.sizePicture.height = this.sizePicture.width;
|
|
63
|
+
}
|
|
64
|
+
this.border = {
|
|
65
|
+
"borderRadius": `${this.sizePicture['border-radius']}`
|
|
66
|
+
};
|
|
67
|
+
this.styleForm = {
|
|
68
|
+
width: `${this.params.style.width}`,
|
|
69
|
+
height: `${this.params.style.height}`
|
|
70
|
+
};
|
|
71
|
+
this.styleImg = {
|
|
72
|
+
width: '100%',
|
|
73
|
+
height: '100%',
|
|
74
|
+
"border-radius": `${this.sizePicture['border-radius']}`,
|
|
75
|
+
};
|
|
76
|
+
switch (this.typeFile) {
|
|
77
|
+
case 'imagen':
|
|
78
|
+
if (!this.params.imageSrc) {
|
|
79
|
+
this.imageSrc = imagenFondoTransparente;
|
|
80
|
+
}
|
|
81
|
+
else {
|
|
82
|
+
this.imageSrc = this.params.imageSrc;
|
|
83
|
+
}
|
|
84
|
+
this.type = 'image/*';
|
|
85
|
+
break;
|
|
86
|
+
case 'pdf':
|
|
87
|
+
this.type = '.pdf';
|
|
88
|
+
this.imageSrc = imagenFondoTransparente;
|
|
89
|
+
break;
|
|
90
|
+
case 'doc':
|
|
91
|
+
this.type = '.doc, .docx';
|
|
92
|
+
this.imageSrc = imagenFondoTransparente;
|
|
93
|
+
break;
|
|
94
|
+
default:
|
|
95
|
+
break;
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
async fileChange($event) {
|
|
99
|
+
if ($event.target['files'][0]['size'] < 15000000) {
|
|
100
|
+
let r;
|
|
101
|
+
if ($event.target['files'] && $event.target['files'][0]) {
|
|
102
|
+
this.file = $event.target['files'][0];
|
|
103
|
+
switch (this.typeFile) {
|
|
104
|
+
case 'pdf':
|
|
105
|
+
r = false;
|
|
106
|
+
this.styleImg = {
|
|
107
|
+
width: '100%',
|
|
108
|
+
height: '100%',
|
|
109
|
+
"border-radius": `${this.sizePicture['border-radius']}`,
|
|
110
|
+
"background-image": `url(${imagenPdf})`,
|
|
111
|
+
"background-position": "center",
|
|
112
|
+
"background-size": "30% 65%",
|
|
113
|
+
"background-repeat": "no-repeat"
|
|
114
|
+
};
|
|
115
|
+
break;
|
|
116
|
+
case 'imagen':
|
|
117
|
+
const reader = new FileReader();
|
|
118
|
+
reader.onload = e => this.imageSrc = reader.result;
|
|
119
|
+
reader.readAsDataURL(this.file);
|
|
120
|
+
r = await this.compressor();
|
|
121
|
+
break;
|
|
122
|
+
case 'doc':
|
|
123
|
+
r = false;
|
|
124
|
+
this.styleImg = {
|
|
125
|
+
width: '100%',
|
|
126
|
+
height: '100%',
|
|
127
|
+
"border-radius": `${this.sizePicture['border-radius']}`,
|
|
128
|
+
"background-image": `url(${imagenDoc})`,
|
|
129
|
+
"background-position": "center",
|
|
130
|
+
"background-size": "30% 65%",
|
|
131
|
+
"background-repeat": "no-repeat"
|
|
132
|
+
};
|
|
133
|
+
break;
|
|
134
|
+
default:
|
|
135
|
+
break;
|
|
136
|
+
}
|
|
137
|
+
}
|
|
138
|
+
if (r == false) {
|
|
139
|
+
this.fileSave.emit({ new: this.file });
|
|
140
|
+
}
|
|
141
|
+
else {
|
|
142
|
+
const reader = new FileReader();
|
|
143
|
+
reader.onload = e => this.imageSrc = reader.result;
|
|
144
|
+
reader.readAsDataURL(r);
|
|
145
|
+
this.fileSave.emit({ new: this.file, compressor: r });
|
|
146
|
+
}
|
|
147
|
+
}
|
|
148
|
+
else {
|
|
149
|
+
this.message.Error('Error', 'Archivo muy pesado, tamaño mínimo 15 MB');
|
|
150
|
+
}
|
|
151
|
+
}
|
|
152
|
+
compressor() {
|
|
153
|
+
if (this.file.size > 500000 && this.file.size < 15000000) {
|
|
154
|
+
let factor = (this.size * 100) / this.file.size;
|
|
155
|
+
let y = ((factor ** 3) * (10 ** -6)) - (0.00059 * (factor ** 2)) + (0.0399 * factor);
|
|
156
|
+
return new Promise((resolve, reject) => {
|
|
157
|
+
new Compressor(this.file, {
|
|
158
|
+
quality: y,
|
|
159
|
+
success(result) {
|
|
160
|
+
resolve(result);
|
|
161
|
+
}
|
|
162
|
+
});
|
|
163
|
+
});
|
|
164
|
+
}
|
|
165
|
+
else {
|
|
166
|
+
return (false);
|
|
167
|
+
}
|
|
168
|
+
}
|
|
169
|
+
selectFile($event) {
|
|
170
|
+
console.log($event);
|
|
171
|
+
}
|
|
172
|
+
}
|
|
173
|
+
FileInputComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: FileInputComponent, deps: [{ token: i1.FileFormsService }, { token: i2.HttpService }, { token: i3.MessageService }, { token: i4.FormBuilder }], target: i0.ɵɵFactoryTarget.Component });
|
|
174
|
+
FileInputComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.1.1", type: FileInputComponent, selector: "file-input", inputs: { params: "params", icon: "icon" }, outputs: { fileSave: "fileSave" }, ngImport: i0, template: "<div *ngIf=\"params.input == 'vista'\" [class]='edit' [ngStyle]=\"sizePicture\">\r\n\r\n\t<img [ngStyle]=\"styleImg\" src=\"{{this.imageSrc}}\">\r\n\r\n\t<div *ngIf=\"params.edit == true\" class=\"entrada\" [ngStyle]=\"border\">\r\n\t\t<input id=\"input\" type=\"file\" title='Subir archivo' [accept]='type'\r\n\t\t\tstyle='width: 100%; height: 100%; opacity: 0; overflow: hidden; z-index: 1; cursor: pointer;'\r\n\t\t\t(change)='fileChange($event)'>\r\n\t</div>\r\n\r\n</div>\r\n<div *ngIf=\"params.input == 'formulario'\">\r\n\r\n \t<!-- <mat-form-field [ngStyle]=\"styleForm\"> -->\r\n <!-- <ngx-mat-file-input [formControlName=\"file\" placeholder=\"Basic Input\">\r\n </ngx-mat-file-input> -->\r\n\r\n <!-- </mat-form-field> -->\r\n\r\n <mat-form-field [ngStyle]=\"styleForm\">\r\n <div style=\"display: flex;\">\r\n <input disabled type=\"text\" matInput [placeholder]=\"params.label\" readonly=\"true\">\r\n <input id=\"input\" type=\"file\" title='Subir archivo' [accept]='type'\r\n style='width: 100%; height: 100%; opacity: 0; overflow: hidden; z-index: 1; cursor: pointer;'\r\n (change)='fileChange($event)'>\r\n </div>\r\n <mat-icon *ngIf=\"typeFile=='imagen'\" matSuffix>add_a_photo</mat-icon>\r\n <mat-icon *ngIf=\"typeFile=='pdf'\" matSuffix>picture_as_pdf</mat-icon>\r\n\t\t <mat-icon *ngIf=\"typeFile=='doc'\" matSuffix>insert_drive_file</mat-icon>\r\n </mat-form-field>\r\n\r\n</div>\r\n", styles: ["p{font-family:Lato}.dropzone{min-height:400px;min-width:400px;display:table;width:100%;background-color:#eee;border:dotted 1px #aaa}.text-wrapper{display:table-cell;vertical-align:middle}.centered{font-family:sans-serif;font-size:1.3em;font-weight:700;text-align:center}.img :hover{background-image:url(data:image/png;base64,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);background-color:#cfd0d5;background-position:center;background-size:25%;background-repeat:no-repeat;transition:background-color 1s;cursor:pointer}.img{position:relative}.entrada{position:absolute;top:0;right:0;width:100%;height:100%}\n"], components: [{ type: i5.MatFormField, selector: "mat-form-field", inputs: ["color", "appearance", "hideRequiredMarker", "hintLabel", "floatLabel"], exportAs: ["matFormField"] }, { type: i6.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }], directives: [{ type: i7.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i7.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { type: i8.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"] }, { type: i5.MatSuffix, selector: "[matSuffix]" }] });
|
|
175
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: FileInputComponent, decorators: [{
|
|
176
|
+
type: Component,
|
|
177
|
+
args: [{ selector: 'file-input', template: "<div *ngIf=\"params.input == 'vista'\" [class]='edit' [ngStyle]=\"sizePicture\">\r\n\r\n\t<img [ngStyle]=\"styleImg\" src=\"{{this.imageSrc}}\">\r\n\r\n\t<div *ngIf=\"params.edit == true\" class=\"entrada\" [ngStyle]=\"border\">\r\n\t\t<input id=\"input\" type=\"file\" title='Subir archivo' [accept]='type'\r\n\t\t\tstyle='width: 100%; height: 100%; opacity: 0; overflow: hidden; z-index: 1; cursor: pointer;'\r\n\t\t\t(change)='fileChange($event)'>\r\n\t</div>\r\n\r\n</div>\r\n<div *ngIf=\"params.input == 'formulario'\">\r\n\r\n \t<!-- <mat-form-field [ngStyle]=\"styleForm\"> -->\r\n <!-- <ngx-mat-file-input [formControlName=\"file\" placeholder=\"Basic Input\">\r\n </ngx-mat-file-input> -->\r\n\r\n <!-- </mat-form-field> -->\r\n\r\n <mat-form-field [ngStyle]=\"styleForm\">\r\n <div style=\"display: flex;\">\r\n <input disabled type=\"text\" matInput [placeholder]=\"params.label\" readonly=\"true\">\r\n <input id=\"input\" type=\"file\" title='Subir archivo' [accept]='type'\r\n style='width: 100%; height: 100%; opacity: 0; overflow: hidden; z-index: 1; cursor: pointer;'\r\n (change)='fileChange($event)'>\r\n </div>\r\n <mat-icon *ngIf=\"typeFile=='imagen'\" matSuffix>add_a_photo</mat-icon>\r\n <mat-icon *ngIf=\"typeFile=='pdf'\" matSuffix>picture_as_pdf</mat-icon>\r\n\t\t <mat-icon *ngIf=\"typeFile=='doc'\" matSuffix>insert_drive_file</mat-icon>\r\n </mat-form-field>\r\n\r\n</div>\r\n", styles: ["p{font-family:Lato}.dropzone{min-height:400px;min-width:400px;display:table;width:100%;background-color:#eee;border:dotted 1px #aaa}.text-wrapper{display:table-cell;vertical-align:middle}.centered{font-family:sans-serif;font-size:1.3em;font-weight:700;text-align:center}.img :hover{background-image:url(data:image/png;base64,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);background-color:#cfd0d5;background-position:center;background-size:25%;background-repeat:no-repeat;transition:background-color 1s;cursor:pointer}.img{position:relative}.entrada{position:absolute;top:0;right:0;width:100%;height:100%}\n"] }]
|
|
178
|
+
}], ctorParameters: function () { return [{ type: i1.FileFormsService }, { type: i2.HttpService }, { type: i3.MessageService }, { type: i4.FormBuilder }]; }, propDecorators: { params: [{
|
|
179
|
+
type: Input
|
|
180
|
+
}], fileSave: [{
|
|
181
|
+
type: Output
|
|
182
|
+
}], icon: [{
|
|
183
|
+
type: Input
|
|
184
|
+
}] } });
|
|
185
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsZS1pbnB1dC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBwL21vZHVsZXMvYnJhaW5sb3Blci11aS9jb21wb25lbnRzL2ZpbGUtaW5wdXQvZmlsZS1pbnB1dC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBwL21vZHVsZXMvYnJhaW5sb3Blci11aS9jb21wb25lbnRzL2ZpbGUtaW5wdXQvZmlsZS1pbnB1dC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFVLEtBQUssRUFBRSxZQUFZLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRy9FLE9BQU8sU0FBUyxNQUFNLDJEQUEyRCxDQUFBO0FBQ2pGLE9BQU8sU0FBUyxNQUFNLDJEQUEyRCxDQUFBO0FBQ2pGLE9BQU8sdUJBQXVCLE1BQU0seUVBQXlFLENBQUE7QUFDN0csT0FBTyxVQUFVLE1BQU0sY0FBYyxDQUFDO0FBRXRDLE9BQU8sRUFBZSxXQUFXLEVBQWEsVUFBVSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDakYsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0seUNBQXlDLENBQUM7Ozs7Ozs7Ozs7QUFPM0UsTUFBTSxPQUFPLGtCQUFrQjtJQThCN0IsWUFDVSxTQUEyQixFQUMzQixJQUFrQixFQUNsQixPQUF3QixFQUN4QixXQUF3QjtRQUh4QixjQUFTLEdBQVQsU0FBUyxDQUFrQjtRQUMzQixTQUFJLEdBQUosSUFBSSxDQUFjO1FBQ2xCLFlBQU8sR0FBUCxPQUFPLENBQWlCO1FBQ3hCLGdCQUFXLEdBQVgsV0FBVyxDQUFhO1FBckJsQyxVQUFLLEdBQUcsU0FBUyxDQUFDO1FBQ2xCLGFBQVEsR0FBWSxLQUFLLENBQUM7UUFDMUIsYUFBUSxHQUFZLEtBQUssQ0FBQztRQUkxQixZQUFPLEdBQUUsRUFBRSxDQUFD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Q0FBQTtTQUNmO0lBR0gsQ0FBQztJQUVELFVBQVUsQ0FBQyxNQUFNO1FBQ2YsT0FBTyxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQTtJQUNyQixDQUFDOzsrR0E3TVUsa0JBQWtCO21HQUFsQixrQkFBa0IsaUlDaEIvQixrOENBZ0NBOzJGRGhCYSxrQkFBa0I7a0JBTDlCLFNBQVM7K0JBQ0UsWUFBWTt3TEEyQmQsTUFBTTtzQkFBYixLQUFLO2dCQUNLLFFBQVE7c0JBQWpCLE1BQU07Z0JBS0EsSUFBSTtzQkFBWCxLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBPbkluaXQsIElucHV0LCBFdmVudEVtaXR0ZXIsIE91dHB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBGaWxlRm9ybXNTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvZmlsZS1mb3Jtcy5zZXJ2aWNlJztcclxuaW1wb3J0IHsgSHR0cFNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9odHRwLnNlcnZpY2UnO1xyXG5pbXBvcnQgaW1hZ2VuUGRmIGZyb20gJy4uLy4uLy4uL2JyYWlubG9wZXItdWkvY29tcG9uZW50cy9maWxlLWlucHV0L2ltYWdlbmVzL3BkZidcclxuaW1wb3J0IGltYWdlbkRvYyBmcm9tICcuLi8uLi8uLi9icmFpbmxvcGVyLXVpL2NvbXBvbmVudHMvZmlsZS1pbnB1dC9pbWFnZW5lcy9kb2MnXHJcbmltcG9ydCBpbWFnZW5Gb25kb1RyYW5zcGFyZW50ZSBmcm9tICcuLi8uLi8uLi9icmFpbmxvcGVyLXVpL2NvbXBvbmVudHMvZmlsZS1pbnB1dC9pbWFnZW5lcy9mb25kb1RyYW5zcGFyZW50ZSdcclxuaW1wb3J0IENvbXByZXNzb3IgZnJvbSAnY29tcHJlc3NvcmpzJztcclxuaW1wb3J0IHsgTWVzc2FnZVNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9tZXNzYWdlLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBGb3JtQnVpbGRlciwgRm9ybUNvbnRyb2wsIEZvcm1Hcm91cCwgVmFsaWRhdG9ycyB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHsgTWF4U2l6ZVZhbGlkYXRvciB9IGZyb20gJ0Bhbmd1bGFyLW1hdGVyaWFsLWNvbXBvbmVudHMvZmlsZS1pbnB1dCc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2ZpbGUtaW5wdXQnLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9maWxlLWlucHV0LmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9maWxlLWlucHV0LmNvbXBvbmVudC5zY3NzJ11cclxufSlcclxuZXhwb3J0IGNsYXNzIEZpbGVJbnB1dENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XHJcblxyXG4gIHN0eWxlSW1nXHJcbiAgdHlwZVxyXG4gIGJvcmRlclxyXG4gIGltYWdlU3JjXHJcbiAgc3R5bGVGb3JtXHJcbiAgc2l6ZVBpY3R1cmVcclxuICBlZGl0XHJcblxyXG5cclxuICBmb3JtRmlsZSA6IEZvcm1Hcm91cFxyXG5cclxuICBjb2xvciA9ICdwcmltYXJ5JztcclxuICBkaXNhYmxlZDogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIG11bHRpcGxlOiBib29sZWFuID0gZmFsc2U7XHJcbiAgYWNjZXB0OiBzdHJpbmc7XHJcblxyXG4gIGZpbGVDb250cm9sOiBGb3JtQ29udHJvbDtcclxuICBtYXhTaXplPSAxNjtcclxuXHJcbiAgc2l6ZSA9IDEwMDAwMCAvL3RhbWHDsW8gYSBjb21wcmltaXIgbGFzIGltYWdlbmVzIGVuIGJpdGVzXHJcblxyXG4gIEBJbnB1dCgpcGFyYW1zXHJcbiAgIEBPdXRwdXQoKSBmaWxlU2F2ZSA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpXHJcblxyXG4gIHR5cGVGaWxlXHJcbiAgcHVibGljIGZpbGVzO1xyXG4gIGZpbGU9bnVsbFxyXG4gIEBJbnB1dCgpaWNvbiA9ICdmb2xkZXInXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIGZpbGVGb3JtczogRmlsZUZvcm1zU2VydmljZSxcclxuICAgIHByaXZhdGUgaHR0cCA6IEh0dHBTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBtZXNzYWdlIDogTWVzc2FnZVNlcnZpY2UsXHJcbiAgICBwcml2YXRlIGZvcm1CdWlsZGVyOiBGb3JtQnVpbGRlclxyXG4gICkge1xyXG4gICAgdGhpcy5mb3JtRmlsZSA9IHRoaXMuZm9ybUJ1aWxkZXIuZ3JvdXAoe1xyXG4gICAgICByZXF1aXJlZGZpbGU6IFtdXHJcbiAgICB9KVxyXG5cclxuICAgIHRoaXMuZmlsZUNvbnRyb2wgPSBuZXcgRm9ybUNvbnRyb2wodGhpcy5maWxlcywgW1xyXG4gICAgICBWYWxpZGF0b3JzLnJlcXVpcmVkLFxyXG4gICAgICBNYXhTaXplVmFsaWRhdG9yKHRoaXMubWF4U2l6ZSAqIDEwMjQpXHJcbiAgICBdKVxyXG4gIH1cclxuXHJcbiAgZm9ybTogRm9ybUdyb3VwO1xyXG4gIG5nT25Jbml0KCk6IHZvaWQge1xyXG5cclxuICAgIHRoaXMuZm9ybSA9IHRoaXMuZm9ybUJ1aWxkZXIuZ3JvdXAoe1xyXG4gICAgICBmaWxlOiBbXVxyXG4gICAgfSlcclxuXHJcbiAgICB0aGlzLnNpemVQaWN0dXJlPXtcclxuICAgICAgd2lkdGg6YCR7dGhpcy5wYXJhbXMuc3R5bGUud2lkdGh9YCxcclxuICAgICAgaGVpZ2h0OmAke3RoaXMucGFyYW1zLnN0eWxlLmhlaWdodH1gLFxyXG4gICAgICBcImJvcmRlci1yYWRpdXNcIjonNSUnLFxyXG4gICAgICBib3JkZXI6YCR7dGhpcy5wYXJhbXMuc3R5bGUuYm9yZGVyfWAsXHJcbiAgICB9XHJcblxyXG4gICAgaWYodGhpcy5wYXJhbXMuZWRpdCA9PSB0cnVlKXtcclxuICAgICAgdGhpcy5lZGl0ID0gJ2ltZydcclxuICAgIH1lbHNle1xyXG4gICAgICB0aGlzLmVkaXQgPSAnJ1xyXG4gICAgfVxyXG4gICAgdGhpcy50eXBlRmlsZT0gdGhpcy5wYXJhbXMudHlwZUZpbGVcclxuICAgIHRoaXMuZnVuY3Rpb25UeXBlRmlsZSgpXHJcbiAgfVxyXG5cclxuICBmdW5jdGlvblR5cGVGaWxlKCl7XHJcblxyXG4gICAgaWYodGhpcy5wYXJhbXMuc3R5bGUuc2hhcGUgPT0gXCJjaXJjdWxhclwiKXtcclxuXHJcbiAgICAgIHRoaXMuc2l6ZVBpY3R1cmVbJ2JvcmRlci1yYWRpdXMnXT1cIjUwJVwiXHJcbiAgICAgIHRoaXMuc2l6ZVBpY3R1cmUud2lkdGg9YCR7c2NyZWVuLndpZHRoKih0aGlzLnBhcmFtcy5zdHlsZS53aWR0aC5yZXBsYWNlKCclJywgJycpLzEwMCl9cHhgXHJcbiAgICAgIHRoaXMuc2l6ZVBpY3R1cmUuaGVpZ2h0ID0gdGhpcy5zaXplUGljdHVyZS53aWR0aFxyXG5cclxuICAgIH1cclxuXHJcbiAgICB0aGlzLmJvcmRlciA9e1xyXG4gICAgICBcImJvcmRlclJhZGl1c1wiOmAke3RoaXMuc2l6ZVBpY3R1cmVbJ2JvcmRlci1yYWRpdXMnXX1gXHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5zdHlsZUZvcm09e1xyXG4gICAgICB3aWR0aDpgJHt0aGlzLnBhcmFtcy5zdHlsZS53aWR0aH1gLFxyXG4gICAgICBoZWlnaHQ6YCR7dGhpcy5wYXJhbXMuc3R5bGUuaGVpZ2h0fWBcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLnN0eWxlSW1nID0ge1xyXG4gICAgICB3aWR0aDonMTAwJScsXHJcbiAgICAgIGhlaWdodDogJzEwMCUnLFxyXG4gICAgICBcImJvcmRlci1yYWRpdXNcIjpgJHt0aGlzLnNpemVQaWN0dXJlWydib3JkZXItcmFkaXVzJ119YCxcclxuICAgIH1cclxuXHJcbiAgICBzd2l0Y2ggKHRoaXMudHlwZUZpbGUpIHtcclxuICAgICAgY2FzZSAnaW1hZ2VuJzpcclxuICAgICAgICBpZighdGhpcy5wYXJhbXMuaW1hZ2VTcmMpe1xyXG4gICAgICAgICAgdGhpcy5pbWFnZVNyYz1pbWFnZW5Gb25kb1RyYW5zcGFyZW50ZVxyXG4gICAgICAgIH1lbHNle1xyXG4gICAgICAgICAgdGhpcy5pbWFnZVNyYz10aGlzLnBhcmFtcy5pbWFnZVNyY1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLnR5cGU9J2ltYWdlLyonXHJcblxyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlICdwZGYnOlxyXG4gICAgICAgIHRoaXMudHlwZT0nLnBkZidcclxuICAgICAgICB0aGlzLmltYWdlU3JjPWltYWdlbkZvbmRvVHJhbnNwYXJlbnRlXHJcblxyXG4gICAgICBicmVhaztcclxuICAgICAgY2FzZSAnZG9jJzpcclxuICAgICAgICB0aGlzLnR5cGU9Jy5kb2MsIC5kb2N4J1xyXG4gICAgICAgIHRoaXMuaW1hZ2VTcmM9aW1hZ2VuRm9uZG9UcmFuc3BhcmVudGVcclxuXHJcbiAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgZGVmYXVsdDpcclxuICAgICAgICBicmVhaztcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGFzeW5jIGZpbGVDaGFuZ2UoJGV2ZW50OiBFdmVudCl7XHJcblxyXG4gICAgaWYoJGV2ZW50LnRhcmdldFsnZmlsZXMnXVswXVsnc2l6ZSddIDwgMTUwMDAwMDApe1xyXG4gICAgICBsZXQgclxyXG4gICAgICBpZigkZXZlbnQudGFyZ2V0WydmaWxlcyddICYmICRldmVudC50YXJnZXRbJ2ZpbGVzJ11bMF0pe1xyXG4gICAgICAgIHRoaXMuZmlsZSA9ICRldmVudC50YXJnZXRbJ2ZpbGVzJ11bMF07XHJcbiAgICAgICAgc3dpdGNoICh0aGlzLnR5cGVGaWxlKSB7XHJcbiAgICAgICAgICBjYXNlICdwZGYnOlxyXG4gICAgICAgICAgICByPWZhbHNlXHJcbiAgICAgICAgICB0aGlzLnN0eWxlSW1nPXtcclxuICAgICAgICAgICAgICB3aWR0aDonMTAwJScsXHJcbiAgICAgICAgICAgICAgaGVpZ2h0OiAnMTAwJScsXHJcbiAgICAgICAgICAgICAgXCJib3JkZXItcmFkaXVzXCI6YCR7dGhpcy5zaXplUGljdHVyZVsnYm9yZGVyLXJhZGl1cyddfWAsXHJcbiAgICAgICAgICAgICAgXCJiYWNrZ3JvdW5kLWltYWdlXCI6IGB1cmwoJHtpbWFnZW5QZGZ9KWAsXHJcbiAgICAgICAgICAgICAgXCJiYWNrZ3JvdW5kLXBvc2l0aW9uXCI6IFwiY2VudGVyXCIsXHJcbiAgICAgICAgICAgICAgXCJiYWNrZ3JvdW5kLXNpemVcIjogXCIzMCUgNjUlXCIsXHJcbiAgICAgICAgICAgICAgXCJiYWNrZ3JvdW5kLXJlcGVhdFwiOiBcIm5vLXJlcGVhdFwiXHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgICAgIGNhc2UgJ2ltYWdlbic6XHJcbiAgICAgICAgICAgIGNvbnN0IHJlYWRlciA9IG5ldyBGaWxlUmVhZGVyKCk7XHJcbiAgICAgICAgICAgIHJlYWRlci5vbmxvYWQgPSBlID0+IHRoaXMuaW1hZ2VTcmMgPSByZWFkZXIucmVzdWx0O1xyXG4gICAgICAgICAgICByZWFkZXIucmVhZEFzRGF0YVVSTCh0aGlzLmZpbGUpO1xyXG4gICAgICAgICAgICByID0gYXdhaXQgdGhpcy5jb21wcmVzc29yKClcclxuICAgICAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICAgICAgY2FzZSAnZG9jJzpcclxuICAgICAgICAgICAgcj1mYWxzZVxyXG4gICAgICAgICAgICB0aGlzLnN0eWxlSW1nPXtcclxuICAgICAgICAgICAgICB3aWR0aDonMTAwJScsXHJcbiAgICAgICAgICAgICAgaGVpZ2h0OiAnMTAwJScsXHJcbiAgICAgICAgICAgICAgXCJib3JkZXItcmFkaXVzXCI6YCR7dGhpcy5zaXplUGljdHVyZVsnYm9yZGVyLXJhZGl1cyddfWAsXHJcbiAgICAgICAgICAgICAgXCJiYWNrZ3JvdW5kLWltYWdlXCI6IGB1cmwoJHtpbWFnZW5Eb2N9KWAsXHJcbiAgICAgICAgICAgICAgXCJiYWNrZ3JvdW5kLXBvc2l0aW9uXCI6IFwiY2VudGVyXCIsXHJcbiAgICAgICAgICAgICAgXCJiYWNrZ3JvdW5kLXNpemVcIjogXCIzMCUgNjUlXCIsXHJcbiAgICAgICAgICAgICAgXCJiYWNrZ3JvdW5kLXJlcGVhdFwiOiBcIm5vLXJlcGVhdFwiXHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgICAgIGRlZmF1bHQ6XHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGlmKHIgPT0gZmFsc2Upe1xyXG4gICAgICAgIHRoaXMuZmlsZVNhdmUuZW1pdCh7bmV3OnRoaXMuZmlsZX0pXHJcbiAgICAgIH1lbHNle1xyXG4gICAgICBjb25zdCByZWFkZXIgPSBuZXcgRmlsZVJlYWRlcigpO1xyXG4gICAgICByZWFkZXIub25sb2FkID0gZSA9PiB0aGlzLmltYWdlU3JjID0gcmVhZGVyLnJlc3VsdDtcclxuICAgICAgcmVhZGVyLnJlYWRBc0RhdGFVUkwocik7XHJcbiAgICAgIHRoaXMuZmlsZVNhdmUuZW1pdCh7bmV3OnRoaXMuZmlsZSwgY29tcHJlc3NvcjpyfSlcclxuICAgICAgfVxyXG5cclxuICAgIH1lbHNle1xyXG4gICAgICB0aGlzLm1lc3NhZ2UuRXJyb3IoJ0Vycm9yJywgJ0FyY2hpdm8gbXV5IHBlc2FkbywgdGFtYcOxbyBtw61uaW1vIDE1IE1CJylcclxuICAgIH1cclxuXHJcbiAgfVxyXG5cclxuICBjb21wcmVzc29yKCl7XHJcbiAgICBpZih0aGlzLmZpbGUuc2l6ZSA+IDUwMDAwMCAmJiB0aGlzLmZpbGUuc2l6ZSA8IDE1MDAwMDAwKXtcclxuICAgICAgbGV0IGZhY3RvciA9ICh0aGlzLnNpemUqMTAwKS90aGlzLmZpbGUuc2l6ZVxyXG4gICAgICBsZXQgeSA9ICgoZmFjdG9yKiozKSooMTAqKi02KSktKDAuMDAwNTkqKGZhY3RvcioqMikpKygwLjAzOTkqZmFjdG9yKVxyXG4gICAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUscmVqZWN0KT0+e1xyXG4gICAgICAgIG5ldyBDb21wcmVzc29yICh0aGlzLmZpbGUsIHtcclxuICAgICAgICAgICAgcXVhbGl0eTogeSxcclxuICAgICAgICAgICAgc3VjY2VzcyhyZXN1bHQpe1xyXG4gICAgICAgICAgICAgIHJlc29sdmUocmVzdWx0KVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgfSlcclxuXHJcbiAgICAgIH0pXHJcblxyXG4gICAgfWVsc2V7XHJcbiAgICAgIHJldHVybiAoZmFsc2UpXHJcbiAgICB9XHJcblxyXG5cclxuICB9XHJcblxyXG4gIHNlbGVjdEZpbGUoJGV2ZW50KXtcclxuICAgIGNvbnNvbGUubG9nKCRldmVudClcclxuICB9XHJcblxyXG5cclxuXHJcblxyXG5cclxufVxyXG4iLCI8ZGl2ICAqbmdJZj1cInBhcmFtcy5pbnB1dCA9PSAndmlzdGEnXCIgW2NsYXNzXT0nZWRpdCcgW25nU3R5bGVdPVwic2l6ZVBpY3R1cmVcIj5cclxuXHJcblx0PGltZyBbbmdTdHlsZV09XCJzdHlsZUltZ1wiIHNyYz1cInt7dGhpcy5pbWFnZVNyY319XCI+XHJcblxyXG5cdDxkaXYgICpuZ0lmPVwicGFyYW1zLmVkaXQgPT0gdHJ1ZVwiIGNsYXNzPVwiZW50cmFkYVwiIFtuZ1N0eWxlXT1cImJvcmRlclwiPlxyXG5cdFx0PGlucHV0IGlkPVwiaW5wdXRcIiB0eXBlPVwiZmlsZVwiIHRpdGxlPSdTdWJpciBhcmNoaXZvJyBbYWNjZXB0XT0ndHlwZSdcclxuXHRcdFx0c3R5bGU9J3dpZHRoOiAxMDAlOyBoZWlnaHQ6IDEwMCU7IG9wYWNpdHk6IDA7IG92ZXJmbG93OiBoaWRkZW47IHotaW5kZXg6IDE7IGN1cnNvcjogcG9pbnRlcjsnXHJcblx0XHRcdChjaGFuZ2UpPSdmaWxlQ2hhbmdlKCRldmVudCknPlxyXG5cdDwvZGl2PlxyXG5cclxuPC9kaXY+XHJcbjxkaXYgKm5nSWY9XCJwYXJhbXMuaW5wdXQgPT0gJ2Zvcm11bGFyaW8nXCI+XHJcblxyXG4gIFx0PCEtLSA8bWF0LWZvcm0tZmllbGQgIFtuZ1N0eWxlXT1cInN0eWxlRm9ybVwiPiAtLT5cclxuICAgIDwhLS0gPG5neC1tYXQtZmlsZS1pbnB1dCBbZm9ybUNvbnRyb2xOYW1lPVwiZmlsZVwiIHBsYWNlaG9sZGVyPVwiQmFzaWMgSW5wdXRcIj5cclxuICAgIDwvbmd4LW1hdC1maWxlLWlucHV0PiAtLT5cclxuXHJcbiAgICA8IS0tIDwvbWF0LWZvcm0tZmllbGQ+IC0tPlxyXG5cclxuICAgIDxtYXQtZm9ybS1maWVsZCBbbmdTdHlsZV09XCJzdHlsZUZvcm1cIj5cclxuICAgICAgPGRpdiBzdHlsZT1cImRpc3BsYXk6IGZsZXg7XCI+XHJcbiAgICAgICAgPGlucHV0IGRpc2FibGVkICB0eXBlPVwidGV4dFwiIG1hdElucHV0IFtwbGFjZWhvbGRlcl09XCJwYXJhbXMubGFiZWxcIiByZWFkb25seT1cInRydWVcIj5cclxuICAgICAgICA8aW5wdXQgaWQ9XCJpbnB1dFwiIHR5cGU9XCJmaWxlXCIgdGl0bGU9J1N1YmlyIGFyY2hpdm8nIFthY2NlcHRdPSd0eXBlJ1xyXG4gICAgICAgIHN0eWxlPSd3aWR0aDogMTAwJTsgaGVpZ2h0OiAxMDAlOyBvcGFjaXR5OiAwOyBvdmVyZmxvdzogaGlkZGVuOyB6LWluZGV4OiAxOyBjdXJzb3I6IHBvaW50ZXI7J1xyXG4gICAgICAgIChjaGFuZ2UpPSdmaWxlQ2hhbmdlKCRldmVudCknPlxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgPG1hdC1pY29uICpuZ0lmPVwidHlwZUZpbGU9PSdpbWFnZW4nXCIgbWF0U3VmZml4PmFkZF9hX3Bob3RvPC9tYXQtaWNvbj5cclxuICAgICAgPG1hdC1pY29uICpuZ0lmPVwidHlwZUZpbGU9PSdwZGYnXCIgbWF0U3VmZml4PnBpY3R1cmVfYXNfcGRmPC9tYXQtaWNvbj5cclxuXHRcdCAgPG1hdC1pY29uICpuZ0lmPVwidHlwZUZpbGU9PSdkb2MnXCIgbWF0U3VmZml4Pmluc2VydF9kcml2ZV9maWxlPC9tYXQtaWNvbj5cclxuICA8L21hdC1mb3JtLWZpZWxkPlxyXG5cclxuPC9kaXY+XHJcbiJdfQ==
|