keevo-components 1.8.119 → 1.8.121

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 (139) hide show
  1. package/README.md +24 -24
  2. package/esm2022/lib/api/base-components/base-component-dropdown-external.mjs +1 -1
  3. package/esm2022/lib/api/base-components/base-component-dropdown.mjs +1 -1
  4. package/esm2022/lib/api/base-components/base-component-input.mjs +1 -1
  5. package/esm2022/lib/api/base-components/base-component-multi-select.mjs +1 -1
  6. package/esm2022/lib/api/components/chart/orchart.config.mjs +1 -1
  7. package/esm2022/lib/api/components/chart/orchart.item.mjs +1 -1
  8. package/esm2022/lib/api/components/dropdown/filtro.combo.mjs +1 -1
  9. package/esm2022/lib/api/components/table/tabledit.config.mjs +1 -1
  10. package/esm2022/lib/api/components/table/tableedit.config.column.mjs +1 -1
  11. package/esm2022/lib/api/directives/template/template.directive.mjs +1 -1
  12. package/esm2022/lib/api/helpers/component-providers.mjs +1 -1
  13. package/esm2022/lib/api/helpers/keevo-validators.mjs +1 -1
  14. package/esm2022/lib/api/helpers/translate-primeng.mjs +1 -1
  15. package/esm2022/lib/api/modules/primeng.module.mjs +1 -1
  16. package/esm2022/lib/api/pipes/cpfcnpj.pipe.mjs +1 -1
  17. package/esm2022/lib/api/pipes/mask.pipe.mjs +1 -1
  18. package/esm2022/lib/api/pipes/pipes.module.mjs +1 -1
  19. package/esm2022/lib/api/pipes/telefone.pipe.mjs +1 -1
  20. package/esm2022/lib/api/services/base.api.service.mjs +1 -1
  21. package/esm2022/lib/api/services/breadcrumbs.service.mjs +1 -1
  22. package/esm2022/lib/api/services/docs.service.mjs +1 -1
  23. package/esm2022/lib/api/services/imagens.service.mjs +1 -1
  24. package/esm2022/lib/components/keevo-components.module.mjs +1 -1
  25. package/esm2022/lib/components/kv-avatar/kv-avatar.component.mjs +3 -3
  26. package/esm2022/lib/components/kv-avatar/kv-avatar.module.mjs +1 -1
  27. package/esm2022/lib/components/kv-buttons/kv-button-personalize/kv-button-personalize.component.mjs +3 -3
  28. package/esm2022/lib/components/kv-buttons/kv-button-popup/kv-button-popup.component.mjs +3 -3
  29. package/esm2022/lib/components/kv-buttons/kv-button-secondary/kv-button-secondary.component.mjs +3 -3
  30. package/esm2022/lib/components/kv-buttons/kv-button-success/kv-button-success.component.mjs +3 -3
  31. package/esm2022/lib/components/kv-buttons/kv-button.module.mjs +1 -1
  32. package/esm2022/lib/components/kv-carousel/kv-carousel.component.mjs +3 -3
  33. package/esm2022/lib/components/kv-carousel/kv-carousel.module.mjs +1 -1
  34. package/esm2022/lib/components/kv-chart/kv-chart.module.mjs +1 -1
  35. package/esm2022/lib/components/kv-error/kv-error.module.mjs +1 -1
  36. package/esm2022/lib/components/kv-image-upload/kv-image-upload.component.mjs +3 -3
  37. package/esm2022/lib/components/kv-image-upload/kv-image-upload.module.mjs +1 -1
  38. package/esm2022/lib/components/kv-inputs/kv-check/kv-check.component.mjs +3 -3
  39. package/esm2022/lib/components/kv-inputs/kv-dropdown/kv-dropdown.component.mjs +3 -3
  40. package/esm2022/lib/components/kv-inputs/kv-editor/kv-editor.component.mjs +3 -3
  41. package/esm2022/lib/components/kv-inputs/kv-input-calendar/kv-input-calendar.component.mjs +3 -3
  42. package/esm2022/lib/components/kv-inputs/kv-input-mask/kv-input-mask.component.mjs +3 -3
  43. package/esm2022/lib/components/kv-inputs/kv-input-number/kv-input-number.component.mjs +3 -3
  44. package/esm2022/lib/components/kv-inputs/kv-input-password/kv-input-password.component.mjs +3 -3
  45. package/esm2022/lib/components/kv-inputs/kv-input-text/kv-input-text.component.mjs +3 -3
  46. package/esm2022/lib/components/kv-inputs/kv-input-text-checkbox/kv-input-text-checkbox.component.mjs +3 -3
  47. package/esm2022/lib/components/kv-inputs/kv-input-textarea/kv-input-textarea.component.mjs +3 -3
  48. package/esm2022/lib/components/kv-inputs/kv-input-time/kv-input-time.component.mjs +3 -3
  49. package/esm2022/lib/components/kv-inputs/kv-inputs.module.mjs +1 -1
  50. package/esm2022/lib/components/kv-inputs/kv-multi-select/kv-multi-select.component.mjs +3 -3
  51. package/esm2022/lib/components/kv-inputs/kv-radio-group/kv-radio-group.component.mjs +3 -3
  52. package/esm2022/lib/components/kv-inputs/kv-select-button/kv-select-button.component.mjs +3 -3
  53. package/esm2022/lib/components/kv-inputs/kv-switch/kv-switch.component.mjs +3 -3
  54. package/esm2022/lib/components/kv-label/kv-label.component.mjs +3 -3
  55. package/esm2022/lib/components/kv-label/kv-label.module.mjs +1 -1
  56. package/esm2022/lib/components/kv-loader/kv-loader.component.mjs +3 -3
  57. package/esm2022/lib/components/kv-loader/kv-loader.module.mjs +1 -1
  58. package/esm2022/lib/components/kv-login/kv-login.component.mjs +3 -3
  59. package/esm2022/lib/components/kv-login/kv-login.module.mjs +1 -1
  60. package/esm2022/lib/components/kv-menu/kv-menu.component.mjs +3 -3
  61. package/esm2022/lib/components/kv-menu/kv-menu.module.mjs +1 -1
  62. package/esm2022/lib/components/kv-modal/kv-modal.component.mjs +3 -3
  63. package/esm2022/lib/components/kv-modal/kv-modal.module.mjs +1 -1
  64. package/esm2022/lib/components/kv-orgchart/kv-orgchart.component.mjs +3 -3
  65. package/esm2022/lib/components/kv-orgchart/kv-orgchart.module.mjs +1 -1
  66. package/esm2022/lib/components/kv-page-form/kv-page-form.component.mjs +3 -3
  67. package/esm2022/lib/components/kv-page-form/kv-page-form.module.mjs +1 -1
  68. package/esm2022/lib/components/kv-pick-list/kv-pick-list.component.mjs +3 -3
  69. package/esm2022/lib/components/kv-pick-list/kv-pick-list.module.mjs +1 -1
  70. package/esm2022/lib/components/kv-progress-bar/kv-progress-bar.component.mjs +3 -3
  71. package/esm2022/lib/components/kv-progress-bar/kv-progress-bar.module.mjs +1 -1
  72. package/esm2022/lib/components/kv-report/kv-report.component.mjs +55 -0
  73. package/esm2022/lib/components/kv-report/kv-report.module.mjs +24 -0
  74. package/esm2022/lib/components/kv-stepper/kv-stepper.component.mjs +3 -3
  75. package/esm2022/lib/components/kv-stepper/kv-stepper.module.mjs +1 -1
  76. package/esm2022/lib/components/kv-table/kv-table.component.mjs +12 -10
  77. package/esm2022/lib/components/kv-table/kv-table.module.mjs +1 -1
  78. package/esm2022/lib/components/kv-table-edit/kv-table-edit.component.mjs +3 -3
  79. package/esm2022/lib/components/kv-table-edit/kv-table-edit.module.mjs +1 -1
  80. package/esm2022/lib/components/kv-tree-table/kv-tree-table.component.mjs +3 -3
  81. package/esm2022/lib/components/kv-tree-table/kv-tree-table.module.mjs +1 -1
  82. package/esm2022/lib/components/kv-tree-view/kv-tree-view.component.mjs +3 -3
  83. package/esm2022/lib/components/kv-tree-view/kv-tree-view.module.mjs +1 -1
  84. package/esm2022/lib/components/kv-workspace/kv-workspace.component.mjs +3 -3
  85. package/esm2022/lib/components/kv-workspace/kv-workspace.module.mjs +1 -1
  86. package/esm2022/public-api.mjs +6 -1
  87. package/fesm2022/keevo-components.mjs +158 -86
  88. package/fesm2022/keevo-components.mjs.map +1 -1
  89. package/lib/components/kv-report/kv-report.component.d.ts +19 -0
  90. package/lib/components/kv-report/kv-report.module.d.ts +8 -0
  91. package/lib/components/kv-table/kv-table.component.d.ts +7 -6
  92. package/package.json +1 -1
  93. package/public-api.d.ts +5 -0
  94. package/esm2022/lib/api/base-components/base-component-button.mjs +0 -39
  95. package/esm2022/lib/api/base-components/base-component-chart.mjs +0 -92
  96. package/esm2022/lib/api/base-components/base-component-crud-form.mjs +0 -298
  97. package/esm2022/lib/api/base-components/base-component-crud-list.mjs +0 -78
  98. package/esm2022/lib/api/base-components/base-component-crud.mjs +0 -65
  99. package/esm2022/lib/api/base-components/base-component.mjs +0 -51
  100. package/esm2022/lib/api/components/chart/chart.config.mjs +0 -2
  101. package/esm2022/lib/api/components/chart/chart.model.mjs +0 -2
  102. package/esm2022/lib/api/components/table/action-item.mjs +0 -2
  103. package/esm2022/lib/api/components/table/kv-menuitem.mjs +0 -46
  104. package/esm2022/lib/api/components/table/table-dropdown-control.mjs +0 -2
  105. package/esm2022/lib/api/components/table/table.config.column.mjs +0 -2
  106. package/esm2022/lib/api/components/table/table.config.mjs +0 -2
  107. package/esm2022/lib/api/components/table/table.paginate.mjs +0 -9
  108. package/esm2022/lib/api/components/tree-table/tree-table.config.mjs +0 -3
  109. package/esm2022/lib/api/services/component.service.mjs +0 -27
  110. package/esm2022/lib/api/services/form.service.mjs +0 -85
  111. package/esm2022/lib/api/services/notification.service.mjs +0 -67
  112. package/esm2022/lib/api/services/object.service.mjs +0 -39
  113. package/esm2022/lib/api/types/severity.mjs +0 -2
  114. package/esm2022/lib/components/kv-chart/kv-chart.component.mjs +0 -145
  115. package/esm2022/lib/components/kv-error/kv-error.component.mjs +0 -26
  116. package/esm2022/lib/components/kv-loader/kv-loader.service.mjs +0 -29
  117. package/lib/api/base-components/base-component-button.d.ts +0 -15
  118. package/lib/api/base-components/base-component-chart.d.ts +0 -40
  119. package/lib/api/base-components/base-component-crud-form.d.ts +0 -145
  120. package/lib/api/base-components/base-component-crud-list.d.ts +0 -64
  121. package/lib/api/base-components/base-component-crud.d.ts +0 -36
  122. package/lib/api/base-components/base-component.d.ts +0 -22
  123. package/lib/api/components/chart/chart.config.d.ts +0 -11
  124. package/lib/api/components/chart/chart.model.d.ts +0 -9
  125. package/lib/api/components/table/action-item.d.ts +0 -11
  126. package/lib/api/components/table/kv-menuitem.d.ts +0 -152
  127. package/lib/api/components/table/table-dropdown-control.d.ts +0 -6
  128. package/lib/api/components/table/table.config.column.d.ts +0 -25
  129. package/lib/api/components/table/table.config.d.ts +0 -31
  130. package/lib/api/components/table/table.paginate.d.ts +0 -6
  131. package/lib/api/components/tree-table/tree-table.config.d.ts +0 -28
  132. package/lib/api/services/component.service.d.ts +0 -11
  133. package/lib/api/services/form.service.d.ts +0 -28
  134. package/lib/api/services/notification.service.d.ts +0 -25
  135. package/lib/api/services/object.service.d.ts +0 -9
  136. package/lib/api/types/severity.d.ts +0 -2
  137. package/lib/components/kv-chart/kv-chart.component.d.ts +0 -56
  138. package/lib/components/kv-error/kv-error.component.d.ts +0 -12
  139. package/lib/components/kv-loader/kv-loader.service.d.ts +0 -10
@@ -0,0 +1,19 @@
1
+ import { AfterViewInit, EventEmitter } from '@angular/core';
2
+ import { OnInit } from '@angular/core';
3
+ import * as i0 from "@angular/core";
4
+ export declare class KvReportComponent implements OnInit, AfterViewInit {
5
+ stiViewer: any;
6
+ stiReport: any;
7
+ onClose: EventEmitter<any>;
8
+ dataReport: any;
9
+ dataReportAlias: string;
10
+ dataReportName: string;
11
+ report: any;
12
+ localizationFile: string;
13
+ constructor();
14
+ ngAfterViewInit(): void;
15
+ ngOnInit(): void;
16
+ close(): void;
17
+ static ɵfac: i0.ɵɵFactoryDeclaration<KvReportComponent, never>;
18
+ static ɵcmp: i0.ɵɵComponentDeclaration<KvReportComponent, "kv-report", never, { "dataReport": { "alias": "dataReport"; "required": false; }; "dataReportAlias": { "alias": "dataReportAlias"; "required": false; }; "dataReportName": { "alias": "dataReportName"; "required": false; }; "report": { "alias": "report"; "required": false; }; "localizationFile": { "alias": "localizationFile"; "required": false; }; }, { "onClose": "onClose"; }, never, never, false, never>;
19
+ }
@@ -0,0 +1,8 @@
1
+ import * as i0 from "@angular/core";
2
+ import * as i1 from "./kv-report.component";
3
+ import * as i2 from "../../api/modules/primeng.module";
4
+ export declare class KvReportModule {
5
+ static ɵfac: i0.ɵɵFactoryDeclaration<KvReportModule, never>;
6
+ static ɵmod: i0.ɵɵNgModuleDeclaration<KvReportModule, [typeof i1.KvReportComponent], [typeof i2.PrimeNgModule], [typeof i1.KvReportComponent]>;
7
+ static ɵinj: i0.ɵɵInjectorDeclaration<KvReportModule>;
8
+ }
@@ -25,11 +25,12 @@ export declare class KvTableComponent implements OnInit, DoCheck {
25
25
  checkboxClicked: boolean;
26
26
  showFiltrosAvancados: boolean;
27
27
  collapsed: boolean;
28
- tableData: {
29
- data: any;
30
- actions?: MenuItem[];
31
- }[];
28
+ tableActions: MenuItem[][];
32
29
  currDataSource: any[];
30
+ dataIndex: {
31
+ [key: string]: any;
32
+ };
33
+ menuItems: MenuItem[];
33
34
  templates: QueryList<any>;
34
35
  _templates: any;
35
36
  table: Table;
@@ -103,8 +104,8 @@ export declare class KvTableComponent implements OnInit, DoCheck {
103
104
  checkHideColumns(): void;
104
105
  getCustomTemplate(templatename: string): TemplateRef<any>;
105
106
  onSwitchChange(estado: any, rowData: boolean, col: any): void;
106
- menuItems: MenuItem[];
107
- returnRowDataActions(rowData: any): void;
107
+ createTableActions(): void;
108
+ onSort(e: any): void;
108
109
  static ɵfac: i0.ɵɵFactoryDeclaration<KvTableComponent, never>;
109
110
  static ɵcmp: i0.ɵɵComponentDeclaration<KvTableComponent, "kv-table", never, { "_templates": { "alias": "templates"; "required": false; }; "setConfig": { "alias": "config"; "required": false; }; "defaultSortField": { "alias": "defaultSortField"; "required": false; }; "dataSource": { "alias": "dataSource"; "required": false; }; "selectedItems": { "alias": "selectedItems"; "required": false; }; "totalRecords": { "alias": "totalRecords"; "required": false; }; "paginator": { "alias": "paginator"; "required": false; }; "rowsPerPageOptions": { "alias": "rowsPerPageOptions"; "required": false; }; "rows": { "alias": "rows"; "required": false; }; "pageLinksOptions": { "alias": "pageLinksOptions"; "required": false; }; "showFirstLastIcon": { "alias": "showFirstLastIcon"; "required": false; }; "tableSize": { "alias": "tableSize"; "required": false; }; "applyStyle": { "alias": "applyStyle"; "required": false; }; "filterColumnsBtn": { "alias": "filterColumnsBtn"; "required": false; }; "filtrosAvancados": { "alias": "filtrosAvancados"; "required": false; }; "scrollHeight": { "alias": "scrollHeight"; "required": false; }; "isTableScrollable": { "alias": "isTableScrollable"; "required": false; }; "tableCaptalized": { "alias": "tableCaptalized"; "required": false; }; "rowTrackBy": { "alias": "rowTrackBy"; "required": false; }; "responsiveLayout": { "alias": "responsiveLayout"; "required": false; }; }, { "onActiveItem": "onActiveItem"; "onActiveItemLote": "onActiveItemLote"; "onPaginate": "onPaginate"; "onSelectionChange": "onSelectionChange"; "doubleClickEvent": "doubleClickEvent"; "filterField": "filterField"; "onSwitchTableChange": "onSwitchTableChange"; }, ["templates"], ["*"], false, never>;
110
111
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "keevo-components",
3
- "version": "1.8.119",
3
+ "version": "1.8.121",
4
4
  "peerDependencies": {
5
5
  "@angular/common": "^17.3.8",
6
6
  "@angular/core": "^17.3.8",
package/public-api.d.ts CHANGED
@@ -171,3 +171,8 @@ export * from './lib/components/kv-stepper/kv-stepper.module';
171
171
  */
172
172
  export * from './lib/components/kv-image-upload/kv-image-upload.component';
173
173
  export * from './lib/components/kv-image-upload/kv-image-upload.module';
174
+ /**
175
+ * Report
176
+ */
177
+ export * from './lib/components/kv-report/kv-report.component';
178
+ export * from './lib/components/kv-report/kv-report.module';
@@ -1,39 +0,0 @@
1
- import { Component, EventEmitter, Input, Output } from '@angular/core';
2
- import * as i0 from "@angular/core";
3
- export class BaseComponentButton {
4
- constructor() {
5
- this.icon = '';
6
- this.label = '';
7
- this.loading = false;
8
- this.disabled = false;
9
- this.text = false;
10
- this.color = 'bg-blue-100';
11
- this.onClick = new EventEmitter();
12
- }
13
- click(event) {
14
- this.onClick.emit();
15
- }
16
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.8", ngImport: i0, type: BaseComponentButton, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
17
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.8", type: BaseComponentButton, selector: "ng-component", inputs: { icon: "icon", label: "label", loading: "loading", disabled: "disabled", text: "text", color: "color" }, outputs: { onClick: "onClick" }, ngImport: i0, template: '', isInline: true }); }
18
- }
19
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.8", ngImport: i0, type: BaseComponentButton, decorators: [{
20
- type: Component,
21
- args: [{
22
- template: '',
23
- }]
24
- }], ctorParameters: () => [], propDecorators: { icon: [{
25
- type: Input
26
- }], label: [{
27
- type: Input
28
- }], loading: [{
29
- type: Input
30
- }], disabled: [{
31
- type: Input
32
- }], text: [{
33
- type: Input
34
- }], color: [{
35
- type: Input
36
- }], onClick: [{
37
- type: Output
38
- }] } });
39
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZS1jb21wb25lbnQtYnV0dG9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMva2Vldm8tY29tcG9uZW50cy9zcmMvbGliL2FwaS9iYXNlLWNvbXBvbmVudHMvYmFzZS1jb21wb25lbnQtYnV0dG9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxTQUFTLEVBQ1QsWUFBWSxFQUNaLEtBQUssRUFDTCxNQUFNLEVBQ1AsTUFBTSxlQUFlLENBQUM7O0FBS3ZCLE1BQU0sT0FBTyxtQkFBbUI7SUFhOUI7UUFYUyxTQUFJLEdBQVcsRUFBRSxDQUFDO1FBQ2xCLFVBQUssR0FBVyxFQUFFLENBQUM7UUFDbkIsWUFBTyxHQUFZLEtBQUssQ0FBQztRQUN6QixhQUFRLEdBQVksS0FBSyxDQUFDO1FBQzFCLFNBQUksR0FBWSxLQUFLLENBQUM7UUFDdEIsVUFBSyxHQUFXLGFBQWEsQ0FBQztRQUk3QixZQUFPLEdBQXNCLElBQUksWUFBWSxFQUFFLENBQUM7SUFFMUMsQ0FBQztJQUVqQixLQUFLLENBQUMsS0FBVTtRQUNkLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDdEIsQ0FBQzs4R0FqQlUsbUJBQW1CO2tHQUFuQixtQkFBbUIsdU1BRnBCLEVBQUU7OzJGQUVELG1CQUFtQjtrQkFIL0IsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUsRUFBRTtpQkFDYjt3REFHVSxJQUFJO3NCQUFaLEtBQUs7Z0JBQ0csS0FBSztzQkFBYixLQUFLO2dCQUNHLE9BQU87c0JBQWYsS0FBSztnQkFDRyxRQUFRO3NCQUFoQixLQUFLO2dCQUNHLElBQUk7c0JBQVosS0FBSztnQkFDRyxLQUFLO3NCQUFiLEtBQUs7Z0JBSUksT0FBTztzQkFBaEIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XHJcbiAgQ29tcG9uZW50LFxyXG4gIEV2ZW50RW1pdHRlcixcclxuICBJbnB1dCxcclxuICBPdXRwdXRcclxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHRlbXBsYXRlOiAnJyxcclxufSlcclxuZXhwb3J0IGNsYXNzIEJhc2VDb21wb25lbnRCdXR0b24ge1xyXG5cclxuICBASW5wdXQoKSBpY29uOiBzdHJpbmcgPSAnJztcclxuICBASW5wdXQoKSBsYWJlbDogc3RyaW5nID0gJyc7XHJcbiAgQElucHV0KCkgbG9hZGluZzogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIEBJbnB1dCgpIGRpc2FibGVkOiBib29sZWFuID0gZmFsc2U7XHJcbiAgQElucHV0KCkgdGV4dDogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIEBJbnB1dCgpIGNvbG9yOiBzdHJpbmcgPSAnYmctYmx1ZS0xMDAnO1xyXG5cclxuXHJcblxyXG4gIEBPdXRwdXQoKSBvbkNsaWNrOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuXHJcbiAgY29uc3RydWN0b3IoKSB7IH1cclxuXHJcbiAgY2xpY2soZXZlbnQ6IGFueSk6IHZvaWQge1xyXG4gICAgdGhpcy5vbkNsaWNrLmVtaXQoKTtcclxuICB9XHJcbn1cclxuIl19
@@ -1,92 +0,0 @@
1
- import { Component, EventEmitter, Output, ViewChild } from "@angular/core";
2
- import { KvChartComponent, PeriodosChart } from "../../components/kv-chart/kv-chart.component";
3
- import * as i0 from "@angular/core";
4
- export class BaseChartComponent {
5
- constructor() {
6
- this.selectedData = 0;
7
- this.enablePeriodos = [];
8
- this.periodos = PeriodosChart;
9
- this.onPrintReport = new EventEmitter();
10
- }
11
- changeData(event) {
12
- if (event) {
13
- this.selectedData = event?.value;
14
- this.loadData();
15
- }
16
- }
17
- ngOnInit() {
18
- this.loadData();
19
- }
20
- loadGraphic(obs) {
21
- obs
22
- .subscribe({
23
- next: (data) => {
24
- this.chartConfig = this.assembleGraphic(data);
25
- this.chartComponent?.reInit(this.chartConfig);
26
- },
27
- error: (error) => { },
28
- });
29
- }
30
- assembleGraphic(data) {
31
- let labels = [];
32
- let datasets = [];
33
- // Tratando legendas
34
- data.map((element) => {
35
- if (element.labels && !labels.includes(element.labels)) {
36
- labels.push(element.labels);
37
- }
38
- });
39
- //Descobrindo quantas dimensões tem o gráfico
40
- let numDatasets = Math.max(...data.map(o => o.numDatasets));
41
- //Populando datasets
42
- for (let i = 0; i <= numDatasets; i++) {
43
- let backgroundColor = [];
44
- let hoverBackgroundColor = [];
45
- let borderColor = [];
46
- let values = [];
47
- let labelDataset = '';
48
- data.filter((obj) => {
49
- return obj.numDatasets === i;
50
- }).map((obj) => {
51
- if (obj.backgroundColor && !backgroundColor.includes(obj.backgroundColor)) {
52
- backgroundColor.push(obj.backgroundColor);
53
- }
54
- if (obj.borderColor && !borderColor.includes(obj.borderColor)) {
55
- borderColor.push(obj.borderColor);
56
- }
57
- if (obj.hoverBackgroundColor && !hoverBackgroundColor.includes(obj.hoverBackgroundColor)) {
58
- hoverBackgroundColor.push(obj.hoverBackgroundColor);
59
- }
60
- if (obj.labelDataset)
61
- labelDataset = obj.labelDataset;
62
- values.push(obj.datasets);
63
- });
64
- datasets.push({
65
- label: labelDataset,
66
- backgroundColor: backgroundColor,
67
- hoverBackgroundColor: hoverBackgroundColor,
68
- borderColor: borderColor?.length === 0 ? undefined : borderColor,
69
- data: values
70
- });
71
- }
72
- let dados = {
73
- labels: labels,
74
- datasets: datasets
75
- };
76
- return dados;
77
- }
78
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.8", ngImport: i0, type: BaseChartComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
79
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.8", type: BaseChartComponent, selector: "ng-component", outputs: { onPrintReport: "onPrintReport" }, viewQueries: [{ propertyName: "chartComponent", first: true, predicate: KvChartComponent, descendants: true }], ngImport: i0, template: '', isInline: true }); }
80
- }
81
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.8", ngImport: i0, type: BaseChartComponent, decorators: [{
82
- type: Component,
83
- args: [{
84
- template: ''
85
- }]
86
- }], ctorParameters: () => [], propDecorators: { chartComponent: [{
87
- type: ViewChild,
88
- args: [KvChartComponent]
89
- }], onPrintReport: [{
90
- type: Output
91
- }] } });
92
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZS1jb21wb25lbnQtY2hhcnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9rZWV2by1jb21wb25lbnRzL3NyYy9saWIvYXBpL2Jhc2UtY29tcG9uZW50cy9iYXNlLWNvbXBvbmVudC1jaGFydC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBVSxNQUFNLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBS25GLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxhQUFhLEVBQUUsTUFBTSw4Q0FBOEMsQ0FBQzs7QUFLL0YsTUFBTSxPQUFnQixrQkFBa0I7SUFXdEM7UUFSQSxpQkFBWSxHQUFXLENBQUMsQ0FBQztRQUN6QixtQkFBYyxHQUFhLEVBQUUsQ0FBQztRQUM5QixhQUFRLEdBQUcsYUFBYSxDQUFDO1FBSWYsa0JBQWEsR0FBc0IsSUFBSSxZQUFZLEVBQUUsQ0FBQztJQUVoRCxDQUFDO0lBRVAsVUFBVSxDQUFDLEtBQVU7UUFDN0IsSUFBSSxLQUFLLEVBQUUsQ0FBQztZQUNWLElBQUksQ0FBQyxZQUFZLEdBQUcsS0FBSyxFQUFFLEtBQUssQ0FBQztZQUNqQyxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7UUFDbEIsQ0FBQztJQUNILENBQUM7SUFFRCxRQUFRO1FBQ04sSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFBO0lBQ2pCLENBQUM7SUFJUyxXQUFXLENBQUMsR0FBb0I7UUFDeEMsR0FBRzthQUNBLFNBQVMsQ0FBQztZQUNULElBQUksRUFBRSxDQUFDLElBQVMsRUFBRSxFQUFFO2dCQUNsQixJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQyxlQUFlLENBQUMsSUFBb0IsQ0FBQyxDQUFDO2dCQUM5RCxJQUFJLENBQUMsY0FBYyxFQUFFLE1BQU0sQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUM7WUFDaEQsQ0FBQztZQUNELEtBQUss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ZixDQUFDOzhHQTdGbUIsa0JBQWtCO2tHQUFsQixrQkFBa0IsaUpBTzNCLGdCQUFnQixnREFUakIsRUFBRTs7MkZBRVEsa0JBQWtCO2tCQUh2QyxTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSxFQUFFO2lCQUNiO3dEQVE4QixjQUFjO3NCQUExQyxTQUFTO3VCQUFDLGdCQUFnQjtnQkFFakIsYUFBYTtzQkFBdEIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBPbkluaXQsIE91dHB1dCwgVmlld0NoaWxkIH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcclxuaW1wb3J0IHsgT2JzZXJ2YWJsZSB9IGZyb20gXCJyeGpzXCI7XHJcblxyXG5pbXBvcnQgeyBjaGFydE1vZGVsIH0gZnJvbSBcIi4uL2NvbXBvbmVudHMvY2hhcnQvY2hhcnQubW9kZWxcIjtcclxuaW1wb3J0IHsgQ2hhcnRDb25maWcsIENoYXJ0RGF0YXNldENvbmZpZyB9IGZyb20gXCIuLi9jb21wb25lbnRzL2NoYXJ0L2NoYXJ0LmNvbmZpZ1wiO1xyXG5pbXBvcnQgeyBLdkNoYXJ0Q29tcG9uZW50LCBQZXJpb2Rvc0NoYXJ0IH0gZnJvbSBcIi4uLy4uL2NvbXBvbmVudHMva3YtY2hhcnQva3YtY2hhcnQuY29tcG9uZW50XCI7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICB0ZW1wbGF0ZTogJydcclxufSlcclxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIEJhc2VDaGFydENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XHJcblxyXG4gIGNoYXJ0Q29uZmlnITogQ2hhcnRDb25maWc7XHJcbiAgc2VsZWN0ZWREYXRhOiBudW1iZXIgPSAwO1xyXG4gIGVuYWJsZVBlcmlvZG9zOiBudW1iZXJbXSA9IFtdO1xyXG4gIHBlcmlvZG9zID0gUGVyaW9kb3NDaGFydDtcclxuXHJcbiAgQFZpZXdDaGlsZChLdkNoYXJ0Q29tcG9uZW50KSBjaGFydENvbXBvbmVudD86IEt2Q2hhcnRDb21wb25lbnQ7XHJcblxyXG4gIEBPdXRwdXQoKSBvblByaW50UmVwb3J0OiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuXHJcbiAgY29uc3RydWN0b3IoKSB7IH1cclxuXHJcbiAgcHJvdGVjdGVkIGNoYW5nZURhdGEoZXZlbnQ6IGFueSkge1xyXG4gICAgaWYgKGV2ZW50KSB7XHJcbiAgICAgIHRoaXMuc2VsZWN0ZWREYXRhID0gZXZlbnQ/LnZhbHVlO1xyXG4gICAgICB0aGlzLmxvYWREYXRhKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgIHRoaXMubG9hZERhdGEoKVxyXG4gIH1cclxuXHJcbiAgYWJzdHJhY3QgbG9hZERhdGEoKTogdm9pZDtcclxuXHJcbiAgcHJvdGVjdGVkIGxvYWRHcmFwaGljKG9iczogT2JzZXJ2YWJsZTxhbnk+KSB7XHJcbiAgICBvYnNcclxuICAgICAgLnN1YnNjcmliZSh7XHJcbiAgICAgICAgbmV4dDogKGRhdGE6IGFueSkgPT4ge1xyXG4gICAgICAgICAgdGhpcy5jaGFydENvbmZpZyA9IHRoaXMuYXNzZW1ibGVHcmFwaGljKGRhdGEgYXMgY2hhcnRNb2RlbFtdKTtcclxuICAgICAgICAgIHRoaXMuY2hhcnRDb21wb25lbnQ/LnJlSW5pdCh0aGlzLmNoYXJ0Q29uZmlnKTtcclxuICAgICAgICB9LFxyXG4gICAgICAgIGVycm9yOiAoZXJyb3I6IGFueSkgPT4geyB9LFxyXG4gICAgICB9KTtcclxuICB9XHJcblxyXG4gIHByb3RlY3RlZCBhc3NlbWJsZUdyYXBoaWMoZGF0YTogY2hhcnRNb2RlbFtdKSB7XHJcbiAgICBsZXQgbGFiZWxzOiBzdHJpbmdbXSA9IFtdO1xyXG4gICAgbGV0IGRhdGFzZXRzOiBDaGFydERhdGFzZXRDb25maWdbXSA9IFtdO1xyXG5cclxuICAgIC8vIFRyYXRhbmRvIGxlZ2VuZGFzXHJcbiAgICBkYXRhLm1hcCgoZWxlbWVudDogYW55KSA9PiB7XHJcbiAgICAgIGlmIChlbGVtZW50LmxhYmVscyAmJiAhbGFiZWxzLmluY2x1ZGVzKGVsZW1lbnQubGFiZWxzKSkge1xyXG4gICAgICAgIGxhYmVscy5wdXNoKGVsZW1lbnQubGFiZWxzKTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcblxyXG4gICAgLy9EZXNjb2JyaW5kbyBxdWFudGFzIGRpbWVuc8O1ZXMgdGVtIG8gZ3LDoWZpY29cclxuICAgIGxldCBudW1EYXRhc2V0cyA9IE1hdGgubWF4KC4uLmRhdGEubWFwKG8gPT4gby5udW1EYXRhc2V0cykpO1xyXG5cclxuICAgIC8vUG9wdWxhbmRvIGRhdGFzZXRzXHJcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8PSBudW1EYXRhc2V0czsgaSsrKSB7XHJcbiAgICAgIGxldCBiYWNrZ3JvdW5kQ29sb3I6IHN0cmluZ1tdID0gW107XHJcbiAgICAgIGxldCBob3ZlckJhY2tncm91bmRDb2xvcjogc3RyaW5nW10gPSBbXTtcclxuICAgICAgbGV0IGJvcmRlckNvbG9yOiBzdHJpbmdbXSA9IFtdO1xyXG4gICAgICBsZXQgdmFsdWVzOiBudW1iZXJbXSA9IFtdO1xyXG4gICAgICBsZXQgbGFiZWxEYXRhc2V0OiBzdHJpbmcgPSAnJztcclxuXHJcbiAgICAgIGRhdGEuZmlsdGVyKChvYmopID0+IHtcclxuICAgICAgICByZXR1cm4gb2JqLm51bURhdGFzZXRzID09PSBpO1xyXG4gICAgICB9KS5tYXAoKG9iaikgPT4ge1xyXG4gICAgICAgIGlmIChvYmouYmFja2dyb3VuZENvbG9yICYmICFiYWNrZ3JvdW5kQ29sb3IuaW5jbHVkZXMob2JqLmJhY2tncm91bmRDb2xvcikpIHtcclxuICAgICAgICAgIGJhY2tncm91bmRDb2xvci5wdXNoKG9iai5iYWNrZ3JvdW5kQ29sb3IpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAob2JqLmJvcmRlckNvbG9yICYmICFib3JkZXJDb2xvci5pbmNsdWRlcyhvYmouYm9yZGVyQ29sb3IpKSB7XHJcbiAgICAgICAgICBib3JkZXJDb2xvci5wdXNoKG9iai5ib3JkZXJDb2xvcik7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChvYmouaG92ZXJCYWNrZ3JvdW5kQ29sb3IgJiYgIWhvdmVyQmFja2dyb3VuZENvbG9yLmluY2x1ZGVzKG9iai5ob3ZlckJhY2tncm91bmRDb2xvcikpIHtcclxuICAgICAgICAgIGhvdmVyQmFja2dyb3VuZENvbG9yLnB1c2gob2JqLmhvdmVyQmFja2dyb3VuZENvbG9yKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKG9iai5sYWJlbERhdGFzZXQpIGxhYmVsRGF0YXNldCA9IG9iai5sYWJlbERhdGFzZXQ7XHJcblxyXG4gICAgICAgIHZhbHVlcy5wdXNoKG9iai5kYXRhc2V0cyk7XHJcbiAgICAgIH0pO1xyXG5cclxuICAgICAgZGF0YXNldHMucHVzaChcclxuICAgICAgICB7XHJcbiAgICAgICAgICBsYWJlbDogbGFiZWxEYXRhc2V0LFxyXG4gICAgICAgICAgYmFja2dyb3VuZENvbG9yOiBiYWNrZ3JvdW5kQ29sb3IsXHJcbiAgICAgICAgICBob3ZlckJhY2tncm91bmRDb2xvcjogaG92ZXJCYWNrZ3JvdW5kQ29sb3IsXHJcbiAgICAgICAgICBib3JkZXJDb2xvcjogYm9yZGVyQ29sb3I/Lmxlbmd0aCA9PT0gMCA/IHVuZGVmaW5lZCA6IGJvcmRlckNvbG9yLFxyXG4gICAgICAgICAgZGF0YTogdmFsdWVzXHJcbiAgICAgICAgfVxyXG4gICAgICApO1xyXG4gICAgfVxyXG5cclxuICAgIGxldCBkYWRvczogQ2hhcnRDb25maWcgPSB7XHJcbiAgICAgIGxhYmVsczogbGFiZWxzLFxyXG4gICAgICBkYXRhc2V0czogZGF0YXNldHNcclxuICAgIH07XHJcblxyXG4gICAgcmV0dXJuIGRhZG9zO1xyXG4gIH1cclxufVxyXG4iXX0=
@@ -1,298 +0,0 @@
1
- import { Component } from "@angular/core";
2
- import { FormGroup } from "@angular/forms";
3
- import { combineLatest, filter, finalize } from "rxjs";
4
- import { BaseComponentCrud } from "./base-component-crud";
5
- import { FormService } from "../services/form.service";
6
- import { loading } from "../../components/kv-loader/kv-loader.service";
7
- import * as i0 from "@angular/core";
8
- import * as i1 from "primeng/dynamicdialog";
9
- import * as i2 from "../services/notification.service";
10
- import * as i3 from "@angular/router";
11
- export class BaseComponentCrudForm extends BaseComponentCrud {
12
- constructor(dialogService, notificationService, activatedRoute, dynamicDialogRef, dynamicDialogConfig, router) {
13
- super(dialogService, notificationService);
14
- this.activatedRoute = activatedRoute;
15
- this.dynamicDialogRef = dynamicDialogRef;
16
- this.dynamicDialogConfig = dynamicDialogConfig;
17
- this.router = router;
18
- this.isAccordionExpanded = false;
19
- this.isNewRegistry = false;
20
- this.isSaveLoading = false;
21
- this.isView = false;
22
- this.formGroup = new FormGroup({});
23
- this.actions = [];
24
- this.popup = false;
25
- this.registry = null;
26
- this.onSetFormValues = false;
27
- }
28
- /**
29
- * Método disparado para tratamento das notificações do backend
30
- * @param err - Notificação
31
- */
32
- backendError(err) {
33
- if (err) {
34
- if (err.status == 404) {
35
- this.notificationService.toastError(err.error.item2[0].message);
36
- return;
37
- }
38
- else if (err.status == 400) {
39
- // Erros de validação de domínio do backend
40
- if (Array.isArray(err.error)) {
41
- if (err.error?.length) {
42
- if (err.error.length == 1 && err.error[0].key == '') {
43
- this.notificationService.toastError(err.error[0].message);
44
- return;
45
- }
46
- this.invalidForm(err.error);
47
- return;
48
- }
49
- }
50
- else if (Array.isArray(err.error.item2)) {
51
- if (err.error.item2?.length) {
52
- if (err.error.item2.length == 1) {
53
- this.notificationService.toastError(err.error.item2[0].message);
54
- return;
55
- }
56
- this.invalidForm(err.error.item2);
57
- return;
58
- }
59
- }
60
- else if (err.error?.title) {
61
- // Erro de json no backend
62
- this.notificationService.toastError(err.error.title);
63
- return;
64
- }
65
- }
66
- else if (err.status == 415) {
67
- if (err.error?.title) {
68
- // Erro de json no backend
69
- this.notificationService.toastError(err.error.title);
70
- return;
71
- }
72
- }
73
- // Qualquer outro tipo de erro que tenha mensagem
74
- if (err.message) {
75
- this.notificationService.toastError(err.message);
76
- }
77
- }
78
- }
79
- /**
80
- * Método disparado ao clicar no botão de cancelamento
81
- */
82
- cancel() {
83
- this.notificationService.question({
84
- type: 'question',
85
- message: 'Deseja cancelar a operação?',
86
- accept: () => {
87
- this.navigateList();
88
- },
89
- });
90
- }
91
- /**
92
- * Verifica se houveram alterações nos componentes do formControl
93
- * @param controls - Nomes do controles no formGroup
94
- * @returns Observable
95
- */
96
- detectFormControlChanges(controls) {
97
- const controlList = [];
98
- controls.forEach(controlName => controlList.push(this.formGroup.controls[controlName].valueChanges));
99
- return combineLatest(controlList).pipe(filter(() => !this.onSetFormValues));
100
- }
101
- /**
102
- * Método responsável por desabilitar um componente
103
- * @param controlName - Nome do controle no formGroup
104
- */
105
- disableComponent(controlName) {
106
- FormService.disableControl(this.formGroup, controlName);
107
- }
108
- /**
109
- * Método responsável por limpar e desabilitar um componente
110
- * @param controlName - Nome do controle no formGroup
111
- * @param value - Valor default
112
- */
113
- disableAndClearComponent(controlName, value) {
114
- FormService.disableAndClearControl(this.formGroup, controlName, value);
115
- }
116
- /**
117
- * Método responsável por habilitar um componente
118
- * @param controlName - Nome do controle no formGroup
119
- */
120
- enableComponent(controName) {
121
- FormService.enableControl(this.formGroup, controName);
122
- }
123
- /**
124
- * Método que retorna o valor de um componente
125
- * @param controlName - Nome do controle no formGroup
126
- * @returns - Valor
127
- */
128
- getFormValue(controlName) {
129
- return FormService.getFormValue(this.formGroup, controlName);
130
- }
131
- /**
132
- * Verifica se o componente possui erro
133
- * @param controlName - Nome do controle no formGroup
134
- */
135
- hasControlError(controlName, errorCode) {
136
- return FormService.hasControlError(this.formGroup, controlName, errorCode);
137
- }
138
- /**
139
- * Seta inconsistências para o fomulário
140
- * @param notification - Lista de notificações
141
- */
142
- invalidForm(notification) {
143
- FormService.invalidForm(this.formGroup, notification);
144
- }
145
- /**
146
- * Tratamento de inconsistências do formulário
147
- */
148
- invalidateForm() {
149
- this.isAccordionExpanded = true;
150
- this.invalidForm();
151
- if (this.dadosTela?.mensagemValidacao) {
152
- this.notificationService.dialog({
153
- type: 'alert',
154
- message: 'Verifique os campos obrigatórios.',
155
- });
156
- }
157
- }
158
- /**
159
- * Método responsável pelo carregamento da tela
160
- * @param obs - Observable responsável pelo salvamento dos dados
161
- */
162
- loadData(obs) {
163
- obs
164
- .pipe(loading())
165
- .subscribe((data) => {
166
- this.isNewRegistry = false;
167
- this.registry = data;
168
- this.setFormValues(this.registry);
169
- this.loadGrids();
170
- this.setTitlePopup();
171
- });
172
- }
173
- async loadDataAsync(obs) {
174
- await obs.pipe(loading()).toPromise();
175
- const data = await obs.toPromise();
176
- this.isNewRegistry = false;
177
- this.registry = data;
178
- this.setFormValues(this.registry);
179
- this.loadGrids();
180
- this.setTitlePopup();
181
- }
182
- /**
183
- * Método disparado para carregamento de grids (Disparado após o loadData)
184
- */
185
- loadGrids() { }
186
- /**
187
- * Método disparado para retornar a lista
188
- */
189
- navigateList(id = null) {
190
- if (this.popup) {
191
- this.dynamicDialogRef.close(id);
192
- }
193
- else if (this.dadosTela?.rotaListar) {
194
- this.router.navigate([this.dadosTela.rotaListar]);
195
- }
196
- }
197
- ngOnDestroy() {
198
- if (this.dynamicDialogRef) {
199
- this.dynamicDialogRef.close();
200
- }
201
- }
202
- ngOnInit() {
203
- this.configureForm();
204
- this.popup = this.dynamicDialogConfig?.data?.popup || false;
205
- this.activatedRoute.params.subscribe((params) => {
206
- if (params['id']) {
207
- this.loadForm(params['id']);
208
- }
209
- else if (this.dynamicDialogConfig?.data?.id) {
210
- this.loadForm(this.dynamicDialogConfig.data.id);
211
- }
212
- else {
213
- this.isNewRegistry = true;
214
- this.loadGrids();
215
- this.setTitlePopup();
216
- }
217
- });
218
- }
219
- /**
220
- * Método disparado para salvar dados
221
- * @param obs - Observable responsável pelo salvamento dos dados
222
- */
223
- saveData(obs) {
224
- obs
225
- .pipe((src) => {
226
- this.isSaveLoading = true;
227
- return src.pipe(finalize(() => {
228
- this.isSaveLoading = false;
229
- }));
230
- })
231
- .subscribe({
232
- next: (res) => {
233
- this.notificationService.toastSuccess(res.item2[0].message);
234
- this.navigateList(res.item1);
235
- },
236
- error: (e) => {
237
- this.backendError(e);
238
- },
239
- });
240
- }
241
- /**
242
- * Método se atualiza o valor de um componente do formGroup
243
- * @param controName - Nome do controle
244
- * @param value - Valor para atualização
245
- */
246
- setControlValue(controName, value) {
247
- FormService.setControlValue(this.formGroup, controName, value);
248
- }
249
- /**
250
- * Atualiza valores dos componentes do formGroup
251
- * @param values - Valores para atualização
252
- */
253
- setFormValues(values) {
254
- this.onSetFormValues = true;
255
- this.formGroup.patchValue(values, { emitEvent: false });
256
- this.onSetFormValues = false;
257
- }
258
- /**
259
- * Seta o título do popup
260
- */
261
- setTitlePopup() {
262
- if (this.popup) {
263
- if (this.dynamicDialogConfig)
264
- this.dynamicDialogConfig.header = this.dadosTela?.tituloForm;
265
- }
266
- }
267
- /**
268
- * Atualiza o validador de um componente do formGroup
269
- * @param controName - Nome do controle
270
- * @param validators - Regra de validação
271
- */
272
- setValidators(controName, validators) {
273
- FormService.setValidators(this.formGroup, controName, validators);
274
- }
275
- /**
276
- * Dispara os métodos de validações do formulário
277
- * @returns - True/False
278
- */
279
- validateForm() {
280
- let valid = false;
281
- if (this.formGroup && this.formGroup.valid) {
282
- valid = true;
283
- }
284
- else {
285
- this.invalidateForm();
286
- }
287
- return valid;
288
- }
289
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.8", ngImport: i0, type: BaseComponentCrudForm, deps: [{ token: i1.DialogService }, { token: i2.NotificationService }, { token: i3.ActivatedRoute }, { token: i1.DynamicDialogRef }, { token: i1.DynamicDialogConfig }, { token: i3.Router }], target: i0.ɵɵFactoryTarget.Component }); }
290
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.8", type: BaseComponentCrudForm, selector: "ng-component", usesInheritance: true, ngImport: i0, template: '', isInline: true }); }
291
- }
292
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.8", ngImport: i0, type: BaseComponentCrudForm, decorators: [{
293
- type: Component,
294
- args: [{
295
- template: ''
296
- }]
297
- }], ctorParameters: () => [{ type: i1.DialogService }, { type: i2.NotificationService }, { type: i3.ActivatedRoute }, { type: i1.DynamicDialogRef }, { type: i1.DynamicDialogConfig }, { type: i3.Router }] });
298
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZS1jb21wb25lbnQtY3J1ZC1mb3JtLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMva2Vldm8tY29tcG9uZW50cy9zcmMvbGliL2FwaS9iYXNlLWNvbXBvbmVudHMvYmFzZS1jb21wb25lbnQtY3J1ZC1mb3JtLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxTQUFTLEVBQXFCLE1BQU0sZUFBZSxDQUFDO0FBRTdELE9BQU8sRUFBRSxTQUFTLEVBQWUsTUFBTSxnQkFBZ0IsQ0FBQztBQUN4RCxPQUFPLEVBQWMsYUFBYSxFQUFFLE1BQU0sRUFBRSxRQUFRLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFHbkUsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDMUQsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBRXZELE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSw4Q0FBOEMsQ0FBQzs7Ozs7QUFZdkUsTUFBTSxPQUFnQixxQkFBc0IsU0FBUSxpQkFBaUI7SUFnQm5FLFlBQ0UsYUFBNEIsRUFDNUIsbUJBQXdDLEVBQzlCLGNBQThCLEVBQzlCLGdCQUFrQyxFQUNsQyxtQkFBd0MsRUFDeEMsTUFBYztRQUN4QixLQUFLLENBRUQsYUFBYSxFQUNiLG1CQUFtQixDQUNwQixDQUFDO1FBUk0sbUJBQWMsR0FBZCxjQUFjLENBQWdCO1FBQzlCLHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBa0I7UUFDbEMsd0JBQW1CLEdBQW5CLG1CQUFtQixDQUFxQjtRQUN4QyxXQUFNLEdBQU4sTUFBTSxDQUFRO1FBcEJoQix3QkFBbUIsR0FBRyxLQUFLLENBQUM7UUFDNUIsa0JBQWEsR0FBRyxLQUFLLENBQUM7UUFDdEIsa0JBQWEsR0FBRyxLQUFLLENBQUM7UUFDdEIsV0FBTSxHQUFHLEtBQUssQ0FBQztRQUVmLGNBQVMsR0FBYyxJQUFJLFNBQVMsQ0FBQyxF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RUQsT0FBTyxLQUFLLENBQUM7SUFDZixDQUFDOzhHQWpWbUIscUJBQXFCO2tHQUFyQixxQkFBcUIsMkVBRi9CLEVBQUU7OzJGQUVRLHFCQUFxQjtrQkFIMUMsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUsRUFBRTtpQkFDYiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFjdGl2YXRlZFJvdXRlLCBSb3V0ZXIgfSBmcm9tIFwiQGFuZ3VsYXIvcm91dGVyXCI7XHJcbmltcG9ydCB7IENvbXBvbmVudCwgT25EZXN0cm95LCBPbkluaXQgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xyXG5pbXBvcnQgeyBEaWFsb2dTZXJ2aWNlLCBEeW5hbWljRGlhbG9nQ29uZmlnLCBEeW5hbWljRGlhbG9nUmVmIH0gZnJvbSBcInByaW1lbmcvZHluYW1pY2RpYWxvZ1wiO1xyXG5pbXBvcnQgeyBGb3JtR3JvdXAsIFZhbGlkYXRvckZuIH0gZnJvbSBcIkBhbmd1bGFyL2Zvcm1zXCI7XHJcbmltcG9ydCB7IE9ic2VydmFibGUsIGNvbWJpbmVMYXRlc3QsIGZpbHRlciwgZmluYWxpemUgfSBmcm9tIFwicnhqc1wiO1xyXG5cclxuaW1wb3J0IHsgQWN0aW9uSXRlbSB9IGZyb20gXCIuLi9jb21wb25lbnRzL3RhYmxlL2FjdGlvbi1pdGVtXCI7XHJcbmltcG9ydCB7IEJhc2VDb21wb25lbnRDcnVkIH0gZnJvbSBcIi4vYmFzZS1jb21wb25lbnQtY3J1ZFwiO1xyXG5pbXBvcnQgeyBGb3JtU2VydmljZSB9IGZyb20gXCIuLi9zZXJ2aWNlcy9mb3JtLnNlcnZpY2VcIjtcclxuaW1wb3J0IHsgTm90aWZpY2F0aW9uU2VydmljZSB9IGZyb20gXCIuLi9zZXJ2aWNlcy9ub3RpZmljYXRpb24uc2VydmljZVwiO1xyXG5pbXBvcnQgeyBsb2FkaW5nIH0gZnJvbSBcIi4uLy4uL2NvbXBvbmVudHMva3YtbG9hZGVyL2t2LWxvYWRlci5zZXJ2aWNlXCI7XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIERhZG9zVGVsYSB7XHJcbiAgc3ViVGl0dWxvRm9ybTogc3RyaW5nIHwgdW5kZWZpbmVkO1xyXG4gIHRpdHVsb0Zvcm06IHN0cmluZyB8IHVuZGVmaW5lZDtcclxuICByb3RhTGlzdGFyOiBzdHJpbmc7XHJcbiAgbWVuc2FnZW1WYWxpZGFjYW86IGJvb2xlYW5cclxufVxyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgdGVtcGxhdGU6ICcnXHJcbn0pXHJcbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBCYXNlQ29tcG9uZW50Q3J1ZEZvcm0gZXh0ZW5kcyBCYXNlQ29tcG9uZW50Q3J1ZCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcclxuXHJcbiAgcHJvdGVjdGVkIGlzQWNjb3JkaW9uRXhwYW5kZWQgPSBmYWxzZTtcclxuICBwcm90ZWN0ZWQgaXNOZXdSZWdpc3RyeSA9IGZhbHNlO1xyXG4gIHByb3RlY3RlZCBpc1NhdmVMb2FkaW5nID0gZmFsc2U7XHJcbiAgcHJvdGVjdGVkIGlzVmlldyA9IGZhbHNlO1xyXG5cclxuICBwcm90ZWN0ZWQgZm9ybUdyb3VwOiBGb3JtR3JvdXAgPSBuZXcgRm9ybUdyb3VwKHt9KTtcclxuICBwcm90ZWN0ZWQgYWN0aW9uczogQWN0aW9uSXRlbVtdID0gW107XHJcblxyXG4gIHByb3RlY3RlZCBkYWRvc1RlbGE6IERhZG9zVGVsYSB8IHVuZGVmaW5lZDtcclxuICBwcm90ZWN0ZWQgcG9wdXA6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBwcm90ZWN0ZWQgcmVnaXN0cnk6IGFueSA9IG51bGw7XHJcblxyXG4gIHByaXZhdGUgb25TZXRGb3JtVmFsdWVzOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgZGlhbG9nU2VydmljZTogRGlhbG9nU2VydmljZSxcclxuICAgIG5vdGlmaWNhdGlvblNlcnZpY2U6IE5vdGlmaWNhdGlvblNlcnZpY2UsXHJcbiAgICBwcm90ZWN0ZWQgYWN0aXZhdGVkUm91dGU6IEFjdGl2YXRlZFJvdXRlLFxyXG4gICAgcHJvdGVjdGVkIGR5bmFtaWNEaWFsb2dSZWY6IER5bmFtaWNEaWFsb2dSZWYsXHJcbiAgICBwcm90ZWN0ZWQgZHluYW1pY0RpYWxvZ0NvbmZpZzogRHluYW1pY0RpYWxvZ0NvbmZpZyxcclxuICAgIHByb3RlY3RlZCByb3V0ZXI6IFJvdXRlcikge1xyXG4gICAgc3VwZXJcclxuICAgICAgKFxyXG4gICAgICAgIGRpYWxvZ1NlcnZpY2UsXHJcbiAgICAgICAgbm90aWZpY2F0aW9uU2VydmljZVxyXG4gICAgICApO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogTcOpdG9kbyBkaXNwYXJhZG8gcGFyYSBjb25maWd1cmHDp8OjbyBkbyBmb3JtXHJcbiAgICovXHJcbiAgYWJzdHJhY3QgY29uZmlndXJlRm9ybSgpOiB2b2lkO1xyXG5cclxuICAvKipcclxuICAgKiBNw6l0b2RvIGRpc3BhcmFkbyBwYXJhIG8gY2FycmVnYW1lbnRvIGRvIGZvcm1cclxuICAgKiBAcGFyYW0gaWRcclxuICAgKi9cclxuICBhYnN0cmFjdCBsb2FkRm9ybShpZDogYW55KTogdm9pZDtcclxuXHJcbiAgLyoqXHJcbiAgICogTcOpdG9kbyBkaXNwYXJhZG8gcGFyYSBzYWx2YW1lbnRvIGRvcyBkYWRvc1xyXG4gICAqL1xyXG4gIGFic3RyYWN0IHNhdmUoKTogdm9pZDtcclxuXHJcbiAgLyoqXHJcbiAgICogTcOpdG9kbyBkaXNwYXJhZG8gcGFyYSB0cmF0YW1lbnRvIGRhcyBub3RpZmljYcOnw7VlcyBkbyBiYWNrZW5kXHJcbiAgICogQHBhcmFtIGVyciAtIE5vdGlmaWNhw6fDo29cclxuICAgKi9cclxuICBwcm90ZWN0ZWQgYmFja2VuZEVycm9yKGVycjogYW55KTogdm9pZCB7XHJcbiAgICBpZiAoZXJyKSB7XHJcbiAgICAgIGlmIChlcnIuc3RhdHVzID09IDQwNCkge1xyXG4gICAgICAgIHRoaXMubm90aWZpY2F0aW9uU2VydmljZS50b2FzdEVycm9yKGVyci5lcnJvci5pdGVtMlswXS5tZXNzYWdlKTtcclxuICAgICAgICByZXR1cm47XHJcbiAgICAgIH1cclxuICAgICAgZWxzZSBpZiAoZXJyLnN0YXR1cyA9PSA0MDApIHtcclxuICAgICAgICAvLyBFcnJvcyBkZSB2YWxpZGHDp8OjbyBkZSBkb23DrW5pbyBkbyBiYWNrZW5kXHJcbiAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkoZXJyLmVycm9yKSkge1xyXG4gICAgICAgICAgaWYgKGVyci5lcnJvcj8ubGVuZ3RoKSB7XHJcblxyXG4gICAgICAgICAgICBpZiAoZXJyLmVycm9yLmxlbmd0aCA9PSAxICYmIGVyci5lcnJvclswXS5rZXkgPT0gJycpIHtcclxuICAgICAgICAgICAgICB0aGlzLm5vdGlmaWNhdGlvblNlcnZpY2UudG9hc3RFcnJvcihlcnIuZXJyb3JbMF0ubWVzc2FnZSk7XHJcbiAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICB0aGlzLmludmFsaWRGb3JtKGVyci5lcnJvcik7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSBpZiAoQXJyYXkuaXNBcnJheShlcnIuZXJyb3IuaXRlbTIpKSB7XHJcbiAgICAgICAgICBpZiAoZXJyLmVycm9yLml0ZW0yPy5sZW5ndGgpIHtcclxuXHJcbiAgICAgICAgICAgIGlmIChlcnIuZXJyb3IuaXRlbTIubGVuZ3RoID09IDEpIHtcclxuICAgICAgICAgICAgICB0aGlzLm5vdGlmaWNhdGlvblNlcnZpY2UudG9hc3RFcnJvcihlcnIuZXJyb3IuaXRlbTJbMF0ubWVzc2FnZSk7XHJcbiAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICB0aGlzLmludmFsaWRGb3JtKGVyci5lcnJvci5pdGVtMik7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSBpZiAoZXJyLmVycm9yPy50aXRsZSkge1xyXG4gICAgICAgICAgLy8gRXJybyBkZSBqc29uIG5vIGJhY2tlbmRcclxuICAgICAgICAgIHRoaXMubm90aWZpY2F0aW9uU2VydmljZS50b2FzdEVycm9yKGVyci5lcnJvci50aXRsZSk7XHJcbiAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICAgIGVsc2UgaWYgKGVyci5zdGF0dXMgPT0gNDE1KSB7XHJcbiAgICAgICAgaWYgKGVyci5lcnJvcj8udGl0bGUpIHtcclxuICAgICAgICAgIC8vIEVycm8gZGUganNvbiBubyBiYWNrZW5kXHJcbiAgICAgICAgICB0aGlzLm5vdGlmaWNhdGlvblNlcnZpY2UudG9hc3RFcnJvcihlcnIuZXJyb3IudGl0bGUpO1xyXG4gICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG5cclxuICAgICAgLy8gUXVhbHF1ZXIgb3V0cm8gdGlwbyBkZSBlcnJvIHF1ZSB0ZW5oYSBtZW5zYWdlbVxyXG4gICAgICBpZiAoZXJyLm1lc3NhZ2UpIHtcclxuICAgICAgICB0aGlzLm5vdGlmaWNhdGlvblNlcnZpY2UudG9hc3RFcnJvcihlcnIubWVzc2FnZSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIE3DqXRvZG8gZGlzcGFyYWRvIGFvIGNsaWNhciBubyBib3TDo28gZGUgY2FuY2VsYW1lbnRvXHJcbiAgICovXHJcbiAgcHJvdGVjdGVkIGNhbmNlbCgpIHtcclxuICAgIHRoaXMubm90aWZpY2F0aW9uU2VydmljZS5xdWVzdGlvbih7XHJcbiAgICAgIHR5cGU6ICdxdWVzdGlvbicsXHJcbiAgICAgIG1lc3NhZ2U6ICdEZXNlamEgY2FuY2VsYXIgYSBvcGVyYcOnw6NvPycsXHJcbiAgICAgIGFjY2VwdDogKCkgPT4ge1xyXG4gICAgICAgIHRoaXMubmF2aWdhdGVMaXN0KCk7XHJcbiAgICAgIH0sXHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFZlcmlmaWNhIHNlIGhvdXZlcmFtIGFsdGVyYcOnw7VlcyBub3MgY29tcG9uZW50ZXMgZG8gZm9ybUNvbnRyb2xcclxuICAgKiBAcGFyYW0gY29udHJvbHMgLSBOb21lcyBkbyBjb250cm9sZXMgbm8gZm9ybUdyb3VwXHJcbiAgICogQHJldHVybnMgT2JzZXJ2YWJsZVxyXG4gICAqL1xyXG4gIHByb3RlY3RlZCBkZXRlY3RGb3JtQ29udHJvbENoYW5nZXMoY29udHJvbHM6IEFycmF5PHN0cmluZz4pOiBPYnNlcnZhYmxlPGFueT4ge1xyXG4gICAgY29uc3QgY29udHJvbExpc3Q6IE9ic2VydmFibGU8YW55PltdID0gW107XHJcbiAgICBjb250cm9scy5mb3JFYWNoKGNvbnRyb2xOYW1lID0+IGNvbnRyb2xMaXN0LnB1c2godGhpcy5mb3JtR3JvdXAuY29udHJvbHNbY29udHJvbE5hbWVdLnZhbHVlQ2hhbmdlcykpO1xyXG4gICAgcmV0dXJuIGNvbWJpbmVMYXRlc3QoY29udHJvbExpc3QpLnBpcGUoZmlsdGVyKCgpID0+ICF0aGlzLm9uU2V0Rm9ybVZhbHVlcykpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogTcOpdG9kbyByZXNwb25zw6F2ZWwgcG9yIGRlc2FiaWxpdGFyIHVtIGNvbXBvbmVudGVcclxuICAgKiBAcGFyYW0gY29udHJvbE5hbWUgLSBOb21lIGRvIGNvbnRyb2xlIG5vIGZvcm1Hcm91cFxyXG4gICAqL1xyXG4gIHByb3RlY3RlZCBkaXNhYmxlQ29tcG9uZW50KGNvbnRyb2xOYW1lOiBzdHJpbmcpIHtcclxuICAgIEZvcm1TZXJ2aWNlLmRpc2FibGVDb250cm9sKHRoaXMuZm9ybUdyb3VwLCBjb250cm9sTmFtZSk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBNw6l0b2RvIHJlc3BvbnPDoXZlbCBwb3IgbGltcGFyIGUgZGVzYWJpbGl0YXIgdW0gY29tcG9uZW50ZVxyXG4gICAqIEBwYXJhbSBjb250cm9sTmFtZSAtIE5vbWUgZG8gY29udHJvbGUgbm8gZm9ybUdyb3VwXHJcbiAgICogQHBhcmFtIHZhbHVlIC0gVmFsb3IgZGVmYXVsdFxyXG4gICAqL1xyXG4gIHByb3RlY3RlZCBkaXNhYmxlQW5kQ2xlYXJDb21wb25lbnQoY29udHJvbE5hbWU6IHN0cmluZywgdmFsdWU/OiBhbnkpIHtcclxuICAgIEZvcm1TZXJ2aWNlLmRpc2FibGVBbmRDbGVhckNvbnRyb2wodGhpcy5mb3JtR3JvdXAsIGNvbnRyb2xOYW1lLCB2YWx1ZSk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBNw6l0b2RvIHJlc3BvbnPDoXZlbCBwb3IgaGFiaWxpdGFyIHVtIGNvbXBvbmVudGVcclxuICAgKiBAcGFyYW0gY29udHJvbE5hbWUgLSBOb21lIGRvIGNvbnRyb2xlIG5vIGZvcm1Hcm91cFxyXG4gICAqL1xyXG4gIHByb3RlY3RlZCBlbmFibGVDb21wb25lbnQoY29udHJvTmFtZTogc3RyaW5nKSB7XHJcbiAgICBGb3JtU2VydmljZS5lbmFibGVDb250cm9sKHRoaXMuZm9ybUdyb3VwLCBjb250cm9OYW1lKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIE3DqXRvZG8gcXVlIHJldG9ybmEgbyB2YWxvciBkZSB1bSBjb21wb25lbnRlXHJcbiAgICogQHBhcmFtIGNvbnRyb2xOYW1lIC0gTm9tZSBkbyBjb250cm9sZSBubyBmb3JtR3JvdXBcclxuICAgKiBAcmV0dXJucyAtIFZhbG9yXHJcbiAgICovXHJcbiAgcHJvdGVjdGVkIGdldEZvcm1WYWx1ZTxUPihjb250cm9sTmFtZTogc3RyaW5nKTogVCB7XHJcbiAgICByZXR1cm4gRm9ybVNlcnZpY2UuZ2V0Rm9ybVZhbHVlPFQ+KHRoaXMuZm9ybUdyb3VwLCBjb250cm9sTmFtZSk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBWZXJpZmljYSBzZSBvIGNvbXBvbmVudGUgcG9zc3VpIGVycm9cclxuICAgKiBAcGFyYW0gY29udHJvbE5hbWUgLSBOb21lIGRvIGNvbnRyb2xlIG5vIGZvcm1Hcm91cFxyXG4gICAqL1xyXG4gIHByb3RlY3RlZCBoYXNDb250cm9sRXJyb3IoY29udHJvbE5hbWU6IHN0cmluZywgZXJyb3JDb2RlPzogc3RyaW5nKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gRm9ybVNlcnZpY2UuaGFzQ29udHJvbEVycm9yKHRoaXMuZm9ybUdyb3VwLCBjb250cm9sTmFtZSwgZXJyb3JDb2RlKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFNldGEgaW5jb25zaXN0w6puY2lhcyBwYXJhIG8gZm9tdWzDoXJpb1xyXG4gICAqIEBwYXJhbSBub3RpZmljYXRpb24gLSBMaXN0YSBkZSBub3RpZmljYcOnw7Vlc1xyXG4gICAqL1xyXG4gIHByb3RlY3RlZCBpbnZhbGlkRm9ybShub3RpZmljYXRpb24/OiBhbnkpIHtcclxuICAgIEZvcm1TZXJ2aWNlLmludmFsaWRGb3JtKHRoaXMuZm9ybUdyb3VwLCBub3RpZmljYXRpb24pO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogVHJhdGFtZW50byBkZSBpbmNvbnNpc3TDqm5jaWFzIGRvIGZvcm11bMOhcmlvXHJcbiAgICovXHJcbiAgcHJvdGVjdGVkIGludmFsaWRhdGVGb3JtKCkge1xyXG4gICAgdGhpcy5pc0FjY29yZGlvbkV4cGFuZGVkID0gdHJ1ZTtcclxuICAgIHRoaXMuaW52YWxpZEZvcm0oKTtcclxuXHJcbiAgICBpZiAodGhpcy5kYWRvc1RlbGE/Lm1lbnNhZ2VtVmFsaWRhY2FvKSB7XHJcbiAgICAgIHRoaXMubm90aWZpY2F0aW9uU2VydmljZS5kaWFsb2coe1xyXG4gICAgICAgIHR5cGU6ICdhbGVydCcsXHJcbiAgICAgICAgbWVzc2FnZTogJ1ZlcmlmaXF1ZSBvcyBjYW1wb3Mgb2JyaWdhdMOzcmlvcy4nLFxyXG4gICAgICB9KTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIE3DqXRvZG8gcmVzcG9uc8OhdmVsIHBlbG8gY2FycmVnYW1lbnRvIGRhIHRlbGFcclxuICAgKiBAcGFyYW0gb2JzIC0gT2JzZXJ2YWJsZSByZXNwb25zw6F2ZWwgcGVsbyBzYWx2YW1lbnRvIGRvcyBkYWRvc1xyXG4gICAqL1xyXG4gIHB1YmxpYyBsb2FkRGF0YTxUPihvYnM6IE9ic2VydmFibGU8YW55Pikge1xyXG4gICAgb2JzXHJcbiAgICAgIC5waXBlKGxvYWRpbmcoKSlcclxuICAgICAgLnN1YnNjcmliZSgoZGF0YTogYW55KSA9PiB7XHJcbiAgICAgICAgdGhpcy5pc05ld1JlZ2lzdHJ5ID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5yZWdpc3RyeSA9IGRhdGEgYXMgVDtcclxuICAgICAgICB0aGlzLnNldEZvcm1WYWx1ZXModGhpcy5yZWdpc3RyeSk7XHJcbiAgICAgICAgdGhpcy5sb2FkR3JpZHMoKTtcclxuICAgICAgICB0aGlzLnNldFRpdGxlUG9wdXAoKTtcclxuICAgICAgfSk7XHJcbiAgfVxyXG5cclxuICBhc3luYyBsb2FkRGF0YUFzeW5jPFQ+KG9iczogT2JzZXJ2YWJsZTxhbnk+KSB7XHJcbiAgICBhd2FpdCBvYnMucGlwZShsb2FkaW5nKCkpLnRvUHJvbWlzZSgpO1xyXG4gICAgY29uc3QgZGF0YTogYW55ID0gYXdhaXQgb2JzLnRvUHJvbWlzZSgpO1xyXG5cclxuICAgIHRoaXMuaXNOZXdSZWdpc3RyeSA9IGZhbHNlO1xyXG4gICAgdGhpcy5yZWdpc3RyeSA9IGRhdGEgYXMgVDtcclxuICAgIHRoaXMuc2V0Rm9ybVZhbHVlcyh0aGlzLnJlZ2lzdHJ5KTtcclxuICAgIHRoaXMubG9hZEdyaWRzKCk7XHJcbiAgICB0aGlzLnNldFRpdGxlUG9wdXAoKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIE3DqXRvZG8gZGlzcGFyYWRvIHBhcmEgY2FycmVnYW1lbnRvIGRlIGdyaWRzIChEaXNwYXJhZG8gYXDDs3MgbyBsb2FkRGF0YSlcclxuICAgKi9cclxuICBwdWJsaWMgbG9hZEdyaWRzKCkgeyB9XHJcblxyXG4gIC8qKlxyXG4gICAqIE3DqXRvZG8gZGlzcGFyYWRvIHBhcmEgcmV0b3JuYXIgYSBsaXN0YVxyXG4gICAqL1xyXG4gIHByb3RlY3RlZCBuYXZpZ2F0ZUxpc3QoaWQ6IGFueSA9IG51bGwpIHtcclxuICAgIGlmICh0aGlzLnBvcHVwKSB7XHJcbiAgICAgIHRoaXMuZHluYW1pY0RpYWxvZ1JlZi5jbG9zZShpZCk7XHJcbiAgICB9XHJcbiAgICBlbHNlIGlmICh0aGlzLmRhZG9zVGVsYT8ucm90YUxpc3Rhcikge1xyXG4gICAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbdGhpcy5kYWRvc1RlbGEucm90YUxpc3Rhcl0pO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHVibGljIG5nT25EZXN0cm95KCkge1xyXG4gICAgaWYgKHRoaXMuZHluYW1pY0RpYWxvZ1JlZikge1xyXG4gICAgICB0aGlzLmR5bmFtaWNEaWFsb2dSZWYuY2xvc2UoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHB1YmxpYyBuZ09uSW5pdCgpIHtcclxuICAgIHRoaXMuY29uZmlndXJlRm9ybSgpO1xyXG5cclxuICAgIHRoaXMucG9wdXAgPSB0aGlzLmR5bmFtaWNEaWFsb2dDb25maWc/LmRhdGE/LnBvcHVwIHx8IGZhbHNlO1xyXG5cclxuICAgIHRoaXMuYWN0aXZhdGVkUm91dGUucGFyYW1zLnN1YnNjcmliZSgocGFyYW1zOiBhbnkpID0+IHtcclxuICAgICAgaWYgKHBhcmFtc1snaWQnXSkge1xyXG4gICAgICAgIHRoaXMubG9hZEZvcm0ocGFyYW1zWydpZCddKTtcclxuICAgICAgfVxyXG4gICAgICBlbHNlIGlmICh0aGlzLmR5bmFtaWNEaWFsb2dDb25maWc/LmRhdGE/LmlkKSB7XHJcbiAgICAgICAgdGhpcy5sb2FkRm9ybSh0aGlzLmR5bmFtaWNEaWFsb2dDb25maWcuZGF0YS5pZCk7XHJcbiAgICAgIH1cclxuICAgICAgZWxzZSB7XHJcbiAgICAgICAgdGhpcy5pc05ld1JlZ2lzdHJ5ID0gdHJ1ZTtcclxuICAgICAgICB0aGlzLmxvYWRHcmlkcygpO1xyXG4gICAgICAgIHRoaXMuc2V0VGl0bGVQb3B1cCgpO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIE3DqXRvZG8gZGlzcGFyYWRvIHBhcmEgc2FsdmFyIGRhZG9zXHJcbiAgICogQHBhcmFtIG9icyAtIE9ic2VydmFibGUgcmVzcG9uc8OhdmVsIHBlbG8gc2FsdmFtZW50byBkb3MgZGFkb3NcclxuICAgKi9cclxuICBwcm90ZWN0ZWQgc2F2ZURhdGEob2JzOiBPYnNlcnZhYmxlPGFueT4pIHtcclxuICAgIG9ic1xyXG4gICAgICAucGlwZSgoc3JjOiBPYnNlcnZhYmxlPGFueT4pID0+IHtcclxuICAgICAgICB0aGlzLmlzU2F2ZUxvYWRpbmcgPSB0cnVlO1xyXG4gICAgICAgIHJldHVybiBzcmMucGlwZShmaW5hbGl6ZSgoKSA9PiB7XHJcbiAgICAgICAgICB0aGlzLmlzU2F2ZUxvYWRpbmcgPSBmYWxzZTtcclxuICAgICAgICB9KSk7XHJcbiAgICAgIH0pXHJcbiAgICAgIC5zdWJzY3JpYmUoe1xyXG4gICAgICAgIG5leHQ6IChyZXM6IGFueSkgPT4ge1xyXG4gICAgICAgICAgdGhpcy5ub3RpZmljYXRpb25TZXJ2aWNlLnRvYXN0U3VjY2VzcyhyZXMuaXRlbTJbMF0ubWVzc2FnZSk7XHJcbiAgICAgICAgICB0aGlzLm5hdmlnYXRlTGlzdChyZXMuaXRlbTEpO1xyXG4gICAgICAgIH0sXHJcbiAgICAgICAgZXJyb3I6IChlKSA9PiB7XHJcbiAgICAgICAgICB0aGlzLmJhY2tlbmRFcnJvcihlKTtcclxuICAgICAgICB9LFxyXG4gICAgICB9KTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIE3DqXRvZG8gc2UgYXR1YWxpemEgbyB2YWxvciBkZSB1bSBjb21wb25lbnRlIGRvIGZvcm1Hcm91cFxyXG4gICAqIEBwYXJhbSBjb250cm9OYW1lIC0gTm9tZSBkbyBjb250cm9sZVxyXG4gICAqIEBwYXJhbSB2YWx1ZSAtIFZhbG9yIHBhcmEgYXR1YWxpemHDp8Ojb1xyXG4gICAqL1xyXG4gIHByb3RlY3RlZCBzZXRDb250cm9sVmFsdWUoY29udHJvTmFtZTogc3RyaW5nLCB2YWx1ZTogYW55KSB7XHJcbiAgICBGb3JtU2VydmljZS5zZXRDb250cm9sVmFsdWUodGhpcy5mb3JtR3JvdXAsIGNvbnRyb05hbWUsIHZhbHVlKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEF0dWFsaXphIHZhbG9yZXMgZG9zIGNvbXBvbmVudGVzIGRvIGZvcm1Hcm91cFxyXG4gICAqIEBwYXJhbSB2YWx1ZXMgLSBWYWxvcmVzIHBhcmEgYXR1YWxpemHDp8Ojb1xyXG4gICAqL1xyXG4gIHByb3RlY3RlZCBzZXRGb3JtVmFsdWVzKHZhbHVlczogYW55KSB7XHJcbiAgICB0aGlzLm9uU2V0Rm9ybVZhbHVlcyA9IHRydWU7XHJcbiAgICB0aGlzLmZvcm1Hcm91cC5wYXRjaFZhbHVlKHZhbHVlcywgeyBlbWl0RXZlbnQ6IGZhbHNlIH0pO1xyXG4gICAgdGhpcy5vblNldEZvcm1WYWx1ZXMgPSBmYWxzZTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFNldGEgbyB0w610dWxvIGRvIHBvcHVwXHJcbiAgICovXHJcbiAgcHJpdmF0ZSBzZXRUaXRsZVBvcHVwKCkge1xyXG4gICAgaWYgKHRoaXMucG9wdXApIHtcclxuICAgICAgaWYgKHRoaXMuZHluYW1pY0RpYWxvZ0NvbmZpZylcclxuICAgICAgICB0aGlzLmR5bmFtaWNEaWFsb2dDb25maWcuaGVhZGVyID0gdGhpcy5kYWRvc1RlbGE/LnRpdHVsb0Zvcm07XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBBdHVhbGl6YSBvIHZhbGlkYWRvciBkZSB1bSBjb21wb25lbnRlIGRvIGZvcm1Hcm91cFxyXG4gICAqIEBwYXJhbSBjb250cm9OYW1lIC0gTm9tZSBkbyBjb250cm9sZVxyXG4gICAqIEBwYXJhbSB2YWxpZGF0b3JzIC0gUmVncmEgZGUgdmFsaWRhw6fDo29cclxuICAgKi9cclxuICBwcm90ZWN0ZWQgc2V0VmFsaWRhdG9ycyhjb250cm9OYW1lOiBzdHJpbmcsIHZhbGlkYXRvcnM6IFZhbGlkYXRvckZuIHwgVmFsaWRhdG9yRm5bXSB8IG51bGwpIHtcclxuICAgIEZvcm1TZXJ2aWNlLnNldFZhbGlkYXRvcnModGhpcy5mb3JtR3JvdXAsIGNvbnRyb05hbWUsIHZhbGlkYXRvcnMpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogRGlzcGFyYSBvcyBtw6l0b2RvcyBkZSB2YWxpZGHDp8O1ZXMgZG8gZm9ybXVsw6FyaW9cclxuICAgKiBAcmV0dXJucyAtIFRydWUvRmFsc2VcclxuICAgKi9cclxuICBwcm90ZWN0ZWQgdmFsaWRhdGVGb3JtKCk6IGJvb2xlYW4ge1xyXG4gICAgbGV0IHZhbGlkOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gICAgaWYgKHRoaXMuZm9ybUdyb3VwICYmIHRoaXMuZm9ybUdyb3VwLnZhbGlkKSB7XHJcbiAgICAgIHZhbGlkID0gdHJ1ZTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuaW52YWxpZGF0ZUZvcm0oKTtcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gdmFsaWQ7XHJcbiAgfVxyXG59XHJcbiJdfQ==