intelica-library-project 20.0.7 → 20.0.8

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.
@@ -1 +1 @@
1
- {"version":3,"file":"intelica-library-project.mjs","sources":["../../../projects/intelica-library-project/src/lib/components/search/enums/search.enum.ts","../../../projects/intelica-library-project/src/lib/components/search/search.component.ts","../../../projects/intelica-library-project/src/lib/components/search/search.component.html","../../../projects/intelica-library-project/src/lib/components/sorting/model/order.constants.ts","../../../projects/intelica-library-project/src/lib/components/sorting/sorting.component.ts","../../../projects/intelica-library-project/src/lib/components/sorting/sorting.component.html","../../../projects/intelica-library-project/src/lib/pipes/formatCell.pipe.ts","../../../projects/intelica-library-project/src/lib/services/shared.service.ts","../../../projects/intelica-library-project/src/lib/components/table/column.component.ts","../../../projects/intelica-library-project/src/lib/components/table/table.component.ts","../../../projects/intelica-library-project/src/lib/components/table/table.component.html","../../../projects/intelica-library-project/src/lib/components/table-fetch/table-fetch.component.ts","../../../projects/intelica-library-project/src/lib/components/table-fetch/table-fetch.component.html","../../../projects/intelica-library-project/src/lib/components/skeleton-table/skeleton-table.component.ts","../../../projects/intelica-library-project/src/lib/components/skeleton-table/skeleton-table.component.html","../../../projects/intelica-library-project/src/lib/components/echart/echart.component.ts","../../../projects/intelica-library-project/src/lib/components/echart/echart.component.html","../../../projects/intelica-library-project/src/lib/components/bread-crumb/bread-crumb.component.ts","../../../projects/intelica-library-project/src/lib/components/bread-crumb/bread-crumb.component.html","../../../projects/intelica-library-project/src/lib/components/title/title.component.ts","../../../projects/intelica-library-project/src/lib/components/title/title.component.html","../../../projects/intelica-library-project/src/lib/services/shared.ts","../../../projects/intelica-library-project/src/lib/constants/quicksight.constants.ts","../../../projects/intelica-library-project/src/lib/functions/quicksight-event.util.ts","../../../projects/intelica-library-project/src/lib/components/dashboard-qs/dashboard-qs.component.ts","../../../projects/intelica-library-project/src/lib/components/dashboard-qs/dashboard-qs.component.html","../../../projects/intelica-library-project/src/lib/components/dashboard-qs-interactive/dashboard-qs-interactive.component.ts","../../../projects/intelica-library-project/src/lib/components/dashboard-qs-interactive/dashboard-qs-interactive.component.html","../../../projects/intelica-library-project/src/lib/components/add-favorites/add-favorites.service.ts","../../../projects/intelica-library-project/src/lib/components/add-favorites/add-favorites.component.ts","../../../projects/intelica-library-project/src/lib/components/add-favorites/add-favorites.component.html","../../../projects/intelica-library-project/src/lib/services/pageElement.service.ts","../../../projects/intelica-library-project/src/lib/services/element.service.ts","../../../projects/intelica-library-project/src/lib/functions/echart.util.ts","../../../projects/intelica-library-project/src/lib/pipes/amount.pipe.ts","../../../projects/intelica-library-project/src/lib/services/echart.service.ts","../../../projects/intelica-library-project/src/lib/services/request-cache.service.ts","../../../projects/intelica-library-project/src/lib/pipes/truncate.pipe.ts","../../../projects/intelica-library-project/src/lib/model/pageInformation.model.ts","../../../projects/intelica-library-project/src/public-api.ts","../../../projects/intelica-library-project/src/intelica-library-project.ts"],"sourcesContent":["export enum SearchInputEnum {\n\tOperatorId = \"operatorId\",\n\tFieldId = \"fieldId\",\n\tSearchText = \"searchText\",\n}\n","import { Component, EventEmitter, forwardRef, inject, Input, OnDestroy, OnInit, Output } from \"@angular/core\";\nimport { FormsModule, ReactiveFormsModule, FormBuilder, FormGroup, NG_VALUE_ACCESSOR } from \"@angular/forms\";\nimport { RadioButtonModule } from \"primeng/radiobutton\";\nimport { Popover } from \"primeng/popover\";\nimport { InputText } from \"primeng/inputtext\";\nimport { CommonModule } from \"@angular/common\";\nimport { Subscription } from \"rxjs\";\nimport { SearchInputModel } from \"./model/search.model\";\nimport { SearchInputEnum } from \"./enums/search.enum\";\nimport { TooltipModule } from \"primeng/tooltip\";\nimport { TermPipe } from \"intelica-library-base\";\nimport { GlobalTermService } from \"intelica-library-base\";\n\n@Component({\n\tselector: \"intelica-search\",\n\timports: [FormsModule, ReactiveFormsModule, RadioButtonModule, Popover, InputText, CommonModule, TooltipModule, TermPipe],\n\ttemplateUrl: \"./search.component.html\",\n\tproviders: [\n\t\t{\n\t\t\tprovide: NG_VALUE_ACCESSOR,\n\t\t\tuseExisting: forwardRef(() => SearchComponent),\n\t\t},\n\t],\n\t// styleUrl: \"./search.component.css\",\n})\nexport class SearchComponent implements OnDestroy, OnInit {\n\treadonly GlobalTermService = inject(GlobalTermService);\n\t/**\n\t * Indica el componente del que proviene.\n\t * @type {string}\n\t */\n\t@Input() ComponentId: string = \"\";\n\t@Input() ShowTooltip: boolean = false;\n\n\t/**\n\t * Opciones para campos de búsqueda.\n\t * @type {{ id: number; value: string }[]}\n\t */\n\t@Input() SearchFieldOptions!: { id: number; value: string }[];\n\n\t/**\n\t * Indica si realizar la búsqueda al soltar una tecla.\n\t * @type {boolean}\n\t */\n\t@Input() SearchOnKeyup!: boolean;\n\n\t/**\n\t * @deprecated No debe ser utilizado. Es sólo para uso interno y no para módulos.\n\t * @type {boolean}\n\t * @default false\n\t */\n\t@Input() SimpleSearchInput: boolean = false;\n\n\t/**\n\t * Placeholder para el componente de búsqueda.\n\t * @type {string}\n\t */\n\t@Input() Placeholder: string = \"\";\n\n\t/**\n\t * Evento emitido al realizar una búsqueda.\n\t * @type {EventEmitter<{ operatorId: number; operatorText: string, fieldId: number, fieldText: string, searchText: string }>}\n\t */\n\t@Output(\"OnSearch\") OnSearchEvent = new EventEmitter<SearchInputModel>();\n\n\tprivate readonly FormBuilder = inject(FormBuilder);\n\n\t// Option!: string;\n\t// Placeholder!: string;\n\n\t/**\n\t * Indica si el dropdown está abierto\n\t * @type {boolean}\n\t * @default false\n\t */\n\tIsDropdownOpen: boolean = false;\n\n\t/**\n\t * Formulario para manejar los parámetros de búsqueda\n\t * @type {FormGroup}\n\t */\n\tSearchForm!: FormGroup;\n\n\t/**\n\t * Suscripción a los valores del formulario.\n\t * @type {Subscription}\n\t */\n\tFormValuesSubscription!: Subscription;\n\n\t/**\n\t * Opciones para operadores de búsqueda.\n\t * @type {{ id: number; value: string }[]}\n\t */\n\tSearchOperatorOptions!: { id: number; value: string }[];\n\n\t/**\n\t * Función llamada cuando cambia el valor del campo de búsqueda.\n\t * @type {() => void}\n\t */\n\tOnChange: (value: SearchInputModel) => void = () => {};\n\n\t/**\n\t * Función llamada cuando el componente de búsqueda es tocado.\n\t * @type {() => void}\n\t */\n\tOnTouched: () => void = () => {};\n\n\tconstructor() {}\n\n\tngOnInit(): void {\n\t\tthis.SearchForm = this.FormBuilder.group({\n\t\t\toperatorId: 0,\n\t\t\tfieldId: 0,\n\t\t\tsearchText: \"\",\n\t\t});\n\n\t\tthis.FormValuesSubscription = this.SearchForm.valueChanges.subscribe(value => {\n\t\t\tthis.OnChange(value);\n\t\t});\n\n\t\t//loadTerms\n\t\tif (this.Placeholder === \"\") this.Placeholder = \"SearchPlaceholder\";\n\t\tthis.SearchOperatorOptions ??= this.GetSearchOperatorOptions();\n\t\tthis.SearchFieldOptions ??= this.GetSearchFieldOptions();\n\n\t\tthis.InitializeForm();\n\t}\n\n\tngOnDestroy(): void {\n\t\tthis.FormValuesSubscription.unsubscribe();\n\t}\n\n\tInitializeForm() {\n\t\tthis.SearchForm.setValue({\n\t\t\toperatorId: this.SearchOperatorOptions[0].id,\n\t\t\tfieldId: this.SearchFieldOptions.length > 0 ? this.SearchFieldOptions[0].id : 0,\n\t\t\tsearchText: \"\",\n\t\t});\n\t\tthis.OnSearch();\n\t}\n\n\tDropDownChange(isOpen: boolean) {\n\t\tthis.IsDropdownOpen = isOpen;\n\t}\n\n\tOnSearchEnter(): void {\n\t\tif (!this.SearchOnKeyup) this.OnSearch();\n\t}\n\n\tOnSearchKeyup() {\n\t\tif (this.SearchOnKeyup) this.OnSearch();\n\t}\n\n\tOnSearch(): void {\n\t\tconst value = this.SearchForm.value as SearchInputModel;\n\t\tvalue.operatorText = this.SearchOperatorOptions.find(o => o.id === value.operatorId)?.value || \"\";\n\t\tvalue.fieldText = this.SearchFieldOptions.find(f => f.id === value.fieldId)?.value || \"\";\n\t\tthis.OnChange(value);\n\t\tthis.OnTouched();\n\t\tthis.OnSearchEvent.emit(value);\n\t}\n\n\tClearSearchText(emitEvent: boolean = true) {\n\t\tthis.SearchForm.get(SearchInputEnum.SearchText)?.setValue(\"\");\n\t\tif (emitEvent) {\n\t\t\tthis.OnSearch();\n\t\t}\n\t}\n\n\tget HasSearchText(): boolean {\n\t\tconst searchText = this.SearchForm.get(SearchInputEnum.SearchText)?.value;\n\t\treturn searchText && searchText.length > 0;\n\t}\n\n\tGetSelectedOperatorValue(): string {\n\t\tconst selectedId = this.SearchForm.get(SearchInputEnum.OperatorId)?.value;\n\t\tconst selectedItem = this.SearchOperatorOptions?.find(item => item.id === selectedId);\n\t\treturn selectedItem ? selectedItem.value : \"\";\n\t}\n\n\tGetSelectedFieldValue(): string {\n\t\tconst selectedId = this.SearchForm.get(SearchInputEnum.FieldId)?.value;\n\t\tconst selectedItem = this.SearchFieldOptions?.find(item => item.id === selectedId);\n\t\treturn selectedItem ? selectedItem.value : \"\";\n\t}\n\n\tGetSelectedValues(): string {\n\t\treturn `${this.GetSelectedOperatorValue()}, ${this.GetSelectedFieldValue()}`;\n\t}\n\n\tSetSearchTextValue(text: string) {\n\t\tthis.SearchForm.get(SearchInputEnum.SearchText)?.setValue(text);\n\t}\n\n\tSetOperatorValue(value: number) {\n\t\tthis.SearchForm.get(SearchInputEnum.OperatorId)?.setValue(value ?? 0);\n\t}\n\n\tSetFieldValue(value: number) {\n\t\tthis.SearchForm.get(SearchInputEnum.FieldId)?.setValue(value ?? 0);\n\t}\n\n\tGetSearchOperatorOptions() {\n\t\treturn [\n\t\t\t{ id: 0, value: \"Contains\" },\n\t\t\t{ id: 1, value: \"Exact\" },\n\t\t\t{ id: 2, value: \"Begin\" },\n\t\t\t{ id: 3, value: \"Ends\" },\n\t\t];\n\t}\n\n\tGetSearchFieldOptions() {\n\t\treturn [\n\t\t\t{ id: 0, value: \"code\" },\n\t\t\t{ id: 1, value: \"name\" },\n\t\t];\n\t}\n}\n","<form [formGroup]=\"SearchForm\">\n\t<div class=\"prSearchBar\">\n\t\t<div class=\"prSearchBar__dropdown\" (click)=\"op.toggle($event)\" *ngIf=\"!SimpleSearchInput\">\n\t\t\t<div\n\t\t\t\tclass=\"prSearchBar__dropdown--label\"\n\t\t\t\t[pTooltip]=\"ShowTooltip ? (GetSelectedOperatorValue() | term : GlobalTermService.languageCode) + ', ' + (GetSelectedFieldValue() | term : GlobalTermService.languageCode) : ''\"\n\t\t\t\ttooltipPosition=\"top\"\n\t\t\t>\n\t\t\t\t{{ GetSelectedFieldValue() | term : GlobalTermService.languageCode }}\n\t\t\t</div>\n\t\t\t<div class=\"prSearchBar__dropdown--icon\">\n\t\t\t\t<i [ngClass]=\"IsDropdownOpen ? 'icon-arrow-up' : 'icon-arrow-down'\"></i>\n\t\t\t</div>\n\t\t</div>\n\t\t<p-popover #op (onShow)=\"DropDownChange(true)\" (onHide)=\"DropDownChange(false)\" class=\"prSearchBar__popover\">\n\t\t\t<div class=\"searchDropDown\">\n\t\t\t\t<div class=\"searchDropDown__group\">\n\t\t\t\t\t<div class=\"searchDropDown__title\">{{ \"Selectoperator\" | term : GlobalTermService.languageCode }}</div>\n\t\t\t\t\t<div class=\"searchDropDown__listOption\">\n\t\t\t\t\t\t@for ( option of SearchOperatorOptions ; track option.id; let index = $index){\n\t\t\t\t\t\t<div class=\"searchDropDown__option\">\n\t\t\t\t\t\t\t<p-radiobutton [inputId]=\"ComponentId + option.id\" class=\"prRadioButton\" [value]=\"option.id\" formControlName=\"operatorId\" (change)=\"OnSearchKeyup()\" />\n\t\t\t\t\t\t\t<label [for]=\"ComponentId + option.id\" class=\"prRadioButton--label\">{{ option.value | term : GlobalTermService.languageCode }}</label>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t\t}\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t\t<hr />\n\t\t\t\t<div class=\"searchDropDown__group\">\n\t\t\t\t\t<div class=\"searchDropDown__title\">{{ \"Selectfield\" | term : GlobalTermService.languageCode }}</div>\n\t\t\t\t\t@for ( option of SearchFieldOptions ; track option.id; let index = $index){\n\t\t\t\t\t<div class=\"searchDropDown__option\">\n\t\t\t\t\t\t<p-radiobutton [inputId]=\"ComponentId + 'fieldId_' + option.id\" class=\"prRadioButton\" [value]=\"option.id\" formControlName=\"fieldId\" (change)=\"OnSearchKeyup()\" />\n\t\t\t\t\t\t<label [for]=\"ComponentId + 'fieldId_' + option.id\" class=\"prRadioButton--label\">{{ option.value | term : GlobalTermService.languageCode }}</label>\n\t\t\t\t\t</div>\n\t\t\t\t\t}\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</p-popover>\n\t\t<div class=\"prSearchBar__content\">\n\t\t\t<div class=\"prSearchBar__btn\">\n\t\t\t\t<button pButton type=\"button\" class=\"prSearchBar__btn-action\" (click)=\"ClearSearchText()\" *ngIf=\"HasSearchText\">\n\t\t\t\t\t<i class=\"icon-times\"></i>\n\t\t\t\t</button>\n\t\t\t\t<button pButton type=\"button\" class=\"prSearchBar__btn-action\" (click)=\"OnSearch()\">\n\t\t\t\t\t<i class=\"icon-search\"></i>\n\t\t\t\t</button>\n\t\t\t</div>\n\t\t\t<input\n\t\t\t\tpInputText\n\t\t\t\ttype=\"text\"\n\t\t\t\tclass=\"prSearchBar__input\"\n\t\t\t\tformControlName=\"searchText\"\n\t\t\t\t[placeholder]=\"Placeholder | term : GlobalTermService.languageCode\"\n\t\t\t\t(keyup.enter)=\"OnSearchEnter()\"\n\t\t\t\t(keyup)=\"OnSearchKeyup()\"\n\t\t\t/>\n\t\t</div>\n\t</div>\n</form>\n","export class OrderConstants {\n\t//DESCRIPTION\n\tpublic static ORDER_BY_DESC = \"desc\";\n\tpublic static ORDER_BY_ASC = \"asc\";\n\t//VALUES\n\tpublic static ORDER_BY_DESC_VALUE = \"1\";\n\tpublic static ORDER_BY_ASC_VALUE = \"0\";\n}\n","import { Component, EventEmitter, Input, OnChanges, OnInit, Output } from \"@angular/core\";\nimport { CommonModule } from \"@angular/common\";\nimport { FormsModule } from \"@angular/forms\";\nimport { RadioButtonModule } from \"primeng/radiobutton\";\nimport { ButtonModule } from \"primeng/button\";\nimport { Subscription } from \"rxjs\";\nimport { CascadeFilterModel } from \"./model/cascade-filter\";\nimport { OrderConstants } from \"./model/order.constants\";\n\n@Component({\n\tselector: \"intelica-sorting\",\n\timports: [CommonModule, FormsModule, RadioButtonModule, ButtonModule],\n\ttemplateUrl: \"./sorting.component.html\",\n})\nexport class SortingComponent implements OnInit, OnChanges {\n\t/**\n\t * Suscripción a un observable.\n\t * @type {Subscription}\n\t */\n\tsubscription: Subscription = new Subscription();\n\n\t/**\n\t * Términos utilizados en el componente.\n\t * @type {any}\n\t */\n\tterms: any;\n\n\t/**\n\t * Lista de modelos de filtro en cascada.\n\t * @type {CascadeFilterModel[]}\n\t * @default []\n\t */\n\tLCascadefilter: CascadeFilterModel[] = [];\n\n\t/**\n\t * Número máximo de ordenamiento.\n\t * @type {number}\n\t * @default 4\n\t */\n\tNumMaxSorting = 4;\n\n\t/**\n\t * Lista de objetos de ordenamiento.\n\t * @type {any}\n\t * @default []\n\t */\n\t@Input() Sorters: any = [];\n\n\t/**\n\t * Objeto que indica el ordenamiento actual.\n\t * @type {any}\n\t */\n\t@Input() OrderBy: any;\n\n\t/**\n\t * Objeto que indica el ordenamiento predeterminado.\n\t * @type {any}\n\t * @default {}\n\t */\n\t@Input() OrderByDefault: any = {};\n\n\t/**\n\t * Indica si se debe realizar un solo renderizado.\n\t * @type {boolean}\n\t * @default false\n\t */\n\t@Input() OneRender: boolean = false;\n\n\t/**\n\t * Evento emitido al realizar un retorno de datos.\n\t * @type {EventEmitter<any>}\n\t */\n\t@Output() ReturnSorting: EventEmitter<any> = new EventEmitter();\n\n\t/**\n\t * Evento emitido al alertar sobre una ordenación.\n\t * @type {EventEmitter<any>}\n\t */\n\t@Output() AlertOrder: EventEmitter<any> = new EventEmitter();\n\n\t/**\n\t * Objeto que contiene constantes de ordenación.\n\t * @type {OrderConstants}\n\t */\n\tOrder = OrderConstants;\n\n\tconstructor() {}\n\n\tngOnDestroy(): void {\n\t\tthis.subscription.unsubscribe();\n\t}\n\n\tngOnInit(): void {\n\t\t// this.subscription = this.sharedService.isLoadingPageInfo.subscribe({\n\t\t// \tnext: isLoadingPageInfo => {\n\t\t// \t\tif (!isLoadingPageInfo) this.terms = this.globals.languageTerms;\n\t\t// \t},\n\t\t// });\n\t}\n\n\tngOnChanges(changes: any): void {\n\t\tif (changes.OrderBy && this.Sorters.length > 0) this.GetInfoSorting();\n\t\tif (changes.Sorters && this.Sorters.length > 0) this.GetInfoSorting();\n\t\t// this.terms = this.globals.languageTerms;\n\t}\n\n\t/**\n\t * Obtiene información sobre la ordenación y la asigna a la lista de modelos de filtro en cascada.\n\t * - Si no hay información de ordenación (`orderBy`), la función sale.\n\t * - Crea una lista de modelos de filtro en cascada con una longitud determinada.\n\t * - Filtra las propiedades de ordenación que coinciden con los campos existentes.\n\t * - Asigna las propiedades de ordenación a los modelos de filtro en cascada.\n\t */\n\tGetInfoSorting(): void {\n\t\t// Si no hay información de ordenación (orderBy), la función sale temprano.\n\t\tif (!this.OrderBy) return;\n\n\t\t// Crea una lista de modelos de filtro en cascada con una longitud determinada.\n\t\tthis.LCascadefilter = this.PushCascade(this.Sorters.length);\n\n\t\t// Filtra las propiedades de ordenación que coinciden con los campos existentes.\n\t\tthis.OrderBy = Object.fromEntries(Object.entries(this.OrderBy).filter(([key]) => this.Sorters.find((y: any) => y.field === key)));\n\n\t\t// Obtiene las columnas y el orden de la ordenación.\n\t\tconst columns = Object.keys(this.OrderBy).map(x => x);\n\t\tconst order = columns.map(x => this.OrderBy[x]);\n\n\t\t// Asigna las propiedades de ordenación a los modelos de filtro en cascada.\n\t\tcolumns.forEach((f: any, i) => {\n\t\t\tthis.LCascadefilter[i].id = f;\n\t\t\tthis.LCascadefilter[i].order = order[i];\n\t\t});\n\t}\n\n\t/**\n\t * Función que genera una lista de modelos de filtro en cascada con una cantidad determinada.\n\t *\n\t * @param {number} cant - Cantidad de modelos de filtro en cascada a generar.\n\t * @returns {Array} - Lista de modelos de filtro en cascada.\n\t */\n\tPushCascade(cant: number): Array<any> {\n\t\tlet Lcascadefilter = [];\n\t\tfor (let i = 0; i < cant; i++) {\n\t\t\tLcascadefilter.push({ id: \"0\", index: i, order: OrderConstants.ORDER_BY_ASC });\n\t\t}\n\t\treturn Lcascadefilter;\n\t}\n\n\t/**\n\t * Verifica y procesa la ordenación en cascada.\n\t * - Si algún modelo de filtro en cascada tiene un ID diferente de '0', se realiza la ordenación.\n\t * - De lo contrario, se emite una alerta indicando que no hay columna seleccionada para ordenar.\n\t */\n\tCheckCascadeOrder(): void {\n\t\tthis.OrderBy = {};\n\t\tif (this.LCascadefilter.some(s => s.id !== \"0\")) {\n\t\t\tthis.CascadeOrder();\n\t\t} else {\n\t\t\treturn this.AlertOrder.emit({ ValidMessage: \"Select at least one column to sort\" }); //this.sharedService.getTermTextByCode(\"MSG_NO_COLUMN_ORDER\") });\n\t\t}\n\t}\n\n\t/**\n\t * Procesa la ordenación en cascada y emite el resultado.\n\t */\n\tCascadeOrder(): void {\n\t\tthis.LCascadefilter.forEach(element => {\n\t\t\tif (element.id !== \"0\") {\n\t\t\t\tthis.OrderBy[element.id] = element.order;\n\t\t\t}\n\t\t});\n\t\tthis.ReturnSorting.emit(this.OrderBy);\n\t}\n\n\t/**\n\t * Restaura la ordenación en cascada a la configuración predeterminada y obtiene la información de ordenación.\n\t */\n\tClearCascadeOrder(): void {\n\t\tthis.OrderBy = { ...this.OrderByDefault };\n\t\tthis.GetInfoSorting();\n\t}\n\n\t/**\n\t * Verifica si un modelo de filtro en cascada está deshabilitado basándose en su ID.\n\t *\n\t * @param {string} id - ID del modelo de filtro en cascada.\n\t * @param {number} index - Índice del modelo de filtro en cascada.\n\t * @returns {boolean} - Indica si el modelo de filtro en cascada está deshabilitado.\n\t */\n\tCheckCascadeDisabled(id: string, index: number): boolean {\n\t\treturn this.LCascadefilter.some(e => e.id == id);\n\t}\n}\n","<ng-container>\n\t<div class=\"sortingAnalytics\">\n\t\t<div class=\"sortingCtr\">\n\t\t\t<div></div>\n\t\t\t<div class=\"triangle-top\"></div>\n\t\t\t<div class=\"triangle-down\"></div>\n\t\t\t<ng-container *ngIf=\"OneRender; else multiple_render\">\n\t\t\t\t<ng-container *ngTemplateOutlet=\"one_render; context: { Sorters: Sorters }\"></ng-container>\n\t\t\t</ng-container>\n\t\t</div>\n\n\t\t<div class=\"sortingBtnCtr\">\n\t\t\t<!-- <span>{{'BTN_APPLY_SORT' | term : terms}}</span> -->\n\t\t\t<p-button pRipple class=\"prButton applyAnalytics\" label=\"{{ 'Apply sort' }}\" (onClick)=\"CheckCascadeOrder()\" />\n\t\t\t<!-- <span>{{'BTN_CLEAR_SORT' | term : terms}}</span> -->\n\t\t\t<p-button pRipple class=\"prButton cleanAnalytics\" label=\"{{ 'Clear sort' }}\" severity=\"secondary\" (onClick)=\"ClearCascadeOrder()\" />\n\t\t</div>\n\t</div>\n</ng-container>\n\n<ng-template #one_render let-Sorters=\"Sorters\">\n\t<ng-container *ngFor=\"let row of Sorters; let i = index\">\n\t\t<ng-container *ngIf=\"LCascadefilter.length > 0 && i <= NumMaxSorting\">\n\t\t\t<ng-container *ngIf=\"OneRender && i == 0\">\n\t\t\t\t<div class=\"idx-select\" *ngIf=\"i < LCascadefilter.length\">\n\t\t\t\t\t<div class=\"formRowInputNumber\">\n\t\t\t\t\t\t<span>{{ i + 1 }}</span>\n\t\t\t\t\t</div>\n\t\t\t\t\t<select class=\"grSelect\" [(ngModel)]=\"LCascadefilter[i].id\">\n\t\t\t\t\t\t<option *ngIf=\"i === 0\" [value]=\"0\">\n\t\t\t\t\t\t\t--\n\t\t\t\t\t\t\t<!-- <span>{{ \"LBL_SORT_BY\" | term : terms }}</span> -->\n\t\t\t\t\t\t\t<span>Sort By</span>\n\t\t\t\t\t\t\t--\n\t\t\t\t\t\t</option>\n\t\t\t\t\t\t<option *ngFor=\"let sort of Sorters\" [ngValue]=\"sort.field\" [disabled]=\"CheckCascadeDisabled(sort.field, i)\">\n\t\t\t\t\t\t\t{{ sort.headerText }}\n\t\t\t\t\t\t</option>\n\t\t\t\t\t</select>\n\t\t\t\t</div>\n\n\t\t\t\t<div class=\"form-check\" *ngIf=\"i < LCascadefilter.length\">\n\t\t\t\t\t<p-radiobutton class=\"prRadioButton\" name=\"optSort{{ i }}\" [value]=\"Order.ORDER_BY_ASC\" [inputId]=\"'test{{ i + i + 1 }}'\" [(ngModel)]=\"LCascadefilter[i].order\" tabindex=\"0\" />\n\t\t\t\t\t<label for=\"test{{ i + i + 1 }}\"></label>\n\t\t\t\t</div>\n\n\t\t\t\t<div class=\"form-check\" *ngIf=\"i < LCascadefilter.length\">\n\t\t\t\t\t<p-radiobutton class=\"prRadioButton\" name=\"optSort{{ i }}\" [value]=\"Order.ORDER_BY_DESC\" [inputId]=\"'test{{ i + i + 2 }}'\" [(ngModel)]=\"LCascadefilter[i].order\" tabindex=\"0\" />\n\t\t\t\t\t<label for=\"test{{ i + i + 2 }}\"></label>\n\t\t\t\t</div>\n\t\t\t</ng-container>\n\t\t</ng-container>\n\t</ng-container>\n</ng-template>\n\n<ng-template #multiple_render>\n\t<ng-container *ngFor=\"let row of Sorters; let i = index\">\n\t\t<ng-container *ngIf=\"LCascadefilter.length > 0 && i <= NumMaxSorting\">\n\t\t\t<div class=\"idx-select\" *ngIf=\"i < LCascadefilter.length\">\n\t\t\t\t<div class=\"formRowInputNumber\">\n\t\t\t\t\t<span>{{ i + 1 }}</span>\n\t\t\t\t</div>\n\t\t\t\t<select class=\"grSelect\" [(ngModel)]=\"LCascadefilter[i].id\">\n\t\t\t\t\t<option *ngIf=\"i === 0\" [value]=\"0\">\n\t\t\t\t\t\t--\n\t\t\t\t\t\t<!-- <span>{{ \"LBL_SORT_BY\" | term : terms }}</span> -->\n\t\t\t\t\t\t<span>Sort By</span>\n\t\t\t\t\t\t--\n\t\t\t\t\t</option>\n\t\t\t\t\t<option *ngIf=\"i > 0\" [value]=\"0\">\n\t\t\t\t\t\t--\n\t\t\t\t\t\t<!-- <span>{{ \"LBL_SORT_THEN\" | term : terms }}</span> -->\n\t\t\t\t\t\t<span>Then by</span>\n\t\t\t\t\t\t--\n\t\t\t\t\t</option>\n\t\t\t\t\t<option *ngFor=\"let sort of Sorters\" [ngValue]=\"sort.field\" [disabled]=\"CheckCascadeDisabled(sort.field, i)\">\n\t\t\t\t\t\t{{ sort.headerText }}\n\t\t\t\t\t</option>\n\t\t\t\t</select>\n\t\t\t</div>\n\n\t\t\t<div class=\"form-check\" *ngIf=\"i < LCascadefilter.length\">\n\t\t\t\t<p-radiobutton class=\"prRadioButton\" name=\"optSort{{ i }}\" [value]=\"Order.ORDER_BY_ASC\" [inputId]=\"'test{{ i + i + 1 }}'\" [(ngModel)]=\"LCascadefilter[i].order\" tabindex=\"0\" />\n\t\t\t\t<label for=\"test{{ i + i + 1 }}\"></label>\n\t\t\t</div>\n\n\t\t\t<div class=\"form-check\" *ngIf=\"i < LCascadefilter.length\">\n\t\t\t\t<p-radiobutton class=\"prRadioButton\" name=\"optSort{{ i }}\" [value]=\"Order.ORDER_BY_DESC\" [inputId]=\"'test{{ i + i + 2 }}'\" [(ngModel)]=\"LCascadefilter[i].order\" tabindex=\"0\" />\n\t\t\t\t<label for=\"test{{ i + i + 2 }}\"></label>\n\t\t\t</div>\n\t\t</ng-container>\n\t</ng-container>\n</ng-template>\n","import { inject, Pipe, PipeTransform } from \"@angular/core\";\nimport { DateMode } from \"intelica-library-base\";\nimport { DatePipe } from \"@angular/common\";\n\n@Pipe({\n\tname: \"formatCell\",\n\tstandalone: true,\n})\nexport class FormatCellPipe implements PipeTransform {\n\tprivate readonly datePipe = inject(DatePipe);\n\n\ttransform(value: any, type: \"string\" | \"date\" | \"date2\" | \"date3\" | \"time\" | \"decimal2\" | \"decimal4\" | \"tarifa\"): string {\n\t\tif (value == null) return \"\";\n\n\t\tswitch (type) {\n\t\t\tcase \"date\":\n\t\t\t\treturn this.formatDateValue(value, \"day\");\n\t\t\tcase \"date2\":\n\t\t\t\treturn this.formatDateValue(value, \"month\");\n\t\t\tcase \"date3\":\n\t\t\t\treturn this.formatDateValue(value, \"year\");\n\t\t\tcase \"time\":\n\t\t\t\treturn this.formatTime(value);\n\t\t\tcase \"decimal2\":\n\t\t\t\treturn this.formatDecimal(value, 2);\n\t\t\tcase \"decimal4\":\n\t\t\t\treturn this.formatDecimal(value, 4);\n\t\t\tcase \"tarifa\":\n\t\t\t\treturn this.formatTarifa(value);\n\t\t\tdefault:\n\t\t\t\treturn value;\n\t\t}\n\t}\n\n\tgetDateFormat(mode: DateMode): string {\n\t\tswitch (mode) {\n\t\t\tcase \"month\":\n\t\t\t\treturn \"M/yy\";\n\t\t\tcase \"year\":\n\t\t\t\treturn \"yy\";\n\t\t\tdefault:\n\t\t\t\treturn \"d/M/yy\";\n\t\t}\n\t}\n\n\tformatDateValue(value: any, mode: string): string {\n\t\tconst pattern = this.getDateFormat(mode as DateMode);\n\n\t\tif (Array.isArray(value) && value.length === 2) {\n\t\t\treturn `${this.datePipe.transform(value[0], pattern)} - ${this.datePipe.transform(value[1], pattern)}`;\n\t\t}\n\n\t\tif (value) {\n\t\t\treturn this.datePipe.transform(value, pattern) || \"\";\n\t\t}\n\n\t\treturn \"\";\n\t}\n\n\tprivate formatTime(value: any): string {\n\t\tconst date = new Date(value);\n\t\tif (isNaN(date.getTime())) return \"\";\n\n\t\tlet hours = date.getHours();\n\t\tconst minutes = date.getMinutes();\n\t\tconst seconds = date.getSeconds();\n\t\tconst ampm = hours >= 12 ? \"PM\" : \"AM\";\n\n\t\thours = hours % 12;\n\t\thours = hours ? hours : 12;\n\t\tconst hh = hours.toString().padStart(2, \"0\");\n\t\tconst mm = minutes.toString().padStart(2, \"0\");\n\t\tconst ss = seconds.toString().padStart(2, \"0\");\n\n\t\treturn `${hh}:${mm}:${ss} ${ampm}`;\n\t}\n\n\tprivate formatDecimal(value: any, digits: number): string {\n\t\tconst num = parseFloat(value);\n\t\tif (isNaN(num)) return \"\";\n\t\treturn num.toFixed(digits);\n\t}\n\n\tprivate formatTarifa(value: any): string {\n\t\tconst num = parseFloat(value);\n\t\tif (isNaN(num)) return \"\";\n\n\t\tconst absNum = Math.abs(num);\n\t\tif (absNum >= 0.000001 && absNum <= 0.1) {\n\t\t\t// Mostrar hasta 6 decimales\n\t\t\treturn absNum.toFixed(6);\n\t\t} else if (absNum < 0.000001) {\n\t\t\treturn num.toString();\n\t\t} else {\n\t\t\treturn num.toString();\n\t\t}\n\t}\n}\n","import { Injectable } from \"@angular/core\";\nimport { BehaviorSubject, Observable, Subject } from \"rxjs\";\nimport { Location } from \"@angular/common\";\nimport { FormatDateConstants } from \"intelica-library-base\";\nimport moment from \"moment\";\nimport * as _ from \"lodash\";\n@Injectable({\n\tprovidedIn: \"root\",\n})\nexport class SharedService {\n\tpublic configObservable = new Subject<boolean>();\n\tisLoading = new BehaviorSubject(false);\n\tisLoadingHeader = new BehaviorSubject(true);\n\tisExpandedContent = new BehaviorSubject(false);\n\tisLoadingPageInfo = new BehaviorSubject(true);\n\tnotifyProfileType = new Subject<string>();\n\tcharges = 0;\n\tshowHelper = new BehaviorSubject(false);\n\theaderPathName = new BehaviorSubject<string[]>([]);\n\tpageId: number | undefined = 0;\n\topenActionMenu$: Subject<boolean> = new Subject<boolean>();\n\tmonths = {\n\t\ten: [\"January\", \"February\", \"March\", \"April\", \"May\", \"June\", \"July\", \"August\", \"September\", \"October\", \"November\", \"December\"],\n\t\tes: [\"Enero\", \"Febrero\", \"Marzo\", \"Abril\", \"Mayo\", \"Junio\", \"Julio\", \"Agosto\", \"Septiembre\", \"Octubre\", \"Noviembre\", \"Diciembre\"],\n\t};\n\tsubtitleDescriptionNotification$!: Observable<string>;\n\tconstructor(private location: Location) {}\n\t///METODOS GLOBALS.\n\tIsNumberRate(n: any) {\n\t\treturn !isNaN(parseFloat(n)) && !isNaN(n - 0);\n\t}\n\tRemovePercentage(string: string) {\n\t\tif (string.length > 0) {\n\t\t\tif (string.startsWith(\"%\")) string = string.substring(1);\n\t\t\tlet last = string.length - 1;\n\t\t\tif (string.endsWith(\"%\")) string = string.substring(0, last);\n\t\t}\n\t\treturn string;\n\t}\n\tGetTotalAmountByCrncy(col: string, listGeneral: any): number {\n\t\treturn listGeneral.reduce((a: any, b: any) => a + (b[col] || 0), 0);\n\t}\n\tGetTotalAverageByColumn(col: string, listGeneral: any): number {\n\t\treturn listGeneral.reduce((a: any, b: any) => a + (b[col] || 0), 0) / (listGeneral.length || 1);\n\t}\n\tGetTotalByGroup(col: string, listGeneral: any[], groupBy: string[] | undefined): any[] {\n\t\tif (!groupBy?.length) return [listGeneral.reduce((a: any, b: any) => a + (b[col] || 0), 0)];\n\n\t\tlet result: { [key: string]: any } = listGeneral.reduce((acc: { [key: string]: any }, item: any) => {\n\t\t\tconst groupKey = groupBy.map(prop => item[prop]).join(\"||\");\n\t\t\tacc[groupKey] = (acc[groupKey] || 0) + item[col];\n\t\t\treturn acc;\n\t\t}, {});\n\t\tconst propiedades = Object.keys(result).sort();\n\t\tconst indexGroup = groupBy.indexOf(col);\n\t\tif (indexGroup != -1) return propiedades.map(propiedad => propiedad.split(\"||\")[indexGroup]);\n\t\treturn propiedades.map(propiedad => result[propiedad]);\n\t}\n\tTransformNegative(value: string): string {\n\t\tvalue = value?.toString() ?? \"0.00\";\n\t\tif (value?.indexOf(\"-\") > -1) return \"(\" + value.replace(\"-\", \"\") + \")\";\n\t\telse return value.toString();\n\t}\n\tFormatNumber(value: number, decimalMax: number, decimalMin: number) {\n\t\treturn value.toLocaleString(\"en-US\", {\n\t\t\tmaximumFractionDigits: decimalMax,\n\t\t\tminimumFractionDigits: decimalMin,\n\t\t});\n\t}\n\tClickOutSideValidator(event: any): boolean {\n\t\tlet res = false;\n\t\tif (event !== undefined) {\n\t\t\tconst src = (event as Event).srcElement as Element;\n\t\t\tres = src.id !== \"button-alignment\" && !this.CheckParents(src, 0);\n\t\t}\n\t\treturn res;\n\t}\n\tCheckParents(src: Element, c: number): boolean {\n\t\tvar ids = [];\n\t\tids.push(\"HamburgerMenu\");\n\t\tvar strings = [];\n\t\tstrings.push(\"swal2-container\");\n\t\tif (src.className.includes(\"backdrop-visible\")) return false;\n\t\tvar res = ids.some(function (v) {\n\t\t\treturn src.id === v;\n\t\t});\n\t\tif (!res && (src.tagName === \"BODY\" || src.parentElement === null) && c === 0) {\n\t\t\tres = true;\n\t\t}\n\t\tif (\n\t\t\t!res &&\n\t\t\tstrings.some(function (v) {\n\t\t\t\treturn src.classList.contains(v);\n\t\t\t})\n\t\t)\n\t\t\tres = true;\n\t\tif (src.parentElement && !res) {\n\t\t\tc++;\n\t\t\tres = this.CheckParents(src.parentElement, c);\n\t\t}\n\t\treturn res;\n\t}\n\tGetTitleByRegionOrCountry(CurrentGroup: any, Current: any, field: string) {\n\t\treturn CurrentGroup ? CurrentGroup.groupName + \" - \" + Current[field] : Current[field];\n\t}\n\tGetTitleByBank(ListGeneralCountryAll: any[], CurrentBank: any) {\n\t\treturn ListGeneralCountryAll.length > 1 ? CurrentBank.groupName + \" - \" + CurrentBank.countryName + \" - \" + CurrentBank.bankNameCommercial : CurrentBank.bankNameCommercial;\n\t}\n\tRoundgen(value: any, precision: any) {\n\t\tvar multiplier = Math.pow(10, precision || 0);\n\t\treturn Math.round(value * multiplier) / multiplier;\n\t}\n\tReturnAmountPercen(amount: any): string {\n\t\tif (isNaN(amount)) amount = 0;\n\t\tlet resultado: string = \"\";\n\t\tlet AmountStr =\n\t\t\tamount === 0\n\t\t\t\t? \"0\"\n\t\t\t\t: amount.toLocaleString(\"en-US\", {\n\t\t\t\t\t\tmaximumFractionDigits: 1,\n\t\t\t\t\t\tminimumFractionDigits: 1,\n\t\t\t\t\t});\n\t\tif (AmountStr.indexOf(\".0\") !== -1)\n\t\t\tAmountStr = amount.toLocaleString(\"en-US\", {\n\t\t\t\tmaximumFractionDigits: 0,\n\t\t\t\tminimumFractionDigits: 0,\n\t\t\t});\n\t\tif (amount < 0 && parseInt(amount.toString()) * -1 === 0) {\n\t\t\tresultado =\n\t\t\t\tamount\n\t\t\t\t\t.toLocaleString(\"en-US\", {\n\t\t\t\t\t\tmaximumFractionDigits: 1,\n\t\t\t\t\t\tminimumFractionDigits: 1,\n\t\t\t\t\t})\n\t\t\t\t\t.replace(\"-\", \"(\") + \"%)\";\n\t\t} else if (amount < 0) resultado = AmountStr.replace(\"-\", \"(\") + \"%)\";\n\t\telse resultado = AmountStr + \"%\";\n\t\tif (Number.NEGATIVE_INFINITY === amount || Number.POSITIVE_INFINITY === amount) resultado = \"\";\n\t\treturn resultado;\n\t}\n\tReturAmountFormat(amount: any): string {\n\t\tif (isNaN(amount)) amount = 0;\n\t\tamount = this.Roundgen(amount, 2);\n\t\tlet resultado: string = \"\";\n\t\tif (amount < 0 && parseInt(amount.toString()) * -1 === 0) resultado = amount.toString().replace(\"-\", \"(\") + \")\";\n\t\telse if (amount < 0 && amount > -1000) {\n\t\t\tresultado = this.Roundgen(amount, 0).toString().replace(\"-\", \"(\") + \")\";\n\t\t} else if (amount < 0 && -1000000000 >= amount) {\n\t\t\tresultado =\n\t\t\t\tthis.Roundgen(amount / 1000000000, 1)\n\t\t\t\t\t.toString()\n\t\t\t\t\t.replace(\"-\", \"(\") + \" B)\";\n\t\t} else if (amount < 0 && -1000000 >= amount) {\n\t\t\tresultado =\n\t\t\t\tthis.Roundgen(amount / 1000000, 1)\n\t\t\t\t\t.toString()\n\t\t\t\t\t.replace(\"-\", \"(\") + \" M)\";\n\t\t} else if (amount < 0) {\n\t\t\tresultado =\n\t\t\t\tthis.Roundgen(amount / 1000, 1)\n\t\t\t\t\t.toString()\n\t\t\t\t\t.replace(\"-\", \"(\") + \" K)\";\n\t\t} else if (amount < 1000) resultado = this.Roundgen(amount, 0).toString();\n\t\telse if (1000000000 < amount) resultado = this.Roundgen(amount / 1000000000, 1).toString() + \" B\";\n\t\telse if (1000000 < amount) resultado = this.Roundgen(amount / 1000000, 1).toString() + \" M\";\n\t\telse resultado = this.Roundgen(amount / 1000, 1).toString() + \" K\";\n\t\tif (resultado.indexOf(\".\") === -1 && amount !== 0 && amount >= 1000) {\n\t\t\tlet a = resultado;\n\t\t\tlet b = \".0\";\n\t\t\tlet output = a + b;\n\n\t\t\tif (resultado.indexOf(\" \") !== -1) {\n\t\t\t\tlet position = resultado.indexOf(\" \");\n\t\t\t\toutput = [a.slice(0, position), b, a.slice(position)].join(\"\");\n\t\t\t} else if (resultado.indexOf(\" \") === -1 && resultado.indexOf(\")\") !== -1) {\n\t\t\t\tlet position = resultado.indexOf(\")\");\n\t\t\t\toutput = [a.slice(0, position), b, a.slice(position)].join(\"\");\n\t\t\t}\n\n\t\t\tresultado = output;\n\t\t}\n\t\treturn resultado;\n\t}\n\tDownloadFile(fileName: string, blob: any): void {\n\t\tconst nav = window.navigator as any;\n\t\tif (nav.msSaveOrOpenBlob) {\n\t\t\tnav.msSaveOrOpenBlob(blob, fileName);\n\t\t} else {\n\t\t\tconst link = document.createElement(\"a\");\n\t\t\tlink.setAttribute(\"type\", \"hidden\");\n\t\t\tlink.download = fileName;\n\t\t\tlink.href = window.URL.createObjectURL(blob.body);\n\t\t\tdocument.body.appendChild(link);\n\t\t\tlink.click();\n\t\t}\n\t}\n\tViewFile(response: any) {\n\t\tconst a = document.createElement(\"a\");\n\t\ta.setAttribute(\"style\", \"display:none;\");\n\t\tdocument.body.appendChild(a);\n\t\ta.href = URL.createObjectURL(response.body);\n\t\ta.target = \"_blank\";\n\t\ta.click();\n\t\tdocument.body.removeChild(a);\n\t}\n\tGetNumberCurrency(amount: number): string {\n\t\treturn amount === 0\n\t\t\t? \"0\"\n\t\t\t: amount.toLocaleString(\"en-US\", {\n\t\t\t\t\tmaximumFractionDigits: 2,\n\t\t\t\t\tminimumFractionDigits: 2,\n\t\t\t\t});\n\t}\n\tCountDecimals(param: number) {\n\t\tif (Math.floor(param) === param) return 0;\n\t\treturn param.toString().split(\".\")[1].length || 0;\n\t}\n\tIsEmpty(value: any) {\n\t\treturn value === null || value === \"\" || value === undefined;\n\t}\n\tGroupByColumn(data: any[], columnGroup: string): any[] {\n\t\tlet colUnique = [];\n\t\tif (columnGroup != \"\") {\n\t\t\tcolUnique = [\n\t\t\t\t...new Set(\n\t\t\t\t\tdata.map(item => {\n\t\t\t\t\t\treturn item[columnGroup];\n\t\t\t\t\t})\n\t\t\t\t),\n\t\t\t].filter(unique => !this.IsEmpty(unique));\n\t\t} else {\n\t\t\tcolUnique = [\n\t\t\t\t...new Set(\n\t\t\t\t\tdata.map(item => {\n\t\t\t\t\t\treturn item;\n\t\t\t\t\t})\n\t\t\t\t),\n\t\t\t].filter(unique => !this.IsEmpty(unique));\n\t\t}\n\t\treturn colUnique;\n\t}\n\tGetRoswpanbyData(column: string, index: number, data: Array<any>): number {\n\t\tlet ValOfAgruppated = null;\n\t\tlet rowspanI = 1;\n\t\tfor (let i: number = index - 1; i < data.length; i++) {\n\t\t\tlet val = data[i][column];\n\t\t\tif (ValOfAgruppated == null) {\n\t\t\t\tValOfAgruppated = val;\n\t\t\t} else if (val !== null && ValOfAgruppated == val) {\n\t\t\t\trowspanI++;\n\t\t\t} else if (val !== null && ValOfAgruppated != val) {\n\t\t\t\tValOfAgruppated = null;\n\t\t\t\treturn rowspanI;\n\t\t\t}\n\t\t}\n\t\treturn rowspanI;\n\t}\n\tFormatterStringJsonByKey(data: any[], key: string, separador: string): string {\n\t\tlet result = \"\";\n\t\tlet colUnique: string[] = [];\n\t\tdata.forEach(element => {\n\t\t\tcolUnique.push(element[key]);\n\t\t});\n\t\tresult = colUnique.join(separador);\n\t\treturn result;\n\t}\n\tGroupByKey(xs: any, key: any) {\n\t\treturn xs.reduce(function (rv: any, x: any) {\n\t\t\t(rv[x[key]] = rv[x[key]] || []).push(x);\n\t\t\treturn rv;\n\t\t}, {});\n\t}\n\tLoadProjectsCss(route: string) {\n\t\tconst elements = this.CheckProjectsCss(route);\n\t\tif (elements.length === 0) {\n\t\t\tconst node = document.createElement(\"link\");\n\t\t\tnode.href = \"./assets/css/projects/\" + route + \".css\";\n\t\t\tnode.rel = \"stylesheet\";\n\t\t\tdocument.getElementsByTagName(\"head\")[0].appendChild(node);\n\t\t}\n\t}\n\tRemoveProjectsCss(route: string) {\n\t\tconst elements = this.CheckProjectsCss(route);\n\t\telements.forEach(element => {\n\t\t\tdocument.getElementsByTagName(\"head\")[0].removeChild(element);\n\t\t});\n\t}\n\tCheckProjectsCss(route: string): any[] {\n\t\tconst parent = document.getElementsByTagName(\"head\")[0];\n\t\tconst elements: any[] = [];\n\t\tparent.childNodes.forEach((element: any) => {\n\t\t\tvar a = element as object;\n\n\t\t\tif (element.nodeName === \"LINK\") {\n\t\t\t\tvar elemethref = element[\"href\"];\n\t\t\t\tif (elemethref && elemethref.indexOf(route) > 0) {\n\t\t\t\t\telements.push(element);\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t\treturn elements;\n\t}\n\tCountDecimalsDigits(numero: any) {\n\t\tif (this.IsEmpty(numero)) return 0;\n\t\tnumero = parseFloat(numero);\n\t\tlet arrayNumero = numero.toString().split(\".\");\n\t\tnumero = arrayNumero.length > 1 ? arrayNumero[1] : \"\";\n\t\treturn numero.length;\n\t}\n\tGetMaxNumberDecimals(data: any[], key: string): number {\n\t\tlet arrCountDecimals: number[] = [];\n\t\tdata.forEach(element => {\n\t\t\tlet decimals = this.CountDecimalsDigits(element[key]);\n\t\t\tarrCountDecimals.push(decimals);\n\t\t});\n\t\tvar maxDecimal = Math.max(...arrCountDecimals);\n\t\treturn maxDecimal;\n\t}\n\tSetHeaderPathName(name: string[]) {\n\t\tthis.headerPathName.next(name);\n\t}\n\tFormatDate(date: string, format: string): string {\n\t\treturn moment(date).format(format);\n\t}\n\tCopyTo(src: any, dest: any) {\n\t\tObject.keys(src).forEach(property => {\n\t\t\tdest[property] = src[property];\n\t\t});\n\t}\n\tIsValidEmail(email: string): boolean {\n\t\tconst emailPattern = /^\\w+([.-]?\\w+)*@\\w+([.-]?\\w+)*(\\.\\w{2,3})+$/;\n\t\treturn emailPattern.test(email);\n\t}\n\tIsGuid(str: string): boolean {\n\t\tconst guidRegex = /^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i;\n\t\treturn guidRegex.test(str);\n\t}\n\tContainsSpecialCharacters(str: string): boolean {\n\t\tconst specialCharacter = /^[^\\\\/?%*:|\"<>]+$/;\n\t\treturn !specialCharacter.test(str);\n\t}\n\tIsNumber(value: any): boolean {\n\t\treturn /^-?\\d+(\\.\\d+)?$/.test(value);\n\t}\n\tCalculatePreviousDate(date: Date, monthsAgo: number) {\n\t\tdate.setMonth(date.getMonth() - monthsAgo);\n\t\tconst newDate = moment(date).format(FormatDateConstants.DMYY_MOMENT);\n\n\t\treturn newDate;\n\t}\n\tGetFilteredSearchKey(listTempAll: any[], key: string, value: any, operatorId: number) {\n\t\tlet listFilter = [];\n\t\tswitch (operatorId) {\n\t\t\tcase 0: //'Contains'\n\t\t\t\tlet word = value.split(\"&\", 100);\n\t\t\t\tlet count: number = 0;\n\t\t\t\tlet listTemp: any;\n\t\t\t\tif (word.length > 1) {\n\t\t\t\t\tword.forEach((element: any) => {\n\t\t\t\t\t\tif (count === 0) {\n\t\t\t\t\t\t\tlistTemp = listTempAll.filter(a => a[key]?.toString()?.toLowerCase().includes(element.toLowerCase()));\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tlistTemp = listTemp.filter((a: any) => a[key]?.toString()?.toLowerCase().includes(element.toLowerCase()));\n\t\t\t\t\t\t}\n\t\t\t\t\t\tcount++;\n\t\t\t\t\t});\n\t\t\t\t\tlistFilter = listTemp;\n\t\t\t\t} else {\n\t\t\t\t\tlistFilter = listTempAll.filter(a => a[key]?.toString()?.toLowerCase().includes(value));\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase 1: //'Exact'\n\t\t\t\tlistFilter = value ? listTempAll.filter(a => a[key]?.toString()?.toLowerCase() === value) : listTempAll;\n\t\t\t\tbreak;\n\t\t\tcase 2: //'Begin'\n\t\t\t\tlistFilter = listTempAll.filter(a => a[key]?.toString()?.toLowerCase().startsWith(value));\n\t\t\t\tbreak;\n\t\t\tcase 3: //'Ends'\n\t\t\t\tlistFilter = listTempAll.filter(a => a[key]?.toString()?.toLowerCase().endsWith(value));\n\t\t\t\tbreak;\n\t\t\tdefault:\n\t\t\t\tlistFilter = listTempAll.filter(a => a[key]?.toString()?.toLowerCase().includes(value));\n\t\t\t\tbreak;\n\t\t}\n\t\treturn listFilter;\n\t}\n\tGetFilteredSearchKeyV2(listTempAll: any[], key: string, value: any, operatorId: number, subKey: any = null) {\n\t\tif (value.length == 0) return listTempAll;\n\t\tif (!listTempAll || !key || value == null) return [];\n\t\tlet listFilter = listTempAll;\n\t\tvalue = value.toString().toLowerCase();\n\t\tconst words = value.includes(\"&\") ? value.split(\"&\").filter(Boolean) : [value];\n\t\tconst filterFunction = (item: any) => {\n\t\t\tconst itemValue = item[key]?.toString()?.toLowerCase();\n\t\t\tswitch (operatorId) {\n\t\t\t\tcase 0: // 'Contains'\n\t\t\t\t\treturn words.every((word: any) => itemValue?.includes(word));\n\t\t\t\tcase 1: // 'Exact'\n\t\t\t\t\treturn itemValue === value;\n\t\t\t\tcase 2: // 'Begin'\n\t\t\t\t\treturn itemValue?.startsWith(value);\n\t\t\t\tcase 3: // 'Ends'\n\t\t\t\t\treturn itemValue?.endsWith(value);\n\t\t\t\tdefault:\n\t\t\t\t\treturn itemValue?.includes(value);\n\t\t\t}\n\t\t};\n\t\tif (subKey) {\n\t\t\t// Filtrar primero a nivel de sublista\n\t\t\tlistFilter = listFilter.map(filter => {\n\t\t\t\treturn {\n\t\t\t\t\t...filter,\n\t\t\t\t\t[subKey]: filter[subKey]?.filter((item: any) => filterFunction(item)),\n\t\t\t\t};\n\t\t\t});\n\t\t\t// Filtrar luego la lista principal basado en si la sublista contiene elementos\n\t\t\tlistFilter = listFilter.filter(filter => filter[subKey].length > 0);\n\t\t} else {\n\t\t\t// Filtrar solo la lista principal\n\t\t\tlistFilter = listFilter.filter(filterFunction);\n\t\t}\n\t\treturn listFilter;\n\t}\n\tpublic TransformArrayToHashTable<T, TypeKey extends string | number>(arr: T[], getKey: (p: T) => TypeKey): { [key in TypeKey]: T } {\n\t\t//example of Use:\n\t\t// this.transformArrayToHashTable<any,string>([{id:1,prop1:\"prop1Value\"}],(o)=>o.id.toString())\n\t\tconst hashTable: { [key in TypeKey]: T } = {} as { [key in TypeKey]: T };\n\t\tarr.forEach((object: T) => (hashTable[getKey(object)] = object));\n\t\treturn hashTable;\n\t}\n\tpublic TransformArrayToMap<TypeKey, T>(arr: T[], getKey: (p: T) => TypeKey): Map<TypeKey, T> {\n\t\t//example of Use:\n\t\t// this.transformArrayToMap<string,any>([{id:1,prop1:\"prop1Value\"}],(o)=>o.id.toString())\n\t\treturn new Map(arr.map(obj => [getKey(obj), obj]));\n\t}\n\tUrlHasQaUatSubdomain() {\n\t\tconst { hostname } = new URL(window.location.href);\n\t\tconst [subdomain] = hostname.split(\".\");\n\t\treturn [\"qa\", \"uat\"].includes(subdomain);\n\t}\n\tUrlHasQaSubdomain() {\n\t\tconst { hostname } = new URL(window.location.href);\n\t\tconst [subdomain] = hostname.split(\".\");\n\t\treturn [\"qa\"].includes(subdomain);\n\t}\n\tGetLastSegmentUrl(): string {\n\t\tconst segments = this.location.path().split(\"/\");\n\t\tconst lastSegment = segments[segments.length - 1];\n\t\tconst numberMappings: { [key: string]: string } = {\n\t\t\t\"0\": \"intelica-allocated\",\n\t\t\t\"1\": \"penalty-summary\",\n\t\t};\n\t\t// Verifica si lastSegment es un número y si tiene un mapeo correspondiente\n\t\tif (!isNaN(Number(lastSegment)) && numberMappings.hasOwnProperty(lastSegment)) return numberMappings[lastSegment];\n\t\telse return lastSegment;\n\t}\n\tOnChangeMultiple($event: any, selectDescription: string): void {\n\t\tlet select = $event != null ? $event.element.ej2_instances[0] : null;\n\t\tif (select?.value.length > 0) {\n\t\t\tselect.viewWrapper.innerHTML = `${select.value.length} ${selectDescription}`;\n\t\t}\n\t}\n\tRemoveParamsAndSegments(url: string): string {\n\t\t// Remover parámetros de consultanom\n\t\tconst urlWithoutParams = url.split(\"?\")[0];\n\t\t// Remover segmentos de ruta dinámicos\n\t\tconst regex = /\\/\\d+(?=\\/|$)(?!$)/g; // Encuentra segmentos de ruta que consisten en números\n\t\treturn urlWithoutParams.replace(regex, \"\");\n\t}\n\tOpenActionMenu() {\n\t\tthis.openActionMenu$.next(true);\n\t}\n\tAbbreviateNumber(number: number, fixed: number = 2): string {\n\t\tif (number == 0.0 || number == 0 || number == 0.0) {\n\t\t\treturn \"0\";\n\t\t}\n\t\tlet formatCant = \"\";\n\t\tlet numberOriginal = number;\n\t\tif (number < 0) {\n\t\t\tnumber = Math.abs(number);\n\t\t}\n\t\tif (number >= 1000 && number < 1000000) {\n\t\t\tnumber = parseFloat((number / 1000).toFixed(fixed));\n\t\t\tformatCant = \" K\";\n\t\t} else if (number >= 1000000 && number < 1000000000) {\n\t\t\tnumber = parseFloat((number / 1000000).toFixed(fixed));\n\t\t\tformatCant = \" M\";\n\t\t} else if (number >= 1000000000 && number <= 1000000000000) {\n\t\t\tnumber = parseFloat((number / 1000000000).toFixed(fixed));\n\t\t\tformatCant = \" B\";\n\t\t} else {\n\t\t\tnumber = this.NumberFormatByNumberCriteria(number, fixed);\n\t\t}\n\t\treturn numberOriginal < 0 ? `(${number}${formatCant})` : `${number}${formatCant}`;\n\t}\n\tNumberFormatByNumberCriteria(number: number, fixed: number = 4): any {\n\t\tconst rounded = (Math.round(number * Math.pow(10, fixed)) / Math.pow(10, fixed)).toFixed(fixed);\n\t\treturn rounded;\n\t}\n\tFormatPercentage(number: number, decimal: number = 2) {\n\t\tlet numberInit = number;\n\t\tif (number < 0) number = Math.abs(number);\n\t\tnumber = parseFloat(number.toFixed(decimal));\n\t\tlet finalNumber = `${number.toLocaleString(\"en-US\")}%`;\n\t\treturn numberInit < 0 ? `(${finalNumber})` : `${finalNumber}`;\n\t}\n\tGetMonthName(monthIndex: number, lang: \"en\" | \"es\" = \"en\"): string {\n\t\treturn this.months[lang][monthIndex];\n\t}\n\tFormatNumberWithSuffix(number: number, decimalPlaces: number = 0): string {\n\t\tif (number === 0) {\n\t\t\treturn \"0\";\n\t\t}\n\t\tconst isNegative = number < 0;\n\t\tconst absoluteValue = Math.abs(number);\n\t\tconst scaledNumber = parseFloat((absoluteValue / 1000).toFixed(decimalPlaces)).toLocaleString(\"en-US\");\n\t\tconst suffix = \" K\";\n\n\t\treturn isNegative ? `(${scaledNumber}${suffix})` : `${scaledNumber}${suffix}`;\n\t}\n\t//SYNFCUNTION\n\tGenerateGUID(): string {\n\t\tlet uuid = \"\",\n\t\t\ti,\n\t\t\trandom;\n\t\tfor (i = 0; i < 32; i++) {\n\t\t\trandom = (Math.random() * 16) | 0;\n\t\t\tif (i === 8 || i === 12 || i === 16 || i === 20) {\n\t\t\t\tuuid += \"-\";\n\t\t\t}\n\t\t\tuuid += (i === 12 ? 4 : i === 16 ? (random & 3) | 8 : random).toString(16);\n\t\t}\n\t\treturn uuid;\n\t}\n\tAttachDataLabelClickEvent(chartElementId: string, dataArray: any[], onClickCallback: (clickedData: any) => void): void {\n\t\tconst chartElement = document.getElementById(chartElementId);\n\t\tif (!chartElement) {\n\t\t\treturn;\n\t\t}\n\t\tconst dataLabels = chartElement.querySelectorAll('[id*=\"_DataLabel_\"]');\n\t\tconst dataLabelsArray = Array.prototype.slice.call(dataLabels) as HTMLElement[];\n\t\tdataLabelsArray.forEach((label, index) => {\n\t\t\t// Calcula el índice ajustado para obtener el dato correcto\n\t\t\tconst adjustedIndex = index % dataArray.length;\n\n\t\t\tlabel.addEventListener(\"click\", () => {\n\t\t\t\tconst clickedData = dataArray[adjustedIndex];\n\t\t\t\tif (clickedData) {\n\t\t\t\t\tonClickCallback(clickedData);\n\t\t\t\t}\n\t\t\t});\n\t\t});\n\t}\n\tFormatNumberAbsolute(number: number) {\n\t\tconst isNegative = number < 0;\n\t\tif (number < 0) {\n\t\t\tnumber = Math.abs(number);\n\t\t}\n\n\t\tlet finalNumber = `${number.toLocaleString(\"en-US\")}`;\n\t\treturn isNegative ? `(${finalNumber})` : `${finalNumber}`;\n\t}\n\tSortRecursive(data: any[], column: any, criteria: string) {\n\t\treturn _.orderBy(\n\t\t\tdata.map(item => {\n\t\t\t\tObject.keys(item).forEach(key => {\n\t\t\t\t\tif (Array.isArray(item[key])) {\n\t\t\t\t\t\titem[key] = this.SortRecursive(item[key], column, criteria);\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t\treturn item;\n\t\t\t}),\n\t\t\t[\n\t\t\t\t(elm: any) => {\n\t\t\t\t\tlet value = elm[column];\n\t\t\t\t\tif (value == null) {\n\t\t\t\t\t\tvalue = \"\";\n\t\t\t\t\t}\n\t\t\t\t\tif (typeof value === \"string\") {\n\t\t\t\t\t\tconst normalized = value.trim().toLowerCase();\n\t\t\t\t\t\tconst startsWithSpecial = /^[^a-z0-9]/i.test(normalized);\n\t\t\t\t\t\treturn startsWithSpecial ? `~${normalized}` : normalized;\n\t\t\t\t\t}\n\t\t\t\t\treturn value;\n\t\t\t\t},\n\t\t\t],\n\t\t\t[criteria as \"asc\" | \"desc\"]\n\t\t);\n\t}\n\tSortRecursivePrimeNg(data: any[], column: any, criteria: string) {\n\t\treturn _.orderBy(\n\t\t\tdata.map(item => {\n\t\t\t\tObject.keys(item).forEach(key => {\n\t\t\t\t\tif (Array.isArray(item[key])) {\n\t\t\t\t\t\titem[key] = this.SortRecursive(item[key], column, criteria);\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t\treturn item;\n\t\t\t}),\n\t\t\t[\n\t\t\t\t(elm: any) => {\n\t\t\t\t\tlet value = elm[column];\n\t\t\t\t\tif (value == null || (typeof value === \"string\" && value.trim() === \"\")) {\n\t\t\t\t\t\treturn \"___0\";\n\t\t\t\t\t}\n\t\t\t\t\tif (typeof value === \"string\") {\n\t\t\t\t\t\tconst normalized = value.trim().toLowerCase();\n\t\t\t\t\t\tconst startsWithSpecial = /^[^a-z0-9]/i.test(normalized);\n\t\t\t\t\t\tif (startsWithSpecial) {\n\t\t\t\t\t\t\treturn `___1${normalized}`;\n\t\t\t\t\t\t}\n\t\t\t\t\t\treturn `___2${normalized}`;\n\t\t\t\t\t}\n\t\t\t\t\treturn `___2${value}`;\n\t\t\t\t},\n\t\t\t],\n\t\t\t[criteria as \"asc\" | \"desc\"]\n\t\t);\n\t}\n\tSortRecursiveNumber(data: any[], column: any, criteria: string) {\n\t\treturn _.orderBy(\n\t\t\tdata.map(item => {\n\t\t\t\tObject.keys(item).forEach(key => {\n\t\t\t\t\tif (Array.isArray(item[key])) {\n\t\t\t\t\t\titem[key] = this.SortRecursiveNumber(item[key], column, criteria);\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t\treturn item;\n\t\t\t}),\n\t\t\t[\n\t\t\t\t(elm: any) => {\n\t\t\t\t\tlet value = elm[column];\n\t\t\t\t\tif (value == null || value === \"\") {\n\t\t\t\t\t\treturn Number.NEGATIVE_INFINITY;\n\t\t\t\t\t}\n\t\t\t\t\tif (typeof value === \"number\") {\n\t\t\t\t\t\treturn value;\n\t\t\t\t\t}\n\t\t\t\t\tif (!isNaN(Number(value))) {\n\t\t\t\t\t\treturn Number(value);\n\t\t\t\t\t}\n\t\t\t\t\treturn Number.NEGATIVE_INFINITY;\n\t\t\t\t},\n\t\t\t],\n\t\t\t[criteria as \"asc\" | \"desc\"]\n\t\t);\n\t}\n\n\tIsDateFormat(value: any): boolean {\n\t\treturn typeof value === \"string\" && /^\\d{1,2}\\/\\d{1,2}\\/\\d{2,4}$/.test(value);\n\t}\n\n\tSortRecursiveDate(data: any[], column: any, criteria: string) {\n\t\treturn _.orderBy(\n\t\t\tdata.map(item => {\n\t\t\t\tObject.keys(item).forEach(key => {\n\t\t\t\t\tif (Array.isArray(item[key])) {\n\t\t\t\t\t\titem[key] = this.SortRecursiveDate(item[key], column, criteria);\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t\treturn item;\n\t\t\t}),\n\t\t\t[\n\t\t\t\t(elm: any) => {\n\t\t\t\t\tlet value = elm[column];\n\t\t\t\t\tif (value == null || value === \"\") {\n\t\t\t\t\t\treturn Number.NEGATIVE_INFINITY;\n\t\t\t\t\t}\n\t\t\t\t\tconst dateValue = new Date(value);\n\t\t\t\t\tif (isNaN(dateValue.getTime())) {\n\t\t\t\t\t\treturn Number.NEGATIVE_INFINITY;\n\t\t\t\t\t}\n\t\t\t\t\treturn dateValue.getTime();\n\t\t\t\t},\n\t\t\t],\n\t\t\t[criteria as \"asc\" | \"desc\"]\n\t\t);\n\t}\n}\n","import { ContentChild, Directive, Input, TemplateRef } from \"@angular/core\";\n@Directive({ selector: \"column\" })\nexport class ColumnComponent<T = any> {\n @Input() field!: string;\n @Input() header!: string;\n @Input() sortable: boolean = false;\n @Input() width?: string;\n @Input() className?: string;\n @Input() headerTooltip: string = \"\";\n @Input() headerTooltipPosition: \"top\" | \"bottom\" | \"left\" | \"right\" = \"top\";\n @Input() tooltip: string = \"\";\n @Input() tooltipPosition: \"top\" | \"bottom\" | \"left\" | \"right\" = \"top\";\n @Input() showIndex: boolean = false;\n @Input() showHeader: boolean = true;\n @Input() minWidth?: string;\n @Input() isChecboxColumn: boolean = false;\n //@Input() isGrouped: boolean = false;\n //@Input() isGroup: boolean = false;\n @Input() formatType:\n | \"string\"\n | \"date\"\n | \"date2\"\n | \"date3\"\n | \"time\"\n | \"decimal2\"\n | \"decimal4\"\n | \"tarifa\" = \"string\";\n @ContentChild(TemplateRef) templateRef?: TemplateRef<any>;\n}\n@Directive({ selector: \"columnGroup\" })\nexport class ColumnGroupComponent<T = any> {\n @Input() field!: string;\n @Input() header!: string;\n @Input() sortable: boolean = false;\n @Input() width?: string;\n @Input() minWidth?: string;\n @Input() className?: string;\n @Input() headerTooltip: string = \"\";\n @Input() headerTooltipPosition: \"top\" | \"bottom\" | \"left\" | \"right\" = \"top\";\n // @Input() tooltip: string = \"\";\n // @Input() tooltipPosition: \"top\" | \"bottom\" | \"left\" | \"right\" = \"top\";\n // @Input() showIndex: boolean = false;\n // @Input() isGrouped: boolean = false;\n // @Input() isGroup: boolean = false;\n @Input() colspan: number = 1;\n @Input() rowspan: number = 1;\n @Input() level: number = 0;\n @Input() formatType:\n | \"string\"\n | \"date\"\n | \"date2\"\n | \"date3\"\n | \"time\"\n | \"decimal2\"\n | \"decimal4\"\n | \"tarifa\" = \"string\";\n}\n@Directive({ selector: \"rowResumenComponent\" })\nexport class RowResumenComponent<T = any> {\n @Input() field!: string;\n @Input() className?: string;\n // @Input() width?: string;\n // @Input() className?: string;\n // @Input() headerTooltip: string = \"\";\n // @Input() headerTooltipPosition: \"top\" | \"bottom\" | \"left\" | \"right\" = \"top\";\n // @Input() tooltip: string = \"\";\n // @Input() tooltipPosition: \"top\" | \"bottom\" | \"left\" | \"right\" = \"top\";\n // @Input() showIndex: boolean = false;\n // @Input() isGrouped: boolean = false;\n // @Input() isGroup: boolean = false;\n @Input() colspan: number = 1;\n @Input() rowspan: number = 1;\n @ContentChild(TemplateRef) templateRef?: TemplateRef<any>;\n @Input() formatType:\n | \"string\"\n | \"date\"\n | \"date2\"\n | \"date3\"\n | \"time\"\n | \"decimal2\"\n | \"decimal4\"\n | \"tarifa\" = \"string\";\n}\n\n// @Input() headerText: string | undefined;\n// @Input() field: string;\n// @Input() fieldDetail: string;\n// @Input() className: string;\n// @Input() order: boolean = false;\n// @Input() width: string;\n// @Input() isNumber: boolean = false;\n// @Input() isRowNumber: boolean = false;\n// @Input() isPercent: boolean = false;\n// @Input() isInteger: boolean = false;\n// @Input() setContainer: boolean = true;\n// @Input() hideRowInDetail: boolean = false;\n// @Input() prefix: string;\n// @Input() headerWidth: number = 0;\n// @Input() headerLineBreak: boolean = false;\n// @Input() numberFormat: string = '1.2-2';\n// @Input() columnHasDateFormat: boolean = false;\n// @Input() dateFormat: string = '';\n// @Input() isSelectableColum: boolean = false;\n// @Input() isHeaderClickable: boolean = false;\n// @Input() classNameHeader: string = '';\n// @Input() isActiveHeader: boolean = false;\n// @Input() classNameActiveHeader: string = '';\n// @Input() isCellClickable: boolean = false;\n// @Input() isAveragePercent: boolean = false;\n// @Input() visible: boolean = true;\n// @Input() hasAmountNaming: boolean = false;\n// @Input() computedField: string;\n// @Input() isOrderedDesc: boolean = false;\n// @Input() isOrderedAsc: boolean = false;\n// @Input() containDetails: boolean = false;\n// @Input() isChecboxColumn: boolean = false;\n// columnsForCompare: string = '';\n// @ContentChild('detail') detail!: any;\n// @ContentChild('content') content!: any;\n","import { CommonModule, DatePipe } from \"@angular/common\";\nimport { AfterContentInit, Component, ContentChild, ContentChildren, EventEmitter, inject, Input, OnChanges, Output, QueryList, TemplateRef } from \"@angular/core\";\nimport { FormsModule } from \"@angular/forms\";\nimport { BadgeModule } from \"primeng/badge\";\nimport { CheckboxModule } from \"primeng/checkbox\";\nimport { IconFieldModule } from \"primeng/iconfield\";\nimport { InputIcon } from \"primeng/inputicon\";\nimport { InputNumber } from \"primeng/inputnumber\";\nimport { InputText, InputTextModule } from \"primeng/inputtext\";\nimport { Paginator } from \"primeng/paginator\";\nimport { Select } from \"primeng/select\";\nimport { TableModule } from \"primeng/table\";\nimport { TooltipModule } from \"primeng/tooltip\";\nimport { FormatCellPipe } from \"../../pipes/formatCell.pipe\";\nimport { TermPipe } from \"intelica-library-base\";\nimport { GlobalTermService } from \"intelica-library-base\";\nimport { SharedService } from \"../../services/shared.service\";\nimport { SearchInputModel } from \"../search/model/search.model\";\nimport { ColumnComponent, ColumnGroupComponent, RowResumenComponent } from \"./column.component\";\nimport { SortFieldModel } from \"./model/sort.model\";\n\n@Component({\n\tselector: \"intelica-table\",\n\tstandalone: true,\n\timports: [\n\t\tCommonModule,\n\t\tIconFieldModule,\n\t\tInputIcon,\n\t\tInputText,\n\t\tInputTextModule,\n\t\tInputNumber,\n\t\tPaginator,\n\t\tTableModule,\n\t\tSelect,\n\t\tBadgeModule,\n\t\tTooltipModule,\n\t\tTermPipe,\n\t\tCheckboxModule,\n\t\tFormsModule,\n\t\tFormatCellPipe,\n\t],\n\ttemplateUrl: \"./table.component.html\",\n\tproviders: [FormatCellPipe, DatePipe],\n})\nexport class TableComponent<T> implements OnChanges, AfterContentInit {\n\tprivate readonly SharedService = inject(SharedService);\n\treadonly GlobalTermService = inject(GlobalTermService);\n\t@Input() ComponentId: string = \"\";\n\t@Input() ListData: T[] = [];\n\t@Input() ShowRowPerPage: boolean = true;\n\t@Input() ShowSearch: boolean = false;\n\t@Input() ShowPagination: boolean = false;\n\t@Input() RowsPerPage: number = 10;\n\t@Input() ShowCheckbox: boolean = false;\n\t@Input() ShowIndex: boolean = false;\n\t@Input() ListDataSelected: T[] = [];\n\t@Input() SelectedIdentifier: keyof T | null = null;\n\t@Input() ClassName: string = \"\";\n\t@Input() DefaultSortField: string = \"\";\n\t@Input() DefaultSortOrder: number = 1;\n\t@Input() scrollHeight: string = \"400px\";\n\t@Input() scrollable: boolean = false;\n\t@Input() AllowedPageSizes: number[] = [10, 25, 50, 100];\n\t@Input() tableStyle: { [klass: string]: any } = {};\n\tprivate _isTableDisabled = false;\n\tprivate _pendingUncheck = false;\n\tHeaderState: Record<string, { checked: boolean; indeterminate: boolean }> = {};\n\n\t@Input()\n\tset IsTableDisabled(val: boolean) {\n\t\tthis._isTableDisabled = val;\n\n\t\tif (val) {\n\t\t\tif (!this.ColumnList || this.ColumnList.length === 0) {\n\t\t\t\tthis._pendingUncheck = true;\n\t\t\t} else {\n\t\t\t\tthis.ListDataSelectedTemp = [];\n\t\t\t\tthis.ListDataSelectedFilter = [];\n\t\t\t\tthis.ExecuteSearch();\n\t\t\t}\n\t\t}\n\t}\n\tget IsTableDisabled() {\n\t\treturn this._isTableDisabled;\n\t}\n\n\tpublic recomputeHeaderState(field: string) {\n\t\tconst total = this.ListDataFilter.length;\n\t\tif (total === 0) {\n\t\t\tthis.HeaderState[field] = { checked: false, indeterminate: false };\n\t\t\treturn;\n\t\t}\n\t\tconst checked = this.ListDataFilter.filter(r => (r as any)[field] === true).length;\n\t\tthis.HeaderState[field] = {\n\t\t\tchecked: checked === total,\n\t\t\tindeterminate: checked > 0 && checked < total,\n\t\t};\n\t}\n\n\tonBodyCheckboxChange(field: string) {\n\t\tthis.recomputeHeaderState(field);\n\t}\n\n\tprivate refreshAllHeaderStates() {\n\t\tthis.ColumnList.filter(c => c.isChecboxColumn).forEach(c => this.recomputeHeaderState(c.field));\n\t}\n\t@Output() EmitSelectedItem = new EventEmitter<T[]>();\n\t@Output() EmitListDataFilter = new EventEmitter<T[]>();\n\t@Output() EmitSearchEvent = new EventEmitter<SearchInputModel>();\n\t@Output() EmitSortEvent = new EventEmitter<SortFieldModel[]>();\n\t@ContentChildren(ColumnComponent) Columns!: QueryList<ColumnComponent>;\n\t@ContentChildren(ColumnGroupComponent)\n\tColumnGroups!: QueryList<ColumnGroupComponent>;\n\t@ContentChildren(RowResumenComponent)\n\tRowResumenGroups!: QueryList<RowResumenComponent>;\n\t@ContentChild(\"additionalTemplate\") AdditionalTemplate?: TemplateRef<any>;\n\t@ContentChild(\"additionalExtendedTemplate\")\n\tAdditionalExtendedTemplate?: TemplateRef<any>;\n\t@ContentChild(\"additionalCentralTemplate\")\n\tAdditionalCentralTemplate?: TemplateRef<any>;\n\tColumnList: ColumnComponent[] = [];\n\tColumnGroupList: ColumnGroupComponent[] = [];\n\tRowResumenList: RowResumenComponent[] = [];\n\tListDataFilter: T[] = [];\n\tListDataTable: T[] = [];\n\tListDataSelectedFilter: T[] = [];\n\tListDataSelectedTemp: T[] = [];\n\tSearchInput: SearchInputModel = { searchText: \"\" } as SearchInputModel;\n\tTotalRecords: number = 0;\n\tCurrentPage: number = 1;\n\tSortOrder: number = 1;\n\tSortField: keyof T | null = null;\n\tMaxLevel: number = 0;\n\tLevels: number[] = [];\n\tngOnChanges(): void {\n\t\tif (!this.SortField && this.DefaultSortField) {\n\t\t\tthis.SortField = this.DefaultSortField as keyof T;\n\t\t\tthis.SortOrder = this.DefaultSortOrder;\n\t\t}\n\t\tthis.ExecuteSearch();\n\t\tthis.ValidateSelect();\n\t}\n\tngAfterContentInit() {\n\t\tthis.ColumnList = this.Columns?.toArray() ?? [];\n\t\tthis.ColumnGroupList = this.ColumnGroups?.toArray() ?? [];\n\t\tthis.RowResumenList = this.RowResumenGroups?.toArray() ?? [];\n\n\t\tconst levels = this.ColumnGroupList.map(c => c.level);\n\t\tthis.MaxLevel = levels.length ? Math.max(...levels) + 1 : 1;\n\t\tthis.Levels = Array.from({ length: this.MaxLevel }, (_, i) => i);\n\n\t\tthis.ColumnList.filter(c => c.isChecboxColumn).forEach(c => {\n\t\t\tif (!this.HeaderState[c.field]) {\n\t\t\t\tthis.HeaderState[c.field] = { checked: false, indeterminate: false };\n\t\t\t}\n\t\t});\n\n\t\tif (this._isTableDisabled && this._pendingUncheck) {\n\t\t\tthis.ListDataSelectedTemp = [];\n\t\t\tthis.ListDataSelectedFilter = [];\n\t\t\tthis._pendingUncheck = false;\n\t\t\tthis.ExecuteSearch();\n\t\t} else {\n\t\t\tthis.refreshAllHeaderStates();\n\t\t}\n\t}\n\tOnSort(field: string) {\n\t\tif (this.SortField === field) {\n\t\t\tthis.SortOrder *= -1;\n\t\t} else {\n\t\t\tthis.SortField = field as keyof T;\n\t\t\tthis.SortOrder = 1;\n\t\t}\n\t\tthis.CurrentPage = 1;\n\t\tthis.SortPages();\n\t}\n\tOnPageChange(event: { page?: number; rows?: number } | number) {\n\t\tif (typeof event === \"number\") {\n\t\t\tthis.CurrentPage = event;\n\t\t} else {\n\t\t\tif (typeof event?.rows === \"number\") {\n\t\t\t\tthis.RowsPerPage = event.rows;\n\t\t\t}\n\t\t\tif (typeof event?.page === \"number\") {\n\t\t\t\tthis.CurrentPage = event.page + 1;\n\t\t\t}\n\t\t}\n\t\tthis.UpdatePages();\n\t}\n\tExecuteSearch(searchText?: string): void {\n\t\tif (typeof searchText === \"string\") {\n\t\t\tthis.SearchInput = { ...(this.SearchInput ?? {}), searchText };\n\t\t}\n\t\tthis.ListDataFilter = [...this.ListData];\n\t\tconst search = this.SearchInput?.searchText?.trim()?.toLowerCase();\n\t\tif (search) {\n\t\t\tthis.ListDataFilter = this.ListData.filter(item => {\n\t\t\t\tconst searchableText = Object.values(item as any)\n\t\t\t\t\t.filter(v => v !== null && v !== undefined)\n\t\t\t\t\t.join(\" \")\n\t\t\t\t\t.toLowerCase();\n\t\t\t\treturn searchableText.includes(search);\n\t\t\t});\n\t\t\tthis.CurrentPage = 1;\n\t\t}\n\t\tthis.SortPages();\n\t}\n\tSortPages() {\n\t\tif (!this.SortField) {\n\t\t\tthis.UpdatePages();\n\t\t\treturn;\n\t\t}\n\n\t\tconst order = this.SortOrder === 1 ? \"asc\" : \"desc\";\n\t\tconst field = this.SortField as keyof T;\n\n\t\tconst colConfig = this.ColumnList.find(c => c.field === field);\n\t\tif (!colConfig) {\n\t\t\tconsole.warn(\"Columna no encontrada:\", field);\n\t\t\tthis.UpdatePages();\n\t\t\treturn;\n\t\t}\n\t\tconst formatType = colConfig.formatType;\n\t\tconst sampleValue = this.ListDataFilter.find(item => item[field] !== null && item[field] !== undefined)?.[field];\n\t\tif (typeof sampleValue === \"number\") {\n\t\t\tthis.ListDataFilter = this.SharedService.SortRecursiveNumber([...this.ListDataFilter], field, order);\n\t\t} else {\n\t\t\tif (formatType === \"date\") {\n\t\t\t\tthis.ListDataFilter = this.SharedService.SortRecursiveDate([...this.ListDataFilter], field, order);\n\t\t\t} else {\n\t\t\t\tthis.ListDataFilter = this.SharedService.SortRecursivePrimeNg([...this.ListDataFilter], field, order);\n\t\t\t}\n\t\t}\n\t\tthis.UpdatePages();\n\t}\n\tUpdatePages() {\n\t\tif (this.ShowPagination) {\n\t\t\tthis.TotalRecords = this.ListDataFilter.length;\n\t\t\tconst start = (this.CurrentPage - 1) * this.RowsPerPage;\n\t\t\tconst end = start + this.RowsPerPage;\n\t\t\tthis.ListDataTable = this.ListDataFilter.slice(start, end);\n\t\t} else {\n\t\t\tthis.ListDataTable = this.ListDataFilter;\n\t\t}\n\t\tif (this.ShowCheckbox) this.ListDataSelectedFilter = [...this.ListDataSelectedTemp];\n\t\tthis.refreshAllHeaderStates();\n\t\tthis.EmitSearchValues();\n\t}\n\tValidateSelect() {\n\t\tif (!this.SelectedIdentifier && this.ShowCheckbox) {\n\t\t\tthis.ShowCheckbox = false;\n\t\t\treturn;\n\t\t}\n\t\tconst selectedIds = new Set(this.ListDataSelected.map(item => item[this.SelectedIdentifier as keyof T]));\n\t\tthis.ListDataSelectedTemp = this.ListData.filter(item => selectedIds.has(item[this.SelectedIdentifier as keyof T]));\n\t\tthis.ListDataSelectedFilter = [...this.ListDataSelectedTemp];\n\t}\n\tSelectAll(event: any) {\n\t\tif (!this.SelectedIdentifier && this.ShowCheckbox) return;\n\t\tif (event.checked) {\n\t\t\tconst idsSelected = new Set(this.ListDataSelectedTemp.map(item => item[this.SelectedIdentifier as keyof T]));\n\t\t\tthis.ListDataFilter.forEach(item => {\n\t\t\t\tif (!idsSelected.has(item[this.SelectedIdentifier as keyof T])) {\n\t\t\t\t\tthis.ListDataSelectedTemp.push(item);\n\t\t\t\t}\n\t\t\t});\n\t\t} else {\n\t\t\tconst idsSelected = new Set(this.ListDataFilter.map(item => item[this.SelectedIdentifier as keyof T]));\n\t\t\tthis.ListDataSelectedTemp = this.ListDataSelectedTemp.filter(item => !idsSelected.has(item[this.SelectedIdentifier as keyof T]));\n\t\t}\n\t\tthis.ListDataSelectedFilter = [...this.ListDataSelectedTemp];\n\t\tthis.EmitSelectedItem.emit(this.ListDataSelectedTemp);\n\t}\n\tOnHeaderSelectionToggle(checked: boolean) {\n\t\tthis.SelectAll({ checked });\n\t}\n\tOnRowSelect(event: any) {\n\t\tif (!this.SelectedIdentifier && this.ShowCheckbox) return;\n\t\tconst selectedItem = event.data;\n\t\tconst exists = this.ListDataSelectedTemp.some(item => item[this.SelectedIdentifier as keyof T] === selectedItem[this.SelectedIdentifier as keyof T]);\n\t\tif (!exists) {\n\t\t\tthis.ListDataSelectedTemp.push(selectedItem);\n\t\t}\n\t\tthis.EmitSelectedItem.emit(this.ListDataSelectedTemp);\n\t}\n\tOnRowUnselect(event: any) {\n\t\tif (!this.SelectedIdentifier && this.ShowCheckbox) return;\n\t\tconst unselectedItem = event.data;\n\t\tthis.ListDataSelectedTemp = this.ListDataSelectedTemp.filter(item => item[this.SelectedIdentifier as keyof T] !== unselectedItem[this.SelectedIdentifier as keyof T]);\n\t\tthis.EmitSelectedItem.emit(this.ListDataSelectedTemp);\n\t}\n\tResetTable() {\n\t\tthis.CurrentPage = 1;\n\t\tthis.SearchInput = { ...(this.SearchInput ?? {}), searchText: \"\" };\n\t\tthis.ExecuteSearch();\n\t}\n\tEmitSearchValues() {\n\t\tthis.EmitListDataFilter.emit(this.ListDataFilter);\n\t\tthis.EmitSearchEvent.emit(this.SearchInput);\n\t\tthis.EmitSortEvent.emit([\n\t\t\t{\n\t\t\t\tsortOrder: this.SortOrder,\n\t\t\t\tsortField: this.SortField?.toString() ?? \"\",\n\t\t\t},\n\t\t]);\n\t}\n\tOnHeaderCheckboxChange(checked: boolean, field: string) {\n\t\tthis.ListDataFilter.forEach(r => ((r as any)[field] = checked));\n\n\t\tthis.HeaderState[field] = { checked, indeterminate: false };\n\t\tthis.UpdatePages();\n\t}\n\n\tprivate getFilteredSelectedCount(): number {\n\t\tif (!this.SelectedIdentifier || this.ListDataFilter.length === 0 || this.ListDataSelectedTemp.length === 0) return 0;\n\t\tconst selectedIds = new Set(this.ListDataSelectedTemp.map(item => item[this.SelectedIdentifier as keyof T]));\n\t\treturn this.ListDataFilter.filter(item => selectedIds.has(item[this.SelectedIdentifier as keyof T])).length;\n\t}\n\tget IsHeaderSelectionChecked(): boolean {\n\t\treturn this.ListDataFilter.length > 0 && this.getFilteredSelectedCount() === this.ListDataFilter.length;\n\t}\n\tget IsHeaderSelectionIndeterminate(): boolean {\n\t\tconst selectedCount = this.getFilteredSelectedCount();\n\t\treturn selectedCount > 0 && selectedCount < this.ListDataFilter.length;\n\t}\n\n\tFilterData(field: string) {\n\t\tlet c = this.ListData.filter(item => (item as Record<string, boolean>)[field]);\n\t}\n\tIsInderteminate(column: string) {\n\t\tconst rowsChek = this.ListData.filter(item => (item as Record<string, boolean>)[column]).length;\n\t\tconst element = [...document.querySelectorAll(\"[data-check]\")].find(x => x.getAttribute(\"data-check\") == column);\n\t\tif (element == undefined) return;\n\t\tif (rowsChek > 0 && rowsChek < this.ListData.length) {\n\t\t\telement.setAttribute(\"class\", \"prCheckbox--indeterminate\");\n\t\t} else {\n\t\t\telement.removeAttribute(\"class\");\n\t\t}\n\t}\n\tOnRowsPerPageChange(value: number) {\n\t\tthis.RowsPerPage = value;\n\t\tthis.CurrentPage = 1;\n\t\tthis.UpdatePages();\n\t}\n\tResetTableSelected() {\n\t\tthis.ListDataSelectedTemp = [];\n\t\tthis.ListDataSelectedFilter = [...this.ListDataSelectedTemp];\n\t}\n\tClearSearch() {\n\t\tthis.SearchInput.searchText = \"\";\n\t\tthis.ExecuteSearch();\n\t}\n\n\tget TotalPages(): number {\n\t\treturn Math.ceil(this.TotalRecords / this.RowsPerPage);\n\t}\n\tonChangeSelectPage(event: any) {\n\t\tconst eventValue: string = event.target.value;\n\t\tif (eventValue === \"\" || isNaN(parseInt(eventValue)) || eventValue === \"0\" || eventValue.indexOf(\"-\") >= 0) {\n\t\t\tthis.CurrentPage = 1;\n\t\t\tthis.UpdatePages();\n\t\t\treturn;\n\t\t}\n\n\t\tthis.CurrentPage = parseInt(eventValue);\n\n\t\tif (this.CurrentPage > this.TotalPages) {\n\t\t\tthis.CurrentPage = this.TotalPages;\n\t\t}\n\t\tthis.UpdatePages();\n\t}\n\tget RenderPanel(): boolean {\n\t\treturn Boolean(this.AdditionalTemplate) || this.ShowSearch || Boolean(this.AdditionalCentralTemplate) || Boolean(this.AdditionalExtendedTemplate);\n\t}\n}\n","<div class=\"prTable\">\n\t@if (RenderPanel) {\n\t\t<div class=\"\">\n\t\t\t<div class=\"prCard__row justify-content-end\">\n\t\t\t\t<div class=\"prCard__actionflex\">\n\t\t\t\t\t@if (AdditionalTemplate) {\n\t\t\t\t\t\t<ng-container *ngTemplateOutlet=\"AdditionalTemplate\"></ng-container>\n\t\t\t\t\t}\n\t\t\t\t</div>\n\t\t\t\t@if (ShowSearch) {\n\t\t\t\t\t<div class=\"ptSearch searchTableGA\">\n\t\t\t\t\t\t<p-iconfield>\n\t\t\t\t\t\t\t<input\n\t\t\t\t\t\t\t\ttype=\"text\"\n\t\t\t\t\t\t\t\tclass=\"prInputText\"\n\t\t\t\t\t\t\t\tpInputText\n\t\t\t\t\t\t\t\tplaceholder=\"{{ 'LBL_SEARCH_SELECT' | term: GlobalTermService.languageCode }}\"\n\t\t\t\t\t\t\t\t[(ngModel)]=\"SearchInput.searchText\"\n\t\t\t\t\t\t\t\t(keydown.enter)=\"ExecuteSearch()\"\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t<p-inputicon>\n\t\t\t\t\t\t\t\t<button class=\"ptSearch__icon ptSearch__icon--close\">\n\t\t\t\t\t\t\t\t\t<i class=\"icon icon-cancel\" *ngIf=\"SearchInput.searchText\" (click)=\"ClearSearch()\"></i>\n\t\t\t\t\t\t\t\t</button>\n\t\t\t\t\t\t\t\t<span class=\"ptSearch__icon ptSearch__icon--divider\" *ngIf=\"SearchInput.searchText\"></span>\n\t\t\t\t\t\t\t\t<button class=\"ptSearch__icon ptSearch__icon--search\" (click)=\"ExecuteSearch()\">\n\t\t\t\t\t\t\t\t\t<i class=\"icon icon-search\"></i>\n\t\t\t\t\t\t\t\t</button>\n\t\t\t\t\t\t\t</p-inputicon>\n\t\t\t\t\t\t</p-iconfield>\n\t\t\t\t\t</div>\n\t\t\t\t}\n\t\t\t\t@if (AdditionalCentralTemplate) {\n\t\t\t\t\t<div class=\"prTableTools__new prTableTools__new--right\">\n\t\t\t\t\t\t<ng-container *ngTemplateOutlet=\"AdditionalCentralTemplate\"></ng-container>\n\t\t\t\t\t</div>\n\t\t\t\t}\n\t\t\t</div>\n\n\t\t\t@if (AdditionalExtendedTemplate) {\n\t\t\t\t<div class=\"prTableTools justify-content-start\">\n\t\t\t\t\t<ng-container *ngTemplateOutlet=\"AdditionalExtendedTemplate\"></ng-container>\n\t\t\t\t</div>\n\t\t\t}\n\t\t</div>\n\t}\n\t<p-table\n\t\tclass=\"prTable\"\n\t\t[ngClass]=\"ClassName\"\n\t\t[value]=\"ListDataTable\"\n\t\tresponsiveLayout=\"scroll\"\n\t\t[(selection)]=\"ListDataSelectedFilter\"\n\t\t(onRowSelect)=\"OnRowSelect($event)\"\n\t\t(onRowUnselect)=\"OnRowUnselect($event)\"\n\t\t[sortField]=\"DefaultSortField\"\n\t\t[scrollable]=\"scrollable\"\n\t\t[scrollHeight]=\"scrollable ? scrollHeight : 'auto'\"\n\t\t[tableStyle]=\"tableStyle\"\n\t\t[sortOrder]=\"DefaultSortOrder\"\n\t>\n\t\t<ng-template pTemplate=\"header\">\n\t\t\t@for (level of Levels; track $index) {\n\t\t\t\t<tr>\n\t\t\t\t\t@for (col of ColumnGroupList; track $index) {\n\t\t\t\t\t\t@if (col.level === level) {\n\t\t\t\t\t\t\t<th [attr.colspan]=\"col.colspan\" [attr.rowspan]=\"col.rowspan\" [pSortableColumn]=\"col.sortable ? col.field : ''\" [style.min-width]=\"col.minWidth\" (click)=\"col.sortable && OnSort(col.field)\">\n\t\t\t\t\t\t\t\t<div>\n\t\t\t\t\t\t\t\t\t<span tooltipStyleClass=\"prTooltip\" [pTooltip]=\"col.headerTooltip\" [tooltipPosition]=\"col.headerTooltipPosition || 'top'\">\n\t\t\t\t\t\t\t\t\t\t{{ col.header }}\n\t\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t\t\t<p-sortIcon *ngIf=\"col.sortable\" [field]=\"col.field\"></p-sortIcon>\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t</th>\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\t@if (ShowCheckbox && level === 0 && ColumnGroupList.length != 0) {\n\t\t\t\t\t\t<th class=\"text-center\" style=\"width: 4%\" [attr.rowspan]=\"MaxLevel === 1 ? 2 : MaxLevel\">\n\t\t\t\t\t\t\t<p-checkbox\n\t\t\t\t\t\t\t\tclass=\"prCheckbox\"\n\t\t\t\t\t\t\t\t[binary]=\"true\"\n\t\t\t\t\t\t\t\t(click)=\"$event.stopPropagation()\"\n\t\t\t\t\t\t\t\t[ngModel]=\"IsHeaderSelectionChecked\"\n\t\t\t\t\t\t\t\t(ngModelChange)=\"OnHeaderSelectionToggle($event)\"\n\t\t\t\t\t\t\t\t[disabled]=\"IsTableDisabled || ListDataFilter.length === 0\"\n\t\t\t\t\t\t\t\t[ngClass]=\"{\n\t\t\t\t\t\t\t\t\t'prCheckbox--indeterminate': IsHeaderSelectionIndeterminate,\n\t\t\t\t\t\t\t\t}\"\n\t\t\t\t\t\t\t></p-checkbox>\n\t\t\t\t\t\t</th>\n\t\t\t\t\t}\n\t\t\t\t</tr>\n\t\t\t}\n\t\t\t<tr>\n\t\t\t\t@for (col of ColumnList; track $index) {\n\t\t\t\t\t@if (col.showHeader) {\n\t\t\t\t\t\t<th\n\t\t\t\t\t\t\t[class]=\"col.className\"\n\t\t\t\t\t\t\t[pSortableColumn]=\"!col.isChecboxColumn && col.sortable ? col.field : ''\"\n\t\t\t\t\t\t\t[style.width]=\"col.width\"\n\t\t\t\t\t\t\t[style.min-width]=\"col.minWidth\"\n\t\t\t\t\t\t\t(click)=\"!col.isChecboxColumn && col.sortable && OnSort(col.field)\"\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<div class=\"prTable__header\">\n\t\t\t\t\t\t\t\t<span tooltipStyleClass=\"prTooltip\" [pTooltip]=\"col.headerTooltip\" [tooltipPosition]=\"col.headerTooltipPosition || 'top'\">\n\t\t\t\t\t\t\t\t\t{{ col.header }}\n\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t\t@if (!col.showIndex) {\n\t\t\t\t\t\t\t\t\t@if (col.isChecboxColumn) {\n\t\t\t\t\t\t\t\t\t\t<br />\n\t\t\t\t\t\t\t\t\t\t<p-checkbox\n\t\t\t\t\t\t\t\t\t\t\tclass=\"prCheckbox\"\n\t\t\t\t\t\t\t\t\t\t\t[binary]=\"true\"\n\t\t\t\t\t\t\t\t\t\t\t(click)=\"$event.stopPropagation()\"\n\t\t\t\t\t\t\t\t\t\t\t[(ngModel)]=\"HeaderState[col.field].checked\"\n\t\t\t\t\t\t\t\t\t\t\t(ngModelChange)=\"OnHeaderCheckboxChange($event, col.field)\"\n\t\t\t\t\t\t\t\t\t\t\t[attr.data-check]=\"col.field\"\n\t\t\t\t\t\t\t\t\t\t\t[disabled]=\"IsTableDisabled\"\n\t\t\t\t\t\t\t\t\t\t\t[ngClass]=\"{\n\t\t\t\t\t\t\t\t\t\t\t\t'prCheckbox--indeterminate': HeaderState[col.field].indeterminate,\n\t\t\t\t\t\t\t\t\t\t\t}\"\n\t\t\t\t\t\t\t\t\t\t></p-checkbox>\n\t\t\t\t\t\t\t\t\t} @else {\n\t\t\t\t\t\t\t\t\t\t<p-sortIcon *ngIf=\"col.sortable\" [field]=\"col.field\"></p-sortIcon>\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t</th>\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t@if (ShowCheckbox && ColumnGroupList.length == 0) {\n\t\t\t\t\t<th class=\"text-center\" style=\"width: 4%\">\n\t\t\t\t\t\t<p-checkbox\n\t\t\t\t\t\t\tclass=\"prCheckbox\"\n\t\t\t\t\t\t\t[binary]=\"true\"\n\t\t\t\t\t\t\t(click)=\"$event.stopPropagation()\"\n\t\t\t\t\t\t\t[ngModel]=\"IsHeaderSelectionChecked\"\n\t\t\t\t\t\t\t(ngModelChange)=\"OnHeaderSelectionToggle($event)\"\n\t\t\t\t\t\t\t[disabled]=\"IsTableDisabled || ListDataFilter.length === 0\"\n\t\t\t\t\t\t\t[ngClass]=\"{\n\t\t\t\t\t\t\t\t'prCheckbox--indeterminate': IsHeaderSelectionIndeterminate,\n\t\t\t\t\t\t\t}\"\n\t\t\t\t\t\t></p-checkbox>\n\t\t\t\t\t</th>\n\t\t\t\t}\n\t\t\t</tr>\n\t\t\t@if (RowResumenList.length && ListDataFilter.length) {\n\t\t\t\t<tr class=\"fixedRow\">\n\t\t\t\t\t@for (col of RowResumenList; track $index) {\n\t\t\t\t\t\t<td [ngClass]=\"col.className\" [attr.colspan]=\"col.colspan\" [attr.rowspan]=\"col.rowspan\">\n\t\t\t\t\t\t\t@if (col.templateRef) {\n\t\t\t\t\t\t\t\t<span>\n\t\t\t\t\t\t\t\t\t<ng-container *ngTemplateOutlet=\"col.templateRef\"></ng-container>\n\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t} @else {\n\t\t\t\t\t\t\t\t<ng-template #defaultContent></ng-template>\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t</td>\n\t\t\t\t\t}\n\t\t\t\t</tr>\n\t\t\t}\n\t\t</ng-template>\n\t\t<ng-template pTemplate=\"body\" let-rowData let-rowIndex=\"rowIndex\">\n\t\t\t<tr>\n\t\t\t\t@for (col of ColumnList; track $index) {\n\t\t\t\t\t<td [ngClass]=\"col.className\">\n\t\t\t\t\t\t@if (col.showIndex) {\n\t\t\t\t\t\t\t{{ rowIndex + 1 + (CurrentPage - 1) * RowsPerPage }}\n\t\t\t\t\t\t} @else {\n\t\t\t\t\t\t\t@if (col.templateRef) {\n\t\t\t\t\t\t\t\t<ng-container *ngTemplateOutlet=\"col.templateRef; context: { $implicit: rowData }\"></ng-container>\n\t\t\t\t\t\t\t} @else if (col.isChecboxColumn) {\n\t\t\t\t\t\t\t\t<p-checkbox [binary]=\"true\" [(ngModel)]=\"rowData[col.field]\" (onChange)=\"onBodyCheckboxChange(col.field)\" [disabled]=\"IsTableDisabled\"></p-checkbox>\n\t\t\t\t\t\t\t} @else {\n\t\t\t\t\t\t\t\t<span class=\"text-breakWord\" tooltipStyleClass=\"prTooltip\" [pTooltip]=\"col.tooltip\" [tooltipPosition]=\"col.tooltipPosition || 'top'\">\n\t\t\t\t\t\t\t\t\t{{ rowData[col.field] | formatCell: col.formatType }}\n\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t</td>\n\t\t\t\t}\n\t\t\t\t@if (ShowCheckbox) {\n\t\t\t\t\t<td class=\"text-center\">\n\t\t\t\t\t\t<p-tableCheckbox [value]=\"rowData\" class=\"prCheckbox\" />\n\t\t\t\t\t</td>\n\t\t\t\t}\n\t\t\t</tr>\n\t\t</ng-template>\n\t\t<ng-template #emptymessage>\n\t\t\t<tr>\n\t\t\t\t<td [attr.colspan]=\"ColumnList.length + (ShowCheckbox ? 1 : 0)\" class=\"text-center\">\n\t\t\t\t\t{{ \"Nodata\" | term: GlobalTermService.languageCode }}\n\t\t\t\t</td>\n\t\t\t</tr>\n\t\t</ng-template>\n\t</p-table>\n\t<div class=\"d-flex justify-content-end\">\n\t\t@if (TotalRecords !== 0 && ShowPagination && TotalPages > 1) {\n\t\t\t<div class=\"ptTablePaginator\">\n\t\t\t\t<p-paginator\n\t\t\t\t\tclass=\"prPaginator paginatorTableGA\"\n\t\t\t\t\t[first]=\"(CurrentPage - 1) * RowsPerPage\"\n\t\t\t\t\t[rows]=\"RowsPerPage\"\n\t\t\t\t\t[totalRecords]=\"TotalRecords\"\n\t\t\t\t\t(onPageChange)=\"OnPageChange($event)\"\n\t\t\t\t\t[showJumpToPageInput]=\"false\"\n\t\t\t\t\t[showCurrentPageReport]=\"false\"\n\t\t\t\t\t[showPageLinks]=\"false\"\n\t\t\t\t\t[showFirstLastIcon]=\"false\"\n\t\t\t\t\t[templateLeft]=\"templateLeft\"\n\t\t\t\t>\n\t\t\t\t\t<ng-template #previouspagelinkicon>\n\t\t\t\t\t\t<i class=\"icon icon-arrow-left paginatorArrowGA\"></i>\n\t\t\t\t\t</ng-template>\n\t\t\t\t\t<ng-template #nextpagelinkicon>\n\t\t\t\t\t\t<i class=\"icon icon-arrow-right paginatorArrowGA\"></i>\n\t\t\t\t\t</ng-template>\n\t\t\t\t\t<ng-template pTemplate=\"templateLeft\" let-state #templateLeft>\n\t\t\t\t\t\t@if (ShowRowPerPage) {\n\t\t\t\t\t\t\t<span>{{ \"ROWS_PER_PAGE\" | term: GlobalTermService.languageCode }}</span>\n\t\t\t\t\t\t\t<p-select\n\t\t\t\t\t\t\t\tpanelStyleClass=\"prSelect paginatorSelectTableGA\"\n\t\t\t\t\t\t\t\tclass=\"prSelect\"\n\t\t\t\t\t\t\t\t[options]=\"AllowedPageSizes\"\n\t\t\t\t\t\t\t\t[ngModel]=\"RowsPerPage\"\n\t\t\t\t\t\t\t\t(onChange)=\"OnRowsPerPageChange($event.value)\"\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t<ng-template #dropdownicon>\n\t\t\t\t\t\t\t\t <i class=\"icon icon-arrow-down\"></i>\n\t\t\t\t\t\t\t\t</ng-template>\n\t\t\t\t\t\t\t</p-select>\n\t\t\t\t\t\t}\n\t\t\t\t\t\t<span>\n\t\t\t\t\t\t\t{{ \"Page\" | term: GlobalTermService.languageCode }}\n\t\t\t\t\t\t\t<p-inputnumber class=\"p-paginator-jtp-input\" inputId=\"integeronly\" [(ngModel)]=\"CurrentPage\" [allowEmpty]=\"false\" [min]=\"1\" (keyup.enter)=\"onChangeSelectPage($event)\" />\n\t\t\t\t\t\t\t{{ \"Of\" | term: GlobalTermService.languageCode }} {{ TotalPages }}\n\t\t\t\t\t\t</span>\n\t\t\t\t\t</ng-template>\n\t\t\t\t</p-paginator>\n\t\t\t</div>\n\t\t}\n\t</div>\n</div>\n","import { CommonModule, DatePipe } from \"@angular/common\";\nimport { AfterContentInit, ChangeDetectorRef, Component, ContentChild, ContentChildren, EventEmitter, inject, Input, OnChanges, Output, QueryList, SimpleChanges, TemplateRef } from \"@angular/core\";\nimport { FormsModule } from \"@angular/forms\";\nimport { BadgeModule } from \"primeng/badge\";\nimport { CheckboxModule } from \"primeng/checkbox\";\nimport { IconField } from \"primeng/iconfield\";\nimport { InputIcon } from \"primeng/inputicon\";\nimport { InputNumber } from \"primeng/inputnumber\";\nimport { InputText, InputTextModule } from \"primeng/inputtext\";\nimport { Paginator } from \"primeng/paginator\";\nimport { Select } from \"primeng/select\";\nimport { TableModule } from \"primeng/table\";\nimport { TooltipModule } from \"primeng/tooltip\";\nimport { FormatCellPipe } from \"../../pipes/formatCell.pipe\";\nimport { TermPipe } from \"intelica-library-base\";\nimport { GlobalTermService } from \"intelica-library-base\";\nimport { ColumnComponent, ColumnGroupComponent, RowResumenComponent } from \"../table/column.component\";\nimport { SortFieldModel } from \"../table/model/sort.model\";\nimport { QueryParametersModel } from \"./model/query.model\";\n\n@Component({\n\tselector: \"intelica-table-fetch\",\n\tstandalone: true,\n\timports: [\n\t\tInputIcon,\n\t\tIconField,\n\t\tInputText,\n\t\tInputTextModule,\n\t\tInputNumber,\n\t\tPaginator,\n\t\tFormsModule,\n\t\tCommonModule,\n\t\tTableModule,\n\t\tSelect,\n\t\tBadgeModule,\n\t\tTooltipModule,\n\t\tTermPipe,\n\t\tCheckboxModule,\n\t\tFormsModule,\n\t\tFormatCellPipe,\n\t],\n\ttemplateUrl: \"./table-fetch.component.html\",\n\tproviders: [FormatCellPipe, DatePipe],\n})\nexport class TableFetchComponent<T> implements OnChanges, AfterContentInit {\n\treadonly GlobalTermService = inject(GlobalTermService);\n\n\t@Input() ComponentId: string = \"\";\n\t@Input() ShowRowPerPage: boolean = true;\n\t@Input() ShowSearch: boolean = false;\n\t@Input() ShowPagination: boolean = false;\n\t@Input() RowsPerPage: number = 10;\n\t@Input() ShowCheckbox: boolean = false;\n\t@Input() ShowIndex: boolean = false;\n\t@Input() ClassName: string = \"\";\n\t@Input() DefaultSortField: string = \"\";\n\t@Input() scrollHeight: string = \"400px\";\n\t@Input() scrollable: boolean = false;\n\t@Input() AllowedPageSizes: number[] = [10, 25, 50, 100];\n\t@Input() tableStyle: { [klass: string]: any } = {};\n\tLevels: number[] = [];\n\t@Input() FilteredList: T[] = [];\n\t@Input() TotalItems: number = 0;\n\tTotalRecords: number = 0;\n\tIsPaginatorInputSearch: boolean = false;\n\n\t@Output() EmitQueryParametersChange = new EventEmitter<QueryParametersModel>();\n\n\t@ContentChildren(ColumnComponent) Columns!: QueryList<ColumnComponent>;\n\t@ContentChildren(ColumnGroupComponent)\n\tColumnGroups!: QueryList<ColumnGroupComponent>;\n\t@ContentChildren(RowResumenComponent)\n\tRowResumenGroups!: QueryList<RowResumenComponent>;\n\n\t@ContentChild(\"additionalTemplate\") AdditionalTemplate?: TemplateRef<any>;\n\t@ContentChild(\"additionalCentralTemplate\")\n\tAdditionalCentralTemplate?: TemplateRef<any>;\n\t@ContentChild(\"additionalExtendedTemplate\")\n\tAdditionalExtendedTemplate?: TemplateRef<any>;\n\t@Output() EmitSortEvent = new EventEmitter<SortFieldModel[]>();\n\n\tColumnList: ColumnComponent[] = [];\n\tColumnGroupList: ColumnGroupComponent[] = [];\n\tRowResumenList: RowResumenComponent[] = [];\n\n\t@Input() CurrentPage: number = 1;\n\t@Input() SortOrder: number = 1;\n\t@Input() SortField: keyof T | null = null;\n\tMaxLevel: number = 0;\n\tListDataTable: T[] = [];\n\tSearchInput: string = \"\";\n\n\tconstructor(private cdr: ChangeDetectorRef) {}\n\n\tngOnChanges(changes: SimpleChanges): void {\n\t\tif (changes[\"FilteredList\"] || changes[\"RowsPerPage\"] || changes[\"CurrentPage\"]) {\n\t\t\tthis.UpdatePages();\n\t\t}\n\n\t\tif (changes[\"SortField\"] || changes[\"SortOrder\"]) {\n\t\t\tthis.EmitSortEvent.emit([\n\t\t\t\t{\n\t\t\t\t\tsortOrder: this.SortOrder,\n\t\t\t\t\tsortField: this.SortField?.toString() ?? \"\",\n\t\t\t\t},\n\t\t\t]);\n\t\t}\n\t}\n\n\tngAfterContentInit() {\n\t\tthis.captureColumns();\n\t\tthis.captureGroups();\n\t\tthis.captureResumen();\n\n\t\tthis.Columns.changes.subscribe(() => {\n\t\t\tthis.captureColumns();\n\t\t\tthis.cdr.markForCheck();\n\t\t});\n\n\t\tthis.ColumnGroups.changes.subscribe(() => {\n\t\t\tthis.captureGroups();\n\t\t\tthis.cdr.markForCheck();\n\t\t});\n\n\t\tthis.RowResumenGroups.changes.subscribe(() => {\n\t\t\tthis.captureResumen();\n\t\t\tthis.cdr.markForCheck();\n\t\t});\n\t}\n\n\tprivate captureColumns() {\n\t\tthis.ColumnList = this.Columns?.toArray() ?? [];\n\t}\n\n\tprivate captureGroups() {\n\t\tthis.ColumnGroupList = this.ColumnGroups?.toArray() ?? [];\n\n\t\tconst levels = this.ColumnGroupList.map(c => c.level);\n\t\tthis.MaxLevel = levels.length ? Math.max(...levels) + 1 : 1;\n\t\tthis.Levels = Array.from({ length: this.MaxLevel }, (_, i) => i);\n\t}\n\n\tprivate captureResumen() {\n\t\tthis.RowResumenList = this.RowResumenGroups?.toArray() ?? [];\n\t}\n\n\tOnSort(field: string) {\n\t\tif (this.SortField === field) {\n\t\t\tthis.SortOrder *= -1;\n\t\t} else {\n\t\t\tthis.SortField = field as keyof T;\n\t\t\tthis.SortOrder = 1;\n\t\t}\n\t\tthis.CurrentPage = 1;\n\t\tthis.ExecuteSearch({});\n\t}\n\tUpdatePages() {\n\t\tif (this.ShowPagination) {\n\t\t\tthis.TotalRecords = this.TotalItems;\n\n\t\t\tconst start = (this.CurrentPage - 1) * this.RowsPerPage;\n\t\t\tconst end = start + this.RowsPerPage;\n\t\t\tthis.ListDataTable = this.FilteredList.slice(start, end);\n\t\t} else {\n\t\t\tthis.ListDataTable = this.FilteredList;\n\t\t}\n\t}\n\n\tOnPageChange(event: { page?: number; rows?: number } | number): void {\n\t\tif (typeof event === \"number\") {\n\t\t\tthis.CurrentPage = event;\n\t\t} else {\n\t\t\tif (typeof event?.rows === \"number\") {\n\t\t\t\tthis.RowsPerPage = event.rows;\n\t\t\t}\n\t\t\tif (typeof event?.page === \"number\") {\n\t\t\t\tthis.CurrentPage = event.page + 1;\n\t\t\t}\n\t\t}\n\t\tthis.IsPaginatorInputSearch = true;\n\t\tthis.ExecuteSearch({});\n\t}\n\n\tResetTable() {\n\t\tthis.CurrentPage = 1;\n\t\tthis.ExecuteSearch({});\n\t}\n\n\tExecuteSearch(event?: any): void {\n\t\tif (event?.fieldText !== undefined && event?.fieldText !== \"\") {\n\t\t\tthis.SearchInput = event;\n\t\t}\n\n\t\tif (this.SearchInput !== undefined && this.SearchInput !== \"\" && !this.IsPaginatorInputSearch) {\n\t\t\tthis.CurrentPage = 1;\n\t\t}\n\n\t\tconst newQueryParameters: QueryParametersModel = {\n\t\t\tFilterValue: this.SearchInput.trim(),\n\t\t\tOrderBy: this.SortField ? String(this.SortField) : undefined,\n\t\t\tSortDirection: this.SortOrder === 1 ? \"asc\" : \"desc\",\n\t\t\tPageNumber: this.CurrentPage,\n\t\t\tPageSize: this.RowsPerPage,\n\t\t};\n\n\t\tthis.EmitQueryParametersChange.emit(newQueryParameters);\n\t\tthis.UpdatePages();\n\t\tthis.IsPaginatorInputSearch = false;\n\t}\n\n\tOnRowsPerPageChange(value: number): void {\n\t\tthis.RowsPerPage = value;\n\t\tthis.CurrentPage = 1;\n\t\tthis.ExecuteSearch({});\n\t}\n\tClearSearch() {\n\t\tthis.SearchInput = \"\";\n\t\tthis.CurrentPage = 1;\n\t\tthis.ExecuteSearch({});\n\t}\n\tget TotalPages(): number {\n\t\treturn Math.ceil(this.TotalRecords / this.RowsPerPage);\n\t}\n\n\tget RenderPanel(): boolean {\n\t\treturn Boolean(this.AdditionalTemplate) || this.ShowSearch || Boolean(this.AdditionalCentralTemplate) || Boolean(this.AdditionalExtendedTemplate);\n\t}\n\n\tonChangeSelectPage(event: any) {\n\t\tthis.IsPaginatorInputSearch = true;\n\t\tconst eventValue: string = event.target.value;\n\t\tif (eventValue === \"\" || isNaN(parseInt(eventValue)) || eventValue === \"0\" || eventValue.indexOf(\"-\") >= 0) {\n\t\t\tthis.CurrentPage = 1;\n\t\t\tthis.ExecuteSearch({});\n\t\t\treturn;\n\t\t}\n\n\t\tthis.CurrentPage = parseInt(eventValue);\n\n\t\tif (this.CurrentPage > this.TotalPages) {\n\t\t\tthis.CurrentPage = this.TotalPages;\n\t\t}\n\t\tthis.ExecuteSearch({});\n\t}\n\n\tOnSearch() {\n\t\tthis.CurrentPage = 1;\n\t\tthis.ExecuteSearch({});\n\t}\n}\n","<div class=\"prTable\">\n\t@if (RenderPanel) {\n\t\t<div class=\" \">\n\t\t\t<div class=\"prCard__row justify-content-end\">\n\t\t\t\t<div class=\"prCard__actionflex\">\n\t\t\t\t\t@if (AdditionalTemplate) {\n\t\t\t\t\t\t<ng-container *ngTemplateOutlet=\"AdditionalTemplate\"></ng-container>\n\t\t\t\t\t}\n\t\t\t\t</div>\n\n\t\t\t\t@if (ShowSearch) {\n\t\t\t\t\t<div class=\"ptSearch searchTableGA\">\n\t\t\t\t\t\t<p-iconfield>\n\t\t\t\t\t\t\t<input type=\"text\" class=\"prInputText\" pInputText placeholder=\"{{ 'LBL_SEARCH_SELECT' | term: GlobalTermService.languageCode }}\" [(ngModel)]=\"SearchInput\" (keydown.enter)=\"OnSearch()\" />\n\t\t\t\t\t\t\t<p-inputicon>\n\t\t\t\t\t\t\t\t<button class=\"ptSearch__icon ptSearch__icon--close\" *ngIf=\"SearchInput\" (click)=\"ClearSearch()\">\n\t\t\t\t\t\t\t\t\t<i class=\"icon icon-cancel\"></i>\n\t\t\t\t\t\t\t\t</button>\n\t\t\t\t\t\t\t\t<span class=\"ptSearch__icon ptSearch__icon--divider\" *ngIf=\"SearchInput\"></span>\n\t\t\t\t\t\t\t\t<button class=\"ptSearch__icon ptSearch__icon--search\" (click)=\"OnSearch()\">\n\t\t\t\t\t\t\t\t\t<i class=\"icon icon-search\"></i>\n\t\t\t\t\t\t\t\t</button>\n\t\t\t\t\t\t\t</p-inputicon>\n\t\t\t\t\t\t</p-iconfield>\n\t\t\t\t\t</div>\n\t\t\t\t}\n\t\t\t\t<!-- -->\n\t\t\t\t@if (AdditionalCentralTemplate) {\n\t\t\t\t\t<div class=\"prTableTools__new prTableTools__new--right\">\n\t\t\t\t\t\t<ng-container *ngTemplateOutlet=\"AdditionalCentralTemplate\"></ng-container>\n\t\t\t\t\t</div>\n\t\t\t\t}\n\t\t\t</div>\n\t\t</div>\n\t\t@if (AdditionalExtendedTemplate) {\n\t\t\t<div class=\"prTableTools justify-content-start\">\n\t\t\t\t<ng-container *ngTemplateOutlet=\"AdditionalExtendedTemplate\"></ng-container>\n\t\t\t</div>\n\t\t}\n\t}\n\t<p-table\n\t\tclass=\"prTable\"\n\t\t[ngClass]=\"ClassName\"\n\t\t[value]=\"FilteredList\"\n\t\tresponsiveLayout=\"scroll\"\n\t\t[sortField]=\"DefaultSortField\"\n\t\t[sortOrder]=\"SortOrder\"\n\t\t[scrollable]=\"scrollable\"\n\t\t[scrollHeight]=\"scrollable ? scrollHeight : 'auto'\"\n\t\t[tableStyle]=\"tableStyle\"\n\t>\n\t\t<!-- Cabecera con columnas agrupadas -->\n\t\t<ng-template pTemplate=\"header\">\n\t\t\t@for (level of Levels; track $index) {\n\t\t\t\t<tr>\n\t\t\t\t\t@for (col of ColumnGroupList; track $index) {\n\t\t\t\t\t\t@if (col.level === level) {\n\t\t\t\t\t\t\t<th [attr.colspan]=\"col.colspan\" [attr.rowspan]=\"col.rowspan\" [pSortableColumn]=\"col.sortable ? col.field : ''\" [style.min-width]=\"col.minWidth\" (click)=\"col.sortable && OnSort(col.field)\">\n\t\t\t\t\t\t\t\t<div>\n\t\t\t\t\t\t\t\t\t<span tooltipStyleClass=\"prTooltip\" F [pTooltip]=\"col.headerTooltip || col.header\" [tooltipPosition]=\"col.headerTooltipPosition || 'top'\">\n\t\t\t\t\t\t\t\t\t\t{{ col.header }}\n\t\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t\t\t<p-sortIcon *ngIf=\"col.sortable\" [field]=\"col.field\"></p-sortIcon>\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t</th>\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\t@if (ShowCheckbox && level === 0 && ColumnGroupList.length != 0) {\n\t\t\t\t\t\t<th class=\"text-center\" style=\"width: 4%\" [attr.rowspan]=\"MaxLevel === 1 ? 2 : MaxLevel\">\n\t\t\t\t\t\t\t<p-tableHeaderCheckbox class=\"prCheckbox\" />\n\t\t\t\t\t\t</th>\n\t\t\t\t\t}\n\t\t\t\t</tr>\n\t\t\t}\n\n\t\t\t<tr>\n\t\t\t\t@for (col of ColumnList; track $index) {\n\t\t\t\t\t@if (col.showHeader) {\n\t\t\t\t\t\t<th\n\t\t\t\t\t\t\t[class]=\"col.className\"\n\t\t\t\t\t\t\t[pSortableColumn]=\"!col.isChecboxColumn && col.sortable ? col.field : ''\"\n\t\t\t\t\t\t\t[style.width]=\"col.width\"\n\t\t\t\t\t\t\t[style.min-width]=\"col.minWidth\"\n\t\t\t\t\t\t\t(click)=\"!col.isChecboxColumn && col.sortable && OnSort(col.field)\"\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<div class=\"prTable__header\">\n\t\t\t\t\t\t\t\t<span tooltipStyleClass=\"prTooltip\" [pTooltip]=\"col.headerTooltip || col.header\" [tooltipPosition]=\"col.headerTooltipPosition || 'top'\">\n\t\t\t\t\t\t\t\t\t{{ col.header }}\n\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t\t@if (!col.showIndex) {\n\t\t\t\t\t\t\t\t\t<p-sortIcon *ngIf=\"col.sortable\" [field]=\"col.field\"></p-sortIcon>\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t</th>\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t@if (ShowCheckbox && ColumnGroupList.length == 0) {\n\t\t\t\t\t<th class=\"text-center\" style=\"width: 4%\">\n\t\t\t\t\t\t<p-tableHeaderCheckbox class=\"prCheckbox\" />\n\t\t\t\t\t</th>\n\t\t\t\t}\n\t\t\t</tr>\n\n\t\t\t@if (FilteredList.length > 0 && RowResumenList.length > 0) {\n\t\t\t\t<tr class=\"fixedRow\">\n\t\t\t\t\t@for (col of RowResumenList; track $index) {\n\t\t\t\t\t\t<td [ngClass]=\"col.className\" [attr.colspan]=\"col.colspan\" [attr.rowspan]=\"col.rowspan\">\n\t\t\t\t\t\t\t@if (col.templateRef) {\n\t\t\t\t\t\t\t\t<span>\n\t\t\t\t\t\t\t\t\t<ng-container *ngTemplateOutlet=\"col.templateRef\"></ng-container>\n\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t</td>\n\t\t\t\t\t}\n\t\t\t\t</tr>\n\t\t\t}\n\t\t</ng-template>\n\n\t\t<!-- Cuerpo de la tabla -->\n\t\t<ng-template pTemplate=\"body\" let-rowData let-rowIndex=\"rowIndex\">\n\t\t\t<tr>\n\t\t\t\t@for (col of ColumnList; track $index) {\n\t\t\t\t\t<td [ngClass]=\"col.className\">\n\t\t\t\t\t\t@if (col.showIndex) {\n\t\t\t\t\t\t\t{{ rowIndex + 1 + (CurrentPage - 1) * RowsPerPage }}\n\t\t\t\t\t\t} @else {\n\t\t\t\t\t\t\t@if (col.templateRef) {\n\t\t\t\t\t\t\t\t<ng-container *ngTemplateOutlet=\"col.templateRef; context: { $implicit: rowData }\"></ng-container>\n\t\t\t\t\t\t\t} @else {\n\t\t\t\t\t\t\t\t<span class=\"text-breakWord\" tooltipStyleClass=\"prTooltip\" pTooltip=\"{{ col.tooltip }}\" tooltipPosition=\"{{ col.tooltipPosition }}\">\n\t\t\t\t\t\t\t\t\t{{ rowData[col.field] | formatCell: col.formatType }}\n\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t</td>\n\t\t\t\t}\n\t\t\t\t@if (ShowCheckbox) {\n\t\t\t\t\t<td class=\"text-center\">\n\t\t\t\t\t\t<p-tableCheckbox [value]=\"rowData\" class=\"prCheckbox\" />\n\t\t\t\t\t</td>\n\t\t\t\t}\n\t\t\t</tr>\n\t\t</ng-template>\n\n\t\t<!-- Mensaje cuando no hay datos -->\n\t\t<ng-template pTemplate=\"emptymessage\">\n\t\t\t<tr>\n\t\t\t\t<td [attr.colspan]=\"ColumnList.length + (ShowCheckbox ? 1 : 0)\" class=\"text-center\">\n\t\t\t\t\t{{ \"Nodata\" | term: GlobalTermService.languageCode }}\n\t\t\t\t</td>\n\t\t\t</tr>\n\t\t</ng-template>\n\t</p-table>\n\n\t<!-- <div class=\"prTableToolsBottom\"> -->\n\t<div class=\"d-flex justify-content-end\">\n\t\t@if (TotalRecords !== 0 && ShowPagination) {\n\t\t\t<div class=\"ptTablePaginator\">\n\t\t\t\t<p-paginator\n\t\t\t\t\tclass=\"prPaginator paginatorTableGA\"\n\t\t\t\t\t[first]=\"(CurrentPage - 1) * RowsPerPage\"\n\t\t\t\t\t[rows]=\"RowsPerPage\"\n\t\t\t\t\t[totalRecords]=\"TotalRecords\"\n\t\t\t\t\t(onPageChange)=\"OnPageChange($event)\"\n\t\t\t\t\t[showJumpToPageInput]=\"false\"\n\t\t\t\t\t[showCurrentPageReport]=\"false\"\n\t\t\t\t\t[showPageLinks]=\"false\"\n\t\t\t\t\t[showFirstLastIcon]=\"false\"\n\t\t\t\t\t[templateLeft]=\"templateLeft\"\n\t\t\t\t>\n\t\t\t\t\t<ng-template #previouspagelinkicon>\n\t\t\t\t\t\t<i class=\"icon icon-arrow-left paginatorArrowGA\"></i>\n\t\t\t\t\t</ng-template>\n\t\t\t\t\t<ng-template #nextpagelinkicon>\n\t\t\t\t\t\t<i class=\"icon icon-arrow-right paginatorArrowGA\"></i>\n\t\t\t\t\t</ng-template>\n\t\t\t\t\t<ng-template pTemplate=\"templateLeft\" let-state #templateLeft>\n\t\t\t\t\t\t<span>{{ \"ROWS_PER_PAGE\" | term: GlobalTermService.languageCode }}</span>\n\t\t\t\t\t\t<p-select\n\t\t\t\t\t\t\tpanelStyleClass=\"prSelect paginatorSelectTableGA\"\n\t\t\t\t\t\t\tclass=\"prSelect\"\n\t\t\t\t\t\t\t[options]=\"AllowedPageSizes\"\n\t\t\t\t\t\t\t[ngModel]=\"RowsPerPage\"\n\t\t\t\t\t\t\t(onChange)=\"OnRowsPerPageChange($event.value)\"\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<ng-template #dropdownicon>\n\t\t\t\t\t\t\t <i class=\"icon icon-arrow-down\"></i>\n\t\t\t\t\t\t\t</ng-template>\n\t\t\t\t\t\t</p-select>\n\t\t\t\t\t\t<span>\n\t\t\t\t\t\t\t{{ \"Page\" | term: GlobalTermService.languageCode }}\n\t\t\t\t\t\t\t<p-inputnumber class=\"p-paginator-jtp-input\" inputId=\"integeronly\" [(ngModel)]=\"CurrentPage\" [allowEmpty]=\"false\" [min]=\"1\" (keyup.enter)=\"onChangeSelectPage($event)\" />\n\t\t\t\t\t\t\t{{ \"Of\" | term: GlobalTermService.languageCode }} {{ TotalPages }}\n\t\t\t\t\t\t</span>\n\t\t\t\t\t</ng-template>\n\t\t\t\t</p-paginator>\n\t\t\t</div>\n\t\t}\n\t</div>\n</div>\n","import { Component, Input, OnInit } from \"@angular/core\";\nimport { CommonModule } from \"@angular/common\";\nimport { SkeletonModule } from \"primeng/skeleton\";\n\n@Component({\n\tselector: \"intelica-skeleton-table\",\n\timports: [CommonModule, SkeletonModule],\n\ttemplateUrl: \"./skeleton-table.component.html\",\n})\nexport class SkeletonTableComponent implements OnInit {\n\t/**\n\t * @description number of rows to display\n\t * @default 6\n\t * @type number\n\t * @example <intelica-skeleton-table [rows]=\"6\"></intelica-skeleton-table>\n\t */\n\t@Input() rows: 2 | 3 | 4 | 6 | 12 = 6;\n\t/**\n\t * @description number of columns to display\n\t * @default 6\n\t * @type number\n\t * @example <intelica-skeleton-table [columns]=\"6\"></intelica-skeleton-table>\n\t */\n\t@Input() columns: 2 | 3 | 4 | 6 | 12 = 6;\n\n\t@Input() showLeftSkeleton: boolean = true;\n\t@Input() showRightSkeleton: boolean = true;\n\n\tcolumnSizes: string[] = [];\n\n\tngOnInit(): void {\n\t\tconst baseSize = 12 / this.columns;\n\t\tthis.columnSizes = Array.from({ length: this.columns }, (_, i) => {\n\t\t\treturn `col-${baseSize}`;\n\t\t});\n\t}\n\n\tget justifyClass(): string | null {\n\t\tif (this.showLeftSkeleton && this.showRightSkeleton) return \"justify-content-between\";\n\t\tif (this.showLeftSkeleton) return \"justify-content-start\";\n\t\tif (this.showRightSkeleton) return \"justify-content-end\";\n\t\treturn null;\n\t}\n\n\tgetRows() {\n\t\treturn new Array(this.rows);\n\t}\n}\n","<div class=\"skeletonTable\">\n\t<div class=\"mb-2 row\" *ngIf=\"showLeftSkeleton || showRightSkeleton\" [ngClass]=\"justifyClass\">\n\t\t<div class=\"col-1 px-0\" *ngIf=\"showLeftSkeleton\">\n\t\t\t<p-skeleton class=\"prSkeleton\" [height]=\"'3rem'\"></p-skeleton>\n\t\t</div>\n\t\t<div class=\"col-3 px-0\" *ngIf=\"showRightSkeleton\">\n\t\t\t<p-skeleton class=\"prSkeleton\" [height]=\"'3rem'\"></p-skeleton>\n\t\t</div>\n\t</div>\n\n\t<div class=\"row\">\n\t\t<div class=\"col-12 px-0 mb-2\">\n\t\t\t<p-skeleton class=\"prSkeleton\" [height]=\"'4rem'\"></p-skeleton>\n\t\t</div>\n\t</div>\n\t@for (row of getRows(); track $index) {\n\t<div class=\"row borderBottomRow\">\n\t\t@for (column of columnSizes; track $index) {\n\t\t<div class=\"{{ column }} px-0\">\n\t\t\t<div class=\"bodyPaddingTable\">\n\t\t\t\t<p-skeleton class=\"prSkeleton\" [height]=\"'2rem'\"></p-skeleton>\n\t\t\t</div>\n\t\t</div>\n\t\t}\n\t</div>\n\t}\n</div>\n","import { CommonModule, isPlatformBrowser } from \"@angular/common\";\nimport { AfterViewInit, Component, ElementRef, EventEmitter, Inject, Input, Output, PLATFORM_ID } from \"@angular/core\";\nimport * as echarts from \"echarts\";\nimport { EChartsOption } from \"echarts\";\n\n@Component({\n\tselector: \"intelica-echart\",\n\timports: [CommonModule],\n\ttemplateUrl: \"./echart.component.html\",\n})\nexport class EchartComponent implements AfterViewInit {\n\t@Input() config!: EChartsOption | undefined;\n\t@Input() id!: string;\n\t@Input() renderer: \"canvas\" | \"svg\" = \"canvas\";\n\t@Input() containerStyle: { [klass: string]: any } = {\n\t\twidth: \"100%\",\n\t\theight: \"400px\",\n\t};\n\t@Output() event = new EventEmitter<any>();\n\n\tchart!: echarts.ECharts;\n\n\tconstructor(\n\t\tprivate el: ElementRef,\n\t\t@Inject(PLATFORM_ID) private platformId: Object\n\t) {}\n\n\tngAfterViewInit(): void {\n\t\tconst chartElement = this.el.nativeElement.querySelector(`#${this.id}_plot`);\n\t\tif (!this.config) {\n\t\t\tthrow new Error(\"Chart configuration is not set\");\n\t\t}\n\t\tif (!isPlatformBrowser(this.platformId)) {\n\t\t\tthrow new Error(\"Platform is not browser\");\n\t\t}\n\n\t\tif (!chartElement) {\n\t\t\tthrow new Error(\"Plot area not found\");\n\t\t}\n\n\t\tthis.initChart(chartElement);\n\t}\n\n\trefreshChart() {\n\t\tthis.chart.setOption(this.config!);\n\t}\n\n\tresize() {\n\t\tif (this.chart) {\n\t\t\tsetTimeout(() => {\n\t\t\t\tthis.chart.resize();\n\t\t\t}, 1);\n\t\t}\n\t}\n\n\tprivate initChart(chartElement: any) {\n\t\tconst observer = new ResizeObserver(() => this.resize());\n\t\tthis.chart = echarts.init(chartElement, null, { renderer: this.renderer });\n\t\tthis.chart.setOption(this.config!);\n\t\tthis.chart.on(\"click\", params => {\n\t\t\tthis.event.emit(params);\n\t\t});\n\t\tobserver.observe(chartElement);\n\t}\n}\n","<div [id]=\"id + '_plot'\" class=\"chart\" [ngStyle]=\"containerStyle\"></div>\n","import { Component, input, output, signal } from '@angular/core';\nimport { Breadcrumb } from \"primeng/breadcrumb\";\nimport { RouterLink } from \"@angular/router\";\nimport { Tooltip } from 'primeng/tooltip';\nimport { MenuItem } from 'primeng/api';\n\n@Component({\n selector: 'intelica-bread-crumb',\n imports: [Breadcrumb, RouterLink, Tooltip,],\n templateUrl: './bread-crumb.component.html'\n})\nexport class BreadCrumbComponent {\n fullItems = input<MenuItem[]>([]);\n itemClick = output<MenuItem>();\n}\n","<p-breadcrumb class=\"prBreadcrumb\" [model]=\"fullItems()\">\n <ng-template pTemplate=\"item\" let-item>\n <a [routerLink]=\"item.routerLink\" [pTooltip]=\"item.tooltip\" tooltipStyleClass=\"prTooltip\"\n [tooltipPosition]=\"item.tooltipPosition\" [tooltipStyleClass]=\"item.tooltipStyleClass\">\n <span>{{ item.label }}</span>\n </a>\n </ng-template>\n <ng-template pTemplate=\"separator\">\n <span class=\"breadcrumb-separator\">\n <i class=\"icon icon-arrow-right icon--xs\"></i>\n </span>\n </ng-template>\n</p-breadcrumb>","import { Component, input, output } from '@angular/core';\nimport { Button } from 'primeng/button';\n\n@Component({\n selector: 'intelica-title',\n imports: [Button],\n templateUrl: './title.component.html'\n})\nexport class TitleComponent {\n title = input<string>('');\n back = output<void>();\n}\n","<div class=\"ptSectionTitle\">\n <div class=\"ptSectionTitle__icon\">\n <p-button class=\"prButton\" icon=\"icon icon-nav-left\" (onClick)=\"back.emit()\" />\n </div>\n <div class=\"ptSectionTitle__content\">\n <div class=\"ptSectionTitle__title\">\n {{ title() }}\n </div>\n </div>\n</div>","import { HttpClient } from \"@angular/common/http\";\nimport { Injectable, inject } from \"@angular/core\";\nimport { ConfigService } from \"intelica-library-base\";\nimport { EmbedVisualCommand, EmbedWithoutVisualCommand } from \"../dto/embed-visual-command\";\nimport { EmbedVisualUrlResponse } from \"../dto/embed-visual-url-response\";\nimport { createEmbeddingContext, DashboardExperience, VisualExperience } from \"amazon-quicksight-embedding-sdk\";\nimport { firstValueFrom } from \"rxjs\";\nimport { EmbedDashboardCommand } from \"../dto/embed-dashboard-command\";\nimport { QuicksightEmbedOptions, QuicksightEvent, QuicksightVisualConfig } from \"../model/quicksight.model\";\n\n@Injectable({\n\tprovidedIn: \"root\",\n})\nexport class Shared {\n\tprivate readonly http = inject(HttpClient);\n\tprivate readonly configService = inject(ConfigService);\n\tprivate readonly path = `${this.configService.environment?.sharedPath}`;\n\tgetEmbedUrl(command: EmbedDashboardCommand) {\n\t\treturn this.http.post<string>(`${this.path}/quicksight-embed-url`, command);\n\t}\n\tgetEmbedVisualUrl(command: EmbedVisualCommand) {\n\t\treturn this.http.post<EmbedVisualUrlResponse>(`${this.path}/quicksight-embed-visual-url`, command);\n\t}\n\tgetEmbedVisualUrlsAnonymous(command: EmbedVisualCommand) {\n\t\treturn this.http.post<EmbedVisualUrlResponse>(`${this.path}/quicksight-embed-visual-anonymous`, command);\n\t}\n\tasync createEmbedContext(embedUrl: string, container: HTMLElement, options?: QuicksightEmbedOptions): Promise<void> {\n\t\tconst embeddingContext = await createEmbeddingContext();\n\t\tawait embeddingContext.embedDashboard({\n\t\t\turl: embedUrl,\n\t\t\tcontainer,\n\t\t\t...(options?.height && { height: options.height }),\n\t\t\t...(options?.width && { width: options.width }),\n\t\t\t...(options?.onMessage && { onMessage: this.toSdkMessageListener(options.onMessage) }),\n\t\t});\n\t}\n\tasync embedDashboard(command: EmbedDashboardCommand, container: HTMLElement, options?: QuicksightEmbedOptions): Promise<void> {\n\t\tcontainer.replaceChildren();\n\t\tconst embedUrl = await firstValueFrom(this.getEmbedUrl(command));\n\t\tawait this.createEmbedContext(embedUrl, container, options);\n\t}\n\tasync embedDashboardInteractive(command: EmbedDashboardCommand, container: HTMLElement, options?: QuicksightEmbedOptions): Promise<DashboardExperience> {\n\t\tcontainer.replaceChildren();\n\t\tconst embedUrl = await firstValueFrom(this.getEmbedUrl({ ...command, parameters: undefined }));\n\t\tconst embeddingContext = await createEmbeddingContext();\n\t\tconst sdkParameters = command.parameters ? Object.entries(command.parameters).map(([Name, Values]) => ({ Name, Values })) : undefined;\n\t\treturn await embeddingContext.embedDashboard(\n\t\t\t{\n\t\t\t\turl: embedUrl,\n\t\t\t\tcontainer,\n\t\t\t\t...(options?.height && { height: options.height }),\n\t\t\t\t...(options?.width && { width: options.width }),\n\t\t\t\t...(options?.onMessage && { onMessage: this.toSdkMessageListener(options.onMessage) }),\n\t\t\t},\n\t\t\tsdkParameters ? { parameters: sdkParameters } : undefined\n\t\t);\n\t}\n\tprivate toSdkMessageListener(emit: (event: QuicksightEvent) => void) {\n\t\treturn (changeEvent: any) => {\n\t\t\temit({\n\t\t\t\teventName: changeEvent?.eventName,\n\t\t\t\teventLevel: changeEvent?.eventLevel,\n\t\t\t\tmessage: changeEvent?.message,\n\t\t\t\tdata: changeEvent?.data,\n\t\t\t});\n\t\t};\n\t}\n\tasync setDashboardParameters(dashboard: DashboardExperience, parameters: Record<string, string[]>): Promise<void> {\n\t\tconst sdkParameters = Object.entries(parameters).map(([Name, Values]) => ({ Name, Values }));\n\t\tawait dashboard.setParameters(sdkParameters);\n\t}\n\tasync createEmbedVisualContext(embedUrl: string, container: HTMLElement, options?: { height?: string; width?: string }): Promise<void> {\n\t\tconst embeddingContext = await createEmbeddingContext();\n\t\tawait embeddingContext.embedVisual(\n\t\t\t{\n\t\t\t\turl: embedUrl,\n\t\t\t\tcontainer,\n\t\t\t\t...(options?.height && { height: options.height }),\n\t\t\t\t...(options?.width && { width: options.width }),\n\t\t\t},\n\t\t\t{ scaleToContainer: true, fitToIframeWidth: false } as any\n\t\t);\n\t}\n\tasync embedSequentialVisuals(command: EmbedWithoutVisualCommand, configs: QuicksightVisualConfig[], onVisualLoaded?: (visualId: string) => void): Promise<void> {\n\t\tfor (const config of configs) {\n\t\t\tconfig.container?.nativeElement?.replaceChildren();\n\t\t\tconst { visual } = await firstValueFrom(this.getEmbedVisualUrl({ dashboardId: command.dashboardId, sheetId: command.sheetId, visualId: config.visualId, parameters: command.parameters }));\n\t\t\tif (!visual) continue;\n\t\t\tawait this.createEmbedVisualContext(visual.embedUrl, config.container.nativeElement);\n\t\t\tonVisualLoaded?.(config.visualId);\n\t\t}\n\t}\n\tasync embedSequentialVisualsInteractive(\n\t\tcommand: EmbedWithoutVisualCommand,\n\t\tconfigs: QuicksightVisualConfig[],\n\t\tonVisualLoaded?: (visualId: string, ref: VisualExperience) => void\n\t): Promise<Map<string, VisualExperience>> {\n\t\tconst refs = new Map<string, VisualExperience>();\n\t\tconst sdkParameters = command.parameters ? Object.entries(command.parameters).map(([Name, Values]) => ({ Name, Values })) : undefined;\n\t\tfor (const config of configs) {\n\t\t\tconfig.container?.nativeElement?.replaceChildren();\n\t\t\tconst { visual } = await firstValueFrom(this.getEmbedVisualUrl({ dashboardId: command.dashboardId, sheetId: command.sheetId, visualId: config.visualId, parameters: {} }));\n\t\t\tif (!visual) continue;\n\t\t\tconst embeddingContext = await createEmbeddingContext();\n\t\t\tconst visualRef = await embeddingContext.embedVisual({ url: visual.embedUrl, container: config.container.nativeElement }, {\n\t\t\t\tscaleToContainer: true,\n\t\t\t\tfitToIframeWidth: false,\n\t\t\t\t...(sdkParameters ? { parameters: sdkParameters } : {}),\n\t\t\t} as any);\n\t\t\trefs.set(config.visualId, visualRef);\n\t\t\tonVisualLoaded?.(config.visualId, visualRef);\n\t\t}\n\t\treturn refs;\n\t}\n\tasync setVisualParameters(visual: VisualExperience, parameters: Record<string, string[]>): Promise<void> {\n\t\tconst sdkParameters = Object.entries(parameters).map(([Name, Values]) => ({ Name, Values }));\n\t\tawait visual.setParameters(sdkParameters);\n\t}\n\tasync setVisualsParameters(visuals: Iterable<VisualExperience>, parameters: Record<string, string[]>): Promise<void> {\n\t\tconst sdkParameters = Object.entries(parameters).map(([Name, Values]) => ({ Name, Values }));\n\t\tawait Promise.all([...visuals].map(v => v.setParameters(sdkParameters)));\n\t}\n}\n","export const QuicksightEventName = {\n\tERROR_OCCURRED: \"ERROR_OCCURRED\",\n\tCONTENT_LOADED: \"CONTENT_LOADED\",\n\tPARAMETERS_CHANGED: \"PARAMETERS_CHANGED\",\n\tSIZE_CHANGED: \"SIZE_CHANGED\",\n\tSELECTED_SHEET_CHANGED: \"SELECTED_SHEET_CHANGED\",\n\tMODAL_OPENED: \"MODAL_OPENED\",\n\tEXPERIENCE_INITIALIZED: \"EXPERIENCE_INITIALIZED\",\n} as const;\n\nexport const QUICKSIGHT_AUTH_ERROR_CODES = [\"Forbidden\", \"Unauthorized\", \"EmbeddingNotAuthorized\", \"TokenExpired\"];\n","import { QUICKSIGHT_AUTH_ERROR_CODES, QuicksightEventName } from \"../constants/quicksight.constants\";\nimport { QuicksightEvent, QuicksightEventOutputs } from \"../model/quicksight.model\";\n\nexport function isQuicksightSessionExpiredEvent(event: QuicksightEvent): boolean {\n\tif (event.eventName !== QuicksightEventName.ERROR_OCCURRED) return false;\n\tconst code = event.data?.errorCode ?? event.data?.code ?? \"\";\n\treturn typeof code === \"string\" && QUICKSIGHT_AUTH_ERROR_CODES.some(c => code.includes(c));\n}\n\nexport function dispatchQuicksightEvent(event: QuicksightEvent, outputs: QuicksightEventOutputs): void {\n\toutputs.sdkEvent.emit(event);\n\tif (event.eventName === QuicksightEventName.CONTENT_LOADED) outputs.contentLoaded?.emit(event);\n\tif (event.eventName === QuicksightEventName.ERROR_OCCURRED) {\n\t\toutputs.errorOccurred?.emit(event);\n\t\tif (isQuicksightSessionExpiredEvent(event)) outputs.sessionExpired?.emit(event);\n\t}\n}\n","import { Component, computed, effect, ElementRef, inject, input, output, QueryList, signal, ViewChildren } from '@angular/core';\nimport { Shared } from '../../services/shared';\nimport { dispatchQuicksightEvent } from '../../functions/quicksight-event.util';\nimport { QuicksightEvent } from '../../model/quicksight.model';\nimport { QuicksightEventName } from '../../constants/quicksight.constants';\nimport { ActivatedRoute } from '@angular/router';\nimport { toSignal } from '@angular/core/rxjs-interop';\nimport { Panel } from \"primeng/panel\";\nimport { Skeleton } from \"primeng/skeleton\";\n\n@Component({\n selector: 'intelica-dashboard-qs',\n imports: [Skeleton, Panel],\n templateUrl: './dashboard-qs.component.html'\n})\nexport class DashboardQsComponent {\n private readonly sharedService = inject(Shared);\n private readonly route = inject(ActivatedRoute);\n @ViewChildren('visualContainer') containers!: QueryList<ElementRef>;\n readonly dashboardIdInput = input<string | undefined>(undefined, { alias: 'dashboardId' });\n readonly parametersInput = input<Record<string, string[]> | undefined>(undefined, { alias: 'parameters' });\n readonly heightInput = input<string | undefined>(undefined, { alias: 'height' });\n private readonly routeData = toSignal(this.route.data, { initialValue: this.route.snapshot.data });\n readonly dashboardId = computed(() => this.dashboardIdInput() ?? (this.routeData()['dashboardId'] as string | undefined));\n readonly parameters = computed(() => this.parametersInput() ?? (this.routeData()['parameters'] as Record<string, string[]> | undefined));\n readonly height = computed(() => this.heightInput() ?? (this.routeData()['height'] as string | undefined));\n readonly isLoading = signal(true);\n readonly isLoadingChange = output<boolean>();\n readonly sdkEvent = output<QuicksightEvent>();\n readonly contentLoaded = output<QuicksightEvent>();\n readonly errorOccurred = output<QuicksightEvent>();\n readonly sessionExpired = output<QuicksightEvent>();\n private readonly viewReady = signal(false);\n constructor() {\n effect(() => {\n this.isLoadingChange.emit(this.isLoading());\n });\n effect(() => {\n const id = this.dashboardId();\n const parameters = this.parameters();\n if (!this.viewReady() || !id) return;\n this.EmbedDashboard(id, parameters);\n });\n }\n ngAfterViewInit(): void {\n this.viewReady.set(true);\n }\n async EmbedDashboard(dashboardId: string, parameters: Record<string, string[]> | undefined): Promise<void> {\n const container = this.containers.first?.nativeElement;\n if (!container) return;\n this.isLoading.set(true);\n try {\n await this.sharedService.embedDashboard(\n { dashboardId, parameters },\n container,\n {\n height: this.height() ?? `${window.innerHeight - 50}px`,\n onMessage: event => {\n dispatchQuicksightEvent(event, this);\n if (event.eventName === QuicksightEventName.CONTENT_LOADED || event.eventName === QuicksightEventName.ERROR_OCCURRED)\n this.isLoading.set(false);\n },\n }\n );\n } catch (error) {\n console.error('Error embedding dashboard:', error);\n this.isLoading.set(false);\n }\n }\n}\n","@if (isLoading()) {\n<div class=\"u-display-flex u-flex-column u-gap-sm\">\n <div class=\"u-display-flex u-background-white u-px-1 u-pt-1\">\n <div class=\"u-display-flex u-flex-column u-px-1\" style=\"height: 33px\">\n <p-skeleton class=\"prSkeleton u-m-auto\" [width]=\"'61px'\" [height]=\"'14px'\" />\n <p-skeleton class=\"prSkeleton\" [width]=\"'100%'\" [height]=\"'2px'\" />\n </div>\n <div class=\"u-display-flex u-flex-column u-px-1\" style=\"height: 33px\">\n <p-skeleton class=\"prSkeleton u-m-auto\" [width]=\"'61px'\" [height]=\"'14px'\" />\n <p-skeleton class=\"prSkeleton\" [width]=\"'100%'\" [height]=\"'2px'\" />\n </div>\n </div>\n <div class=\"u-display-flex u-flex-column u-gap-sm\">\n <p-panel class=\"prPanel u-flex-grow-1 u-flex-basis-0 u-shadow-none\" showHeader=\"false\">\n <p-skeleton class=\"prSkeleton\" [width]=\"'100%'\" [height]=\"'100%'\" style=\"aspect-ratio: 1061.57 / 93.02\" />\n </p-panel>\n </div>\n <div class=\"u-display-flex u-flex-row u-gap-sm\">\n @for (_ of [].constructor(4); track $index) {\n <p-panel class=\"prPanel u-flex-grow-1 u-flex-basis-0 u-shadow-none\" showHeader=\"false\">\n <p-skeleton class=\"prSkeleton\" [width]=\"'100%'\" [height]=\"'100%'\" style=\"aspect-ratio: 244.87 / 123.12\" />\n </p-panel>\n }\n </div>\n <div class=\"u-display-flex u-flex-column u-gap-sm\">\n <p-panel class=\"prPanel u-flex-grow-1 u-flex-basis-0 u-shadow-none\" showHeader=\"false\">\n <p-skeleton class=\"prSkeleton\" [width]=\"'100%'\" [height]=\"'100%'\" style=\"aspect-ratio: 1061.57 / 303.7\" />\n </p-panel>\n </div>\n <div class=\"u-display-flex u-flex-row u-gap-sm\">\n @for (_ of [].constructor(2); track $index) {\n <p-panel class=\"prPanel u-flex-grow-1 u-flex-basis-0 u-shadow-none\" showHeader=\"false\">\n <p-skeleton class=\"prSkeleton\" [width]=\"'100%'\" [height]=\"'100%'\" style=\"aspect-ratio: 517.1 / 123.12\" />\n </p-panel>\n }\n </div>\n</div>\n}\n<div #visualContainer [style.height]=\"height()\" [hidden]=\"isLoading()\"></div>","import { Component, computed, effect, ElementRef, inject, input, output, QueryList, signal, ViewChildren } from '@angular/core';\nimport { Shared } from '../../services/shared';\nimport { dispatchQuicksightEvent } from '../../functions/quicksight-event.util';\nimport { QuicksightEvent } from '../../model/quicksight.model';\nimport { QuicksightEventName } from '../../constants/quicksight.constants';\nimport { ActivatedRoute } from '@angular/router';\nimport { toSignal } from '@angular/core/rxjs-interop';\nimport { DashboardExperience } from 'amazon-quicksight-embedding-sdk';\nimport { Panel } from \"primeng/panel\";\nimport { Skeleton } from \"primeng/skeleton\";\n@Component({\n selector: 'intelica-dashboard-qs-interactive',\n imports: [Skeleton, Panel],\n templateUrl: './dashboard-qs-interactive.component.html'\n})\nexport class DashboardQsInteractiveComponent {\n private readonly sharedService = inject(Shared);\n private readonly route = inject(ActivatedRoute);\n @ViewChildren('visualContainer') containers!: QueryList<ElementRef>;\n readonly dashboardIdInput = input<string | undefined>(undefined, { alias: 'dashboardId' });\n readonly parametersInput = input<Record<string, string[]> | undefined>(undefined, { alias: 'parameters' });\n readonly heightInput = input<string | undefined>(undefined, { alias: 'height' });\n private readonly routeData = toSignal(this.route.data, { initialValue: this.route.snapshot.data });\n readonly dashboardId = computed(() => this.dashboardIdInput() ?? (this.routeData()['dashboardId'] as string | undefined));\n readonly parameters = computed(() => this.parametersInput() ?? (this.routeData()['parameters'] as Record<string, string[]> | undefined));\n readonly height = computed(() => this.heightInput() ?? (this.routeData()['height'] as string | undefined));\n readonly isLoading = signal(true);\n readonly isLoadingChange = output<boolean>();\n readonly sdkEvent = output<QuicksightEvent>();\n readonly contentLoaded = output<QuicksightEvent>();\n readonly errorOccurred = output<QuicksightEvent>();\n readonly sessionExpired = output<QuicksightEvent>();\n private readonly viewReady = signal(false);\n private dashboardRef: DashboardExperience | null = null;\n private lastEmbeddedId: string | undefined = undefined;\n constructor() {\n effect(() => {\n this.isLoadingChange.emit(this.isLoading());\n });\n effect(() => {\n const id = this.dashboardId();\n if (!this.viewReady() || !id) return;\n if (id === this.lastEmbeddedId) return;\n this.lastEmbeddedId = id;\n this.firstEmbed(id);\n });\n effect(() => {\n const params = this.parameters();\n if (!this.dashboardRef || !params) return;\n this.isLoading.set(true);\n this.sharedService.setDashboardParameters(this.dashboardRef, params)\n .finally(() => setTimeout(() => this.isLoading.set(false), 2000));\n });\n }\n ngAfterViewInit(): void {\n this.viewReady.set(true);\n }\n async firstEmbed(dashboardId: string): Promise<void> {\n const container = this.containers.first?.nativeElement;\n if (!container) return;\n this.isLoading.set(true);\n try {\n this.dashboardRef = await this.sharedService.embedDashboardInteractive(\n { dashboardId, parameters: this.parameters() },\n container,\n {\n height: this.height() ?? `${window.innerHeight - 50}px`,\n onMessage: event => {\n dispatchQuicksightEvent(event, this);\n if (event.eventName === QuicksightEventName.CONTENT_LOADED || event.eventName === QuicksightEventName.ERROR_OCCURRED)\n this.isLoading.set(false);\n },\n }\n );\n } catch (error) {\n console.error('Error embedding dashboard:', error);\n this.isLoading.set(false);\n }\n }\n}\n","@if (isLoading()) {\n<div class=\"u-display-flex u-flex-column u-gap-sm\">\n <div class=\"u-display-flex u-background-white u-px-1 u-pt-1\">\n <div class=\"u-display-flex u-flex-column u-px-1\" style=\"height: 33px\">\n <p-skeleton class=\"prSkeleton u-m-auto\" [width]=\"'61px'\" [height]=\"'14px'\" />\n <p-skeleton class=\"prSkeleton\" [width]=\"'100%'\" [height]=\"'2px'\" />\n </div>\n <div class=\"u-display-flex u-flex-column u-px-1\" style=\"height: 33px\">\n <p-skeleton class=\"prSkeleton u-m-auto\" [width]=\"'61px'\" [height]=\"'14px'\" />\n <p-skeleton class=\"prSkeleton\" [width]=\"'100%'\" [height]=\"'2px'\" />\n </div>\n </div>\n <div class=\"u-display-flex u-flex-column u-gap-sm\">\n <p-panel class=\"prPanel u-flex-grow-1 u-flex-basis-0 u-shadow-none\" showHeader=\"false\">\n <p-skeleton class=\"prSkeleton\" [width]=\"'100%'\" [height]=\"'100%'\" style=\"aspect-ratio: 1061.57 / 93.02\" />\n </p-panel>\n </div>\n <div class=\"u-display-flex u-flex-row u-gap-sm\">\n @for (_ of [].constructor(4); track $index) {\n <p-panel class=\"prPanel u-flex-grow-1 u-flex-basis-0 u-shadow-none\" showHeader=\"false\">\n <p-skeleton class=\"prSkeleton\" [width]=\"'100%'\" [height]=\"'100%'\" style=\"aspect-ratio: 244.87 / 123.12\" />\n </p-panel>\n }\n </div>\n <div class=\"u-display-flex u-flex-column u-gap-sm\">\n <p-panel class=\"prPanel u-flex-grow-1 u-flex-basis-0 u-shadow-none\" showHeader=\"false\">\n <p-skeleton class=\"prSkeleton\" [width]=\"'100%'\" [height]=\"'100%'\" style=\"aspect-ratio: 1061.57 / 303.7\" />\n </p-panel>\n </div>\n <div class=\"u-display-flex u-flex-row u-gap-sm\">\n @for (_ of [].constructor(2); track $index) {\n <p-panel class=\"prPanel u-flex-grow-1 u-flex-basis-0 u-shadow-none\" showHeader=\"false\">\n <p-skeleton class=\"prSkeleton\" [width]=\"'100%'\" [height]=\"'100%'\" style=\"aspect-ratio: 517.1 / 123.12\" />\n </p-panel>\n }\n </div>\n</div>\n}\n<div #visualContainer [style.height]=\"height()\" [hidden]=\"isLoading()\"></div>","import { inject, Injectable } from \"@angular/core\";\nimport { distinctUntilChanged, map, Observable } from \"rxjs\";\nimport { GlobalFavoriteService, GlobalTermService } from \"intelica-library-base\";\n\n@Injectable({\n\tprovidedIn: \"root\",\n})\nexport class AddFavoritesService {\n\tprivate readonly favoritesService = inject(GlobalFavoriteService);\n\tprivate readonly globalTermService = inject(GlobalTermService);\n\n\tpublic addPageToFavorites(): Observable<void> {\n\t\treturn this.favoritesService.create().pipe(map(() => void 0));\n\t}\n\n\tpublic isPageFavorite(pageRoot?: string): Observable<boolean> {\n\t\tconst resolvedPageRoot = this.resolvePageRoot(pageRoot);\n\t\treturn this.favoritesService.favoritesChanges().pipe(\n\t\t\tmap(() => this.favoritesService.isFavoriteByPageRoot(resolvedPageRoot)),\n\t\t\tdistinctUntilChanged()\n\t\t);\n\t}\n\n\tpublic watchPageFavorite(pageRoot?: string): Observable<boolean> {\n\t\tconst resolvedPageRoot = this.resolvePageRoot(pageRoot);\n\t\treturn this.favoritesService.favoritesChanges().pipe(\n\t\t\tmap(() => this.favoritesService.isFavoriteByPageRoot(resolvedPageRoot)),\n\t\t\tdistinctUntilChanged()\n\t\t);\n\t}\n\n\tpublic removeFromFavorites(pageRoot?: string): Observable<void> {\n\t\tconst resolvedPageRoot = this.resolvePageRoot(pageRoot);\n\t\treturn this.favoritesService.removeFavoriteByPageRoot(resolvedPageRoot);\n\t}\n\n\tprivate resolvePageRoot(pageRoot?: string): string {\n\t\treturn pageRoot?.trim() || this.globalTermService.GetPageRoot();\n\t}\n}\n","import { NgClass } from \"@angular/common\";\nimport { Component, DestroyRef, inject, OnInit, output } from \"@angular/core\";\nimport { takeUntilDestroyed } from \"@angular/core/rxjs-interop\";\nimport { Button } from \"primeng/button\";\nimport { TermPipe, GlobalTermService } from \"intelica-library-base\";\nimport { AddFavoritesService } from \"./add-favorites.service\";\n\nconst ICON_ON = \"icon-favorites-on\";\nconst ICON_OFF = \"icon-favorites-off\";\n\n@Component({\n\tselector: \"intelica-add-favorites\",\n\timports: [Button, TermPipe, NgClass],\n\ttemplateUrl: \"./add-favorites.component.html\",\n})\nexport class AddFavoritesComponent implements OnInit {\n\treadonly termService = inject(GlobalTermService);\n\tprivate readonly addFavoriteService = inject(AddFavoritesService);\n\tprivate readonly destroyRef = inject(DestroyRef);\n\n\treadonly favoriteChanged = output<boolean>();\n\n\tprivate isFavorite = false;\n\tpublic isToggling = false;\n\tpublic iconClass = ICON_OFF;\n\n\tngOnInit(): void {\n\t\tthis.loadInitialState();\n\t}\n\n\ttoggleFavorite(): void {\n\t\tif (this.isToggling) return;\n\t\tthis.isToggling = true;\n\t\tconst nextFavorite = !this.isFavorite;\n\t\tconst action$ = this.isFavorite ? this.addFavoriteService.removeFromFavorites() : this.addFavoriteService.addPageToFavorites();\n\n\t\taction$.subscribe({\n\t\t\tnext: () => {\n\t\t\t\tthis.favoriteChanged.emit(nextFavorite);\n\t\t\t},\n\t\t\tcomplete: () => (this.isToggling = false),\n\t\t\terror: () => (this.isToggling = false),\n\t\t});\n\t}\n\n\tprivate loadInitialState(): void {\n\t\tthis.addFavoriteService\n\t\t\t.watchPageFavorite()\n\t\t\t.pipe(takeUntilDestroyed(this.destroyRef))\n\t\t\t.subscribe({\n\t\t\t\tnext: isFavorite => {\n\t\t\t\t\tthis.isFavorite = isFavorite;\n\t\t\t\t\tthis.updateIcon();\n\t\t\t\t},\n\t\t\t});\n\t}\n\n\tprivate updateIcon(): void {\n\t\tthis.iconClass = this.isFavorite ? ICON_ON : ICON_OFF;\n\t}\n}\n","<p-button class=\"prButton\" severity=\"secondary\" [disabled]=\"isToggling\" (onClick)=\"toggleFavorite()\">\n\t<i class=\"icon p-button-icon-left\" [ngClass]=\"iconClass\" pButtonIcon></i>\n\t<span pButtonLabel>{{ \"ADD_TO_FAVORITES\" | term : termService.languageCode }}</span>\n</p-button>\n","import { HttpClient } from \"@angular/common/http\";\nimport { inject, Injectable } from \"@angular/core\";\nimport { Observable } from \"rxjs\";\nimport { ElementResponse } from \"../dto/elementResponse\";\nimport { ConfigService } from \"intelica-library-base\";\n@Injectable({ providedIn: \"root\" })\nexport class PageElementService {\n\tprivate readonly _http = inject(HttpClient);\n\tprivate readonly _configService = inject(ConfigService);\n\tGetElements(pageRoot: string): Observable<ElementResponse[]> {\n\t\treturn this._http.get<ElementResponse[]>(`${this._configService.environment?.securityPath}/Page/GetAvailableElementsByPageRoot/${pageRoot}`);\n\t}\n}\n","import { inject, Injectable } from \"@angular/core\";\nimport { map, Observable, of, tap } from \"rxjs\";\nimport { ElementResponse } from \"../dto/elementResponse\";\nimport { PageElementService } from \"./pageElement.service\";\n@Injectable({ providedIn: \"root\" })\nexport class ElementService {\n\tElements: ElementResponse[] = [];\n\tPageRoot: string = \"\";\n\tprivate readonly pageElementService = inject(PageElementService);\n\tInitialize$(pageRootValue: string): Observable<void> {\n\t\tif (!pageRootValue) return of();\n\t\tthis.PageRoot = pageRootValue;\n\t\treturn this.pageElementService.GetElements(this.PageRoot).pipe(\n\t\t\ttap(elements => (this.Elements = elements)),\n\t\t\tmap(() => void 0)\n\t\t);\n\t}\n\tHasElement(description: string): boolean {\n\t\treturn this.Elements.some(x => x.elementDescription === description);\n\t}\n}\n","export function darkenColor(input: string, amount = 0.2): string {\n const clamp = (v: number) => Math.max(0, Math.min(255, v));\n const toHex = (v: number) => v.toString(16).padStart(2, '0');\n\n if (input.startsWith('#')) {\n const r = parseInt(input.slice(1, 3), 16);\n const g = parseInt(input.slice(3, 5), 16);\n const b = parseInt(input.slice(5, 7), 16);\n return `#${toHex(clamp(Math.round(r * (1 - amount))))}${toHex(clamp(Math.round(g * (1 - amount))))}${toHex(clamp(Math.round(b * (1 - amount))))}`;\n }\n const m = input.match(/rgba?\\((\\d+),\\s*(\\d+),\\s*(\\d+)(?:,\\s*([\\d.]+))?\\)/i);\n if (m) {\n const r = clamp(Math.round(+m[1] * (1 - amount)));\n const g = clamp(Math.round(+m[2] * (1 - amount)));\n const b = clamp(Math.round(+m[3] * (1 - amount)));\n const a = m[4] !== undefined ? `, ${m[4]}` : '';\n return `rgba(${r}, ${g}, ${b}${a})`;\n }\n return input;\n}","import { Injectable, Pipe, PipeTransform } from \"@angular/core\";\n@Injectable({\n\tprovidedIn: \"root\",\n})\n@Pipe({\n\tname: \"amount\",\n})\nexport class FormatAmountPipe implements PipeTransform {\n\ttransform(value: number | string | null | undefined, shortFormat: boolean = false, decimalPlaces: number = 2, validNegative: boolean = false): string {\n\t\tif (value === null || value === undefined || value == 0) {\n\t\t\treturn \"-\";\n\t\t}\n\n\t\tconst numericValue = typeof value === \"string\" ? Number.parseFloat(value) : value;\n\n\t\tif (Number.isNaN(numericValue)) {\n\t\t\treturn \"-\";\n\t\t}\n\n\t\tlet formattedValue: string;\n\n\t\tif (shortFormat) {\n\t\t\tformattedValue = this.getShortFormat(numericValue, decimalPlaces);\n\t\t} else {\n\t\t\tformattedValue = this.formatWithThousandSeparators(numericValue, decimalPlaces);\n\t\t}\n\n\t\tif (validNegative) {\n\t\t\tif (numericValue < 0) {\n\t\t\t\tformattedValue = `(${formattedValue})`;\n\t\t\t}\n\t\t}\n\n\t\treturn formattedValue;\n\t}\n\n\tprivate getShortFormat(value: number, decimalPlaces: number): string {\n\t\tconst absValue = Math.abs(value);\n\t\tconst suffixes = [\n\t\t\t{ limit: 1e12, suffix: \"T\" },\n\t\t\t{ limit: 1e9, suffix: \"B\" },\n\t\t\t{ limit: 1e6, suffix: \"M\" },\n\t\t\t{ limit: 1e3, suffix: \"K\" },\n\t\t];\n\n\t\tfor (const { limit, suffix } of suffixes) {\n\t\t\tif (absValue >= limit) {\n\t\t\t\treturn (absValue / limit).toFixed(decimalPlaces) + suffix;\n\t\t\t}\n\t\t}\n\n\t\treturn absValue.toFixed(decimalPlaces);\n\t}\n\n\tprivate formatWithThousandSeparators(value: number, decimalPlaces: number): string {\n\t\tconst absValue = Math.abs(value);\n\t\treturn new Intl.NumberFormat(\"en-US\", {\n\t\t\tminimumFractionDigits: decimalPlaces,\n\t\t\tmaximumFractionDigits: decimalPlaces,\n\t\t}).format(absValue);\n\t}\n}\n","import { inject, Injectable } from \"@angular/core\";\nimport {\n\tBarSeriesOption,\n\tDefaultLabelFormatterCallbackParams,\n\tEChartsOption,\n\tGridComponentOption,\n\tLabelFormatterCallback,\n\tLegendComponentOption,\n\tLineSeriesOption,\n\tPieSeriesOption,\n\tTooltipComponentFormatterCallback,\n\tTooltipComponentFormatterCallbackParams,\n\tYAXisComponentOption,\n} from \"echarts\";\nimport { Color, getColor } from \"intelica-library-base\";\nimport { darkenColor } from \"../functions/echart.util\";\nimport { FormatAmountPipe } from \"../pipes/amount.pipe\";\n\n@Injectable({\n\tprovidedIn: \"root\",\n})\nexport class EchartService {\n\tprivate readonly _formatAmountPipe = inject(FormatAmountPipe);\n\n\t/// Chart Generals\n\n\tprivate getDefultAxisConfiguration(type: string, data?: any[], showAxis: boolean = true, showSplitLine: boolean = false): any {\n\t\treturn {\n\t\t\tshow: showAxis,\n\t\t\ttype: type,\n\t\t\tdata: data,\n\t\t\taxisTick: {\n\t\t\t\tshow: false,\n\t\t\t},\n\t\t\taxisLine: {\n\t\t\t\tshow: false,\n\t\t\t\tlineStyle: { color: getColor(\"gray\"), type: \"dashed\" },\n\t\t\t},\n\t\t\tsplitLine: {\n\t\t\t\tshow: showSplitLine,\n\t\t\t\t// lineStyle: {\n\t\t\t\t// \tcolor: Color.gray,\n\t\t\t\t// \ttype: \"dashed\",\n\t\t\t\t// \twidth: 1,\n\t\t\t\t// },\n\t\t\t\tlineStyle: { width: 1, color: Color.gray, type: [5, 5], cap: \"round\" },\n\t\t\t},\n\t\t\taxisLabel: {\n\t\t\t\tfontFamily: \"Lato, sans-serif\",\n\t\t\t\tshow: true,\n\t\t\t\t// show: showAxis,\n\t\t\t\tcolor: Color.gray3,\n\t\t\t\tfontSize: 14,\n\t\t\t\tpadding: 10,\n\t\t\t},\n\t\t};\n\t}\n\n\tprivate getCategoryAxisConfiguration(data: any[]) {\n\t\treturn this.getDefultAxisConfiguration(\"category\", data, true);\n\t}\n\n\tprivate getValueAxisConfiguration(showAxis: boolean = true, format: boolean = true, showAxisLines: boolean = true) {\n\t\tlet axisConfiguration = this.getDefultAxisConfiguration(\"value\", undefined, showAxis, showAxisLines);\n\t\tif (format) {\n\t\t\taxisConfiguration.axisLabel.formatter = (value: number) => {\n\t\t\t\tconst formatted = this._formatAmountPipe.transform(value, true, 0, true);\n\t\t\t\treturn formatted === \"-\" ? 0 : formatted;\n\t\t\t};\n\t\t}\n\t\treturn axisConfiguration;\n\t}\n\n\tprivate getGridConfiguration(): GridComponentOption {\n\t\treturn {\n\t\t\t// left: \"0%\",\n\t\t\t// right: \"0%\",\n\t\t\t// //bottom: '0%',\n\t\t\t// containLabel: true,\n\t\t\tleft: 0,\n\t\t\tright: 0,\n\t\t\ttop: 20,\n\t\t\tbottom: 40,\n\t\t\tcontainLabel: true,\n\t\t};\n\t}\n\n\tprivate getLegendConfiguration(): LegendComponentOption {\n\t\treturn {\n\t\t\t// orient: \"horizontal\", // 'horizontal | vertical'\n\t\t\t// icon: \"circle\",\n\t\t\t// bottom: 5,\n\t\t\t// align: \"auto\",\n\t\t\t// itemGap: 20,\n\t\t\t// textStyle: { color: Color.blue, fontSize: 14 },\n\t\t\tdata: [{ name: \"Expenses\", icon: \"circle\" }],\n\t\t\tbottom: 0,\n\t\t\ttextStyle: {\n\t\t\t\tcolor: \"#4E546F\",\n\t\t\t\tfontFamily: \"Lato, sans-serif\",\n\t\t\t\tfontSize: 12,\n\t\t\t\tlineHeight: 12,\n\t\t\t},\n\t\t\titemWidth: 10,\n\t\t\titemHeight: 10,\n\t\t\titemGap: 25,\n\t\t\talign: \"left\",\n\t\t};\n\t}\n\n\t/**\n\t *\n\t * @param color - Color of the tooltip\n\t * @param title - Title of the tooltip\n\t * @param body - Body of the tooltip\n\t * @returns - Tooltip HTML string\n\t */\n\tgetTooltipFormatter(color: string, title: string, body: string): string {\n\t\tconst titleHtml =\n\t\t\ttitle.length > 0\n\t\t\t\t? `\n\t\t\t<b style=\" font-size: 13px;\">${title} </b><br>\n\t\t\t<hr style=\"border: 1px solid ${color}; margin: 4px 0;\">`\n\t\t\t\t: \"\";\n\t\treturn `\n\t \t<div style=\"font-size: 12px; boder-color: ${color}; color: ${color}; border-radius: 6px; min-width: 120px; text-align: center;\">\n\t\t\t${titleHtml}\n\t\t\t${body}\n\t\t</div>\n\t `;\n\t}\n\n\t/// Charts Configuration\n\n\t/// BAR CHARTS\n\n\t/**\n\t *\n\t * @param categories - Array of categories for the x-axis\n\t * @param series - Array of series data, each containing name, value, and color\n\t * @param labelConfig - Optional label configuration for the bars\n\t * @param tooltipConfig - Optional tooltip configuration for the bars\n\t * @param showLegend - Optional flag to show the legend\n\t * @returns - EChartsOption - Configuration object for the bar chart\n\t */\n\tgetBarChartOptions(\n\t\tcategories: string[],\n\t\tseries: { name: string; value: any; color: string }[],\n\t\tlabelConfig?: LabelFormatterCallback<DefaultLabelFormatterCallbackParams>,\n\t\ttooltipConfig?: TooltipComponentFormatterCallback<TooltipComponentFormatterCallbackParams>,\n\t\tshowLegend: boolean = false\n\t): EChartsOption {\n\t\treturn {\n\t\t\ttextStyle: { fontFamily: \"Lato, sans-serif\" },\n\t\t\txAxis: this.getCategoryAxisConfiguration(categories),\n\t\t\tyAxis: this.getValueAxisConfiguration(),\n\t\t\tseries: [\n\t\t\t\t...series.map(\n\t\t\t\t\t(item): BarSeriesOption => ({\n\t\t\t\t\t\ttype: \"bar\",\n\t\t\t\t\t\tname: item.name,\n\t\t\t\t\t\titemStyle: { color: item.color, borderRadius: 8 },\n\t\t\t\t\t\tdata: item.value,\n\t\t\t\t\t\tbarWidth: \"33%\",\n\t\t\t\t\t\tbarGap: \"0%\",\n\t\t\t\t\t\tlabel: {\n\t\t\t\t\t\t\tshow: true,\n\t\t\t\t\t\t\tposition: \"top\",\n\t\t\t\t\t\t\tcolor: Color.blue,\n\t\t\t\t\t\t\tfontSize: 12,\n\t\t\t\t\t\t\tformatter: labelConfig,\n\t\t\t\t\t\t},\n\t\t\t\t\t})\n\t\t\t\t),\n\t\t\t],\n\t\t\ttooltip: {\n\t\t\t\ttrigger: \"item\",\n\t\t\t\tbackgroundColor: \"#FFFFFF\",\n\t\t\t\tborderWidth: 2,\n\t\t\t\ttextStyle: { fontSize: 12 },\n\t\t\t\tformatter: tooltipConfig,\n\t\t\t\tappendTo: \"body\",\n\t\t\t},\n\t\t\tgrid: this.getGridConfiguration(),\n\t\t\tlegend: showLegend ? this.getLegendConfiguration() : undefined,\n\t\t};\n\t}\n\n\t/**\n\t *\n\t * @param categories - Array of categories for the x-axis\n\t * @param series - Array of series data, each containing name, value, and color\n\t * @param labelConfig - Optional label configuration for the bars\n\t * @param tooltipConfig - Optional tooltip configuration for the bars\n\t * @param showLegend - Optional flag to show the legend\n\t * @returns - EChartsOption - Configuration object for the bar chart\n\t */\n\tgetBarChartStackOptions(\n\t\tcategories: string[],\n\t\tseries: { name: string; value: any; color: string }[],\n\t\tlabelConfig?: LabelFormatterCallback<DefaultLabelFormatterCallbackParams>,\n\t\ttooltipConfig?: TooltipComponentFormatterCallback<TooltipComponentFormatterCallbackParams>,\n\t\tshowLegend: boolean = false\n\t): EChartsOption {\n\t\tlet barBase = this.getBarChartOptions(categories, series, labelConfig, tooltipConfig, showLegend);\n\t\t(barBase.series as BarSeriesOption[]).forEach((serie, index) => {\n\t\t\t// serie.barWidth = \"50%\";\n\t\t\t// serie.barGap = \"0%\";\n\t\t\tserie.barCategoryGap = \"10%\";\n\t\t\tserie.stack = \"total\";\n\t\t\tif (index < series.length - 1) {\n\t\t\t\tserie.label = undefined;\n\t\t\t}\n\t\t});\n\t\treturn barBase;\n\t}\n\n\t/**\n\t *\n\t * @param categories - Array of categories for the y-axis\n\t * @param series - Array of series data, each containing name, value, and color\n\t * @param labelConfig - Optional label configuration for the bars\n\t * @param tooltipConfig - Optional tooltip configuration for the bars\n\t * @param showLegend - Optional flag to show the legend\n\t * @returns - EChartsOption - Configuration object for the bar chart\n\t */\n\tgetBarChartHorizontalOptions(\n\t\tcategories: string[],\n\t\tseries: { name: string; value: any; color: string }[],\n\t\tlabelConfig?: LabelFormatterCallback<DefaultLabelFormatterCallbackParams>,\n\t\ttooltipConfig?: TooltipComponentFormatterCallback<TooltipComponentFormatterCallbackParams>,\n\t\tshowLegend: boolean = false,\n\t\tenableSelectStyle: boolean = false // 👈 nuevo\n\t): EChartsOption {\n\t\tlet barBase = this.getBarChartOptions(categories, series, labelConfig, tooltipConfig, showLegend);\n\t\tbarBase.xAxis = this.getValueAxisConfiguration(false, true, false);\n\t\tbarBase.yAxis = this.getCategoryAxisConfiguration(categories);\n\n\t\t(barBase.series as BarSeriesOption[]).forEach((serie, idx) => {\n\t\t\tif (serie.label) {\n\t\t\t\tserie.label.position = \"right\";\n\t\t\t}\n\n\t\t\tconst baseColor = (serie.itemStyle as any)?.color ?? (series[idx] && series[idx].color) ?? \"#FF8A00\";\n\n\t\t\tserie.itemStyle = {\n\t\t\t\t...(serie.itemStyle || {}),\n\t\t\t\tcolor: baseColor,\n\t\t\t\tborderWidth: 0,\n\t\t\t};\n\n\t\t\tif (enableSelectStyle) {\n\t\t\t\t(serie as any).selectedMode = \"single\";\n\n\t\t\t\tconst selectedColor = darkenColor(String(baseColor), 0.38);\n\n\t\t\t\tserie.select = {\n\t\t\t\t\titemStyle: {\n\t\t\t\t\t\tcolor: selectedColor,\n\t\t\t\t\t\tborderWidth: 0,\n\t\t\t\t\t},\n\t\t\t\t};\n\t\t\t}\n\t\t});\n\n\t\tif (barBase.grid) {\n\t\t\t(barBase.grid as GridComponentOption).left = \"10%\";\n\t\t\t(barBase.grid as GridComponentOption).right = \"10%\";\n\t\t\t(barBase.grid as GridComponentOption).bottom = \"10%\";\n\t\t\t(barBase.grid as GridComponentOption).containLabel = true;\n\t\t}\n\t\treturn barBase;\n\t}\n\n\t/**\n\t *\n\t * @param categories - Array of categories for the y-axis\n\t * @param series - Array of series data, each containing name, value, and color\n\t * @param labelConfig - Optional label configuration for the bars\n\t * @param tooltipConfig - Optional tooltip configuration for the bars\n\t * @param showLegend - Optional flag to show the legend\n\t * @returns - EChartsOption - Configuration object for the bar chart\n\t */\n\tgetBarChartHorizontalStackOptions(\n\t\tcategories: string[],\n\t\tseries: { name: string; value: any; color: string }[],\n\t\tlabelConfig?: LabelFormatterCallback<DefaultLabelFormatterCallbackParams>,\n\t\ttooltipConfig?: TooltipComponentFormatterCallback<TooltipComponentFormatterCallbackParams>,\n\t\tshowLegend: boolean = false\n\t): EChartsOption {\n\t\tlet barBase = this.getBarChartHorizontalOptions(categories, series, labelConfig, tooltipConfig, showLegend);\n\t\t(barBase.series as BarSeriesOption[]).forEach((serie, index) => {\n\t\t\t// serie.barWidth = \"50%\";\n\t\t\t// serie.barGap = \"0%\";\n\t\t\tserie.barCategoryGap = \"10%\";\n\t\t\tserie.stack = \"total\";\n\t\t\tif (serie.label) {\n\t\t\t\tserie.label.position = \"right\";\n\t\t\t}\n\t\t\tif (index < series.length - 1) {\n\t\t\t\tserie.label = undefined;\n\t\t\t}\n\t\t});\n\t\tif (barBase.grid) {\n\t\t\t(barBase.grid as GridComponentOption).left = \"10%\";\n\t\t\t(barBase.grid as GridComponentOption).right = \"10%\";\n\t\t\t(barBase.grid as GridComponentOption).bottom = \"10%\";\n\t\t\t(barBase.grid as GridComponentOption).containLabel = true;\n\t\t}\n\t\treturn barBase;\n\t}\n\n\t/**\n\t *\n\t * @param categories - Array of categories for the y-axis\n\t * @param series - Array of series data, each containing name, value, and color\n\t * @param labelConfig - Optional label configuration for the bars\n\t * @param tooltipConfig - Optional tooltip configuration for the bars\n\t * @param showLegend - Optional flag to show the legend\n\t * @returns - EChartsOption - Configuration object for the bar chart\n\t */\n\tgetBarChartTopOptions(\n\t\tcategories: string[],\n\t\tseries: { name: string; value: any; color: string }[],\n\t\tcategoryWidth: number = 240,\n\t\tlabelConfig?: LabelFormatterCallback<DefaultLabelFormatterCallbackParams>,\n\t\ttooltipConfig?: TooltipComponentFormatterCallback<TooltipComponentFormatterCallbackParams>,\n\t\tshowLegend: boolean = false,\n\t\tcategoryFormatter?: (value: string, index: number) => string\n\t): EChartsOption {\n\t\tconst barBase = this.getBarChartHorizontalOptions(categories, series, labelConfig, tooltipConfig, showLegend, true);\n\n\t\tif (barBase.yAxis) {\n\t\t\tconst y = barBase.yAxis as YAXisComponentOption;\n\t\t\tconst gr = barBase.grid as GridComponentOption;\n\n\t\t\tconst defaultCategoryFormatter = (value: string | number, index: number) => {\n\t\t\t\tconst sangriaBase = \"\\u2008\\u2008\\u2008\\u2008\\u2008\\u2008\\u2009\";\n\t\t\t\tconst lineLength = 35;\n\n\t\t\t\tconst text = String(value ?? \"\");\n\t\t\t\tconst prefix = `${index + 1} - `;\n\n\t\t\t\tconst digitCount = String(index + 1).length;\n\n\t\t\t\tlet extraRepeat = 0;\n\t\t\t\tif (digitCount === 2) extraRepeat = 2;\n\t\t\t\telse if (digitCount === 3) extraRepeat = 5;\n\n\t\t\t\tconst sangria = sangriaBase + \"\\u2008\".repeat(extraRepeat);\n\n\t\t\t\tconst words = text.split(\" \");\n\t\t\t\tconst lines: string[] = [];\n\t\t\t\tlet current = \"\";\n\n\t\t\t\tfor (const w of words) {\n\t\t\t\t\tconst test = current ? `${current} ${w}` : w;\n\t\t\t\t\tif (test.length <= lineLength) current = test;\n\t\t\t\t\telse {\n\t\t\t\t\t\tif (current) lines.push(current);\n\t\t\t\t\t\tcurrent = w;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (current) lines.push(current);\n\n\t\t\t\treturn prefix + lines.map((ln, i) => (i === 0 ? ln : `${sangria}${ln}`)).join(\"\\n\");\n\t\t\t};\n\n\t\t\t// y.inverse = true;\n\t\t\t// y.axisLabel = {\n\t\t\t// \t...y.axisLabel,\n\t\t\t// \tcolor: Color.blue,\n\t\t\t// \tfontSize: 12,\n\t\t\t// \twidth: categoryWidth,\n\t\t\t// \toverflow: \"break\",\n\t\t\t// \talign: \"left\",\n\t\t\t// \tverticalAlign: \"middle\",\n\t\t\t// \tmargin: categoryWidth + 30,\n\t\t\t// \tlineHeight: 16,\n\t\t\t// \tformatter: categoryFormatter || defaultCategoryFormatter,\n\t\t\t// };\n\n\t\t\tgr.top = \"0%\";\n\t\t\tgr.left = -1 * categoryWidth + 60;\n\t\t\tgr.right = 20;\n\t\t\tgr.bottom = \"0%\";\n\t\t\tgr.containLabel = true;\n\t\t}\n\n\t\t(barBase.series as BarSeriesOption[]).forEach(serie => {\n\t\t\tserie.label = {\n\t\t\t\t...(serie.label || {}),\n\t\t\t\tformatter: labelConfig,\n\t\t\t};\n\t\t});\n\n\t\treturn barBase;\n\t}\n\n\t/// LINE CHARTS\n\n\t/**\n\t *\n\t * @param categories - Array of categories for the x-axis\n\t * @param series - Array of series data, each containing name, value, and color\n\t * @param labelConfig - Optional label configuration for the lines\n\t * @param tooltipConfig - Optional tooltip configuration for the lines\n\t * @param showLegend - Optional flag to show the legend\n\t * @returns - EChartsOption - Configuration object for the line chart\n\t */\n\tgetLineChartOptions(\n\t\tcategories: string[],\n\t\tseries: { name: string; value: any; color: string }[],\n\t\tlabelConfig: LabelFormatterCallback<DefaultLabelFormatterCallbackParams>,\n\t\ttooltipConfig?: TooltipComponentFormatterCallback<TooltipComponentFormatterCallbackParams>,\n\t\tshowLegend: boolean = false\n\t): EChartsOption {\n\t\treturn {\n\t\t\txAxis: this.getCategoryAxisConfiguration(categories),\n\t\t\tyAxis: this.getValueAxisConfiguration(true, true, true),\n\t\t\tseries: [\n\t\t\t\t...series.map(\n\t\t\t\t\t(item, seriesIndex): LineSeriesOption => ({\n\t\t\t\t\t\ttype: \"line\",\n\t\t\t\t\t\tname: item.name,\n\t\t\t\t\t\tdata: item.value,\n\t\t\t\t\t\titemStyle: { color: item.color },\n\t\t\t\t\t\tsymbol: \"circle\",\n\t\t\t\t\t\tsymbolSize: 14,\n\t\t\t\t\t\temphasis: {\n\t\t\t\t\t\t\titemStyle: {\n\t\t\t\t\t\t\t\tcolor: item.color,\n\t\t\t\t\t\t\t\tborderColor: item.color + \"40\", // 40 ( hexadecimal ) = .25 ( decimal )\n\t\t\t\t\t\t\t\tborderWidth: 16,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t})\n\t\t\t\t),\n\t\t\t],\n\t\t\ttooltip: {\n\t\t\t\ttrigger: \"item\",\n\t\t\t\tbackgroundColor: \"#FFFFFF\",\n\t\t\t\tborderWidth: 2,\n\t\t\t\ttextStyle: { fontSize: 12 },\n\t\t\t\tformatter: tooltipConfig,\n\t\t\t\tappendTo: \"body\t\",\n\t\t\t},\n\t\t\tdataZoom: [\n\t\t\t\t{\n\t\t\t\t\ttype: \"inside\", // inside | slider\n\t\t\t\t\tshow: true,\n\t\t\t\t\theight: 12,\n\t\t\t\t\tbottom: 10,\n\t\t\t\t\tbackgroundColor: \"#ddd\",\n\t\t\t\t\tborderColor: \"transparent\",\n\t\t\t\t\tfillerColor: \"rgba(150, 150, 150, 0.5)\",\n\t\t\t\t\thandleSize: \"80%\",\n\t\t\t\t\thandleStyle: {\n\t\t\t\t\t\tcolor: \"#A0A0A0\",\n\t\t\t\t\t\tborderColor: \"transparent\",\n\t\t\t\t\t\tshadowBlur: 2,\n\t\t\t\t\t\tshadowColor: \"rgba(0, 0, 0, 0.2)\",\n\t\t\t\t\t},\n\t\t\t\t\tshowDataShadow: false,\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\ttype: \"inside\",\n\t\t\t\t\tshowDataShadow: false,\n\t\t\t\t},\n\t\t\t],\n\t\t\tlegend: showLegend ? this.getLegendConfiguration() : undefined,\n\t\t};\n\t}\n\n\t/// PIE CHARTS\n\n\t/**\n\t *\n\t * @param data - Array of series data, each containing name, value, and color\n\t * @param labelConfig - Optional label configuration\n\t * @param tooltipConfig - Optional tooltip configuration\n\t * @returns - EChartsOption - Configuration object for the pie\n\t */\n\tgetDoughnutPieOptions(\n\t\tdata: { name: string; value: any; color: string }[],\n\t\tlabelConfig: LabelFormatterCallback<DefaultLabelFormatterCallbackParams>,\n\t\ttooltipConfig?: TooltipComponentFormatterCallback<TooltipComponentFormatterCallbackParams>\n\t): EChartsOption {\n\t\treturn {\n\t\t\tseries: <PieSeriesOption[]>[\n\t\t\t\t{\n\t\t\t\t\tdata: data.map(item => ({\n\t\t\t\t\t\t...item,\n\t\t\t\t\t\titemStyle: { color: item.color },\n\t\t\t\t\t})),\n\t\t\t\t\tname: \"Pie Chart\",\n\t\t\t\t\ttype: \"pie\",\n\t\t\t\t\tradius: [\"40%\", \"70%\"],\n\t\t\t\t\tavoidLabelOverlap: false,\n\t\t\t\t\temphasis: {\n\t\t\t\t\t\tscale: true,\n\t\t\t\t\t},\n\t\t\t\t\tlabelLine: {\n\t\t\t\t\t\tshow: true,\n\t\t\t\t\t\tlength: 15,\n\t\t\t\t\t\tlength2: 20,\n\t\t\t\t\t},\n\t\t\t\t\tlabel: {\n\t\t\t\t\t\tshow: true,\n\t\t\t\t\t\tposition: \"outside\",\n\t\t\t\t\t\tcolor: Color.blue,\n\t\t\t\t\t\tfontSize: 14,\n\t\t\t\t\t\tformatter: labelConfig,\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t],\n\t\t\ttooltip: {\n\t\t\t\ttrigger: \"item\",\n\t\t\t\tformatter: tooltipConfig,\n\t\t\t\tappendTo: \"body\",\n\t\t\t\t// extraCssText: this.chartService.getTooltipCssText(),\n\t\t\t},\n\t\t\tlegend: <LegendComponentOption>{\n\t\t\t\torient: \"horizontal\", // 'horizontal | vertical'\n\t\t\t\ticon: \"circle\",\n\t\t\t\tbottom: 5,\n\t\t\t\talign: \"auto\",\n\t\t\t\titemGap: 20,\n\t\t\t\ttextStyle: { color: Color.blue, fontSize: 14 },\n\t\t\t},\n\t\t};\n\t}\n\n\t/**\n\t *\n\t * @param letter - text to show in the center of the pie\n\t * @param value - rate\tvalue\n\t * @param textSize - size of the letter\n\t * @param color - color of the letter and pie\n\t * @param\ttotal - total value for the pie (default is 100)\n\t * @returns\n\t */\n\tgetRateDoughnutPieOptions(letter: string, value: number, textSize: number, color: string, total: number = 100): EChartsOption {\n\t\tconst data = [\n\t\t\t{ name: letter, value: value, itemStyle: { color: color } },\n\t\t\t{\n\t\t\t\tname: \"placeholder\",\n\t\t\t\tvalue: total - value,\n\t\t\t\titemStyle: { color: Color.gray5 },\n\t\t\t},\n\t\t];\n\t\treturn {\n\t\t\ttooltip: {\n\t\t\t\ttrigger: \"none\",\n\t\t\t\tappendTo: \"body\",\n\t\t\t},\n\t\t\tseries: <PieSeriesOption[]>[\n\t\t\t\t{\n\t\t\t\t\tname: \"RateDoughnutPie\",\n\t\t\t\t\ttype: \"pie\",\n\t\t\t\t\ttooltip: {\n\t\t\t\t\t\ttrigger: \"none\",\n\t\t\t\t\t},\n\t\t\t\t\tradius: [\"80%\", \"60%\"],\n\t\t\t\t\tdata: data,\n\t\t\t\t\tstartAngle: 0,\n\t\t\t\t\tselectedMode: false,\n\t\t\t\t\tsilent: true,\n\t\t\t\t\tlabel: {\n\t\t\t\t\t\tshow: true,\n\t\t\t\t\t\tformatter: letter,\n\t\t\t\t\t\tcolor: color,\n\t\t\t\t\t\tposition: \"center\",\n\t\t\t\t\t\tfontWeight: \"bold\",\n\t\t\t\t\t\tfontSize: textSize,\n\t\t\t\t\t\tfontFamily: \"Arial\",\n\t\t\t\t\t\tlineHeight: textSize * -0.22,\n\t\t\t\t\t\talign: \"center\",\n\t\t\t\t\t\tverticalAlign: \"middle\",\n\t\t\t\t\t\tbackgroundColor: \"transparent\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t],\n\t\t};\n\t}\n\n\t/**\n\t * Semi doughnut gauge (half circle) with:\n\t * - Progress arc\n\t * - End dot\n\t * - Center letter\n\t *\n\t * @param letter - Text to show in the center\n\t * @param value - Current value\n\t * @param textSize - Center letter font size\n\t * @param color - Progress and end dot color\n\t * @param total - Max value (default 100)\n\t */\n\tgetRateSemiDoughnutOptions(letter: string, value: number, textSize: number, color: string, total: number = 100, bottomText?: string): EChartsOption {\n\t\tconst safeTotal = total > 0 ? total : 100;\n\t\tconst safeValue = Math.max(0, Math.min(value, safeTotal));\n\n\t\tconst START_ANGLE = 210;\n\t\tconst END_ANGLE = -30;\n\n\t\tconst THICKNESS = 11;\n\t\tconst BACKGROUND_COLOR = \"#D9D9E3\";\n\t\tconst TEXT_COLOR = \"#4F5470\";\n\n\t\tconst MIN_LABEL = \"0\";\n\t\tconst MAX_LABEL = String(safeTotal);\n\t\tconst MIN_MAX_FONT_SIZE = 15;\n\n\t\tconst RADIUS = \"96%\";\n\t\tconst CENTER: [string, string] = [\"50%\", \"50%\"];\n\n\t\tconst dotSizePx = THICKNESS + 5;\n\t\tconst POINTER_LENGTH = \"98%\";\n\n\t\tconst option: EChartsOption = {\n\t\t\ttooltip: { trigger: \"none\", appendTo: \"body\" },\n\t\t\tseries: [\n\t\t\t\t/* ================= GAUGE 1: PROGRESS ================= */\n\t\t\t\t{\n\t\t\t\t\ttype: \"gauge\",\n\t\t\t\t\tradius: RADIUS,\n\t\t\t\t\tcenter: CENTER,\n\t\t\t\t\tstartAngle: START_ANGLE,\n\t\t\t\t\tendAngle: END_ANGLE,\n\t\t\t\t\tmin: 0,\n\t\t\t\t\tmax: safeTotal,\n\n\t\t\t\t\tpointer: { show: false },\n\n\t\t\t\t\tprogress: {\n\t\t\t\t\t\tshow: true,\n\t\t\t\t\t\troundCap: true,\n\t\t\t\t\t\twidth: THICKNESS,\n\t\t\t\t\t\titemStyle: { color },\n\t\t\t\t\t},\n\n\t\t\t\t\taxisLine: {\n\t\t\t\t\t\troundCap: true,\n\t\t\t\t\t\tlineStyle: {\n\t\t\t\t\t\t\twidth: THICKNESS,\n\t\t\t\t\t\t\tcolor: [[1, BACKGROUND_COLOR]],\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\n\t\t\t\t\taxisTick: { show: false },\n\t\t\t\t\tsplitLine: { show: false },\n\t\t\t\t\taxisLabel: { show: false },\n\n\t\t\t\t\tdetail: {\n\t\t\t\t\t\tshow: true,\n\t\t\t\t\t\toffsetCenter: [0, \"8%\"],\n\t\t\t\t\t\tformatter: () => (bottomText ? `{letter|${letter}}\\n{bottom|${bottomText}}` : `{letter|${letter}}`),\n\t\t\t\t\t\trich: {\n\t\t\t\t\t\t\tletter: {\n\t\t\t\t\t\t\t\tfontSize: textSize,\n\t\t\t\t\t\t\t\tfontWeight: 700,\n\t\t\t\t\t\t\t\tcolor: TEXT_COLOR,\n\t\t\t\t\t\t\t\tfontFamily: \"Lato, sans-serif\",\n\t\t\t\t\t\t\t\tlineHeight: textSize + 2,\n\t\t\t\t\t\t\t\talign: \"center\",\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tbottom: {\n\t\t\t\t\t\t\t\tfontSize: 16,\n\t\t\t\t\t\t\t\tfontWeight: 500,\n\t\t\t\t\t\t\t\tcolor: TEXT_COLOR,\n\t\t\t\t\t\t\t\tfontFamily: \"Lato, sans-serif\",\n\t\t\t\t\t\t\t\tlineHeight: 22,\n\t\t\t\t\t\t\t\talign: \"center\",\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\n\t\t\t\t\tdata: [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tvalue: safeValue,\n\t\t\t\t\t\t\tname: \"0\",\n\t\t\t\t\t\t\ttitle: {\n\t\t\t\t\t\t\t\tshow: true,\n\t\t\t\t\t\t\t\tformatter: () => MIN_LABEL,\n\t\t\t\t\t\t\t\toffsetCenter: [\"-80%\", \"66%\"],\n\t\t\t\t\t\t\t\tfontSize: MIN_MAX_FONT_SIZE,\n\t\t\t\t\t\t\t\tcolor: TEXT_COLOR,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tvalue: safeValue,\n\t\t\t\t\t\t\tname: \"100\",\n\t\t\t\t\t\t\ttitle: {\n\t\t\t\t\t\t\t\tshow: true,\n\t\t\t\t\t\t\t\tformatter: () => MAX_LABEL,\n\t\t\t\t\t\t\t\toffsetCenter: [\"80%\", \"66%\"],\n\t\t\t\t\t\t\t\tfontSize: MIN_MAX_FONT_SIZE,\n\t\t\t\t\t\t\t\tcolor: TEXT_COLOR,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t],\n\t\t\t\t} as any,\n\n\t\t\t\t/* ================= GAUGE 2: END DOT ================= */\n\t\t\t\t{\n\t\t\t\t\ttype: \"gauge\",\n\t\t\t\t\tradius: RADIUS,\n\t\t\t\t\tcenter: CENTER,\n\t\t\t\t\tstartAngle: START_ANGLE,\n\t\t\t\t\tendAngle: END_ANGLE,\n\t\t\t\t\tmin: 0,\n\t\t\t\t\tmax: safeTotal,\n\n\t\t\t\t\taxisLine: { show: false },\n\t\t\t\t\tprogress: { show: false },\n\t\t\t\t\tsplitLine: { show: false },\n\t\t\t\t\taxisTick: { show: false },\n\t\t\t\t\taxisLabel: { show: false },\n\t\t\t\t\tdetail: { show: false },\n\n\t\t\t\t\tpointer: {\n\t\t\t\t\t\tshow: true,\n\t\t\t\t\t\ticon: \"circle\",\n\t\t\t\t\t\tlength: POINTER_LENGTH,\n\t\t\t\t\t\twidth: dotSizePx,\n\t\t\t\t\t\titemStyle: {\n\t\t\t\t\t\t\tcolor,\n\t\t\t\t\t\t\tborderWidth: 0,\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\n\t\t\t\t\tdata: [{ value: safeValue }],\n\t\t\t\t} as any,\n\t\t\t],\n\t\t};\n\n\t\treturn option;\n\t}\n}\n","import { Injectable } from \"@angular/core\";\nimport { Observable, shareReplay, throwError } from \"rxjs\";\nimport { catchError } from \"rxjs/operators\";\n\ninterface CacheEntry<T> {\n\texpiresAt: number;\n\tvalue$: Observable<T>;\n}\n\n@Injectable({ providedIn: \"root\" })\nexport class RequestCacheService {\n\tprivate readonly cache = new Map<string, CacheEntry<unknown>>();\n\tprivate readonly maxEntries = 300;\n\tprivate readonly defaultTtlMs = 5 * 60 * 1000;\n\n\tpublic getOrSet<T>(key: string, factory: () => Observable<T>, ttlMs: number = this.defaultTtlMs): Observable<T> {\n\t\tthis.removeExpiredEntries();\n\t\tconst now = Date.now();\n\t\tconst cached = this.cache.get(key) as CacheEntry<T> | undefined;\n\n\t\tif (cached && cached.expiresAt > now) {\n\t\t\treturn cached.value$;\n\t\t}\n\n\t\tconst value$ = factory().pipe(\n\t\t\tshareReplay(1),\n\t\t\tcatchError(error => {\n\t\t\t\tthis.cache.delete(key);\n\t\t\t\treturn throwError(() => error);\n\t\t\t})\n\t\t);\n\n\t\tthis.cache.set(key, { value$, expiresAt: now + Math.max(ttlMs, 0) });\n\t\tthis.enforceCapacityLimit();\n\t\treturn value$;\n\t}\n\n\tpublic invalidate(prefix?: string): void {\n\t\tif (!prefix) {\n\t\t\tthis.cache.clear();\n\t\t\treturn;\n\t\t}\n\n\t\tfor (const key of this.cache.keys()) {\n\t\t\tif (key.startsWith(prefix)) {\n\t\t\t\tthis.cache.delete(key);\n\t\t\t}\n\t\t}\n\t}\n\n\tprivate removeExpiredEntries(): void {\n\t\tconst now = Date.now();\n\t\tfor (const [key, entry] of this.cache.entries()) {\n\t\t\tif (entry.expiresAt <= now) {\n\t\t\t\tthis.cache.delete(key);\n\t\t\t}\n\t\t}\n\t}\n\n\tprivate enforceCapacityLimit(): void {\n\t\twhile (this.cache.size > this.maxEntries) {\n\t\t\tconst oldestKey = this.cache.keys().next().value as string | undefined;\n\t\t\tif (!oldestKey) break;\n\t\t\tthis.cache.delete(oldestKey);\n\t\t}\n\t}\n}\n","import { Injectable, Pipe, PipeTransform } from \"@angular/core\";\n@Injectable({ providedIn: \"root\" })\n@Pipe({\n\tname: \"truncate\",\n})\nexport class TruncatePipe implements PipeTransform {\n\ttransform(value: any, size: number = 15, original = false): any {\n\t\tif (!value) return value;\n\t\tif (value.length <= size) return value;\n\t\tlet truncateString = value.substring(0, size);\n\t\treturn !original ? `${truncateString}...` : truncateString.toUpperCase();\n\t}\n}\n","export class PageInformation {\n\tpageTitle: string;\n\tpageRoot: string | undefined;\n\tconstructor(pageTitle: string, pageRoot: string | undefined) {\n\t\tthis.pageTitle = pageTitle;\n\t\tthis.pageRoot = pageRoot;\n\t}\n}\n","// Public API Surface of intelica-library-project\n\n// Components\nexport * from './lib/components/search/search.component';\nexport * from './lib/components/sorting/sorting.component';\nexport * from './lib/components/table/table.component';\nexport * from './lib/components/table/column.component';\nexport * from './lib/components/table-fetch/table-fetch.component';\nexport * from './lib/components/skeleton-table/skeleton-table.component';\nexport * from './lib/components/echart/echart.component';\nexport * from './lib/components/bread-crumb/bread-crumb.component';\nexport * from './lib/components/title/title.component';\nexport * from './lib/components/dashboard-qs/dashboard-qs.component';\nexport * from './lib/components/dashboard-qs-interactive/dashboard-qs-interactive.component';\nexport * from './lib/components/add-favorites/add-favorites.component';\n\n// Services\nexport * from './lib/services/shared.service';\nexport * from './lib/services/shared';\nexport * from './lib/services/element.service';\nexport * from './lib/services/pageElement.service';\nexport * from './lib/services/echart.service';\nexport * from './lib/services/request-cache.service';\nexport * from './lib/components/add-favorites/add-favorites.service';\n\n// Pipes\nexport * from './lib/pipes/truncate.pipe';\nexport * from './lib/pipes/amount.pipe';\nexport * from './lib/pipes/formatCell.pipe';\n\n// Models\nexport * from './lib/components/search/model/search.model';\nexport * from './lib/components/sorting/model/cascade-filter';\nexport * from './lib/components/sorting/model/order.constants';\nexport * from './lib/components/table/model/search.model';\nexport * from './lib/components/table/model/sort.model';\nexport * from './lib/components/table-fetch/model/query.model';\nexport * from './lib/model/pageInformation.model';\nexport * from './lib/model/quicksight.model';\n\n// Constants\nexport * from './lib/constants/quicksight.constants';\n\n// DTOs\nexport * from './lib/dto/elementResponse';\nexport * from './lib/dto/embed-visual-item';\nexport * from './lib/dto/embed-visual-url-response';\nexport * from './lib/dto/embed-visual-command';\nexport * from './lib/dto/embed-dashboard-command';\n\n// Enums\nexport * from './lib/components/search/enums/search.enum';\n\n// Functions\nexport * from './lib/functions/echart.util';\nexport * from './lib/functions/quicksight-event.util';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i3","i2","i1","i7","i4"],"mappings":"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"}
1
+ {"version":3,"file":"intelica-library-project.mjs","sources":["../../../projects/intelica-library-project/src/lib/components/search/enums/search.enum.ts","../../../projects/intelica-library-project/src/lib/components/search/search.component.ts","../../../projects/intelica-library-project/src/lib/components/search/search.component.html","../../../projects/intelica-library-project/src/lib/components/sorting/model/order.constants.ts","../../../projects/intelica-library-project/src/lib/components/sorting/sorting.component.ts","../../../projects/intelica-library-project/src/lib/components/sorting/sorting.component.html","../../../projects/intelica-library-project/src/lib/pipes/formatCell.pipe.ts","../../../projects/intelica-library-project/src/lib/services/shared.service.ts","../../../projects/intelica-library-project/src/lib/components/table/column.component.ts","../../../projects/intelica-library-project/src/lib/components/table/table.component.ts","../../../projects/intelica-library-project/src/lib/components/table/table.component.html","../../../projects/intelica-library-project/src/lib/components/table-fetch/table-fetch.component.ts","../../../projects/intelica-library-project/src/lib/components/table-fetch/table-fetch.component.html","../../../projects/intelica-library-project/src/lib/components/skeleton-table/skeleton-table.component.ts","../../../projects/intelica-library-project/src/lib/components/skeleton-table/skeleton-table.component.html","../../../projects/intelica-library-project/src/lib/components/echart/echart.component.ts","../../../projects/intelica-library-project/src/lib/components/echart/echart.component.html","../../../projects/intelica-library-project/src/lib/components/bread-crumb/bread-crumb.component.ts","../../../projects/intelica-library-project/src/lib/components/bread-crumb/bread-crumb.component.html","../../../projects/intelica-library-project/src/lib/components/title/title.component.ts","../../../projects/intelica-library-project/src/lib/components/title/title.component.html","../../../projects/intelica-library-project/src/lib/services/shared.ts","../../../projects/intelica-library-project/src/lib/constants/quicksight.constants.ts","../../../projects/intelica-library-project/src/lib/functions/quicksight-event.util.ts","../../../projects/intelica-library-project/src/lib/components/dashboard-qs/dashboard-qs.component.ts","../../../projects/intelica-library-project/src/lib/components/dashboard-qs/dashboard-qs.component.html","../../../projects/intelica-library-project/src/lib/components/dashboard-qs-interactive/dashboard-qs-interactive.component.ts","../../../projects/intelica-library-project/src/lib/components/dashboard-qs-interactive/dashboard-qs-interactive.component.html","../../../projects/intelica-library-project/src/lib/components/add-favorites/add-favorites.service.ts","../../../projects/intelica-library-project/src/lib/components/add-favorites/add-favorites.component.ts","../../../projects/intelica-library-project/src/lib/components/add-favorites/add-favorites.component.html","../../../projects/intelica-library-project/src/lib/services/pageElement.service.ts","../../../projects/intelica-library-project/src/lib/services/element.service.ts","../../../projects/intelica-library-project/src/lib/functions/echart.util.ts","../../../projects/intelica-library-project/src/lib/pipes/amount.pipe.ts","../../../projects/intelica-library-project/src/lib/services/echart.service.ts","../../../projects/intelica-library-project/src/lib/services/request-cache.service.ts","../../../projects/intelica-library-project/src/lib/pipes/truncate.pipe.ts","../../../projects/intelica-library-project/src/lib/model/pageInformation.model.ts","../../../projects/intelica-library-project/src/public-api.ts","../../../projects/intelica-library-project/src/intelica-library-project.ts"],"sourcesContent":["export enum SearchInputEnum {\n\tOperatorId = \"operatorId\",\n\tFieldId = \"fieldId\",\n\tSearchText = \"searchText\",\n}\n","import { Component, EventEmitter, forwardRef, inject, Input, OnDestroy, OnInit, Output } from \"@angular/core\";\nimport { FormsModule, ReactiveFormsModule, FormBuilder, FormGroup, NG_VALUE_ACCESSOR } from \"@angular/forms\";\nimport { RadioButtonModule } from \"primeng/radiobutton\";\nimport { Popover } from \"primeng/popover\";\nimport { InputText } from \"primeng/inputtext\";\nimport { CommonModule } from \"@angular/common\";\nimport { Subscription } from \"rxjs\";\nimport { SearchInputModel } from \"./model/search.model\";\nimport { SearchInputEnum } from \"./enums/search.enum\";\nimport { TooltipModule } from \"primeng/tooltip\";\nimport { TermPipe } from \"intelica-library-base\";\nimport { GlobalTermService } from \"intelica-library-base\";\n\n@Component({\n\tselector: \"intelica-search\",\n\timports: [FormsModule, ReactiveFormsModule, RadioButtonModule, Popover, InputText, CommonModule, TooltipModule, TermPipe],\n\ttemplateUrl: \"./search.component.html\",\n\tproviders: [\n\t\t{\n\t\t\tprovide: NG_VALUE_ACCESSOR,\n\t\t\tuseExisting: forwardRef(() => SearchComponent),\n\t\t},\n\t],\n\t// styleUrl: \"./search.component.css\",\n})\nexport class SearchComponent implements OnDestroy, OnInit {\n\treadonly GlobalTermService = inject(GlobalTermService);\n\t/**\n\t * Indica el componente del que proviene.\n\t * @type {string}\n\t */\n\t@Input() ComponentId: string = \"\";\n\t@Input() ShowTooltip: boolean = false;\n\n\t/**\n\t * Opciones para campos de búsqueda.\n\t * @type {{ id: number; value: string }[]}\n\t */\n\t@Input() SearchFieldOptions!: { id: number; value: string }[];\n\n\t/**\n\t * Indica si realizar la búsqueda al soltar una tecla.\n\t * @type {boolean}\n\t */\n\t@Input() SearchOnKeyup!: boolean;\n\n\t/**\n\t * @deprecated No debe ser utilizado. Es sólo para uso interno y no para módulos.\n\t * @type {boolean}\n\t * @default false\n\t */\n\t@Input() SimpleSearchInput: boolean = false;\n\n\t/**\n\t * Placeholder para el componente de búsqueda.\n\t * @type {string}\n\t */\n\t@Input() Placeholder: string = \"\";\n\n\t/**\n\t * Evento emitido al realizar una búsqueda.\n\t * @type {EventEmitter<{ operatorId: number; operatorText: string, fieldId: number, fieldText: string, searchText: string }>}\n\t */\n\t@Output(\"OnSearch\") OnSearchEvent = new EventEmitter<SearchInputModel>();\n\n\tprivate readonly FormBuilder = inject(FormBuilder);\n\n\t// Option!: string;\n\t// Placeholder!: string;\n\n\t/**\n\t * Indica si el dropdown está abierto\n\t * @type {boolean}\n\t * @default false\n\t */\n\tIsDropdownOpen: boolean = false;\n\n\t/**\n\t * Formulario para manejar los parámetros de búsqueda\n\t * @type {FormGroup}\n\t */\n\tSearchForm!: FormGroup;\n\n\t/**\n\t * Suscripción a los valores del formulario.\n\t * @type {Subscription}\n\t */\n\tFormValuesSubscription!: Subscription;\n\n\t/**\n\t * Opciones para operadores de búsqueda.\n\t * @type {{ id: number; value: string }[]}\n\t */\n\tSearchOperatorOptions!: { id: number; value: string }[];\n\n\t/**\n\t * Función llamada cuando cambia el valor del campo de búsqueda.\n\t * @type {() => void}\n\t */\n\tOnChange: (value: SearchInputModel) => void = () => {};\n\n\t/**\n\t * Función llamada cuando el componente de búsqueda es tocado.\n\t * @type {() => void}\n\t */\n\tOnTouched: () => void = () => {};\n\n\tconstructor() {}\n\n\tngOnInit(): void {\n\t\tthis.SearchForm = this.FormBuilder.group({\n\t\t\toperatorId: 0,\n\t\t\tfieldId: 0,\n\t\t\tsearchText: \"\",\n\t\t});\n\n\t\tthis.FormValuesSubscription = this.SearchForm.valueChanges.subscribe(value => {\n\t\t\tthis.OnChange(value);\n\t\t});\n\n\t\t//loadTerms\n\t\tif (this.Placeholder === \"\") this.Placeholder = \"SearchPlaceholder\";\n\t\tthis.SearchOperatorOptions ??= this.GetSearchOperatorOptions();\n\t\tthis.SearchFieldOptions ??= this.GetSearchFieldOptions();\n\n\t\tthis.InitializeForm();\n\t}\n\n\tngOnDestroy(): void {\n\t\tthis.FormValuesSubscription.unsubscribe();\n\t}\n\n\tInitializeForm() {\n\t\tthis.SearchForm.setValue({\n\t\t\toperatorId: this.SearchOperatorOptions[0].id,\n\t\t\tfieldId: this.SearchFieldOptions.length > 0 ? this.SearchFieldOptions[0].id : 0,\n\t\t\tsearchText: \"\",\n\t\t});\n\t\tthis.OnSearch();\n\t}\n\n\tDropDownChange(isOpen: boolean) {\n\t\tthis.IsDropdownOpen = isOpen;\n\t}\n\n\tOnSearchEnter(): void {\n\t\tif (!this.SearchOnKeyup) this.OnSearch();\n\t}\n\n\tOnSearchKeyup() {\n\t\tif (this.SearchOnKeyup) this.OnSearch();\n\t}\n\n\tOnSearch(): void {\n\t\tconst value = this.SearchForm.value as SearchInputModel;\n\t\tvalue.operatorText = this.SearchOperatorOptions.find(o => o.id === value.operatorId)?.value || \"\";\n\t\tvalue.fieldText = this.SearchFieldOptions.find(f => f.id === value.fieldId)?.value || \"\";\n\t\tthis.OnChange(value);\n\t\tthis.OnTouched();\n\t\tthis.OnSearchEvent.emit(value);\n\t}\n\n\tClearSearchText(emitEvent: boolean = true) {\n\t\tthis.SearchForm.get(SearchInputEnum.SearchText)?.setValue(\"\");\n\t\tif (emitEvent) {\n\t\t\tthis.OnSearch();\n\t\t}\n\t}\n\n\tget HasSearchText(): boolean {\n\t\tconst searchText = this.SearchForm.get(SearchInputEnum.SearchText)?.value;\n\t\treturn searchText && searchText.length > 0;\n\t}\n\n\tGetSelectedOperatorValue(): string {\n\t\tconst selectedId = this.SearchForm.get(SearchInputEnum.OperatorId)?.value;\n\t\tconst selectedItem = this.SearchOperatorOptions?.find(item => item.id === selectedId);\n\t\treturn selectedItem ? selectedItem.value : \"\";\n\t}\n\n\tGetSelectedFieldValue(): string {\n\t\tconst selectedId = this.SearchForm.get(SearchInputEnum.FieldId)?.value;\n\t\tconst selectedItem = this.SearchFieldOptions?.find(item => item.id === selectedId);\n\t\treturn selectedItem ? selectedItem.value : \"\";\n\t}\n\n\tGetSelectedValues(): string {\n\t\treturn `${this.GetSelectedOperatorValue()}, ${this.GetSelectedFieldValue()}`;\n\t}\n\n\tSetSearchTextValue(text: string) {\n\t\tthis.SearchForm.get(SearchInputEnum.SearchText)?.setValue(text);\n\t}\n\n\tSetOperatorValue(value: number) {\n\t\tthis.SearchForm.get(SearchInputEnum.OperatorId)?.setValue(value ?? 0);\n\t}\n\n\tSetFieldValue(value: number) {\n\t\tthis.SearchForm.get(SearchInputEnum.FieldId)?.setValue(value ?? 0);\n\t}\n\n\tGetSearchOperatorOptions() {\n\t\treturn [\n\t\t\t{ id: 0, value: \"Contains\" },\n\t\t\t{ id: 1, value: \"Exact\" },\n\t\t\t{ id: 2, value: \"Begin\" },\n\t\t\t{ id: 3, value: \"Ends\" },\n\t\t];\n\t}\n\n\tGetSearchFieldOptions() {\n\t\treturn [\n\t\t\t{ id: 0, value: \"code\" },\n\t\t\t{ id: 1, value: \"name\" },\n\t\t];\n\t}\n}\n","<form [formGroup]=\"SearchForm\">\n\t<div class=\"prSearchBar\">\n\t\t<div class=\"prSearchBar__dropdown\" (click)=\"op.toggle($event)\" *ngIf=\"!SimpleSearchInput\">\n\t\t\t<div\n\t\t\t\tclass=\"prSearchBar__dropdown--label\"\n\t\t\t\t[pTooltip]=\"ShowTooltip ? (GetSelectedOperatorValue() | term : GlobalTermService.languageCode) + ', ' + (GetSelectedFieldValue() | term : GlobalTermService.languageCode) : ''\"\n\t\t\t\ttooltipPosition=\"top\"\n\t\t\t>\n\t\t\t\t{{ GetSelectedFieldValue() | term : GlobalTermService.languageCode }}\n\t\t\t</div>\n\t\t\t<div class=\"prSearchBar__dropdown--icon\">\n\t\t\t\t<i [ngClass]=\"IsDropdownOpen ? 'icon-arrow-up' : 'icon-arrow-down'\"></i>\n\t\t\t</div>\n\t\t</div>\n\t\t<p-popover #op (onShow)=\"DropDownChange(true)\" (onHide)=\"DropDownChange(false)\" class=\"prSearchBar__popover\">\n\t\t\t<div class=\"searchDropDown\">\n\t\t\t\t<div class=\"searchDropDown__group\">\n\t\t\t\t\t<div class=\"searchDropDown__title\">{{ \"Selectoperator\" | term : GlobalTermService.languageCode }}</div>\n\t\t\t\t\t<div class=\"searchDropDown__listOption\">\n\t\t\t\t\t\t@for ( option of SearchOperatorOptions ; track option.id; let index = $index){\n\t\t\t\t\t\t<div class=\"searchDropDown__option\">\n\t\t\t\t\t\t\t<p-radiobutton [inputId]=\"ComponentId + option.id\" class=\"prRadioButton\" [value]=\"option.id\" formControlName=\"operatorId\" (change)=\"OnSearchKeyup()\" />\n\t\t\t\t\t\t\t<label [for]=\"ComponentId + option.id\" class=\"prRadioButton--label\">{{ option.value | term : GlobalTermService.languageCode }}</label>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t\t}\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t\t<hr />\n\t\t\t\t<div class=\"searchDropDown__group\">\n\t\t\t\t\t<div class=\"searchDropDown__title\">{{ \"Selectfield\" | term : GlobalTermService.languageCode }}</div>\n\t\t\t\t\t@for ( option of SearchFieldOptions ; track option.id; let index = $index){\n\t\t\t\t\t<div class=\"searchDropDown__option\">\n\t\t\t\t\t\t<p-radiobutton [inputId]=\"ComponentId + 'fieldId_' + option.id\" class=\"prRadioButton\" [value]=\"option.id\" formControlName=\"fieldId\" (change)=\"OnSearchKeyup()\" />\n\t\t\t\t\t\t<label [for]=\"ComponentId + 'fieldId_' + option.id\" class=\"prRadioButton--label\">{{ option.value | term : GlobalTermService.languageCode }}</label>\n\t\t\t\t\t</div>\n\t\t\t\t\t}\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</p-popover>\n\t\t<div class=\"prSearchBar__content\">\n\t\t\t<div class=\"prSearchBar__btn\">\n\t\t\t\t<button pButton type=\"button\" class=\"prSearchBar__btn-action\" (click)=\"ClearSearchText()\" *ngIf=\"HasSearchText\">\n\t\t\t\t\t<i class=\"icon-times\"></i>\n\t\t\t\t</button>\n\t\t\t\t<button pButton type=\"button\" class=\"prSearchBar__btn-action\" (click)=\"OnSearch()\">\n\t\t\t\t\t<i class=\"icon-search\"></i>\n\t\t\t\t</button>\n\t\t\t</div>\n\t\t\t<input\n\t\t\t\tpInputText\n\t\t\t\ttype=\"text\"\n\t\t\t\tclass=\"prSearchBar__input\"\n\t\t\t\tformControlName=\"searchText\"\n\t\t\t\t[placeholder]=\"Placeholder | term : GlobalTermService.languageCode\"\n\t\t\t\t(keyup.enter)=\"OnSearchEnter()\"\n\t\t\t\t(keyup)=\"OnSearchKeyup()\"\n\t\t\t/>\n\t\t</div>\n\t</div>\n</form>\n","export class OrderConstants {\n\t//DESCRIPTION\n\tpublic static ORDER_BY_DESC = \"desc\";\n\tpublic static ORDER_BY_ASC = \"asc\";\n\t//VALUES\n\tpublic static ORDER_BY_DESC_VALUE = \"1\";\n\tpublic static ORDER_BY_ASC_VALUE = \"0\";\n}\n","import { Component, EventEmitter, Input, OnChanges, OnInit, Output } from \"@angular/core\";\nimport { CommonModule } from \"@angular/common\";\nimport { FormsModule } from \"@angular/forms\";\nimport { RadioButtonModule } from \"primeng/radiobutton\";\nimport { ButtonModule } from \"primeng/button\";\nimport { Subscription } from \"rxjs\";\nimport { CascadeFilterModel } from \"./model/cascade-filter\";\nimport { OrderConstants } from \"./model/order.constants\";\n\n@Component({\n\tselector: \"intelica-sorting\",\n\timports: [CommonModule, FormsModule, RadioButtonModule, ButtonModule],\n\ttemplateUrl: \"./sorting.component.html\",\n})\nexport class SortingComponent implements OnInit, OnChanges {\n\t/**\n\t * Suscripción a un observable.\n\t * @type {Subscription}\n\t */\n\tsubscription: Subscription = new Subscription();\n\n\t/**\n\t * Términos utilizados en el componente.\n\t * @type {any}\n\t */\n\tterms: any;\n\n\t/**\n\t * Lista de modelos de filtro en cascada.\n\t * @type {CascadeFilterModel[]}\n\t * @default []\n\t */\n\tLCascadefilter: CascadeFilterModel[] = [];\n\n\t/**\n\t * Número máximo de ordenamiento.\n\t * @type {number}\n\t * @default 4\n\t */\n\tNumMaxSorting = 4;\n\n\t/**\n\t * Lista de objetos de ordenamiento.\n\t * @type {any}\n\t * @default []\n\t */\n\t@Input() Sorters: any = [];\n\n\t/**\n\t * Objeto que indica el ordenamiento actual.\n\t * @type {any}\n\t */\n\t@Input() OrderBy: any;\n\n\t/**\n\t * Objeto que indica el ordenamiento predeterminado.\n\t * @type {any}\n\t * @default {}\n\t */\n\t@Input() OrderByDefault: any = {};\n\n\t/**\n\t * Indica si se debe realizar un solo renderizado.\n\t * @type {boolean}\n\t * @default false\n\t */\n\t@Input() OneRender: boolean = false;\n\n\t/**\n\t * Evento emitido al realizar un retorno de datos.\n\t * @type {EventEmitter<any>}\n\t */\n\t@Output() ReturnSorting: EventEmitter<any> = new EventEmitter();\n\n\t/**\n\t * Evento emitido al alertar sobre una ordenación.\n\t * @type {EventEmitter<any>}\n\t */\n\t@Output() AlertOrder: EventEmitter<any> = new EventEmitter();\n\n\t/**\n\t * Objeto que contiene constantes de ordenación.\n\t * @type {OrderConstants}\n\t */\n\tOrder = OrderConstants;\n\n\tconstructor() {}\n\n\tngOnDestroy(): void {\n\t\tthis.subscription.unsubscribe();\n\t}\n\n\tngOnInit(): void {\n\t\t// this.subscription = this.sharedService.isLoadingPageInfo.subscribe({\n\t\t// \tnext: isLoadingPageInfo => {\n\t\t// \t\tif (!isLoadingPageInfo) this.terms = this.globals.languageTerms;\n\t\t// \t},\n\t\t// });\n\t}\n\n\tngOnChanges(changes: any): void {\n\t\tif (changes.OrderBy && this.Sorters.length > 0) this.GetInfoSorting();\n\t\tif (changes.Sorters && this.Sorters.length > 0) this.GetInfoSorting();\n\t\t// this.terms = this.globals.languageTerms;\n\t}\n\n\t/**\n\t * Obtiene información sobre la ordenación y la asigna a la lista de modelos de filtro en cascada.\n\t * - Si no hay información de ordenación (`orderBy`), la función sale.\n\t * - Crea una lista de modelos de filtro en cascada con una longitud determinada.\n\t * - Filtra las propiedades de ordenación que coinciden con los campos existentes.\n\t * - Asigna las propiedades de ordenación a los modelos de filtro en cascada.\n\t */\n\tGetInfoSorting(): void {\n\t\t// Si no hay información de ordenación (orderBy), la función sale temprano.\n\t\tif (!this.OrderBy) return;\n\n\t\t// Crea una lista de modelos de filtro en cascada con una longitud determinada.\n\t\tthis.LCascadefilter = this.PushCascade(this.Sorters.length);\n\n\t\t// Filtra las propiedades de ordenación que coinciden con los campos existentes.\n\t\tthis.OrderBy = Object.fromEntries(Object.entries(this.OrderBy).filter(([key]) => this.Sorters.find((y: any) => y.field === key)));\n\n\t\t// Obtiene las columnas y el orden de la ordenación.\n\t\tconst columns = Object.keys(this.OrderBy).map(x => x);\n\t\tconst order = columns.map(x => this.OrderBy[x]);\n\n\t\t// Asigna las propiedades de ordenación a los modelos de filtro en cascada.\n\t\tcolumns.forEach((f: any, i) => {\n\t\t\tthis.LCascadefilter[i].id = f;\n\t\t\tthis.LCascadefilter[i].order = order[i];\n\t\t});\n\t}\n\n\t/**\n\t * Función que genera una lista de modelos de filtro en cascada con una cantidad determinada.\n\t *\n\t * @param {number} cant - Cantidad de modelos de filtro en cascada a generar.\n\t * @returns {Array} - Lista de modelos de filtro en cascada.\n\t */\n\tPushCascade(cant: number): Array<any> {\n\t\tlet Lcascadefilter = [];\n\t\tfor (let i = 0; i < cant; i++) {\n\t\t\tLcascadefilter.push({ id: \"0\", index: i, order: OrderConstants.ORDER_BY_ASC });\n\t\t}\n\t\treturn Lcascadefilter;\n\t}\n\n\t/**\n\t * Verifica y procesa la ordenación en cascada.\n\t * - Si algún modelo de filtro en cascada tiene un ID diferente de '0', se realiza la ordenación.\n\t * - De lo contrario, se emite una alerta indicando que no hay columna seleccionada para ordenar.\n\t */\n\tCheckCascadeOrder(): void {\n\t\tthis.OrderBy = {};\n\t\tif (this.LCascadefilter.some(s => s.id !== \"0\")) {\n\t\t\tthis.CascadeOrder();\n\t\t} else {\n\t\t\treturn this.AlertOrder.emit({ ValidMessage: \"Select at least one column to sort\" }); //this.sharedService.getTermTextByCode(\"MSG_NO_COLUMN_ORDER\") });\n\t\t}\n\t}\n\n\t/**\n\t * Procesa la ordenación en cascada y emite el resultado.\n\t */\n\tCascadeOrder(): void {\n\t\tthis.LCascadefilter.forEach(element => {\n\t\t\tif (element.id !== \"0\") {\n\t\t\t\tthis.OrderBy[element.id] = element.order;\n\t\t\t}\n\t\t});\n\t\tthis.ReturnSorting.emit(this.OrderBy);\n\t}\n\n\t/**\n\t * Restaura la ordenación en cascada a la configuración predeterminada y obtiene la información de ordenación.\n\t */\n\tClearCascadeOrder(): void {\n\t\tthis.OrderBy = { ...this.OrderByDefault };\n\t\tthis.GetInfoSorting();\n\t}\n\n\t/**\n\t * Verifica si un modelo de filtro en cascada está deshabilitado basándose en su ID.\n\t *\n\t * @param {string} id - ID del modelo de filtro en cascada.\n\t * @param {number} index - Índice del modelo de filtro en cascada.\n\t * @returns {boolean} - Indica si el modelo de filtro en cascada está deshabilitado.\n\t */\n\tCheckCascadeDisabled(id: string, index: number): boolean {\n\t\treturn this.LCascadefilter.some(e => e.id == id);\n\t}\n}\n","<ng-container>\n\t<div class=\"sortingAnalytics\">\n\t\t<div class=\"sortingCtr\">\n\t\t\t<div></div>\n\t\t\t<div class=\"triangle-top\"></div>\n\t\t\t<div class=\"triangle-down\"></div>\n\t\t\t<ng-container *ngIf=\"OneRender; else multiple_render\">\n\t\t\t\t<ng-container *ngTemplateOutlet=\"one_render; context: { Sorters: Sorters }\"></ng-container>\n\t\t\t</ng-container>\n\t\t</div>\n\n\t\t<div class=\"sortingBtnCtr\">\n\t\t\t<!-- <span>{{'BTN_APPLY_SORT' | term : terms}}</span> -->\n\t\t\t<p-button pRipple class=\"prButton applyAnalytics\" label=\"{{ 'Apply sort' }}\" (onClick)=\"CheckCascadeOrder()\" />\n\t\t\t<!-- <span>{{'BTN_CLEAR_SORT' | term : terms}}</span> -->\n\t\t\t<p-button pRipple class=\"prButton cleanAnalytics\" label=\"{{ 'Clear sort' }}\" severity=\"secondary\" (onClick)=\"ClearCascadeOrder()\" />\n\t\t</div>\n\t</div>\n</ng-container>\n\n<ng-template #one_render let-Sorters=\"Sorters\">\n\t<ng-container *ngFor=\"let row of Sorters; let i = index\">\n\t\t<ng-container *ngIf=\"LCascadefilter.length > 0 && i <= NumMaxSorting\">\n\t\t\t<ng-container *ngIf=\"OneRender && i == 0\">\n\t\t\t\t<div class=\"idx-select\" *ngIf=\"i < LCascadefilter.length\">\n\t\t\t\t\t<div class=\"formRowInputNumber\">\n\t\t\t\t\t\t<span>{{ i + 1 }}</span>\n\t\t\t\t\t</div>\n\t\t\t\t\t<select class=\"grSelect\" [(ngModel)]=\"LCascadefilter[i].id\">\n\t\t\t\t\t\t<option *ngIf=\"i === 0\" [value]=\"0\">\n\t\t\t\t\t\t\t--\n\t\t\t\t\t\t\t<!-- <span>{{ \"LBL_SORT_BY\" | term : terms }}</span> -->\n\t\t\t\t\t\t\t<span>Sort By</span>\n\t\t\t\t\t\t\t--\n\t\t\t\t\t\t</option>\n\t\t\t\t\t\t<option *ngFor=\"let sort of Sorters\" [ngValue]=\"sort.field\" [disabled]=\"CheckCascadeDisabled(sort.field, i)\">\n\t\t\t\t\t\t\t{{ sort.headerText }}\n\t\t\t\t\t\t</option>\n\t\t\t\t\t</select>\n\t\t\t\t</div>\n\n\t\t\t\t<div class=\"form-check\" *ngIf=\"i < LCascadefilter.length\">\n\t\t\t\t\t<p-radiobutton class=\"prRadioButton\" name=\"optSort{{ i }}\" [value]=\"Order.ORDER_BY_ASC\" [inputId]=\"'test{{ i + i + 1 }}'\" [(ngModel)]=\"LCascadefilter[i].order\" tabindex=\"0\" />\n\t\t\t\t\t<label for=\"test{{ i + i + 1 }}\"></label>\n\t\t\t\t</div>\n\n\t\t\t\t<div class=\"form-check\" *ngIf=\"i < LCascadefilter.length\">\n\t\t\t\t\t<p-radiobutton class=\"prRadioButton\" name=\"optSort{{ i }}\" [value]=\"Order.ORDER_BY_DESC\" [inputId]=\"'test{{ i + i + 2 }}'\" [(ngModel)]=\"LCascadefilter[i].order\" tabindex=\"0\" />\n\t\t\t\t\t<label for=\"test{{ i + i + 2 }}\"></label>\n\t\t\t\t</div>\n\t\t\t</ng-container>\n\t\t</ng-container>\n\t</ng-container>\n</ng-template>\n\n<ng-template #multiple_render>\n\t<ng-container *ngFor=\"let row of Sorters; let i = index\">\n\t\t<ng-container *ngIf=\"LCascadefilter.length > 0 && i <= NumMaxSorting\">\n\t\t\t<div class=\"idx-select\" *ngIf=\"i < LCascadefilter.length\">\n\t\t\t\t<div class=\"formRowInputNumber\">\n\t\t\t\t\t<span>{{ i + 1 }}</span>\n\t\t\t\t</div>\n\t\t\t\t<select class=\"grSelect\" [(ngModel)]=\"LCascadefilter[i].id\">\n\t\t\t\t\t<option *ngIf=\"i === 0\" [value]=\"0\">\n\t\t\t\t\t\t--\n\t\t\t\t\t\t<!-- <span>{{ \"LBL_SORT_BY\" | term : terms }}</span> -->\n\t\t\t\t\t\t<span>Sort By</span>\n\t\t\t\t\t\t--\n\t\t\t\t\t</option>\n\t\t\t\t\t<option *ngIf=\"i > 0\" [value]=\"0\">\n\t\t\t\t\t\t--\n\t\t\t\t\t\t<!-- <span>{{ \"LBL_SORT_THEN\" | term : terms }}</span> -->\n\t\t\t\t\t\t<span>Then by</span>\n\t\t\t\t\t\t--\n\t\t\t\t\t</option>\n\t\t\t\t\t<option *ngFor=\"let sort of Sorters\" [ngValue]=\"sort.field\" [disabled]=\"CheckCascadeDisabled(sort.field, i)\">\n\t\t\t\t\t\t{{ sort.headerText }}\n\t\t\t\t\t</option>\n\t\t\t\t</select>\n\t\t\t</div>\n\n\t\t\t<div class=\"form-check\" *ngIf=\"i < LCascadefilter.length\">\n\t\t\t\t<p-radiobutton class=\"prRadioButton\" name=\"optSort{{ i }}\" [value]=\"Order.ORDER_BY_ASC\" [inputId]=\"'test{{ i + i + 1 }}'\" [(ngModel)]=\"LCascadefilter[i].order\" tabindex=\"0\" />\n\t\t\t\t<label for=\"test{{ i + i + 1 }}\"></label>\n\t\t\t</div>\n\n\t\t\t<div class=\"form-check\" *ngIf=\"i < LCascadefilter.length\">\n\t\t\t\t<p-radiobutton class=\"prRadioButton\" name=\"optSort{{ i }}\" [value]=\"Order.ORDER_BY_DESC\" [inputId]=\"'test{{ i + i + 2 }}'\" [(ngModel)]=\"LCascadefilter[i].order\" tabindex=\"0\" />\n\t\t\t\t<label for=\"test{{ i + i + 2 }}\"></label>\n\t\t\t</div>\n\t\t</ng-container>\n\t</ng-container>\n</ng-template>\n","import { inject, Pipe, PipeTransform } from \"@angular/core\";\nimport { DateMode } from \"intelica-library-base\";\nimport { DatePipe } from \"@angular/common\";\n\n@Pipe({\n\tname: \"formatCell\",\n\tstandalone: true,\n})\nexport class FormatCellPipe implements PipeTransform {\n\tprivate readonly datePipe = inject(DatePipe);\n\n\ttransform(value: any, type: \"string\" | \"date\" | \"date2\" | \"date3\" | \"time\" | \"decimal2\" | \"decimal4\" | \"tarifa\"): string {\n\t\tif (value == null) return \"\";\n\n\t\tswitch (type) {\n\t\t\tcase \"date\":\n\t\t\t\treturn this.formatDateValue(value, \"day\");\n\t\t\tcase \"date2\":\n\t\t\t\treturn this.formatDateValue(value, \"month\");\n\t\t\tcase \"date3\":\n\t\t\t\treturn this.formatDateValue(value, \"year\");\n\t\t\tcase \"time\":\n\t\t\t\treturn this.formatTime(value);\n\t\t\tcase \"decimal2\":\n\t\t\t\treturn this.formatDecimal(value, 2);\n\t\t\tcase \"decimal4\":\n\t\t\t\treturn this.formatDecimal(value, 4);\n\t\t\tcase \"tarifa\":\n\t\t\t\treturn this.formatTarifa(value);\n\t\t\tdefault:\n\t\t\t\treturn value;\n\t\t}\n\t}\n\n\tgetDateFormat(mode: DateMode): string {\n\t\tswitch (mode) {\n\t\t\tcase \"month\":\n\t\t\t\treturn \"M/yy\";\n\t\t\tcase \"year\":\n\t\t\t\treturn \"yy\";\n\t\t\tdefault:\n\t\t\t\treturn \"d/M/yy\";\n\t\t}\n\t}\n\n\tformatDateValue(value: any, mode: string): string {\n\t\tconst pattern = this.getDateFormat(mode as DateMode);\n\n\t\tif (Array.isArray(value) && value.length === 2) {\n\t\t\treturn `${this.datePipe.transform(value[0], pattern)} - ${this.datePipe.transform(value[1], pattern)}`;\n\t\t}\n\n\t\tif (value) {\n\t\t\treturn this.datePipe.transform(value, pattern) || \"\";\n\t\t}\n\n\t\treturn \"\";\n\t}\n\n\tprivate formatTime(value: any): string {\n\t\tconst date = new Date(value);\n\t\tif (isNaN(date.getTime())) return \"\";\n\n\t\tlet hours = date.getHours();\n\t\tconst minutes = date.getMinutes();\n\t\tconst seconds = date.getSeconds();\n\t\tconst ampm = hours >= 12 ? \"PM\" : \"AM\";\n\n\t\thours = hours % 12;\n\t\thours = hours ? hours : 12;\n\t\tconst hh = hours.toString().padStart(2, \"0\");\n\t\tconst mm = minutes.toString().padStart(2, \"0\");\n\t\tconst ss = seconds.toString().padStart(2, \"0\");\n\n\t\treturn `${hh}:${mm}:${ss} ${ampm}`;\n\t}\n\n\tprivate formatDecimal(value: any, digits: number): string {\n\t\tconst num = parseFloat(value);\n\t\tif (isNaN(num)) return \"\";\n\t\treturn num.toFixed(digits);\n\t}\n\n\tprivate formatTarifa(value: any): string {\n\t\tconst num = parseFloat(value);\n\t\tif (isNaN(num)) return \"\";\n\n\t\tconst absNum = Math.abs(num);\n\t\tif (absNum >= 0.000001 && absNum <= 0.1) {\n\t\t\t// Mostrar hasta 6 decimales\n\t\t\treturn absNum.toFixed(6);\n\t\t} else if (absNum < 0.000001) {\n\t\t\treturn num.toString();\n\t\t} else {\n\t\t\treturn num.toString();\n\t\t}\n\t}\n}\n","import { Injectable } from \"@angular/core\";\nimport { BehaviorSubject, Observable, Subject } from \"rxjs\";\nimport { Location } from \"@angular/common\";\nimport { FormatDateConstants } from \"intelica-library-base\";\nimport moment from \"moment\";\nimport * as _ from \"lodash\";\n@Injectable({\n\tprovidedIn: \"root\",\n})\nexport class SharedService {\n\tpublic configObservable = new Subject<boolean>();\n\tisLoading = new BehaviorSubject(false);\n\tisLoadingHeader = new BehaviorSubject(true);\n\tisExpandedContent = new BehaviorSubject(false);\n\tisLoadingPageInfo = new BehaviorSubject(true);\n\tnotifyProfileType = new Subject<string>();\n\tcharges = 0;\n\tshowHelper = new BehaviorSubject(false);\n\theaderPathName = new BehaviorSubject<string[]>([]);\n\tpageId: number | undefined = 0;\n\topenActionMenu$: Subject<boolean> = new Subject<boolean>();\n\tmonths = {\n\t\ten: [\"January\", \"February\", \"March\", \"April\", \"May\", \"June\", \"July\", \"August\", \"September\", \"October\", \"November\", \"December\"],\n\t\tes: [\"Enero\", \"Febrero\", \"Marzo\", \"Abril\", \"Mayo\", \"Junio\", \"Julio\", \"Agosto\", \"Septiembre\", \"Octubre\", \"Noviembre\", \"Diciembre\"],\n\t};\n\tsubtitleDescriptionNotification$!: Observable<string>;\n\tconstructor(private location: Location) {}\n\t///METODOS GLOBALS.\n\tIsNumberRate(n: any) {\n\t\treturn !isNaN(parseFloat(n)) && !isNaN(n - 0);\n\t}\n\tRemovePercentage(string: string) {\n\t\tif (string.length > 0) {\n\t\t\tif (string.startsWith(\"%\")) string = string.substring(1);\n\t\t\tlet last = string.length - 1;\n\t\t\tif (string.endsWith(\"%\")) string = string.substring(0, last);\n\t\t}\n\t\treturn string;\n\t}\n\tGetTotalAmountByCrncy(col: string, listGeneral: any): number {\n\t\treturn listGeneral.reduce((a: any, b: any) => a + (b[col] || 0), 0);\n\t}\n\tGetTotalAverageByColumn(col: string, listGeneral: any): number {\n\t\treturn listGeneral.reduce((a: any, b: any) => a + (b[col] || 0), 0) / (listGeneral.length || 1);\n\t}\n\tGetTotalByGroup(col: string, listGeneral: any[], groupBy: string[] | undefined): any[] {\n\t\tif (!groupBy?.length) return [listGeneral.reduce((a: any, b: any) => a + (b[col] || 0), 0)];\n\n\t\tlet result: { [key: string]: any } = listGeneral.reduce((acc: { [key: string]: any }, item: any) => {\n\t\t\tconst groupKey = groupBy.map(prop => item[prop]).join(\"||\");\n\t\t\tacc[groupKey] = (acc[groupKey] || 0) + item[col];\n\t\t\treturn acc;\n\t\t}, {});\n\t\tconst propiedades = Object.keys(result).sort();\n\t\tconst indexGroup = groupBy.indexOf(col);\n\t\tif (indexGroup != -1) return propiedades.map(propiedad => propiedad.split(\"||\")[indexGroup]);\n\t\treturn propiedades.map(propiedad => result[propiedad]);\n\t}\n\tTransformNegative(value: string): string {\n\t\tvalue = value?.toString() ?? \"0.00\";\n\t\tif (value?.indexOf(\"-\") > -1) return \"(\" + value.replace(\"-\", \"\") + \")\";\n\t\telse return value.toString();\n\t}\n\tFormatNumber(value: number, decimalMax: number, decimalMin: number) {\n\t\treturn value.toLocaleString(\"en-US\", {\n\t\t\tmaximumFractionDigits: decimalMax,\n\t\t\tminimumFractionDigits: decimalMin,\n\t\t});\n\t}\n\tClickOutSideValidator(event: any): boolean {\n\t\tlet res = false;\n\t\tif (event !== undefined) {\n\t\t\tconst src = (event as Event).srcElement as Element;\n\t\t\tres = src.id !== \"button-alignment\" && !this.CheckParents(src, 0);\n\t\t}\n\t\treturn res;\n\t}\n\tCheckParents(src: Element, c: number): boolean {\n\t\tvar ids = [];\n\t\tids.push(\"HamburgerMenu\");\n\t\tvar strings = [];\n\t\tstrings.push(\"swal2-container\");\n\t\tif (src.className.includes(\"backdrop-visible\")) return false;\n\t\tvar res = ids.some(function (v) {\n\t\t\treturn src.id === v;\n\t\t});\n\t\tif (!res && (src.tagName === \"BODY\" || src.parentElement === null) && c === 0) {\n\t\t\tres = true;\n\t\t}\n\t\tif (\n\t\t\t!res &&\n\t\t\tstrings.some(function (v) {\n\t\t\t\treturn src.classList.contains(v);\n\t\t\t})\n\t\t)\n\t\t\tres = true;\n\t\tif (src.parentElement && !res) {\n\t\t\tc++;\n\t\t\tres = this.CheckParents(src.parentElement, c);\n\t\t}\n\t\treturn res;\n\t}\n\tGetTitleByRegionOrCountry(CurrentGroup: any, Current: any, field: string) {\n\t\treturn CurrentGroup ? CurrentGroup.groupName + \" - \" + Current[field] : Current[field];\n\t}\n\tGetTitleByBank(ListGeneralCountryAll: any[], CurrentBank: any) {\n\t\treturn ListGeneralCountryAll.length > 1 ? CurrentBank.groupName + \" - \" + CurrentBank.countryName + \" - \" + CurrentBank.bankNameCommercial : CurrentBank.bankNameCommercial;\n\t}\n\tRoundgen(value: any, precision: any) {\n\t\tvar multiplier = Math.pow(10, precision || 0);\n\t\treturn Math.round(value * multiplier) / multiplier;\n\t}\n\tReturnAmountPercen(amount: any): string {\n\t\tif (isNaN(amount)) amount = 0;\n\t\tlet resultado: string = \"\";\n\t\tlet AmountStr =\n\t\t\tamount === 0\n\t\t\t\t? \"0\"\n\t\t\t\t: amount.toLocaleString(\"en-US\", {\n\t\t\t\t\t\tmaximumFractionDigits: 1,\n\t\t\t\t\t\tminimumFractionDigits: 1,\n\t\t\t\t\t});\n\t\tif (AmountStr.indexOf(\".0\") !== -1)\n\t\t\tAmountStr = amount.toLocaleString(\"en-US\", {\n\t\t\t\tmaximumFractionDigits: 0,\n\t\t\t\tminimumFractionDigits: 0,\n\t\t\t});\n\t\tif (amount < 0 && parseInt(amount.toString()) * -1 === 0) {\n\t\t\tresultado =\n\t\t\t\tamount\n\t\t\t\t\t.toLocaleString(\"en-US\", {\n\t\t\t\t\t\tmaximumFractionDigits: 1,\n\t\t\t\t\t\tminimumFractionDigits: 1,\n\t\t\t\t\t})\n\t\t\t\t\t.replace(\"-\", \"(\") + \"%)\";\n\t\t} else if (amount < 0) resultado = AmountStr.replace(\"-\", \"(\") + \"%)\";\n\t\telse resultado = AmountStr + \"%\";\n\t\tif (Number.NEGATIVE_INFINITY === amount || Number.POSITIVE_INFINITY === amount) resultado = \"\";\n\t\treturn resultado;\n\t}\n\tReturAmountFormat(amount: any): string {\n\t\tif (isNaN(amount)) amount = 0;\n\t\tamount = this.Roundgen(amount, 2);\n\t\tlet resultado: string = \"\";\n\t\tif (amount < 0 && parseInt(amount.toString()) * -1 === 0) resultado = amount.toString().replace(\"-\", \"(\") + \")\";\n\t\telse if (amount < 0 && amount > -1000) {\n\t\t\tresultado = this.Roundgen(amount, 0).toString().replace(\"-\", \"(\") + \")\";\n\t\t} else if (amount < 0 && -1000000000 >= amount) {\n\t\t\tresultado =\n\t\t\t\tthis.Roundgen(amount / 1000000000, 1)\n\t\t\t\t\t.toString()\n\t\t\t\t\t.replace(\"-\", \"(\") + \" B)\";\n\t\t} else if (amount < 0 && -1000000 >= amount) {\n\t\t\tresultado =\n\t\t\t\tthis.Roundgen(amount / 1000000, 1)\n\t\t\t\t\t.toString()\n\t\t\t\t\t.replace(\"-\", \"(\") + \" M)\";\n\t\t} else if (amount < 0) {\n\t\t\tresultado =\n\t\t\t\tthis.Roundgen(amount / 1000, 1)\n\t\t\t\t\t.toString()\n\t\t\t\t\t.replace(\"-\", \"(\") + \" K)\";\n\t\t} else if (amount < 1000) resultado = this.Roundgen(amount, 0).toString();\n\t\telse if (1000000000 < amount) resultado = this.Roundgen(amount / 1000000000, 1).toString() + \" B\";\n\t\telse if (1000000 < amount) resultado = this.Roundgen(amount / 1000000, 1).toString() + \" M\";\n\t\telse resultado = this.Roundgen(amount / 1000, 1).toString() + \" K\";\n\t\tif (resultado.indexOf(\".\") === -1 && amount !== 0 && amount >= 1000) {\n\t\t\tlet a = resultado;\n\t\t\tlet b = \".0\";\n\t\t\tlet output = a + b;\n\n\t\t\tif (resultado.indexOf(\" \") !== -1) {\n\t\t\t\tlet position = resultado.indexOf(\" \");\n\t\t\t\toutput = [a.slice(0, position), b, a.slice(position)].join(\"\");\n\t\t\t} else if (resultado.indexOf(\" \") === -1 && resultado.indexOf(\")\") !== -1) {\n\t\t\t\tlet position = resultado.indexOf(\")\");\n\t\t\t\toutput = [a.slice(0, position), b, a.slice(position)].join(\"\");\n\t\t\t}\n\n\t\t\tresultado = output;\n\t\t}\n\t\treturn resultado;\n\t}\n\tDownloadFile(fileName: string, blob: any): void {\n\t\tconst nav = window.navigator as any;\n\t\tif (nav.msSaveOrOpenBlob) {\n\t\t\tnav.msSaveOrOpenBlob(blob, fileName);\n\t\t} else {\n\t\t\tconst link = document.createElement(\"a\");\n\t\t\tlink.setAttribute(\"type\", \"hidden\");\n\t\t\tlink.download = fileName;\n\t\t\tlink.href = window.URL.createObjectURL(blob.body);\n\t\t\tdocument.body.appendChild(link);\n\t\t\tlink.click();\n\t\t}\n\t}\n\tViewFile(response: any) {\n\t\tconst a = document.createElement(\"a\");\n\t\ta.setAttribute(\"style\", \"display:none;\");\n\t\tdocument.body.appendChild(a);\n\t\ta.href = URL.createObjectURL(response.body);\n\t\ta.target = \"_blank\";\n\t\ta.click();\n\t\tdocument.body.removeChild(a);\n\t}\n\tGetNumberCurrency(amount: number): string {\n\t\treturn amount === 0\n\t\t\t? \"0\"\n\t\t\t: amount.toLocaleString(\"en-US\", {\n\t\t\t\t\tmaximumFractionDigits: 2,\n\t\t\t\t\tminimumFractionDigits: 2,\n\t\t\t\t});\n\t}\n\tCountDecimals(param: number) {\n\t\tif (Math.floor(param) === param) return 0;\n\t\treturn param.toString().split(\".\")[1].length || 0;\n\t}\n\tIsEmpty(value: any) {\n\t\treturn value === null || value === \"\" || value === undefined;\n\t}\n\tGroupByColumn(data: any[], columnGroup: string): any[] {\n\t\tlet colUnique = [];\n\t\tif (columnGroup != \"\") {\n\t\t\tcolUnique = [\n\t\t\t\t...new Set(\n\t\t\t\t\tdata.map(item => {\n\t\t\t\t\t\treturn item[columnGroup];\n\t\t\t\t\t})\n\t\t\t\t),\n\t\t\t].filter(unique => !this.IsEmpty(unique));\n\t\t} else {\n\t\t\tcolUnique = [\n\t\t\t\t...new Set(\n\t\t\t\t\tdata.map(item => {\n\t\t\t\t\t\treturn item;\n\t\t\t\t\t})\n\t\t\t\t),\n\t\t\t].filter(unique => !this.IsEmpty(unique));\n\t\t}\n\t\treturn colUnique;\n\t}\n\tGetRoswpanbyData(column: string, index: number, data: Array<any>): number {\n\t\tlet ValOfAgruppated = null;\n\t\tlet rowspanI = 1;\n\t\tfor (let i: number = index - 1; i < data.length; i++) {\n\t\t\tlet val = data[i][column];\n\t\t\tif (ValOfAgruppated == null) {\n\t\t\t\tValOfAgruppated = val;\n\t\t\t} else if (val !== null && ValOfAgruppated == val) {\n\t\t\t\trowspanI++;\n\t\t\t} else if (val !== null && ValOfAgruppated != val) {\n\t\t\t\tValOfAgruppated = null;\n\t\t\t\treturn rowspanI;\n\t\t\t}\n\t\t}\n\t\treturn rowspanI;\n\t}\n\tFormatterStringJsonByKey(data: any[], key: string, separador: string): string {\n\t\tlet result = \"\";\n\t\tlet colUnique: string[] = [];\n\t\tdata.forEach(element => {\n\t\t\tcolUnique.push(element[key]);\n\t\t});\n\t\tresult = colUnique.join(separador);\n\t\treturn result;\n\t}\n\tGroupByKey(xs: any, key: any) {\n\t\treturn xs.reduce(function (rv: any, x: any) {\n\t\t\t(rv[x[key]] = rv[x[key]] || []).push(x);\n\t\t\treturn rv;\n\t\t}, {});\n\t}\n\tLoadProjectsCss(route: string) {\n\t\tconst elements = this.CheckProjectsCss(route);\n\t\tif (elements.length === 0) {\n\t\t\tconst node = document.createElement(\"link\");\n\t\t\tnode.href = \"./assets/css/projects/\" + route + \".css\";\n\t\t\tnode.rel = \"stylesheet\";\n\t\t\tdocument.getElementsByTagName(\"head\")[0].appendChild(node);\n\t\t}\n\t}\n\tRemoveProjectsCss(route: string) {\n\t\tconst elements = this.CheckProjectsCss(route);\n\t\telements.forEach(element => {\n\t\t\tdocument.getElementsByTagName(\"head\")[0].removeChild(element);\n\t\t});\n\t}\n\tCheckProjectsCss(route: string): any[] {\n\t\tconst parent = document.getElementsByTagName(\"head\")[0];\n\t\tconst elements: any[] = [];\n\t\tparent.childNodes.forEach((element: any) => {\n\t\t\tvar a = element as object;\n\n\t\t\tif (element.nodeName === \"LINK\") {\n\t\t\t\tvar elemethref = element[\"href\"];\n\t\t\t\tif (elemethref && elemethref.indexOf(route) > 0) {\n\t\t\t\t\telements.push(element);\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t\treturn elements;\n\t}\n\tCountDecimalsDigits(numero: any) {\n\t\tif (this.IsEmpty(numero)) return 0;\n\t\tnumero = parseFloat(numero);\n\t\tlet arrayNumero = numero.toString().split(\".\");\n\t\tnumero = arrayNumero.length > 1 ? arrayNumero[1] : \"\";\n\t\treturn numero.length;\n\t}\n\tGetMaxNumberDecimals(data: any[], key: string): number {\n\t\tlet arrCountDecimals: number[] = [];\n\t\tdata.forEach(element => {\n\t\t\tlet decimals = this.CountDecimalsDigits(element[key]);\n\t\t\tarrCountDecimals.push(decimals);\n\t\t});\n\t\tvar maxDecimal = Math.max(...arrCountDecimals);\n\t\treturn maxDecimal;\n\t}\n\tSetHeaderPathName(name: string[]) {\n\t\tthis.headerPathName.next(name);\n\t}\n\tFormatDate(date: string, format: string): string {\n\t\treturn moment(date).format(format);\n\t}\n\tCopyTo(src: any, dest: any) {\n\t\tObject.keys(src).forEach(property => {\n\t\t\tdest[property] = src[property];\n\t\t});\n\t}\n\tIsValidEmail(email: string): boolean {\n\t\tconst emailPattern = /^\\w+([.-]?\\w+)*@\\w+([.-]?\\w+)*(\\.\\w{2,3})+$/;\n\t\treturn emailPattern.test(email);\n\t}\n\tIsGuid(str: string): boolean {\n\t\tconst guidRegex = /^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i;\n\t\treturn guidRegex.test(str);\n\t}\n\tContainsSpecialCharacters(str: string): boolean {\n\t\tconst specialCharacter = /^[^\\\\/?%*:|\"<>]+$/;\n\t\treturn !specialCharacter.test(str);\n\t}\n\tIsNumber(value: any): boolean {\n\t\treturn /^-?\\d+(\\.\\d+)?$/.test(value);\n\t}\n\tCalculatePreviousDate(date: Date, monthsAgo: number) {\n\t\tdate.setMonth(date.getMonth() - monthsAgo);\n\t\tconst newDate = moment(date).format(FormatDateConstants.DMYY_MOMENT);\n\n\t\treturn newDate;\n\t}\n\tGetFilteredSearchKey(listTempAll: any[], key: string, value: any, operatorId: number) {\n\t\tlet listFilter = [];\n\t\tswitch (operatorId) {\n\t\t\tcase 0: //'Contains'\n\t\t\t\tlet word = value.split(\"&\", 100);\n\t\t\t\tlet count: number = 0;\n\t\t\t\tlet listTemp: any;\n\t\t\t\tif (word.length > 1) {\n\t\t\t\t\tword.forEach((element: any) => {\n\t\t\t\t\t\tif (count === 0) {\n\t\t\t\t\t\t\tlistTemp = listTempAll.filter(a => a[key]?.toString()?.toLowerCase().includes(element.toLowerCase()));\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tlistTemp = listTemp.filter((a: any) => a[key]?.toString()?.toLowerCase().includes(element.toLowerCase()));\n\t\t\t\t\t\t}\n\t\t\t\t\t\tcount++;\n\t\t\t\t\t});\n\t\t\t\t\tlistFilter = listTemp;\n\t\t\t\t} else {\n\t\t\t\t\tlistFilter = listTempAll.filter(a => a[key]?.toString()?.toLowerCase().includes(value));\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase 1: //'Exact'\n\t\t\t\tlistFilter = value ? listTempAll.filter(a => a[key]?.toString()?.toLowerCase() === value) : listTempAll;\n\t\t\t\tbreak;\n\t\t\tcase 2: //'Begin'\n\t\t\t\tlistFilter = listTempAll.filter(a => a[key]?.toString()?.toLowerCase().startsWith(value));\n\t\t\t\tbreak;\n\t\t\tcase 3: //'Ends'\n\t\t\t\tlistFilter = listTempAll.filter(a => a[key]?.toString()?.toLowerCase().endsWith(value));\n\t\t\t\tbreak;\n\t\t\tdefault:\n\t\t\t\tlistFilter = listTempAll.filter(a => a[key]?.toString()?.toLowerCase().includes(value));\n\t\t\t\tbreak;\n\t\t}\n\t\treturn listFilter;\n\t}\n\tGetFilteredSearchKeyV2(listTempAll: any[], key: string, value: any, operatorId: number, subKey: any = null) {\n\t\tif (value.length == 0) return listTempAll;\n\t\tif (!listTempAll || !key || value == null) return [];\n\t\tlet listFilter = listTempAll;\n\t\tvalue = value.toString().toLowerCase();\n\t\tconst words = value.includes(\"&\") ? value.split(\"&\").filter(Boolean) : [value];\n\t\tconst filterFunction = (item: any) => {\n\t\t\tconst itemValue = item[key]?.toString()?.toLowerCase();\n\t\t\tswitch (operatorId) {\n\t\t\t\tcase 0: // 'Contains'\n\t\t\t\t\treturn words.every((word: any) => itemValue?.includes(word));\n\t\t\t\tcase 1: // 'Exact'\n\t\t\t\t\treturn itemValue === value;\n\t\t\t\tcase 2: // 'Begin'\n\t\t\t\t\treturn itemValue?.startsWith(value);\n\t\t\t\tcase 3: // 'Ends'\n\t\t\t\t\treturn itemValue?.endsWith(value);\n\t\t\t\tdefault:\n\t\t\t\t\treturn itemValue?.includes(value);\n\t\t\t}\n\t\t};\n\t\tif (subKey) {\n\t\t\t// Filtrar primero a nivel de sublista\n\t\t\tlistFilter = listFilter.map(filter => {\n\t\t\t\treturn {\n\t\t\t\t\t...filter,\n\t\t\t\t\t[subKey]: filter[subKey]?.filter((item: any) => filterFunction(item)),\n\t\t\t\t};\n\t\t\t});\n\t\t\t// Filtrar luego la lista principal basado en si la sublista contiene elementos\n\t\t\tlistFilter = listFilter.filter(filter => filter[subKey].length > 0);\n\t\t} else {\n\t\t\t// Filtrar solo la lista principal\n\t\t\tlistFilter = listFilter.filter(filterFunction);\n\t\t}\n\t\treturn listFilter;\n\t}\n\tpublic TransformArrayToHashTable<T, TypeKey extends string | number>(arr: T[], getKey: (p: T) => TypeKey): { [key in TypeKey]: T } {\n\t\t//example of Use:\n\t\t// this.transformArrayToHashTable<any,string>([{id:1,prop1:\"prop1Value\"}],(o)=>o.id.toString())\n\t\tconst hashTable: { [key in TypeKey]: T } = {} as { [key in TypeKey]: T };\n\t\tarr.forEach((object: T) => (hashTable[getKey(object)] = object));\n\t\treturn hashTable;\n\t}\n\tpublic TransformArrayToMap<TypeKey, T>(arr: T[], getKey: (p: T) => TypeKey): Map<TypeKey, T> {\n\t\t//example of Use:\n\t\t// this.transformArrayToMap<string,any>([{id:1,prop1:\"prop1Value\"}],(o)=>o.id.toString())\n\t\treturn new Map(arr.map(obj => [getKey(obj), obj]));\n\t}\n\tUrlHasQaUatSubdomain() {\n\t\tconst { hostname } = new URL(window.location.href);\n\t\tconst [subdomain] = hostname.split(\".\");\n\t\treturn [\"qa\", \"uat\"].includes(subdomain);\n\t}\n\tUrlHasQaSubdomain() {\n\t\tconst { hostname } = new URL(window.location.href);\n\t\tconst [subdomain] = hostname.split(\".\");\n\t\treturn [\"qa\"].includes(subdomain);\n\t}\n\tGetLastSegmentUrl(): string {\n\t\tconst segments = this.location.path().split(\"/\");\n\t\tconst lastSegment = segments[segments.length - 1];\n\t\tconst numberMappings: { [key: string]: string } = {\n\t\t\t\"0\": \"intelica-allocated\",\n\t\t\t\"1\": \"penalty-summary\",\n\t\t};\n\t\t// Verifica si lastSegment es un número y si tiene un mapeo correspondiente\n\t\tif (!isNaN(Number(lastSegment)) && numberMappings.hasOwnProperty(lastSegment)) return numberMappings[lastSegment];\n\t\telse return lastSegment;\n\t}\n\tOnChangeMultiple($event: any, selectDescription: string): void {\n\t\tlet select = $event != null ? $event.element.ej2_instances[0] : null;\n\t\tif (select?.value.length > 0) {\n\t\t\tselect.viewWrapper.innerHTML = `${select.value.length} ${selectDescription}`;\n\t\t}\n\t}\n\tRemoveParamsAndSegments(url: string): string {\n\t\t// Remover parámetros de consultanom\n\t\tconst urlWithoutParams = url.split(\"?\")[0];\n\t\t// Remover segmentos de ruta dinámicos\n\t\tconst regex = /\\/\\d+(?=\\/|$)(?!$)/g; // Encuentra segmentos de ruta que consisten en números\n\t\treturn urlWithoutParams.replace(regex, \"\");\n\t}\n\tOpenActionMenu() {\n\t\tthis.openActionMenu$.next(true);\n\t}\n\tAbbreviateNumber(number: number, fixed: number = 2): string {\n\t\tif (number == 0.0 || number == 0 || number == 0.0) {\n\t\t\treturn \"0\";\n\t\t}\n\t\tlet formatCant = \"\";\n\t\tlet numberOriginal = number;\n\t\tif (number < 0) {\n\t\t\tnumber = Math.abs(number);\n\t\t}\n\t\tif (number >= 1000 && number < 1000000) {\n\t\t\tnumber = parseFloat((number / 1000).toFixed(fixed));\n\t\t\tformatCant = \" K\";\n\t\t} else if (number >= 1000000 && number < 1000000000) {\n\t\t\tnumber = parseFloat((number / 1000000).toFixed(fixed));\n\t\t\tformatCant = \" M\";\n\t\t} else if (number >= 1000000000 && number <= 1000000000000) {\n\t\t\tnumber = parseFloat((number / 1000000000).toFixed(fixed));\n\t\t\tformatCant = \" B\";\n\t\t} else {\n\t\t\tnumber = this.NumberFormatByNumberCriteria(number, fixed);\n\t\t}\n\t\treturn numberOriginal < 0 ? `(${number}${formatCant})` : `${number}${formatCant}`;\n\t}\n\tNumberFormatByNumberCriteria(number: number, fixed: number = 4): any {\n\t\tconst rounded = (Math.round(number * Math.pow(10, fixed)) / Math.pow(10, fixed)).toFixed(fixed);\n\t\treturn rounded;\n\t}\n\tFormatPercentage(number: number, decimal: number = 2) {\n\t\tlet numberInit = number;\n\t\tif (number < 0) number = Math.abs(number);\n\t\tnumber = parseFloat(number.toFixed(decimal));\n\t\tlet finalNumber = `${number.toLocaleString(\"en-US\")}%`;\n\t\treturn numberInit < 0 ? `(${finalNumber})` : `${finalNumber}`;\n\t}\n\tGetMonthName(monthIndex: number, lang: \"en\" | \"es\" = \"en\"): string {\n\t\treturn this.months[lang][monthIndex];\n\t}\n\tFormatNumberWithSuffix(number: number, decimalPlaces: number = 0): string {\n\t\tif (number === 0) {\n\t\t\treturn \"0\";\n\t\t}\n\t\tconst isNegative = number < 0;\n\t\tconst absoluteValue = Math.abs(number);\n\t\tconst scaledNumber = parseFloat((absoluteValue / 1000).toFixed(decimalPlaces)).toLocaleString(\"en-US\");\n\t\tconst suffix = \" K\";\n\n\t\treturn isNegative ? `(${scaledNumber}${suffix})` : `${scaledNumber}${suffix}`;\n\t}\n\t//SYNFCUNTION\n\tGenerateGUID(): string {\n\t\tlet uuid = \"\",\n\t\t\ti,\n\t\t\trandom;\n\t\tfor (i = 0; i < 32; i++) {\n\t\t\trandom = (Math.random() * 16) | 0;\n\t\t\tif (i === 8 || i === 12 || i === 16 || i === 20) {\n\t\t\t\tuuid += \"-\";\n\t\t\t}\n\t\t\tuuid += (i === 12 ? 4 : i === 16 ? (random & 3) | 8 : random).toString(16);\n\t\t}\n\t\treturn uuid;\n\t}\n\tAttachDataLabelClickEvent(chartElementId: string, dataArray: any[], onClickCallback: (clickedData: any) => void): void {\n\t\tconst chartElement = document.getElementById(chartElementId);\n\t\tif (!chartElement) {\n\t\t\treturn;\n\t\t}\n\t\tconst dataLabels = chartElement.querySelectorAll('[id*=\"_DataLabel_\"]');\n\t\tconst dataLabelsArray = Array.prototype.slice.call(dataLabels) as HTMLElement[];\n\t\tdataLabelsArray.forEach((label, index) => {\n\t\t\t// Calcula el índice ajustado para obtener el dato correcto\n\t\t\tconst adjustedIndex = index % dataArray.length;\n\n\t\t\tlabel.addEventListener(\"click\", () => {\n\t\t\t\tconst clickedData = dataArray[adjustedIndex];\n\t\t\t\tif (clickedData) {\n\t\t\t\t\tonClickCallback(clickedData);\n\t\t\t\t}\n\t\t\t});\n\t\t});\n\t}\n\tFormatNumberAbsolute(number: number) {\n\t\tconst isNegative = number < 0;\n\t\tif (number < 0) {\n\t\t\tnumber = Math.abs(number);\n\t\t}\n\n\t\tlet finalNumber = `${number.toLocaleString(\"en-US\")}`;\n\t\treturn isNegative ? `(${finalNumber})` : `${finalNumber}`;\n\t}\n\tSortRecursive(data: any[], column: any, criteria: string) {\n\t\treturn _.orderBy(\n\t\t\tdata.map(item => {\n\t\t\t\tObject.keys(item).forEach(key => {\n\t\t\t\t\tif (Array.isArray(item[key])) {\n\t\t\t\t\t\titem[key] = this.SortRecursive(item[key], column, criteria);\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t\treturn item;\n\t\t\t}),\n\t\t\t[\n\t\t\t\t(elm: any) => {\n\t\t\t\t\tlet value = elm[column];\n\t\t\t\t\tif (value == null) {\n\t\t\t\t\t\tvalue = \"\";\n\t\t\t\t\t}\n\t\t\t\t\tif (typeof value === \"string\") {\n\t\t\t\t\t\tconst normalized = value.trim().toLowerCase();\n\t\t\t\t\t\tconst startsWithSpecial = /^[^a-z0-9]/i.test(normalized);\n\t\t\t\t\t\treturn startsWithSpecial ? `~${normalized}` : normalized;\n\t\t\t\t\t}\n\t\t\t\t\treturn value;\n\t\t\t\t},\n\t\t\t],\n\t\t\t[criteria as \"asc\" | \"desc\"]\n\t\t);\n\t}\n\tSortRecursivePrimeNg(data: any[], column: any, criteria: string) {\n\t\treturn _.orderBy(\n\t\t\tdata.map(item => {\n\t\t\t\tObject.keys(item).forEach(key => {\n\t\t\t\t\tif (Array.isArray(item[key])) {\n\t\t\t\t\t\titem[key] = this.SortRecursive(item[key], column, criteria);\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t\treturn item;\n\t\t\t}),\n\t\t\t[\n\t\t\t\t(elm: any) => {\n\t\t\t\t\tlet value = elm[column];\n\t\t\t\t\tif (value == null || (typeof value === \"string\" && value.trim() === \"\")) {\n\t\t\t\t\t\treturn \"___0\";\n\t\t\t\t\t}\n\t\t\t\t\tif (typeof value === \"string\") {\n\t\t\t\t\t\tconst normalized = value.trim().toLowerCase();\n\t\t\t\t\t\tconst startsWithSpecial = /^[^a-z0-9]/i.test(normalized);\n\t\t\t\t\t\tif (startsWithSpecial) {\n\t\t\t\t\t\t\treturn `___1${normalized}`;\n\t\t\t\t\t\t}\n\t\t\t\t\t\treturn `___2${normalized}`;\n\t\t\t\t\t}\n\t\t\t\t\treturn `___2${value}`;\n\t\t\t\t},\n\t\t\t],\n\t\t\t[criteria as \"asc\" | \"desc\"]\n\t\t);\n\t}\n\tSortRecursiveNumber(data: any[], column: any, criteria: string) {\n\t\treturn _.orderBy(\n\t\t\tdata.map(item => {\n\t\t\t\tObject.keys(item).forEach(key => {\n\t\t\t\t\tif (Array.isArray(item[key])) {\n\t\t\t\t\t\titem[key] = this.SortRecursiveNumber(item[key], column, criteria);\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t\treturn item;\n\t\t\t}),\n\t\t\t[\n\t\t\t\t(elm: any) => {\n\t\t\t\t\tlet value = elm[column];\n\t\t\t\t\tif (value == null || value === \"\") {\n\t\t\t\t\t\treturn Number.NEGATIVE_INFINITY;\n\t\t\t\t\t}\n\t\t\t\t\tif (typeof value === \"number\") {\n\t\t\t\t\t\treturn value;\n\t\t\t\t\t}\n\t\t\t\t\tif (!isNaN(Number(value))) {\n\t\t\t\t\t\treturn Number(value);\n\t\t\t\t\t}\n\t\t\t\t\treturn Number.NEGATIVE_INFINITY;\n\t\t\t\t},\n\t\t\t],\n\t\t\t[criteria as \"asc\" | \"desc\"]\n\t\t);\n\t}\n\n\tIsDateFormat(value: any): boolean {\n\t\treturn typeof value === \"string\" && /^\\d{1,2}\\/\\d{1,2}\\/\\d{2,4}$/.test(value);\n\t}\n\n\tSortRecursiveDate(data: any[], column: any, criteria: string) {\n\t\treturn _.orderBy(\n\t\t\tdata.map(item => {\n\t\t\t\tObject.keys(item).forEach(key => {\n\t\t\t\t\tif (Array.isArray(item[key])) {\n\t\t\t\t\t\titem[key] = this.SortRecursiveDate(item[key], column, criteria);\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t\treturn item;\n\t\t\t}),\n\t\t\t[\n\t\t\t\t(elm: any) => {\n\t\t\t\t\tlet value = elm[column];\n\t\t\t\t\tif (value == null || value === \"\") {\n\t\t\t\t\t\treturn Number.NEGATIVE_INFINITY;\n\t\t\t\t\t}\n\t\t\t\t\tconst dateValue = new Date(value);\n\t\t\t\t\tif (isNaN(dateValue.getTime())) {\n\t\t\t\t\t\treturn Number.NEGATIVE_INFINITY;\n\t\t\t\t\t}\n\t\t\t\t\treturn dateValue.getTime();\n\t\t\t\t},\n\t\t\t],\n\t\t\t[criteria as \"asc\" | \"desc\"]\n\t\t);\n\t}\n}\n","import { ContentChild, Directive, Input, TemplateRef } from \"@angular/core\";\n@Directive({ selector: \"column\" })\nexport class ColumnComponent<T = any> {\n @Input() field!: string;\n @Input() header!: string;\n @Input() sortable: boolean = false;\n @Input() width?: string;\n @Input() className?: string;\n @Input() headerTooltip: string = \"\";\n @Input() headerTooltipPosition: \"top\" | \"bottom\" | \"left\" | \"right\" = \"top\";\n @Input() tooltip: string = \"\";\n @Input() tooltipPosition: \"top\" | \"bottom\" | \"left\" | \"right\" = \"top\";\n @Input() showIndex: boolean = false;\n @Input() showHeader: boolean = true;\n @Input() minWidth?: string;\n @Input() isChecboxColumn: boolean = false;\n //@Input() isGrouped: boolean = false;\n //@Input() isGroup: boolean = false;\n @Input() formatType:\n | \"string\"\n | \"date\"\n | \"date2\"\n | \"date3\"\n | \"time\"\n | \"decimal2\"\n | \"decimal4\"\n | \"tarifa\" = \"string\";\n @ContentChild(TemplateRef) templateRef?: TemplateRef<any>;\n}\n@Directive({ selector: \"columnGroup\" })\nexport class ColumnGroupComponent<T = any> {\n @Input() field!: string;\n @Input() header!: string;\n @Input() sortable: boolean = false;\n @Input() width?: string;\n @Input() minWidth?: string;\n @Input() className?: string;\n @Input() headerTooltip: string = \"\";\n @Input() headerTooltipPosition: \"top\" | \"bottom\" | \"left\" | \"right\" = \"top\";\n // @Input() tooltip: string = \"\";\n // @Input() tooltipPosition: \"top\" | \"bottom\" | \"left\" | \"right\" = \"top\";\n // @Input() showIndex: boolean = false;\n // @Input() isGrouped: boolean = false;\n // @Input() isGroup: boolean = false;\n @Input() colspan: number = 1;\n @Input() rowspan: number = 1;\n @Input() level: number = 0;\n @Input() formatType:\n | \"string\"\n | \"date\"\n | \"date2\"\n | \"date3\"\n | \"time\"\n | \"decimal2\"\n | \"decimal4\"\n | \"tarifa\" = \"string\";\n}\n@Directive({ selector: \"rowResumenComponent\" })\nexport class RowResumenComponent<T = any> {\n @Input() field!: string;\n @Input() className?: string;\n // @Input() width?: string;\n // @Input() className?: string;\n // @Input() headerTooltip: string = \"\";\n // @Input() headerTooltipPosition: \"top\" | \"bottom\" | \"left\" | \"right\" = \"top\";\n // @Input() tooltip: string = \"\";\n // @Input() tooltipPosition: \"top\" | \"bottom\" | \"left\" | \"right\" = \"top\";\n // @Input() showIndex: boolean = false;\n // @Input() isGrouped: boolean = false;\n // @Input() isGroup: boolean = false;\n @Input() colspan: number = 1;\n @Input() rowspan: number = 1;\n @ContentChild(TemplateRef) templateRef?: TemplateRef<any>;\n @Input() formatType:\n | \"string\"\n | \"date\"\n | \"date2\"\n | \"date3\"\n | \"time\"\n | \"decimal2\"\n | \"decimal4\"\n | \"tarifa\" = \"string\";\n}\n\n// @Input() headerText: string | undefined;\n// @Input() field: string;\n// @Input() fieldDetail: string;\n// @Input() className: string;\n// @Input() order: boolean = false;\n// @Input() width: string;\n// @Input() isNumber: boolean = false;\n// @Input() isRowNumber: boolean = false;\n// @Input() isPercent: boolean = false;\n// @Input() isInteger: boolean = false;\n// @Input() setContainer: boolean = true;\n// @Input() hideRowInDetail: boolean = false;\n// @Input() prefix: string;\n// @Input() headerWidth: number = 0;\n// @Input() headerLineBreak: boolean = false;\n// @Input() numberFormat: string = '1.2-2';\n// @Input() columnHasDateFormat: boolean = false;\n// @Input() dateFormat: string = '';\n// @Input() isSelectableColum: boolean = false;\n// @Input() isHeaderClickable: boolean = false;\n// @Input() classNameHeader: string = '';\n// @Input() isActiveHeader: boolean = false;\n// @Input() classNameActiveHeader: string = '';\n// @Input() isCellClickable: boolean = false;\n// @Input() isAveragePercent: boolean = false;\n// @Input() visible: boolean = true;\n// @Input() hasAmountNaming: boolean = false;\n// @Input() computedField: string;\n// @Input() isOrderedDesc: boolean = false;\n// @Input() isOrderedAsc: boolean = false;\n// @Input() containDetails: boolean = false;\n// @Input() isChecboxColumn: boolean = false;\n// columnsForCompare: string = '';\n// @ContentChild('detail') detail!: any;\n// @ContentChild('content') content!: any;\n","import { CommonModule, DatePipe } from \"@angular/common\";\nimport { AfterContentInit, Component, ContentChild, ContentChildren, EventEmitter, inject, Input, OnChanges, Output, QueryList, TemplateRef } from \"@angular/core\";\nimport { FormsModule } from \"@angular/forms\";\nimport { BadgeModule } from \"primeng/badge\";\nimport { CheckboxModule } from \"primeng/checkbox\";\nimport { IconFieldModule } from \"primeng/iconfield\";\nimport { InputIcon } from \"primeng/inputicon\";\nimport { InputNumber } from \"primeng/inputnumber\";\nimport { InputText, InputTextModule } from \"primeng/inputtext\";\nimport { Paginator } from \"primeng/paginator\";\nimport { Select } from \"primeng/select\";\nimport { TableModule } from \"primeng/table\";\nimport { TooltipModule } from \"primeng/tooltip\";\nimport { FormatCellPipe } from \"../../pipes/formatCell.pipe\";\nimport { TermPipe } from \"intelica-library-base\";\nimport { GlobalTermService } from \"intelica-library-base\";\nimport { SharedService } from \"../../services/shared.service\";\nimport { SearchInputModel } from \"../search/model/search.model\";\nimport { ColumnComponent, ColumnGroupComponent, RowResumenComponent } from \"./column.component\";\nimport { SortFieldModel } from \"./model/sort.model\";\n\n@Component({\n\tselector: \"intelica-table\",\n\tstandalone: true,\n\timports: [\n\t\tCommonModule,\n\t\tIconFieldModule,\n\t\tInputIcon,\n\t\tInputText,\n\t\tInputTextModule,\n\t\tInputNumber,\n\t\tPaginator,\n\t\tTableModule,\n\t\tSelect,\n\t\tBadgeModule,\n\t\tTooltipModule,\n\t\tTermPipe,\n\t\tCheckboxModule,\n\t\tFormsModule,\n\t\tFormatCellPipe,\n\t],\n\ttemplateUrl: \"./table.component.html\",\n\tproviders: [FormatCellPipe, DatePipe],\n})\nexport class TableComponent<T> implements OnChanges, AfterContentInit {\n\tprivate readonly SharedService = inject(SharedService);\n\treadonly GlobalTermService = inject(GlobalTermService);\n\t@Input() ComponentId: string = \"\";\n\t@Input() ListData: T[] = [];\n\t@Input() ShowRowPerPage: boolean = true;\n\t@Input() ShowSearch: boolean = false;\n\t@Input() ShowPagination: boolean = false;\n\t@Input() RowsPerPage: number = 10;\n\t@Input() ShowCheckbox: boolean = false;\n\t@Input() ShowIndex: boolean = false;\n\t@Input() ListDataSelected: T[] = [];\n\t@Input() SelectedIdentifier: keyof T | null = null;\n\t@Input() ClassName: string = \"\";\n\t@Input() DefaultSortField: string = \"\";\n\t@Input() DefaultSortOrder: number = 1;\n\t@Input() scrollHeight: string = \"400px\";\n\t@Input() scrollable: boolean = false;\n\t@Input() AllowedPageSizes: number[] = [10, 25, 50, 100];\n\t@Input() tableStyle: { [klass: string]: any } = {};\n\tprivate _isTableDisabled = false;\n\tprivate _pendingUncheck = false;\n\tHeaderState: Record<string, { checked: boolean; indeterminate: boolean }> = {};\n\n\t@Input()\n\tset IsTableDisabled(val: boolean) {\n\t\tthis._isTableDisabled = val;\n\n\t\tif (val) {\n\t\t\tif (!this.ColumnList || this.ColumnList.length === 0) {\n\t\t\t\tthis._pendingUncheck = true;\n\t\t\t} else {\n\t\t\t\tthis.ListDataSelectedTemp = [];\n\t\t\t\tthis.ListDataSelectedFilter = [];\n\t\t\t\tthis.ExecuteSearch();\n\t\t\t}\n\t\t}\n\t}\n\tget IsTableDisabled() {\n\t\treturn this._isTableDisabled;\n\t}\n\n\tpublic recomputeHeaderState(field: string) {\n\t\tconst total = this.ListDataFilter.length;\n\t\tif (total === 0) {\n\t\t\tthis.HeaderState[field] = { checked: false, indeterminate: false };\n\t\t\treturn;\n\t\t}\n\t\tconst checked = this.ListDataFilter.filter(r => (r as any)[field] === true).length;\n\t\tthis.HeaderState[field] = {\n\t\t\tchecked: checked === total,\n\t\t\tindeterminate: checked > 0 && checked < total,\n\t\t};\n\t}\n\n\tonBodyCheckboxChange(field: string) {\n\t\tthis.recomputeHeaderState(field);\n\t}\n\n\tprivate refreshAllHeaderStates() {\n\t\tthis.ColumnList.filter(c => c.isChecboxColumn).forEach(c => this.recomputeHeaderState(c.field));\n\t}\n\t@Output() EmitSelectedItem = new EventEmitter<T[]>();\n\t@Output() EmitListDataFilter = new EventEmitter<T[]>();\n\t@Output() EmitSearchEvent = new EventEmitter<SearchInputModel>();\n\t@Output() EmitSortEvent = new EventEmitter<SortFieldModel[]>();\n\t@ContentChildren(ColumnComponent) Columns!: QueryList<ColumnComponent>;\n\t@ContentChildren(ColumnGroupComponent)\n\tColumnGroups!: QueryList<ColumnGroupComponent>;\n\t@ContentChildren(RowResumenComponent)\n\tRowResumenGroups!: QueryList<RowResumenComponent>;\n\t@ContentChild(\"additionalTemplate\") AdditionalTemplate?: TemplateRef<any>;\n\t@ContentChild(\"additionalExtendedTemplate\")\n\tAdditionalExtendedTemplate?: TemplateRef<any>;\n\t@ContentChild(\"additionalCentralTemplate\")\n\tAdditionalCentralTemplate?: TemplateRef<any>;\n\tColumnList: ColumnComponent[] = [];\n\tColumnGroupList: ColumnGroupComponent[] = [];\n\tRowResumenList: RowResumenComponent[] = [];\n\tListDataFilter: T[] = [];\n\tListDataTable: T[] = [];\n\tListDataSelectedFilter: T[] = [];\n\tListDataSelectedTemp: T[] = [];\n\tSearchInput: SearchInputModel = { searchText: \"\" } as SearchInputModel;\n\tTotalRecords: number = 0;\n\tCurrentPage: number = 1;\n\tSortOrder: number = 1;\n\tSortField: keyof T | null = null;\n\tMaxLevel: number = 0;\n\tLevels: number[] = [];\n\tngOnChanges(): void {\n\t\tif (!this.SortField && this.DefaultSortField) {\n\t\t\tthis.SortField = this.DefaultSortField as keyof T;\n\t\t\tthis.SortOrder = this.DefaultSortOrder;\n\t\t}\n\t\tthis.ExecuteSearch();\n\t\tthis.ValidateSelect();\n\t}\n\tngAfterContentInit() {\n\t\tthis.ColumnList = this.Columns?.toArray() ?? [];\n\t\tthis.ColumnGroupList = this.ColumnGroups?.toArray() ?? [];\n\t\tthis.RowResumenList = this.RowResumenGroups?.toArray() ?? [];\n\n\t\tconst levels = this.ColumnGroupList.map(c => c.level);\n\t\tthis.MaxLevel = levels.length ? Math.max(...levels) + 1 : 1;\n\t\tthis.Levels = Array.from({ length: this.MaxLevel }, (_, i) => i);\n\n\t\tthis.ColumnList.filter(c => c.isChecboxColumn).forEach(c => {\n\t\t\tif (!this.HeaderState[c.field]) {\n\t\t\t\tthis.HeaderState[c.field] = { checked: false, indeterminate: false };\n\t\t\t}\n\t\t});\n\n\t\tif (this._isTableDisabled && this._pendingUncheck) {\n\t\t\tthis.ListDataSelectedTemp = [];\n\t\t\tthis.ListDataSelectedFilter = [];\n\t\t\tthis._pendingUncheck = false;\n\t\t\tthis.ExecuteSearch();\n\t\t} else {\n\t\t\tthis.refreshAllHeaderStates();\n\t\t}\n\t}\n\tOnSort(field: string) {\n\t\tif (this.SortField === field) {\n\t\t\tthis.SortOrder *= -1;\n\t\t} else {\n\t\t\tthis.SortField = field as keyof T;\n\t\t\tthis.SortOrder = 1;\n\t\t}\n\t\tthis.CurrentPage = 1;\n\t\tthis.SortPages();\n\t}\n\tOnPageChange(event: { page?: number; rows?: number } | number) {\n\t\tif (typeof event === \"number\") {\n\t\t\tthis.CurrentPage = event;\n\t\t} else {\n\t\t\tif (typeof event?.rows === \"number\") {\n\t\t\t\tthis.RowsPerPage = event.rows;\n\t\t\t}\n\t\t\tif (typeof event?.page === \"number\") {\n\t\t\t\tthis.CurrentPage = event.page + 1;\n\t\t\t}\n\t\t}\n\t\tthis.UpdatePages();\n\t}\n\tExecuteSearch(searchText?: string): void {\n\t\tif (typeof searchText === \"string\") {\n\t\t\tthis.SearchInput = { ...(this.SearchInput ?? {}), searchText };\n\t\t}\n\t\tthis.ListDataFilter = [...this.ListData];\n\t\tconst search = this.SearchInput?.searchText?.trim()?.toLowerCase();\n\t\tif (search) {\n\t\t\tthis.ListDataFilter = this.ListData.filter(item => {\n\t\t\t\tconst searchableText = Object.values(item as any)\n\t\t\t\t\t.filter(v => v !== null && v !== undefined)\n\t\t\t\t\t.join(\" \")\n\t\t\t\t\t.toLowerCase();\n\t\t\t\treturn searchableText.includes(search);\n\t\t\t});\n\t\t\tthis.CurrentPage = 1;\n\t\t}\n\t\tthis.SortPages();\n\t}\n\tSortPages() {\n\t\tif (!this.SortField) {\n\t\t\tthis.UpdatePages();\n\t\t\treturn;\n\t\t}\n\n\t\tconst order = this.SortOrder === 1 ? \"asc\" : \"desc\";\n\t\tconst field = this.SortField as keyof T;\n\n\t\tconst colConfig = this.ColumnList.find(c => c.field === field);\n\t\tif (!colConfig) {\n\t\t\tconsole.warn(\"Columna no encontrada:\", field);\n\t\t\tthis.UpdatePages();\n\t\t\treturn;\n\t\t}\n\t\tconst formatType = colConfig.formatType;\n\t\tconst sampleValue = this.ListDataFilter.find(item => item[field] !== null && item[field] !== undefined)?.[field];\n\t\tif (typeof sampleValue === \"number\") {\n\t\t\tthis.ListDataFilter = this.SharedService.SortRecursiveNumber([...this.ListDataFilter], field, order);\n\t\t} else {\n\t\t\tif (formatType === \"date\") {\n\t\t\t\tthis.ListDataFilter = this.SharedService.SortRecursiveDate([...this.ListDataFilter], field, order);\n\t\t\t} else {\n\t\t\t\tthis.ListDataFilter = this.SharedService.SortRecursivePrimeNg([...this.ListDataFilter], field, order);\n\t\t\t}\n\t\t}\n\t\tthis.UpdatePages();\n\t}\n\tUpdatePages() {\n\t\tif (this.ShowPagination) {\n\t\t\tthis.TotalRecords = this.ListDataFilter.length;\n\t\t\tconst start = (this.CurrentPage - 1) * this.RowsPerPage;\n\t\t\tconst end = start + this.RowsPerPage;\n\t\t\tthis.ListDataTable = this.ListDataFilter.slice(start, end);\n\t\t} else {\n\t\t\tthis.ListDataTable = this.ListDataFilter;\n\t\t}\n\t\tif (this.ShowCheckbox) this.ListDataSelectedFilter = [...this.ListDataSelectedTemp];\n\t\tthis.refreshAllHeaderStates();\n\t\tthis.EmitSearchValues();\n\t}\n\tValidateSelect() {\n\t\tif (!this.SelectedIdentifier && this.ShowCheckbox) {\n\t\t\tthis.ShowCheckbox = false;\n\t\t\treturn;\n\t\t}\n\t\tconst selectedIds = new Set(this.ListDataSelected.map(item => item[this.SelectedIdentifier as keyof T]));\n\t\tthis.ListDataSelectedTemp = this.ListData.filter(item => selectedIds.has(item[this.SelectedIdentifier as keyof T]));\n\t\tthis.ListDataSelectedFilter = [...this.ListDataSelectedTemp];\n\t}\n\tSelectAll(event: any) {\n\t\tif (!this.SelectedIdentifier && this.ShowCheckbox) return;\n\t\tif (event.checked) {\n\t\t\tconst idsSelected = new Set(this.ListDataSelectedTemp.map(item => item[this.SelectedIdentifier as keyof T]));\n\t\t\tthis.ListDataFilter.forEach(item => {\n\t\t\t\tif (!idsSelected.has(item[this.SelectedIdentifier as keyof T])) {\n\t\t\t\t\tthis.ListDataSelectedTemp.push(item);\n\t\t\t\t}\n\t\t\t});\n\t\t} else {\n\t\t\tconst idsSelected = new Set(this.ListDataFilter.map(item => item[this.SelectedIdentifier as keyof T]));\n\t\t\tthis.ListDataSelectedTemp = this.ListDataSelectedTemp.filter(item => !idsSelected.has(item[this.SelectedIdentifier as keyof T]));\n\t\t}\n\t\tthis.ListDataSelectedFilter = [...this.ListDataSelectedTemp];\n\t\tthis.EmitSelectedItem.emit(this.ListDataSelectedTemp);\n\t}\n\tOnHeaderSelectionToggle(checked: boolean) {\n\t\tthis.SelectAll({ checked });\n\t}\n\tOnRowSelect(event: any) {\n\t\tif (!this.SelectedIdentifier && this.ShowCheckbox) return;\n\t\tconst selectedItem = event.data;\n\t\tconst exists = this.ListDataSelectedTemp.some(item => item[this.SelectedIdentifier as keyof T] === selectedItem[this.SelectedIdentifier as keyof T]);\n\t\tif (!exists) {\n\t\t\tthis.ListDataSelectedTemp.push(selectedItem);\n\t\t}\n\t\tthis.EmitSelectedItem.emit(this.ListDataSelectedTemp);\n\t}\n\tOnRowUnselect(event: any) {\n\t\tif (!this.SelectedIdentifier && this.ShowCheckbox) return;\n\t\tconst unselectedItem = event.data;\n\t\tthis.ListDataSelectedTemp = this.ListDataSelectedTemp.filter(item => item[this.SelectedIdentifier as keyof T] !== unselectedItem[this.SelectedIdentifier as keyof T]);\n\t\tthis.EmitSelectedItem.emit(this.ListDataSelectedTemp);\n\t}\n\tResetTable() {\n\t\tthis.CurrentPage = 1;\n\t\tthis.SearchInput = { ...(this.SearchInput ?? {}), searchText: \"\" };\n\t\tthis.ExecuteSearch();\n\t}\n\tEmitSearchValues() {\n\t\tthis.EmitListDataFilter.emit(this.ListDataFilter);\n\t\tthis.EmitSearchEvent.emit(this.SearchInput);\n\t\tthis.EmitSortEvent.emit([\n\t\t\t{\n\t\t\t\tsortOrder: this.SortOrder,\n\t\t\t\tsortField: this.SortField?.toString() ?? \"\",\n\t\t\t},\n\t\t]);\n\t}\n\tOnHeaderCheckboxChange(checked: boolean, field: string) {\n\t\tthis.ListDataFilter.forEach(r => ((r as any)[field] = checked));\n\n\t\tthis.HeaderState[field] = { checked, indeterminate: false };\n\t\tthis.UpdatePages();\n\t}\n\n\tprivate getFilteredSelectedCount(): number {\n\t\tif (!this.SelectedIdentifier || this.ListDataFilter.length === 0 || this.ListDataSelectedTemp.length === 0) return 0;\n\t\tconst selectedIds = new Set(this.ListDataSelectedTemp.map(item => item[this.SelectedIdentifier as keyof T]));\n\t\treturn this.ListDataFilter.filter(item => selectedIds.has(item[this.SelectedIdentifier as keyof T])).length;\n\t}\n\tget IsHeaderSelectionChecked(): boolean {\n\t\treturn this.ListDataFilter.length > 0 && this.getFilteredSelectedCount() === this.ListDataFilter.length;\n\t}\n\tget IsHeaderSelectionIndeterminate(): boolean {\n\t\tconst selectedCount = this.getFilteredSelectedCount();\n\t\treturn selectedCount > 0 && selectedCount < this.ListDataFilter.length;\n\t}\n\n\tFilterData(field: string) {\n\t\tlet c = this.ListData.filter(item => (item as Record<string, boolean>)[field]);\n\t}\n\tIsInderteminate(column: string) {\n\t\tconst rowsChek = this.ListData.filter(item => (item as Record<string, boolean>)[column]).length;\n\t\tconst element = [...document.querySelectorAll(\"[data-check]\")].find(x => x.getAttribute(\"data-check\") == column);\n\t\tif (element == undefined) return;\n\t\tif (rowsChek > 0 && rowsChek < this.ListData.length) {\n\t\t\telement.setAttribute(\"class\", \"prCheckbox--indeterminate\");\n\t\t} else {\n\t\t\telement.removeAttribute(\"class\");\n\t\t}\n\t}\n\tOnRowsPerPageChange(value: number) {\n\t\tthis.RowsPerPage = value;\n\t\tthis.CurrentPage = 1;\n\t\tthis.UpdatePages();\n\t}\n\tResetTableSelected() {\n\t\tthis.ListDataSelectedTemp = [];\n\t\tthis.ListDataSelectedFilter = [...this.ListDataSelectedTemp];\n\t}\n\tClearSearch() {\n\t\tthis.SearchInput.searchText = \"\";\n\t\tthis.ExecuteSearch();\n\t}\n\n\tget TotalPages(): number {\n\t\treturn Math.ceil(this.TotalRecords / this.RowsPerPage);\n\t}\n\tonChangeSelectPage(event: any) {\n\t\tconst eventValue: string = event.target.value;\n\t\tif (eventValue === \"\" || isNaN(parseInt(eventValue)) || eventValue === \"0\" || eventValue.indexOf(\"-\") >= 0) {\n\t\t\tthis.CurrentPage = 1;\n\t\t\tthis.UpdatePages();\n\t\t\treturn;\n\t\t}\n\n\t\tthis.CurrentPage = parseInt(eventValue);\n\n\t\tif (this.CurrentPage > this.TotalPages) {\n\t\t\tthis.CurrentPage = this.TotalPages;\n\t\t}\n\t\tthis.UpdatePages();\n\t}\n\tget RenderPanel(): boolean {\n\t\treturn Boolean(this.AdditionalTemplate) || this.ShowSearch || Boolean(this.AdditionalCentralTemplate) || Boolean(this.AdditionalExtendedTemplate);\n\t}\n}\n","<div class=\"prTable\">\n\t@if (RenderPanel) {\n\t\t<div class=\"\">\n\t\t\t<div class=\"prCard__row justify-content-end\">\n\t\t\t\t<div class=\"prCard__actionflex\">\n\t\t\t\t\t@if (AdditionalTemplate) {\n\t\t\t\t\t\t<ng-container *ngTemplateOutlet=\"AdditionalTemplate\"></ng-container>\n\t\t\t\t\t}\n\t\t\t\t</div>\n\t\t\t\t@if (ShowSearch) {\n\t\t\t\t\t<div class=\"ptSearch searchTableGA\">\n\t\t\t\t\t\t<p-iconfield>\n\t\t\t\t\t\t\t<input\n\t\t\t\t\t\t\t\ttype=\"text\"\n\t\t\t\t\t\t\t\tclass=\"prInputText\"\n\t\t\t\t\t\t\t\tpInputText\n\t\t\t\t\t\t\t\tplaceholder=\"{{ 'LBL_SEARCH_SELECT' | term: GlobalTermService.languageCode }}\"\n\t\t\t\t\t\t\t\t[(ngModel)]=\"SearchInput.searchText\"\n\t\t\t\t\t\t\t\t(keydown.enter)=\"ExecuteSearch()\"\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t<p-inputicon>\n\t\t\t\t\t\t\t\t<button class=\"ptSearch__icon ptSearch__icon--close\">\n\t\t\t\t\t\t\t\t\t<i class=\"icon icon-cancel\" *ngIf=\"SearchInput.searchText\" (click)=\"ClearSearch()\"></i>\n\t\t\t\t\t\t\t\t</button>\n\t\t\t\t\t\t\t\t<span class=\"ptSearch__icon ptSearch__icon--divider\" *ngIf=\"SearchInput.searchText\"></span>\n\t\t\t\t\t\t\t\t<button class=\"ptSearch__icon ptSearch__icon--search\" (click)=\"ExecuteSearch()\">\n\t\t\t\t\t\t\t\t\t<i class=\"icon icon-search\"></i>\n\t\t\t\t\t\t\t\t</button>\n\t\t\t\t\t\t\t</p-inputicon>\n\t\t\t\t\t\t</p-iconfield>\n\t\t\t\t\t</div>\n\t\t\t\t}\n\t\t\t\t@if (AdditionalCentralTemplate) {\n\t\t\t\t\t<div class=\"prTableTools__new prTableTools__new--right\">\n\t\t\t\t\t\t<ng-container *ngTemplateOutlet=\"AdditionalCentralTemplate\"></ng-container>\n\t\t\t\t\t</div>\n\t\t\t\t}\n\t\t\t</div>\n\n\t\t\t@if (AdditionalExtendedTemplate) {\n\t\t\t\t<div class=\"prTableTools justify-content-start\">\n\t\t\t\t\t<ng-container *ngTemplateOutlet=\"AdditionalExtendedTemplate\"></ng-container>\n\t\t\t\t</div>\n\t\t\t}\n\t\t</div>\n\t}\n\t<p-table\n\t\tclass=\"prTable\"\n\t\t[ngClass]=\"ClassName\"\n\t\t[value]=\"ListDataTable\"\n\t\tresponsiveLayout=\"scroll\"\n\t\t[(selection)]=\"ListDataSelectedFilter\"\n\t\t(onRowSelect)=\"OnRowSelect($event)\"\n\t\t(onRowUnselect)=\"OnRowUnselect($event)\"\n\t\t[sortField]=\"DefaultSortField\"\n\t\t[scrollable]=\"scrollable\"\n\t\t[scrollHeight]=\"scrollable ? scrollHeight : 'auto'\"\n\t\t[tableStyle]=\"tableStyle\"\n\t\t[sortOrder]=\"DefaultSortOrder\"\n\t>\n\t\t<ng-template pTemplate=\"header\">\n\t\t\t@for (level of Levels; track $index) {\n\t\t\t\t<tr>\n\t\t\t\t\t@for (col of ColumnGroupList; track $index) {\n\t\t\t\t\t\t@if (col.level === level) {\n\t\t\t\t\t\t\t<th [attr.colspan]=\"col.colspan\" [attr.rowspan]=\"col.rowspan\" [pSortableColumn]=\"col.sortable ? col.field : ''\" [style.min-width]=\"col.minWidth\" (click)=\"col.sortable && OnSort(col.field)\">\n\t\t\t\t\t\t\t\t<div>\n\t\t\t\t\t\t\t\t\t<span tooltipStyleClass=\"prTooltip\" [pTooltip]=\"col.headerTooltip\" [tooltipPosition]=\"col.headerTooltipPosition || 'top'\">\n\t\t\t\t\t\t\t\t\t\t{{ col.header }}\n\t\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t\t\t<p-sortIcon *ngIf=\"col.sortable\" [field]=\"col.field\"></p-sortIcon>\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t</th>\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\t@if (ShowCheckbox && level === 0 && ColumnGroupList.length != 0) {\n\t\t\t\t\t\t<th class=\"text-center\" style=\"width: 4%\" [attr.rowspan]=\"MaxLevel === 1 ? 2 : MaxLevel\">\n\t\t\t\t\t\t\t<p-checkbox\n\t\t\t\t\t\t\t\tclass=\"prCheckbox\"\n\t\t\t\t\t\t\t\t[binary]=\"true\"\n\t\t\t\t\t\t\t\t(click)=\"$event.stopPropagation()\"\n\t\t\t\t\t\t\t\t[ngModel]=\"IsHeaderSelectionChecked\"\n\t\t\t\t\t\t\t\t(ngModelChange)=\"OnHeaderSelectionToggle($event)\"\n\t\t\t\t\t\t\t\t[disabled]=\"IsTableDisabled || ListDataFilter.length === 0\"\n\t\t\t\t\t\t\t\t[ngClass]=\"{\n\t\t\t\t\t\t\t\t\t'prCheckbox--indeterminate': IsHeaderSelectionIndeterminate,\n\t\t\t\t\t\t\t\t}\"\n\t\t\t\t\t\t\t></p-checkbox>\n\t\t\t\t\t\t</th>\n\t\t\t\t\t}\n\t\t\t\t</tr>\n\t\t\t}\n\t\t\t<tr>\n\t\t\t\t@for (col of ColumnList; track $index) {\n\t\t\t\t\t@if (col.showHeader) {\n\t\t\t\t\t\t<th\n\t\t\t\t\t\t\t[class]=\"col.className\"\n\t\t\t\t\t\t\t[pSortableColumn]=\"!col.isChecboxColumn && col.sortable ? col.field : ''\"\n\t\t\t\t\t\t\t[style.width]=\"col.width\"\n\t\t\t\t\t\t\t[style.min-width]=\"col.minWidth\"\n\t\t\t\t\t\t\t(click)=\"!col.isChecboxColumn && col.sortable && OnSort(col.field)\"\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<div class=\"prTable__header\">\n\t\t\t\t\t\t\t\t<span tooltipStyleClass=\"prTooltip\" [pTooltip]=\"col.headerTooltip\" [tooltipPosition]=\"col.headerTooltipPosition || 'top'\">\n\t\t\t\t\t\t\t\t\t{{ col.header }}\n\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t\t@if (!col.showIndex) {\n\t\t\t\t\t\t\t\t\t@if (col.isChecboxColumn) {\n\t\t\t\t\t\t\t\t\t\t<br />\n\t\t\t\t\t\t\t\t\t\t<p-checkbox\n\t\t\t\t\t\t\t\t\t\t\tclass=\"prCheckbox\"\n\t\t\t\t\t\t\t\t\t\t\t[binary]=\"true\"\n\t\t\t\t\t\t\t\t\t\t\t(click)=\"$event.stopPropagation()\"\n\t\t\t\t\t\t\t\t\t\t\t[(ngModel)]=\"HeaderState[col.field].checked\"\n\t\t\t\t\t\t\t\t\t\t\t(ngModelChange)=\"OnHeaderCheckboxChange($event, col.field)\"\n\t\t\t\t\t\t\t\t\t\t\t[attr.data-check]=\"col.field\"\n\t\t\t\t\t\t\t\t\t\t\t[disabled]=\"IsTableDisabled\"\n\t\t\t\t\t\t\t\t\t\t\t[ngClass]=\"{\n\t\t\t\t\t\t\t\t\t\t\t\t'prCheckbox--indeterminate': HeaderState[col.field].indeterminate,\n\t\t\t\t\t\t\t\t\t\t\t}\"\n\t\t\t\t\t\t\t\t\t\t></p-checkbox>\n\t\t\t\t\t\t\t\t\t} @else {\n\t\t\t\t\t\t\t\t\t\t<p-sortIcon *ngIf=\"col.sortable\" [field]=\"col.field\"></p-sortIcon>\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t</th>\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t@if (ShowCheckbox && ColumnGroupList.length == 0) {\n\t\t\t\t\t<th class=\"text-center\" style=\"width: 4%\">\n\t\t\t\t\t\t<p-checkbox\n\t\t\t\t\t\t\tclass=\"prCheckbox\"\n\t\t\t\t\t\t\t[binary]=\"true\"\n\t\t\t\t\t\t\t(click)=\"$event.stopPropagation()\"\n\t\t\t\t\t\t\t[ngModel]=\"IsHeaderSelectionChecked\"\n\t\t\t\t\t\t\t(ngModelChange)=\"OnHeaderSelectionToggle($event)\"\n\t\t\t\t\t\t\t[disabled]=\"IsTableDisabled || ListDataFilter.length === 0\"\n\t\t\t\t\t\t\t[ngClass]=\"{\n\t\t\t\t\t\t\t\t'prCheckbox--indeterminate': IsHeaderSelectionIndeterminate,\n\t\t\t\t\t\t\t}\"\n\t\t\t\t\t\t></p-checkbox>\n\t\t\t\t\t</th>\n\t\t\t\t}\n\t\t\t</tr>\n\t\t\t@if (RowResumenList.length && ListDataFilter.length) {\n\t\t\t\t<tr class=\"fixedRow\">\n\t\t\t\t\t@for (col of RowResumenList; track $index) {\n\t\t\t\t\t\t<td [ngClass]=\"col.className\" [attr.colspan]=\"col.colspan\" [attr.rowspan]=\"col.rowspan\">\n\t\t\t\t\t\t\t@if (col.templateRef) {\n\t\t\t\t\t\t\t\t<span>\n\t\t\t\t\t\t\t\t\t<ng-container *ngTemplateOutlet=\"col.templateRef\"></ng-container>\n\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t} @else {\n\t\t\t\t\t\t\t\t<ng-template #defaultContent></ng-template>\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t</td>\n\t\t\t\t\t}\n\t\t\t\t</tr>\n\t\t\t}\n\t\t</ng-template>\n\t\t<ng-template pTemplate=\"body\" let-rowData let-rowIndex=\"rowIndex\">\n\t\t\t<tr>\n\t\t\t\t@for (col of ColumnList; track $index) {\n\t\t\t\t\t<td [ngClass]=\"col.className\">\n\t\t\t\t\t\t@if (col.showIndex) {\n\t\t\t\t\t\t\t{{ rowIndex + 1 + (CurrentPage - 1) * RowsPerPage }}\n\t\t\t\t\t\t} @else {\n\t\t\t\t\t\t\t@if (col.templateRef) {\n\t\t\t\t\t\t\t\t<ng-container *ngTemplateOutlet=\"col.templateRef; context: { $implicit: rowData }\"></ng-container>\n\t\t\t\t\t\t\t} @else if (col.isChecboxColumn) {\n\t\t\t\t\t\t\t\t<p-checkbox [binary]=\"true\" [(ngModel)]=\"rowData[col.field]\" (onChange)=\"onBodyCheckboxChange(col.field)\" [disabled]=\"IsTableDisabled\"></p-checkbox>\n\t\t\t\t\t\t\t} @else {\n\t\t\t\t\t\t\t\t<span class=\"text-breakWord\" tooltipStyleClass=\"prTooltip\" [pTooltip]=\"col.tooltip\" [tooltipPosition]=\"col.tooltipPosition || 'top'\">\n\t\t\t\t\t\t\t\t\t{{ rowData[col.field] | formatCell: col.formatType }}\n\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t</td>\n\t\t\t\t}\n\t\t\t\t@if (ShowCheckbox) {\n\t\t\t\t\t<td class=\"text-center\">\n\t\t\t\t\t\t<p-tableCheckbox [value]=\"rowData\" class=\"prCheckbox\" />\n\t\t\t\t\t</td>\n\t\t\t\t}\n\t\t\t</tr>\n\t\t</ng-template>\n\t\t<ng-template #emptymessage>\n\t\t\t<tr>\n\t\t\t\t<td [attr.colspan]=\"ColumnList.length + (ShowCheckbox ? 1 : 0)\" class=\"text-center\">\n\t\t\t\t\t{{ \"Nodata\" | term: GlobalTermService.languageCode }}\n\t\t\t\t</td>\n\t\t\t</tr>\n\t\t</ng-template>\n\t</p-table>\n\t<div class=\"d-flex justify-content-end\">\n\t\t@if (TotalRecords !== 0 && ShowPagination && TotalPages > 1) {\n\t\t\t<div class=\"ptTablePaginator\">\n\t\t\t\t<p-paginator\n\t\t\t\t\tclass=\"prPaginator paginatorTableGA\"\n\t\t\t\t\t[first]=\"(CurrentPage - 1) * RowsPerPage\"\n\t\t\t\t\t[rows]=\"RowsPerPage\"\n\t\t\t\t\t[totalRecords]=\"TotalRecords\"\n\t\t\t\t\t(onPageChange)=\"OnPageChange($event)\"\n\t\t\t\t\t[showJumpToPageInput]=\"false\"\n\t\t\t\t\t[showCurrentPageReport]=\"false\"\n\t\t\t\t\t[showPageLinks]=\"false\"\n\t\t\t\t\t[showFirstLastIcon]=\"false\"\n\t\t\t\t\t[templateLeft]=\"templateLeft\"\n\t\t\t\t>\n\t\t\t\t\t<ng-template #previouspagelinkicon>\n\t\t\t\t\t\t<i class=\"icon icon-arrow-left paginatorArrowGA\"></i>\n\t\t\t\t\t</ng-template>\n\t\t\t\t\t<ng-template #nextpagelinkicon>\n\t\t\t\t\t\t<i class=\"icon icon-arrow-right paginatorArrowGA\"></i>\n\t\t\t\t\t</ng-template>\n\t\t\t\t\t<ng-template pTemplate=\"templateLeft\" let-state #templateLeft>\n\t\t\t\t\t\t@if (ShowRowPerPage) {\n\t\t\t\t\t\t\t<span>{{ \"ROWS_PER_PAGE\" | term: GlobalTermService.languageCode }}</span>\n\t\t\t\t\t\t\t<p-select\n\t\t\t\t\t\t\t\tpanelStyleClass=\"prSelect paginatorSelectTableGA\"\n\t\t\t\t\t\t\t\tclass=\"prSelect\"\n\t\t\t\t\t\t\t\t[options]=\"AllowedPageSizes\"\n\t\t\t\t\t\t\t\t[ngModel]=\"RowsPerPage\"\n\t\t\t\t\t\t\t\t(onChange)=\"OnRowsPerPageChange($event.value)\"\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t<ng-template #dropdownicon>\n\t\t\t\t\t\t\t\t <i class=\"icon icon-arrow-down\"></i>\n\t\t\t\t\t\t\t\t</ng-template>\n\t\t\t\t\t\t\t</p-select>\n\t\t\t\t\t\t}\n\t\t\t\t\t\t<span>\n\t\t\t\t\t\t\t{{ \"Page\" | term: GlobalTermService.languageCode }}\n\t\t\t\t\t\t\t<p-inputnumber class=\"p-paginator-jtp-input\" inputId=\"integeronly\" [(ngModel)]=\"CurrentPage\" [allowEmpty]=\"false\" [min]=\"1\" (keyup.enter)=\"onChangeSelectPage($event)\" />\n\t\t\t\t\t\t\t{{ \"Of\" | term: GlobalTermService.languageCode }} {{ TotalPages }}\n\t\t\t\t\t\t</span>\n\t\t\t\t\t</ng-template>\n\t\t\t\t</p-paginator>\n\t\t\t</div>\n\t\t}\n\t</div>\n</div>\n","import { CommonModule, DatePipe } from \"@angular/common\";\nimport { AfterContentInit, ChangeDetectorRef, Component, ContentChild, ContentChildren, EventEmitter, inject, Input, OnChanges, Output, QueryList, SimpleChanges, TemplateRef } from \"@angular/core\";\nimport { FormsModule } from \"@angular/forms\";\nimport { BadgeModule } from \"primeng/badge\";\nimport { CheckboxModule } from \"primeng/checkbox\";\nimport { IconField } from \"primeng/iconfield\";\nimport { InputIcon } from \"primeng/inputicon\";\nimport { InputNumber } from \"primeng/inputnumber\";\nimport { InputText, InputTextModule } from \"primeng/inputtext\";\nimport { Paginator } from \"primeng/paginator\";\nimport { Select } from \"primeng/select\";\nimport { TableModule } from \"primeng/table\";\nimport { TooltipModule } from \"primeng/tooltip\";\nimport { FormatCellPipe } from \"../../pipes/formatCell.pipe\";\nimport { TermPipe } from \"intelica-library-base\";\nimport { GlobalTermService } from \"intelica-library-base\";\nimport { ColumnComponent, ColumnGroupComponent, RowResumenComponent } from \"../table/column.component\";\nimport { SortFieldModel } from \"../table/model/sort.model\";\nimport { QueryParametersModel } from \"./model/query.model\";\n\n@Component({\n\tselector: \"intelica-table-fetch\",\n\tstandalone: true,\n\timports: [\n\t\tInputIcon,\n\t\tIconField,\n\t\tInputText,\n\t\tInputTextModule,\n\t\tInputNumber,\n\t\tPaginator,\n\t\tFormsModule,\n\t\tCommonModule,\n\t\tTableModule,\n\t\tSelect,\n\t\tBadgeModule,\n\t\tTooltipModule,\n\t\tTermPipe,\n\t\tCheckboxModule,\n\t\tFormsModule,\n\t\tFormatCellPipe,\n\t],\n\ttemplateUrl: \"./table-fetch.component.html\",\n\tproviders: [FormatCellPipe, DatePipe],\n})\nexport class TableFetchComponent<T> implements OnChanges, AfterContentInit {\n\treadonly GlobalTermService = inject(GlobalTermService);\n\n\t@Input() ComponentId: string = \"\";\n\t@Input() ShowRowPerPage: boolean = true;\n\t@Input() ShowSearch: boolean = false;\n\t@Input() ShowPagination: boolean = false;\n\t@Input() RowsPerPage: number = 10;\n\t@Input() ShowCheckbox: boolean = false;\n\t@Input() ShowIndex: boolean = false;\n\t@Input() ClassName: string = \"\";\n\t@Input() DefaultSortField: string = \"\";\n\t@Input() scrollHeight: string = \"400px\";\n\t@Input() scrollable: boolean = false;\n\t@Input() AllowedPageSizes: number[] = [10, 25, 50, 100];\n\t@Input() tableStyle: { [klass: string]: any } = {};\n\tLevels: number[] = [];\n\t@Input() FilteredList: T[] = [];\n\t@Input() TotalItems: number = 0;\n\tTotalRecords: number = 0;\n\tIsPaginatorInputSearch: boolean = false;\n\n\t@Output() EmitQueryParametersChange = new EventEmitter<QueryParametersModel>();\n\n\t@ContentChildren(ColumnComponent) Columns!: QueryList<ColumnComponent>;\n\t@ContentChildren(ColumnGroupComponent)\n\tColumnGroups!: QueryList<ColumnGroupComponent>;\n\t@ContentChildren(RowResumenComponent)\n\tRowResumenGroups!: QueryList<RowResumenComponent>;\n\n\t@ContentChild(\"additionalTemplate\") AdditionalTemplate?: TemplateRef<any>;\n\t@ContentChild(\"additionalCentralTemplate\")\n\tAdditionalCentralTemplate?: TemplateRef<any>;\n\t@ContentChild(\"additionalExtendedTemplate\")\n\tAdditionalExtendedTemplate?: TemplateRef<any>;\n\t@Output() EmitSortEvent = new EventEmitter<SortFieldModel[]>();\n\n\tColumnList: ColumnComponent[] = [];\n\tColumnGroupList: ColumnGroupComponent[] = [];\n\tRowResumenList: RowResumenComponent[] = [];\n\n\t@Input() CurrentPage: number = 1;\n\t@Input() SortOrder: number = 1;\n\t@Input() SortField: keyof T | null = null;\n\tMaxLevel: number = 0;\n\tListDataTable: T[] = [];\n\tSearchInput: string = \"\";\n\n\tconstructor(private cdr: ChangeDetectorRef) {}\n\n\tngOnChanges(changes: SimpleChanges): void {\n\t\tif (changes[\"FilteredList\"] || changes[\"RowsPerPage\"] || changes[\"CurrentPage\"]) {\n\t\t\tthis.UpdatePages();\n\t\t}\n\n\t\tif (changes[\"SortField\"] || changes[\"SortOrder\"]) {\n\t\t\tthis.EmitSortEvent.emit([\n\t\t\t\t{\n\t\t\t\t\tsortOrder: this.SortOrder,\n\t\t\t\t\tsortField: this.SortField?.toString() ?? \"\",\n\t\t\t\t},\n\t\t\t]);\n\t\t}\n\t}\n\n\tngAfterContentInit() {\n\t\tthis.captureColumns();\n\t\tthis.captureGroups();\n\t\tthis.captureResumen();\n\n\t\tthis.Columns.changes.subscribe(() => {\n\t\t\tthis.captureColumns();\n\t\t\tthis.cdr.markForCheck();\n\t\t});\n\n\t\tthis.ColumnGroups.changes.subscribe(() => {\n\t\t\tthis.captureGroups();\n\t\t\tthis.cdr.markForCheck();\n\t\t});\n\n\t\tthis.RowResumenGroups.changes.subscribe(() => {\n\t\t\tthis.captureResumen();\n\t\t\tthis.cdr.markForCheck();\n\t\t});\n\t}\n\n\tprivate captureColumns() {\n\t\tthis.ColumnList = this.Columns?.toArray() ?? [];\n\t}\n\n\tprivate captureGroups() {\n\t\tthis.ColumnGroupList = this.ColumnGroups?.toArray() ?? [];\n\n\t\tconst levels = this.ColumnGroupList.map(c => c.level);\n\t\tthis.MaxLevel = levels.length ? Math.max(...levels) + 1 : 1;\n\t\tthis.Levels = Array.from({ length: this.MaxLevel }, (_, i) => i);\n\t}\n\n\tprivate captureResumen() {\n\t\tthis.RowResumenList = this.RowResumenGroups?.toArray() ?? [];\n\t}\n\n\tOnSort(field: string) {\n\t\tif (this.SortField === field) {\n\t\t\tthis.SortOrder *= -1;\n\t\t} else {\n\t\t\tthis.SortField = field as keyof T;\n\t\t\tthis.SortOrder = 1;\n\t\t}\n\t\tthis.CurrentPage = 1;\n\t\tthis.ExecuteSearch({});\n\t}\n\tUpdatePages() {\n\t\tif (this.ShowPagination) {\n\t\t\tthis.TotalRecords = this.TotalItems;\n\n\t\t\tconst start = (this.CurrentPage - 1) * this.RowsPerPage;\n\t\t\tconst end = start + this.RowsPerPage;\n\t\t\tthis.ListDataTable = this.FilteredList.slice(start, end);\n\t\t} else {\n\t\t\tthis.ListDataTable = this.FilteredList;\n\t\t}\n\t}\n\n\tOnPageChange(event: { page?: number; rows?: number } | number): void {\n\t\tif (typeof event === \"number\") {\n\t\t\tthis.CurrentPage = event;\n\t\t} else {\n\t\t\tif (typeof event?.rows === \"number\") {\n\t\t\t\tthis.RowsPerPage = event.rows;\n\t\t\t}\n\t\t\tif (typeof event?.page === \"number\") {\n\t\t\t\tthis.CurrentPage = event.page + 1;\n\t\t\t}\n\t\t}\n\t\tthis.IsPaginatorInputSearch = true;\n\t\tthis.ExecuteSearch({});\n\t}\n\n\tResetTable() {\n\t\tthis.CurrentPage = 1;\n\t\tthis.ExecuteSearch({});\n\t}\n\n\tExecuteSearch(event?: any): void {\n\t\tif (event?.fieldText !== undefined && event?.fieldText !== \"\") {\n\t\t\tthis.SearchInput = event;\n\t\t}\n\n\t\tif (this.SearchInput !== undefined && this.SearchInput !== \"\" && !this.IsPaginatorInputSearch) {\n\t\t\tthis.CurrentPage = 1;\n\t\t}\n\n\t\tconst newQueryParameters: QueryParametersModel = {\n\t\t\tFilterValue: this.SearchInput.trim(),\n\t\t\tOrderBy: this.SortField ? String(this.SortField) : undefined,\n\t\t\tSortDirection: this.SortOrder === 1 ? \"asc\" : \"desc\",\n\t\t\tPageNumber: this.CurrentPage,\n\t\t\tPageSize: this.RowsPerPage,\n\t\t};\n\n\t\tthis.EmitQueryParametersChange.emit(newQueryParameters);\n\t\tthis.UpdatePages();\n\t\tthis.IsPaginatorInputSearch = false;\n\t}\n\n\tOnRowsPerPageChange(value: number): void {\n\t\tthis.RowsPerPage = value;\n\t\tthis.CurrentPage = 1;\n\t\tthis.ExecuteSearch({});\n\t}\n\tClearSearch() {\n\t\tthis.SearchInput = \"\";\n\t\tthis.CurrentPage = 1;\n\t\tthis.ExecuteSearch({});\n\t}\n\tget TotalPages(): number {\n\t\treturn Math.ceil(this.TotalRecords / this.RowsPerPage);\n\t}\n\n\tget RenderPanel(): boolean {\n\t\treturn Boolean(this.AdditionalTemplate) || this.ShowSearch || Boolean(this.AdditionalCentralTemplate) || Boolean(this.AdditionalExtendedTemplate);\n\t}\n\n\tonChangeSelectPage(event: any) {\n\t\tthis.IsPaginatorInputSearch = true;\n\t\tconst eventValue: string = event.target.value;\n\t\tif (eventValue === \"\" || isNaN(parseInt(eventValue)) || eventValue === \"0\" || eventValue.indexOf(\"-\") >= 0) {\n\t\t\tthis.CurrentPage = 1;\n\t\t\tthis.ExecuteSearch({});\n\t\t\treturn;\n\t\t}\n\n\t\tthis.CurrentPage = parseInt(eventValue);\n\n\t\tif (this.CurrentPage > this.TotalPages) {\n\t\t\tthis.CurrentPage = this.TotalPages;\n\t\t}\n\t\tthis.ExecuteSearch({});\n\t}\n\n\tOnSearch() {\n\t\tthis.CurrentPage = 1;\n\t\tthis.ExecuteSearch({});\n\t}\n}\n","<div class=\"prTable\">\n\t@if (RenderPanel) {\n\t\t<div class=\" \">\n\t\t\t<div class=\"prCard__row justify-content-end\">\n\t\t\t\t<div class=\"prCard__actionflex\">\n\t\t\t\t\t@if (AdditionalTemplate) {\n\t\t\t\t\t\t<ng-container *ngTemplateOutlet=\"AdditionalTemplate\"></ng-container>\n\t\t\t\t\t}\n\t\t\t\t</div>\n\n\t\t\t\t@if (ShowSearch) {\n\t\t\t\t\t<div class=\"ptSearch searchTableGA\">\n\t\t\t\t\t\t<p-iconfield>\n\t\t\t\t\t\t\t<input type=\"text\" class=\"prInputText\" pInputText placeholder=\"{{ 'LBL_SEARCH_SELECT' | term: GlobalTermService.languageCode }}\" [(ngModel)]=\"SearchInput\" (keydown.enter)=\"OnSearch()\" />\n\t\t\t\t\t\t\t<p-inputicon>\n\t\t\t\t\t\t\t\t<button class=\"ptSearch__icon ptSearch__icon--close\" *ngIf=\"SearchInput\" (click)=\"ClearSearch()\">\n\t\t\t\t\t\t\t\t\t<i class=\"icon icon-cancel\"></i>\n\t\t\t\t\t\t\t\t</button>\n\t\t\t\t\t\t\t\t<span class=\"ptSearch__icon ptSearch__icon--divider\" *ngIf=\"SearchInput\"></span>\n\t\t\t\t\t\t\t\t<button class=\"ptSearch__icon ptSearch__icon--search\" (click)=\"OnSearch()\">\n\t\t\t\t\t\t\t\t\t<i class=\"icon icon-search\"></i>\n\t\t\t\t\t\t\t\t</button>\n\t\t\t\t\t\t\t</p-inputicon>\n\t\t\t\t\t\t</p-iconfield>\n\t\t\t\t\t</div>\n\t\t\t\t}\n\t\t\t\t<!-- -->\n\t\t\t\t@if (AdditionalCentralTemplate) {\n\t\t\t\t\t<div class=\"prTableTools__new prTableTools__new--right\">\n\t\t\t\t\t\t<ng-container *ngTemplateOutlet=\"AdditionalCentralTemplate\"></ng-container>\n\t\t\t\t\t</div>\n\t\t\t\t}\n\t\t\t</div>\n\t\t</div>\n\t\t@if (AdditionalExtendedTemplate) {\n\t\t\t<div class=\"prTableTools justify-content-start\">\n\t\t\t\t<ng-container *ngTemplateOutlet=\"AdditionalExtendedTemplate\"></ng-container>\n\t\t\t</div>\n\t\t}\n\t}\n\t<p-table\n\t\tclass=\"prTable\"\n\t\t[ngClass]=\"ClassName\"\n\t\t[value]=\"FilteredList\"\n\t\tresponsiveLayout=\"scroll\"\n\t\t[sortField]=\"DefaultSortField\"\n\t\t[sortOrder]=\"SortOrder\"\n\t\t[scrollable]=\"scrollable\"\n\t\t[scrollHeight]=\"scrollable ? scrollHeight : 'auto'\"\n\t\t[tableStyle]=\"tableStyle\"\n\t>\n\t\t<!-- Cabecera con columnas agrupadas -->\n\t\t<ng-template pTemplate=\"header\">\n\t\t\t@for (level of Levels; track $index) {\n\t\t\t\t<tr>\n\t\t\t\t\t@for (col of ColumnGroupList; track $index) {\n\t\t\t\t\t\t@if (col.level === level) {\n\t\t\t\t\t\t\t<th [attr.colspan]=\"col.colspan\" [attr.rowspan]=\"col.rowspan\" [pSortableColumn]=\"col.sortable ? col.field : ''\" [style.min-width]=\"col.minWidth\" (click)=\"col.sortable && OnSort(col.field)\">\n\t\t\t\t\t\t\t\t<div>\n\t\t\t\t\t\t\t\t\t<span tooltipStyleClass=\"prTooltip\" F [pTooltip]=\"col.headerTooltip || col.header\" [tooltipPosition]=\"col.headerTooltipPosition || 'top'\">\n\t\t\t\t\t\t\t\t\t\t{{ col.header }}\n\t\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t\t\t<p-sortIcon *ngIf=\"col.sortable\" [field]=\"col.field\"></p-sortIcon>\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t</th>\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\t@if (ShowCheckbox && level === 0 && ColumnGroupList.length != 0) {\n\t\t\t\t\t\t<th class=\"text-center\" style=\"width: 4%\" [attr.rowspan]=\"MaxLevel === 1 ? 2 : MaxLevel\">\n\t\t\t\t\t\t\t<p-tableHeaderCheckbox class=\"prCheckbox\" />\n\t\t\t\t\t\t</th>\n\t\t\t\t\t}\n\t\t\t\t</tr>\n\t\t\t}\n\n\t\t\t<tr>\n\t\t\t\t@for (col of ColumnList; track $index) {\n\t\t\t\t\t@if (col.showHeader) {\n\t\t\t\t\t\t<th\n\t\t\t\t\t\t\t[class]=\"col.className\"\n\t\t\t\t\t\t\t[pSortableColumn]=\"!col.isChecboxColumn && col.sortable ? col.field : ''\"\n\t\t\t\t\t\t\t[style.width]=\"col.width\"\n\t\t\t\t\t\t\t[style.min-width]=\"col.minWidth\"\n\t\t\t\t\t\t\t(click)=\"!col.isChecboxColumn && col.sortable && OnSort(col.field)\"\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<div class=\"prTable__header\">\n\t\t\t\t\t\t\t\t<span tooltipStyleClass=\"prTooltip\" [pTooltip]=\"col.headerTooltip || col.header\" [tooltipPosition]=\"col.headerTooltipPosition || 'top'\">\n\t\t\t\t\t\t\t\t\t{{ col.header }}\n\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t\t@if (!col.showIndex) {\n\t\t\t\t\t\t\t\t\t<p-sortIcon *ngIf=\"col.sortable\" [field]=\"col.field\"></p-sortIcon>\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t</th>\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t@if (ShowCheckbox && ColumnGroupList.length == 0) {\n\t\t\t\t\t<th class=\"text-center\" style=\"width: 4%\">\n\t\t\t\t\t\t<p-tableHeaderCheckbox class=\"prCheckbox\" />\n\t\t\t\t\t</th>\n\t\t\t\t}\n\t\t\t</tr>\n\n\t\t\t@if (FilteredList.length > 0 && RowResumenList.length > 0) {\n\t\t\t\t<tr class=\"fixedRow\">\n\t\t\t\t\t@for (col of RowResumenList; track $index) {\n\t\t\t\t\t\t<td [ngClass]=\"col.className\" [attr.colspan]=\"col.colspan\" [attr.rowspan]=\"col.rowspan\">\n\t\t\t\t\t\t\t@if (col.templateRef) {\n\t\t\t\t\t\t\t\t<span>\n\t\t\t\t\t\t\t\t\t<ng-container *ngTemplateOutlet=\"col.templateRef\"></ng-container>\n\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t</td>\n\t\t\t\t\t}\n\t\t\t\t</tr>\n\t\t\t}\n\t\t</ng-template>\n\n\t\t<!-- Cuerpo de la tabla -->\n\t\t<ng-template pTemplate=\"body\" let-rowData let-rowIndex=\"rowIndex\">\n\t\t\t<tr>\n\t\t\t\t@for (col of ColumnList; track $index) {\n\t\t\t\t\t<td [ngClass]=\"col.className\">\n\t\t\t\t\t\t@if (col.showIndex) {\n\t\t\t\t\t\t\t{{ rowIndex + 1 + (CurrentPage - 1) * RowsPerPage }}\n\t\t\t\t\t\t} @else {\n\t\t\t\t\t\t\t@if (col.templateRef) {\n\t\t\t\t\t\t\t\t<ng-container *ngTemplateOutlet=\"col.templateRef; context: { $implicit: rowData }\"></ng-container>\n\t\t\t\t\t\t\t} @else {\n\t\t\t\t\t\t\t\t<span class=\"text-breakWord\" tooltipStyleClass=\"prTooltip\" pTooltip=\"{{ col.tooltip }}\" tooltipPosition=\"{{ col.tooltipPosition }}\">\n\t\t\t\t\t\t\t\t\t{{ rowData[col.field] | formatCell: col.formatType }}\n\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t</td>\n\t\t\t\t}\n\t\t\t\t@if (ShowCheckbox) {\n\t\t\t\t\t<td class=\"text-center\">\n\t\t\t\t\t\t<p-tableCheckbox [value]=\"rowData\" class=\"prCheckbox\" />\n\t\t\t\t\t</td>\n\t\t\t\t}\n\t\t\t</tr>\n\t\t</ng-template>\n\n\t\t<!-- Mensaje cuando no hay datos -->\n\t\t<ng-template pTemplate=\"emptymessage\">\n\t\t\t<tr>\n\t\t\t\t<td [attr.colspan]=\"ColumnList.length + (ShowCheckbox ? 1 : 0)\" class=\"text-center\">\n\t\t\t\t\t{{ \"Nodata\" | term: GlobalTermService.languageCode }}\n\t\t\t\t</td>\n\t\t\t</tr>\n\t\t</ng-template>\n\t</p-table>\n\n\t<!-- <div class=\"prTableToolsBottom\"> -->\n\t<div class=\"d-flex justify-content-end\">\n\t\t@if (TotalRecords !== 0 && ShowPagination) {\n\t\t\t<div class=\"ptTablePaginator\">\n\t\t\t\t<p-paginator\n\t\t\t\t\tclass=\"prPaginator paginatorTableGA\"\n\t\t\t\t\t[first]=\"(CurrentPage - 1) * RowsPerPage\"\n\t\t\t\t\t[rows]=\"RowsPerPage\"\n\t\t\t\t\t[totalRecords]=\"TotalRecords\"\n\t\t\t\t\t(onPageChange)=\"OnPageChange($event)\"\n\t\t\t\t\t[showJumpToPageInput]=\"false\"\n\t\t\t\t\t[showCurrentPageReport]=\"false\"\n\t\t\t\t\t[showPageLinks]=\"false\"\n\t\t\t\t\t[showFirstLastIcon]=\"false\"\n\t\t\t\t\t[templateLeft]=\"templateLeft\"\n\t\t\t\t>\n\t\t\t\t\t<ng-template #previouspagelinkicon>\n\t\t\t\t\t\t<i class=\"icon icon-arrow-left paginatorArrowGA\"></i>\n\t\t\t\t\t</ng-template>\n\t\t\t\t\t<ng-template #nextpagelinkicon>\n\t\t\t\t\t\t<i class=\"icon icon-arrow-right paginatorArrowGA\"></i>\n\t\t\t\t\t</ng-template>\n\t\t\t\t\t<ng-template pTemplate=\"templateLeft\" let-state #templateLeft>\n\t\t\t\t\t\t<span>{{ \"ROWS_PER_PAGE\" | term: GlobalTermService.languageCode }}</span>\n\t\t\t\t\t\t<p-select\n\t\t\t\t\t\t\tpanelStyleClass=\"prSelect paginatorSelectTableGA\"\n\t\t\t\t\t\t\tclass=\"prSelect\"\n\t\t\t\t\t\t\t[options]=\"AllowedPageSizes\"\n\t\t\t\t\t\t\t[ngModel]=\"RowsPerPage\"\n\t\t\t\t\t\t\t(onChange)=\"OnRowsPerPageChange($event.value)\"\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<ng-template #dropdownicon>\n\t\t\t\t\t\t\t <i class=\"icon icon-arrow-down\"></i>\n\t\t\t\t\t\t\t</ng-template>\n\t\t\t\t\t\t</p-select>\n\t\t\t\t\t\t<span>\n\t\t\t\t\t\t\t{{ \"Page\" | term: GlobalTermService.languageCode }}\n\t\t\t\t\t\t\t<p-inputnumber class=\"p-paginator-jtp-input\" inputId=\"integeronly\" [(ngModel)]=\"CurrentPage\" [allowEmpty]=\"false\" [min]=\"1\" (keyup.enter)=\"onChangeSelectPage($event)\" />\n\t\t\t\t\t\t\t{{ \"Of\" | term: GlobalTermService.languageCode }} {{ TotalPages }}\n\t\t\t\t\t\t</span>\n\t\t\t\t\t</ng-template>\n\t\t\t\t</p-paginator>\n\t\t\t</div>\n\t\t}\n\t</div>\n</div>\n","import { Component, Input, OnInit } from \"@angular/core\";\nimport { CommonModule } from \"@angular/common\";\nimport { SkeletonModule } from \"primeng/skeleton\";\n\n@Component({\n\tselector: \"intelica-skeleton-table\",\n\timports: [CommonModule, SkeletonModule],\n\ttemplateUrl: \"./skeleton-table.component.html\",\n})\nexport class SkeletonTableComponent implements OnInit {\n\t/**\n\t * @description number of rows to display\n\t * @default 6\n\t * @type number\n\t * @example <intelica-skeleton-table [rows]=\"6\"></intelica-skeleton-table>\n\t */\n\t@Input() rows: 2 | 3 | 4 | 6 | 12 = 6;\n\t/**\n\t * @description number of columns to display\n\t * @default 6\n\t * @type number\n\t * @example <intelica-skeleton-table [columns]=\"6\"></intelica-skeleton-table>\n\t */\n\t@Input() columns: 2 | 3 | 4 | 6 | 12 = 6;\n\n\t@Input() showLeftSkeleton: boolean = true;\n\t@Input() showRightSkeleton: boolean = true;\n\n\tcolumnSizes: string[] = [];\n\n\tngOnInit(): void {\n\t\tconst baseSize = 12 / this.columns;\n\t\tthis.columnSizes = Array.from({ length: this.columns }, (_, i) => {\n\t\t\treturn `col-${baseSize}`;\n\t\t});\n\t}\n\n\tget justifyClass(): string | null {\n\t\tif (this.showLeftSkeleton && this.showRightSkeleton) return \"justify-content-between\";\n\t\tif (this.showLeftSkeleton) return \"justify-content-start\";\n\t\tif (this.showRightSkeleton) return \"justify-content-end\";\n\t\treturn null;\n\t}\n\n\tgetRows() {\n\t\treturn new Array(this.rows);\n\t}\n}\n","<div class=\"skeletonTable\">\n\t<div class=\"mb-2 row\" *ngIf=\"showLeftSkeleton || showRightSkeleton\" [ngClass]=\"justifyClass\">\n\t\t<div class=\"col-1 px-0\" *ngIf=\"showLeftSkeleton\">\n\t\t\t<p-skeleton class=\"prSkeleton\" [height]=\"'3rem'\"></p-skeleton>\n\t\t</div>\n\t\t<div class=\"col-3 px-0\" *ngIf=\"showRightSkeleton\">\n\t\t\t<p-skeleton class=\"prSkeleton\" [height]=\"'3rem'\"></p-skeleton>\n\t\t</div>\n\t</div>\n\n\t<div class=\"row\">\n\t\t<div class=\"col-12 px-0 mb-2\">\n\t\t\t<p-skeleton class=\"prSkeleton\" [height]=\"'4rem'\"></p-skeleton>\n\t\t</div>\n\t</div>\n\t@for (row of getRows(); track $index) {\n\t<div class=\"row borderBottomRow\">\n\t\t@for (column of columnSizes; track $index) {\n\t\t<div class=\"{{ column }} px-0\">\n\t\t\t<div class=\"bodyPaddingTable\">\n\t\t\t\t<p-skeleton class=\"prSkeleton\" [height]=\"'2rem'\"></p-skeleton>\n\t\t\t</div>\n\t\t</div>\n\t\t}\n\t</div>\n\t}\n</div>\n","import { CommonModule, isPlatformBrowser } from \"@angular/common\";\nimport { AfterViewInit, Component, ElementRef, EventEmitter, Inject, Input, Output, PLATFORM_ID } from \"@angular/core\";\nimport * as echarts from \"echarts\";\nimport { EChartsOption } from \"echarts\";\n\n@Component({\n\tselector: \"intelica-echart\",\n\timports: [CommonModule],\n\ttemplateUrl: \"./echart.component.html\",\n})\nexport class EchartComponent implements AfterViewInit {\n\t@Input() config!: EChartsOption | undefined;\n\t@Input() id!: string;\n\t@Input() renderer: \"canvas\" | \"svg\" = \"canvas\";\n\t@Input() containerStyle: { [klass: string]: any } = {\n\t\twidth: \"100%\",\n\t\theight: \"400px\",\n\t};\n\t@Output() event = new EventEmitter<any>();\n\n\tchart!: echarts.ECharts;\n\n\tconstructor(\n\t\tprivate el: ElementRef,\n\t\t@Inject(PLATFORM_ID) private platformId: Object\n\t) {}\n\n\tngAfterViewInit(): void {\n\t\tconst chartElement = this.el.nativeElement.querySelector(`#${this.id}_plot`);\n\t\tif (!this.config) {\n\t\t\tthrow new Error(\"Chart configuration is not set\");\n\t\t}\n\t\tif (!isPlatformBrowser(this.platformId)) {\n\t\t\tthrow new Error(\"Platform is not browser\");\n\t\t}\n\n\t\tif (!chartElement) {\n\t\t\tthrow new Error(\"Plot area not found\");\n\t\t}\n\n\t\tthis.initChart(chartElement);\n\t}\n\n\trefreshChart() {\n\t\tthis.chart.setOption(this.config!);\n\t}\n\n\tresize() {\n\t\tif (this.chart) {\n\t\t\tsetTimeout(() => {\n\t\t\t\tthis.chart.resize();\n\t\t\t}, 1);\n\t\t}\n\t}\n\n\tprivate initChart(chartElement: any) {\n\t\tconst observer = new ResizeObserver(() => this.resize());\n\t\tthis.chart = echarts.init(chartElement, null, { renderer: this.renderer });\n\t\tthis.chart.setOption(this.config!);\n\t\tthis.chart.on(\"click\", params => {\n\t\t\tthis.event.emit(params);\n\t\t});\n\t\tobserver.observe(chartElement);\n\t}\n}\n","<div [id]=\"id + '_plot'\" class=\"chart\" [ngStyle]=\"containerStyle\"></div>\n","import { Component, input, output, signal } from '@angular/core';\nimport { Breadcrumb } from \"primeng/breadcrumb\";\nimport { RouterLink } from \"@angular/router\";\nimport { Tooltip } from 'primeng/tooltip';\nimport { MenuItem } from 'primeng/api';\n\n@Component({\n selector: 'intelica-bread-crumb',\n imports: [Breadcrumb, RouterLink, Tooltip,],\n templateUrl: './bread-crumb.component.html'\n})\nexport class BreadCrumbComponent {\n fullItems = input<MenuItem[]>([]);\n itemClick = output<MenuItem>();\n}\n","<p-breadcrumb class=\"prBreadcrumb\" [model]=\"fullItems()\">\n <ng-template pTemplate=\"item\" let-item>\n <a [routerLink]=\"item.routerLink\" [pTooltip]=\"item.tooltip\" tooltipStyleClass=\"prTooltip\"\n [tooltipPosition]=\"item.tooltipPosition\" [tooltipStyleClass]=\"item.tooltipStyleClass\">\n <span>{{ item.label }}</span>\n </a>\n </ng-template>\n <ng-template pTemplate=\"separator\">\n <span class=\"breadcrumb-separator\">\n <i class=\"icon icon-arrow-right icon--xs\"></i>\n </span>\n </ng-template>\n</p-breadcrumb>","import { Component, input, output } from '@angular/core';\nimport { Button } from 'primeng/button';\n\n@Component({\n selector: 'intelica-title',\n imports: [Button],\n templateUrl: './title.component.html'\n})\nexport class TitleComponent {\n title = input<string>('');\n back = output<void>();\n}\n","<div class=\"ptSectionTitle\">\n <div class=\"ptSectionTitle__icon\">\n <p-button class=\"prButton\" icon=\"icon icon-nav-left\" (onClick)=\"back.emit()\" />\n </div>\n <div class=\"ptSectionTitle__content\">\n <div class=\"ptSectionTitle__title\">\n {{ title() }}\n </div>\n </div>\n</div>","import { HttpClient } from \"@angular/common/http\";\nimport { Injectable, inject } from \"@angular/core\";\nimport { ConfigService } from \"intelica-library-base\";\nimport { EmbedVisualCommand, EmbedWithoutVisualCommand } from \"../dto/embed-visual-command\";\nimport { EmbedVisualUrlResponse } from \"../dto/embed-visual-url-response\";\nimport { createEmbeddingContext, DashboardExperience, VisualExperience } from \"amazon-quicksight-embedding-sdk\";\nimport { firstValueFrom } from \"rxjs\";\nimport { EmbedDashboardCommand } from \"../dto/embed-dashboard-command\";\nimport { QuicksightEmbedOptions, QuicksightEvent, QuicksightVisualConfig } from \"../model/quicksight.model\";\n\n@Injectable({\n\tprovidedIn: \"root\",\n})\nexport class Shared {\n\tprivate readonly http = inject(HttpClient);\n\tprivate readonly configService = inject(ConfigService);\n\tprivate readonly path = `${this.configService.environment?.sharedPath}`;\n\tgetEmbedUrl(command: EmbedDashboardCommand) {\n\t\treturn this.http.post<string>(`${this.path}/quicksight-embed-url`, command);\n\t}\n\tgetEmbedVisualUrl(command: EmbedVisualCommand) {\n\t\treturn this.http.post<EmbedVisualUrlResponse>(`${this.path}/quicksight-embed-visual-url`, command);\n\t}\n\tgetEmbedVisualUrlsAnonymous(command: EmbedVisualCommand) {\n\t\treturn this.http.post<EmbedVisualUrlResponse>(`${this.path}/quicksight-embed-visual-anonymous`, command);\n\t}\n\tasync createEmbedContext(embedUrl: string, container: HTMLElement, options?: QuicksightEmbedOptions): Promise<void> {\n\t\tconst embeddingContext = await createEmbeddingContext();\n\t\tawait embeddingContext.embedDashboard({\n\t\t\turl: embedUrl,\n\t\t\tcontainer,\n\t\t\t...(options?.height && { height: options.height }),\n\t\t\t...(options?.width && { width: options.width }),\n\t\t\t...(options?.onMessage && { onMessage: this.toSdkMessageListener(options.onMessage) }),\n\t\t});\n\t}\n\tasync embedDashboard(command: EmbedDashboardCommand, container: HTMLElement, options?: QuicksightEmbedOptions): Promise<void> {\n\t\tcontainer.replaceChildren();\n\t\tconst embedUrl = await firstValueFrom(this.getEmbedUrl(command));\n\t\tawait this.createEmbedContext(embedUrl, container, options);\n\t}\n\tasync embedDashboardInteractive(command: EmbedDashboardCommand, container: HTMLElement, options?: QuicksightEmbedOptions): Promise<DashboardExperience> {\n\t\tcontainer.replaceChildren();\n\t\tconst embedUrl = await firstValueFrom(this.getEmbedUrl({ ...command, parameters: undefined }));\n\t\tconst embeddingContext = await createEmbeddingContext();\n\t\tconst sdkParameters = command.parameters ? Object.entries(command.parameters).map(([Name, Values]) => ({ Name, Values })) : undefined;\n\t\treturn await embeddingContext.embedDashboard(\n\t\t\t{\n\t\t\t\turl: embedUrl,\n\t\t\t\tcontainer,\n\t\t\t\t...(options?.height && { height: options.height }),\n\t\t\t\t...(options?.width && { width: options.width }),\n\t\t\t\t...(options?.onMessage && { onMessage: this.toSdkMessageListener(options.onMessage) }),\n\t\t\t},\n\t\t\tsdkParameters ? { parameters: sdkParameters } : undefined\n\t\t);\n\t}\n\tprivate toSdkMessageListener(emit: (event: QuicksightEvent) => void) {\n\t\treturn (changeEvent: any) => {\n\t\t\temit({\n\t\t\t\teventName: changeEvent?.eventName,\n\t\t\t\teventLevel: changeEvent?.eventLevel,\n\t\t\t\tmessage: changeEvent?.message,\n\t\t\t\tdata: changeEvent?.data,\n\t\t\t});\n\t\t};\n\t}\n\tasync setDashboardParameters(dashboard: DashboardExperience, parameters: Record<string, string[]>): Promise<void> {\n\t\tconst sdkParameters = Object.entries(parameters).map(([Name, Values]) => ({ Name, Values }));\n\t\tawait dashboard.setParameters(sdkParameters);\n\t}\n\tasync createEmbedVisualContext(embedUrl: string, container: HTMLElement, options?: { height?: string; width?: string }): Promise<void> {\n\t\tconst embeddingContext = await createEmbeddingContext();\n\t\tawait embeddingContext.embedVisual(\n\t\t\t{\n\t\t\t\turl: embedUrl,\n\t\t\t\tcontainer,\n\t\t\t\t...(options?.height && { height: options.height }),\n\t\t\t\t...(options?.width && { width: options.width }),\n\t\t\t},\n\t\t\t{ scaleToContainer: true, fitToIframeWidth: false } as any\n\t\t);\n\t}\n\tasync embedSequentialVisuals(command: EmbedWithoutVisualCommand, configs: QuicksightVisualConfig[], onVisualLoaded?: (visualId: string) => void): Promise<void> {\n\t\tfor (const config of configs) {\n\t\t\tconfig.container?.nativeElement?.replaceChildren();\n\t\t\tconst { visual } = await firstValueFrom(this.getEmbedVisualUrl({ dashboardId: command.dashboardId, sheetId: command.sheetId, visualId: config.visualId, parameters: command.parameters }));\n\t\t\tif (!visual) continue;\n\t\t\tawait this.createEmbedVisualContext(visual.embedUrl, config.container.nativeElement);\n\t\t\tonVisualLoaded?.(config.visualId);\n\t\t}\n\t}\n\tasync embedSequentialVisualsInteractive(\n\t\tcommand: EmbedWithoutVisualCommand,\n\t\tconfigs: QuicksightVisualConfig[],\n\t\tonVisualLoaded?: (visualId: string, ref: VisualExperience) => void\n\t): Promise<Map<string, VisualExperience>> {\n\t\tconst refs = new Map<string, VisualExperience>();\n\t\tconst sdkParameters = command.parameters ? Object.entries(command.parameters).map(([Name, Values]) => ({ Name, Values })) : undefined;\n\t\tfor (const config of configs) {\n\t\t\tconfig.container?.nativeElement?.replaceChildren();\n\t\t\tconst { visual } = await firstValueFrom(this.getEmbedVisualUrl({ dashboardId: command.dashboardId, sheetId: command.sheetId, visualId: config.visualId, parameters: {} }));\n\t\t\tif (!visual) continue;\n\t\t\tconst embeddingContext = await createEmbeddingContext();\n\t\t\tconst visualRef = await embeddingContext.embedVisual({ url: visual.embedUrl, container: config.container.nativeElement }, {\n\t\t\t\tscaleToContainer: true,\n\t\t\t\tfitToIframeWidth: false,\n\t\t\t\t...(sdkParameters ? { parameters: sdkParameters } : {}),\n\t\t\t} as any);\n\t\t\trefs.set(config.visualId, visualRef);\n\t\t\tonVisualLoaded?.(config.visualId, visualRef);\n\t\t}\n\t\treturn refs;\n\t}\n\tasync setVisualParameters(visual: VisualExperience, parameters: Record<string, string[]>): Promise<void> {\n\t\tconst sdkParameters = Object.entries(parameters).map(([Name, Values]) => ({ Name, Values }));\n\t\tawait visual.setParameters(sdkParameters);\n\t}\n\tasync setVisualsParameters(visuals: Iterable<VisualExperience>, parameters: Record<string, string[]>): Promise<void> {\n\t\tconst sdkParameters = Object.entries(parameters).map(([Name, Values]) => ({ Name, Values }));\n\t\tawait Promise.all([...visuals].map(v => v.setParameters(sdkParameters)));\n\t}\n}\n","export const QuicksightEventName = {\n\tERROR_OCCURRED: \"ERROR_OCCURRED\",\n\tCONTENT_LOADED: \"CONTENT_LOADED\",\n\tPARAMETERS_CHANGED: \"PARAMETERS_CHANGED\",\n\tSIZE_CHANGED: \"SIZE_CHANGED\",\n\tSELECTED_SHEET_CHANGED: \"SELECTED_SHEET_CHANGED\",\n\tMODAL_OPENED: \"MODAL_OPENED\",\n\tEXPERIENCE_INITIALIZED: \"EXPERIENCE_INITIALIZED\",\n} as const;\n\nexport const QUICKSIGHT_AUTH_ERROR_CODES = [\"Forbidden\", \"Unauthorized\", \"EmbeddingNotAuthorized\", \"TokenExpired\"];\n","import { QUICKSIGHT_AUTH_ERROR_CODES, QuicksightEventName } from \"../constants/quicksight.constants\";\nimport { QuicksightEvent, QuicksightEventOutputs } from \"../model/quicksight.model\";\n\nexport function isQuicksightSessionExpiredEvent(event: QuicksightEvent): boolean {\n\tif (event.eventName !== QuicksightEventName.ERROR_OCCURRED) return false;\n\tconst code = event.data?.errorCode ?? event.data?.code ?? \"\";\n\treturn typeof code === \"string\" && QUICKSIGHT_AUTH_ERROR_CODES.some(c => code.includes(c));\n}\n\nexport function dispatchQuicksightEvent(event: QuicksightEvent, outputs: QuicksightEventOutputs): void {\n\toutputs.sdkEvent.emit(event);\n\tif (event.eventName === QuicksightEventName.CONTENT_LOADED) outputs.contentLoaded?.emit(event);\n\tif (event.eventName === QuicksightEventName.ERROR_OCCURRED) {\n\t\toutputs.errorOccurred?.emit(event);\n\t\tif (isQuicksightSessionExpiredEvent(event)) outputs.sessionExpired?.emit(event);\n\t}\n}\n","import { Component, computed, effect, ElementRef, inject, input, output, QueryList, signal, ViewChildren } from '@angular/core';\nimport { Shared } from '../../services/shared';\nimport { dispatchQuicksightEvent } from '../../functions/quicksight-event.util';\nimport { QuicksightEvent } from '../../model/quicksight.model';\nimport { QuicksightEventName } from '../../constants/quicksight.constants';\nimport { ActivatedRoute } from '@angular/router';\nimport { toSignal } from '@angular/core/rxjs-interop';\nimport { Panel } from \"primeng/panel\";\nimport { Skeleton } from \"primeng/skeleton\";\n\n@Component({\n selector: 'intelica-dashboard-qs',\n imports: [Skeleton, Panel],\n templateUrl: './dashboard-qs.component.html'\n})\nexport class DashboardQsComponent {\n private readonly sharedService = inject(Shared);\n private readonly route = inject(ActivatedRoute);\n @ViewChildren('visualContainer') containers!: QueryList<ElementRef>;\n readonly dashboardIdInput = input<string | undefined>(undefined, { alias: 'dashboardId' });\n readonly parametersInput = input<Record<string, string[]> | undefined>(undefined, { alias: 'parameters' });\n readonly heightInput = input<string | undefined>(undefined, { alias: 'height' });\n private readonly routeData = toSignal(this.route.data, { initialValue: this.route.snapshot.data });\n readonly dashboardId = computed(() => this.dashboardIdInput() ?? (this.routeData()['dashboardId'] as string | undefined));\n readonly parameters = computed(() => this.parametersInput() ?? (this.routeData()['parameters'] as Record<string, string[]> | undefined));\n readonly height = computed(() => this.heightInput() ?? (this.routeData()['height'] as string | undefined));\n readonly isLoading = signal(true);\n readonly isLoadingChange = output<boolean>();\n readonly sdkEvent = output<QuicksightEvent>();\n readonly contentLoaded = output<QuicksightEvent>();\n readonly errorOccurred = output<QuicksightEvent>();\n readonly sessionExpired = output<QuicksightEvent>();\n private readonly viewReady = signal(false);\n constructor() {\n effect(() => {\n this.isLoadingChange.emit(this.isLoading());\n });\n effect(() => {\n const id = this.dashboardId();\n const parameters = this.parameters();\n if (!this.viewReady() || !id) return;\n this.EmbedDashboard(id, parameters);\n });\n }\n ngAfterViewInit(): void {\n this.viewReady.set(true);\n }\n async EmbedDashboard(dashboardId: string, parameters: Record<string, string[]> | undefined): Promise<void> {\n const container = this.containers.first?.nativeElement;\n if (!container) return;\n this.isLoading.set(true);\n try {\n await this.sharedService.embedDashboard(\n { dashboardId, parameters },\n container,\n {\n height: this.height() ?? `${window.innerHeight - 50}px`,\n onMessage: event => {\n dispatchQuicksightEvent(event, this);\n if (event.eventName === QuicksightEventName.CONTENT_LOADED || event.eventName === QuicksightEventName.ERROR_OCCURRED)\n this.isLoading.set(false);\n },\n }\n );\n } catch (error) {\n console.error('Error embedding dashboard:', error);\n this.isLoading.set(false);\n }\n }\n}\n","@if (isLoading()) {\n<div class=\"u-display-flex u-flex-column u-gap-sm\">\n <div class=\"u-display-flex u-background-white u-px-1 u-pt-1\">\n <div class=\"u-display-flex u-flex-column u-px-1\" style=\"height: 33px\">\n <p-skeleton class=\"prSkeleton u-m-auto\" [width]=\"'61px'\" [height]=\"'14px'\" />\n <p-skeleton class=\"prSkeleton\" [width]=\"'100%'\" [height]=\"'2px'\" />\n </div>\n <div class=\"u-display-flex u-flex-column u-px-1\" style=\"height: 33px\">\n <p-skeleton class=\"prSkeleton u-m-auto\" [width]=\"'61px'\" [height]=\"'14px'\" />\n <p-skeleton class=\"prSkeleton\" [width]=\"'100%'\" [height]=\"'2px'\" />\n </div>\n </div>\n <div class=\"u-display-flex u-flex-column u-gap-sm\">\n <p-panel class=\"prPanel u-flex-grow-1 u-flex-basis-0 u-shadow-none\" showHeader=\"false\">\n <p-skeleton class=\"prSkeleton\" [width]=\"'100%'\" [height]=\"'100%'\" style=\"aspect-ratio: 1061.57 / 93.02\" />\n </p-panel>\n </div>\n <div class=\"u-display-flex u-flex-row u-gap-sm\">\n @for (_ of [].constructor(4); track $index) {\n <p-panel class=\"prPanel u-flex-grow-1 u-flex-basis-0 u-shadow-none\" showHeader=\"false\">\n <p-skeleton class=\"prSkeleton\" [width]=\"'100%'\" [height]=\"'100%'\" style=\"aspect-ratio: 244.87 / 123.12\" />\n </p-panel>\n }\n </div>\n <div class=\"u-display-flex u-flex-column u-gap-sm\">\n <p-panel class=\"prPanel u-flex-grow-1 u-flex-basis-0 u-shadow-none\" showHeader=\"false\">\n <p-skeleton class=\"prSkeleton\" [width]=\"'100%'\" [height]=\"'100%'\" style=\"aspect-ratio: 1061.57 / 303.7\" />\n </p-panel>\n </div>\n <div class=\"u-display-flex u-flex-row u-gap-sm\">\n @for (_ of [].constructor(2); track $index) {\n <p-panel class=\"prPanel u-flex-grow-1 u-flex-basis-0 u-shadow-none\" showHeader=\"false\">\n <p-skeleton class=\"prSkeleton\" [width]=\"'100%'\" [height]=\"'100%'\" style=\"aspect-ratio: 517.1 / 123.12\" />\n </p-panel>\n }\n </div>\n</div>\n}\n<div #visualContainer [style.height]=\"height()\" [hidden]=\"isLoading()\"></div>","import { Component, computed, effect, ElementRef, inject, input, output, QueryList, signal, ViewChildren } from '@angular/core';\nimport { Shared } from '../../services/shared';\nimport { dispatchQuicksightEvent } from '../../functions/quicksight-event.util';\nimport { QuicksightEvent } from '../../model/quicksight.model';\nimport { QuicksightEventName } from '../../constants/quicksight.constants';\nimport { ActivatedRoute } from '@angular/router';\nimport { toSignal } from '@angular/core/rxjs-interop';\nimport { DashboardExperience } from 'amazon-quicksight-embedding-sdk';\nimport { Panel } from \"primeng/panel\";\nimport { Skeleton } from \"primeng/skeleton\";\n@Component({\n selector: 'intelica-dashboard-qs-interactive',\n imports: [Skeleton, Panel],\n templateUrl: './dashboard-qs-interactive.component.html'\n})\nexport class DashboardQsInteractiveComponent {\n private readonly sharedService = inject(Shared);\n private readonly route = inject(ActivatedRoute);\n @ViewChildren('visualContainer') containers!: QueryList<ElementRef>;\n readonly dashboardIdInput = input<string | undefined>(undefined, { alias: 'dashboardId' });\n readonly parametersInput = input<Record<string, string[]> | undefined>(undefined, { alias: 'parameters' });\n readonly heightInput = input<string | undefined>(undefined, { alias: 'height' });\n private readonly routeData = toSignal(this.route.data, { initialValue: this.route.snapshot.data });\n readonly dashboardId = computed(() => this.dashboardIdInput() ?? (this.routeData()['dashboardId'] as string | undefined));\n readonly parameters = computed(() => this.parametersInput() ?? (this.routeData()['parameters'] as Record<string, string[]> | undefined));\n readonly height = computed(() => this.heightInput() ?? (this.routeData()['height'] as string | undefined));\n readonly isLoading = signal(true);\n readonly isLoadingChange = output<boolean>();\n readonly sdkEvent = output<QuicksightEvent>();\n readonly contentLoaded = output<QuicksightEvent>();\n readonly errorOccurred = output<QuicksightEvent>();\n readonly sessionExpired = output<QuicksightEvent>();\n private readonly viewReady = signal(false);\n private dashboardRef: DashboardExperience | null = null;\n private lastEmbeddedId: string | undefined = undefined;\n constructor() {\n effect(() => {\n this.isLoadingChange.emit(this.isLoading());\n });\n effect(() => {\n const id = this.dashboardId();\n if (!this.viewReady() || !id) return;\n if (id === this.lastEmbeddedId) return;\n this.lastEmbeddedId = id;\n this.firstEmbed(id);\n });\n effect(() => {\n const params = this.parameters();\n if (!this.dashboardRef || !params) return;\n this.isLoading.set(true);\n this.sharedService.setDashboardParameters(this.dashboardRef, params)\n .catch(() => this.isLoading.set(false));\n });\n }\n ngAfterViewInit(): void {\n this.viewReady.set(true);\n }\n async firstEmbed(dashboardId: string): Promise<void> {\n const container = this.containers.first?.nativeElement;\n if (!container) return;\n this.isLoading.set(true);\n try {\n this.dashboardRef = await this.sharedService.embedDashboardInteractive(\n { dashboardId, parameters: this.parameters() },\n container,\n {\n height: this.height() ?? `${window.innerHeight - 50}px`,\n onMessage: event => {\n dispatchQuicksightEvent(event, this);\n if (event.eventName === QuicksightEventName.CONTENT_LOADED || event.eventName === QuicksightEventName.ERROR_OCCURRED || event.eventName === QuicksightEventName.PARAMETERS_CHANGED)\n this.isLoading.set(false);\n },\n }\n );\n } catch (error) {\n console.error('Error embedding dashboard:', error);\n this.isLoading.set(false);\n }\n }\n}\n","@if (isLoading()) {\n<div class=\"u-display-flex u-flex-column u-gap-sm\">\n <div class=\"u-display-flex u-background-white u-px-1 u-pt-1\">\n <div class=\"u-display-flex u-flex-column u-px-1\" style=\"height: 33px\">\n <p-skeleton class=\"prSkeleton u-m-auto\" [width]=\"'61px'\" [height]=\"'14px'\" />\n <p-skeleton class=\"prSkeleton\" [width]=\"'100%'\" [height]=\"'2px'\" />\n </div>\n <div class=\"u-display-flex u-flex-column u-px-1\" style=\"height: 33px\">\n <p-skeleton class=\"prSkeleton u-m-auto\" [width]=\"'61px'\" [height]=\"'14px'\" />\n <p-skeleton class=\"prSkeleton\" [width]=\"'100%'\" [height]=\"'2px'\" />\n </div>\n </div>\n <div class=\"u-display-flex u-flex-column u-gap-sm\">\n <p-panel class=\"prPanel u-flex-grow-1 u-flex-basis-0 u-shadow-none\" showHeader=\"false\">\n <p-skeleton class=\"prSkeleton\" [width]=\"'100%'\" [height]=\"'100%'\" style=\"aspect-ratio: 1061.57 / 93.02\" />\n </p-panel>\n </div>\n <div class=\"u-display-flex u-flex-row u-gap-sm\">\n @for (_ of [].constructor(4); track $index) {\n <p-panel class=\"prPanel u-flex-grow-1 u-flex-basis-0 u-shadow-none\" showHeader=\"false\">\n <p-skeleton class=\"prSkeleton\" [width]=\"'100%'\" [height]=\"'100%'\" style=\"aspect-ratio: 244.87 / 123.12\" />\n </p-panel>\n }\n </div>\n <div class=\"u-display-flex u-flex-column u-gap-sm\">\n <p-panel class=\"prPanel u-flex-grow-1 u-flex-basis-0 u-shadow-none\" showHeader=\"false\">\n <p-skeleton class=\"prSkeleton\" [width]=\"'100%'\" [height]=\"'100%'\" style=\"aspect-ratio: 1061.57 / 303.7\" />\n </p-panel>\n </div>\n <div class=\"u-display-flex u-flex-row u-gap-sm\">\n @for (_ of [].constructor(2); track $index) {\n <p-panel class=\"prPanel u-flex-grow-1 u-flex-basis-0 u-shadow-none\" showHeader=\"false\">\n <p-skeleton class=\"prSkeleton\" [width]=\"'100%'\" [height]=\"'100%'\" style=\"aspect-ratio: 517.1 / 123.12\" />\n </p-panel>\n }\n </div>\n</div>\n}\n<div #visualContainer [style.height]=\"height()\" [hidden]=\"isLoading()\"></div>","import { inject, Injectable } from \"@angular/core\";\nimport { distinctUntilChanged, map, Observable } from \"rxjs\";\nimport { GlobalFavoriteService, GlobalTermService } from \"intelica-library-base\";\n\n@Injectable({\n\tprovidedIn: \"root\",\n})\nexport class AddFavoritesService {\n\tprivate readonly favoritesService = inject(GlobalFavoriteService);\n\tprivate readonly globalTermService = inject(GlobalTermService);\n\n\tpublic addPageToFavorites(): Observable<void> {\n\t\treturn this.favoritesService.create().pipe(map(() => void 0));\n\t}\n\n\tpublic isPageFavorite(pageRoot?: string): Observable<boolean> {\n\t\tconst resolvedPageRoot = this.resolvePageRoot(pageRoot);\n\t\treturn this.favoritesService.favoritesChanges().pipe(\n\t\t\tmap(() => this.favoritesService.isFavoriteByPageRoot(resolvedPageRoot)),\n\t\t\tdistinctUntilChanged()\n\t\t);\n\t}\n\n\tpublic watchPageFavorite(pageRoot?: string): Observable<boolean> {\n\t\tconst resolvedPageRoot = this.resolvePageRoot(pageRoot);\n\t\treturn this.favoritesService.favoritesChanges().pipe(\n\t\t\tmap(() => this.favoritesService.isFavoriteByPageRoot(resolvedPageRoot)),\n\t\t\tdistinctUntilChanged()\n\t\t);\n\t}\n\n\tpublic removeFromFavorites(pageRoot?: string): Observable<void> {\n\t\tconst resolvedPageRoot = this.resolvePageRoot(pageRoot);\n\t\treturn this.favoritesService.removeFavoriteByPageRoot(resolvedPageRoot);\n\t}\n\n\tprivate resolvePageRoot(pageRoot?: string): string {\n\t\treturn pageRoot?.trim() || this.globalTermService.GetPageRoot();\n\t}\n}\n","import { NgClass } from \"@angular/common\";\nimport { Component, DestroyRef, inject, OnInit, output } from \"@angular/core\";\nimport { takeUntilDestroyed } from \"@angular/core/rxjs-interop\";\nimport { Button } from \"primeng/button\";\nimport { TermPipe, GlobalTermService } from \"intelica-library-base\";\nimport { AddFavoritesService } from \"./add-favorites.service\";\n\nconst ICON_ON = \"icon-favorites-on\";\nconst ICON_OFF = \"icon-favorites-off\";\n\n@Component({\n\tselector: \"intelica-add-favorites\",\n\timports: [Button, TermPipe, NgClass],\n\ttemplateUrl: \"./add-favorites.component.html\",\n})\nexport class AddFavoritesComponent implements OnInit {\n\treadonly termService = inject(GlobalTermService);\n\tprivate readonly addFavoriteService = inject(AddFavoritesService);\n\tprivate readonly destroyRef = inject(DestroyRef);\n\n\treadonly favoriteChanged = output<boolean>();\n\n\tprivate isFavorite = false;\n\tpublic isToggling = false;\n\tpublic iconClass = ICON_OFF;\n\n\tngOnInit(): void {\n\t\tthis.loadInitialState();\n\t}\n\n\ttoggleFavorite(): void {\n\t\tif (this.isToggling) return;\n\t\tthis.isToggling = true;\n\t\tconst nextFavorite = !this.isFavorite;\n\t\tconst action$ = this.isFavorite ? this.addFavoriteService.removeFromFavorites() : this.addFavoriteService.addPageToFavorites();\n\n\t\taction$.subscribe({\n\t\t\tnext: () => {\n\t\t\t\tthis.favoriteChanged.emit(nextFavorite);\n\t\t\t},\n\t\t\tcomplete: () => (this.isToggling = false),\n\t\t\terror: () => (this.isToggling = false),\n\t\t});\n\t}\n\n\tprivate loadInitialState(): void {\n\t\tthis.addFavoriteService\n\t\t\t.watchPageFavorite()\n\t\t\t.pipe(takeUntilDestroyed(this.destroyRef))\n\t\t\t.subscribe({\n\t\t\t\tnext: isFavorite => {\n\t\t\t\t\tthis.isFavorite = isFavorite;\n\t\t\t\t\tthis.updateIcon();\n\t\t\t\t},\n\t\t\t});\n\t}\n\n\tprivate updateIcon(): void {\n\t\tthis.iconClass = this.isFavorite ? ICON_ON : ICON_OFF;\n\t}\n}\n","<p-button class=\"prButton\" severity=\"secondary\" [disabled]=\"isToggling\" (onClick)=\"toggleFavorite()\">\n\t<i class=\"icon p-button-icon-left\" [ngClass]=\"iconClass\" pButtonIcon></i>\n\t<span pButtonLabel>{{ \"ADD_TO_FAVORITES\" | term : termService.languageCode }}</span>\n</p-button>\n","import { HttpClient } from \"@angular/common/http\";\nimport { inject, Injectable } from \"@angular/core\";\nimport { Observable } from \"rxjs\";\nimport { ElementResponse } from \"../dto/elementResponse\";\nimport { ConfigService } from \"intelica-library-base\";\n@Injectable({ providedIn: \"root\" })\nexport class PageElementService {\n\tprivate readonly _http = inject(HttpClient);\n\tprivate readonly _configService = inject(ConfigService);\n\tGetElements(pageRoot: string): Observable<ElementResponse[]> {\n\t\treturn this._http.get<ElementResponse[]>(`${this._configService.environment?.securityPath}/Page/GetAvailableElementsByPageRoot/${pageRoot}`);\n\t}\n}\n","import { inject, Injectable } from \"@angular/core\";\nimport { map, Observable, of, tap } from \"rxjs\";\nimport { ElementResponse } from \"../dto/elementResponse\";\nimport { PageElementService } from \"./pageElement.service\";\n@Injectable({ providedIn: \"root\" })\nexport class ElementService {\n\tElements: ElementResponse[] = [];\n\tPageRoot: string = \"\";\n\tprivate readonly pageElementService = inject(PageElementService);\n\tInitialize$(pageRootValue: string): Observable<void> {\n\t\tif (!pageRootValue) return of();\n\t\tthis.PageRoot = pageRootValue;\n\t\treturn this.pageElementService.GetElements(this.PageRoot).pipe(\n\t\t\ttap(elements => (this.Elements = elements)),\n\t\t\tmap(() => void 0)\n\t\t);\n\t}\n\tHasElement(description: string): boolean {\n\t\treturn this.Elements.some(x => x.elementDescription === description);\n\t}\n}\n","export function darkenColor(input: string, amount = 0.2): string {\n const clamp = (v: number) => Math.max(0, Math.min(255, v));\n const toHex = (v: number) => v.toString(16).padStart(2, '0');\n\n if (input.startsWith('#')) {\n const r = parseInt(input.slice(1, 3), 16);\n const g = parseInt(input.slice(3, 5), 16);\n const b = parseInt(input.slice(5, 7), 16);\n return `#${toHex(clamp(Math.round(r * (1 - amount))))}${toHex(clamp(Math.round(g * (1 - amount))))}${toHex(clamp(Math.round(b * (1 - amount))))}`;\n }\n const m = input.match(/rgba?\\((\\d+),\\s*(\\d+),\\s*(\\d+)(?:,\\s*([\\d.]+))?\\)/i);\n if (m) {\n const r = clamp(Math.round(+m[1] * (1 - amount)));\n const g = clamp(Math.round(+m[2] * (1 - amount)));\n const b = clamp(Math.round(+m[3] * (1 - amount)));\n const a = m[4] !== undefined ? `, ${m[4]}` : '';\n return `rgba(${r}, ${g}, ${b}${a})`;\n }\n return input;\n}","import { Injectable, Pipe, PipeTransform } from \"@angular/core\";\n@Injectable({\n\tprovidedIn: \"root\",\n})\n@Pipe({\n\tname: \"amount\",\n})\nexport class FormatAmountPipe implements PipeTransform {\n\ttransform(value: number | string | null | undefined, shortFormat: boolean = false, decimalPlaces: number = 2, validNegative: boolean = false): string {\n\t\tif (value === null || value === undefined || value == 0) {\n\t\t\treturn \"-\";\n\t\t}\n\n\t\tconst numericValue = typeof value === \"string\" ? Number.parseFloat(value) : value;\n\n\t\tif (Number.isNaN(numericValue)) {\n\t\t\treturn \"-\";\n\t\t}\n\n\t\tlet formattedValue: string;\n\n\t\tif (shortFormat) {\n\t\t\tformattedValue = this.getShortFormat(numericValue, decimalPlaces);\n\t\t} else {\n\t\t\tformattedValue = this.formatWithThousandSeparators(numericValue, decimalPlaces);\n\t\t}\n\n\t\tif (validNegative) {\n\t\t\tif (numericValue < 0) {\n\t\t\t\tformattedValue = `(${formattedValue})`;\n\t\t\t}\n\t\t}\n\n\t\treturn formattedValue;\n\t}\n\n\tprivate getShortFormat(value: number, decimalPlaces: number): string {\n\t\tconst absValue = Math.abs(value);\n\t\tconst suffixes = [\n\t\t\t{ limit: 1e12, suffix: \"T\" },\n\t\t\t{ limit: 1e9, suffix: \"B\" },\n\t\t\t{ limit: 1e6, suffix: \"M\" },\n\t\t\t{ limit: 1e3, suffix: \"K\" },\n\t\t];\n\n\t\tfor (const { limit, suffix } of suffixes) {\n\t\t\tif (absValue >= limit) {\n\t\t\t\treturn (absValue / limit).toFixed(decimalPlaces) + suffix;\n\t\t\t}\n\t\t}\n\n\t\treturn absValue.toFixed(decimalPlaces);\n\t}\n\n\tprivate formatWithThousandSeparators(value: number, decimalPlaces: number): string {\n\t\tconst absValue = Math.abs(value);\n\t\treturn new Intl.NumberFormat(\"en-US\", {\n\t\t\tminimumFractionDigits: decimalPlaces,\n\t\t\tmaximumFractionDigits: decimalPlaces,\n\t\t}).format(absValue);\n\t}\n}\n","import { inject, Injectable } from \"@angular/core\";\nimport {\n\tBarSeriesOption,\n\tDefaultLabelFormatterCallbackParams,\n\tEChartsOption,\n\tGridComponentOption,\n\tLabelFormatterCallback,\n\tLegendComponentOption,\n\tLineSeriesOption,\n\tPieSeriesOption,\n\tTooltipComponentFormatterCallback,\n\tTooltipComponentFormatterCallbackParams,\n\tYAXisComponentOption,\n} from \"echarts\";\nimport { Color, getColor } from \"intelica-library-base\";\nimport { darkenColor } from \"../functions/echart.util\";\nimport { FormatAmountPipe } from \"../pipes/amount.pipe\";\n\n@Injectable({\n\tprovidedIn: \"root\",\n})\nexport class EchartService {\n\tprivate readonly _formatAmountPipe = inject(FormatAmountPipe);\n\n\t/// Chart Generals\n\n\tprivate getDefultAxisConfiguration(type: string, data?: any[], showAxis: boolean = true, showSplitLine: boolean = false): any {\n\t\treturn {\n\t\t\tshow: showAxis,\n\t\t\ttype: type,\n\t\t\tdata: data,\n\t\t\taxisTick: {\n\t\t\t\tshow: false,\n\t\t\t},\n\t\t\taxisLine: {\n\t\t\t\tshow: false,\n\t\t\t\tlineStyle: { color: getColor(\"gray\"), type: \"dashed\" },\n\t\t\t},\n\t\t\tsplitLine: {\n\t\t\t\tshow: showSplitLine,\n\t\t\t\t// lineStyle: {\n\t\t\t\t// \tcolor: Color.gray,\n\t\t\t\t// \ttype: \"dashed\",\n\t\t\t\t// \twidth: 1,\n\t\t\t\t// },\n\t\t\t\tlineStyle: { width: 1, color: Color.gray, type: [5, 5], cap: \"round\" },\n\t\t\t},\n\t\t\taxisLabel: {\n\t\t\t\tfontFamily: \"Lato, sans-serif\",\n\t\t\t\tshow: true,\n\t\t\t\t// show: showAxis,\n\t\t\t\tcolor: Color.gray3,\n\t\t\t\tfontSize: 14,\n\t\t\t\tpadding: 10,\n\t\t\t},\n\t\t};\n\t}\n\n\tprivate getCategoryAxisConfiguration(data: any[]) {\n\t\treturn this.getDefultAxisConfiguration(\"category\", data, true);\n\t}\n\n\tprivate getValueAxisConfiguration(showAxis: boolean = true, format: boolean = true, showAxisLines: boolean = true) {\n\t\tlet axisConfiguration = this.getDefultAxisConfiguration(\"value\", undefined, showAxis, showAxisLines);\n\t\tif (format) {\n\t\t\taxisConfiguration.axisLabel.formatter = (value: number) => {\n\t\t\t\tconst formatted = this._formatAmountPipe.transform(value, true, 0, true);\n\t\t\t\treturn formatted === \"-\" ? 0 : formatted;\n\t\t\t};\n\t\t}\n\t\treturn axisConfiguration;\n\t}\n\n\tprivate getGridConfiguration(): GridComponentOption {\n\t\treturn {\n\t\t\t// left: \"0%\",\n\t\t\t// right: \"0%\",\n\t\t\t// //bottom: '0%',\n\t\t\t// containLabel: true,\n\t\t\tleft: 0,\n\t\t\tright: 0,\n\t\t\ttop: 20,\n\t\t\tbottom: 40,\n\t\t\tcontainLabel: true,\n\t\t};\n\t}\n\n\tprivate getLegendConfiguration(): LegendComponentOption {\n\t\treturn {\n\t\t\t// orient: \"horizontal\", // 'horizontal | vertical'\n\t\t\t// icon: \"circle\",\n\t\t\t// bottom: 5,\n\t\t\t// align: \"auto\",\n\t\t\t// itemGap: 20,\n\t\t\t// textStyle: { color: Color.blue, fontSize: 14 },\n\t\t\tdata: [{ name: \"Expenses\", icon: \"circle\" }],\n\t\t\tbottom: 0,\n\t\t\ttextStyle: {\n\t\t\t\tcolor: \"#4E546F\",\n\t\t\t\tfontFamily: \"Lato, sans-serif\",\n\t\t\t\tfontSize: 12,\n\t\t\t\tlineHeight: 12,\n\t\t\t},\n\t\t\titemWidth: 10,\n\t\t\titemHeight: 10,\n\t\t\titemGap: 25,\n\t\t\talign: \"left\",\n\t\t};\n\t}\n\n\t/**\n\t *\n\t * @param color - Color of the tooltip\n\t * @param title - Title of the tooltip\n\t * @param body - Body of the tooltip\n\t * @returns - Tooltip HTML string\n\t */\n\tgetTooltipFormatter(color: string, title: string, body: string): string {\n\t\tconst titleHtml =\n\t\t\ttitle.length > 0\n\t\t\t\t? `\n\t\t\t<b style=\" font-size: 13px;\">${title} </b><br>\n\t\t\t<hr style=\"border: 1px solid ${color}; margin: 4px 0;\">`\n\t\t\t\t: \"\";\n\t\treturn `\n\t \t<div style=\"font-size: 12px; boder-color: ${color}; color: ${color}; border-radius: 6px; min-width: 120px; text-align: center;\">\n\t\t\t${titleHtml}\n\t\t\t${body}\n\t\t</div>\n\t `;\n\t}\n\n\t/// Charts Configuration\n\n\t/// BAR CHARTS\n\n\t/**\n\t *\n\t * @param categories - Array of categories for the x-axis\n\t * @param series - Array of series data, each containing name, value, and color\n\t * @param labelConfig - Optional label configuration for the bars\n\t * @param tooltipConfig - Optional tooltip configuration for the bars\n\t * @param showLegend - Optional flag to show the legend\n\t * @returns - EChartsOption - Configuration object for the bar chart\n\t */\n\tgetBarChartOptions(\n\t\tcategories: string[],\n\t\tseries: { name: string; value: any; color: string }[],\n\t\tlabelConfig?: LabelFormatterCallback<DefaultLabelFormatterCallbackParams>,\n\t\ttooltipConfig?: TooltipComponentFormatterCallback<TooltipComponentFormatterCallbackParams>,\n\t\tshowLegend: boolean = false\n\t): EChartsOption {\n\t\treturn {\n\t\t\ttextStyle: { fontFamily: \"Lato, sans-serif\" },\n\t\t\txAxis: this.getCategoryAxisConfiguration(categories),\n\t\t\tyAxis: this.getValueAxisConfiguration(),\n\t\t\tseries: [\n\t\t\t\t...series.map(\n\t\t\t\t\t(item): BarSeriesOption => ({\n\t\t\t\t\t\ttype: \"bar\",\n\t\t\t\t\t\tname: item.name,\n\t\t\t\t\t\titemStyle: { color: item.color, borderRadius: 8 },\n\t\t\t\t\t\tdata: item.value,\n\t\t\t\t\t\tbarWidth: \"33%\",\n\t\t\t\t\t\tbarGap: \"0%\",\n\t\t\t\t\t\tlabel: {\n\t\t\t\t\t\t\tshow: true,\n\t\t\t\t\t\t\tposition: \"top\",\n\t\t\t\t\t\t\tcolor: Color.blue,\n\t\t\t\t\t\t\tfontSize: 12,\n\t\t\t\t\t\t\tformatter: labelConfig,\n\t\t\t\t\t\t},\n\t\t\t\t\t})\n\t\t\t\t),\n\t\t\t],\n\t\t\ttooltip: {\n\t\t\t\ttrigger: \"item\",\n\t\t\t\tbackgroundColor: \"#FFFFFF\",\n\t\t\t\tborderWidth: 2,\n\t\t\t\ttextStyle: { fontSize: 12 },\n\t\t\t\tformatter: tooltipConfig,\n\t\t\t\tappendTo: \"body\",\n\t\t\t},\n\t\t\tgrid: this.getGridConfiguration(),\n\t\t\tlegend: showLegend ? this.getLegendConfiguration() : undefined,\n\t\t};\n\t}\n\n\t/**\n\t *\n\t * @param categories - Array of categories for the x-axis\n\t * @param series - Array of series data, each containing name, value, and color\n\t * @param labelConfig - Optional label configuration for the bars\n\t * @param tooltipConfig - Optional tooltip configuration for the bars\n\t * @param showLegend - Optional flag to show the legend\n\t * @returns - EChartsOption - Configuration object for the bar chart\n\t */\n\tgetBarChartStackOptions(\n\t\tcategories: string[],\n\t\tseries: { name: string; value: any; color: string }[],\n\t\tlabelConfig?: LabelFormatterCallback<DefaultLabelFormatterCallbackParams>,\n\t\ttooltipConfig?: TooltipComponentFormatterCallback<TooltipComponentFormatterCallbackParams>,\n\t\tshowLegend: boolean = false\n\t): EChartsOption {\n\t\tlet barBase = this.getBarChartOptions(categories, series, labelConfig, tooltipConfig, showLegend);\n\t\t(barBase.series as BarSeriesOption[]).forEach((serie, index) => {\n\t\t\t// serie.barWidth = \"50%\";\n\t\t\t// serie.barGap = \"0%\";\n\t\t\tserie.barCategoryGap = \"10%\";\n\t\t\tserie.stack = \"total\";\n\t\t\tif (index < series.length - 1) {\n\t\t\t\tserie.label = undefined;\n\t\t\t}\n\t\t});\n\t\treturn barBase;\n\t}\n\n\t/**\n\t *\n\t * @param categories - Array of categories for the y-axis\n\t * @param series - Array of series data, each containing name, value, and color\n\t * @param labelConfig - Optional label configuration for the bars\n\t * @param tooltipConfig - Optional tooltip configuration for the bars\n\t * @param showLegend - Optional flag to show the legend\n\t * @returns - EChartsOption - Configuration object for the bar chart\n\t */\n\tgetBarChartHorizontalOptions(\n\t\tcategories: string[],\n\t\tseries: { name: string; value: any; color: string }[],\n\t\tlabelConfig?: LabelFormatterCallback<DefaultLabelFormatterCallbackParams>,\n\t\ttooltipConfig?: TooltipComponentFormatterCallback<TooltipComponentFormatterCallbackParams>,\n\t\tshowLegend: boolean = false,\n\t\tenableSelectStyle: boolean = false // 👈 nuevo\n\t): EChartsOption {\n\t\tlet barBase = this.getBarChartOptions(categories, series, labelConfig, tooltipConfig, showLegend);\n\t\tbarBase.xAxis = this.getValueAxisConfiguration(false, true, false);\n\t\tbarBase.yAxis = this.getCategoryAxisConfiguration(categories);\n\n\t\t(barBase.series as BarSeriesOption[]).forEach((serie, idx) => {\n\t\t\tif (serie.label) {\n\t\t\t\tserie.label.position = \"right\";\n\t\t\t}\n\n\t\t\tconst baseColor = (serie.itemStyle as any)?.color ?? (series[idx] && series[idx].color) ?? \"#FF8A00\";\n\n\t\t\tserie.itemStyle = {\n\t\t\t\t...(serie.itemStyle || {}),\n\t\t\t\tcolor: baseColor,\n\t\t\t\tborderWidth: 0,\n\t\t\t};\n\n\t\t\tif (enableSelectStyle) {\n\t\t\t\t(serie as any).selectedMode = \"single\";\n\n\t\t\t\tconst selectedColor = darkenColor(String(baseColor), 0.38);\n\n\t\t\t\tserie.select = {\n\t\t\t\t\titemStyle: {\n\t\t\t\t\t\tcolor: selectedColor,\n\t\t\t\t\t\tborderWidth: 0,\n\t\t\t\t\t},\n\t\t\t\t};\n\t\t\t}\n\t\t});\n\n\t\tif (barBase.grid) {\n\t\t\t(barBase.grid as GridComponentOption).left = \"10%\";\n\t\t\t(barBase.grid as GridComponentOption).right = \"10%\";\n\t\t\t(barBase.grid as GridComponentOption).bottom = \"10%\";\n\t\t\t(barBase.grid as GridComponentOption).containLabel = true;\n\t\t}\n\t\treturn barBase;\n\t}\n\n\t/**\n\t *\n\t * @param categories - Array of categories for the y-axis\n\t * @param series - Array of series data, each containing name, value, and color\n\t * @param labelConfig - Optional label configuration for the bars\n\t * @param tooltipConfig - Optional tooltip configuration for the bars\n\t * @param showLegend - Optional flag to show the legend\n\t * @returns - EChartsOption - Configuration object for the bar chart\n\t */\n\tgetBarChartHorizontalStackOptions(\n\t\tcategories: string[],\n\t\tseries: { name: string; value: any; color: string }[],\n\t\tlabelConfig?: LabelFormatterCallback<DefaultLabelFormatterCallbackParams>,\n\t\ttooltipConfig?: TooltipComponentFormatterCallback<TooltipComponentFormatterCallbackParams>,\n\t\tshowLegend: boolean = false\n\t): EChartsOption {\n\t\tlet barBase = this.getBarChartHorizontalOptions(categories, series, labelConfig, tooltipConfig, showLegend);\n\t\t(barBase.series as BarSeriesOption[]).forEach((serie, index) => {\n\t\t\t// serie.barWidth = \"50%\";\n\t\t\t// serie.barGap = \"0%\";\n\t\t\tserie.barCategoryGap = \"10%\";\n\t\t\tserie.stack = \"total\";\n\t\t\tif (serie.label) {\n\t\t\t\tserie.label.position = \"right\";\n\t\t\t}\n\t\t\tif (index < series.length - 1) {\n\t\t\t\tserie.label = undefined;\n\t\t\t}\n\t\t});\n\t\tif (barBase.grid) {\n\t\t\t(barBase.grid as GridComponentOption).left = \"10%\";\n\t\t\t(barBase.grid as GridComponentOption).right = \"10%\";\n\t\t\t(barBase.grid as GridComponentOption).bottom = \"10%\";\n\t\t\t(barBase.grid as GridComponentOption).containLabel = true;\n\t\t}\n\t\treturn barBase;\n\t}\n\n\t/**\n\t *\n\t * @param categories - Array of categories for the y-axis\n\t * @param series - Array of series data, each containing name, value, and color\n\t * @param labelConfig - Optional label configuration for the bars\n\t * @param tooltipConfig - Optional tooltip configuration for the bars\n\t * @param showLegend - Optional flag to show the legend\n\t * @returns - EChartsOption - Configuration object for the bar chart\n\t */\n\tgetBarChartTopOptions(\n\t\tcategories: string[],\n\t\tseries: { name: string; value: any; color: string }[],\n\t\tcategoryWidth: number = 240,\n\t\tlabelConfig?: LabelFormatterCallback<DefaultLabelFormatterCallbackParams>,\n\t\ttooltipConfig?: TooltipComponentFormatterCallback<TooltipComponentFormatterCallbackParams>,\n\t\tshowLegend: boolean = false,\n\t\tcategoryFormatter?: (value: string, index: number) => string\n\t): EChartsOption {\n\t\tconst barBase = this.getBarChartHorizontalOptions(categories, series, labelConfig, tooltipConfig, showLegend, true);\n\n\t\tif (barBase.yAxis) {\n\t\t\tconst y = barBase.yAxis as YAXisComponentOption;\n\t\t\tconst gr = barBase.grid as GridComponentOption;\n\n\t\t\tconst defaultCategoryFormatter = (value: string | number, index: number) => {\n\t\t\t\tconst sangriaBase = \"\\u2008\\u2008\\u2008\\u2008\\u2008\\u2008\\u2009\";\n\t\t\t\tconst lineLength = 35;\n\n\t\t\t\tconst text = String(value ?? \"\");\n\t\t\t\tconst prefix = `${index + 1} - `;\n\n\t\t\t\tconst digitCount = String(index + 1).length;\n\n\t\t\t\tlet extraRepeat = 0;\n\t\t\t\tif (digitCount === 2) extraRepeat = 2;\n\t\t\t\telse if (digitCount === 3) extraRepeat = 5;\n\n\t\t\t\tconst sangria = sangriaBase + \"\\u2008\".repeat(extraRepeat);\n\n\t\t\t\tconst words = text.split(\" \");\n\t\t\t\tconst lines: string[] = [];\n\t\t\t\tlet current = \"\";\n\n\t\t\t\tfor (const w of words) {\n\t\t\t\t\tconst test = current ? `${current} ${w}` : w;\n\t\t\t\t\tif (test.length <= lineLength) current = test;\n\t\t\t\t\telse {\n\t\t\t\t\t\tif (current) lines.push(current);\n\t\t\t\t\t\tcurrent = w;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (current) lines.push(current);\n\n\t\t\t\treturn prefix + lines.map((ln, i) => (i === 0 ? ln : `${sangria}${ln}`)).join(\"\\n\");\n\t\t\t};\n\n\t\t\t// y.inverse = true;\n\t\t\t// y.axisLabel = {\n\t\t\t// \t...y.axisLabel,\n\t\t\t// \tcolor: Color.blue,\n\t\t\t// \tfontSize: 12,\n\t\t\t// \twidth: categoryWidth,\n\t\t\t// \toverflow: \"break\",\n\t\t\t// \talign: \"left\",\n\t\t\t// \tverticalAlign: \"middle\",\n\t\t\t// \tmargin: categoryWidth + 30,\n\t\t\t// \tlineHeight: 16,\n\t\t\t// \tformatter: categoryFormatter || defaultCategoryFormatter,\n\t\t\t// };\n\n\t\t\tgr.top = \"0%\";\n\t\t\tgr.left = -1 * categoryWidth + 60;\n\t\t\tgr.right = 20;\n\t\t\tgr.bottom = \"0%\";\n\t\t\tgr.containLabel = true;\n\t\t}\n\n\t\t(barBase.series as BarSeriesOption[]).forEach(serie => {\n\t\t\tserie.label = {\n\t\t\t\t...(serie.label || {}),\n\t\t\t\tformatter: labelConfig,\n\t\t\t};\n\t\t});\n\n\t\treturn barBase;\n\t}\n\n\t/// LINE CHARTS\n\n\t/**\n\t *\n\t * @param categories - Array of categories for the x-axis\n\t * @param series - Array of series data, each containing name, value, and color\n\t * @param labelConfig - Optional label configuration for the lines\n\t * @param tooltipConfig - Optional tooltip configuration for the lines\n\t * @param showLegend - Optional flag to show the legend\n\t * @returns - EChartsOption - Configuration object for the line chart\n\t */\n\tgetLineChartOptions(\n\t\tcategories: string[],\n\t\tseries: { name: string; value: any; color: string }[],\n\t\tlabelConfig: LabelFormatterCallback<DefaultLabelFormatterCallbackParams>,\n\t\ttooltipConfig?: TooltipComponentFormatterCallback<TooltipComponentFormatterCallbackParams>,\n\t\tshowLegend: boolean = false\n\t): EChartsOption {\n\t\treturn {\n\t\t\txAxis: this.getCategoryAxisConfiguration(categories),\n\t\t\tyAxis: this.getValueAxisConfiguration(true, true, true),\n\t\t\tseries: [\n\t\t\t\t...series.map(\n\t\t\t\t\t(item, seriesIndex): LineSeriesOption => ({\n\t\t\t\t\t\ttype: \"line\",\n\t\t\t\t\t\tname: item.name,\n\t\t\t\t\t\tdata: item.value,\n\t\t\t\t\t\titemStyle: { color: item.color },\n\t\t\t\t\t\tsymbol: \"circle\",\n\t\t\t\t\t\tsymbolSize: 14,\n\t\t\t\t\t\temphasis: {\n\t\t\t\t\t\t\titemStyle: {\n\t\t\t\t\t\t\t\tcolor: item.color,\n\t\t\t\t\t\t\t\tborderColor: item.color + \"40\", // 40 ( hexadecimal ) = .25 ( decimal )\n\t\t\t\t\t\t\t\tborderWidth: 16,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t})\n\t\t\t\t),\n\t\t\t],\n\t\t\ttooltip: {\n\t\t\t\ttrigger: \"item\",\n\t\t\t\tbackgroundColor: \"#FFFFFF\",\n\t\t\t\tborderWidth: 2,\n\t\t\t\ttextStyle: { fontSize: 12 },\n\t\t\t\tformatter: tooltipConfig,\n\t\t\t\tappendTo: \"body\t\",\n\t\t\t},\n\t\t\tdataZoom: [\n\t\t\t\t{\n\t\t\t\t\ttype: \"inside\", // inside | slider\n\t\t\t\t\tshow: true,\n\t\t\t\t\theight: 12,\n\t\t\t\t\tbottom: 10,\n\t\t\t\t\tbackgroundColor: \"#ddd\",\n\t\t\t\t\tborderColor: \"transparent\",\n\t\t\t\t\tfillerColor: \"rgba(150, 150, 150, 0.5)\",\n\t\t\t\t\thandleSize: \"80%\",\n\t\t\t\t\thandleStyle: {\n\t\t\t\t\t\tcolor: \"#A0A0A0\",\n\t\t\t\t\t\tborderColor: \"transparent\",\n\t\t\t\t\t\tshadowBlur: 2,\n\t\t\t\t\t\tshadowColor: \"rgba(0, 0, 0, 0.2)\",\n\t\t\t\t\t},\n\t\t\t\t\tshowDataShadow: false,\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\ttype: \"inside\",\n\t\t\t\t\tshowDataShadow: false,\n\t\t\t\t},\n\t\t\t],\n\t\t\tlegend: showLegend ? this.getLegendConfiguration() : undefined,\n\t\t};\n\t}\n\n\t/// PIE CHARTS\n\n\t/**\n\t *\n\t * @param data - Array of series data, each containing name, value, and color\n\t * @param labelConfig - Optional label configuration\n\t * @param tooltipConfig - Optional tooltip configuration\n\t * @returns - EChartsOption - Configuration object for the pie\n\t */\n\tgetDoughnutPieOptions(\n\t\tdata: { name: string; value: any; color: string }[],\n\t\tlabelConfig: LabelFormatterCallback<DefaultLabelFormatterCallbackParams>,\n\t\ttooltipConfig?: TooltipComponentFormatterCallback<TooltipComponentFormatterCallbackParams>\n\t): EChartsOption {\n\t\treturn {\n\t\t\tseries: <PieSeriesOption[]>[\n\t\t\t\t{\n\t\t\t\t\tdata: data.map(item => ({\n\t\t\t\t\t\t...item,\n\t\t\t\t\t\titemStyle: { color: item.color },\n\t\t\t\t\t})),\n\t\t\t\t\tname: \"Pie Chart\",\n\t\t\t\t\ttype: \"pie\",\n\t\t\t\t\tradius: [\"40%\", \"70%\"],\n\t\t\t\t\tavoidLabelOverlap: false,\n\t\t\t\t\temphasis: {\n\t\t\t\t\t\tscale: true,\n\t\t\t\t\t},\n\t\t\t\t\tlabelLine: {\n\t\t\t\t\t\tshow: true,\n\t\t\t\t\t\tlength: 15,\n\t\t\t\t\t\tlength2: 20,\n\t\t\t\t\t},\n\t\t\t\t\tlabel: {\n\t\t\t\t\t\tshow: true,\n\t\t\t\t\t\tposition: \"outside\",\n\t\t\t\t\t\tcolor: Color.blue,\n\t\t\t\t\t\tfontSize: 14,\n\t\t\t\t\t\tformatter: labelConfig,\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t],\n\t\t\ttooltip: {\n\t\t\t\ttrigger: \"item\",\n\t\t\t\tformatter: tooltipConfig,\n\t\t\t\tappendTo: \"body\",\n\t\t\t\t// extraCssText: this.chartService.getTooltipCssText(),\n\t\t\t},\n\t\t\tlegend: <LegendComponentOption>{\n\t\t\t\torient: \"horizontal\", // 'horizontal | vertical'\n\t\t\t\ticon: \"circle\",\n\t\t\t\tbottom: 5,\n\t\t\t\talign: \"auto\",\n\t\t\t\titemGap: 20,\n\t\t\t\ttextStyle: { color: Color.blue, fontSize: 14 },\n\t\t\t},\n\t\t};\n\t}\n\n\t/**\n\t *\n\t * @param letter - text to show in the center of the pie\n\t * @param value - rate\tvalue\n\t * @param textSize - size of the letter\n\t * @param color - color of the letter and pie\n\t * @param\ttotal - total value for the pie (default is 100)\n\t * @returns\n\t */\n\tgetRateDoughnutPieOptions(letter: string, value: number, textSize: number, color: string, total: number = 100): EChartsOption {\n\t\tconst data = [\n\t\t\t{ name: letter, value: value, itemStyle: { color: color } },\n\t\t\t{\n\t\t\t\tname: \"placeholder\",\n\t\t\t\tvalue: total - value,\n\t\t\t\titemStyle: { color: Color.gray5 },\n\t\t\t},\n\t\t];\n\t\treturn {\n\t\t\ttooltip: {\n\t\t\t\ttrigger: \"none\",\n\t\t\t\tappendTo: \"body\",\n\t\t\t},\n\t\t\tseries: <PieSeriesOption[]>[\n\t\t\t\t{\n\t\t\t\t\tname: \"RateDoughnutPie\",\n\t\t\t\t\ttype: \"pie\",\n\t\t\t\t\ttooltip: {\n\t\t\t\t\t\ttrigger: \"none\",\n\t\t\t\t\t},\n\t\t\t\t\tradius: [\"80%\", \"60%\"],\n\t\t\t\t\tdata: data,\n\t\t\t\t\tstartAngle: 0,\n\t\t\t\t\tselectedMode: false,\n\t\t\t\t\tsilent: true,\n\t\t\t\t\tlabel: {\n\t\t\t\t\t\tshow: true,\n\t\t\t\t\t\tformatter: letter,\n\t\t\t\t\t\tcolor: color,\n\t\t\t\t\t\tposition: \"center\",\n\t\t\t\t\t\tfontWeight: \"bold\",\n\t\t\t\t\t\tfontSize: textSize,\n\t\t\t\t\t\tfontFamily: \"Arial\",\n\t\t\t\t\t\tlineHeight: textSize * -0.22,\n\t\t\t\t\t\talign: \"center\",\n\t\t\t\t\t\tverticalAlign: \"middle\",\n\t\t\t\t\t\tbackgroundColor: \"transparent\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t],\n\t\t};\n\t}\n\n\t/**\n\t * Semi doughnut gauge (half circle) with:\n\t * - Progress arc\n\t * - End dot\n\t * - Center letter\n\t *\n\t * @param letter - Text to show in the center\n\t * @param value - Current value\n\t * @param textSize - Center letter font size\n\t * @param color - Progress and end dot color\n\t * @param total - Max value (default 100)\n\t */\n\tgetRateSemiDoughnutOptions(letter: string, value: number, textSize: number, color: string, total: number = 100, bottomText?: string): EChartsOption {\n\t\tconst safeTotal = total > 0 ? total : 100;\n\t\tconst safeValue = Math.max(0, Math.min(value, safeTotal));\n\n\t\tconst START_ANGLE = 210;\n\t\tconst END_ANGLE = -30;\n\n\t\tconst THICKNESS = 11;\n\t\tconst BACKGROUND_COLOR = \"#D9D9E3\";\n\t\tconst TEXT_COLOR = \"#4F5470\";\n\n\t\tconst MIN_LABEL = \"0\";\n\t\tconst MAX_LABEL = String(safeTotal);\n\t\tconst MIN_MAX_FONT_SIZE = 15;\n\n\t\tconst RADIUS = \"96%\";\n\t\tconst CENTER: [string, string] = [\"50%\", \"50%\"];\n\n\t\tconst dotSizePx = THICKNESS + 5;\n\t\tconst POINTER_LENGTH = \"98%\";\n\n\t\tconst option: EChartsOption = {\n\t\t\ttooltip: { trigger: \"none\", appendTo: \"body\" },\n\t\t\tseries: [\n\t\t\t\t/* ================= GAUGE 1: PROGRESS ================= */\n\t\t\t\t{\n\t\t\t\t\ttype: \"gauge\",\n\t\t\t\t\tradius: RADIUS,\n\t\t\t\t\tcenter: CENTER,\n\t\t\t\t\tstartAngle: START_ANGLE,\n\t\t\t\t\tendAngle: END_ANGLE,\n\t\t\t\t\tmin: 0,\n\t\t\t\t\tmax: safeTotal,\n\n\t\t\t\t\tpointer: { show: false },\n\n\t\t\t\t\tprogress: {\n\t\t\t\t\t\tshow: true,\n\t\t\t\t\t\troundCap: true,\n\t\t\t\t\t\twidth: THICKNESS,\n\t\t\t\t\t\titemStyle: { color },\n\t\t\t\t\t},\n\n\t\t\t\t\taxisLine: {\n\t\t\t\t\t\troundCap: true,\n\t\t\t\t\t\tlineStyle: {\n\t\t\t\t\t\t\twidth: THICKNESS,\n\t\t\t\t\t\t\tcolor: [[1, BACKGROUND_COLOR]],\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\n\t\t\t\t\taxisTick: { show: false },\n\t\t\t\t\tsplitLine: { show: false },\n\t\t\t\t\taxisLabel: { show: false },\n\n\t\t\t\t\tdetail: {\n\t\t\t\t\t\tshow: true,\n\t\t\t\t\t\toffsetCenter: [0, \"8%\"],\n\t\t\t\t\t\tformatter: () => (bottomText ? `{letter|${letter}}\\n{bottom|${bottomText}}` : `{letter|${letter}}`),\n\t\t\t\t\t\trich: {\n\t\t\t\t\t\t\tletter: {\n\t\t\t\t\t\t\t\tfontSize: textSize,\n\t\t\t\t\t\t\t\tfontWeight: 700,\n\t\t\t\t\t\t\t\tcolor: TEXT_COLOR,\n\t\t\t\t\t\t\t\tfontFamily: \"Lato, sans-serif\",\n\t\t\t\t\t\t\t\tlineHeight: textSize + 2,\n\t\t\t\t\t\t\t\talign: \"center\",\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tbottom: {\n\t\t\t\t\t\t\t\tfontSize: 16,\n\t\t\t\t\t\t\t\tfontWeight: 500,\n\t\t\t\t\t\t\t\tcolor: TEXT_COLOR,\n\t\t\t\t\t\t\t\tfontFamily: \"Lato, sans-serif\",\n\t\t\t\t\t\t\t\tlineHeight: 22,\n\t\t\t\t\t\t\t\talign: \"center\",\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\n\t\t\t\t\tdata: [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tvalue: safeValue,\n\t\t\t\t\t\t\tname: \"0\",\n\t\t\t\t\t\t\ttitle: {\n\t\t\t\t\t\t\t\tshow: true,\n\t\t\t\t\t\t\t\tformatter: () => MIN_LABEL,\n\t\t\t\t\t\t\t\toffsetCenter: [\"-80%\", \"66%\"],\n\t\t\t\t\t\t\t\tfontSize: MIN_MAX_FONT_SIZE,\n\t\t\t\t\t\t\t\tcolor: TEXT_COLOR,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tvalue: safeValue,\n\t\t\t\t\t\t\tname: \"100\",\n\t\t\t\t\t\t\ttitle: {\n\t\t\t\t\t\t\t\tshow: true,\n\t\t\t\t\t\t\t\tformatter: () => MAX_LABEL,\n\t\t\t\t\t\t\t\toffsetCenter: [\"80%\", \"66%\"],\n\t\t\t\t\t\t\t\tfontSize: MIN_MAX_FONT_SIZE,\n\t\t\t\t\t\t\t\tcolor: TEXT_COLOR,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t],\n\t\t\t\t} as any,\n\n\t\t\t\t/* ================= GAUGE 2: END DOT ================= */\n\t\t\t\t{\n\t\t\t\t\ttype: \"gauge\",\n\t\t\t\t\tradius: RADIUS,\n\t\t\t\t\tcenter: CENTER,\n\t\t\t\t\tstartAngle: START_ANGLE,\n\t\t\t\t\tendAngle: END_ANGLE,\n\t\t\t\t\tmin: 0,\n\t\t\t\t\tmax: safeTotal,\n\n\t\t\t\t\taxisLine: { show: false },\n\t\t\t\t\tprogress: { show: false },\n\t\t\t\t\tsplitLine: { show: false },\n\t\t\t\t\taxisTick: { show: false },\n\t\t\t\t\taxisLabel: { show: false },\n\t\t\t\t\tdetail: { show: false },\n\n\t\t\t\t\tpointer: {\n\t\t\t\t\t\tshow: true,\n\t\t\t\t\t\ticon: \"circle\",\n\t\t\t\t\t\tlength: POINTER_LENGTH,\n\t\t\t\t\t\twidth: dotSizePx,\n\t\t\t\t\t\titemStyle: {\n\t\t\t\t\t\t\tcolor,\n\t\t\t\t\t\t\tborderWidth: 0,\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\n\t\t\t\t\tdata: [{ value: safeValue }],\n\t\t\t\t} as any,\n\t\t\t],\n\t\t};\n\n\t\treturn option;\n\t}\n}\n","import { Injectable } from \"@angular/core\";\nimport { Observable, shareReplay, throwError } from \"rxjs\";\nimport { catchError } from \"rxjs/operators\";\n\ninterface CacheEntry<T> {\n\texpiresAt: number;\n\tvalue$: Observable<T>;\n}\n\n@Injectable({ providedIn: \"root\" })\nexport class RequestCacheService {\n\tprivate readonly cache = new Map<string, CacheEntry<unknown>>();\n\tprivate readonly maxEntries = 300;\n\tprivate readonly defaultTtlMs = 5 * 60 * 1000;\n\n\tpublic getOrSet<T>(key: string, factory: () => Observable<T>, ttlMs: number = this.defaultTtlMs): Observable<T> {\n\t\tthis.removeExpiredEntries();\n\t\tconst now = Date.now();\n\t\tconst cached = this.cache.get(key) as CacheEntry<T> | undefined;\n\n\t\tif (cached && cached.expiresAt > now) {\n\t\t\treturn cached.value$;\n\t\t}\n\n\t\tconst value$ = factory().pipe(\n\t\t\tshareReplay(1),\n\t\t\tcatchError(error => {\n\t\t\t\tthis.cache.delete(key);\n\t\t\t\treturn throwError(() => error);\n\t\t\t})\n\t\t);\n\n\t\tthis.cache.set(key, { value$, expiresAt: now + Math.max(ttlMs, 0) });\n\t\tthis.enforceCapacityLimit();\n\t\treturn value$;\n\t}\n\n\tpublic invalidate(prefix?: string): void {\n\t\tif (!prefix) {\n\t\t\tthis.cache.clear();\n\t\t\treturn;\n\t\t}\n\n\t\tfor (const key of this.cache.keys()) {\n\t\t\tif (key.startsWith(prefix)) {\n\t\t\t\tthis.cache.delete(key);\n\t\t\t}\n\t\t}\n\t}\n\n\tprivate removeExpiredEntries(): void {\n\t\tconst now = Date.now();\n\t\tfor (const [key, entry] of this.cache.entries()) {\n\t\t\tif (entry.expiresAt <= now) {\n\t\t\t\tthis.cache.delete(key);\n\t\t\t}\n\t\t}\n\t}\n\n\tprivate enforceCapacityLimit(): void {\n\t\twhile (this.cache.size > this.maxEntries) {\n\t\t\tconst oldestKey = this.cache.keys().next().value as string | undefined;\n\t\t\tif (!oldestKey) break;\n\t\t\tthis.cache.delete(oldestKey);\n\t\t}\n\t}\n}\n","import { Injectable, Pipe, PipeTransform } from \"@angular/core\";\n@Injectable({ providedIn: \"root\" })\n@Pipe({\n\tname: \"truncate\",\n})\nexport class TruncatePipe implements PipeTransform {\n\ttransform(value: any, size: number = 15, original = false): any {\n\t\tif (!value) return value;\n\t\tif (value.length <= size) return value;\n\t\tlet truncateString = value.substring(0, size);\n\t\treturn !original ? `${truncateString}...` : truncateString.toUpperCase();\n\t}\n}\n","export class PageInformation {\n\tpageTitle: string;\n\tpageRoot: string | undefined;\n\tconstructor(pageTitle: string, pageRoot: string | undefined) {\n\t\tthis.pageTitle = pageTitle;\n\t\tthis.pageRoot = pageRoot;\n\t}\n}\n","// Public API Surface of intelica-library-project\n\n// Components\nexport * from './lib/components/search/search.component';\nexport * from './lib/components/sorting/sorting.component';\nexport * from './lib/components/table/table.component';\nexport * from './lib/components/table/column.component';\nexport * from './lib/components/table-fetch/table-fetch.component';\nexport * from './lib/components/skeleton-table/skeleton-table.component';\nexport * from './lib/components/echart/echart.component';\nexport * from './lib/components/bread-crumb/bread-crumb.component';\nexport * from './lib/components/title/title.component';\nexport * from './lib/components/dashboard-qs/dashboard-qs.component';\nexport * from './lib/components/dashboard-qs-interactive/dashboard-qs-interactive.component';\nexport * from './lib/components/add-favorites/add-favorites.component';\n\n// Services\nexport * from './lib/services/shared.service';\nexport * from './lib/services/shared';\nexport * from './lib/services/element.service';\nexport * from './lib/services/pageElement.service';\nexport * from './lib/services/echart.service';\nexport * from './lib/services/request-cache.service';\nexport * from './lib/components/add-favorites/add-favorites.service';\n\n// Pipes\nexport * from './lib/pipes/truncate.pipe';\nexport * from './lib/pipes/amount.pipe';\nexport * from './lib/pipes/formatCell.pipe';\n\n// Models\nexport * from './lib/components/search/model/search.model';\nexport * from './lib/components/sorting/model/cascade-filter';\nexport * from './lib/components/sorting/model/order.constants';\nexport * from './lib/components/table/model/search.model';\nexport * from './lib/components/table/model/sort.model';\nexport * from './lib/components/table-fetch/model/query.model';\nexport * from './lib/model/pageInformation.model';\nexport * from './lib/model/quicksight.model';\n\n// Constants\nexport * from './lib/constants/quicksight.constants';\n\n// DTOs\nexport * from './lib/dto/elementResponse';\nexport * from './lib/dto/embed-visual-item';\nexport * from './lib/dto/embed-visual-url-response';\nexport * from './lib/dto/embed-visual-command';\nexport * from './lib/dto/embed-dashboard-command';\n\n// Enums\nexport * from './lib/components/search/enums/search.enum';\n\n// Functions\nexport * from './lib/functions/echart.util';\nexport * from './lib/functions/quicksight-event.util';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i3","i2","i1","i7","i4"],"mappings":"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"}