bit-ng-library 20.1.12 → 20.1.13
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +741 -730
- package/fesm2022/bit-ng-library.mjs +552 -537
- package/fesm2022/bit-ng-library.mjs.map +1 -1
- package/index.d.ts +4 -1
- package/index.d.ts.map +1 -1
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bit-ng-library.mjs","sources":["../../../projects/bit-ng-library/src/lib/sharedlibrary/data/autocomplete.ts","../../../projects/bit-ng-library/src/lib/sharedlibrary/services/autocomplete-data.service.ts","../../../projects/bit-ng-library/src/lib/sharedlibrary/data/ayudacontextual.ts","../../../projects/bit-ng-library/src/lib/sharedlibrary/services/storage.service.ts","../../../projects/bit-ng-library/src/lib/sharedlibrary/services/theme-fbit.service.ts","../../../projects/bit-ng-library/src/lib/sharedlibrary/services/locale.service.ts","../../../projects/bit-ng-library/src/lib/sharedlibrary/services/ayuda.service.ts","../../../projects/bit-ng-library/src/lib/sharedlibrary/data/error.ts","../../../projects/bit-ng-library/src/lib/sharedlibrary/services/message.service.ts","../../../projects/bit-ng-library/src/lib/sharedlibrary/data/domain.ts","../../../projects/bit-ng-library/src/lib/sharedlibrary/services/general-utils.service.ts","../../../projects/bit-ng-library/src/lib/sharedlibrary/services/translate.service.ts","../../../projects/bit-ng-library/src/lib/sharedlibrary/services/http-utils.service.ts","../../../projects/bit-ng-library/src/lib/sharedlibrary/services/default-data.service.ts","../../../projects/bit-ng-library/src/lib/sharedlibrary/services/base-data.service.ts","../../../projects/bit-ng-library/src/lib/sharedlibrary/services/base-data-adapter.service.ts","../../../projects/bit-ng-library/src/lib/sharedlibrary/services/bit-panel.service.ts","../../../projects/bit-ng-library/src/lib/sharedlibrary/services/custom-validators.service.ts","../../../projects/bit-ng-library/src/lib/sharedlibrary/services/date-utils.service.ts","../../../projects/bit-ng-library/src/lib/sharedlibrary/services/domain.service.ts","../../../projects/bit-ng-library/src/lib/sharedlibrary/utils/general-utils.ts","../../../projects/bit-ng-library/src/lib/sharedlibrary/services/download.service.ts","../../../projects/bit-ng-library/src/lib/sharedlibrary/services/focus.service.ts","../../../projects/bit-ng-library/src/lib/sharedlibrary/services/locator.service.ts","../../../projects/bit-ng-library/src/lib/sharedlibrary/services/session-shared.service.ts","../../../projects/bit-ng-library/src/lib/sharedlibrary/services/tableview.service.ts","../../../projects/bit-ng-library/src/lib/sharedlibrary/services/toolbar.service.ts","../../../projects/bit-ng-library/src/lib/sharedlibrary/services/upload.service.ts","../../../projects/bit-ng-library/src/lib/sharedlibrary/services/clear-items.service.ts","../../../projects/bit-ng-library/src/lib/base/components/base.component.ts","../../../projects/bit-ng-library/src/lib/base/shared/utils.ts","../../../projects/bit-ng-library/src/lib/base/shared/base.filter.ts","../../../projects/bit-ng-library/src/lib/sharedlibrary/global.constants.ts","../../../projects/bit-ng-library/src/lib/base/shared/base.service.ts","../../../projects/bit-ng-library/src/lib/base/models/types.ts","../../../projects/bit-ng-library/src/lib/base/models/toolbars.ts","../../../projects/bit-ng-library/src/lib/sharedlibrary/components/breadcrumb/bit-breadcrumb.component.ts","../../../projects/bit-ng-library/src/lib/sharedlibrary/components/contol-messages/bit-control-messages.component.ts","../../../projects/bit-ng-library/src/lib/sharedlibrary/data/bitmessage.ts","../../../projects/bit-ng-library/src/lib/sharedlibrary/components/dialog/bit-dialog.component.ts","../../../projects/bit-ng-library/src/lib/sharedlibrary/pipes/pipe-cantidadmoneda.pipe.ts","../../../projects/bit-ng-library/src/lib/sharedlibrary/components/footer/bit-pajigator.component.ts","../../../projects/bit-ng-library/src/lib/sharedlibrary/components/footer/bit-pajigator.component.html","../../../projects/bit-ng-library/src/lib/sharedlibrary/components/help/bit-help.component.ts","../../../projects/bit-ng-library/src/lib/sharedlibrary/components/footer/bit-footer-messages.component.ts","../../../projects/bit-ng-library/src/lib/sharedlibrary/components/footer/bit-footer-messages.component.html","../../../projects/bit-ng-library/src/lib/sharedlibrary/components/footer/bit-footer.component.ts","../../../projects/bit-ng-library/src/lib/sharedlibrary/components/footer/bit-footer.component.html","../../../projects/bit-ng-library/src/lib/sharedlibrary/components/misc/bit-boton-ayuda.component.ts","../../../projects/bit-ng-library/src/lib/sharedlibrary/components/toolbar/bit-toolbar.component.ts","../../../projects/bit-ng-library/src/lib/sharedlibrary/components/toolbar/bit-toolbar.component.html","../../../projects/bit-ng-library/src/lib/sharedlibrary/components/header/bit-header.component.ts","../../../projects/bit-ng-library/src/lib/sharedlibrary/components/header/bit-header.component.html","../../../projects/bit-ng-library/src/lib/sharedlibrary/components/loading/bit-loading.component.ts","../../../projects/bit-ng-library/src/lib/sharedlibrary/components/notificacion/bit-notification-toast.component.ts","../../../projects/bit-ng-library/src/lib/sharedlibrary/components/notificacion/bit-notification-error.component.ts","../../../projects/bit-ng-library/src/lib/sharedlibrary/directives/focus-register.directive.ts","../../../projects/bit-ng-library/src/lib/sharedlibrary/components/upload/bit-ng-upload.component.ts","../../../projects/bit-ng-library/src/lib/sharedlibrary/components/upload/bit-ng-upload.component.html","../../../projects/bit-ng-library/src/lib/sharedlibrary/components/user/bit-user-controls.component.ts","../../../projects/bit-ng-library/src/lib/sharedlibrary/components/user/bit-user-controls.component.html","../../../projects/bit-ng-library/src/lib/sharedlibrary/components/misc/bit-column-boolean.component.ts","../../../projects/bit-ng-library/src/lib/sharedlibrary/components/misc/bit-domain-value.component.ts","../../../projects/bit-ng-library/src/lib/sharedlibrary/components/form/bit-general.component.ts","../../../projects/bit-ng-library/src/lib/sharedlibrary/components/form/bit-custom.component.ts","../../../projects/bit-ng-library/src/lib/sharedlibrary/components/form/text/bit-text.component.ts","../../../projects/bit-ng-library/src/lib/sharedlibrary/components/form/text/bit-text.component.html","../../../projects/bit-ng-library/src/lib/sharedlibrary/components/form/textarea/bit-textarea.component.ts","../../../projects/bit-ng-library/src/lib/sharedlibrary/components/form/textarea/bit-textarea.component.html","../../../projects/bit-ng-library/src/lib/sharedlibrary/components/form/calendar/bit-calendar.component.ts","../../../projects/bit-ng-library/src/lib/sharedlibrary/components/form/date/bit-date.component.ts","../../../projects/bit-ng-library/src/lib/sharedlibrary/components/form/date/bit-date.component.html","../../../projects/bit-ng-library/src/lib/sharedlibrary/components/form/time/bit-time.component.ts","../../../projects/bit-ng-library/src/lib/sharedlibrary/components/form/time/bit-time.component.html","../../../projects/bit-ng-library/src/lib/sharedlibrary/components/form/datetime/bit-datetime.component.ts","../../../projects/bit-ng-library/src/lib/sharedlibrary/components/form/datetime/bit-datetime.component.html","../../../projects/bit-ng-library/src/lib/sharedlibrary/components/form/checkbox/bit-checkbox.component.ts","../../../projects/bit-ng-library/src/lib/sharedlibrary/components/form/checkbox/bit-checkbox.component.html","../../../projects/bit-ng-library/src/lib/sharedlibrary/components/form/switch/bit-switch.component.ts","../../../projects/bit-ng-library/src/lib/sharedlibrary/components/form/switch/bit-switch.component.html","../../../projects/bit-ng-library/src/lib/sharedlibrary/components/form/autocomplete/bit-autocomplete.component.ts","../../../projects/bit-ng-library/src/lib/sharedlibrary/components/form/autocomplete/bit-autocomplete.component.html","../../../projects/bit-ng-library/src/lib/sharedlibrary/components/form/dropdown/bit-dropdown-general.component.ts","../../../projects/bit-ng-library/src/lib/sharedlibrary/components/form/dropdown/bit-dropdown.component.ts","../../../projects/bit-ng-library/src/lib/sharedlibrary/components/form/dropdown/bit-dropdown.component.html","../../../projects/bit-ng-library/src/lib/sharedlibrary/components/form/dropdown/bit-dropdown-multiple.component.ts","../../../projects/bit-ng-library/src/lib/sharedlibrary/components/form/dropdown/bit-dropdown-multiple.component.html","../../../projects/bit-ng-library/src/lib/sharedlibrary/data/configuration-editor.ts","../../../projects/bit-ng-library/src/lib/sharedlibrary/components/form/editor/bit-editor.component.ts","../../../projects/bit-ng-library/src/lib/sharedlibrary/components/form/editor/bit-editor.component.html","../../../projects/bit-ng-library/src/lib/sharedlibrary/components/form/readonly/bit-readonly.component.ts","../../../projects/bit-ng-library/src/lib/sharedlibrary/components/form/readonly/bit-readonly.component.html","../../../projects/bit-ng-library/src/lib/sharedlibrary/components/form/number/bit-number.component.ts","../../../projects/bit-ng-library/src/lib/sharedlibrary/components/form/number/bit-number.component.html","../../../projects/bit-ng-library/src/lib/sharedlibrary/components/form/amount/bit-amount.component.ts","../../../projects/bit-ng-library/src/lib/sharedlibrary/services/menu.service.ts","../../../projects/bit-ng-library/src/lib/sharedlibrary/components/misc/bit-sidebar.component.ts","../../../projects/bit-ng-library/src/lib/sharedlibrary/components/misc/bit-sidebar.component.html","../../../projects/bit-ng-library/src/lib/sharedlibrary/components/theme/bit-theme-selector.component.ts","../../../projects/bit-ng-library/src/lib/sharedlibrary/components/theme/bit-theme-selector.component.html","../../../projects/bit-ng-library/src/lib/sharedlibrary/components/language/bit-language-selector.component.ts","../../../projects/bit-ng-library/src/lib/sharedlibrary/components/language/bit-language-selector.component.html","../../../projects/bit-ng-library/src/lib/sharedlibrary/components/settings/bit-settings.component.ts","../../../projects/bit-ng-library/src/lib/sharedlibrary/components/settings/bit-settings.component.html","../../../projects/bit-ng-library/src/lib/sharedlibrary/pipes/bytes.pipe.ts","../../../projects/bit-ng-library/src/lib/sharedlibrary/pipes/capitalize.pipe.ts","../../../projects/bit-ng-library/src/lib/sharedlibrary/pipes/cut-text.pipe.ts","../../../projects/bit-ng-library/src/lib/sharedlibrary/pipes/domain-list-value.pipe.ts","../../../projects/bit-ng-library/src/lib/sharedlibrary/pipes/domain-value.pipe.ts","../../../projects/bit-ng-library/src/lib/sharedlibrary/pipes/list-value.pipe.ts","../../../projects/bit-ng-library/src/lib/sharedlibrary/pipes/other-actions.pipe.ts","../../../projects/bit-ng-library/src/lib/sharedlibrary/pipes/remove-line-breaks.pipe.ts","../../../projects/bit-ng-library/src/lib/sharedlibrary/pipes/si-o-no.pipe.ts","../../../projects/bit-ng-library/src/lib/sharedlibrary/pipes/stringify.pipe.ts","../../../projects/bit-ng-library/src/lib/sharedlibrary/pipes/index.ts","../../../projects/bit-ng-library/src/lib/sharedlibrary/directives/bit-panel.directive.ts","../../../projects/bit-ng-library/src/lib/sharedlibrary/directives/index.ts","../../../projects/bit-ng-library/src/lib/sharedlibrary/components/form/switch/bit-switch-si-no.component.ts","../../../projects/bit-ng-library/src/lib/sharedlibrary/components/form/switch/bit-switch-si-no.component.html","../../../projects/bit-ng-library/src/lib/sharedlibrary/components/form/multiple-checkbox/bit-multiple-checkbox.component.ts","../../../projects/bit-ng-library/src/lib/sharedlibrary/components/form/multiple-checkbox/bit-multiple-checkbox.component.html","../../../projects/bit-ng-library/src/lib/sharedlibrary/sharedlibrary.module.ts","../../../projects/bit-ng-library/src/lib/sharedlibrary/data/bitnotification.ts","../../../projects/bit-ng-library/src/lib/sharedlibrary/data/bitnotification-error.ts","../../../projects/bit-ng-library/src/lib/sharedlibrary/data/item.ts","../../../projects/bit-ng-library/src/lib/sharedlibrary/data/fichero.ts","../../../projects/bit-ng-library/src/lib/sharedlibrary/guards/candeactivate.guard.ts","../../../projects/bit-ng-library/src/lib/sharedlibrary/utils/custom-http-interceptor.ts","../../../projects/bit-ng-library/src/lib/sharedlibrary/entities/entity-data.service.ts","../../../projects/bit-ng-library/src/lib/sharedlibrary/entities/models.ts","../../../projects/bit-ng-library/src/lib/sharedlibrary/entities/functions.ts","../../../projects/bit-ng-library/src/lib/sharedlibrary/entities/entity-collection.service.ts","../../../projects/bit-ng-library/src/lib/sharedlibrary/entities/entity-filters.ts","../../../projects/bit-ng-library/src/lib/sharedlibrary/entities/entity-op.ts","../../../projects/bit-ng-library/src/lib/sharedlibrary/entities/http-url-generator.ts","../../../projects/bit-ng-library/src/public-api.ts","../../../projects/bit-ng-library/src/bit-ng-library.ts"],"sourcesContent":["export class Autocomplete {\n constructor(\n public id: number | string,\n public descripcion: string\n ) {\n }\n}\n","import { Observable } from \"rxjs\";\n\nimport { Autocomplete } from \"../data/autocomplete\";\nimport { map } from \"rxjs/operators\";\nimport { HttpUtilsService } from \"./http-utils.service\";\n\nexport abstract class AutocompleteDataService {\n protected httpUtilsService: HttpUtilsService;\n\n constructor(\n httpUtilsService: HttpUtilsService\n ) {\n console.log(\"AutocompleteDataService creado\");\n this.httpUtilsService = httpUtilsService;\n }\n\n findContactos(query: string): Observable<Autocomplete[]> {\n return this.findAutocomplete(\"contactos\", query)\n .pipe(\n map(\n (items: Autocomplete[]) => items\n && items.map((item: Autocomplete) => new Autocomplete(this.extractEmail(item.descripcion), item.descripcion))\n )\n );\n }\n\n findAutocomplete(tipoElemento: string, query: string): Observable<Autocomplete[]> {\n return this.httpUtilsService.getHttpGet<Autocomplete[]>(this.getUrlBase(tipoElemento, query));\n }\n\n getUrlBase(tipoElemento: string, query: string) {\n return `autocompletes/${tipoElemento}?cadena=${query}`;\n }\n\n extractEmail(desc: string): string {\n if (desc) {\n return desc.substring(desc.indexOf(\"<\") + 1, desc.indexOf(\">\"));\n } else {\n return \"\";\n }\n }\n}\n","export class AyudaContextual {\n constructor(public key: string, public header: string, public title: string, public body: string) {}\n\n public static newObject(obj): AyudaContextual {\n return new AyudaContextual(obj.key, obj.header || obj.title, obj.title || obj.header, obj.body);\n }\n}\n","import { Injectable } from \"@angular/core\";\n\n@Injectable()\nexport class StorageService {\n static MENU = \"menu\";\n static LANGUAGE = \"language\";\n static VERSION = \"version\";\n static THEME = \"theme\"; \n static DARK_MODE = \"dark_mode\";\n\n // si se activa el log se mostrarán mensajes por consola\n private log: boolean = false;\n // contexto de la aplicación para no colisionar con otras aplicaciones que usen el mismo almacenamiento del navegador\n private context: string;\n // mapa con los datos que se han recuperado del almacenamiento del navegador\n private data: Map<string, any> = new Map<string, any>();\n // keys de los datos que se pueden almacenar en el almacenamiento del navegador\n private keys: string[] = [];\n\n constructor() {}\n\n // setea si queremos que el servicio logee todo lo que hace\n setLog(log: boolean): void {\n this.log = log;\n }\n\n // establece el mapa interno y sustituye al que el servicio construye internamente. Realmente este método no debería usarse \n // salvo excepciones muy controladas\n setDataMap(data: Map<string, any>): void {\n this.data = data;\n }\n\n // recupera el mapa interno clave:valor con todo lo que el servicio tiene almacenado internamente \n getDataMap(): Map<string, any> {\n return this.data;\n }\n\n // setea el contexto de la aplicación y añade como claves: menu, language y version\n setContext(context: string): void {\n this.context = context;\n StorageService.MENU = this.addContextToKey(\"menu\");\n StorageService.LANGUAGE = this.addContextToKey(\"language\");\n StorageService.VERSION = this.addContextToKey(\"version\");\n StorageService.THEME = this.addContextToKey(\"theme\");\n StorageService.DARK_MODE = this.addContextToKey(\"darkMode\");\n // añadimos las claves mínimas que tendrá la app\n this.keys.push(StorageService.MENU, StorageService.LANGUAGE, StorageService.VERSION, StorageService.THEME, StorageService.DARK_MODE);\n this.log && console.log(\"keys\", this.keys);\n }\n\n // recupera el contexto de la app utilizado para añadir un prefijo a todas las claves\n getContext(): string {\n return this.context;\n }\n\n // añade el contexto a la clave como prefijo\n addContextToKey(key: string): string {\n return this.context + \"_\" + key; \n }\n\n // añade el contexto guardado en el servicio como prefijo a la clave en el caso que la clave no lo lleve\n addContextIfNeeded(key: string): string {\n if (!key.includes(this.context)) {\n key = this.addContextToKey(key);\n }\n return key;\n }\n\n // añade una clave a la lista de claves. La clave siempre tendrá el contexto como prefijo aunque la clave \n // proporcionada no lo lleve\n addKey(key: string): string {\n key = this.addContextToKey(key);\n this.keys.push(key);\n this.log && console.log(`addKey ${key}`);\n return key;\n }\n\n // añade una lista de claves a la lista de claves. Las claves siempre tendrán el contexto como prefijo \n // aunque las claves proporcionadas no lo lleven\n addKeys(keys: string[]): void {\n // a cada key del array le concatenamos el contexto de la aplicación\n keys.forEach(key => this.addKey(key));\n //this.keys = this.keys.concat(keys.map(key => this.addContextToKey(key)));\n this.log && console.log(`addKeys ${this.keys}`);\n }\n\n // almacena un objeto en el mapa con la clave indicada. Además se persiste en el storage del navegador (comportamiento por defecto)\n // si no queremos persistir el objeto en el storage del navegador indicaremos a false la propiedad persist, en caso de que sí\n // no es necesario pasar true. \n // no es necesario que la clave lleve el contexto como prefijo\n setData(key: string, object: any, persist: boolean = true): void {\n key = this.addContextIfNeeded(key);\n this.data.set(key, object);\n this.log && console.log(\"setData\", key, object);\n // si la clave no está en la lista de claves la añadimos\n if (!this.keys.includes(key)) {\n this.addKey(key);\n }\n persist && this.saveDataToStorage(key);\n }\n\n // recupera el valor actual en el mapa con la clave indicada. \n // no es necesario que la clave lleve el contexto como prefijo\n getData(key: string): any {\n key = this.addContextIfNeeded(key);\n return this.data.get(key);\n }\n\n // recuperas todos los datos del almacenamiento del navegador y los setea en el mapa interno del servicio\n recoverAllDataFromStorage(): void { \n // para cada clave recuperamos el objeto del almacenamiento del navegador\n this.log && console.log(\"recoverAllDataFromStorage\", this.keys);\n for (let key of this.keys) {\n this.recoverDataFromStorage(key);\n }\n }\n\n // recupera un objeto del almacenamiento del navegador asociado a la clave y lo setea en el mapa\n // no es necesario que la clave lleve el contexto como prefijo\n recoverDataFromStorage(key: string): any {\n let data = null;\n key = this.addContextIfNeeded(key);\n try {\n data = JSON.parse(localStorage.getItem(key));\n // seteamos el objeto con la clave en el mapa\n this.log && console.log(\"recoverDataFromStorage\", key, data);\n this.setData(key, data);\n } catch (e) {\n this.log && console.warn(\"Error al recuperar el objeto del almacenamiento del navegador: \" + e);\n }\n return data;\n }\n\n // guarda todos los datos del mapa en el almacenamiento del navegador\n saveAllDataToStorage(): void {\n this.log && console.log(\"saveAllDataToStorage\");\n // recuperamos las claves del mapa\n let iteratorKeys = this.data.keys();\n this.log && console.log(\"iteratorKeys\", iteratorKeys);\n // iteramos sobre las claves para guardar los objetos en el almacenamiento del navegador\n for (let key of iteratorKeys) {\n this.saveDataToStorage(key);\n }\n }\n\n // guarda un objeto del mapa en el almacenamiento del navegador\n // no es necesario que la clave lleve el contexto como prefijo\n saveDataToStorage(key: string): any {\n key = this.addContextIfNeeded(key);\n let object = this.data.get(key);\n this.log && console.log(\"saveDataToStorage\", key, object);\n // guardamos el objeto en el almacenamiento del navegador\n try {\n object = JSON.stringify(object); \n localStorage.setItem(key, object);\n this.log && console.log(\"saveDataToStorage\", key, object);\n } catch (e) {\n console.warn(\"Error al guardar el objeto en el almacenamiento del navegador: \" + e);\n }\n return object;\n }\n}\n","import { inject, Injectable, signal } from \"@angular/core\";\nimport { PrimeNG } from \"primeng/config\";\nimport Aura from \"@primeng/themes/aura\";\nimport { StorageService } from \"./storage.service\";\n\n@Injectable()\nexport class ThemeFBitService {\n static THEME_PRIME = \"Prime\"; // nombre del tema por defecto\n static THEME_CAIB = \"CAIB\";\n static THEME_MATERIAL = \"Material\";\n static THEME_NORA = \"Nora\";\n\n primeNgConfig = inject(PrimeNG);\n storageService = inject(StorageService);\n themeList$ = signal([ThemeFBitService.THEME_CAIB, ThemeFBitService.THEME_PRIME, ThemeFBitService.THEME_MATERIAL, ThemeFBitService.THEME_NORA]);\n currentTheme$ = signal(\"Aura\");\n darkMode$ = signal(false);\n Prime: any;\n Material: any;\n Nora: any;\n Caib: any;\n themeOptions: any = {\n darkModeSelector: \".my-app-dark\" //es el selector que cuando lo añadamos como clase al index.html hará que se active el modo oscuro\n }\n\n constructor() {}\n\n setPrimeTheme(Prime: any) {\n console.log(\"setPrimeTheme\");\n this.Prime = Prime;\n }\n\n setMaterialTheme(Material: any) {\n console.log(\"setFBitMaterialTheme\");\n this.Material = Material;\n }\n\n setNoraTheme(Nora: any) {\n console.log(\"setNoraTheme\");\n this.Nora = Nora;\n }\n\n setCaibTheme(Caib: any) {\n console.log(\"setCaibTheme\");\n this.Caib = Caib;\n }\n\n setTheme(theme: any, options: any = this.themeOptions) {\n let primeTheme = this.getTheme(theme) || this.Caib;\n console.log(\"setTheme\", theme, !!primeTheme);\n this.primeNgConfig.theme.set({\n preset: primeTheme,\n options\n });\n this.currentTheme$.set(theme);\n }\n\n setDarkMode(darkMode: boolean) {\n this.darkMode$.set(darkMode);\n this.storageService.setData(StorageService.DARK_MODE, darkMode);\n }\n\n changeTheme(theme: string) {\n this.setTheme(theme);\n this.storageService.setData(StorageService.THEME, theme);\n }\n\n getTheme(theme: string) {\n switch (theme) {\n case \"Aura\":\n return Aura;\n case ThemeFBitService.THEME_MATERIAL:\n return this.Material;\n case ThemeFBitService.THEME_NORA:\n return this.Nora;\n case ThemeFBitService.THEME_PRIME:\n return this.Prime;\n case ThemeFBitService.THEME_CAIB:\n return this.Caib; \n }\n }\n\n // activa el modo oscuro para primeNG. basicamente añade o quita la clase my-app-dark a nivel de la raíz html\n toggleDarkMode() {\n const element = document.querySelector(\"html\");\n element.classList.toggle(\"my-app-dark\");\n console.log(\"toggleDarkMode\");\n }\n}\n","import { Injectable, inject, signal } from \"@angular/core\";\nimport { StorageService } from \"./storage.service\";\nimport { TranslateService } from \".\";\n\n@Injectable({\n providedIn: \"root\"\n})\nexport class LocaleService {\n // the locales the app supports\n locales = [\n { label: \"Castellano\", value: \"es\" },\n { label: \"Català\", value: \"ca\" }\n ];\n // the default locale\n locale$ = signal<string>(\"ca\");\n\n storageService: StorageService = inject(StorageService);\n translateService: TranslateService = inject(TranslateService);\n\n constructor() {\n console.log(\"construyendo LocaleService\");\n }\n\n // change locale/language at runtime\n updateLocale(locale: string) {\n console.log(\"update locale\", locale);\n if (this.locales.some((l) => l.value === locale)) {\n this.locale$.set(locale);\n }\n this.storageService.setData(StorageService.LANGUAGE, this.locale$());\n this.translateService.setActiveLang(this.locale$());\n }\n}\n","import { Injectable, inject, computed, signal } from \"@angular/core\";\n\nimport { AyudaContextual } from \"../data/ayudacontextual\";\nimport { ThemeFBitService } from \"./theme-fbit.service\";\nimport { LocaleService } from \"./locale.service\";\n\n@Injectable({ providedIn: \"root\" })\nexport class AyudaService {\n public mostrar = signal<AyudaContextual>(null);\n public static AYUDAS = []; // Inicializar desde la aplicacion cliente\n protected mapaAyudas: Map<string, AyudaContextual>; // mapa de ayudas contextuales del sistema\n\n themeFbitService = inject(ThemeFBitService);\n localeService = inject(LocaleService);\n baseHelpUrl$ = computed(() => `assets/docshelp/${this.localeService.locale$()}/index.html?darkMode=${this.themeFbitService.darkMode$()}`);\n\n constructor() {\n this.loadAyudas();\n }\n\n // procesa el fichero app.ayudas.json y crea el mapa para acceder luego directamente por clave\n private loadAyudas() {\n this.mapaAyudas = new Map<string, AyudaContextual>();\n if (AyudaService.AYUDAS) {\n AyudaService.AYUDAS.forEach(elem => {\n this.mapaAyudas.set(elem.key, AyudaContextual.newObject(elem));\n });\n console.log(`Cargadas ${this.mapaAyudas.size} ayudas contextuales`);\n } else {\n console.warn(\"No se han podido cargar las ayudas contextuales de la aplicacion.\");\n }\n }\n\n mostrarAyuda(key: string) {\n if (this.mapaAyudas.has(key)) {\n this.mostrar.set(this.mapaAyudas.get(key));\n } else {\n console.warn(`No existe ayuda para la clave [${key}]`);\n }\n }\n}\n","/**\n * Clase base que contiene la información sobre un error producido en la aplicación.\n */\nexport class Error {\n constructor(\n public url: string,\n public summary: string,\n public errorText: string,\n public trazaError?: any,\n public notificacion?: boolean,\n public masInfo?: string\n ) {}\n}\n","import { Injectable } from \"@angular/core\";\nimport { Subject, Observable } from \"rxjs\";\n\nimport { BitMessage } from \"../data/bitmessage\";\nimport { Error } from \"../data/error\";\nimport { BitNotification } from \"../data/bitnotification\";\nimport { BitNotificationError } from \"../data/bitnotification-error\";\n\n/**\n *\n */\n@Injectable({ providedIn: \"root\" })\nexport class BitMessageService {\n // Observable string sources\n private observableMessagesSource = new Subject<BitMessage>(); //mensajes generales que se mostrarán como un dialog en el centro de la pantalla\n public observableMessages: Observable<BitMessage>;\n private observableNotificationsSource = new Subject<BitNotification>(); //notifiaciones que se mostrarán como un growl\n public observableNotifications: Observable<BitNotification>;\n private observableErrorsSource = new Subject<Error>(); //errores del servidor que se mostrarán como un dialog igual con la traza del error\n public observableErrors: Observable<Error>;\n private observableNotificacionsErrorsSource = new Subject<BitNotificationError>(); //errores controlados enviados del servidor que se mostrarán como una ventanita similar al growl\n public observableNotificationsErrors: Observable<BitNotificationError>;\n\n constructor() {\n this.observableMessages = this.observableMessagesSource.asObservable();\n this.observableErrors = this.observableErrorsSource.asObservable();\n this.observableNotificationsErrors = this.observableNotificacionsErrorsSource.asObservable();\n this.observableNotifications = this.observableNotificationsSource.asObservable();\n }\n\n /**\n * Ask user to confirm an action. `message` explains the action and choices.\n * Returns promise resolving to `true`=confirm or `false`=cancel\n */\n confirm(message?: string) {\n return new Promise<boolean>((resolve) => {\n return resolve(window.confirm(message || \" OK?\"));\n });\n }\n\n /** Enviamos un mensaje. Como mínimo el componente DialogComponent lo recibirá y lo mostrará al usuario */\n sendMessage(message: BitMessage) {\n this.observableMessagesSource.next(message);\n }\n\n /**\n * Enviamos un error. El componente DialogComponent lo recibirá y lo mostrará al usuario en el centro del usuario\n **/\n sendError(error: Error) {\n this.observableErrorsSource.next(error);\n }\n\n /** Enviamos una notificación. El componente NotificationComponent lo recibirá y la mostrará en pantalla */\n sendNotification(notification: BitNotification) {\n this.observableNotificationsSource.next(notification);\n }\n\n /**\n * Enviamos un error. Se mostrará como una ventana arriba a la derecha con un close para cerrarlo\n * @param bitNotificationError\n */\n sendNotificationError(bitNotificationError: BitNotificationError, clearErrors: boolean = true) {\n console.log(\"sendNotificationError\", bitNotificationError, clearErrors);\n bitNotificationError.clearErrors = clearErrors;\n this.observableNotificacionsErrorsSource.next(bitNotificationError);\n }\n\n hideNotificacionErrorPanel() {\n console.log(\"hideNotificacionErrorPanel\");\n this.observableNotificacionsErrorsSource.next(null);\n }\n\n hideNotificacionPanel() {\n console.log(\"hideNotificacionPanel\");\n this.observableNotificationsSource.next(null);\n }\n\n hideMessagePanel() {\n this.observableMessagesSource.next(null);\n }\n\n hideErrorsPanel() {\n this.observableErrorsSource.next(null);\n }\n}\n","export class Domain {\n public static DUMMY: Domain = new Domain(null, \"Qualsevol\", false);\n constructor(public value: string | boolean, public label: string, public disabled?: boolean) {}\n}\n","import { Injectable, signal } from \"@angular/core\";\nimport moment from \"moment\";\nimport { Subject } from \"rxjs\";\nimport { UrlSegment } from \"@angular/router\";\nimport { Domain } from \"../data/domain\";\n\n@Injectable({ providedIn: \"root\" })\nexport class GeneralUtils {\n public static FORMAT_SHORT_DATE = \"DD/MM/YYYY\";\n public static FORMAT_LONG_DATE = \"DD/MM/YYYY HH:mm\";\n public static FORMAT_SHORT_TIME = \"HH:mm\";\n public static FORMAT_SHORT_SECONDS_TIME = \"HH:mm:ss\";\n private observableLoadingSource = new Subject<string>();\n public observableLoading;\n loading = signal<number>(0);\n\n constructor() {\n console.log(\"GeneralUtils constructor\");\n this.observableLoading = this.observableLoadingSource.asObservable();\n }\n\n public startLoading(): void {\n console.log(\"startLoading\");\n this.observableLoadingSource.next(\"start\");\n this.loading.update((value) => ++value);\n }\n\n public stopLoading(): void {\n console.log(\"startLoading\");\n this.observableLoadingSource.next(\"stop\");\n this.loading.update((value) => --value);\n }\n\n public static capitalizeFirstLetter(cad: string): string {\n return cad && cad.charAt(0).toUpperCase() + cad.slice(1);\n }\n\n public static getTwoDigits(digit: number): string {\n if (digit < 10) {\n return \"0\" + digit;\n } else {\n return \"\" + digit;\n }\n }\n\n public static getPathFromURL(segments: UrlSegment[]): string {\n let path = \"\";\n for (let seg of segments) {\n path += seg.path;\n path += \"/\";\n }\n return path;\n }\n\n /** Transforma el objeto en un objeto FormData para enviar como un multipart*/\n public static objectToFormData(object: Object) {\n let formData: any = new FormData();\n Object.keys(object).map((k) => {\n if (Array.isArray(object[k])) {\n for (let fileItem of object[k]) {\n formData.append(k, fileItem);\n }\n } else {\n formData.append(k, object[k]);\n }\n });\n return formData;\n }\n\n public static buildNombreCompleto(obj: any): string {\n let str = \"\";\n if (obj.nombre) str += obj.nombre;\n if (obj.apellido1) str += (str.length > 0 ? \" \" : \"\") + obj.apellido1;\n if (obj.apellido2) str += (str.length > 0 ? \" \" : \"\") + obj.apellido2;\n return str;\n }\n\n public static getTodayAsString(format: string = GeneralUtils.FORMAT_SHORT_DATE): string {\n return moment(new Date()).format(format);\n }\n\n public static getDateAsString(value: Date, format: string = GeneralUtils.FORMAT_SHORT_DATE): string {\n return moment(value).format(format);\n }\n\n public static getStringAsDate(value: string, format: string = GeneralUtils.FORMAT_SHORT_DATE): Date {\n return moment(value, format).toDate();\n }\n\n public static getDateTimeAsString(value: Date, format: string = GeneralUtils.FORMAT_LONG_DATE): string {\n return moment(value).format(format);\n }\n\n public static getTimeAsString(fecha: Date, format: string = GeneralUtils.FORMAT_SHORT_TIME): string {\n return moment(fecha).format(format);\n }\n\n public static stringToDate(fString: string): Date {\n return moment(fString).toDate();\n }\n\n public static stringShortToDate(fString: string): Date {\n return moment(fString, \"DD/MM/YYYY\").toDate();\n }\n\n public static stringToTime(tString: string): Date {\n return moment(tString, \"HH:mm\").toDate();\n }\n\n public static getTimeFromDateString(fecha: string): string {\n return moment(fecha).format(GeneralUtils.FORMAT_SHORT_TIME);\n }\n\n public static getWithDaysOffset(offset: number = 0): string {\n return moment().add(offset, \"days\").format(GeneralUtils.FORMAT_SHORT_DATE);\n }\n\n public static getFirstDayOfCurrentMonth(): string {\n return moment().startOf(\"month\").format(GeneralUtils.FORMAT_SHORT_DATE);\n }\n\n public static getLastDayOfCurrentMonth(): string {\n return moment().endOf(\"month\").format(GeneralUtils.FORMAT_SHORT_DATE);\n }\n\n public static fechaInicioDespuesIgualFechaFin(fechaInicio: string, fechaFin: string): boolean {\n if (fechaInicio && fechaFin) {\n return GeneralUtils.stringShortToDate(fechaInicio) > GeneralUtils.stringShortToDate(fechaFin);\n }\n return false;\n }\n\n public static horaInicioDespuesHoraFin(horaInicio: string, horaFin: string): boolean {\n if (horaInicio && horaFin) {\n return GeneralUtils.stringToTime(horaInicio) > GeneralUtils.stringToTime(horaFin);\n }\n return false;\n }\n\n public static fechaEnRango(fecha: string, fechaInicio: string, fechaFin: string): boolean {\n if (fecha) {\n let fechaDate = GeneralUtils.stringShortToDate(fecha);\n let output = !(\n (fechaInicio && fechaDate < GeneralUtils.stringShortToDate(fechaInicio)) ||\n (fechaFin && fechaDate > GeneralUtils.stringShortToDate(fechaFin))\n );\n return output;\n }\n return false;\n }\n\n public static addOpcionVacia(lista: any[], texto?: string) {\n let nLista = lista.slice();\n nLista.unshift(new Domain(null, texto ? texto : \"\"));\n return nLista;\n }\n\n public static getOptionText(list: Domain[], id: number): string {\n for (let d of list) {\n if (+d.value == id) {\n return d.label;\n }\n }\n return \"-\";\n }\n}\n","import { Injectable, inject } from \"@angular/core\";\nimport { TranslocoService, TranslateParams, HashMap, TranslocoScope } from \"@jsverse/transloco\";\nimport { Observable, BehaviorSubject } from \"rxjs\";\n\nimport { TranslatedMessage } from \"../../base/models/types\";\n\n/**\n * Construye un objeto TranslatedMessage con información para que el receptor pueda traducir el mensaje según\n * el idioma especificado\n * @param code código dentro del fichero json para traducir el mensaje\n * @param context contexto de traducción que permitirár localizar el fichero json\n * @param params Hashmap de tipo nombre propiedad, valor que permitirá customizar el mensaje a traducir\n */\nexport function buildTranslatedMessage(code: string, context: string, params?: {}): TranslatedMessage {\n // la nueva versión de transloco quiere un null y no una cadena vacía\n let newContext = !context ? null : context;\n let translatedMessage: any = { code: code, context: newContext, params: params };\n return translatedMessage;\n}\n\n/** wrapper al servicio de traducción de textos */\n@Injectable({ providedIn: \"root\" })\nexport class TranslateService {\n private translocoService = inject(TranslocoService);\n private defaultLanguage = inject<any>(\"DEFAULT_LANGUAGE\" as any) ?? \"ca\";\n\n private langChangeSubject: BehaviorSubject<string>;\n langChanged$: Observable<string>;\n\n constructor() {\n //para suscribirnos a cambios de idioma y emitimos un primer valor que es el idioma en curso\n console.log(\"default language\", this.defaultLanguage);\n this.langChangeSubject = new BehaviorSubject<string>(this.defaultLanguage);\n this.langChanged$ = this.langChangeSubject.asObservable(); //.pipe(startWith(this.getActiveLang()));\n }\n\n /** Permite traducir un texto cuya clave tiene incluida el contexto en la propia key. Se entiende que el prefijo antes\n * del primer punto representará el contexto y el resto representará la clave que podrá ser compuesta:\n * Ejemplo: contexto.grupo.subgrupo.clave\n */\n selectTranslateWithContext(key: string) {\n let point = key.indexOf(\".\");\n let context = \"\";\n if (point != -1) {\n context = key.substring(0, point);\n key = key.substring(point + 1, key.length);\n }\n return this.selectTranslate(key, null, context);\n }\n\n selectTranslate(key: TranslateParams, params?: HashMap, lang?: string | TranslocoScope, _isObject?: boolean): Observable<any> {\n // console.log(`selectTranslate ${key} ${lang}`);\n return this.translocoService.selectTranslate(key, params, lang, _isObject);\n }\n\n selectTranslateObject(key: string, params?: HashMap, lang?: string): Observable<any> {\n return this.translocoService.selectTranslateObject(key, params, lang);\n }\n\n setActiveLang(lang: string): this {\n this.translocoService.setActiveLang(lang);\n this.langChangeSubject.next(lang); //emitimos que hemos cambiado el idioma\n // console.log(\"setActiveLang\", lang);\n return this;\n }\n\n getActiveLang(): string {\n let lang = this.translocoService.getActiveLang();\n return lang;\n }\n}\n","import { Injectable, inject } from \"@angular/core\";\nimport { HttpClient, HttpHeaders, HttpErrorResponse } from \"@angular/common/http\";\nimport { Observable } from \"rxjs\";\n\nimport { Error as CustomError } from \"../data/error\";\nimport { BitMessageService } from \"./message.service\";\nimport { GeneralUtils } from \"./general-utils.service\";\nimport { TranslateService } from \"./translate.service\";\n\n@Injectable({ providedIn: \"root\" })\nexport class HttpUtilsService {\n protected http = inject(HttpClient);\n protected bitMessageService = inject(BitMessageService);\n protected generalUtils = inject(GeneralUtils);\n protected translateService = inject(TranslateService);\n private apiUrl = inject<string>(\"API_URL\" as any);\n private contextPath = inject<string>(\"CONTEXT_PATH\" as any);\n\n // customizado por proyecto: {provide: 'CONTEXT_PATH', useValue: environment.CONTEXT}\n static CONTEXT_PATH = \"bitcitafront\";\n static LOGIN_AUTHENTICATION = \"\";\n static errorAccessServerTitle: string = \"\";\n static errorAccessServerMessage: string = \"\";\n static errorServerTitle: string = \"\";\n static errorServerMessage: string = \"\";\n\n constructor() {\n HttpUtilsService.CONTEXT_PATH = this.contextPath;\n console.log(`HttpUtilsSerive creado con API Url: ${this.apiUrl} y contextPath: ${this.contextPath}`);\n this.getMessagesI18N();\n }\n\n getMessagesI18N() {\n this.translateService\n .selectTranslate(\"messages.erroraccessservertitle\", {}, \"bitnglibrary\")\n .subscribe((v) => (HttpUtilsService.errorAccessServerTitle = v));\n this.translateService\n .selectTranslate(\"messages.erroraccessservermessage\", {}, \"bitnglibrary\")\n .subscribe((v) => (HttpUtilsService.errorAccessServerMessage = v));\n this.translateService.selectTranslate(\"messages.errorservertitle\", {}, \"bitnglibrary\").subscribe((v) => (HttpUtilsService.errorServerTitle = v));\n this.translateService.selectTranslate(\"messages.errorservermessage\", {}, \"bitnglibrary\").subscribe((v) => (HttpUtilsService.errorServerMessage = v));\n }\n\n /*\n private handleError(error: HttpErrorResponse) {\n //this.generalUtils.stopLoading();\n let customError = HttpUtilsService.getCustomError(error);\n this.bitMessageService.sendError(customError);\n return throwError(customError);\n }*/\n\n static getCustomError(error: HttpErrorResponse): CustomError {\n let lastUrlAcceded = error.url;\n let innerError;\n let customError;\n\n if (\n error.message &&\n (error.message.includes(\"Unexpected token < in JSON\") || //chrome\n error.message.includes(\"JSON.parse: unexpected character at line 1 column 1\") || //firefox\n error.message.includes(\"JSON.parse Error: Invalid character at position:1\")) //explorer\n ) {\n console.log(\"Parece que hemos perdido la sesión\");\n //customError = new CustomError(lastUrlAcceded, \"S'ha detectat que s'ha perdut la sessió amb el servidor. És necessari que torni a autenticar-se en el sistema.\\n Si no apareix la pàgina d'introducció d'usuari i contrasenya, per favor tanqui el navegador i torni a obrir l'aplicació.\",\n //\"S'ha detectat que s'ha perdut la sessió amb el servidor. És necessari que torni a autenticar-se en el sistema.\\n Si no apareix la pàgina d'introducció d'usuari i contrasenya, per favor tanqui el navegador i torni a obrir l'aplicació.\", undefined, true, null);\n HttpUtilsService.reloadPage();\n return;\n }\n\n try {\n innerError = JSON.parse(error.error);\n } catch (err) {\n innerError = error.error;\n }\n if (innerError && (innerError[\"notificacion\"] || innerError[\"trazaError\"])) {\n //el error es controlado del servidor\n customError = <CustomError>innerError;\n } else {\n //el error es un problema de comunicaciones o del propio cliente Angular\n if (error.status || error.status === 0) {\n //caso jetty o error controlado del servidor\n console.log(\"HTTP Error con status \" + error.status);\n if (error.status >= 300 && error.status < 500) {\n customError = new CustomError(lastUrlAcceded, this.errorAccessServerTitle, this.errorAccessServerMessage, undefined, true);\n } else {\n customError = new CustomError(lastUrlAcceded, this.errorServerTitle, this.errorServerMessage, undefined, true);\n }\n } else {\n customError = new CustomError(lastUrlAcceded, error.message, error.message, error.error);\n }\n }\n return customError;\n }\n\n static reloadPage() {\n let currentUrl = window.location.href;\n console.log(`current url ${currentUrl}`);\n let index: number = currentUrl.lastIndexOf(HttpUtilsService.CONTEXT_PATH);\n let newUrl: string;\n if (index != -1) {\n newUrl = currentUrl.substring(0, index + HttpUtilsService.CONTEXT_PATH.length);\n } else {\n newUrl = currentUrl;\n }\n console.log(`new url ${newUrl}`);\n window.location.href = newUrl;\n }\n\n public getHttpPost<T>(url, hqlRequest, emptyResponse: boolean = false): Observable<T> {\n console.log(\"calling url server via POST:\" + this.apiUrl + url);\n let body = JSON.stringify(hqlRequest);\n let headers: HttpHeaders = new HttpHeaders().set(\"Content-Type\", \"application/json\");\n headers = this.addAuthenticationData(headers);\n let vResponseType: any = emptyResponse ? \"text\" : \"json\";\n return this.http.post<T>(this.apiUrl + url, body, { headers, responseType: vResponseType });\n }\n\n public getHttpPut<T>(url, hqlRequest): Observable<T> {\n console.log(\"calling url server via PUT:\" + this.apiUrl + url);\n let body = JSON.stringify(hqlRequest);\n let headers: HttpHeaders = new HttpHeaders().set(\"Content-Type\", \"application/json\");\n headers = this.addAuthenticationData(headers);\n return this.http.put<T>(this.apiUrl + url, body, { headers });\n }\n\n public getHttpPatch<T>(url, hqlRequest): Observable<T> {\n console.log(\"calling url server via PUT:\" + this.apiUrl + url);\n let body = JSON.stringify(hqlRequest);\n let headers: HttpHeaders = new HttpHeaders().set(\"Content-Type\", \"application/json\");\n headers = this.addAuthenticationData(headers);\n return this.http.patch<T>(this.apiUrl + url, body, { headers });\n }\n\n public getHttpDelete(url): Observable<any> {\n console.log(\"calling url server via DELETE:\" + this.apiUrl + url);\n let headers: HttpHeaders = new HttpHeaders().set(\"Content-Type\", \"application/json\");\n headers = this.addAuthenticationData(headers);\n return this.http.delete(this.apiUrl + url, {\n headers,\n responseType: \"text\"\n });\n }\n\n public getHttpGet<T>(url): Observable<T> {\n console.log(\"calling url server via GET:\" + this.apiUrl + url);\n let headers: HttpHeaders = this.addAuthenticationData(new HttpHeaders());\n\n return this.http.get<T>(this.apiUrl + url, {\n headers: headers\n });\n }\n\n private addAuthenticationData(httpHeaders: HttpHeaders) {\n if (HttpUtilsService.LOGIN_AUTHENTICATION && HttpUtilsService.LOGIN_AUTHENTICATION != \"\") {\n httpHeaders = httpHeaders.append(\"Authorization\", \"Basic \" + HttpUtilsService.LOGIN_AUTHENTICATION);\n }\n return httpHeaders;\n }\n}\n\nexport var httpUtilsServiceInjectables: Array<any> = [\n {\n provide: HttpUtilsService,\n useClass: HttpUtilsService\n }\n];\n","import { inject } from \"@angular/core\";\nimport { HttpClient } from \"@angular/common/http\";\nimport { lastValueFrom } from \"rxjs\";\n\nimport { HttpUtilsService } from \"./http-utils.service\";\nimport { HttpUrlGenerator } from \"../entities/http-url-generator\";\nimport { EntityId } from \"../entities/models\";\n\n\nexport abstract class DefaultDataService<T> {\n protected httpUtilsService: HttpUtilsService = inject(HttpUtilsService);\n\n constructor(protected entityName: string, protected http: HttpClient, protected httpUrlGenerator: HttpUrlGenerator) {}\n\n async add(entity: T): Promise<T> {\n return lastValueFrom(this.http.post<T>(this.httpUrlGenerator.entityResource(this.entityName), entity));\n }\n\n async delete(key: number | string): Promise<number | string> {\n return lastValueFrom(\n this.http.delete<number | string>(`${this.httpUrlGenerator.entityResource(this.entityName)}${key}`)\n );\n }\n async getAll(): Promise<T[]> {\n return lastValueFrom(this.http.get<T[]>(this.httpUrlGenerator.collectionResource(this.entityName)));\n }\n\n async getById(key: number | string): Promise<T> {\n return lastValueFrom(this.http.get<T>(`${this.httpUrlGenerator.entityResource(this.entityName)}${key}`));\n }\n\n async getWithQuery(queryParams: string | undefined): Promise<T[]> {\n return lastValueFrom(\n this.http.get<T[]>(`${this.httpUrlGenerator.collectionResource(this.entityName)}?${queryParams}`)\n );\n }\n\n async update(id: EntityId, update: Partial<T>): Promise<T> {\n return lastValueFrom(this.http.put<T>(`${this.httpUrlGenerator.entityResource(this.entityName)}${id}`, update));\n }\n\n async upsert(entity: T): Promise<T> {\n // si no tiene id hacemos un post si no un put\n if (!entity[\"id\"]) {\n return this.add(entity);\n } else {\n return this.update(entity[\"id\"], entity);\n }\n }\n}\n","\nimport { HttpUtilsService } from \"./http-utils.service\";\nimport { Item } from \"../data\";\nimport { DefaultDataService } from \"./default-data.service\";\n\n\nexport abstract class BaseDataService<T extends Item> extends DefaultDataService<T> {\n protected httpUtilsService: HttpUtilsService;\n\n /** Borra las entidades del servidor asociadas al parentId proporcionado */\n abstract deleteEntities(entities: number[], parentId: number): Promise<any>;\n /** Cuenta el número total de elementos de una búsqueda con filtro */\n abstract countAllByFilter(queryParams: string): Promise<number>;\n /** Realiza el patch de la entidad y retorna la entidad completa */\n abstract patchEntity(patch: any): Promise<T>;\n}\n","import { Item } from \"../data\";\nimport { BaseDataService } from \"./base-data.service\";\n\nexport class BaseDataAdapterService<T extends Item> extends BaseDataService<T> {\n /** Borra las entidades del servidor */\n deleteEntities(entities: number[], parentId: number): Promise<any> {\n throw new Error(\"Method not implemented.\");\n }\n /** Cuenta el número total de elementos de una búsqueda con filtro */\n countAllByFilter(queryParams: string): Promise<number> {\n throw new Error(\"Method not implemented.\");\n }\n\n /** Realiza el patch de la entidad y retorna la entidad completa */\n patchEntity(patch: any): Promise<T> {\n throw new Error(\"Method not implemented.\");\n }\n}\n","import { Observable, Subject } from \"rxjs\";\n\n/**\n * Servicio que permite comunicar cuando debe abrirse o cerrarse un panel\n */\nexport class BitPanelService {\n private tooglePanel$ = new Subject<any>(); // permite comunicar que el panel debe abrirse o cerrarse\n\n // comunicará que el panel debe abrirse o cerrarse\n tooglePanel(event) {\n this.tooglePanel$.next(event);\n }\n\n // Retorna el observable para recibir notificaciones de si debemos abrir o cerrar el panel\n getTooglePanel(): Observable<boolean> {\n return this.tooglePanel$;\n }\n}\n","import { FormGroup, UntypedFormControl, UntypedFormArray, ValidatorFn } from \"@angular/forms\";\nimport { GeneralUtils } from \"./general-utils.service\";\nimport { TranslatedMessage, ErrorValidateForm } from \"../../base/models/types\";\nimport { buildTranslatedMessage } from \"./translate.service\";\n\nexport class CustomValidators {\n static config = {\n required: CustomValidators.buildErrorMessage(\"required\"),\n invalidDate: CustomValidators.buildErrorMessage(\"Data incorrecta\"),\n invalidTime: CustomValidators.buildErrorMessage(\"invalidTime\"),\n invalidEmailAddress: CustomValidators.buildErrorMessage(\"invalidEmailAddress\"),\n invalidEmailCSVAddress: CustomValidators.buildErrorMessage(\"invalidEmailCSVAddress\"),\n invalidLogin: CustomValidators.buildErrorMessage(\"invalidLogin\"),\n invalidEtiqueta: CustomValidators.buildErrorMessage(\"invalidEtiqueta\"),\n invalidName: CustomValidators.buildErrorMessage(\"invalidName\"),\n invalidCodigo: CustomValidators.buildErrorMessage(\"invalidCodigo\"),\n invalidAlfanumerico: CustomValidators.buildErrorMessage(\"invalidAlfanumerico\"),\n invalidCantidad: CustomValidators.buildErrorMessage(\"invalidCantidad\"),\n invalidEnteroPositivo: CustomValidators.buildErrorMessage(\"invalidEnteroPositivo\"),\n invalidEnteroPositivoIncluyeCero: CustomValidators.buildErrorMessage(\"invalidEnteroPositivoIncluyeCero\"),\n invalidCantidadDecimal: CustomValidators.buildErrorMessage(\"invalidCantidadDecimal\"),\n invalidNumeroPositivo: CustomValidators.buildErrorMessage(\"invalidNumeroPositivo\"),\n invalidCodigoPostal: CustomValidators.buildErrorMessage(\"invalidCodigoPostal\"),\n invalidTelefono: CustomValidators.buildErrorMessage(\"invalidTelefono\"),\n invalidTelefonoCSV: CustomValidators.buildErrorMessage(\"invalidTelefonoCSV\"),\n invalidPorcentaje: CustomValidators.buildErrorMessage(\"invalidPorcentaje\"),\n invalidUrl: CustomValidators.buildErrorMessage(\"invalidUrl\"),\n invalidPath: CustomValidators.buildErrorMessage(\"invalidPath\"),\n invalidNIF: CustomValidators.buildErrorMessage(\"invalidNIF\"),\n invalidNIE: CustomValidators.buildErrorMessage(\"invalidNIE\"),\n invalidCIF: CustomValidators.buildErrorMessage(\"invalidCIF\"),\n invalidNIFNIE: CustomValidators.buildErrorMessage(\"invalidNIFNIE\"),\n invalidAnyo: CustomValidators.buildErrorMessage(\"invalidAnyo\"),\n maxlength: CustomValidators.buildErrorMessage(\"maxlength\"),\n invalidNumeroDocumentoTipoDocumento: CustomValidators.buildErrorMessage(\"invalidNumeroDocumentoTipoDocumento\"),\n direccionIncompleta: CustomValidators.buildErrorMessage(\"direccionIncompleta\"),\n requiredExtraData: CustomValidators.buildErrorMessage(\"requiredExtraData\"),\n invalidRangoFechaFinPosteriorInicio: CustomValidators.buildErrorMessage(\"invalidRangoFechaFinPosteriorInicio\"),\n invalidRangoHoraFinPosteriorInicio: CustomValidators.buildErrorMessage(\"invalidRangoHoraFinPosteriorInicio\"),\n invalidDateTimeNotAfterCurrentDate: CustomValidators.buildErrorMessage(\"invalidDateTimeNotAfterCurrentDate\")\n };\n\n static CustomValidatorsMap = {\n codigoNumerico: CustomValidators.codigoValidator,\n codigoAlfanumerico: CustomValidators.alfanumericoValidator,\n nombre: CustomValidators.nombreValidator,\n numero: CustomValidators.cantidadDecimalValidator,\n entero: CustomValidators.cantidadValidator,\n numeroPositivo: CustomValidators.numeroPositivoValidator,\n enteroPositivo: CustomValidators.enteroPositivoValidator,\n nif: CustomValidators.nifValidator,\n nie: CustomValidators.nieValidator,\n cif: CustomValidators.cifValidator,\n nifnie: CustomValidators.nifNieValidator,\n cp: CustomValidators.codigoPostalValidator,\n telefono: CustomValidators.telefonoValidator,\n telefonoCSV: CustomValidators.telefonoCSVValidator,\n emailCSV: CustomValidators.emailCSVValidator,\n email: CustomValidators.emailValidator,\n fecha: CustomValidators.dataValidator,\n anyo: CustomValidators.anyoValidator\n };\n\n static buildErrorMessage(code: string, params?: {}): TranslatedMessage {\n return buildTranslatedMessage(\"form.messages.\" + code, \"bitnglibrary\", params);\n }\n\n static getValidatorErrorMessage(code: string) {\n return CustomValidators.config[code];\n }\n\n // método para unir validadores\n static compose(validators: ValidatorFn[]): ValidatorFn {\n let result = function (g: FormGroup) {\n // ejecutamos cada uno de los validadores y unimos sus resultados\n let innerResult = validators.map((validator) => validator(g)).reduce((acc, result = {}) => Object.assign(acc, result), {});\n return innerResult;\n };\n return result;\n }\n\n static required(control): { [s: string]: boolean } {\n if (control.value === null || control.value === undefined || control.value === \"\") {\n return { required: true };\n } else {\n return null;\n }\n }\n\n // este validador en realidad no está haciendo nada porque bit-input, para fechas no válidas, sustituye\n // control.value por un null y el validador pasa siempre\n static dataValidator(control): { [s: string]: boolean } {\n // formato dd/MM/yyyy\n if (!control.value || control.value.match(/^(0[1-9]|1\\d|2\\d|3[01])\\/(0[1-9]|1[0-2])\\/(19|20)\\d{2}$/)) {\n return null;\n } else {\n return { invalidDate: true };\n }\n }\n\n static timeValidator(control): { [s: string]: boolean } {\n // formato hh:mm\n if (!control.value || (control.value && control.value.match(/^[0-9][0-9]:[0-9][0-9]$/))) {\n return null;\n } else {\n return { invalidTime: true };\n }\n }\n\n static emailValidator(control): { [s: string]: boolean } {\n // RFC 2822 compliant regex\n if (!control.value || control.value.match(/\\S+@([-\\w]+\\.)+\\w+/g)) {\n return null;\n } else {\n return { invalidEmailAddress: true };\n }\n }\n\n static emailCSVValidator(control): { [s: string]: boolean } {\n // RFC 2822 compliant regex\n if (!control.value || control.value.match(/^(( )*[\\w\\.]+@([-\\w]+\\.)+\\w+( )*)(,( )*[\\w\\.]+@([-\\w]+\\.)+\\w+( )*)*$/g)) {\n return null;\n } else {\n return { invalidEmailCSVAddress: true };\n }\n }\n\n static loginValidator(control): { [s: string]: boolean } {\n if (!control.value || control.value.match(/^[a-z0-9_-]{3,15}/)) {\n return null;\n } else {\n return { invalidLogin: true };\n }\n }\n\n static etiquetaValidator(control): { [s: string]: boolean } {\n if (!control.value || control.value.match(/^[a-zA-Z0-9_-]+/)) {\n return null;\n } else {\n return { invalidEtiqueta: true };\n }\n }\n\n static nombreValidator(control): { [s: string]: boolean } {\n if (\n !control.value ||\n /^([A-Za-z0-9_\\.\\,\\'\\\"\\(\\)\\;\\:\\-\\/\\@\\?\\%\\?\\¿\\&\\+\\-\\*\\/\\ \\n\\rºª'´’·ïü?`áéíóúÁÉÍÓÚàèìòùÀÈÌÒÙÄËÏÖÜäëïöüñÑçÇ¡!#])+$/.test(control.value)\n ) {\n return null;\n } else {\n return { invalidName: true };\n }\n }\n\n static codigoValidator(control): { [s: string]: boolean } {\n if (!control.value || control.value.match(/^([0-9])+$/)) {\n return null;\n } else {\n return { invalidCodigo: true };\n }\n }\n\n static alfanumericoValidator(control): { [s: string]: boolean } {\n if (!control.value || control.value.match(/^([A-Z0-9_\\.\\-ÑÇ])+$/)) {\n return null;\n } else {\n return { invalidAlfanumerico: true };\n }\n }\n\n static cantidadValidator(control): { [s: string]: boolean } {\n // value is either empty, or a number without decimals\n if (!control.value || control.value === \"\") {\n return null;\n }\n let num = Number(control.value);\n if (!isNaN(num) && num % 1 == 0) {\n return null;\n }\n return { invalidCantidad: true };\n }\n\n /* Valida números enteros (sin decimales) positivos (>=0) */\n static enteroPositivoValidator(control): { [s: string]: boolean } {\n // value is either empty, or a number without decimals\n if (!control.value || control.value === \"\") {\n return null;\n }\n let num = Number(control.value);\n if (!isNaN(num) && num % 1 == 0 && num >= 0) {\n return null;\n }\n return { invalidEnteroPositivo: true };\n }\n\n static enteroPositivoValidatorIncluyeCeroValidator(control): { [s: string]: boolean } {\n // value is either empty, or a positive number (including 0) without decimals\n if (!control.value || control.value === \"\") {\n return null;\n }\n let num = Number(control.value);\n if (!isNaN(num) && num % 1 == 0 && num >= 0) {\n return null;\n }\n return { invalidEnteroPositivoIncluyeCero: true };\n }\n\n /* Valida números enteros (con decimales) */\n static cantidadDecimalValidator(control): { [s: string]: boolean } {\n // value is either empty, or a number (including decimals)\n if (!control.value || control.value === \"\" || !isNaN(Number(control.value))) {\n return null;\n } else {\n return { invalidCantidadDecimal: true };\n }\n }\n\n /* Valida números enteros (con decimales) positivos (>=0) */\n static numeroPositivoValidator(control): { [s: string]: boolean } {\n if (!control.value || control.value === \"\" || (!isNaN(Number(control.value)) && Number(control.value) >= 0)) {\n return null;\n } else {\n return { invalidNumeroPositivo: true };\n }\n }\n\n /* Valida código postal (numero de 5 dígitos) */\n static codigoPostalValidator(control): { [s: string]: boolean } {\n if (!control.value || (control.value.match(/^([0-9])+$/) && control.value.length == 5)) {\n return null;\n } else {\n return { invalidCodigoPostal: true };\n }\n }\n\n /* Valida telefono (numero de 9 dígitos) */\n static telefonoValidator(control): { [s: string]: boolean } {\n if (!control.value || control.value.match(/^[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]$/)) {\n return null;\n } else {\n return { invalidTelefono: true };\n }\n }\n\n /* Valida telefono (numero de 9 dígitos) */\n static telefonoCSVValidator(control): { [s: string]: boolean } {\n if (!control.value || control.value.match(/^[0-9]{9}(( *, *)[0-9]{9})*$/g)) {\n return null;\n } else {\n return { invalidTelefonoCSV: true };\n }\n }\n\n static buildLongitudValidator(lon: number) {\n let errorKey = \"invalidLongitud\";\n let errorKeyIndex = errorKey + \" _\" + lon.toString();\n CustomValidators.config[errorKeyIndex] = CustomValidators.buildErrorMessage(errorKey, { lon: lon });\n return (control) => {\n if (!control.value || control.value.length <= lon) {\n return null;\n } else {\n let ret = {};\n ret[errorKeyIndex] = true;\n return ret;\n }\n };\n }\n\n static buildCantidadMinValidator(min: number) {\n let errorKey = \"invalidCantidadMin\";\n let errorKeyIndex = errorKey + \" _\" + min.toString();\n CustomValidators.config[errorKeyIndex] = CustomValidators.buildErrorMessage(errorKey, { min: min });\n return (control) => {\n if (control.value === \"\" || control.value == null) return null;\n let num = Number(control.value);\n if (isNaN(num) || num >= min) {\n // si no es numérico o el valor >= min, pasa la validación\n return null;\n } else {\n let ret = {};\n ret[errorKeyIndex] = true;\n return ret;\n }\n };\n }\n\n static buildCantidadMaxValidator(max: number) {\n let errorKey = \"invalidCantidadMax\";\n let errorKeyIndex = errorKey + \"_\" + max.toString();\n CustomValidators.config[errorKeyIndex] = CustomValidators.buildErrorMessage(errorKey, { max: max });\n return (control) => {\n if (control.value === \"\" || control.value == null) return null;\n let num = Number(control.value);\n if (isNaN(num) || num <= max) {\n // si no es numérico o el valor ≤ max, pasa la validación\n return null;\n } else {\n let ret = {};\n ret[errorKeyIndex] = true;\n return ret;\n }\n };\n }\n\n static buildCantidadMinMaxValidator(min: number, max: number) {\n let errorKey = \"invalidCantidadMinMax\";\n let errorKeyIndex = errorKey + \"_\" + min.toString() + \"_\" + max.toString();\n CustomValidators.config[errorKeyIndex] = CustomValidators.buildErrorMessage(errorKey, {\n min: min,\n max: max\n });\n return (control) => {\n if (control.value === \"\" || control.value == null) return null;\n let num = Number(control.value);\n if (!isNaN(num) && num >= min && num <= max) {\n return null;\n } else {\n let ret = {};\n ret[errorKeyIndex] = true;\n return ret;\n }\n };\n }\n\n static porcentajeValidator(control): { [s: string]: boolean } {\n // expected a numeric value between 0 and 100\n if (!control.value || control.value === \"\") {\n return null;\n } else {\n let n = Number(control.value);\n if (!isNaN(n) && n >= 0 && n <= 100) {\n return null;\n } else {\n return { invalidPorcentaje: true };\n }\n }\n }\n\n static urlValidator(control): { [s: string]: boolean } {\n let pattern = new RegExp(\n \"^(https?:\\\\/\\\\/)?\" + // protocol\n \"((([a-z\\\\d]([a-z\\\\d-]*[a-z\\\\d])*)\\\\.?)+[a-z]{2,}|\" + // domain name\n \"((\\\\d{1,3}\\\\.){3}\\\\d{1,3}))\" + // OR ip (v4) address\n \"(\\\\:\\\\d+)?(\\\\/[-a-z\\\\d%_.~+]*)*\" + // port and path\n \"(\\\\?[;&a-z\\\\d%_.~+=-]*)?\" + // query string\n \"(\\\\#[-a-z\\\\d_]*)?$\",\n \"i\"\n ); // fragment locator\n if (!control.value || pattern.test(control.value)) {\n return null;\n } else {\n return { invalidUrl: true };\n }\n }\n\n static pathValidator(control): { [s: string]: boolean } {\n let pattern = new RegExp(\n \"^((\\\\/)?[-a-z\\\\d%_.~+]*)*\" + // port and path\n \"(\\\\?[;&a-z\\\\d%_.~+=-]*)?\" + // query string\n \"(\\\\#[-a-z\\\\d_]*)?$\",\n \"i\"\n ); // fragment locator\n if (!control.value || pattern.test(control.value)) {\n return null;\n } else {\n return { invalidPath: true };\n }\n }\n\n /**\n * Retorna un string con todos los errores que contiene el formulario, separados por saltos de línea.\n */\n static validateForm(form: FormGroup, prefix: string[] = []): ErrorValidateForm[] {\n let mensajes: ErrorValidateForm[] = [];\n // errores en términos de grupo\n for (let errorKey in form.errors) {\n let pr = prefix ? prefix : [\"\"];\n mensajes.push({ prefixes: pr, errorMessage: CustomValidators.config[errorKey] });\n }\n\n for (let controlKey in form.controls) {\n let control = form.controls[controlKey];\n if (!control.valid) {\n // no es válido, hay mensajes que recuperar\n let controlLabel: string[] = prefix.concat([controlKey]); // nombre apilado\n\n // detectamos si es un campo o un formulario anidado\n if (control instanceof FormGroup) {\n // es un formulario anidado, seguimos bajando recursivamente\n mensajes = mensajes.concat(CustomValidators.validateForm(control, controlLabel));\n } else if (control instanceof UntypedFormControl) {\n // es un campo final, añadimos sus mensajes de error\n for (let errorKey in control.errors) {\n mensajes.push({ prefixes: controlLabel, errorMessage: CustomValidators.config[errorKey] });\n }\n } else if (control instanceof UntypedFormArray) {\n // es una lista de controles anidada, la recorremos\n control.controls &&\n control.controls.forEach((arrControl, index) => {\n let arrControlLabel: string[] = controlLabel.concat([index.toString()]);\n if (arrControl instanceof FormGroup) {\n // es una lista de FormGroups, bajamos a ellos recursivamente\n mensajes = mensajes.concat(CustomValidators.validateForm(arrControl, arrControlLabel));\n } else if (arrControl instanceof UntypedFormControl) {\n // es una lista de FormControls, los tratamos desde aquí\n for (let errorKey in control.errors) {\n mensajes.push({ prefixes: arrControlLabel, errorMessage: CustomValidators.config[errorKey] });\n }\n } else {\n // ??? ¿Un array de arrays? No está previsto.\n console.log(\"[CustomValidators] Unexpected FormArray with nested FormArrays\");\n }\n });\n }\n }\n }\n return mensajes;\n }\n\n /**\n * Recibe un objeto con las propiedades {fieldTipo, fieldNumero} y devuelve un validador de formulario para documentos de identificación.\n * El error que puede generarse es del tipo 'invalidNumeroDocumentoTipoDocumento'.\n */\n static buildNumeroDocumentoValidator({ fieldTipo = \"documentoTipo\", fieldNumero = \"documentoNumero\" } = {}): ValidatorFn {\n let result = function (g: FormGroup) {\n if (!g) {\n return null;\n }\n let documentoTipo = g.get(fieldTipo) && g.get(fieldTipo).value;\n let documentoNumero = g && g.get(fieldNumero) && g.get(fieldNumero).value;\n let invalid = false;\n if (documentoTipo && documentoNumero) {\n if (documentoTipo == \"DNI\") {\n invalid = !CustomValidators.isValidDNI(documentoNumero);\n } else if (documentoTipo == \"CIF\") {\n invalid = !CustomValidators.isValidCIF(documentoNumero);\n } else if (documentoTipo == \"NIF\") {\n //invalid = !documentoNumero.match(/^[0-9]{8}[a-z|A-Z]$/);\n invalid = !CustomValidators.isValidNIF(documentoNumero);\n } else if (documentoTipo == \"NIE\") {\n invalid = !CustomValidators.isValidNIE(documentoNumero);\n }\n }\n\n if (invalid) {\n return { invalidNumeroDocumentoTipoDocumento: true };\n } else {\n return null;\n }\n };\n return result;\n }\n\n static nifValidator(control): { [s: string]: boolean } {\n if (!control.value || CustomValidators.isValidNIF(control.value)) {\n return null;\n } else {\n return { invalidNIF: true };\n }\n }\n\n static nieValidator(control): { [s: string]: boolean } {\n if (!control.value || CustomValidators.isValidNIE(control.value)) {\n return null;\n } else {\n return { invalidNIE: true };\n }\n }\n\n static nifNieValidator(control): { [s: string]: boolean } {\n if (!control.value || CustomValidators.isValidNIF(control.value) || CustomValidators.isValidNIE(control.value)) {\n return null;\n } else {\n return { invalidNIFNIE: true };\n }\n }\n\n static cifValidator(control): { [s: string]: boolean } {\n let pattern = new RegExp(/^[a-z|A-Z][0-9]{7}[a-z|A-Z|0-9]/); // TODO\n if (!control.value || pattern.test(control.value)) {\n return null;\n } else {\n return { invalidCIF: true };\n }\n }\n\n static anyoValidator(control): { [s: string]: boolean } {\n let pattern = new RegExp(/^[0-9]{4}$/); // TODO\n if (!control.value || pattern.test(control.value)) {\n return null;\n } else {\n return { invalidAnyo: true };\n }\n }\n\n static isValidDNI(value: string): boolean {\n return true; // ¿deberíamos validar algo? Con letra ya tenemos el NIF\n }\n\n // Referencia principal: https://gist.github.com/carlos-mg89/4aaafa310c9e4b91f5fb890540f38cae\n static isValidCIF(value: string): boolean {\n const CIF_REGEX = /^([ABCDEFGHJKLMNPQRSUVW])(\\d{7})([0-9A-J])$/;\n if (!value || !value.match(CIF_REGEX)) return false;\n\n value = value.toUpperCase();\n var match = value.match(CIF_REGEX);\n const letter = match[1];\n const number = match[2];\n const control = match[3];\n\n var even_sum = 0;\n var odd_sum = 0;\n var n: number;\n\n for (var i = 0; i < number.length; i++) {\n n = parseInt(number[i], 10);\n // Odd positions (Even index equals to odd position. i=0 equals first position)\n if (i % 2 === 0) {\n // Odd positions are multiplied first\n n *= 2;\n // If the multiplication is bigger than 10 we need to adjust\n odd_sum += n < 10 ? n : n - 9;\n // Even positions, just sum them\n } else {\n even_sum += n;\n }\n }\n\n const control_digit = (10 - Number((even_sum + odd_sum).toString().substr(-1))).toString().substr(-1);\n const control_letter = \"JABCDEFGHI\".substr(Number(control_digit), 1);\n\n // Control must be a digit\n if (letter.match(/[ABEH]/)) {\n return control === control_digit;\n }\n // Control must be a letter ( referencia: https://es.wikipedia.org/wiki/C%C3%B3digo_de_identificaci%C3%B3n_fiscal )\n else if (letter.match(/[PQRSWN]/)) {\n return control === control_letter;\n }\n // Can be either\n else {\n return control === control_digit || control === control_letter;\n }\n }\n\n // https://github.com/jquery-validation/jquery-validation/blob/master/src/additional/nifES.js\n static isValidNIF(value: string): boolean {\n value = value.toUpperCase();\n // Basic format test\n if (!value.match(\"((^[A-Z]{1}[0-9]{7}[A-Z0-9]{1}$|^[T]{1}[A-Z0-9]{8}$)|^[0-9]{8}[A-Z]{1}$)\")) {\n return false;\n }\n // Test NIF\n if (/^[0-9]{8}[A-Z]{1}$/.test(value)) {\n return \"TRWAGMYFPDXBNJZSQVHLCKE\".charAt(Number(value.substring(8, 0)) % 23) === value.charAt(8);\n }\n // Test specials NIF (starts with K, L or M)\n if (/^[KLM]{1}/.test(value)) {\n return value[8] !== \"TRWAGMYFPDXBNJZSQVHLCKE\".charAt(Number(value.substring(8, 1)) % 23);\n }\n return false;\n }\n\n static isValidNIE(value: string): boolean {\n // Un NIE sigue una validación muy similar a la de un DNI, con la diferencia\n // de que en lugar de ser ocho números + letra debe ser letra + siete números + letra,\n // siendo la primera letra X, Y o Z sustituible por 0, 1 o 2 respectivamente.\n let nieRegEx = new RegExp(/^[XYZ]{1}[0-9]{7}[TRWAGMYFPDXBNJZSQVHLCKET]{1}$/gi);\n\n // Si no tiene el formato básico, no es válido\n if (!nieRegEx.test(value)) {\n return false;\n }\n\n // Sustituimos la primera letra por el número equivalente y aprovechamos la validación de NIF\n value = value.toString().toUpperCase().replace(/^[X]/, \"0\").replace(/^[Y]/, \"1\").replace(/^[Z]/, \"2\");\n\n return CustomValidators.isValidNIF(value);\n }\n\n static rangoFechasValidator({ fieldFechaInicio = \"fechaInicio\", fieldFechaFin = \"fechaFin\" } = {}): ValidatorFn {\n let result = function (g: FormGroup) {\n if (!g) {\n return null;\n }\n let fechaInicio = g.get(fieldFechaInicio) && g.get(fieldFechaInicio).value;\n let fechaFin = g && g.get(fieldFechaFin) && g.get(fieldFechaFin).value;\n if (fechaInicio && fechaFin) {\n let inicio = GeneralUtils.stringShortToDate(fechaInicio);\n let fin = GeneralUtils.stringShortToDate(fechaFin);\n if (inicio > fin) {\n return { invalidRangoFechaFinPosteriorInicio: true };\n }\n }\n return null;\n };\n return result;\n }\n\n static rangoHorasValidator({ fieldHoraInicio = \"horaInicio\", fieldHoraFin = \"horaFin\" } = {}): ValidatorFn {\n let result = function (g: FormGroup) {\n if (!g) {\n return null;\n }\n let inicio = g.get(fieldHoraInicio) && g.get(fieldHoraInicio).value && GeneralUtils.stringToTime(g.get(fieldHoraInicio).value);\n let fin = g && g.get(fieldHoraFin) && g.get(fieldHoraFin).value && GeneralUtils.stringToTime(g.get(fieldHoraFin).value);\n if (inicio && fin && inicio >= fin) {\n return { invalidRangoHoraFinPosteriorInicio: true };\n }\n return null;\n };\n return result;\n }\n\n static dateTimeNotAfterCurrentDateValidator({ fieldfecha = \"fecha\", fieldHora = \"hora\" } = {}): ValidatorFn {\n let result = function (g: FormGroup) {\n if (!g) {\n return null;\n }\n let campoFecha = g.get(fieldfecha);\n let campoHora = g.get(fieldHora);\n if (campoFecha && campoFecha.value && campoFecha.value.match(/^(0[1-9]|1\\d|2\\d|3[01])\\/(0[1-9]|1[0-2])\\/(19|20)\\d{2}$/)) {\n let date = GeneralUtils.getStringAsDate(campoFecha.value);\n if (campoHora && campoHora.value && campoHora.value.match(/^[0-9][0-9]:[0-9][0-9]$/)) {\n date.setHours(campoHora.value.split(\":\")[0]);\n date.setMinutes(campoHora.value.split(\":\")[1]);\n }\n if (date < new Date()) {\n return { invalidDateTimeNotAfterCurrentDate: true };\n }\n }\n return null;\n };\n return result;\n }\n\n static buildMinLongitudValidator(lon: number) {\n let errorKey = \"invalidMinLongitud\";\n let errorKeyIndex = errorKey + \"_\" + lon.toString();\n CustomValidators.config[errorKeyIndex] = CustomValidators.buildErrorMessage(errorKey, { lon: lon });\n let result = (control) => {\n if (!control.value || control.value.length >= lon) {\n return null;\n } else {\n let ret = {};\n ret[errorKeyIndex] = true;\n return ret;\n }\n };\n return result;\n }\n}\n","import { Injectable } from \"@angular/core\";\nimport { Domain } from \"../data/domain\";\n\nimport moment from \"moment\";\n\n@Injectable({ providedIn: \"root\" })\nexport class DateUtils {\n public static FORMAT_SHORT_DATE = \"DD/MM/YYYY\";\n public static FORMAT_LONG_DATE = \"DD/MM/YYYY HH:mm\";\n public static FORMAT_SHORT_TIME = \"HH:mm\";\n public static FORMAT_SHORT_SECONDS_TIME = \"HH:mm:ss\";\n\n constructor() {\n console.log(\"Date constructor\");\n }\n\n public getTodayAsString(format: string = DateUtils.FORMAT_SHORT_DATE): string {\n return moment(new Date()).format(format);\n }\n\n public getDateAsString(value: Date, format: string = DateUtils.FORMAT_SHORT_DATE): string {\n return moment(value).format(format);\n }\n\n public getStringAsDate(value: string, format: string = DateUtils.FORMAT_SHORT_DATE): Date {\n return moment(value, format).toDate();\n }\n\n public getDateTimeAsString(value: Date, format: string = DateUtils.FORMAT_LONG_DATE): string {\n return moment(value).format(format);\n }\n\n public getTimeAsString(fecha: Date, format: string = DateUtils.FORMAT_SHORT_TIME): string {\n return moment(fecha).format(format);\n }\n\n public stringToDate(fString: string): Date {\n return moment(fString).toDate();\n }\n\n public stringShortToDate(fString: string): Date {\n return moment(fString, \"DD/MM/YYYY\").toDate();\n }\n\n public stringToTime(tString: string): Date {\n return moment(tString, \"HH:mm\").toDate();\n }\n\n public getTimeFromDateString(fecha: string): string {\n return moment(fecha).format(DateUtils.FORMAT_SHORT_TIME);\n }\n\n public getWithDaysOffset(offset: number = 0): string {\n return moment().add(offset, \"days\").format(DateUtils.FORMAT_SHORT_DATE);\n }\n\n public getFirstDayOfCurrentMonth(): string {\n return moment().startOf(\"month\").format(DateUtils.FORMAT_SHORT_DATE);\n }\n\n public getLastDayOfCurrentMonth(): string {\n return moment().endOf(\"month\").format(DateUtils.FORMAT_SHORT_DATE);\n }\n\n public fechaInicioDespuesIgualFechaFin(fechaInicio: string, fechaFin: string): boolean {\n if (fechaInicio && fechaFin) {\n return this.stringShortToDate(fechaInicio) > this.stringShortToDate(fechaFin);\n }\n return false;\n }\n\n public horaInicioDespuesHoraFin(horaInicio: string, horaFin: string): boolean {\n if (horaInicio && horaFin) {\n return this.stringToTime(horaInicio) > this.stringToTime(horaFin);\n }\n return false;\n }\n\n public fechaEnRango(fecha: string, fechaInicio: string, fechaFin: string): boolean {\n if (fecha) {\n let fechaDate = this.stringShortToDate(fecha);\n let output = !(\n (fechaInicio && fechaDate < this.stringShortToDate(fechaInicio)) ||\n (fechaFin && fechaDate > this.stringShortToDate(fechaFin))\n );\n return output;\n }\n return false;\n }\n\n public addOpcionVacia(lista: any[], texto?: string) {\n let nLista = lista.slice();\n nLista.unshift(new Domain(null, texto ? texto : \"\"));\n return nLista;\n }\n\n public getOptionText(list: Domain[], id: number): string {\n for (let d of list) {\n if (+d.value == id) {\n return d.label;\n }\n }\n return \"-\";\n }\n}\n","import { Injectable, Injector, Signal, inject } from \"@angular/core\";\nimport { toSignal } from \"@angular/core/rxjs-interop\";\nimport { of } from \"rxjs\";\nimport { TranslateService } from \"./translate.service\";\nimport { mergeMap } from \"rxjs/operators\";\n\n@Injectable({ providedIn: \"root\" })\nexport class DomainService {\n protected translateService = inject(TranslateService);\n\n\n getTranslatedDomain(domain: Map<string, []>, injector: Injector): Signal<any> {\n return toSignal(\n this.translateService.langChanged$.pipe(\n mergeMap((lang) => {\n return domain && domain[lang] ? of(domain[lang]) : of([]);\n })\n ),\n { injector: injector }\n );\n }\n}","import { HttpResponse } from \"@angular/common/http\";\n\n// Devuelve el filename especificado en el content-disposition de una response\nexport function getFileNameFromResponse(response: HttpResponse<Blob>) {\n let filename = \"\";\n const contentDisposition = response.headers.get(\"Content-Disposition\");\n if (contentDisposition) {\n const parts: string[] = contentDisposition.split(\";\");\n\n parts\n .filter((value) => value.trim().toLowerCase().startsWith(\"filename\"))\n .forEach((value) => {\n const subparts = value.split(\"=\");\n filename = replaceAll(subparts[1].trim(), '\"', \"\");\n });\n }\n\n return filename;\n}\n\n// Remplaza todas las ocurrencias de una cadena por otra\nexport function replaceAll(target: string, find: string, replace: string): string {\n return target.replace(new RegExp(find, \"g\"), replace);\n}","import { Injectable, inject } from \"@angular/core\";\nimport { HttpClient } from \"@angular/common/http\";\nimport { Observable } from \"rxjs\";\nimport { map, takeUntil, tap } from \"rxjs/operators\";\nimport { saveAs } from \"file-saver\";\n\nimport { GeneralUtils } from \"./general-utils.service\";\nimport { getFileNameFromResponse } from \"../utils/general-utils\";\n\n@Injectable({\n providedIn: \"root\"\n})\nexport class DownloadService {\n private http = inject(HttpClient);\n private generalUtils = inject(GeneralUtils);\n\n\n // Devuelve un objeto que contiene el nombre del fichero y su contenido como Blob\n // Determinamos el nombre del fichero a partir del header \"Content-Disposition\" de la response\n download(fileUrl: string, fileName?: string): Observable<{ blob: Blob; filename: string }> {\n console.log(\"download fichero '\" + fileUrl + \"'\");\n\n this.generalUtils.startLoading();\n\n return this.http.get(fileUrl, { observe: \"response\", responseType: \"blob\" }).pipe(\n map((res) => {\n return {\n blob: new Blob([res.body], { type: res.headers.get(\"Content-Type\") }),\n filename: fileName ? fileName : getFileNameFromResponse(res) //obtenemos el nombre de la response\n };\n }),\n tap(\n () => this.generalUtils.stopLoading(),\n () => this.generalUtils.stopLoading()\n )\n );\n }\n\n // Descarga el fichero de la URL y lo guarda en el equipo local.\n downloadAndSave(destroy$: Observable<boolean>, fileUrl: string, fileName?: string): void {\n this.download(fileUrl, fileName)\n .pipe(takeUntil(destroy$))\n .subscribe(\n (file) => {\n this.generalUtils.startLoading();\n saveAs(file.blob, file.filename);\n this.generalUtils.stopLoading();\n },\n () => this.generalUtils.stopLoading()\n );\n }\n}\n","import { Injectable } from \"@angular/core\";\n\n/**\n * FocusService almacena el campo/elemento que actualmente tiene el foco del usuario.\n */\n@Injectable({ providedIn: \"root\" })\nexport class FocusService {\n // El campo/elemento con el foco\n private focused: string = \"none\";\n\n focus(id: string): void {\n //console.log(`focus on ${id}`);\n this.focused = id;\n }\n\n clear(): void {\n //console.log('clear focus');\n this.focused = undefined;\n }\n\n getFocusedElement(): string {\n //console.log(`returning focus on ${this.focused}`);\n return this.focused;\n }\n}\n","import { Injector } from \"@angular/core\";\n\n/**\n * Este servicio almacena de forma estática el objeto Injector de angular para que pueda utilizarse desde cualquier\n * punto de la app\n */\nexport class LocatorService {\n static injector: Injector = null;\n}\n","import { Injectable } from \"@angular/core\";\n\n@Injectable({ providedIn: \"root\" })\nexport class SessionSharedService {\n private data: Map<string, any>;\n\n //TO-DO. Guardarlo en un localstorage por un tiempo limitado por si hacen F5\n constructor() {\n this.data = new Map<string, any>();\n }\n\n get(key: string): any {\n // console.log('shared get', key);\n return this.data.get(key);\n }\n\n set(key: string, value: any): void {\n // console.log('shared set', key, value);\n this.data.set(key, value);\n }\n}\n","import { Injectable } from \"@angular/core\";\nimport { Subject } from \"rxjs\";\n\n@Injectable({ providedIn: \"root\" })\nexport class TableViewService {\n private observableExportSource = new Subject<Boolean>();\n public observableExport;\n\n constructor() {\n this.observableExport = this.observableExportSource.asObservable();\n }\n\n sendExportMessage() {\n this.observableExportSource.next(true);\n }\n}\n","import { Injectable } from \"@angular/core\";\nimport { Observable, ReplaySubject } from \"rxjs\";\n\n@Injectable({ providedIn: \"root\" })\nexport class ToolbarService {\n //private observableToolbarSource = new BehaviorSubject<any>(null);\n private observableToolbarSource = new ReplaySubject<any>(10);\n public observableToolbar: Observable<any>;\n\n constructor() {\n console.log(\"ToolbarService creado\");\n //el toolbar al suscribirse recibirá eiempre los últimos n mensajes (toolbar) enviados. Es para protegernos y garantizar que cuando un toolbar\n //se susbscribe después de que el componente padre envíe su toolbar, entonces si se cuelan delante más toolbars, al menos lo reciba\n //OJO!. Juntar share() con ReplaySubject o publishReplay hace que no se comporte como se esperaba\n this.observableToolbar = this.observableToolbarSource.asObservable(); //.share();//.publishReplay(3).refCount();\n }\n\n updateToolbar(componentId: string, toolbar: any) {\n toolbar.componentId = componentId;\n this.observableToolbarSource.next(toolbar);\n }\n}\n","import { Injectable, inject } from \"@angular/core\";\n\nimport { HttpUtilsService } from \"./http-utils.service\";\n\n@Injectable({ providedIn: \"root\" })\nexport class UploadService {\n private apiUrl = inject<string>(\"API_URL\" as any);\n\n private UPLOAD_URL: string;\n private DOWNLOAD_URL: string;\n\n constructor() {\n this.UPLOAD_URL = `${this.apiUrl}ficheros/upload`;\n this.DOWNLOAD_URL = `${this.apiUrl}ficheros/download/`;\n console.log(\"UploadService creado con API_URL:\", this.apiUrl);\n }\n\n /**\n * servicio para hacer upload de ficheros al servidor\n * @param url indica la URL a la que queremos subir el fichero. Si es null se utilizará el endpoint por defecto definido en UPLOAD_URL\n * @param files fichero(s) a subir al servidor\n * @param params parámetros adicionales en forma de Map para hacer la subida\n */\n upload(url: string, files: Array<File>, params: { [key: string]: string }) {\n return new Promise((resolve, reject) => {\n let formData: any = new FormData();\n\n for (let key in params) {\n formData.append(key, params[key]);\n }\n\n let xhr = new XMLHttpRequest();\n for (let i = 0; i < files.length; i++) {\n formData.append(\"file\", files[i], files[i].name);\n }\n xhr.onreadystatechange = () => {\n if (xhr.readyState === 4) {\n if (xhr.status === 200) {\n resolve(xhr.response);\n } else {\n reject(xhr.response); //TODO: No llega a los componentes\n }\n }\n };\n xhr.open(\"POST\", url == null ? this.UPLOAD_URL : url, true);\n if (HttpUtilsService.LOGIN_AUTHENTICATION && HttpUtilsService.LOGIN_AUTHENTICATION != \"\") {\n xhr.setRequestHeader(\"Authorization\", \"Basic \" + HttpUtilsService.LOGIN_AUTHENTICATION);\n }\n xhr.send(formData);\n });\n }\n\n getUrlDownloadFile(id: number) {\n return `${this.DOWNLOAD_URL}${id}`;\n }\n}\n","import { Injectable, signal } from \"@angular/core\";\n\n@Injectable()\nexport class ClearItemsService {\n private clearItems = signal<boolean>(false);\n constructor() {}\n\n setClearItems(value: boolean) {\n this.clearItems.set(value);\n }\n\n getClearItems() {\n return this.clearItems;\n }\n}\n","import { Subject } from \"rxjs\";\nimport { DestroyRef, Directive, inject } from \"@angular/core\";\n\nimport { AyudaService } from \"../../sharedlibrary/services\";\n\n@Directive()\nexport abstract class BaseComponent {\n destroy$: Subject<boolean> = new Subject<boolean>();\n destroyRef = inject(DestroyRef);\n ayudaService = inject(AyudaService);\n\n ngOnDestroy() {\n this.destroy$.next(true);\n this.destroy$.unsubscribe();\n }\n\n getHelpSectionUrl(section: string) {\n return this.ayudaService.baseHelpUrl$() + '#/' + section + \"/\";\n }\n}\n","/**\n * Actualiza el elemento de la lista en caso de que exista en dicha lista, o lo inserta en caso de que no exista\n * @param element objeto que queremos actualizar o insertar en la lista\n * @param list lista de elementos\n */\nimport moment from \"moment\";\n\nexport function upsertElement(element, list) {\n let find: boolean = false;\n if (!list) list = [];\n list.forEach((item, index) => {\n if (item.id == element.id) {\n list[index] = element;\n find = true;\n }\n });\n if (!find) {\n list.push(element);\n }\n return list;\n}\n\n/**\n * Elimina el elemento de la lista\n * @param element elemento a eliminar de la lista\n * @param list lista de elementos\n */\nexport function deleteElement(element, list) {\n return list.filter((item) => item.id != element.id);\n}\n\n/** Permite copiar las propiedades de un objeto exceptuando las propiedades indicadas en keys.\n * Util para obtener los valores del filtro exceptuando las propiedades pagina y resultados.\n * La copia se realiza mediante Object.assign por lo que hay que tenerlo en cuenta por temas de propiedades anidadas\n * @param obj objeto que queremos copiar\n * @param keys array de propiedades que no queremos copiar\n */\nexport function reject(obj, keys) {\n return Object.keys(obj)\n .filter((k) => !keys.includes(k))\n .map((k) => Object.assign({}, { [k]: obj[k] }))\n .reduce((res, o) => Object.assign(res, o), {});\n}\n\n/** Permite seleccionar las propiedades de un objeto indicadas en keys, excluyendo el resto.\n * La copia se realiza mediante Object.assign por lo que hay que tenerlo en cuenta por temas de propiedades anidadas\n * @param obj objeto que queremos copiar\n * @param keys array de propiedades que queremos copiar\n */\nexport function choose(obj, keys) {\n return Object.keys(obj)\n .filter((k) => keys.includes(k))\n .map((k) => Object.assign({}, { [k]: obj[k] }))\n .reduce((res, o) => Object.assign(res, o), {});\n}\n\n/**\n * Equivalente al Object.assign() pero realiza una copia profunda: tanto los atributos como los objetos anidados\n * Modifica el objeto target asignando los objetos pasados como parámetros\n * ejemplo: assign({a: \"a\", b: {id: \"b\"}, c: \"c\"},\n * {a: \"a2\", b: {id: \"b2\"}, d: \"d\"}) =>\n * {a: \"a2\", b: {id: \"b2\"}, c: \"c\", d: \"d\"}\n *\n * @param target objeto destino\n * @param sources objetos cuyas propiedades se leen para mergear en el objeto destino\n * @see https://stackoverflow.com/questions/27936772/how-to-deep-merge-instead-of-shallow-merge\n */\nexport function assign(target, ...sources) {\n const isObject = (obj) => obj && typeof obj === \"object\" && !Array.isArray(obj);\n\n if (!sources.length) return target;\n const source = sources.shift();\n\n if (isObject(target) && isObject(source)) {\n for (const key in source) {\n if (isObject(source[key])) {\n if (source[key] instanceof Date) {\n target[key] = moment(source[key]).format(\"yy-MM-DDTHH:mm:ss\");\n } else {\n if (!target[key]) target[key] = {};\n assign(target[key], source[key]);\n }\n } else {\n target[key] = source[key];\n }\n }\n }\n\n return assign(target, ...sources);\n}\n\nexport function objectoToQueryParameters(params: {}): string {\n return Object.keys(params)\n .filter((key) => !!params[key])\n .map((key) => key + \"=\" + params[key])\n .join(\"&\");\n}\n\nexport function objectToQueryParametersWithZeroValues(params: {}): string {\n return Object.keys(params)\n .filter((key) => params[key] !== null && params[key] !== undefined && params[key] !== \"\")\n .map((key) => key + \"=\" + params[key])\n .join(\"&\");\n}\n\nexport function removeNull<T>(obj: T | any) {\n Object.keys(obj).forEach((key) => {\n if (obj[key] && typeof obj[key] === \"object\") removeNull(obj[key]);\n else if (obj[key] == null) delete obj[key];\n });\n return obj;\n}\n/*\nVersión immutable:\n\nexport function assign(...objects) {\n const isObject = obj => obj && typeof obj === 'object';\n\n return objects.reduce((prev, obj) => {\n Object.keys(obj).forEach(key => {\n const pVal = prev[key];\n const oVal = obj[key];\n\n if (Array.isArray(pVal) && Array.isArray(oVal)) {\n prev[key] = pVal.concat(...oVal);\n }\n else if (isObject(pVal) && isObject(oVal)) {\n prev[key] = assign(pVal, oVal);\n }\n else {\n prev[key] = oVal;\n }\n });\n\n return prev;\n }, {});\n}*/\n","import { reject } from \"./utils\";\n\nexport const BASE_RESULTADOS_PAGE: number = 20;\n\n/**\n * Clase base que contiene lo mínimo necesario para almacenar un filtro de búsqueda.\n */\nexport class BaseFilter {\n public static RESULTADOS_PAGE: number = BASE_RESULTADOS_PAGE;\n public static PAGE: number = 1;\n\n /*\n * Ejemplo de uso de columnasOrdenacion:\n\n public static newObject(): CustomFilter {\n let filter = new PlantillaFilter(null, CustomFilter.getDefaultOrder(), BaseFilter.RESULTADOS_PAGE, BaseFilter.PAGE);\n return filter;\n }\n\n public static getDefaultOrder(): string[] {\n return ['-nombre', 'id'];\n }\n */\n public columnasOrdenacion: string[];\n\n constructor(public resultados: number, public pagina: number) {}\n\n public reset() {\n this.resultados = BaseFilter.RESULTADOS_PAGE;\n this.pagina = BaseFilter.PAGE;\n }\n\n /**\n * Permite obtener los valores del filtro exceptuando las propiedades pagina y resultados. Útil para inicializar el FormGroup\n * con los valores del filtro sin traernos estas propiedades que no interesan que estén en el FormGroup\n */\n public formValues(): { [x: string]: any } {\n let values = reject(this, [\"pagina\", \"resultados\"]);\n return values;\n }\n\n public allValues(): { [x: string]: any } {\n return reject(this, []);\n }\n}\n\nexport const emptyFilter = new BaseFilter(BaseFilter.RESULTADOS_PAGE, 1);\n\n//Funciones genéricas para poder filtrar elementos en el store con ngrxdata\n\nlet initPagination: number;\nlet endPagination: number;\n\n/**\n * Permite filtrar las entidades especificadas por parámetro pasándolas por la función innerFilterFn\n * además de la función paginationFn.\n * Parametros:\n * pattern: corresponde con el filtro especificado por el usuario pero representado en JSON\n * filter: corresponde con el objeto Filter que es una imagen de pattern pero como Objeto. En este objeto\n * tendremos la información de qué pagina y cuantos resultados tenemos que mostrar además de los campos\n * seleccionados por el usuario\n * innerFilterFn: función que dado una entidad y un filter, determina si la entidad casa o no con el filter\n * Return:\n * Esta función retorna una lista de entidades que casan con el filtro. En el caso de que patter sea null,\n * se retornan tal cual todas las entities\n */\nexport function baseFilterFn<T>(entities: T[], pattern: string, filter: BaseFilter, innerFilterFn: any) {\n console.log(\"pattern recibido\", pattern);\n if (pattern) {\n console.log(\"filtramos entidades con este filter\", filter);\n initPagination = (filter.pagina - 1) * filter.resultados;\n endPagination = initPagination + filter.resultados;\n console.log(`pagination init ${initPagination} end ${endPagination}`);\n return entities.filter(innerFilterFn).filter(paginationFn);\n } else {\n return entities;\n }\n}\n\n/** Función de paginación. Se determina si index, que es la posición actual del elemento a analizar de las entidades,\n * está entre initPagination (>=) y endPagination (< exclusivo).\n * initpagination y endPagination son variables globales en esta clase\n */\n/**TODO: Hay un problema con la paginación si el usuario salta por ejemplo de la página 1 a la página 3 sin pasar por la 2.\n * En ese caso, en el store tendremos 40 elementos cargados pero los 20 últimos al ser de la página 3 no entrarán en esta\n * función porque sus índices dentro del array de elementos no están entre la posición 40 y 60 si no entre la posición\n * 20 y 40. De momento no se me ha ocurrido una forma de solucionarlo y tampoco sé si tiene sentido que un usuario no avance\n * de página en página. Una posible solución es que si un usuario salta a una página remota pero en el store no tenemos\n * cargados los elementos de páginas anteriores, entonces el rango de carga a enviar al servidor debería ser más amplio\n * para cargar los elementos anteriores y que los índices cuadren. Así, si el usuario salta de la página 1 a la 3, entonces\n * al servidor le debemos pedir que nos cargue también la 2 junto a la 3 por lo que al servidor en el fondo debemos darle un rango\n * de elementos a cargar y no solo el número de página a cargar.\n * */\nfunction paginationFn(element, index, array) {\n // let init = filter.page * filter.results;\n // let end = init + filter.results;\n // console.log(`init ${init} end ${end} index ${index} entra ${index >= init && index < end}`);\n return index >= initPagination && index < endPagination;\n}\n","export enum FormType {\n Insert,\n Update,\n Select\n}\nexport enum PageStatus {\n Init,\n Searching,\n FinishSearch,\n Error,\n ReadOnly,\n Reset,\n EmptyResult,\n MoreResults = -1\n}\n\nexport const entityDefaultDispatcherOptions: any = {\n optimisticAdd: false,\n optimisticSaveEntities: false,\n optimisticUpsert: false,\n optimisticUpdate: false, //para cambiar la forma en que se guarda y actualiza la UI. True -> actualizo el store, la UI sin esperar respuesta del servidor\n optimisticDelete: false\n};\n\nexport const TYPE_LIST: string = \"list\";\nexport const TYPE_SCROLL: string = \"scroll\";\nexport const TYPE_FORM: string = \"form\";\nexport const TYPE_BLANK: string = \"blank\";","import { Observable } from \"rxjs\";\n\nimport { BaseCRUDServiceInterface } from \"./base-interface.service\";\nimport { BaseFilter } from \"./base.filter\";\nimport { Item } from \"../../sharedlibrary/data/item\";\nimport { FormType } from \"../../sharedlibrary/global.constants\";\nimport { HttpUtilsService } from \"../../sharedlibrary/services/http-utils.service\";\nimport { BitMessageService } from \"../../sharedlibrary/services/message.service\";\n\n/**\n * Clase básica que implementa un CRUD.\n * Es recomendable que todos los servicios que implementan un CRUD extiendan esta clase\n * o implementen la interface BaseCRUDServiceInterface.\n */\nexport abstract class BaseCRUDService implements BaseCRUDServiceInterface {\n /** URL base del servicio CRUD. */\n protected baseUrl: string;\n\n constructor(protected bitMessageService: BitMessageService, protected http: HttpUtilsService) {}\n\n /** Inserta o modifica la información del elemento. */\n save<T>(object: Item, mode: FormType, params?: { [key: string]: string }): Observable<T> {\n if (mode == FormType.Insert) {\n let resolveUrl = this.resolveUrl(this.baseUrl, params);\n return this.http.getHttpPost<T>(resolveUrl, object);\n } else {\n let resolveUrl = this.resolveUrl(this.baseUrl + \"/\" + object.id, params);\n return this.http.getHttpPut<T>(resolveUrl, object);\n }\n }\n\n /** Inserta o modifica la información del elemento. */\n saveObject<T>(object: Item, params?: { [key: string]: string }): Observable<T> {\n return this.save<T>(object, object && object.id ? FormType.Update : FormType.Insert, params);\n }\n\n /** Elimina el elemento. */\n delete(id: Number, params?: { [key: string]: string }) {\n let resolveUrl = this.resolveUrl(this.baseUrl + \"/\" + id, params);\n return this.http.getHttpDelete(resolveUrl);\n }\n\n /** Elimina todos los elementos pasados por parámetro */\n deleteAll(items: number[], params?: { [key: string]: string }): Observable<any> {\n let resolveUrl = this.resolveUrl(this.baseUrl + \"/delete\", params);\n return this.http.getHttpPost(resolveUrl, items);\n }\n\n /** Recupera la información del elemento. */\n get<T>(id: Number, params?: { [key: string]: string }): Observable<T> {\n let resolveUrl = this.resolveUrl(this.baseUrl + \"/\" + id, params);\n return this.http.getHttpGet<T>(resolveUrl);\n }\n\n /** Recupera todos los elementos. */\n getAll<T>(params?: { [key: string]: string }): Observable<T> {\n let resolveUrl = this.resolveUrl(this.baseUrl, params);\n return this.http.getHttpGet<T>(resolveUrl);\n }\n\n /** Recupera la lista (opcionalmente, filtrada y paginada) de elementos. */\n getAllByFilter<T>(filter: BaseFilter, params?: { [key: string]: string }): Observable<T> {\n let resolveUrl = this.resolveUrl(this.baseUrl + \"/filter\", params);\n return this.http.getHttpPost<T>(resolveUrl, filter);\n }\n\n /** Recupera el número total de la lista (filtrada) de elementos. */\n countAllByFilter(filter: BaseFilter, params?: { [key: string]: string }): Observable<number> {\n let resolveUrl = this.resolveUrl(this.baseUrl + \"/count\", params);\n return this.http.getHttpPost<number>(resolveUrl, filter);\n }\n\n /**\n * Construye la URL final en base a la plantilla y la colección de parámetros.\n * Si la clave de un parámetro forma parte de la URL, la reemplaza por su valor.\n * Si la clave de un parámetro no forma parte de la URL, se añadirá como parte del queryString.\n */\n resolveUrl(url: string, params: { [key: string]: string }): string {\n let queryParams: Array<string> = [];\n let newUrl = url;\n if (params) {\n for (let key in params)\n if (newUrl.indexOf(key) >= 0) {\n newUrl = newUrl.replace(key, params[key]);\n } else {\n queryParams.push(`${key}=${params[key]}`);\n }\n }\n if (queryParams.length > 0) {\n if (newUrl.indexOf(\"?\") < 0) {\n newUrl += \"?\" + queryParams.join(\"&\");\n } else {\n newUrl += \"&\" + queryParams.join(\"&\");\n }\n }\n return newUrl;\n }\n}\n","import { Action } from \"@ngrx/store\";\n\nexport type FactoryCreateAction = (type: string, payload?: any) => Action;\nexport type FactoryCreateNewObject<T> = (data?: any) => T;\nexport type FactoryCreateNewFilter<F> = () => F;\nexport type FactoryCreateNewFilterFromFilter<F> = (F) => F;\nexport type FactoryCopyObject<T> = (T) => T;\nexport type FactoryCreateToolbar<T> = (T) => any;\nexport type TranslatedMessage = { code: string; context?: string; params?: {} };\nexport type ErrorValidateForm = { prefixes: string[]; errorMessage: TranslatedMessage };\nexport type ToolbarButtonType = {\n visible?: boolean;\n enable?: boolean;\n otherAction?: boolean;\n action?: string;\n label?: string;\n estilo?: string;\n displayAsButton?: boolean;\n};\nexport type ToolbarType = Map<string, ToolbarButtonType> | {};\n\nexport enum GENERIC_TYPE {\n GO_FORM = \"[Models] Go Form\",\n GO_LIST = \"[Models] Go List\",\n LOAD_ITEMS = \"[Models] Load Items\",\n SAVE_ITEM = \"[Models] Save item\",\n INSERT_ITEM = \"[Models] Insert item\",\n UPDATE_ITEM = \"[Models] Update item\",\n DELETE_ITEM = \"[Models] Delete Item\",\n DELETE_ITEMS = \"[Models] Delete Items\",\n SHOW_ITEM_FOR_UPDATE = \"[Models] Show item for update\",\n SHOW_ITEM_FOR_INSERT = \"[Models] Show item for insert\",\n ITEMS_SELECTED = \"[Models] items selected\",\n CLOSE_ITEM = \"[Models] Close item\",\n NEW_PAGE_SIZE = \"[Modles] New Page Size\",\n PAGE_CHANGE = \"[Modles] Page Change\",\n RESET_FILTER = \"[Modles] Reset Filter\"\n}\n","import { FormType } from \"../../sharedlibrary/global.constants\";\nimport { ToolbarType, ToolbarButtonType } from \"./types\";\n\n/**\n * Construye la típica toolbar para listados con los botones: print, export y new. El botón new se construirá si\n * el parámetro readOnly es false\n * @param readOnly boolean para indicar si estamos en una pantalla readOnly donde no queremos que el botón new se cree\n * @param enable boolean para indicar si queremos que los botones print y export estén habilitados\n * @returns un objeto de tipo ToolbarType\n */\nexport function makeToolbarList(readOnly: boolean, enable: boolean): ToolbarType {\n let toolbar = {\n print: buildButtonToolbar(true, enable),\n export: buildButtonToolbar(true, enable)\n };\n if (!readOnly) {\n toolbar[\"new\"] = buildButtonToolbar(true, true, null, null, \"fa fa-database\");\n }\n return toolbar;\n}\n\nexport function getInitToolbar(): ToolbarType {\n return buildDefaultToolbarForm(FormType.Insert, true, false);\n}\n\nexport function getToolbarObjectLoadedDefault(): ToolbarType {\n return buildDefaultToolbarForm(FormType.Update, true, false);\n}\n\n/**\n * Construye la típica toolbar en función del tipo de formulario:\n * FormType.Select: botón de print visible y habilitado\n * FormType.Insert: botónes:\n * - save visible y habilitado en función de saveEnable.\n * - delete y print no visibles ni habilitados\n * FormType.Update: botones:\n * - save visible si soloLectura es false, habilitado si saveEnable es true,\n * - delete y print visibles y habilitados\n * @param formType enum FormType que nos indicará si el form es para insert, update o select\n * @param saveEnable boolean para indicar si queremos que el botón save esté habilitado\n * @param soloLectura boolean para indicar si estamos en un form de solo lectura. En caso de que sea afirmativo la pantalla de update\n * no mostrará el botón save\n * @returns un objeto de tipo ToolbarType\n */\nexport function buildDefaultToolbarForm(formType: FormType, saveEnable: boolean = true, soloLectura: boolean = false): ToolbarType {\n switch (formType) {\n case FormType.Select:\n return { print: buildButtonToolbar(true, true) } as ToolbarType;\n case FormType.Insert:\n return {\n save: buildButtonToolbar(true, saveEnable),\n delete: buildButtonToolbar(false, false),\n print: buildButtonToolbar(false, false)\n } as ToolbarType;\n case FormType.Update:\n return {\n save: buildButtonToolbar(!soloLectura, saveEnable),\n delete: buildButtonToolbar(true, true),\n print: buildButtonToolbar(true, true)\n } as ToolbarType;\n default:\n return {};\n }\n}\n\n/**\n * Construye la típica toolbar en función del tipo de formulario:\n * FormType.Select: botón de print visible y habilitado\n * FormType.Insert: botónes:\n * - save visible y habilitado en función de saveEnable.\n * - delete y print no visibles ni habilitados\n * FormType.Update: botones:\n * - save visible, habilitado si saveEnable es true,\n * - delete y print visibles y habilitados\n * @param formType enum FormType que nos indicará si el form es para insert, update o select\n * @param saveEnable boolean para indicar si queremos que el botón save esté habilitado\n * @returns un objeto de tipo ToolbarType\n */\nexport function makeToolbarForm(formType: FormType, saveEnable: boolean): ToolbarType {\n return buildDefaultToolbarForm(formType, saveEnable);\n}\n\n/**\n * Añade un nuevo button a la toolbar especificada\n * @param toolbar objeto de tipo ToolbarType\n * @param buttonName string con el nombre del botón dentro de la toolbar\n * @param button objeto de tipo ToolbarOptionType\n * @returns un objeto de tipo ToolbarType con la nueva opción añadida\n */\nexport function addButtonToToolbar(toolbar: ToolbarType, buttonName: string, button: ToolbarButtonType): ToolbarType {\n let newToolbar: ToolbarType = { ...toolbar };\n newToolbar[buttonName] = button;\n return newToolbar;\n}\n\n/**\n * Construye un objeto de tipo ToolbarButtonType\n * @param visible boolean para indicar si queremos que el botón esté visible\n * @param enable boolean para indicar si queremos que el botón esté habilitado\n * @param otherAction boolean para indicar si queremos que el botón se de tipo otras opciones\n * @param action string con el nombre de la action cuando se pulse el botón\n * @param label string con la etiqueta usada para buscar en el fichero de traducciones\n * @param estilo string con el estilo a aplicar\n * @param displayAsButton boolean para indicar si la acción (siendo otherAction) se fuerza para mostrar como botón (true)\n * @returns un objeto de tipo ToolbarButtonType\n */\nexport function buildButtonToolbar(\n visible: boolean,\n enable: boolean,\n otherAction?: boolean,\n action?: string,\n label?: string,\n estilo?: string,\n displayAsButton?: boolean\n): ToolbarButtonType {\n let optionToolbar = { visible, enable } as ToolbarButtonType;\n if (otherAction) optionToolbar[\"otherAction\"] = otherAction;\n if (action) optionToolbar[\"action\"] = action;\n if (label) optionToolbar[\"label\"] = label;\n if (estilo) optionToolbar[\"estilo\"] = estilo;\n if (displayAsButton) optionToolbar[\"displayAsButton\"] = displayAsButton;\n return optionToolbar;\n}\n\nexport function makeToolbarChildList(enableDelete: boolean) {\n return {\n new: { enable: true, visible: true },\n delete: { enable: enableDelete, visible: enableDelete }\n };\n}\n","import { Component, OnInit, ChangeDetectionStrategy, input, inject } from \"@angular/core\";\nimport { Router } from \"@angular/router\";\n\n/**\n * Componenente que muestra la miga de pan en función de los datos de entrada. Estos datos corresponden con\n * un array de objetos que tendrán tres campos: label, url y params. El label debe ser obligatorio y corresponde con la\n * información en pantalla a mostrar. La url y params son opcionales y correposnden con la dirección a la que el usuario podrá ir\n * si pulsa en ella.\n * Ejemplos: [\n * {label: 'Desenvolupament', url: 'developer/exceptions'},\n * {label: 'Log'},\n * {label: 'Usuaris', url: 'mantenimiento/users', params: {query: 'true'}}\n * ]\n **/\n\n@Component({\n selector: \"bit-breadcrumb\",\n changeDetection: ChangeDetectionStrategy.OnPush,\n template: `\n <ul class=\"breadcrumb\">\n @for (path of bc(); track path; let i = $index) {\n <li [class.active]=\"i == bc().length - 1\">\n @if (i < bc().length - 1 && path.url) {\n <a class=\"breadcrumb-item\" (click)=\"goAddress(path)\" href=\"#\">{{ \"breadcrumb.\" + path.label | transloco }}</a>\n }\n @if (i == bc().length - 1 || !path.url) {\n <span class=\"breadcrumb-item active\">{{ \"breadcrumb.\" + path.label | transloco }}</span>\n }\n </li>\n }\n </ul>\n `\n //styleUrls: [\"bit-breadcrumb.component.css\"]\n ,\n standalone: false\n})\nexport class BitBreadCrumbComponent implements OnInit {\n protected router = inject(Router);\n\n readonly bc = input<any[]>([], { alias: \"breadcrumb\" });\n\n /** Comprobamos si los datos de entrada no están definidos para inicializarlos en blanco */\n ngOnInit(): void {\n const bc = this.bc();\n if (bc.length == 0) bc.push({ label: \" \" });\n }\n\n /** Vamos a la URL que contenga el path */\n goAddress(path: any) {\n if (path.params) {\n this.router.navigate([path.url, path.params]);\n } else {\n this.router.navigate([path.url]);\n }\n return false; //para evitar que navegue al href=\"#\"\n }\n}\n","import { Component, input, inject } from \"@angular/core\";\nimport { UntypedFormControl } from \"@angular/forms\";\n\nimport { TranslateService, CustomValidators, FocusService } from \"../../services\";\nimport { Observable } from \"rxjs\";\nimport { TranslatedMessage } from \"../../../base/models/types\";\n\n@Component({\n selector: \"control-messages\",\n template: `\n @if (isError) {\n <div>\n <span class=\"mensaje-error-input\">{{ errorMessage$ | async }}</span>\n </div>\n }\n `\n //styleUrls: [\"bit-control-messages.component.css\"]\n ,\n standalone: false\n})\nexport class BitControlMessages {\n private focusService = inject(FocusService);\n protected translateService = inject(TranslateService);\n\n readonly control = input<UntypedFormControl>();\n readonly field = input<string>();\n errorMessage$: Observable<string>;\n\n get isError(): boolean {\n if (this.focusService.getFocusedElement() !== this.field()) {\n for (let propertyName in this.control().errors) {\n // If control has a error\n const control = this.control();\n if (control.errors.hasOwnProperty(propertyName) && control.touched) {\n // Return the appropriate error message from the Validation Service\n let translatedError: TranslatedMessage = CustomValidators.getValidatorErrorMessage(propertyName);\n this.errorMessage$ = this.translateService.selectTranslate(translatedError.code, translatedError.params, translatedError.context);\n return true;\n }\n }\n }\n return false;\n }\n}\n","import { TranslatedMessage } from \"../../base/models\";\n\nexport class BitMessage {\n static WIDTH: number = 600;\n static INFO: string = \"info\";\n static WARN: string = \"warn\";\n static ERROR: string = \"error\";\n\n constructor(\n public title: string,\n public message: string,\n public width: number = BitMessage.WIDTH,\n public height: number = 0,\n public modal: boolean = false,\n public severity: string = \"info\", //info, warn, error\n public masInfo?: string,\n public json: boolean = false\n ) {}\n\n public static newMessage(title, message, severity?): BitMessage {\n return new BitMessage(title, message, BitMessage.WIDTH, 0, false, severity);\n }\n}\n","import { Component, OnDestroy, OnInit, inject } from \"@angular/core\";\nimport { takeUntil } from \"rxjs/operators\";\n\nimport { BaseComponent } from \"../../../base/components/base.component\";\nimport { BitMessage } from \"../../data/bitmessage\";\nimport { Error } from \"../../data/error\";\nimport { BitMessageService } from \"../../services/message.service\";\nimport { TranslateService } from \"../../services\";\n\n@Component({\n selector: \"bit-dialog\",\n template: `\n @if (!isSeverityInfo) {\n <p-dialog\n class=\"scroll-y scroll-{{ message.height }}\"\n header=\"{{ message.title }}\"\n [(visible)]=\"display\"\n [style]=\"{ width: '50vw' }\"\n [breakpoints]=\"{ '1199px': '65vw', '767px': '80vw', '575px': '95vw' }\"\n [modal]=\"message.modal\"\n showEffect=\"fade\"\n position=\"top\"\n >\n <p class=\"mensaje-dialogo\">{{ message.message }}</p>\n @if (message.masInfo) {\n <span>\n <pre>{{ message.masInfo }}</pre>\n </span>\n }\n <footer>\n <div class=\"ui-dialog-buttonpane ui-widget-content ui-helper-clearfix\"> </div>\n </footer>\n </p-dialog>\n }\n @if (isSeverityInfo && !message.json) {\n <p-dialog\n class=\"scroll-y scroll-{{ message.height }}\"\n header=\"{{ message.title }}\"\n [style]=\"{ width: '50vw' }\"\n [breakpoints]=\"{ '1199px': '65vw', '767px': '80vw', '575px': '95vw' }\"\n [(visible)]=\"display\"\n [modal]=\"message.modal\"\n showEffect=\"fade\"\n position=\"top\"\n >\n <p class=\"mensaje-dialogo\" [innerHTML]=\"message.message\"></p>\n </p-dialog>\n }\n @if (message.json) {\n <p-dialog\n class=\"scroll-y scroll-{{ message.height }}\"\n header=\"{{ message.title }}\"\n [(visible)]=\"display\"\n [style]=\"{ width: '50vw' }\"\n [breakpoints]=\"{ '1199px': '65vw', '767px': '80vw', '575px': '95vw' }\"\n [baseZIndex]=\"10000\"\n [modal]=\"message.modal\"\n showEffect=\"fade\"\n position=\"top\"\n >\n <pre [innerHTML]=\"syntaxHighlight(message.message)\"></pre>\n </p-dialog>\n }\n `\n //styleUrls: [\"bit-dialog.component.css\"]\n ,\n standalone: false\n})\nexport class BitDialogComponent extends BaseComponent implements OnInit, OnDestroy {\n protected bitMessageService = inject(BitMessageService);\n protected translateService = inject(TranslateService);\n\n public static MENSAJE_VOID: string = \"No hi ha dades per mostrar\";\n display: boolean = false;\n message: BitMessage;\n height: number = 200;\n errorAccessUrl: string;\n errorAccess: string;\n\n constructor() {\n super();\n const bitMessageService = this.bitMessageService;\n\n //console.log(\"DialogComponent contructor(\" + bitMessageService + \")\");\n //Nos suscribimos a la espera de que envíen mensajes\n bitMessageService.observableMessages.pipe(takeUntil(this.destroy$)).subscribe((message) => {\n this.showMessage(message);\n });\n bitMessageService.observableErrors.pipe(takeUntil(this.destroy$)).subscribe((message) => {\n this.showError(message);\n });\n }\n\n ngOnInit() {\n //inicializamos el objeto para que no pete el template\n this.message = new BitMessage(\"\", \"\");\n this.getMessagesI18N();\n }\n\n getMessagesI18N() {\n this.translateService\n .selectTranslate(\"messages.erroraccessurl\", {}, \"bitnglibrary\")\n .pipe(takeUntil(this.destroy$))\n .subscribe((v) => (this.errorAccessUrl = v));\n this.translateService\n .selectTranslate(\"messages.erroraccess\", {}, \"bitnglibrary\")\n .pipe(takeUntil(this.destroy$))\n .subscribe((v) => (this.errorAccess = v));\n }\n\n showMessage(message: BitMessage) {\n this.message = message;\n if (this.message.json) {\n try {\n let json = eval(\"(\" + this.message.message + \")\"); //{\"w\":1, \"b\":'foo', \"c\":[false,'false',null, 'null', {\"d\":{\"e\":1.3e5,\"f\":'2.3e5'}}]};\n this.message.message = JSON.stringify(json, undefined, 2);\n } catch (error) {\n console.warn(\"No pudo convertirse a JSON la información del log\");\n }\n }\n message.height === 0 ? (this.message.height = this.calculateHeightNumber()) : undefined;\n this.display = true;\n }\n\n showError(error: Error) {\n let messageError = error.url ? `${this.errorAccessUrl} ${error.url}` : `${this.errorAccess}`;\n this.showMessage(new BitMessage(messageError, error.errorText, 1024, 600, false, BitMessage.ERROR, error.trazaError));\n }\n\n get isSeverityInfo() {\n return this.message && this.message.severity === \"info\";\n }\n\n /**\n * Calcula la altura del diálogo en función de la información a mostrar.\n * TODO: Contar las líneas reales del mensaje en vez de la longitud\n */\n private calculateHeightNumber(): number {\n let msj = this.message.message;\n if (msj) {\n if (msj.length < 100) {\n return 100;\n } else if (msj.length < 200) {\n return 200;\n } else if (msj.length < 300) {\n return 300;\n } else if (msj.length < 400) {\n return 400;\n } else {\n return 500;\n }\n } else {\n this.message.message = BitDialogComponent.MENSAJE_VOID;\n return 100;\n }\n }\n\n syntaxHighlight(json) {\n if (typeof json != \"string\") {\n json = JSON.stringify(json, undefined, 2);\n }\n json = json.replace(/&/g, \"&\").replace(/</g, \"<\").replace(/>/g, \">\");\n return json.replace(/(\"(\\\\u[a-zA-Z0-9]{4}|\\\\[^u]|[^\\\\\"])*\"(\\s*:)?|\\b(true|false|null)\\b|-?\\d+(?:\\.\\d*)?(?:[eE][+\\-]?\\d+)?)/g, function (match) {\n var cls = \"number\";\n if (/^\"/.test(match)) {\n if (/:$/.test(match)) {\n cls = \"key\";\n } else {\n cls = \"string\";\n }\n } else if (/true|false/.test(match)) {\n cls = \"boolean\";\n } else if (/null/.test(match)) {\n cls = \"null\";\n }\n return '<span class=\"' + cls + '\">' + match + \"</span>\";\n });\n }\n}\n","import { Pipe, PipeTransform } from \"@angular/core\";\n\nconst PADDING = \"000000\";\n\n@Pipe({\n name: \"cantidadMoneda\",\n standalone: false\n})\nexport class CantidadMonedaPipe implements PipeTransform {\n private readonly DECIMAL_SEPARATOR: string;\n private readonly DECIMAL_SEPARATOR_INPUT: string;\n private readonly THOUSANDS_SEPARATOR: string;\n\n constructor() {\n this.DECIMAL_SEPARATOR = \",\";\n this.DECIMAL_SEPARATOR_INPUT = \".\";\n this.THOUSANDS_SEPARATOR = \".\";\n }\n\n transform(value: number | string, fractionSize: number = 2): string {\n if (value === null || value === undefined) {\n return \"\";\n }\n\n let svalue = String(value);\n\n const regexp = new RegExp('^[1-9]+[0-9]*([.]([0-9]+)?)?$');\n const test = regexp.test(svalue);\n if (!test) {\n return svalue;\n }\n\n let [integer, fraction = \"\"] = (value || \"\").toString().split(this.DECIMAL_SEPARATOR_INPUT);\n\n fraction = fractionSize > 0 ? this.DECIMAL_SEPARATOR + (fraction + PADDING).substring(0, fractionSize) : \"\";\n\n integer = integer.replace(/\\B(?=(\\d{3})+(?!\\d))/g, this.THOUSANDS_SEPARATOR);\n\n return integer + fraction;\n }\n\n parse(value: string, previous: string, event: any, fractionSize: number = 2): string {\n if (value === null || value === undefined) {\n return \"\";\n }\n\n let svalue = String(value);\n\n const regexp = new RegExp('^[1-9]+[0-9]*([.][0-9]{3})*(,([0-9]+)?)?$');\n const test = regexp.test(svalue);\n if (!test) {\n return svalue;\n }\n\n let [integer, fraction = \"\"] = (value || \"\").split(this.DECIMAL_SEPARATOR);\n\n integer = integer.replace(/\\./g, \"\");\n\n fraction =\n parseInt(fraction, 10) > 0 && fractionSize > 0\n ? this.DECIMAL_SEPARATOR_INPUT + (fraction + PADDING).substring(0, fractionSize)\n : \"\";\n\n return integer + fraction;\n }\n}\n","import { ChangeDetectionStrategy, Component, computed, input, model, output } from '@angular/core';\n\n@Component({\n selector: 'bit-pajigator',\n templateUrl: './bit-pajigator.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: false\n})\n\nexport class BitPajigatorComponent {\n paginator = input<boolean>(true);\n page = model<number>(0);\n totalItems = input<number>(0);\n rowsPerPageOptions = input<number[]>([20]);\n itemsPerPage = model<number>(this.rowsPerPageOptions()[0]);\n maxCurrentItems = input<number>(0);\n onPageChange = output<number>();\n onPageSizeChange = output<number>();\n\n maxPages = computed(() => {\n let maxPages;\n if (!this.itemsPerPage() || !this.totalItems()) {\n maxPages = 0;\n } else {\n maxPages = Math.ceil(this.totalItems() / this.itemsPerPage());\n }\n console.log(\"totalItems:\" + this.totalItems() + \"maxPages:\" + maxPages + \" itemsPerPage:\" + this.itemsPerPage());\n return maxPages;\n });\n showPageInfo = computed(() => this.totalItems() > 0);\n showLeftNavigationButton = computed(() => this.totalItems() > 0 && this.page() != 1);\n showRightNavigationButton = computed(() => this.totalItems() > 0 && this.page() < this.maxPages());\n\n changeItemsPerpage(items: number): void {\n if (!items) return; // nos protegemos de que prime nos envíe un valor no definido\n if (items != this.itemsPerPage()) {\n this.itemsPerPage.set(items);\n this.onPageSizeChange.emit(items);\n }\n }\n\n changePage(direction: number): void {\n this.page.update((current) => (current += direction));\n this.onPageChange.emit(this.page());\n }\n}\n","<div [class]=\"paginator() ? 'pajigator-outer-container' : 'pajigator-outer-container-single-result'\">\n <div class=\"pajigator-container\">\n <div class=\"pajigator-results-container\">\n <span class=\"pajigator-results-label\">{{\"bitnglibrary.footer.results\" | transloco}}</span>\n @if (paginator()) { \n @if (maxCurrentItems() >= totalItems()) {\n <span>{{totalItems() | cantidadMoneda:0}}</span>\n }\n @if (maxCurrentItems() < totalItems()) {\n <span>{{maxCurrentItems()}} / {{totalItems()}}</span>\n }\n } @else {\n <span>{{totalItems() | cantidadMoneda:0}}</span>\n }\n </div>\n @if (paginator()) { \n <div class=\"pajigator-page-size\">\n <div class=\"pajigator-page-size-label\">{{ \"bitnglibrary.footer.itemsPerPage\" | transloco }}</div>\n <!-- appendTo=\"body\"--->\n <p-select appendTo=\"body\"\n [options]=\"rowsPerPageOptions()\"\n [ngModel]=\"itemsPerPage()\"\n (ngModelChange)=\"changeItemsPerpage($event)\" />\n </div>\n <div class=\"pajigator-range-actions\">\n @if (showPageInfo()) {\n <div class=\"pajigator-range-label\"> {{ \"bitnglibrary.footer.page\" | transloco }} {{page()}} de {{maxPages()}} </div>\n }\n <p-button (onClick)=\"changePage(-1)\" [disabled]=\"!showLeftNavigationButton()\" severity=\"primary\" label=\"<\" ariaLabel=\"Pàgina anterior\" />\n <p-button (onClick)=\"changePage(1)\" [disabled]=\"!showRightNavigationButton()\" severity=\"primary\" label=\">\" ariaLabel=\"Pàgina següent\" />\n </div>\n } \n </div>\n</div>","import { Component, ChangeDetectionStrategy, computed, inject, linkedSignal } from \"@angular/core\";\n\nimport { AyudaContextual } from \"../../data/ayudacontextual\";\nimport { AyudaService } from \"../../services/ayuda.service\";\n\n@Component({\n selector: \"bit-help\",\n changeDetection: ChangeDetectionStrategy.OnPush,\n template: `\n @if (mostrarAyuda()) {\n <div class=\"ventana-ayuda\">\n <div class=\"ayuda-header\">\n {{ ayuda().header }}\n <span class=\"fa fa-close\" (click)=\"hideAyuda()\"></span>\n </div>\n <div class=\"ayuda-body\">\n <p class=\"ayuda-subtitulo\" [innerHTML]=\"ayuda().title\"></p>\n <p [innerHTML]=\"ayuda().body\"></p>\n </div>\n </div>\n }\n `\n //styleUrls: [\"bit-help.component.css\"]\n ,\n standalone: false\n})\nexport class BitHelpComponent {\n protected ayudaService = inject(AyudaService);\n\n ayuda = linkedSignal<AyudaContextual, AyudaContextual>({\n source: this.ayudaService.mostrar,\n computation: (newAyuda, _) => {\n console.log(\"newAyuda\", newAyuda);\n return newAyuda;\n }\n });\n \n mostrarAyuda = computed(() => this.ayuda() != null);\n\n /** Oculta el modal con los avisos */\n hideAyuda() {\n this.ayuda.set(null);\n }\n\n}\n","import { ChangeDetectionStrategy, Component, computed, input, inject } from '@angular/core';\nimport { toSignal } from '@angular/core/rxjs-interop';\n\nimport { PageStatus, TYPE_BLANK, TYPE_FORM, TYPE_LIST, TYPE_SCROLL } from '../../global.constants';\nimport { TranslateService } from '../../services';\n\n@Component({\n selector: 'bit-footer-messages',\n changeDetection: ChangeDetectionStrategy.OnPush,\n templateUrl: 'bit-footer-messages.component.html',\n standalone: false\n})\n\nexport class BitFooterMessagesComponent {\n private translateService = inject(TranslateService);\n\n status = input<PageStatus>(PageStatus.Init); // Determina en qué estado está la página: PageStatus.Init, PageStatus.SEARCHING, PageStatus.FINISH_SEARCH\n maxCurrentItems = input<number>();\n totalItems = input<number>();\n typeFooter = input<string>(\"list\", { alias: \"type\" });\n\n isFooterList = computed(() => this.typeFooter() === TYPE_LIST);\n isFooterScroll = computed(() => this.typeFooter() === TYPE_SCROLL);\n isFooterForm = computed(() => this.typeFooter() === TYPE_FORM);\n /** Flag: la página está realizando la búsqueda. */\n searchInitiated = computed(\n () => this.status() === PageStatus.Init || this.status() == PageStatus.Reset || !this.status()\n );\n /** Flag: la página está realizando la búsqueda. */\n searching = computed(() => this.status() === PageStatus.Searching);\n /** Flag: la página ha finalizado la última búsqueda. */\n searchFinished = computed(() => this.status() === PageStatus.FinishSearch);\n /** Flag: la página está en modo solo lectura */\n readOnly = computed(() => this.status() == PageStatus.ReadOnly);\n /** Flag: la página ha finalizado con error */\n error = computed(() => this.status() == PageStatus.Error);\n /** Flag: encontrado resultado. */\n foundResult = computed(() => {\n return (\n this.searchFinished() &&\n ((this.isFooterList() && this.totalItems() > 0) ||\n this.isFooterForm() ||\n (this.isFooterScroll() && this.totalItems() <= this.maxCurrentItems()))\n );\n });\n /** Flag: hay más resultados (scroll). */\n moreResults = computed(() => {\n return this.searchFinished() && this.isFooterScroll() && this.totalItems() > this.maxCurrentItems();\n });\n /** Flag: no hay resultados. */\n emptyResult = computed(() => this.searchFinished() && this.totalItems() === 0);\n\n messages = computed(() => {\n let messagesMap = new Map<PageStatus, string>();\n if (this.isFooterList() || this.isFooterScroll()) {\n messagesMap.set(PageStatus.Init, \"bitnglibrary.footer.list.init\");\n messagesMap.set(PageStatus.Searching, \"bitnglibrary.footer.list.searching\");\n messagesMap.set(PageStatus.EmptyResult, \"bitnglibrary.footer.list.emptyresult\");\n messagesMap.set(PageStatus.FinishSearch, \"bitnglibrary.footer.list.finishsearch\");\n messagesMap.set(PageStatus.MoreResults, \"bitnglibrary.footer.list.moreresults\");\n } else if (this.isFooterForm()) {\n messagesMap.set(PageStatus.Init, \"bitnglibrary.footer.form.init\");\n messagesMap.set(PageStatus.Searching, \"bitnglibrary.footer.form.searching\");\n messagesMap.set(PageStatus.FinishSearch, \"bitnglibrary.footer.form.finishsearch\");\n messagesMap.set(PageStatus.ReadOnly, \"bitnglibrary.footer.list.readonly\");\n } else if (this.typeFooter() === TYPE_BLANK) {\n console.log(\"the footer is BLANK!\");\n }\n messagesMap.set(PageStatus.Error, \"bitnglibrary.footer.error\");\n return messagesMap;\n });\n\n initMessage = toSignal(this.translateService.selectTranslate(this.messages().get(PageStatus.Init)));\n searchingMessage = toSignal(this.translateService.selectTranslate(this.messages().get(PageStatus.Searching)));\n finishMessage = toSignal(this.translateService.selectTranslate(this.messages().get(PageStatus.FinishSearch)));\n moreResultsMessage = toSignal(this.translateService.selectTranslate(this.messages().get(PageStatus.MoreResults)));\n emptyMessage = toSignal(this.translateService.selectTranslate(this.messages().get(PageStatus.EmptyResult)));\n readOnlyMessage = toSignal(this.translateService.selectTranslate(this.messages().get(PageStatus.ReadOnly)));\n errorMessage = toSignal(this.translateService.selectTranslate(this.messages().get(PageStatus.Error)));\n\n getStyle = computed(() => {\n let type = this.error() ? \"error\" : \"info\";\n if (this.isFooterList()) {\n return `mensaje-list mensaje-${type}`;\n } else if (this.isFooterScroll()) {\n return `mensaje-scroll mensaje-${type}`;\n } else if (this.isFooterForm()) {\n return `mensaje-form mensaje-${type}`;\n }\n });\n\n message = computed(() => {\n if (this.searchInitiated()) return this.initMessage();\n if (this.searching()) return this.searchingMessage();\n if (this.readOnly()) return this.readOnlyMessage();\n if (this.foundResult()) return this.finishMessage();\n if (this.moreResults()) return this.moreResultsMessage();\n if (this.emptyResult()) return this.emptyMessage();\n if (this.error()) return this.errorMessage();\n return \"\";\n });\n}\n","<div>\n <div [class]=\"getStyle()\">\n <i class=\"fa fa-info\"></i>\n <span>{{message()}}</span>\n </div>\n\n <bit-help />\n</div>","import {\n ChangeDetectionStrategy,\n Component,\n computed,\n input,\n output,\n} from \"@angular/core\";\nimport { BaseFilter } from \"../../../base/shared/base.filter\";\nimport { PageStatus, TYPE_FORM, TYPE_LIST, TYPE_SCROLL } from \"../../global.constants\";\n\n/**\n * Componente que muestra un paginador en la sección footer.\n **/\n@Component({\n selector: \"bit-footer\",\n changeDetection: ChangeDetectionStrategy.OnPush,\n templateUrl: \"bit-footer.component.html\",\n standalone: false\n})\nexport class BitFooterComponent {\n totalItems = input<number>(); // Número total de elementos recuperados de la consulta\n filter = input<BaseFilter>(); // filtro de búsqieda\n status = input<PageStatus>(PageStatus.Init); // Determina en qué estado está la página: PageStatus.Init, PageStatus.SEARCHING, PageStatus.FINISH_SEARCH\n paginator = input<boolean>(false);\n mostrarAvisos = input<boolean>(true);\n fixed = input<boolean>(true); // Indicará si lo queremos fijo abajo en la página. Por defecto sí.\n typeFooter = input<string>(\"list\", { alias: \"type\" });\n visible = input<boolean>(true);\n onPageChange = output<number>(); //para notificar cambios en la página a mostrar\n onNewPageSize = output<number>(); //para notificar cambios en los elementos a mostrar por página\n baseItemsPerPage: number = BaseFilter.RESULTADOS_PAGE; // guardamos el número de resultados pre-configurados por página para mostrar la lista de x, x+10 y x+20\n\n page = computed(() => (this.filter() ? this.filter().pagina : 1));\n itemsPerPage = computed(() => (this.filter() ? this.filter().resultados : this.baseItemsPerPage));\n maxCurrentItems = computed(() => {\n let maxCurrentItems: number = this.filter()?.pagina * this.filter()?.resultados;\n if (maxCurrentItems > this.totalItems()) {\n maxCurrentItems = this.totalItems();\n }\n return maxCurrentItems;\n }); // número de elementos que mostramos en pantalla. Necesario para el modo scroll\n showPajigator = computed(() => this.typeFooter() === \"list\" && this.visible());\n showScroll = computed(() => this.typeFooter() === \"scroll\" && this.visible());\n getStyle = computed(() => {\n if ((this.fixed() && this.typeFooter() === TYPE_LIST) || this.typeFooter() === TYPE_SCROLL) {\n return \"footer navbar-fixed-bottom\";\n } else if (this.fixed && this.typeFooter() === TYPE_FORM) {\n return \"footer navbar-fixed-bottom-form\";\n } else {\n return \"footer\";\n }\n });\n\n pageChange(page: number): void {\n this.onPageChange.emit(page);\n }\n\n pageSizeChange(pageSize: number): void {\n this.onNewPageSize.emit(pageSize);\n }\n}\n","<footer [class]=\"getStyle()\">\n\n @if (showScroll()) {\n <div class=\"scroll-outer-container\">\n <div class=\"pajigator-container\">\n <label>{{\"bitnglibrary.footer.results\" | transloco}}</label>\n @if (maxCurrentItems() >= totalItems()) {\n <span>{{totalItems()}}</span>\n }\n @if (maxCurrentItems() < totalItems()) {\n <span>{{maxCurrentItems()}} / {{totalItems()}}</span>\n }\n </div>\n </div>\n }\n\n @if (showPajigator()) {\n <bit-pajigator [paginator]=\"paginator()\"\n [totalItems]=\"totalItems()\"\n [page]=\"page()\"\n [itemsPerPage]=\"itemsPerPage()\"\n [rowsPerPageOptions]=\"[baseItemsPerPage,baseItemsPerPage*2,baseItemsPerPage*4,baseItemsPerPage*10,baseItemsPerPage*50]\"\n [maxCurrentItems]=\"maxCurrentItems()\"\n (onPageChange)=\"pageChange($event)\"\n (onPageSizeChange)=\"pageSizeChange($event)\" />\n }\n\n @if (mostrarAvisos()) {\n <bit-footer-messages [type]=\"typeFooter()\"\n [status]=\"status()\"\n [maxCurrentItems]=\"maxCurrentItems()\"\n [totalItems]=\"totalItems()\" />\n }\n\n</footer>\n","import { Component, input, inject } from '@angular/core';\nimport { AyudaService } from '../../services';\n\n@Component({\n selector: \"bit-boton-ayuda\",\n template: `\n @if (boton()) {\n <p-button type=\"button\" (onClick)=\"mostrarAyuda()\" [size]=\"buttonSize()\" [ngClass]=\"'p-button-outlined p-button-secondary ' + extraClass()\">\n {{ \"bitnglibrary.help\" | transloco }} <span class=\"fa fa-life-ring\"></span>\n </p-button>\n }\n\n @if (!boton()) {\n <i [ngClass]=\"'btn-ayuda fa fa-question ' + extraClass()\" (click)=\"mostrarAyuda()\"></i>\n }\n `,\n standalone: false\n})\nexport class BitBotonAyudaComponent {\n private ayudaService = inject(AyudaService);\n\n readonly ayuda = input<string>(undefined);\n readonly boton = input<boolean>(false); // show a little [?] or a full button\n readonly extraClass = input<string>(\"\"); // extra CSS classes for HTML component\n readonly buttonSize = input<\"small\" | \"large\">(undefined);\n\n mostrarAyuda() {\n this.ayudaService.mostrarAyuda(this.ayuda());\n }\n}\n","import { ChangeDetectionStrategy, Component, computed, input, output, inject } from \"@angular/core\";\nimport { MenuItem } from \"primeng/api\";\nimport { TranslateService } from \"../../services\";\nimport { takeUntil } from \"rxjs/operators\";\nimport { BaseComponent } from \"../../../base/components\";\n\n/**\n * Componenente que muestra una barra de botones.\n */\n@Component({\n selector: \"bit-toolbar\",\n changeDetection: ChangeDetectionStrategy.OnPush,\n templateUrl: \"bit-toolbar.component.html\",\n standalone: false\n})\nexport class BitToolbarComponent extends BaseComponent {\n private translateService = inject(TranslateService);\n\n public static FILTER_BUTTON: string = \"filter\";\n public static PRINT_BUTTON: string = \"print\";\n public static EXPORT_BUTTON: string = \"export\";\n public static NEW_BUTTON: string = \"new\";\n public static SAVE_BUTTON: string = \"save\";\n public static DELETE_BUTTON: string = \"delete\";\n public static ADD_BUTTON: string = \"add\";\n public static HELP_BUTTON: string = \"help\";\n public mostrar: boolean = false;\n public translations: { [key: string]: string } = {};\n\n readonly toolbar = input<{ [key: string]: any }>({});\n readonly ayuda = input<string>(); // clave de la ayuda contextual que mostrar para su botón\n readonly femenino = input<boolean>(false); // género femenino (para los nombres de botones) o no\n readonly buttonSize = input<\"small\" | \"large\">(); // tamaño de los botones, por defecto normal\n readonly otherActionsDropdown = input<boolean>(false); // determina si todas las \"other actions\" se muestran en un desplegable o depende del atributo displayAsButton de cada una\n readonly onToolbarButtonPressed = output<string>();\n\n /** Devuelve si hay other actions que deben mostrarse en desplegable (solo cuando hay más de una). */\n itemsOtherActionsEnDesplegable = computed((): any[] => {\n const toolbar = this.toolbar() || {};\n const actions = this.getOtherActionsDropdownModel(toolbar);\n if (actions?.length > 1) return actions;\n else return [];\n });\n\n /** Devuelve si hay other actions que deben mostrarse como botón (incluye la de desplegable si hay solo una). */\n itemsOtherActionsEnBoton = computed((): any[] => {\n const toolbar = this.toolbar() || {};\n const actions = Object.values(toolbar).filter((item) => this.incluirOtherActionComoBoton(item));\n const actionsEnDesplegable = this.itemsOtherActionsEnDesplegable();\n // Si hay acciones en desplegable y solo es una, la incluimos también como botón\n if (actionsEnDesplegable?.length === 1) actions.push(actionsEnDesplegable[0]);\n return actions;\n });\n\n constructor() {\n super();\n\n this.translateService\n .selectTranslate(\"toolbar\", {}, \"bitnglibrary\", true)\n .pipe(takeUntil(this.destroy$))\n .subscribe((translations) => {\n this.translations = translations;\n });\n }\n\n enable(button: string): boolean {\n const toolbar = this.toolbar();\n return toolbar && toolbar[button] && toolbar[button].enable;\n }\n\n visible(button: string): boolean {\n const toolbar = this.toolbar();\n return toolbar && toolbar[button] && toolbar[button].visible;\n }\n\n label(button: string, defaultLabel: string): string {\n const toolbar = this.toolbar();\n return (toolbar && toolbar[button] && toolbar[button].label) || defaultLabel;\n }\n\n estilo(button: string, defaultValue: string): string {\n const toolbar = this.toolbar();\n return (toolbar && toolbar[button] && toolbar[button].estilo) || defaultValue || \"fa fa-balance-spinner\";\n }\n\n showFilter() {\n this.onToolbarButtonPressed.emit(BitToolbarComponent.FILTER_BUTTON);\n }\n\n print() {\n this.onToolbarButtonPressed.emit(BitToolbarComponent.PRINT_BUTTON);\n }\n\n exportData() {\n this.onToolbarButtonPressed.emit(BitToolbarComponent.EXPORT_BUTTON);\n }\n\n newElement() {\n this.onToolbarButtonPressed.emit(BitToolbarComponent.NEW_BUTTON);\n }\n\n add() {\n this.onToolbarButtonPressed.emit(BitToolbarComponent.ADD_BUTTON);\n }\n\n save() {\n this.onToolbarButtonPressed.emit(BitToolbarComponent.SAVE_BUTTON);\n }\n\n delete() {\n this.onToolbarButtonPressed.emit(BitToolbarComponent.DELETE_BUTTON);\n }\n\n otherAction(button: any) {\n this.onToolbarButtonPressed.emit(button.action);\n }\n\n /**\n * Recorremos el toolbar y devolvemos un array con las acciones que tienen que incluirse\n * transformadas a MenuItem, para poder mostrarlas en el desplegable de SplitButton.\n */\n getOtherActionsDropdownModel(toolbar: { [key: string]: any }): MenuItem[] {\n let actions: MenuItem[] = [];\n for (let key in toolbar) {\n if (this.incluirOtherActionEnDropdown(toolbar[key])) {\n let toolbarItem = toolbar[key]; // capture the current toolbar item\n actions.push({\n label: this.translations[toolbarItem.label],\n icon: toolbarItem.estilo,\n visible: toolbarItem.visible,\n command: () => {\n this.otherAction(toolbarItem);\n } // use the captured toolbar item\n });\n }\n }\n return actions;\n }\n\n /**\n * Indica si la acción debe incluirse en el desplegable de \"other actions\":\n * - Es una otherAction\n * - Es visible\n * - Todas se tienen que incluir en desplegable (this.otherActionsDropdown() es true) y esta acción tiene displayAsButton como \"no true\"\n */\n incluirOtherActionEnDropdown(toolbarItem: any): boolean {\n return toolbarItem.otherAction && toolbarItem.visible && this.otherActionsDropdown() && toolbarItem.displayAsButton !== true;\n }\n\n /**\n * Indica si la acción debe incluirse como botón \"other actions\":\n * - Es una otherAction\n * - Es visible\n * - No todas se tienen que incluir en desplegable (this.otherActionsDropdown() es false) o esta acción tiene displayAsButton como \"true\"\n */\n incluirOtherActionComoBoton(toolbarItem: any): boolean {\n return toolbarItem.otherAction && toolbarItem.visible && (!this.otherActionsDropdown() || toolbarItem.displayAsButton === true);\n }\n}\n","<div class=\"contenedor-toolbar\">\n\n <!-- acciones no estandar definidas dinámicamente o muy particulares que se deben incluir en un desplegable -->\n @if (itemsOtherActionsEnDesplegable().length > 1) {\n <p-splitbutton label=\"{{'bitnglibrary.toolbar.other-actions' | transloco}}\" [model]=\"itemsOtherActionsEnDesplegable()\" />\n }\n\n <!-- acciones no estandar definidas dinámicamente o muy particulares que se muestran una tras otra en línea -->\n @for (button of itemsOtherActionsEnBoton(); track button) {\n <p-button type=\"button\" [disabled]=\"!button.enable\" (onClick)=\"otherAction(button)\" [size]=\"buttonSize()\">{{\"bitnglibrary.toolbar.\"+button.label | transloco}} <span [class]=\"button.estilo?button.estilo:'pi pi-angle-right'\"></span></p-button>\n }\n\n <!-- acciones estandar -->\n @if (visible('new')) {\n <p-button type=\"button\" [disabled]=\"!enable('new')\" (onClick)=\"newElement()\" [size]=\"buttonSize()\" styleClass=\"p-button-danger\">{{(femenino() ? \"bitnglibrary.toolbar.new-female\": \"bitnglibrary.toolbar.new\") | transloco}} <span [class]=\"estilo('new', 'pi pi-plus')\"></span></p-button>\n }\n @if (visible('add')) {\n <p-button type=\"button\" [disabled]=\"!enable('add')\" (onClick)=\"add()\" [size]=\"buttonSize()\" styleClass=\"p-button-danger\">{{\"bitnglibrary.toolbar.add\" | transloco}} <span [class]=\"estilo('add', 'pi pi-plus')\"></span></p-button>\n }\n\n @if (visible('export')) {\n <p-button type=\"button\" [disabled]=\"!enable('export')\" (onClick)=\"exportData()\" [size]=\"buttonSize()\" styleClass=\"p-button-secondary\">{{\"bitnglibrary.toolbar.export\" | transloco}} <span [class]=\"estilo('export', 'pi pi-file')\"></span></p-button>\n }\n @if (visible('save')) {\n <p-button type=\"button\" [disabled]=\"!enable('save')\" (onClick)=\"save()\" [size]=\"buttonSize()\" styleClass=\"p-button-success\">{{\"bitnglibrary.toolbar.save\" | transloco}} <span [class]=\"estilo('save', 'pi pi-save')\"></span></p-button>\n }\n @if (visible('delete')) {\n <p-button type=\"button\" [disabled]=\"!enable('delete')\" (onClick)=\"delete()\" [size]=\"buttonSize()\" styleClass=\"p-button-danger\">{{\"bitnglibrary.toolbar.delete\" | transloco}} <span [class]=\"estilo('delete', 'pi pi-trash')\"></span></p-button>\n }\n @if (visible('print')) {\n <p-button type=\"button\" [disabled]=\"!enable('print')\" (onClick)=\"print()\" [size]=\"buttonSize()\" styleClass=\"p-button-secondary\">{{\"bitnglibrary.toolbar.print\" | transloco}} <span [class]=\"estilo('print', 'pi pi-print')\"></span></p-button>\n }\n @if (ayuda()) {\n <bit-boton-ayuda boton=\"true\" [ayuda]=\"ayuda()\" [buttonSize]=\"buttonSize()\" />\n }\n</div>\n","import { Component, ChangeDetectionStrategy, input, output } from \"@angular/core\";\n\n/**\n * Componente que muestra miga de pan y toolbar\n */\n@Component({\n selector: \"bit-header\",\n changeDetection: ChangeDetectionStrategy.OnPush,\n templateUrl: \"bit-header.component.html\",\n standalone: false\n})\nexport class BitHeaderComponent {\n readonly toolbar = input<any>({});\n readonly noToolbar = input<boolean>(false);\n readonly otherActionsDropdown = input<boolean>(false); // determina si las \"other actions\" deben mostrarse en línea o como un desplegable\n readonly breadcrumb = input<any[]>(undefined);\n readonly masacciones = input<any[]>(undefined);\n readonly colsBreadcrumb = input<number>(undefined);\n readonly femenino = input<boolean>(false); // género femenino (para los nombres de botones) o no\n readonly ayuda = input<string>(undefined); // clave de la ayuda contextual para la botonera\n\n readonly onToolbarButtonPressed = output<string>();\n\n /** Tenemos que capturar el evento y volver a subirlo, por diseño Angular2 no permite enviar un evento de un nieto a su abuelo, solo\n * de hijo a padre\n */\n onTBPressed(button) {\n this.onToolbarButtonPressed.emit(button);\n }\n}\n","<!-- <div class=\"grid mt-3 mb-3\">\n<div class=\"col-12 lg:col-4 sm:col-4 caja-breadcrumb\"> -->\n <!-- ruta de donde nos encontramos (miga de pan) -->\n <!-- <bit-breadcrumb *ngIf=\"breadcrumb\" [breadcrumb]=\"breadcrumb\"></bit-breadcrumb>\n</div>\n<div *ngIf=\"noToolbar === false\"\n class=\"col-12 lg:col-8 sm:col-8\"> -->\n <!-- botonera de acciones -->\n <!-- <bit-toolbar\n [toolbar]=\"toolbar\"\n [femenino]=\"femenino\"\n [otherActionsDropdown]=\"otherActionsDropdown\"\n [ayuda]=\"ayuda\"\n(onToolbarButtonPressed)=\"onTBPressed($event)\"></bit-toolbar>\n</div>\n</div> -->\n\n<div class=\"grid mt-3 mb-3\">\n <div class=\"col-12 caja-breadcrumb\" [ngClass]=\"[colsBreadcrumb() ? 'lg:col-' + colsBreadcrumb() : 'lg:col-4']\">\n <!-- ruta de donde nos encontramos (miga de pan) -->\n @if (breadcrumb()) {\n <bit-breadcrumb [breadcrumb]=\"breadcrumb()\" />\n }\n </div>\n @if (noToolbar() === false) {\n <div\n class=\"col-12\" [ngClass]=\"[colsBreadcrumb() ? 'lg:col-' + (12- colsBreadcrumb()) : 'lg:col-8']\">\n <!-- botonera de acciones -->\n <bit-toolbar [toolbar]=\"toolbar()\"\n [femenino]=\"femenino()\"\n [otherActionsDropdown]=\"otherActionsDropdown()\"\n [ayuda]=\"ayuda()\"\n (onToolbarButtonPressed)=\"onTBPressed($event)\" />\n </div>\n }\n</div>","import { Component, OnDestroy, computed, input, inject } from \"@angular/core\";\n\nimport { GeneralUtils } from \"../../services/general-utils.service\";\n\n@Component({\n selector: \"bit-loading\",\n template: `\n @if (loading()) {\n <div class=\"modal\">\n <div class=\"grid\">\n <div class=\"col-12 text-center\">\n <i class=\"pi pi-spin pi-spinner icono-loading\"></i>\n </div>\n </div>\n </div>\n }\n ` ,\n standalone: false\n})\nexport class BitLoadingComponent implements OnDestroy {\n private generalUtils = inject(GeneralUtils);\n readonly imageSource = input<string>(undefined, { alias: \"source\" });\n \n loading = computed(() => this.generalUtils.loading() > 0);\n\n constructor() {\n console.log(\"Constructor bitloading\");\n }\n\n ngOnDestroy() {\n this.generalUtils.loading.set(0);\n }\n}\n","import { Component, OnDestroy, OnInit, inject } from '@angular/core';\nimport { concatMap, filter, take, tap } from 'rxjs/operators';\nimport { combineLatest, of } from 'rxjs';\nimport { MessageService } from 'primeng/api';\n\nimport { BaseComponent } from '../../../base/components';\nimport { BitMessageService, TranslateService } from '../../services';\nimport { BitNotificationSeverityType } from '../../data';\n\n@Component({\n selector: \"bit-notification-toast\",\n template: ` <p-toast key=\"notification\" position=\"top-right\" /> `,\n standalone: false\n})\nexport class BitNotificationToastComponent extends BaseComponent implements OnInit, OnDestroy {\n protected bitMessageService = inject(BitMessageService);\n protected primeMessageService = inject(MessageService);\n protected translateService = inject(TranslateService);\n\n\n ngOnInit() {\n this.subscribeToNotifications();\n }\n\n //Nos suscribimos a la espera de que envíen notificaciones\n subscribeToNotifications() {\n this.bitMessageService.observableNotifications\n .pipe(\n tap((notification) => {\n //controlamos si nos llega vacío\n if (!notification) {\n this.hide();\n }\n }),\n filter((notification) => !!notification), //controlamos que no pasemos algo vacío\n concatMap(\n (notification) =>\n combineLatest([\n of(notification.severity),\n this.translateService.selectTranslate(notification.title.code, notification.title.params, notification.title.context),\n this.translateService.selectTranslate(notification.message.code, notification.message.params, notification.message.context),\n of(this.getLife(notification.life)) // Si no se especifica el tiempo, usamos el valor por defecto\n ]).pipe(take(1)) //prevenimos que si nos cambian de idioma, se vuelva a disparar la traducción y vuelva a aparecer el mensaje en el idioma elegido\n )\n )\n .subscribe(([severity, title, message, life]) => {\n this.showNotification(severity, title, message, life);\n });\n }\n\n showNotification(severity: BitNotificationSeverityType, title: string, message: string, life?: number) {\n this.primeMessageService.add({ key: \"notification\", severity: severity, summary: title, detail: message, life: this.getLife(life) });\n }\n\n private hide() {\n this.primeMessageService.clear();\n }\n\n private getLife(life?: number): number {\n return life ? life : DEFAULT_LIFE; // Si no se especifica el tiempo, usamos el valor por defecto\n }\n}\n\nconst DEFAULT_LIFE = 3000; // Tiempo por defecto en milisegundos para que se cierre la notificación\n","import { Component, input, OnDestroy, inject } from \"@angular/core\";\nimport { concatMap, filter, take, tap } from \"rxjs/operators\";\nimport { combineLatest, of, Observable, forkJoin } from \"rxjs\";\nimport { MessageService } from \"primeng/api\";\n\nimport { BaseComponent } from \"../../../base/components/base.component\";\nimport { BitMessageService, TranslateService } from \"../../services\";\nimport { ErrorValidateForm } from \"../../../base/models\";\n\n@Component({\n selector: \"bit-notification-error\",\n template: ` <p-toast /> `,\n standalone: false\n})\nexport class BitNotificationErrorComponent extends BaseComponent implements OnDestroy {\n protected bitMessageService = inject(BitMessageService);\n protected primeMessageService = inject(MessageService);\n protected translateService = inject(TranslateService);\n\n escape = input<boolean>(true);\n closable = input<boolean>(true);\n messages: any[] = [];\n\n ngOnInit() {\n console.log(\"BitNotificationErrorComponent ngOnInit\");\n this.subscribeToNotificationMessages();\n }\n\n //Nos suscribimos a la espera de que envíen notificaciones de error\n private subscribeToNotificationMessages() {\n this.bitMessageService.observableNotificationsErrors\n .pipe(\n tap((notificacionError) => {\n //controlamos si nos llega vacio\n if (!notificacionError) {\n this.hideErrors();\n }\n }),\n filter((notificacionError) => !!notificacionError), //controlamos que no pasemos algo vacío\n concatMap((notificationError) =>\n combineLatest([\n //de momento, title y message no se están mostrando en pantalla\n this.translateService.selectTranslate(notificationError.title.code, notificationError.title.params, notificationError.title.context),\n this.translateService.selectTranslate(notificationError.message.code, notificationError.message.params, notificationError.message.context),\n of(notificationError.context),\n of(notificationError.multipleErrors),\n of(notificationError.detail),\n of(notificationError.clearErrors),\n of(notificationError.prefixErrorsMap)\n ]).pipe(take(1))\n )\n )\n .subscribe(([title, message, context, multipleErrors, detail, clearErrors, prefixErrorsMap]) => {\n this.showNotificationError(title, message, context, multipleErrors, detail, clearErrors, prefixErrorsMap);\n });\n }\n\n /**\n * Muestra una notificación de error que puede ser o bien múltiple o simple\n * @param title\n * @param message\n * @param context\n * @param multipleErrors\n */\n showNotificationError(\n title: string,\n message: string,\n context: string,\n multipleErrors: ErrorValidateForm[],\n detail: string,\n clearErrors: boolean = true,\n prefixErrorsMap?: { [key: string]: string }\n ) {\n console.log(\"clearErrors\", clearErrors);\n if (clearErrors) {\n this.clearErrors();\n }\n console.log(`showNotificationError ${title} ${message}`);\n if (multipleErrors) {\n console.log(\"multiple errors\");\n //Para cada error a mostrar\n const observables = multipleErrors.map((error) =>\n combineLatest([\n this.getTranslatedPrefixes(error, context, prefixErrorsMap),\n this.translateService.selectTranslate(error.errorMessage.code, error.errorMessage.params, error.errorMessage.context)\n ]).pipe(take(1))\n );\n\n forkJoin(observables).subscribe((results) => {\n results.forEach(([prefixes, textError]) => {\n this.pushError(prefixes != null && prefixes.length > 0 ? prefixes.reduce((acc, v) => acc + \" > \" + v) : \"\", textError);\n });\n // Aquí sabes que han terminado todas las suscripciones\n this.showErrors();\n });\n } else {\n console.log(\"single error\");\n if (!detail) {\n this.pushError(title, message);\n } else {\n this.pushError(message, detail);\n }\n this.showErrors();\n }\n }\n\n /** Añade un mensaje de error a la lista general de errores que mostrará el componente usando Prime */\n private pushError(title: string, message: string) {\n console.log(`new error ${title} ${message}`);\n this.messages.push({\n severity: \"error\",\n summary: title,\n detail: message,\n sticky: true\n });\n }\n\n private showErrors() {\n console.log(\"showErrors\");\n this.primeMessageService.addAll(this.messages);\n }\n\n private clearErrors() {\n console.log(\"clearErrors\");\n this.messages = [];\n }\n\n private hideErrors() {\n console.log(\"hideErrors\");\n this.clearErrors();\n this.primeMessageService.clear();\n }\n\n /** Transforma un array de códigos a traducir en un array de observables para traducir cada código y combinado todo\n * con el operador combineLatest para recibir los valores traducidos en la misma secuencia que ocupan en el array\n */\n private getTranslatedPrefixes(error: ErrorValidateForm, context: string, prefixErrorsMap: { [key: string]: string }): Observable<string[]> {\n if (error.prefixes.length > 0) {\n let prefixErrors$: Observable<string>[] = error.prefixes.map((code) => {\n if (typeof code == \"number\") {\n //para arrays\n return of(code);\n } else {\n if (prefixErrorsMap && prefixErrorsMap[code]) {\n return of(prefixErrorsMap[code]);\n } else {\n return this.translateService.selectTranslate(code, undefined, context);\n }\n }\n });\n return combineLatest(prefixErrors$);\n } else {\n return of([]);\n }\n }\n}\n","import { Directive, ElementRef, HostListener, Renderer2, inject } from \"@angular/core\";\n\nimport { FocusService } from \"../services/focus.service\";\n\n@Directive({\n selector: \"input,select,textarea,bit-input,bit-select\" //TODO: no funciona bien con autoComplete. No se registra el focus\n ,\n standalone: false\n})\nexport class FocusRegisterDirective {\n private elRef = inject(ElementRef);\n private renderer = inject(Renderer2);\n private focusService = inject(FocusService);\n\n\n @HostListener(\"focus\") onFocus() {\n this.focusService.focus(this.elRef.nativeElement.id);\n }\n\n @HostListener(\"blur\") onBlur() {\n this.focusService.clear();\n }\n}\n","import { ChangeDetectionStrategy, Component, OnInit, input, output, viewChild, inject, computed, signal } from '@angular/core';\n\nimport { FileItem, FileUploader, ParsedResponseHeaders } from 'ng2-file-upload';\nimport { GeneralUtils } from '../../services';\n\n@Component({\n selector: \"bit-ng-upload\",\n templateUrl: \"bit-ng-upload.component.html\",\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: false\n})\nexport class BitNGUploadComponent implements OnInit {\n private generalUtils = inject(GeneralUtils);\n\n readonly uploader = input.required<FileUploader>();\n readonly hasDropZone = input<boolean>();\n readonly hasQueue = input<boolean>();\n readonly hasSingleUpload = input<boolean>();\n readonly hasMultipleUpload = input<boolean>();\n readonly deleteItemAfterUpload = input<boolean>();\n readonly canUpload = input<boolean>();\n readonly hasProgressBar = input<boolean>();\n readonly sizeDropZone = input<number>();\n readonly sizeQueue = input<number>();\n readonly inputAccept = input<string>(\"*\");\n\n readonly onSuccess = output<any>();\n readonly onError = output<any>();\n\n readonly fileInput = viewChild<any>(\"fileRef\");\n\n hasBaseDropZoneOver = signal<boolean>(false);\n\n ngOnInit(): void {\n this.uploader().onSuccessItem = (item: FileItem, response: string, status: number, headers: ParsedResponseHeaders) => {\n console.log(\"success upload file\");\n this.stopLoading();\n this.onSuccess.emit({ item, response, status, headers });\n if (this.deleteItemAfterUpload()) {\n item.remove();\n }\n };\n this.uploader().onErrorItem = (item: FileItem, response: string, status: number, headers: ParsedResponseHeaders) => {\n console.log(\"error upload file\");\n this.stopLoading();\n this.onError.emit({ item, response, status, headers });\n };\n this.uploader().onProgressItem = (item: FileItem, progress: any) => {\n console.log(progress);\n };\n this.hasBaseDropZoneOver.set(true);\n }\n\n /** Arrancará el spinner en el caso de que la barra de progreso esté desactivada*/\n startLoading() {\n if (!this.hasProgressBar()) {\n this.generalUtils.startLoading();\n }\n }\n\n /** Parará el spinner en el caso de que la barra de progreso esté desactivada*/\n stopLoading() {\n if (!this.hasProgressBar()) {\n this.generalUtils.stopLoading();\n }\n }\n\n /** Sube todos los ficheros en cola al servidor */\n uploadAll() {\n this.startLoading();\n this.uploader().uploadAll();\n }\n\n /** Elimina la cola de ficheros y des-selecciona el fichero que pudiera estar seleccionado en el single input file */\n removeQueue() {\n this.stopLoading();\n this.uploader().clearQueue();\n this.removeInputFile();\n }\n\n /** Cancela la subida de ficheros al servidor */\n cancelQueue() {\n this.stopLoading();\n this.uploader().cancelAll();\n }\n\n /** Sube un fichero al servidor de manera individual */\n uploadFile(item) {\n this.startLoading();\n item.upload();\n }\n\n /** Elimina de la cola un fichero en concreto y en el caso de que coincida con el seleccionado en el single input file, también\n * lo des-selecciona\n */\n removeFile(item) {\n this.stopLoading();\n const fileInput = this.fileInput();\n if (fileInput && fileInput.nativeElement.value.indexOf(item.file.name) != -1) {\n this.removeInputFile();\n }\n item.remove();\n }\n\n /** Cancela la subida de un fichero de manera individual */\n cancelFile(item) {\n this.stopLoading();\n item.cancel();\n }\n\n /** Des-selecciona el fichero seleccionado en el input file */\n removeInputFile() {\n const fileInput = this.fileInput();\n if (fileInput) fileInput.nativeElement.value = \"\";\n }\n\n /** Evento que se dispara cuando arrastran un fichero a la zona de drag&drop */\n public fileOverBase(e: any): void {\n this.hasBaseDropZoneOver.set(e);\n }\n}\n","<div class=\"grid\">\n <div class=\"col-12\">\n @if (hasDropZone()) {\n <div\n ng2FileDrop\n [ngClass]=\"{'nv-file-over': hasBaseDropZoneOver()}\"\n (fileOver)=\"fileOverBase($event)\"\n [uploader]=\"uploader()\"\n class=\"well my-drop-zone\">\n <div class=\"contenedor-upload\">\n <i class=\"fa fa-file documento\"></i>\n <div>\n <span>{{ \"bitnglibrary.upload.dropfiles\" | transloco }}</span>\n <div class=\"grid\">\n <div class=\"col-12\">\n @if (hasMultipleUpload()) {\n <label class=\"btn-upload\">\n <input autocomplete=\"upload\" type=\"file\" ng2FileSelect [uploader]=\"uploader()\" multiple [accept]=\"inputAccept()\" />\n <i class=\"fa fa-upload\"></i>{{'bitnglibrary.upload.multiple' | transloco}}\n </label>\n }\n @if (hasSingleUpload()) {\n <label class=\"btn-upload\">\n <input autocomplete=\"upload\" #fileRef type=\"file\" ng2FileSelect [uploader]=\"uploader()\" [accept]=\"inputAccept()\" />\n <i class=\"fa fa-upload\"></i>{{'bitnglibrary.upload.simple' | transloco}}\n </label>\n }\n </div>\n </div>\n </div>\n </div>\n </div>\n }\n </div>\n</div>\n<div class=\"grid\">\n @if (hasQueue()) {\n <div class=\"col-12\">\n <p>{{\"bitnglibrary.upload.uploadfiles\" | transloco}}: {{ uploader()?.queue?.length }}</p>\n <p-table [value]=\"uploader()?.queue\">\n <ng-template pTemplate=\"header\">\n <tr>\n <th width=\"50%\">{{\"bitnglibrary.upload.filename\" | transloco}}</th>\n @if (uploader().options.isHTML5) {\n <th>{{\"bitnglibrary.upload.filesize\" | transloco}}</th>\n }\n @if (uploader().options.isHTML5 && hasProgressBar()) {\n <th>{{\"bitnglibrary.upload.progress\" | transloco}}</th>\n }\n @if (canUpload()) {\n <th>Estat</th>\n }\n <th>{{\"bitnglibrary.upload.actions\" | transloco}}</th>\n </tr>\n </ng-template>\n <ng-template pTemplate=\"body\" let-item>\n <tr>\n <td><strong>{{ item?.file?.name }}</strong></td>\n @if (uploader()?.options?.isHTML5) {\n <td nowrap>{{ item?.file?.size/1024 | number:'.2' }} KB</td>\n }\n @if (uploader().options.isHTML5 && hasProgressBar()) {\n <td>\n <div class=\"progress\" style=\"margin-bottom: 0;\">\n <div class=\"progress-bar\" role=\"progressbar\" [ngStyle]=\"{ 'width': item.progress + '%' }\"></div>\n </div>\n </td>\n }\n @if (canUpload()) {\n <td class=\"p-text-center\">\n @if (item.isSuccess) {\n <span><i class=\"fa fa-check\"></i></span>\n }\n @if (item.isCancel) {\n <span><i class=\"fa fa-ban\"></i></span>\n }\n @if (item.isError) {\n <span><i class=\"fa fa-times\"></i></span>\n }\n </td>\n }\n <td nowrap>\n @if (canUpload()) {\n <p-button icon=\"fa fa-upload\" title=\"{{'bitnglibrary.upload.upload' | transloco}}\" styleClass=\"p-button-success\"\n (onClick)=\"uploadFile(item)\" [disabled]=\"item.isReady || item.isUploading || item.isSuccess\" />\n }\n @if (canUpload()) {\n <p-button icon=\"fa fa-ban\" title=\"{{'bitnglibrary.upload.cancelupload' | transloco}}\" styleClass=\"p-button-warning\"\n (onClick)=\"cancelFile(item)\" [disabled]=\"!item.isUploading\" />\n }\n <p-button icon=\"fa fa-trash\" title=\"{{'bitnglibrary.upload.removefromqueue' | transloco}}\" styleClass=\"p-button-danger\"\n (onClick)=\"removeFile(item)\" />\n </td>\n </tr>\n </ng-template>\n </p-table>\n @if (hasProgressBar()) {\n <div class=\"cola-progreso\">\n <span>{{\"bitnglibrary.upload.progressqueue\" | transloco}}<span>{{(uploader()?.progress?.toString() == 'NaN'? (\"bitnglibrary.upload.finishupload\"|transloco): uploader()?.progress + ' %')}}</span></span>\n <div class=\"progress\">\n <div class=\"progress-bar\" role=\"progressbar\" [ngStyle]=\"{ 'width': (uploader()?.progress?.toString() == 'NaN'?'0':uploader()?.progress) + '%' }\"></div>\n </div>\n </div>\n }\n <div>\n\n @if (canUpload()) {\n <p-button icon=\"fa fa-upload\" title=\"{{'bitnglibrary.upload.uploadall' | transloco}}\" styleClass=\"p-button-success\"\n (onClick)=\"uploadAll()\" [disabled]=\"!(uploader()?.getNotUploadedItems()?.length)\" />\n }\n @if (canUpload()) {\n <p-button icon=\"fa fa-ban\" title=\"{{'bitnglibrary.upload.cancelall' | transloco}}\" styleClass=\"p-button-warning\"\n (onClick)=\"cancelQueue()\" [disabled]=\"!(uploader()?.isUploading)\" />\n }\n <p-button icon=\"fa fa-trash\" title=\"{{'bitnglibrary.upload.removeall' | transloco}}\" styleClass=\"p-button-danger\"\n (onClick)=\"removeQueue()\" [disabled]=\"!(uploader()?.queue?.length)\" />\n </div>\n </div>\n }\n</div>\n","import { Component, computed, input } from \"@angular/core\";\n\n\ninterface AuthUser {\n id: number;\n nombreCompleto: string;\n login: string;\n}\n\n/**\n * Componente general que muestra controles de sesión de usuario.\n *\n * Informa del login actualmente en sesión\n */\n@Component({\n selector: \"bit-user-controls\",\n templateUrl: \"./bit-user-controls.component.html\"\n ,\n standalone: false\n})\nexport class BitUserControlsComponent {\n readonly usuario = input.required<AuthUser>();\n userJSON: string;\n\n json = computed(() => JSON.stringify(this.usuario(), null, 4));\n}\n","@if (usuario()) {\n <span class=\"userControls\"><span class=\"fa fa-user\" title=\"{{ json() }}\"></span> {{ usuario().nombreCompleto }} ({{usuario().login}}) </span>\n}","import { Component, input } from \"@angular/core\";\n\n/**\n * Componenente que muestra un paginador en la sección footer.\n **/\n\n@Component({\n selector: \"bit-column-boolean\",\n template: `\n @if (data()) {\n <span class=\"ui-cell-data\">\n {{ data()[field()] ? textTrue() : textFalse() }}\n </span>\n }\n `,\n standalone: false\n})\nexport class BitColumnBooleanComponent {\n readonly data = input<any>(undefined); // objeto del que extraer la propiedad\n readonly field = input<string>(undefined); // propiedad booleana que procesar\n readonly textTrue = input<string>(\"Sí\");\n readonly textFalse = input<string>(\"No\");\n\n constructor() {}\n}\n","import { Component, OnChanges, computed, input, signal } from \"@angular/core\";\n\nimport { Domain } from \"../../data/domain\";\n\n@Component({\n selector: \"bit-domain-value\",\n template: `\n <span>{{ translatedValue() }}</span>\n `,\n standalone: false\n})\nexport class BitDomainValueComponent { \n readonly value = input<string>();\n readonly emptyText = input<string>(\"\");\n readonly data = input<Domain[]>();\n \n translatedValue = computed(() => {\n // buscar traducción para el valor en el dominio\n const data = this.data();\n let domainMatch = data && data.find(obj => obj.value == this.value());\n\n const value = this.value();\n if (domainMatch) {\n return domainMatch.label;\n } else if (value) {\n return String(`??${value}??`);\n } else {\n return this.emptyText() ?? \"Carregant...\";\n }\n });\n}\n","import { Directive, input, computed, output, ElementRef, inject } from \"@angular/core\";\nimport { FormControl } from \"@angular/forms\";\n\nimport { BaseComponent } from \"../../../base/components/base.component\";\n\n/**\n * Clase general que todos los componentes personalizados deben extender. Contiene toda la lógica común para trabajar con\n * componentes personalizados\n */\n@Directive()\nexport abstract class BitGeneralComponent extends BaseComponent {\n readonly control = input<FormControl>(undefined, { alias: \"formControl\" });\n readonly nombre = input<any>();\n readonly nombreDirectiva = input<any>();\n readonly label = input<string>();\n readonly estilo = input<string>();\n readonly tooltipTexto = input<string>();\n readonly tooltipPosicion = input<string>();\n readonly ayuda = input<string>(); // clave de la ayuda contextual\n readonly placeholder = input<string>(\"\");\n readonly readOnly = input<boolean>(false);\n readonly hideLabel = input<boolean>(false); // forzar que no se reserve espacio para el nombre del campo\n readonly forceObligatorio = input<boolean>(false);\n readonly testid = input<string>();\n readonly log = input<boolean>(false);\n readonly onChange = output<any>();\n readonly onTouch = output<any>();\n readonly onBlur = output<any>();\n readonly onFocus = output<any>();\n readonly elementRef = inject(ElementRef); \n\n dataTestId = computed(() => {\n const testid = this.testid();\n return testid ? testid : this.nombre();\n }); \n\n get obligatorio(): boolean {\n let control = this.control();\n return this.forceObligatorio() || (control && control.errors && control.errors[\"required\"]);\n }\n\n showAyuda() {\n this.ayudaService.mostrarAyuda(this.ayuda());\n }\n}\n","import { Directive, signal } from \"@angular/core\";\n\nimport { BitGeneralComponent } from \"./bit-general.component\";\n\n/** Clase customizada para componentes personalizados que requieren implementar la interface ControlValueAccessor.\n * Tipicamente para aquellos componentes personalizados que trabajan sobre otros componentes no estándars HTML como\n * pueden ser los componentes de prime como switch, autocomplete, calendar, select, etc.\n */\n@Directive()\nexport abstract class BitCustomComponent extends BitGeneralComponent {\n\n isDisabled = signal<boolean>(false); \n\n // nos permite decirle a Angular que nuestro componente ha modificado su valor\n _onChange = (_: any) => { }\n // nos permite decirle a Angular que nuestro componente ha sido tacado\n _onTouch = () => { }\n\n setDisabledState(isDisabled: boolean): void {\n this.isDisabled.set(isDisabled);\n }\n\n /** Se activa cuando Angular nos informa de que debemos actualizar la vista. Cada componente hijo deberá ver\n * si requiere o no implementar este método */\n abstract writeValue(value: any);\n\n _onBlur(event = {}) {\n this.log() && console.log(\"_onBlur forComponent:\"+this.nombre());\n this.onBlur.emit({});\n this.touchComponent();\n }\n\n _onFocus() {\n this.log() && console.log(\"_onFocus forComponent:\"+this.nombre());\n this.onFocus.emit({});\n }\n\n changeComponentValue(value: any) {\n this.log() && console.log(\"changeComponentValue forComponent:\"+this.nombre()+ \" and value:\"+value);\n this._onChange(value);\n this.onChange.emit(value);\n }\n\n touchComponent() {\n this.log() && console.log(\"touchComponent forComponent:\"+this.nombre());\n this._onTouch();\n this.onTouch.emit({});\n }\n\n registerOnChange(fn: any) {\n this._onChange = fn;\n }\n\n registerOnTouched(fn: any) {\n this._onTouch = fn;\n }\n}\n","import { Component, forwardRef } from \"@angular/core\";\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from \"@angular/forms\";\n\nimport { BitCustomComponent } from \"../bit-custom.component\";\n\n\n@Component({\n selector: \"bit-text\",\n templateUrl: \"bit-text.component.html\",\n providers: [{\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => BitTextComponent),\n multi: true\n }],\n standalone: false\n})\nexport class BitTextComponent extends BitCustomComponent implements ControlValueAccessor {\n value: string;\n\n get value_lectura(): string {\n if (this.value == null) {\n this.log() && console.log(\"value lectura is null\");\n return \"\";\n } // si es null o undefined (es lo que evalúa el \"==null\")\n else {\n this.log() && console.log(\"value lectura: \" + this.value);\n return this.value;\n }\n }\n\n writeValue(v: string): void {\n this.log() && console.log(`writeValue forComponent ${this.nombre()} with value ${v}`);\n if (!v) { \n this.value = \"\";\n } else {\n this.value = v;\n }\n }\n\n onChangeValue(text) {\n this.log() && console.log(\"_onChangeValue forComponent: \" + this.nombre() + \" with value:\" + text);\n this.value = text;\n this.changeComponentValue(this.value);\n }\n\n}\n","@if (!hideLabel()) {\n <label for=\"{{ nombre() }}\">\n <ng-content /> @if (obligatorio) {\n <span class=\"obligatorio fa fa-asterisk\"></span>\n } \n @if (ayuda()) {\n <i class=\"btn-ayuda fa fa-question\" (click)=\"showAyuda()\"></i>\n }\n </label>\n}\n@if (readOnly()) {\n <p class=\"lectura\" [id]=\"nombre()\">{{ value_lectura }}</p>\n}\n@if (!tooltipTexto() && !readOnly()) {\n <input\n pInputText\n type=\"text\"\n id=\"{{ nombre() }}\"\n name=\"{{ nombre() }}\"\n autocomplete=\"{{ nombre() }}\"\n ariaLabel=\"{{ nombre() }}\"\n [disabled]=\"isDisabled()\"\n [ngModel]=\"value\"\n [attr.directive]=\"nombreDirectiva()\"\n [placeholder]=\"placeholder()\"\n (ngModelChange)=\"onChangeValue($event)\"\n (blur)=\"_onBlur()\"\n (focus)=\"_onFocus()\"\n attr.data-testid=\"{{ dataTestId()}}\"\n />\n}\n@if (tooltipTexto() && !readOnly()) {\n <input\n pInputText\n type=\"text\"\n id=\"{{ nombre() }}\"\n name=\"{{ nombre() }}\"\n ariaLabel=\"{{ nombre() }}\"\n [disabled]=\"isDisabled()\"\n [ngModel]=\"value\"\n [attr.directive]=\"nombreDirectiva()\"\n [pTooltip]=\"tooltipTexto()\"\n [tooltipPosition]=\"tooltipPosicion()\"\n (ngModelChange)=\"onChangeValue($event)\"\n (blur)=\"_onBlur()\"\n (focus)=\"_onFocus()\"\n attr.data-testid=\"{{ dataTestId()}}\"\n />\n}\n@if (control() != null) {\n <control-messages [control]=\"control()\" [field]=\"nombre()\" />\n}\n","import { Component, forwardRef, input } from \"@angular/core\";\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from \"@angular/forms\";\n\nimport { BitCustomComponent } from \"../bit-custom.component\";\n\n@Component({\n selector: \"bit-textarea\",\n templateUrl: \"bit-textarea.component.html\",\n providers: [{\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => BitTextAreaComponent),\n multi: true\n }],\n standalone: false\n})\nexport class BitTextAreaComponent extends BitCustomComponent implements ControlValueAccessor {\n readonly filas = input<number>(2);\n\n value: string;\n\n get value_lectura(): string {\n if (this.value == null) {\n this.log() && console.log(\"value lectura is null\");\n return \"\";\n } // si es null o undefined (es lo que evalúa el \"==null\")\n else {\n this.log() && console.log(\"value lectura: \" + this.value);\n return this.value;\n }\n }\n\n writeValue(v: string): void {\n this.log() && console.log(`writeValue forComponent ${this.nombre()} with value ${v}`);\n if (!v) {\n this.value = \"\";\n } else {\n this.value = v;\n }\n }\n\n onChangeValue(text) {\n this.log() && console.log(\"_onChangeValue forComponent: \" + this.nombre() + \" with value:\" + text);\n this.value = text;\n this.changeComponentValue(this.value);\n }\n\n}\n","@if (!hideLabel()) {\n <label for=\"{{ nombre() }}\">\n <ng-content /> @if (obligatorio) {\n <span class=\"obligatorio fa fa-asterisk\"></span>\n } \n @if (ayuda()) {\n <i class=\"btn-ayuda fa fa-question\" (click)=\"showAyuda()\"></i>\n }\n </label>\n}\n@if (readOnly()) {\n <pre class=\"lectura\" [id]=\"nombre()\">{{ value_lectura }}</pre>\n}\n@if (!readOnly()) {\n <textarea\n pInputTextarea\n id=\"{{ nombre() }}\"\n name=\"{{ nombre() }}\"\n autocomplete=\"{{ nombre() }}\"\n ariaLabel=\"{{ nombre() }}\"\n [placeholder]=\"placeholder()\"\n [disabled]=\"isDisabled()\"\n [ngModel]=\"value\"\n class=\"{{ estilo() }}\"\n [rows]=\"filas()\"\n (ngModelChange)=\"onChangeValue($event)\"\n attr.data-testid=\"{{ dataTestId()}}\"\n ></textarea>\n}\n@if (control() != null) {\n <control-messages [control]=\"control()\" [field]=\"nombre()\" />\n}\n","import { Directive, inject, input, output } from \"@angular/core\";\nimport moment from \"moment\";\n\nimport { TranslateService } from \"../../../services/translate.service\";\nimport { DateUtils } from \"../../../services\";\nimport { BitCustomComponent } from \"../bit-custom.component\";\n\n/** Clase general para componentes personalizados de tipo Fecha como puede ser BitDate, BitTime y BitDateTime */\n@Directive()\nexport abstract class BitCalendarComponent extends BitCustomComponent {\n // calendarios\n fechaMinima = input<Date>(undefined); // fecha mínima seleccionable\n fechaMaxima = input<Date>(undefined); // fecha máxima seleccionable\n calendarReadOnlyInput = input<boolean>(false); // desabilitar edicion por teclado\n format = input<string>();\n showButtonBar = input<boolean>(false); \n appendTo = input<string>(\"body\");\n onSelect = output<any>();\n\n protected dateUtils: DateUtils = inject(DateUtils);\n protected translateService: TranslateService = inject(TranslateService);\n\n locale: any;\n value: Date;\n visual_format: string; // formato visual que escribirá el usuario. Necesario para saber si lo que el usuario ha escrito es correcto\n\n _onTodayClick(event) {\n this.log() && console.log(\"_onTodayClick forComponent:\"+this.nombre())\n this.value = new Date();\n this.emitNewValue();\n }\n\n _onSelect(date: Date) {\n this.log() && console.log(\"onSelect forComponent:\"+this.nombre()+\" with date:\"+date);\n this.value = date;\n this.emitNewValue();\n this.onSelect.emit(date);\n }\n\n _onInput(data) {\n this.log() && console.log(\"_onInput forComponent:\"+this.nombre())\n // recuperamos el valor del campo\n let value = data.currentTarget.value;\n try {\n this.log() && console.log(\"value\", value);\n // si es una fecha, hora o fecha/hora\n if (this.isValueCorrect(value)) {\n // hacemos una transformación de string a date y de date a string porque en el caso de DateTime la representación visual e informática no tiene nada que ver\n let d = this.dateUtils.getStringAsDate(value, this.visual_format);\n this.log() && console.log(\"converted to date value\", d);\n value = this.getDateAsString(d);\n this.log() && console.log(\"converted to string value\", value);\n this.writeValue(value);\n this.emitNewValue();\n }\n } catch (error) {\n }\n }\n\n _onBlur(data) {\n this.log() && console.log(\"_onInput forComponent:\"+this.nombre())\n super._onBlur();\n // recuperamos el valor del campo\n let value = data.currentTarget.value;\n try {\n this.log() && console.log(\"onBlur value\", value);\n // Cuando abandonemos el campo si el valor es un truño, seteamos null en el formcontrol\n if (!this.isValueCorrect(value)) {\n this.writeValue(null);\n this.emitNewValue();\n }\n } catch (error) {\n }\n }\n\n _onClear() {\n this.log() && console.log(\"_onClear forComponent:\"+this.nombre())\n this.writeValue(null);\n this.emitNewValue();\n }\n\n emitNewValue() {\n let v: string = null;\n if (this.value) {\n try {\n this.log() && console.log(\"emitNewValue\", this.value);\n v = this.dateUtils.getDateAsString(this.value, this.getDateFormat());\n } catch (e) {\n }\n } else {\n this.log() && console.log(\"noValue to emit for component:\"+this.nombre());\n }\n this.changeComponentValue(v);\n }\n\n isValueCorrect(value): boolean {\n return moment(value, this.visual_format, true).isValid();\n }\n\n abstract getDateFormat(): string;\n\n abstract getDateAsString(d: Date): string;\n\n}\n","import { Component, computed, forwardRef, input, inject } from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from \"@angular/forms\";\n\nimport { DateUtils } from '../../../services/date-utils.service';\nimport { BitCalendarComponent } from '../calendar/bit-calendar.component';\n\n@Component({\n selector: \"bit-date\",\n templateUrl: \"bit-date.component.html\",\n providers: [{\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => BitDateComponent),\n multi: true\n }],\n standalone: false\n})\nexport class BitDateComponent extends BitCalendarComponent implements ControlValueAccessor {\n protected dateUtils = inject(DateUtils);\n\n readonly placeholder = input<string>(\"dd/mm/yyyy\");\n \n constructor() {\n super();\n this.visual_format = DateUtils.FORMAT_SHORT_DATE;\n }\n\n get value_lectura(): string {\n if (this.value == null) {\n this.log() && console.log(\"value lectura is null\");\n return \"\";\n }\n else {\n let v = this.dateUtils.getDateAsString(this.value, this.getDateFormat());\n this.log() && console.log(\"value lectura: \" + v);\n return v;\n }\n }\n\n writeValue(v: string): void {\n this.log() && console.log(`writeValue forComponent ${this.nombre()} with value ${v}`);\n if (!v || v === \"\") {\n this.value = null;\n } else {\n this.value = this.dateUtils.getStringAsDate(v, this.getDateFormat());\n this.log() && console.log(\"new value:\" + this.value);\n }\n }\n\n getDateAsString(d: Date): string {\n let value = this.dateUtils.getDateAsString(d, this.getDateFormat());\n return value;\n }\n\n getDateFormat(): string {\n return this.format() ? this.format() : DateUtils.FORMAT_SHORT_DATE;\n }\n}\n","@if (!hideLabel()) {\n <label for=\"{{ nombre() }}\">\n <ng-content /> @if (obligatorio) {\n <span class=\"obligatorio fa fa-asterisk\"></span>\n } \n @if (ayuda()) {\n <i class=\"btn-ayuda fa fa-question\" (click)=\"showAyuda()\"></i>\n }\n </label>\n}\n@if (readOnly()) {\n <p class=\"lectura\" [id]=\"nombre()\">{{ value_lectura }}</p>\n}\n@if (!readOnly()) {\n <p-datepicker class=\"FormControl\"\n id=\"{{ nombre() }}\"\n name=\"{{ nombre() }}\"\n ariaLabel=\"{{ nombre() }}\"\n autofocus=\"false\"\n [disabled]=\"isDisabled()\"\n [(ngModel)]=\"value\"\n dateFormat=\"dd/mm/yy\"\n placeholder=\"{{ placeholder() }}\"\n [showOtherMonths]=\"true\"\n [selectOtherMonths]=\"true\"\n [readonlyInput]=\"calendarReadOnlyInput()\"\n [minDate]=\"fechaMinima()\"\n [maxDate]=\"fechaMaxima()\"\n yearRange=\"2000:2050\"\n [firstDayOfWeek]=\"1\"\n showButtonBar={{showButtonBar()}}\n [appendTo]=\"appendTo()\"\n (onSelect)=\"_onSelect(value)\"\n (onClear)=\"_onClear()\"\n (onClearClick)=\"_onClear()\"\n (onFocus)=\"_onFocus()\"\n (onBlur)=\"_onBlur($event)\"\n (onInput)=\"_onInput($event)\"\n attr.data-testid=\"{{ dataTestId()}}\"\n />\n}\n@if (!readOnly()) {\n <span class=\"glyphicon glyphicon-calendar icono-input\"></span>\n}\n@if (control() != null) {\n <control-messages [control]=\"control()\" [field]=\"nombre()\" />\n}\n","import { Component, forwardRef, input, inject } from \"@angular/core\";\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from \"@angular/forms\";\n\nimport { DateUtils } from \"../../../services/date-utils.service\";\nimport { BitCalendarComponent } from \"../calendar/bit-calendar.component\";\n\n\n@Component({\n selector: \"bit-time\",\n templateUrl: \"bit-time.component.html\",\n providers: [{\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => BitTimeComponent),\n multi: true\n }],\n standalone: false\n})\nexport class BitTimeComponent extends BitCalendarComponent implements ControlValueAccessor {\n protected dateUtils = inject(DateUtils);\n\n readonly placeholder = input<string>(\"hh:mm\");\n\n constructor() {\n super();\n this.visual_format = DateUtils.FORMAT_SHORT_TIME;\n }\n\n get value_lectura(): string {\n if (this.value == null) {\n this.log() && console.log(\"value lectura is null\");\n return \"\";\n }\n else {\n let v = this.dateUtils.getTimeAsString(this.value, this.getDateFormat());\n this.log() && console.log(\"value lectura: \" + v);\n return v;\n }\n }\n\n writeValue(v: string): void {\n this.log() && console.log(`writeValue forComponent ${this.nombre()} with value ${v}`);\n if (!v) {\n this.value = null;\n } else {\n this.value = this.dateUtils.getStringAsDate(v, this.getDateFormat());\n this.log() && console.log(\"new value:\" + this.value);\n }\n }\n\n getDateAsString(d: Date): string {\n let value = this.dateUtils.getTimeAsString(d, this.getDateFormat());\n return value;\n }\n\n getDateFormat(): string {\n return this.format() ? this.format() : DateUtils.FORMAT_SHORT_TIME;\n }\n}\n","@if (!hideLabel()) {\n <label for=\"{{ nombre() }}\">\n <ng-content /> @if (obligatorio) {\n <span class=\"obligatorio fa fa-asterisk\"></span>\n } \n @if (ayuda()) {\n <i class=\"btn-ayuda fa fa-question\" (click)=\"showAyuda()\"></i>\n }\n </label>\n}\n@if (readOnly()) {\n <p class=\"lectura\" [id]=\"nombre()\">{{ value_lectura }}</p>\n}\n@if (!readOnly()) {\n <p-datepicker class=\"FormControl\"\n id=\"{{ nombre() }}\"\n name=\"{{ nombre() }}\"\n ariaLabel=\"{{ nombre() }}\"\n autofocus=\"false\"\n [disabled]=\"isDisabled()\"\n [(ngModel)]=\"value\"\n dateFormat=\"HH:mm\"\n [timeOnly]=\"true\"\n placeholder=\"{{ placeholder() }}\"\n [firstDayOfWeek]=\"1\"\n showButtonBar={{showButtonBar()}}\n (onTodayClick)=\"_onTodayClick($event)\"\n [appendTo]=\"appendTo()\"\n (onSelect)=\"_onSelect(value)\"\n (onClear)=\"_onClear()\"\n (onClearClick)=\"_onClear()\"\n (onFocus)=\"_onFocus()\"\n (onBlur)=\"_onBlur($event)\"\n (onInput)=\"_onInput($event)\"\n attr.data-testid=\"{{ dataTestId()}}\"\n />\n}\n@if (control() != null) {\n <control-messages [control]=\"control()\" [field]=\"nombre()\" />\n}\n","import { Component, forwardRef, input, inject } from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from \"@angular/forms\";\n\nimport { DateUtils } from '../../../services/date-utils.service';\nimport { BitCalendarComponent } from \"../calendar/bit-calendar.component\";\n\n@Component({\n selector: \"bit-datetime\",\n templateUrl: \"bit-datetime.component.html\",\n providers: [{\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => BitDateTimeComponent),\n multi: true\n }],\n standalone: false\n})\nexport class BitDateTimeComponent extends BitCalendarComponent implements ControlValueAccessor {\n protected dateUtils = inject(DateUtils);\n\n readonly placeholder = input<string>(\"dd/mm/yyyy hh:mm\");\n \n constructor() {\n super();\n this.visual_format = DateUtils.FORMAT_LONG_DATE;\n }\n\n get value_lectura(): string {\n if (this.value == null) {\n this.log() && console.log(\"value lectura is null\");\n return \"\";\n }\n else {\n let v = this.dateUtils.getDateTimeAsString(this.value, this.getDateFormat());\n this.log() && console.log(\"value lectura: \" + v);\n return v;\n }\n }\n\n writeValue(v: string): void {\n this.log() && console.log(`writeValue forComponent ${this.nombre()} with value ${v}`);\n if (!v) {\n this.value = null;\n } else {\n this.value = this.dateUtils.getStringAsDate(v, this.getDateFormat());\n this.log() && console.log(\"new value:\" + this.value);\n }\n }\n\n getDateAsString(d: Date): string {\n let value = this.dateUtils.getDateTimeAsString(d, this.getDateFormat());\n return value;\n }\n\n getDateFormat(): string {\n return this.format() ? this.format() : DateUtils.FORMAT_LONG_DATE;\n }\n\n}\n","@if (!hideLabel()) {\n <label for=\"{{ nombre() }}\">\n <ng-content /> @if (obligatorio) {\n <span class=\"obligatorio fa fa-asterisk\"></span>\n } \n @if (ayuda()) {\n <i class=\"btn-ayuda fa fa-question\" (click)=\"showAyuda()\"></i>\n }\n </label>\n}\n@if (readOnly()) {\n <p class=\"lectura\" [id]=\"nombre()\">{{ value_lectura }}</p>\n}\n@if (!readOnly()) {\n <p-datepicker class=\"FormControl\"\n id=\"{{ nombre() }}\"\n name=\"{{ nombre() }}\"\n ariaLabel=\"{{ nombre() }}\"\n autofocus=\"false\"\n [disabled]=\"isDisabled()\"\n [(ngModel)]=\"value\"\n dateFormat=\"dd/mm/yy\"\n placeholder=\"{{ placeholder() }}\" \n [minDate]=\"fechaMinima()\"\n [maxDate]=\"fechaMaxima()\"\n [showOtherMonths]=\"true\"\n [selectOtherMonths]=\"true\"\n yearRange=\"2000:2050\"\n [showTime]=\"true\"\n [firstDayOfWeek]=\"1\"\n showButtonBar={{showButtonBar()}}\n [appendTo]=\"appendTo()\"\n (onSelect)=\"_onSelect(value)\"\n (onClear)=\"_onClear()\"\n (onClearClick)=\"_onClear()\"\n (onFocus)=\"_onFocus()\"\n (onBlur)=\"_onBlur($event)\"\n (onInput)=\"_onInput($event)\"\n attr.data-testid=\"{{ dataTestId()}}\"\n />\n}\n@if (!readOnly()) {\n <span class=\"glyphicon glyphicon-calendar icono-input\"></span>\n}\n@if (control() != null) {\n <control-messages [control]=\"control()\" [field]=\"nombre()\" />\n}\n","import { Component, forwardRef } from \"@angular/core\";\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from \"@angular/forms\";\n\nimport { BitCustomComponent } from \"../bit-custom.component\";\n\n@Component({\n selector: \"bit-checkbox\",\n templateUrl: \"bit-checkbox.component.html\",\n providers: [{\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => BitCheckBoxComponent),\n multi: true\n }],\n standalone: false\n})\nexport class BitCheckBoxComponent extends BitCustomComponent implements ControlValueAccessor {\n value: Boolean;\n\n get value_lectura(): string {\n this.log() && console.log(\"value lectura: \" + this.value);\n return this.value ? \"Sí\" : \"No\";\n }\n\n writeValue(v: Boolean): void {\n this.log() && console.log(`writeValue forComponent ${this.nombre()} with value ${v}`);\n this.value = v;\n }\n\n onChangeValue(event) {\n this.value = event.checked;\n this.log() && console.log(\"_onChangeValue forComponent: \" + this.nombre() + \" with value:\" + this.value);\n this.changeComponentValue(this.value);\n }\n}\n","@if (!hideLabel()) {\n <label for=\"{{ nombre() }}\">\n <ng-content /> @if (obligatorio) {\n <span class=\"obligatorio fa fa-asterisk\"></span>\n } \n @if (ayuda()) {\n <i class=\"btn-ayuda fa fa-question\" (click)=\"showAyuda()\"></i>\n }\n </label>\n}\n@if (readOnly()) {\n <p class=\"lectura\" [id]=\"nombre()\">{{ value_lectura }}</p>\n}\n@if (!readOnly()) {\n <p-checkbox class=\"{{ estilo() }}\"\n binary=\"true\"\n [(ngModel)]=\"value\"\n name=\"{{ nombre() }}\"\n ariaLabel=\"{{ nombre() }}\"\n [disabled]=\"isDisabled()\"\n id=\"{{ nombre() }}\"\n (onChange)=\"onChangeValue($event)\"\n attr.data-testid=\"{{ dataTestId()}}\"\n />\n}\n\n@if (ayuda()) {\n <i (click)=\"showAyuda()\" class=\"btn-ayuda-checkbox fa fa-question\"></i>\n}\n\n@if (control() != null) {\n <control-messages [control]=\"control()\" [field]=\"nombre()\" />\n}\n","import { Component, forwardRef } from \"@angular/core\";\n\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from \"@angular/forms\";\nimport { BitCustomComponent } from \"../bit-custom.component\";\n\n@Component({\n selector: \"bit-switch\",\n templateUrl: \"bit-switch.component.html\",\n providers: [{\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => BitSwitchComponent),\n multi: true\n }],\n standalone: false\n})\nexport class BitSwitchComponent extends BitCustomComponent implements ControlValueAccessor {\n value: Boolean;\n\n get value_lectura(): string {\n this.log() && console.log(\"value lectura: \" + this.value);\n return this.value ? \"Sí\" : \"No\";\n }\n\n writeValue(v: Boolean): void {\n this.log() && console.log(`writeValue forComponent ${this.nombre()} with value ${v}`);\n this.value = v;\n }\n\n onChangeValue(event) {\n this.value = event.checked;\n this.log() && console.log(\"_onChangeValue forComponent: \" + this.nombre() + \" with value:\" + this.value);\n this.changeComponentValue(this.value);\n }\n\n\n}\n","@if (!hideLabel()) {\n <label for=\"{{ nombre() }}\">\n <ng-content /> @if (obligatorio) {\n <span class=\"obligatorio fa fa-asterisk\"></span>\n } \n @if (ayuda()) {\n <i class=\"btn-ayuda fa fa-question\" (click)=\"showAyuda()\"></i>\n }\n </label>\n}\n@if (readOnly()) {\n <p class=\"lectura\" [id]=\"nombre()\">{{ value_lectura }}</p>\n}\n@if (!readOnly()) {\n <p-toggleswitch onLabel=\"Sí\"\n offLabel=\"No\"\n binary=\"true\"\n [(ngModel)]=\"value\"\n name=\"{{ nombre() }}\"\n ariaLabel=\"{{ nombre() }}\"\n [disabled]=\"isDisabled()\"\n id=\"{{ nombre() }}\"\n (onChange)=\"onChangeValue($event)\"\n attr.data-testid=\"{{ dataTestId()}}\"\n />\n}\n@if (control() != null) {\n <control-messages [control]=\"control()\" [field]=\"nombre()\" />\n}\n","import { AfterViewInit, Component, forwardRef, TemplateRef } from \"@angular/core\";\nimport { input, computed, output, contentChild } from \"@angular/core\";\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from \"@angular/forms\";\nimport { AutoCompleteSelectEvent } from \"primeng/autocomplete\";\n\nimport { BitCustomComponent } from \"../bit-custom.component\";\n\n@Component({\n selector: \"bit-autocomplete\",\n templateUrl: \"bit-autocomplete.component.html\",\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => BitAutoCompleteComponent),\n multi: true\n }\n ],\n standalone: false\n})\nexport class BitAutoCompleteComponent extends BitCustomComponent implements ControlValueAccessor, AfterViewInit {\n readonly suggestions = input<any[]>([]);\n readonly suggestionField = input<string>();\n readonly multiple = input<boolean>(false);\n readonly inputStyleClass = input<string>();\n readonly id = input<string>(\"id\");\n readonly displayValue = input<string>();\n readonly customTemplate = input<boolean>(false); // si se usa un template personalizado para mostrar los items\n readonly completeMethod = output<string>();\n readonly onSelect = output<string>();\n readonly onClear = output<any>();\n\n readonly itemTemplate = contentChild(\"itemTemplate\", { read: TemplateRef });\n\n suggestions_mapped = computed(() => {\n let suggestions = this.suggestions();\n if (suggestions) {\n let newList = suggestions.map((obj: { [x: string]: any }) => (obj instanceof Object && !this.customTemplate() ? obj[this.suggestionField()] : obj));\n this.log() && console.log(\"suggestions mapped for component: \" + this.nombre(), newList);\n return newList;\n }\n });\n\n value: string;\n\n ngAfterViewInit() {\n // Control de errores:\n // 1. Si se quiere usar una template personalizada, se debe especificar el input customTemplate.\n // 2. Si se usa customTemplate, se debe especificar el input suggestionField para poder mapear el objeto en el campo de texto.\n // 3. Si se usa itemTemplate, se debe especificar customTemplate a true. (warning)\n const customTemplate = this.customTemplate();\n const itemTemplate = this.itemTemplate();\n if (customTemplate && !itemTemplate) {\n throw new Error(\n \"BitAutoCompleteComponent: Si se especifica el input customTemplate se debe proporcionar una template a través de '<ng-template #itemTemplate let-item>'\"\n );\n } else if (customTemplate && !this.suggestionField()) {\n throw new Error(\n \"BitAutoCompleteComponent: Si se especifica el input customTemplate, se debe especificar el input suggestionField para poder mapear el objeto en el campo de texto cuando elijamos uno de la lista.\"\n );\n } else if (!customTemplate && itemTemplate) {\n this.log() &&\n console.warn(\n \"BitAutoCompleteComponent: Se ha proporcionado una template personalizada a través de 'itemTemplate', pero se está pasando de ella. Para usarla, debe establecer customTemplate a true.\"\n );\n }\n }\n\n // ngOnChanges(changes: { [propKey: string]: SimpleChange }) {\n // for (let propName in changes) {\n // if (propName === \"suggestions\") {\n // let changedProp = changes[propName];\n // let newList = changedProp.currentValue;\n // // El mapeo tiene que ser con todo el objeto, no solo con el campo suggestionField, porque si se usa un template personalizado\n // // se necesita el objeto completo para poder pasarlos a la template y que se pinte correctamente.\n // this.suggestions_mapped = newList && newList.map((obj: { [x: string]: any }) => ((obj instanceof Object && !this.customTemplate()) ? obj[this.suggestionField()] : obj));\n // //console.log(\"newList\", this.suggestions_mapped);\n // }\n // }\n // }\n\n search(event: any) {\n this.log() && console.log(\"search for component: \" + this.nombre(), event);\n this.completeMethod.emit(event);\n }\n\n get value_lectura(): string {\n if (this.value == null) {\n this.log() && console.log(\"value lectura is null\");\n return \"\";\n } // si es null o undefined (es lo que evalúa el \"==null\")\n else {\n this.log() && console.log(\"value lectura: \" + this.value);\n return this.value;\n }\n }\n\n writeValue(v: number | string): void {\n // El 0 es un valor válido\n this.log() && console.log(`writeValue forComponent ${this.nombre()} with value ${v}`);\n if (v === null || v === undefined || v === \"\") {\n this.value = \"\";\n } else {\n if (typeof v === \"string\") {\n this.value = v.toString();\n } else {\n this.value = this.displayValue();\n }\n }\n }\n\n changeComponentValue(value: any) {\n this.log() && console.log(`changeComponentValue forComponent ${this.nombre()} with value ${value}`);\n let valueConverted: any;\n if (this.suggestionField()) {\n // si estamos especificando que lo que el autocompletar hace es operar sobre una lista de objetos\n // recuperamos el objeto dentro de la lista con el valor del campo suggestionField igual al seleccionado\n let selectedObject = this._findObject(value);\n this.log() && console.log(\"selectedObject\", selectedObject);\n // el valor reconvertido será el ID del objeto que es lo que vamos a meter en el FormControl\n valueConverted = selectedObject && selectedObject[this.id()];\n this.log() && console.log(\"valueConverted\", valueConverted);\n // emitimos que ha cambiado el objeto\n this.onChange.emit(selectedObject);\n } else {\n // si no es una lista de objetos el comportamiento es el de siempre\n valueConverted = value;\n this.log() && console.log(\"valueConverted\", valueConverted);\n this.onChange.emit(valueConverted);\n }\n this._onChange(valueConverted);\n }\n\n _onSelect(event: AutoCompleteSelectEvent) {\n this.value = event.value;\n this.log() && console.log(\"_onSelect forComponent: \" + this.nombre() + \" with value:\" + this.value);\n this.changeComponentValue(this.value);\n if (this.suggestionField()) {\n let selectedObject = this._findObject(event.value);\n this.log() && console.log(\"selectedObject: \" + selectedObject);\n this.onSelect.emit(selectedObject);\n } else {\n this.onSelect.emit(this.value);\n }\n }\n\n _onClear() {\n this.value = \"\";\n this.log() && console.log(\"_onClear forComponent: \" + this.nombre());\n this.changeComponentValue(this.value);\n this.onClear.emit({});\n }\n\n _findObject(value: any) {\n this.log() && console.log(\"_findObject forComponent: \" + this.nombre() + \" with value\", value);\n // Si se usa un template personalizado, devolvemos el valor directamente, porque ya estará allí, no hace falta buscarlo en la lista de sugerencias\n if (this.customTemplate()) {\n return this.value;\n } else {\n if (value) {\n let v = this.suggestions().find((obj) => obj[this.suggestionField()] === value);\n this.log() && console.log(\"_findObject forComponent: \" + this.nombre() + \" find value\", v);\n return v;\n }\n }\n }\n}\n","@if (!hideLabel()) {\n<label for=\"{{ nombre() }}\">\n <ng-content /> @if (obligatorio) {\n <span class=\"obligatorio fa fa-asterisk\"></span>\n } @if (ayuda()) {\n <i class=\"btn-ayuda fa fa-question\" (click)=\"showAyuda()\"></i>\n }\n</label>\n} @if (readOnly()) {\n<p class=\"lectura\" [id]=\"nombre()\">{{ value_lectura }}</p>\n} @if (!readOnly()) {\n<!-- Si usamos un template personalizado, hay que indicar el optionLabel para que sepa cuál es el campo a mostrar al seleccionar un elemento -->\n<p-autoComplete\n fluid\n [(ngModel)]=\"value\"\n id=\"{{ nombre() }}\"\n name=\"{{ nombre() }}\"\n ariaLabel=\"{{ nombre() }}\"\n [disabled]=\"isDisabled()\"\n [placeholder]=\"placeholder()\"\n [delay]=\"400\"\n [suggestions]=\"suggestions_mapped()\"\n [multiple]=\"multiple()\"\n [inputStyleClass]=\"inputStyleClass()\"\n optionLabel=\"{{ customTemplate() ? this.suggestionField() : '' }}\"\n appendTo=\"body\"\n (completeMethod)=\"search($event)\"\n (onSelect)=\"_onSelect($event)\"\n (onClear)=\"_onClear()\"\n (onBlur)=\"_onBlur()\"\n (onFocus)=\"_onFocus()\"\n attr.data-testid=\"{{ dataTestId() }}\"\n>\n @if (customTemplate() && itemTemplate()) {\n <ng-template pTemplate=\"item\" let-item>\n <ng-container *ngTemplateOutlet=\"itemTemplate(); context: { $implicit: item }\" />\n </ng-template>\n }\n</p-autoComplete>\n} @if (control() != null) {\n<control-messages [control]=\"control()\" [field]=\"nombre()\" />\n}\n","import { computed, Directive, input } from \"@angular/core\";\nimport { ActivatedRoute } from \"@angular/router\";\n\nimport { TranslateService } from \"../../../services/translate.service\";\nimport { BitCustomComponent } from \"../bit-custom.component\";\nimport { toSignal } from \"@angular/core/rxjs-interop\";\n\n/**\n * Clase general común a ambos bit-dropdown (El normal y el múltiple).\n * Actualmente solo extendida por el dropdown normal, pendiente el múltiple que aún usa la interfaz ControlValueAccessor.\n *\n * @input data: array de objetos a mostrar en el select. Puede ser null, en cuyo caso domain no puede ser null\n * @input domain: nombre del dominio que contiene los datos y que nos resolverá la página cuando cargue el componente. Puede ser null, en cuyo caso data no puede ser null\n * @input id: identificador del componente select\n * @input filter: true indicará que podemos buscar dentro del select, false que no.\n **/\n@Directive()\nexport abstract class BitDropDownGeneralComponent extends BitCustomComponent {\n readonly hideLabel = input<boolean>(false); // forzar no reservar espacio para el nombre del campo\n readonly data = input<any[]>(); // lista de valores estáticos con lo que inicializamos el select\n readonly id = input<any>();\n readonly excludedValues = input<any[]>();\n readonly emptyText = input<string>(\"\"); //valor por defecto seleccionable como primer elemento\n readonly includeEmpty = input<boolean>(true);\n readonly valueAs = input<string>();\n readonly appendTo = input<string>(\"body\");\n readonly group = input<boolean>(false);\n readonly atributoLabel = input(\"label\"); // El atributo de los objetos de la lista que corresponde al label\n readonly atributoValue = input(\"value\"); // El atributo de los objetos de la lista que corresponde al valor\n readonly atributoDisabled = input(\"inactivo\"); // El atributo de los objetos de la lista que indica si un valor está deshabilitado\n\n listaOpciones = computed(() => {\n let list = this.data() ? this.data().slice() : [];\n this.log() && console.log(\"Lista de opciones forComponent:\" + this.nombre(), list);\n return list;\n });\n\n listaOpcionesVisible = computed(() => {\n let opciones = [];\n if (this.listaOpciones()) {\n opciones = Object.assign([], this.listaOpciones());\n // repasamos si hay opciones a excluir que debamos eliminar\n if (this.excludedValues()) {\n opciones = opciones.filter((op) => this.excludedValues().indexOf(op.value) < 0);\n this.log() && console.log(\"Lista de opciones forComponent:\" + this.nombre() + \" después de excludeValues\", opciones);\n }\n }\n if (this.includeEmpty()) {\n let newOption = { value: null, label: this.emptyText() };\n newOption[this.atributoValue()] = null;\n newOption[this.atributoLabel()] = this.emptyText();\n opciones.splice(0, 0, newOption);\n this.log() && console.log(\"Lista de opciones forComponent:\" + this.nombre() + \" después de includeEmpty\", opciones);\n } \n this.log() && console.log(\"Lista de opciones visibles forComponent:\" + this.nombre() + \" después de excludeValues\", opciones);\n return opciones;\n });\n \n value: any;\n\n constructor(protected router: ActivatedRoute, protected translateService: TranslateService) {\n super();\n }\n\n}\n","import { Component, forwardRef, OnChanges, SimpleChange, input, effect, inject } from \"@angular/core\";\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from \"@angular/forms\";\nimport { ActivatedRoute } from \"@angular/router\";\n\nimport { TranslateService } from \"../../../services\";\nimport { BitDropDownGeneralComponent } from \"./bit-dropdown-general.component\";\n\n/**\n * Clase que utiliza un custom componente para select de elementos\n * <bit-dropdown [domain]=\"'DOMAIN_TIPO_LOG'\" id=\"tipolog\" [control]=\"formControl\"> Tipus d'operació</bit-dropdown>\n *\n * @input data: array de objetos a mostrar en el select. Puede ser null, en cuyo caso domain no puede ser null\n * @input domain: nombre del dominio que contiene los datos y que nos resolverá la página cuando cargue el componente. Puede ser null, en cuyo caso data no puede ser null\n * @input id: identificador del componente select\n * @input filter: true indicará que podemos buscar dentro del select, false que no.\n **/\n@Component({\n selector: \"bit-dropdown\",\n templateUrl: \"bit-dropdown.component.html\",\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => BitDropDownComponent),\n multi: true\n }\n ],\n standalone: false\n})\nexport class BitDropDownComponent extends BitDropDownGeneralComponent implements ControlValueAccessor {\n protected router: ActivatedRoute;\n protected translateService: TranslateService;\n\n readonly filter = input<boolean>(false);\n\n constructor() {\n const router = inject(ActivatedRoute);\n const translateService = inject(TranslateService);\n\n super(router, translateService);\n \n this.router = router;\n this.translateService = translateService;\n }\n \n get value_lectura(): string {\n let dom = this.listaOpciones() && this.listaOpciones().find((d) => d[this.atributoValue()] == this.value);\n let v = dom ? dom[this.atributoLabel()] : this.value;\n this.log() && console.log(\"value lectura: \" + v);\n return v;\n }\n\n writeValue(v: any): void {\n this.log() && console.log(`writeValue forComponent ${this.nombre()} with value ${v}`);\n if (this.valueAs() == \"string\") {\n // convertimos el number a string porque nos han dicho que el ID del select es string\n this.value = v != null ? \"\" + v : v;\n } else {\n this.value = v;\n }\n }\n\n _onChangeValue(event) {\n this.value = event.value;\n // convertimos el string seleccionado del select a number\n if (this.valueAs() == \"string\") {\n this.log() && console.log(`_onChangeValue forComponent ${this.nombre()} value as string`);\n this.changeComponentValue(this.value != null ? +event.value : null);\n } else {\n this.changeComponentValue(event.value);\n }\n }\n\n _onClear() {\n this.value = null;\n this.changeComponentValue(this.value);\n }\n}\n","@if (!hideLabel()) {\n <label for=\"{{ nombre() }}\">\n <ng-content /> @if (obligatorio) {\n <span class=\"obligatorio fa fa-asterisk\"></span>\n } \n @if (ayuda()) {\n <i (click)=\"showAyuda()\" class=\"btn-ayuda fa fa-question\"></i>\n }\n </label>\n}\n@if (readOnly()) {\n <p class=\"lectura\" [id]=\"nombre()\">{{ value_lectura }}</p>\n}\n@if (!readOnly()) {\n <p-select\n id=\"{{ nombre() }}\"\n [(ngModel)]=\"value\"\n ariaLabel=\"{{ nombre() }}\"\n [disabled]=\"isDisabled()\"\n [options]=\"listaOpcionesVisible()\"\n [filter]=\"filter()\"\n [group]=\"group()\"\n [optionLabel]=\"atributoLabel()\"\n [optionValue]=\"atributoValue()\"\n [optionDisabled]=\"atributoDisabled()\"\n [appendTo]=\"appendTo()\"\n (onChange)=\"_onChangeValue($event)\"\n (onClear)=\"_onClear()\"\n (onBlur)=\"_onBlur()\"\n (onFocus)=\"_onFocus()\"\n attr.data-testid=\"{{ dataTestId()}}\"\n >\n <ng-template let-item pTemplate=\"item\">\n <span [ngClass]=\"{ 'opcion-desactivada': item[atributoDisabled()] }\">{{ item[atributoLabel()] }}</span>\n </ng-template>\n </p-select>\n @if (control() != null) {\n <control-messages [control]=\"control()\" [field]=\"id()\" />\n }\n}\n","import { Component, forwardRef, input, inject } from \"@angular/core\";\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from \"@angular/forms\";\nimport { ActivatedRoute } from \"@angular/router\";\n\nimport { TranslateService } from \"../../../services/translate.service\";\nimport { BitDropDownGeneralComponent } from \"./bit-dropdown-general.component\";\n\n/**\n * Clase que utiliza un custom componente para select múltiple de elementos\n * <bit-dropdown-multiple id=\"tipolog\" [formControl]=\"formControl\"\"> Tipus d'operació</bit-dropdown-multiple>\n **/\n\n@Component({\n selector: \"bit-dropdown-multiple\",\n templateUrl: \"bit-dropdown-multiple.component.html\",\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => BitDropDownMultipleComponent),\n multi: true\n }\n ],\n styleUrls: [\"bit-dropdown-multiple.component.css\"],\n standalone: false\n})\nexport class BitDropDownMultipleComponent extends BitDropDownGeneralComponent implements ControlValueAccessor {\n protected router: ActivatedRoute;\n protected translateService: TranslateService;\n\n readonly maxSelectedLabels = input<number>(3);\n readonly showSeparateSelectedLabels = input<boolean>(false); // indica si se muestran los elementos seleccionados en una columna separada\n readonly title = input<string>(undefined); //título que aparece en el link para eliminar un elemento una vez seleccionado\n readonly filter = input<boolean>(true);\n\n // Si se pueden seleccionar muchos elementos, que el label de los elementos seleccionados no\n // aparezca dentro del select, y hacerlo como una lista fuera del select.\n value: any[];\n\n constructor() {\n const router = inject(ActivatedRoute);\n const translateService = inject(TranslateService);\n\n super(router, translateService);\n\n this.router = router;\n this.translateService = translateService;\n }\n\n labelSelectedItem(id): string {\n let label: string = \"\";\n if (this.listaOpciones()) {\n let selected = this.listaOpciones().find((c) => c[this.atributoValue()] == id);\n if (selected) {\n label = selected[this.atributoLabel()];\n this.log() && console.log(`labelSelectedItem forComponent ${this.nombre()} selected: ${label}`);\n }\n }\n return label;\n }\n\n deleteSelectedItem(event, item) {\n this.log() && console.log(\"deleteSelectedItem forComponent:\" + this.nombre(), item);\n event.preventDefault();\n let index = this.value.indexOf(item);\n var currentValue = this.value;\n this.log() && console.log(\"currentValue: \" + currentValue);\n currentValue.splice(index, 1);\n this.value = currentValue.slice(0);\n this.log() && console.log(\"value: \" + currentValue);\n this.emitValue();\n }\n\n get value_lectura(): string {\n let vals = this.control().value;\n if (!!vals) {\n let value: any[] = [];\n for (let val of vals) {\n let opcion = this.listaOpciones().find((d) => d[this.atributoValue()] == val);\n if (opcion) {\n value.push(opcion[this.atributoLabel()]);\n } else {\n value.push(val);\n }\n }\n let v = value.join(\", \");\n this.log() && console.log(\"value lectura: \" + v);\n return v;\n }\n this.log() && console.log(\"value lectura is blank\");\n return \"\";\n }\n\n writeValue(v: any[]): void {\n this.log() && console.log(`writeValue forComponent ${this.nombre()} with value ${v}`);\n this.value = v;\n if (this.valueAs() == \"string\") {\n // convertimos el number a string porque nos han dicho que el ID del select es string\n if (v != null) {\n this.value = [];\n v.forEach((item) => this.value.push(\"\" + item));\n this.log() && console.log(\"currentValues: \", this.value);\n }\n }\n }\n\n _onChangeValue(event) {\n this.value = event.value;\n this.log() && console.log(\"_onChangeValue forComponent:\" + this.nombre() + \" with values: \" + this.value);\n // convertimos el string selecionado del select a number\n let v = this.value;\n if (this.valueAs() == \"string\") {\n v = [];\n this.value.forEach((item) => v.push(+item));\n this.log() && console.log(\"value as string: \", this.value);\n }\n this.emitValue();\n }\n\n _onClear() {\n this.log() && console.log(\"_onClear forComponent:\" + this.nombre());\n this.value = null;\n this.emitValue();\n }\n\n emitValue() {\n this.changeComponentValue(this.value);\n }\n}\n","@if (!hideLabel()) {\n <label for=\"{{ nombre() }}\"><ng-content /> @if (obligatorio) {\n <span class=\"obligatorio fa fa-asterisk\"></span>\n } \n @if (ayuda()) {\n <i (click)=\"showAyuda()\" class=\"btn-ayuda fa fa-question\"></i>\n }\n </label>\n}\n@if (readOnly() && !showSeparateSelectedLabels()) {\n <p class=\"lectura\">{{ value_lectura }}</p>\n}\n@if (!readOnly()) {\n <p-multiSelect id=\"{{ id() }}\"\n [(ngModel)]=\"value\"\n [placeholder]=\"placeholder()\"\n [filter]=\"filter()\"\n ariaLabel=\"{{ nombre() }}\"\n [options]=\"listaOpciones()\"\n [disabled]=\"isDisabled()\"\n [optionLabel]=\"atributoLabel()\"\n [optionValue]=\"atributoValue()\"\n [maxSelectedLabels]=\"maxSelectedLabels()\"\n [appendTo]=\"appendTo()\"\n selectedItemsLabel=\"{0} elements seleccionats\"\n (onChange)=\"_onChangeValue($event)\"\n (onClear)=\"_onClear()\"\n (onBlur)=\"_onBlur()\"\n (onFocus)=\"_onFocus()\"\n attr.data-testid=\"{{ dataTestId()}}\"\n />\n @if (control() != null) {\n <control-messages [control]=\"control()\" [field]=\"id()\" />\n }\n @if (showSeparateSelectedLabels()) {\n <div>\n <label for=\"{{ nombre() }}\"> </label>\n <div class=\"multiselect-labels\">\n @for (item of value; track item) {\n <div class=\"label label-primary multiselect-labels-lg\">\n <span>{{ labelSelectedItem(item) }}</span>\n @if (!readOnly()) {\n \n <a (click)=\"deleteSelectedItem($event, item)\" title=\"{{ title() }}\"><i class=\"fa fa-times\"></i></a>\n }\n </div>\n }\n </div>\n </div>\n }\n}","export class ConfigurationEditor {\n fontFormat: boolean = true;\n fontSize: boolean = true;\n bullet: boolean = true;\n link: boolean = true;\n\n constructor() {}\n\n public static newObject(): ConfigurationEditor {\n return new ConfigurationEditor();\n }\n\n public static newCustomObject(object: any): ConfigurationEditor {\n let editor = new ConfigurationEditor();\n editor.fontFormat = object[\"fontFormat\"];\n editor.fontSize = object[\"fontSize\"];\n editor.bullet = object[\"bullet\"];\n editor.link = object[\"link\"];\n\n return editor;\n }\n}\n","import { Component, forwardRef, input, output } from \"@angular/core\";\n\n\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from \"@angular/forms\";\nimport { ConfigurationEditor } from \"../../../data/configuration-editor\";\nimport { BitCustomComponent } from \"../bit-custom.component\";\n\n/**\n * Clase que utiliza un custom componente para campo editor de HTML\n * Utiliza la interfaz ControlValueAccessor\n * <bit-editor [(ngModel)]=\"object.descripcion\" [ngModelOptions]=\"{standalone: true}\" height=\"250\"> Descripció</bit-editor>\n * Para utilizar, importar tambien js y css.\n *\n * https://www.primefaces.org/primeng/#/editor\n * https://quilljs.com/docs/modules/toolbar/\n *\n **/\n\n@Component({\n selector: \"bit-editor\",\n templateUrl: \"bit-editor.component.html\",\n providers: [{\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => BitEditorComponent),\n multi: true\n }],\n standalone: false\n})\nexport class BitEditorComponent extends BitCustomComponent implements ControlValueAccessor {\n readonly tipo = input<string>(\"default\");\n // si es \"custom\", se utiliza el objeto de configuracion: configuration.\n // si es \"default\", no se utiliza ninguna configuracion (se muestran todos los controles)\n readonly configuration = input<ConfigurationEditor>(BitEditorComponent.globalConfiguration);\n readonly height = input<number>(100);\n readonly onTextChange = output<any>();\n\n value: string;\n\n // es posible tener configuraciones globales en todos los bit-editor de un proyecto\n public static globalConfiguration = ConfigurationEditor.newObject();\n\n get value_lectura(): string {\n if (this.value == null) {\n this.log() && console.log(\"value lectura is null\");\n return \"\";\n } // si es null o undefined (es lo que evalúa el \"==null\")\n else {\n this.log() && console.log(\"value lectura: \" + this.value);\n return this.value;\n }\n }\n\n writeValue(v: string): void {\n this.log() && console.log(`writeValue forComponent ${this.nombre()} with value ${v}`);\n if (!v) {\n this.value = \"\";\n } else {\n this.value = v;\n }\n }\n\n onChangeValue(text) {\n this.value = text;\n this.log() && console.log(\"_onSelect forComponent: \" + this.nombre() + \" with value:\" + this.value);\n this.changeComponentValue(this.value);\n }\n\n onInit(quill) {\n /*var toolbar = quill.editor.getModule('toolbar');\n toolbar.addHandler('link', function(value) {\n if (value) {\n var href = prompt('Introduzca la URL');\n this.quill.format('link', href);\n } else {\n this.quill.format('link', false);\n }\n });*/\n }\n\n _onTextChange(event) {\n this.log() && console.log(\"_onTextChange forComponent: \" + this.nombre() + \" with event:\", event);\n this.onTextChange.emit(event);\n }\n\n get configuracion(): ConfigurationEditor {\n const configuration = this.configuration();\n return configuration ? configuration : BitEditorComponent.globalConfiguration;\n }\n}\n","@if (!hideLabel()) {\n <label for=\"{{ nombre() }}\">\n <ng-content /> @if (obligatorio) {\n <span class=\"obligatorio fa fa-asterisk\"></span>\n } \n @if (ayuda()) {\n <i class=\"btn-ayuda fa fa-question\" (click)=\"showAyuda()\"></i>\n }\n </label>\n}\n@if (readOnly()) {\n <p class=\"lectura\">\n {{ value_lectura && value_lectura != \"\" ? value_lectura : \" \" }}\n </p>\n}\n@if (!readOnly() && tipo() == 'custom') {\n <p-editor\n id=\"{{ nombre() }}\"\n name=\"{{ nombre() }}\"\n [ngModel]=\"value\"\n styleClass=\"editor\"\n [disabled]=\"isDisabled()\"\n [placeholder]=\"placeholder()\"\n [style]=\"{ height: height() + 'px' }\"\n (onInit)=\"onInit($event)\"\n (ngModelChange)=\"onChangeValue($event)\"\n (onTextChange)=\"_onTextChange($event)\"\n attr.data-testid=\"{{ dataTestId()}}\"\n >\n <p-header>\n @if (configuracion.fontSize) {\n <span class=\"ql-formats\">\n <select class=\"ql-size\">\n <option value=\"small\">{{ \"bitnglibrary.form.biteditor.small\" | transloco }}</option>\n <!-- Note a missing, thus falsy value, is used to reset to default -->\n <option selected>{{ \"bitnglibrary.form.biteditor.normal\" | transloco }}</option>\n <option value=\"large\">{{ \"bitnglibrary.form.biteditor.large\" | transloco }}</option>\n <option value=\"huge\">{{ \"bitnglibrary.form.biteditor.huge\" | transloco }}</option>\n </select>\n </span>\n }\n @if (configuracion.fontFormat) {\n <span class=\"ql-formats\">\n <button class=\"ql-bold\" aria-label=\"Bold\"></button>\n <button class=\"ql-italic\" aria-label=\"Italic\"></button>\n <button class=\"ql-underline\" aria-label=\"Underline\"></button>\n <button class=\"ql-strike\" aria-label=\"Strikethrough\"></button>\n </span>\n }\n @if (configuracion.bullet) {\n <span class=\"ql-formats\">\n <button class=\"ql-list\" aria-label=\"Insert Ordered List\" value=\"ordered\" type=\"button\"></button>\n <button class=\"ql-list\" aria-label=\"Insert Bullet List\" value=\"bullet\" type=\"button\"></button>\n </span>\n }\n @if (configuracion.link) {\n <span class=\"ql-formats\">\n <button class=\"ql-link\" aria-label=\"Insert Link\" type=\"button\"></button>\n </span>\n }\n </p-header>\n </p-editor>\n}\n@if (!readOnly() && (!tipo() || tipo() == 'default')) {\n <p-editor id=\"{{ nombre() }}\"\n name=\"{{ nombre() }}\"\n [ngModel]=\"value\"\n styleClass=\"editor\"\n [placeholder]=\"placeholder()\"\n [placeholder]=\"placeholder()\"\n [style]=\"{ height: height() + 'px' }\"\n (ngModelChange)=\"onChangeValue($event)\"\n attr.data-testid=\"{{ dataTestId()}}\"\n />\n}\n@if (control() != null) {\n <control-messages [control]=\"control()\" [field]=\"nombre()\" />\n}\n","import { Component, computed, input, inject } from '@angular/core';\nimport { ActivatedRoute } from '@angular/router';\n\nimport { AyudaService, DateUtils, SessionSharedService } from '../../../services';\n\n@Component({\n selector: \"bit-readonly\",\n templateUrl: \"bit-readonly.component.html\",\n standalone: false\n})\nexport class BitReadonlyComponent {\n protected router = inject(ActivatedRoute);\n protected sessionShared = inject(SessionSharedService);\n protected ayudaService = inject(AyudaService);\n protected dateUtils = inject(DateUtils);\n\n readonly ayuda = input<string>();\n readonly valor = input<any>();\n readonly tipo = input<\"text\" | \"textarea\" | \"number\" | \"date\" | \"datetime\" | \"time\" | \"boolean\" | \"list\" | \"list-multiple\">(\"text\"); // text (default), date, datetime, time, boolean, textarea, list, list-multiple\n readonly hideLabel = input<boolean>(false);\n readonly data = input<any[]>(); //lista de valores estáticos con lo que inicializamos el select\n \n isTextarea = computed(() => this.tipo() === \"textarea\"); \n opcionesDropdown = computed<any[]>(() => {\n return (this.data() && this.data().slice()) || [];\n });\n\n showAyuda() {\n this.ayudaService.mostrarAyuda(this.ayuda());\n }\n\n get value_lectura(): string {\n const valor = this.valor();\n switch (this.tipo()) {\n case \"date\":\n return valor ? this.dateUtils.getDateAsString(this.dateUtils.stringShortToDate(valor)) : \"\";\n case \"datetime\":\n return valor ? this.dateUtils.getDateTimeAsString(this.dateUtils.stringToDate(valor)) : \"\";\n case \"time\":\n return valor ? this.dateUtils.getTimeAsString(this.dateUtils.stringToTime(valor)) : \"\";\n case \"boolean\":\n return valor ? \"Sí\" : \"No\";\n case \"list\":\n let d = this.opcionesDropdown().find(d => d.value == valor);\n return d ? d.label : \"\";\n case \"list-multiple\":\n let labels: any[] = this.opcionesDropdown() && this.opcionesDropdown().filter(d => valor && valor.indexOf(d.value) > -1).map(d => d.label);\n return labels ? labels.join(\", \") : null;\n default:\n return valor;\n }\n }\n}\n","@if (!hideLabel()) {\n <label>\n <ng-content /> \n @if (ayuda()) {\n <i class=\"btn-ayuda fa fa-question\" (click)=\"showAyuda()\"></i>\n }\n </label>\n}\n@if (!isTextarea()) {\n <p class=\"lectura\">{{value_lectura}}</p>\n}\n@if (isTextarea()) {\n <pre class=\"lectura\">{{value_lectura}}</pre>\n}","import { Component, ElementRef, forwardRef, HostListener, ViewChild, input, viewChild } from \"@angular/core\";\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from \"@angular/forms\";\n\nimport { BitCustomComponent } from \"../bit-custom.component\";\n\n@Component({\n selector: \"bit-number\",\n templateUrl: \"bit-number.component.html\",\n providers: [{\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => BitNumberComponent),\n multi: true\n }],\n standalone: false\n})\nexport class BitNumberComponent extends BitCustomComponent implements ControlValueAccessor {\n readonly modo = input<\"decimal\" | \"currency\">(\"decimal\");\n readonly divisa = input<string>();\n readonly prefijo = input<string>();\n readonly sufijo = input<string>();\n readonly minimo = input<number>();\n readonly maximo = input<number>();\n readonly numeroDecimales = input<number>();\n readonly maximoDecimales = input<number>();\n readonly separadorGrupo = input<boolean>(false);\n readonly mostrarBotones = input<boolean>();\n readonly incremento = input<number>(1);\n\n inputElement = viewChild<ElementRef>('inputReference');\n\n value: number;\n\n get value_lectura(): number {\n this.log() && console.log(\"value lectura: \" + this.value);\n return this.value;\n }\n\n writeValue(v: number): void {\n this.log() && console.log(`writeValue forComponent ${this.nombre()} with value ${v}`);\n this.value = v;\n }\n\n onChangeValue(text) {\n this.log() && console.log(\"_onChangeValue forComponent: \" + this.nombre() + \" with value:\" + text);\n this.value = text;\n this.changeComponentValue(this.value);\n }\n\n // Hasta que https://github.com/primefaces/primeng/issues/11442 no se resuelva,\n // hacemos esta triquiñuela para que al pulsar el 'punto' o la 'coma'\n // se nos situe el cursor en la primera posición decimal.\n // (basado en https://github.com/primefaces/primeng/issues/8985#issuecomment-1351712540 y\n // https://stackoverflow.com/a/70303350/9741090)\n // @HostListener(\"keydown\", [\"$event.key\"])\n // onKeyDown(key: string) {\n // const input = this.inputElement().nativeElement.firstChild.childNodes[0] as HTMLInputElement;\n // if (!input) return;\n\n // if (key === \",\" || key === \".\") {\n // if (input.value.indexOf(\",\") === -1) {\n // input.value += \",\";\n // } else {\n // let posicionComa: number = input.value.indexOf(\",\");\n // input.focus();\n // input.setSelectionRange(posicionComa + 1, posicionComa + 1);\n // }\n // } else if (key === \"ArrowLeft\") {\n // // corregir efecto cursor a la izquierda si estamos detrás de €\n // if (this.modo() === \"currency\") {\n // let posicionEspacio: number = input.value.indexOf(String.fromCharCode(160));\n // if (posicionEspacio > 0 && input.selectionStart > posicionEspacio) {\n // input.setSelectionRange(posicionEspacio, posicionEspacio);\n // }\n // }\n // // corregir efecto cursor a la izquierda con el texto seleccionado por completo\n // if (input.selectionStart === 0 && input.selectionEnd === input.value.length) {\n // input.setSelectionRange(0, 0);\n // }\n // }\n // }\n}\n","@if (!hideLabel()) {\n <label for=\"{{ nombre() }}\">\n <ng-content /> @if (obligatorio) {\n <span class=\"obligatorio fa fa-asterisk\"></span>\n } \n @if (ayuda()) {\n <i class=\"btn-ayuda fa fa-question\" (click)=\"showAyuda()\"></i>\n }\n </label>\n}\n@if (readOnly()) {\n <p class=\"lectura\" [id]=\"nombre()\">{{ value_lectura }}</p>\n}\n@if (!tooltipTexto() && !readOnly()) {\n <p-inputNumber\n #inputReference\n id=\"{{ nombre() }}\"\n name=\"{{ nombre() }}\"\n ariaLabel=\"{{ nombre() }}\"\n [disabled]=\"isDisabled()\"\n [ngModel]=\"value\"\n [attr.directive]=\"nombreDirectiva()\"\n [placeholder]=\"placeholder()\"\n [mode]=\"modo()\"\n [currency]=\"divisa()\"\n [prefix]=\"prefijo()\"\n [suffix]=\"sufijo()\"\n [min]=\"minimo()\"\n [max]=\"maximo()\"\n [minFractionDigits]=\"numeroDecimales()\"\n [maxFractionDigits]=\"maximoDecimales() == null ? numeroDecimales() : maximoDecimales()\"\n [useGrouping]=\"separadorGrupo()\"\n [showButtons]=\"mostrarBotones()\"\n [step]=\"incremento()\"\n locale=\"es-ES\"\n (ngModelChange)=\"onChangeValue($event)\"\n (blur)=\"_onBlur()\"\n (focus)=\"_onFocus()\"\n attr.data-testid=\"{{ dataTestId()}}\"\n />\n}\n@if (tooltipTexto() && !readOnly()) {\n <p-inputNumber\n #inputReference\n id=\"{{ nombre() }}\"\n name=\"{{ nombre() }}\"\n ariaLabel=\"{{ nombre() }}\"\n [disabled]=\"isDisabled()\"\n [ngModel]=\"value\"\n [attr.directive]=\"nombreDirectiva()\"\n [pTooltip]=\"tooltipTexto()\"\n [tooltipPosition]=\"tooltipPosicion()\"\n [mode]=\"modo()\"\n [currency]=\"divisa()\"\n [prefix]=\"prefijo()\"\n [suffix]=\"sufijo()\"\n [min]=\"minimo()\"\n [max]=\"maximo()\"\n [minFractionDigits]=\"numeroDecimales()\"\n [maxFractionDigits]=\"maximoDecimales() == null ? numeroDecimales() : maximoDecimales()\"\n [useGrouping]=\"separadorGrupo()\"\n [showButtons]=\"mostrarBotones()\"\n [step]=\"incremento()\"\n locale=\"es-ES\"\n (ngModelChange)=\"onChangeValue($event)\"\n (blur)=\"_onBlur()\"\n (focus)=\"_onFocus()\"\n attr.data-testid=\"{{ dataTestId()}}\"\n />\n}\n@if (control() != null) {\n <control-messages [control]=\"control()\" [field]=\"nombre()\" />\n}\n","import { Component, forwardRef, input } from \"@angular/core\";\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from \"@angular/forms\";\n\nimport { BitNumberComponent } from \"../number/bit-number.component\";\n\n@Component({\n selector: \"bit-amount\",\n templateUrl: \"../number/bit-number.component.html\",\n providers: [{\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => BitAmountComponent),\n multi: true\n }],\n standalone: false\n})\nexport class BitAmountComponent extends BitNumberComponent implements ControlValueAccessor {\n readonly prefijo = input<string>();\n readonly sufijo = input<string>();\n readonly minimo = input<number>();\n readonly maximo = input<number>();\n readonly mostrarBotones = input<boolean>();\n readonly incremento = input<number>();\n readonly modo = input<\"decimal\" | \"currency\">(\"currency\");\n readonly divisa = input<string>(\"EUR\");\n readonly maximoDecimales = input<number>(2);\n readonly separadorGrupo = input<boolean>(true);\n}\n","import { Injectable, signal } from \"@angular/core\";\n\n/** Esta clase contiene información sobre el menú pulsado por el usuairo. Permite setear dicho valor y recuperarlo mediante un signal */\n@Injectable({ providedIn: \"root\" })\nexport class MenuService {\n private currentMenu$ = signal<MenuTitle | undefined>(undefined);\n constructor() {}\n\n setCurrentMenu(menuTitle: MenuTitle) {\n this.currentMenu$.set(menuTitle);\n }\n\n // retorna el signal con la información del menú actualmente pulsado\n getCurrentMenu() {\n return this.currentMenu$;\n }\n}\n\nexport class MenuTitle {\n public menuName: string;\n public submenuName: string;\n constructor(menuName: string, submenuName: string) {\n this.menuName = menuName;\n this.submenuName = submenuName;\n }\n}\n","import { Component, ChangeDetectionStrategy, inject, input, output } from \"@angular/core\";\nimport { MenuItem } from \"primeng/api\";\nimport { StorageService } from \"../../services/storage.service\";\nimport { MenuTitle } from \"../../services/menu.service\";\n\n@Component({\n selector: \"bit-sidebar\",\n templateUrl: \"./bit-sidebar.component.html\",\n styleUrls: [\"bit-sidebar.component.css\"],\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: false\n})\nexport class BitSidebarComponent {\n readonly items = input<MenuItem[]>(undefined);\n readonly visibilidad = input<boolean>(undefined);\n readonly onSelectLanguage = output<any>();\n readonly onCloseMenu = output<boolean>();\n readonly onMenuTitle = output<MenuTitle>();\n\n // servicio para almacenar datos en la sesión del navegador\n storageService = inject(StorageService);\n\n closeMenu() {\n this.onCloseMenu.emit(true);\n }\n\n clickMenu(item) {\n item.expanded = !item.expanded;\n this.storageService.setData(StorageService.MENU, this.items());\n }\n\n clickMenuItem(event: any, item: MenuItem, subitem: MenuItem) {\n event.stopPropagation();\n this.closeMenu();\n if (subitem.routerLink) {\n this.onMenuTitle.emit(new MenuTitle(item.label, subitem.label));\n } else {\n window.open(subitem.url, \"_blank\");\n }\n }\n\n selectLanguage(language) {\n this.closeMenu();\n this.onSelectLanguage.emit(language);\n }\n}\n","<div id=\"mySidebar\" class=\"sidebar\" [style.min-width]=\"visibilidad() ? '300px' : '0px'\">\n <i class=\"closebtn fa fa-times\" (click)=\"closeMenu()\"></i>\n <ul>\n @for (item of items(); track item) {\n <li class=\"item\" (click)=\"clickMenu(item)\">\n @if (item.items.length > 0) {\n <i class=\"fa\" [ngClass]=\"{'fa-chevron-right':!item.expanded,'fa-chevron-down':item.expanded}\"></i>\n }\n {{ \"menu.\" + item.label | transloco }}\n @if (item.expanded) {\n <ul>\n @for (subitem of item.items; track subitem) {\n <li class=\"subitem\" [routerLink]=\"subitem.routerLink\" (click)=\"clickMenuItem($event, item, subitem)\">\n <i class=\"{{subitem.icon}}\"></i> \n <a>{{ \"menu.\" + subitem.label | transloco }}</a></li>\n }\n </ul>\n }\n </li>\n }\n </ul>\n <!-- <p class=\"idioma-selector\"> \n <bit-language-selector (onSelectLanguage)=\"selectLanguage($event)\"></bit-language-selector>\n </p> -->\n <p class=\"nombre-desarrollado\">{{ \"menu.desarrollado-por\" | transloco }} <a href=\"https://www.caib.es/webgoib/w/agencia-balear-digitalitzacio-ciberseguretat-i-telecomunicacions\" target=\"_blank\">IB Digital</a></p>\n</div>\n","import { Component, inject, computed, output, effect } from \"@angular/core\";\nimport { SelectButtonOptionClickEvent } from \"primeng/selectbutton\";\nimport { ThemeFBitService } from \"../../services/theme-fbit.service\";\n\n@Component({\n selector: \"bit-theme-selector\",\n templateUrl: \"./bit-theme-selector.component.html\",\n standalone: false \n})\nexport class BitThemeSelectorComponent {\n onChangeTheme = output<string>();\n themeFBitService = inject(ThemeFBitService);\n\n themeList$ = computed(() =>\n this.themeFBitService.themeList$().map((theme) => {\n return { name: theme };\n })\n );\n currentTheme$ = computed(() => {\n return this.themeFBitService.currentTheme$();\n });\n\n constructor() {\n effect(() => {\n console.log(\"theme\", this.currentTheme$());\n console.log(\"themeList\", this.themeList$());\n });\n }\n\n selectGroupChanged(_event: SelectButtonOptionClickEvent) {\n console.log(\"event\", _event);\n this.selectTheme(_event.option[\"name\"]);\n }\n\n selectTheme(theme) {\n this.themeFBitService.changeTheme(theme);\n this.onChangeTheme.emit(theme);\n }\n}\n","<p-selectbutton \n [options]=\"themeList$()\" \n [ngModel]=\"currentTheme$()\" \n optionLabel=\"name\" \n optionValue=\"name\" \n (onOptionClick)=\"selectGroupChanged($event)\"/>","import { Component, ChangeDetectionStrategy, inject, signal, linkedSignal, output } from \"@angular/core\";\nimport { SelectButtonOptionClickEvent } from \"primeng/selectbutton\";\nimport { LocaleService } from \"../../services/locale.service\";\n\n@Component({\n selector: \"bit-language-selector\",\n templateUrl: \"./bit-language-selector.component.html\",\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: false\n})\nexport class BitLanguageSelectorComponent {\n readonly onSelectLanguage = output<string>();\n\n localeService: LocaleService = inject(LocaleService);\n languageList$ = signal(this.localeService.locales);\n currentLanguage$ = linkedSignal(() => this.localeService.locale$());\n //signal(this.localeService.locale$());\n\n selectGroupChanged(_event: SelectButtonOptionClickEvent) {\n console.log(\"event\", _event);\n this.selectLanguage(_event.option[\"value\"]);\n }\n\n selectLanguage(language) {\n this.localeService.updateLocale(language);\n this.currentLanguage$.set(language);\n this.onSelectLanguage.emit(language);\n }\n}\n","<p-selectbutton \n [options]=\"languageList$()\" \n [ngModel]=\"currentLanguage$()\" \n optionLabel=\"label\" \n optionValue=\"value\" \n (onOptionClick)=\"selectGroupChanged($event)\"/>","import { Component, inject, OnInit, output } from \"@angular/core\";\nimport { ThemeFBitService } from \"../../services/theme-fbit.service\";\n\n@Component({\n selector: \"bit-settings\",\n templateUrl: \"bit-settings.component.html\",\n styleUrl: \"bit-settings.component.css\",\n standalone: false\n})\nexport class BitSettingsComponent implements OnInit {\n onSelectLanguage = output<string>();\n themeFBitService = inject(ThemeFBitService);\n isDarkMode: boolean = false;\n onDarkModeChange = output<boolean>();\n\n constructor() {}\n\n ngOnInit() {\n this.isDarkMode = this.themeFBitService.darkMode$();\n if (this.isDarkMode) {\n this.themeFBitService.toggleDarkMode();\n }\n }\n\n selectLanguage(language) {\n this.onSelectLanguage.emit(language);\n }\n\n toggleDarkMode(event) {\n this.themeFBitService.toggleDarkMode();\n this.themeFBitService.setDarkMode(this.isDarkMode);\n this.onDarkModeChange.emit(this.isDarkMode); // Emit the new state\n }\n}\n","<ng-container *transloco=\"let t\">\n <a href=\"#\" (click)=\"op.toggle($event); $event.preventDefault();\" class=\"pi pi-cog icono-header\" pTooltip=\"{{ t('configselection') }}\" tooltipPosition=\"left\" aria-label=\"{{ t('configselection') }}\"></a>\n <p-popover #op ariaLabel=\"{{ t('configselection') }}\">\n <div class=\"config-panel-settings\">\n <span class=\"config-panel-label\">{{ t('themelabel') }}</span>\n <bit-theme-selector />\n <span class=\"config-panel-label\">{{ t('darkmodeselection') }}</span>\n <div class=\"flex gap-2 align-items-center\">\n <span class=\"fa-solid fa-moon\"></span>\n <p-toggleswitch ariaLabel=\"{{ t('darkmodeselection') }}\" [(ngModel)]=\"isDarkMode\" (onChange)=\"toggleDarkMode($event);\" attr.data-testid=\"darkMode\"/>\n </div>\n <span class=\"config-panel-label\">{{ t('languageselection') }}</span>\n <div class=\"flex gap-2 align-items-center\">\n <span class=\"fa-solid fa-globe\"></span>\n <bit-language-selector (onSelectLanguage)=\"selectLanguage($event)\"/>\n </div>\n \n </div> \n </p-popover>\n</ng-container>","import { Pipe, PipeTransform } from \"@angular/core\";\n\n/**\n * Pipe que muestra en una unidad \"human-readable\" el tamaño de un fichero\n */\n\nexport type ByteUnit = \"B\" | \"kB\" | \"KB\" | \"MB\" | \"GB\" | \"TB\";\n\n@Pipe({\n name: \"bytes\",\n standalone: false\n})\nexport class BytesPipe implements PipeTransform {\n static formats: { [key: string]: { max: number; prev?: ByteUnit } } = {\n B: { max: 1024 },\n kB: { max: Math.pow(1024, 2), prev: \"B\" },\n KB: { max: Math.pow(1024, 2), prev: \"B\" }, // Backward compatible\n MB: { max: Math.pow(1024, 3), prev: \"kB\" },\n GB: { max: Math.pow(1024, 4), prev: \"MB\" },\n TB: { max: Number.MAX_SAFE_INTEGER, prev: \"GB\" }\n };\n\n transform(input: any, decimal = 0, from: ByteUnit = \"B\", to?: ByteUnit): any {\n if (!(isNumberFinite(input) && isNumberFinite(decimal) && isInteger(decimal) && isPositive(decimal))) {\n return input;\n }\n\n let bytes = input;\n let unit = from;\n while (unit !== \"B\") {\n bytes *= 1024;\n unit = BytesPipe.formats[unit].prev as ByteUnit;\n }\n\n if (to) {\n const format = BytesPipe.formats[to];\n\n const result = toDecimal(BytesPipe.calculateResult(format, bytes), decimal);\n\n return BytesPipe.formatResult(result, to);\n }\n\n for (const key in BytesPipe.formats) {\n if (BytesPipe.formats.hasOwnProperty(key)) {\n const format = BytesPipe.formats[key];\n if (bytes < format.max) {\n const result = toDecimal(BytesPipe.calculateResult(format, bytes), decimal);\n\n return BytesPipe.formatResult(result, key);\n }\n }\n }\n }\n\n static formatResult(result: number, unit: string): string {\n if (result) {\n return `${result.toLocaleString(\"ca-ES\")} ${unit}`;\n } else {\n return `0 ${unit}`;\n }\n }\n\n static calculateResult(format: { max: number; prev?: ByteUnit }, bytes: number) {\n const prev = format.prev ? BytesPipe.formats[format.prev] : undefined;\n return prev ? bytes / prev.max : bytes;\n }\n}\n\nfunction isNumber(value: any): value is number {\n return typeof value === \"number\";\n}\n\nfunction isNumberFinite(value: any): value is number {\n return isNumber(value) && isFinite(value);\n}\n\n// Not strict positive\nfunction isPositive(value: number): boolean {\n return value >= 0;\n}\n\nfunction isInteger(value: number): boolean {\n // No rest, is an integer\n return value % 1 === 0;\n}\n\nfunction toDecimal(value: number, decimal: number): number {\n return Math.round(value * Math.pow(10, decimal)) / Math.pow(10, decimal);\n}\n","import { Pipe, PipeTransform } from \"@angular/core\";\n\n/**\n * Cambia a mayúscula el primer carácter de un texto.\n */\n@Pipe({\n name: \"capitalize\",\n standalone: false\n})\nexport class CapitalizePipe implements PipeTransform {\n transform(texto: string): string {\n if (texto && texto.length > 0) {\n return texto.charAt(0).toUpperCase() + texto.slice(1);\n } else {\n return texto;\n }\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\n\n@Pipe({\n name: 'cutText',\n standalone: false\n})\nexport class CutTextPipe implements PipeTransform {\n transform(value: string, maxLength: number = 40): any {\n if (!value) return value;\n if (value.length < maxLength) {\n return value;\n }\n return value.substring(0, maxLength) + \"...\";\n }\n}","import { Pipe, PipeTransform } from \"@angular/core\";\nimport { Domain } from \"../data\";\n\n@Pipe({\n name: \"domainListValue\",\n standalone: false\n})\nexport class DomainListValuePipe implements PipeTransform {\n transform(list: any[], domain: Domain[]) {\n let s = \"\";\n if (list && list.length > 0) {\n for (let value of list) {\n // buscar traducción para el valor en el dominio\n let domainMatch = domain && domain.find((obj) => obj.value == value);\n if (domainMatch) s = s + domainMatch.label + \", \";\n else if (value) s = s + String(`??${value}??`) + \", \";\n }\n }\n if (s.endsWith(\", \")) s = s.substring(0, s.length - 2);\n return s;\n }\n}\n","import { Pipe, PipeTransform } from \"@angular/core\";\nimport { Domain } from \"../data\";\n\n@Pipe({\n name: \"domainValue\",\n standalone: false\n})\nexport class DomainValuePipe implements PipeTransform {\n transform(value: any, domain: Domain[]) {\n // buscar traducción para el valor en el dominio\n let domainMatch = domain && domain.find((obj) => obj.value == value);\n\n if (domainMatch) {\n return domainMatch.label;\n } else if (value) {\n return String(`??${value}??`);\n } else {\n return \"\";\n }\n }\n}\n","import { Pipe, PipeTransform } from \"@angular/core\";\n\n@Pipe({\n name: \"listValue\",\n standalone: false\n})\nexport class ListValuePipe implements PipeTransform {\n transform(list: any[], field: string) {\n let s = \"\";\n if (list && list.length > 0) {\n for (let value of list) {\n s = s + value[field] + \", \";\n }\n }\n if (s.endsWith(\", \")) s = s.substring(0, s.length - 2);\n return s;\n }\n}\n","import { Pipe, PipeTransform } from \"@angular/core\";\n\n@Pipe({\n name: \"otherToolbarAction\",\n standalone: false\n})\n/**\n * Convierte un map de acciones del toolbar en un array de acciones pero conteniendo\n * solo aquellas acciones que tengan la propiedad otherAction definida a true\n */\nexport class OtherToolbarActionPipe implements PipeTransform {\n transform(toolbarMap: any): any[] {\n let actions = [];\n for (var key in toolbarMap) {\n if (toolbarMap[key].otherAction) {\n actions.push(toolbarMap[key]);\n }\n }\n return actions;\n }\n}\n","import { Pipe, PipeTransform } from \"@angular/core\";\n\n@Pipe({\n name: \"removeLineBreaks\",\n standalone: false\n})\n/**\n * Acorta un texto con saltos de línea, sustituyendo los saltos por \"//\" y limitando la cadena final a 200 caracteres\n */\nexport class RemoveLineBreaksPipe implements PipeTransform {\n transform(str: string): string {\n if (str.indexOf(\"\\n\") > 0) {\n str = str\n .split(\"\\n\")\n .filter(line => line.trim().length > 0)\n .join(\" // \");\n }\n if (str.length > 200) {\n str = str.substring(0, 200) + \" ...\";\n }\n return str;\n }\n}\n","import {Pipe, PipeTransform} from \"@angular/core\";\n\n@Pipe({\n name: \"siONo\",\n standalone: false\n})\nexport class SiONoPipe implements PipeTransform {\n transform(value: boolean, nullable?: boolean): string {\n if (nullable) {\n return value ? \"Sí\" : value == null ? \"\" : \"No\";\n } else {\n return value ? \"Sí\" : \"No\";\n }\n }\n}\n","import { Pipe, PipeTransform } from \"@angular/core\";\n\n@Pipe({\n name: \"stringify\",\n standalone: false\n})\nexport class StringifyPipe implements PipeTransform {\n transform(value: any) {\n return JSON.stringify(value);\n }\n}\n","import { BytesPipe } from \"./bytes.pipe\";\nimport { CapitalizePipe } from \"./capitalize.pipe\";\nimport { CutTextPipe } from \"./cut-text.pipe\";\nimport { DomainListValuePipe } from \"./domain-list-value.pipe\";\nimport { DomainValuePipe } from \"./domain-value.pipe\";\nimport { ListValuePipe } from \"./list-value.pipe\";\nimport { OtherToolbarActionPipe } from \"./other-actions.pipe\";\nimport { CantidadMonedaPipe } from \"./pipe-cantidadmoneda.pipe\";\nimport { RemoveLineBreaksPipe } from \"./remove-line-breaks.pipe\";\nimport { SiONoPipe } from \"./si-o-no.pipe\";\nimport { StringifyPipe } from \"./stringify.pipe\";\n\nexport * from \"./bytes.pipe\";\nexport * from \"./capitalize.pipe\";\nexport * from \"./cut-text.pipe\";\nexport * from \"./other-actions.pipe\";\nexport * from \"./pipe-cantidadmoneda.pipe\";\nexport * from \"./remove-line-breaks.pipe\";\nexport * from \"./domain-list-value.pipe\";\nexport * from \"./domain-value.pipe\";\nexport * from \"./list-value.pipe\";\nexport * from \"./si-o-no.pipe\";\nexport * from \"./stringify.pipe\"\n\nexport const pipes: any[] = [BytesPipe, CapitalizePipe, CutTextPipe, DomainValuePipe, DomainListValuePipe, ListValuePipe, OtherToolbarActionPipe, CantidadMonedaPipe, RemoveLineBreaksPipe, SiONoPipe, StringifyPipe];\n","import { Directive, inject } from \"@angular/core\";\nimport { Subscription } from \"rxjs\";\nimport { Popover } from \"primeng/popover\";\nimport { BitPanelService } from \"../services/bit-panel.service\";\n\n/**\n * Directiva para poder acceder al panel de alertas a modo de interactuar con él como por ejemplo poder abrirlo y cerrarlo\n */\n@Directive({\n selector: \"[bitpanel]\",\n standalone: false\n})\nexport class BitPanelDirective {\n suscription: Subscription;\n\n bitPanelService: BitPanelService = inject(BitPanelService); // con este servicio podremos suscribirnos para recibir la orden de abrir o cerrar\n overlay: Popover = inject(Popover); // accederemos al componente Overlay al que estamos enganchados cual sanguijuela\n\n ngOnInit() {\n // Nos suscribimos a las notificaciones para abrir o cerrar el panel\n this.suscription = this.bitPanelService.getTooglePanel().subscribe((event) => {\n this.overlay && this.overlay.toggle(event); // abrete o cierrate sésamo\n });\n }\n\n ngOnDestroy() {\n this.suscription && this.suscription.unsubscribe();\n }\n}\n","import { BitPanelDirective } from \"./bit-panel.directive\";\nimport { FocusRegisterDirective } from \"./focus-register.directive\";\n\nexport * from \"./bit-panel.directive\";\nexport * from \"./focus-register.directive\";\n\nexport const directives: any[] = [\n BitPanelDirective,\n FocusRegisterDirective\n]","import { Component, forwardRef, input } from \"@angular/core\";\n\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from \"@angular/forms\";\nimport { BitCustomComponent } from \"../bit-custom.component\";\n\n@Component({\n selector: \"bit-switch-si-no\",\n templateUrl: \"bit-switch-si-no.component.html\",\n providers: [{\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => BitSwitchSiNoComponent),\n multi: true\n }],\n standalone: false\n})\nexport class BitSwitchSiNoComponent extends BitCustomComponent implements ControlValueAccessor {\n\n readonly valorTrue = input<any>(true);\n readonly valorFalse = input<any>(false);\n\n value: Boolean;\n\n get value_lectura(): string {\n this.log() && console.log(\"value lectura: \" + this.value);\n return this.value ? \"Sí\" : \"No\";\n }\n\n writeValue(v: Boolean): void {\n this.log() && console.log(`writeValue forComponent ${this.nombre()} with value ${v}`);\n this.value = v;\n }\n\n onChangeValue(event: { checked: Boolean; }) {\n this.value = event.checked;\n this.log() && console.log(\"_onChangeValue forComponent: \" + this.nombre() + \" with value:\" + this.value);\n this.changeComponentValue(this.value);\n }\n\n}\n","@if (!hideLabel()) {\n <label for=\"{{ nombre() }}\">\n <ng-content /> @if (obligatorio) {\n <span class=\"obligatorio fa fa-asterisk\"></span>\n } \n @if (ayuda()) {\n <i class=\"btn-ayuda fa fa-question\" (click)=\"showAyuda()\"></i>\n }\n </label>\n}\n@if (readOnly()) {\n <p class=\"lectura\" [id]=\"nombre()\">{{ value_lectura }}</p>\n}\n@if (!readOnly()) {\n <p-toggleswitch onLabel=\"Sí\"\n offLabel=\"No\"\n binary=\"true\"\n [(ngModel)]=\"value\"\n name=\"{{ nombre() }}\"\n ariaLabel=\"{{ nombre() }}\"\n [disabled]=\"isDisabled()\"\n id=\"{{ nombre() }}\"\n [trueValue]=\"valorTrue()\"\n [falseValue]=\"valorFalse()\"\n (onChange)=\"onChangeValue($event)\"\n attr.data-testid=\"{{ dataTestId()}}\"\n />\n}\n@if (control() != null) {\n <control-messages [control]=\"control()\" [field]=\"nombre()\" />\n}\n","import { Component, computed, forwardRef, input, signal } from \"@angular/core\";\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from \"@angular/forms\";\nimport { CheckboxChangeEvent } from \"primeng/checkbox\";\nimport { BitCustomComponent } from \"../bit-custom.component\";\nimport { Domain } from \"../../../data\";\n\n@Component({\n selector: \"bit-checkbox-multiple\",\n templateUrl: \"bit-multiple-checkbox.component.html\",\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => BitMultipleCheckboxComponent),\n multi: true\n }\n ],\n standalone: false\n})\nexport class BitMultipleCheckboxComponent extends BitCustomComponent implements ControlValueAccessor {\n readonly chekAll = input<boolean>(true);\n readonly data = input<Domain[]>();\n\n isCheckAll = signal<boolean>(false);\n estiloCheckAll = computed(()=> {\n if (this.isCheckAll()) {\n return \"pi pi-check-square\";\n } else {\n return \"pi pi-stop\";\n }\n });\n value: (string | boolean)[];\n\n get value_lectura(): string {\n if (this.value) {\n // Mostramos los labels del dominio que está en data.\n let v = this.value.map((v: string | boolean) => {\n const label = this.data()?.find((d: Domain) => d.value === v)?.label;\n return label ? label : v;\n })?.join(\", \");\n this.log() && console.log(\"value lectura\", v);\n return v;\n } else {\n this.log() && console.log(\"value lectura is blank\");\n return \"\";\n }\n }\n\n writeValue(v: string[]): void {\n this.log() && console.log(`writeValue forComponent ${this.nombre()} with value ${v}`);\n this.value = v;\n this.refreshCheckAll();\n }\n\n onChangeValue(event: CheckboxChangeEvent) {\n let selected: string[] = event && event.checked;\n this.log() && console.log(\"onChangeValue forComponent: \" + this.nombre() + \" selected:\" + selected);\n if (selected && selected.length > 0) {\n this.value = selected; \n } else {\n this.value = null;\n }\n\n this.refreshCheckAll();\n this.changeComponentValue(this.value);\n }\n\n onCheckAll() {\n this.isCheckAll.update((value) => !value);\n this.log() && console.log(\"onCheckAll forComponent: \" + this.nombre() + \" with new value for checkAll:\" + this.isCheckAll());\n if (this.isCheckAll()) {\n this.value = this.data().map((v: Domain) => v.value);\n this.log() && console.log(\"currentValue: \" + this.value);\n } else {\n this.value = null;\n this.log() && console.log(\"currentValue is null\");\n }\n\n this.changeComponentValue(this.value);\n }\n\n private refreshCheckAll() {\n this.isCheckAll.set(this.data()?.length === this.value?.length);\n }\n}\n","<ng-container *transloco=\"let t\">\n\n @if (!hideLabel()) {\n <label for=\"{{ nombre() }}\">\n <ng-content /> \n @if (!readOnly() && this.chekAll()) {\n <i title=\"{{t('bitnglibrary.form.bitmultiplecheckbox.checkall')}}\"\n style=\"color: #ced4da\"\n class=\"font-normal cursor-pointer hover:text-blue-600 cursor-pointer text-sm {{ estiloCheckAll() }}\"\n (click)=\"onCheckAll()\"></i> \n }\n @if (obligatorio) {\n <span class=\"obligatorio fa fa-asterisk\"></span> \n }\n @if (ayuda()) {\n <i class=\"btn-ayuda fa fa-question\" (click)=\"showAyuda()\"></i>\n }\n </label>\n }\n\n @if (readOnly()) {\n <p class=\"lectura\" [id]=\"nombre()\">{{ value_lectura }}</p>\n } @else {\n\n @for (dominio of data(); track dominio) {\n <div class=\"field-checkbox inline-block\">\n <p-checkbox\n id=\"{{ nombre() + '-' + dominio.value }}\"\n name=\"{{ nombre() + '-' + dominio.value }}\"\n ariaLabel=\"{{ nombre() }}\"\n [value]=\"dominio.value\"\n [(ngModel)]=\"value\"\n [inputId]=\"dominio.value\"\n [disabled]=\"isDisabled()\"\n (onChange)=\"onChangeValue($event)\">\n attr.data-testid=\"{{ dataTestId() + \"-\" + dominio.value }}\"\n </p-checkbox>\n <label class=\"inline-block ml-2 mr-4 font-normal cursor-pointer hover:text-blue-400\"\n [for]=\"dominio.value\">{{ dominio.label }}</label>\n </div>\n }\n @if (ayuda()) {\n <i (click)=\"showAyuda()\" class=\"btn-ayuda-checkbox fa fa-question\"></i>\n }\n\n @if (control() != null) {\n <control-messages [control]=\"control()\" [field]=\"nombre()\" />\n }\n }\n\n</ng-container>\n","import { NgModule } from \"@angular/core\";\nimport { ReactiveFormsModule, FormsModule } from \"@angular/forms\";\nimport { CommonModule } from \"@angular/common\";\nimport { RouterModule } from \"@angular/router\";\n\nimport { TranslocoModule, TRANSLOCO_SCOPE } from \"@jsverse/transloco\";\n\nimport { DatePickerModule } from \"primeng/datepicker\";\nimport { InputTextModule } from \"primeng/inputtext\";\nimport { EditorModule } from \"primeng/editor\";\nimport { MultiSelectModule } from \"primeng/multiselect\";\nimport { SelectModule } from \"primeng/select\";\nimport { PaginatorModule } from \"primeng/paginator\";\nimport { CheckboxModule } from \"primeng/checkbox\";\nimport { ButtonModule } from \"primeng/button\";\nimport { RadioButtonModule } from \"primeng/radiobutton\";\nimport { TabsModule } from \"primeng/tabs\";\nimport { DialogModule } from \"primeng/dialog\";\nimport { AccordionModule } from \"primeng/accordion\";\nimport { AutoCompleteModule } from \"primeng/autocomplete\";\nimport { ToggleSwitchModule } from \"primeng/toggleswitch\";\nimport { TooltipModule } from \"primeng/tooltip\";\nimport { PopoverModule } from \"primeng/popover\";\nimport { MessageModule } from \"primeng/message\";\nimport { MenuModule } from \"primeng/menu\";\nimport { MenubarModule } from \"primeng/menubar\";\nimport { MegaMenuModule } from \"primeng/megamenu\";\nimport { TableModule } from \"primeng/table\";\nimport { TreeModule } from \"primeng/tree\";\nimport { DynamicDialogModule } from \"primeng/dynamicdialog\";\nimport { InputNumberModule } from \"primeng/inputnumber\";\nimport { FluidModule } from \"primeng/fluid\";\n\nimport { FieldsetModule } from \"primeng/fieldset\";\nimport { ToastModule } from \"primeng/toast\";\nimport { FileUploadModule } from \"ng2-file-upload\";\nimport { MessageService } from \"primeng/api\";\nimport { TreeTableModule } from \"primeng/treetable\";\nimport { TextareaModule } from \"primeng/textarea\";\nimport { BadgeModule } from \"primeng/badge\";\nimport { FileUploadModule as FileUploadModulePrimeNG } from \"primeng/fileupload\";\nimport { ChipModule } from \"primeng/chip\";\nimport { ToggleButtonModule } from \"primeng/togglebutton\";\nimport { SplitterModule } from \"primeng/splitter\";\nimport { ScrollPanelModule } from \"primeng/scrollpanel\";\nimport { TieredMenuModule } from \"primeng/tieredmenu\";\nimport { InputMaskModule } from \"primeng/inputmask\";\nimport { InputGroupAddonModule } from \"primeng/inputgroupaddon\";\nimport { InputGroupModule } from \"primeng/inputgroup\";\nimport { SelectButtonModule } from \"primeng/selectbutton\";\nimport { RippleModule } from \"primeng/ripple\";\nimport { SplitButtonModule } from \"primeng/splitbutton\";\n\nimport { BitBreadCrumbComponent } from \"./components/breadcrumb/bit-breadcrumb.component\";\nimport { BitControlMessages } from \"./components/contol-messages/bit-control-messages.component\";\nimport { BitDialogComponent } from \"./components/dialog/bit-dialog.component\";\nimport { BitFooterComponent } from \"./components/footer/bit-footer.component\";\nimport { BitHeaderComponent } from \"./components/header/bit-header.component\";\nimport { BitHelpComponent } from \"./components/help/bit-help.component\";\nimport { BitLoadingComponent } from \"./components/loading/bit-loading.component\";\nimport { BitNotificationToastComponent } from \"./components/notificacion/bit-notification-toast.component\";\nimport { BitNotificationErrorComponent } from \"./components/notificacion/bit-notification-error.component\";\nimport { BitToolbarComponent } from \"./components/toolbar/bit-toolbar.component\";\nimport { BitNGUploadComponent } from \"./components/upload/bit-ng-upload.component\";\nimport { BitUserControlsComponent } from \"./components/user/bit-user-controls.component\";\nimport { BitBotonAyudaComponent } from \"./components/misc/bit-boton-ayuda.component\";\nimport { BitColumnBooleanComponent } from \"./components/misc/bit-column-boolean.component\";\nimport { BitDomainValueComponent } from \"./components/misc/bit-domain-value.component\";\nimport { BitTextComponent } from \"./components/form/text/bit-text.component\";\nimport { BitTextAreaComponent } from \"./components/form/textarea/bit-textarea.component\";\nimport { BitDateComponent } from \"./components/form/date/bit-date.component\";\nimport { BitTimeComponent } from \"./components/form/time/bit-time.component\";\nimport { BitDateTimeComponent } from \"./components/form/datetime/bit-datetime.component\";\nimport { BitCheckBoxComponent } from \"./components/form/checkbox/bit-checkbox.component\";\nimport { BitSwitchComponent } from \"./components/form/switch/bit-switch.component\";\nimport { BitAutoCompleteComponent } from \"./components/form/autocomplete/bit-autocomplete.component\";\nimport { BitDropDownComponent } from \"./components/form/dropdown/bit-dropdown.component\";\nimport { BitDropDownMultipleComponent } from \"./components/form/dropdown/bit-dropdown-multiple.component\";\nimport { BitEditorComponent } from \"./components/form/editor/bit-editor.component\";\nimport { BitReadonlyComponent } from \"./components/form/readonly/bit-readonly.component\";\nimport { BitPajigatorComponent } from \"./components/footer/bit-pajigator.component\";\nimport { BitFooterMessagesComponent } from \"./components/footer/bit-footer-messages.component\";\nimport { BitNumberComponent } from \"./components/form/number/bit-number.component\";\nimport { BitAmountComponent } from \"./components/form/amount/bit-amount.component\";\nimport { BitSidebarComponent } from \"./components/misc/bit-sidebar.component\";\nimport { BitThemeSelectorComponent } from \"./components/theme/bit-theme-selector.component\";\nimport { BitSettingsComponent } from \"./components/settings/bit-settings.component\";\nimport { BitLanguageSelectorComponent } from \"./components/language/bit-language-selector.component\";\n\nimport { pipes } from \"./pipes\";\nimport { directives } from \"./directives\";\nimport { BitSwitchSiNoComponent } from \"./components/form/switch/bit-switch-si-no.component\";\nimport { BitMultipleCheckboxComponent } from \"./components/form/multiple-checkbox/bit-multiple-checkbox.component\";\n\nconst modules: any[] = [\n AccordionModule,\n AutoCompleteModule,\n BadgeModule,\n DatePickerModule,\n CheckboxModule,\n ChipModule,\n CommonModule,\n DialogModule,\n DynamicDialogModule,\n InputNumberModule,\n EditorModule,\n FieldsetModule,\n FileUploadModulePrimeNG,\n FluidModule,\n FormsModule,\n InputGroupAddonModule,\n InputGroupModule,\n InputMaskModule,\n ToggleSwitchModule,\n TextareaModule,\n InputTextModule,\n MegaMenuModule,\n MenubarModule,\n MenuModule,\n MultiSelectModule,\n SelectModule,\n PopoverModule,\n MessageModule,\n PaginatorModule,\n ButtonModule,\n RadioButtonModule,\n ReactiveFormsModule,\n RippleModule,\n ScrollPanelModule,\n SelectButtonModule,\n SplitButtonModule,\n SplitterModule,\n TableModule,\n TabsModule,\n TieredMenuModule,\n ToastModule,\n ToggleButtonModule,\n TooltipModule,\n TreeModule,\n TreeTableModule\n];\n\nexport const components: any[] = [\n BitBreadCrumbComponent,\n BitControlMessages,\n BitDialogComponent,\n BitFooterComponent,\n BitPajigatorComponent,\n BitFooterMessagesComponent,\n BitHeaderComponent,\n BitHelpComponent,\n BitLoadingComponent,\n BitNotificationToastComponent,\n BitNotificationErrorComponent,\n BitToolbarComponent,\n BitNGUploadComponent,\n BitUserControlsComponent,\n BitBotonAyudaComponent,\n BitColumnBooleanComponent,\n BitDomainValueComponent,\n BitSidebarComponent,\n BitSettingsComponent,\n BitLanguageSelectorComponent,\n BitThemeSelectorComponent\n];\n\nexport const formComponents: any[] = [\n BitTextComponent,\n BitTextAreaComponent,\n BitDateComponent,\n BitTimeComponent,\n BitDateTimeComponent,\n BitCheckBoxComponent,\n BitMultipleCheckboxComponent,\n BitSwitchComponent,\n BitSwitchSiNoComponent,\n BitAutoCompleteComponent,\n BitDropDownComponent,\n BitDropDownMultipleComponent,\n BitEditorComponent,\n BitReadonlyComponent,\n BitNumberComponent,\n BitAmountComponent\n];\n\n@NgModule({\n imports: [...modules, RouterModule, FileUploadModule, TranslocoModule],\n declarations: [...directives, ...components, ...formComponents, ...pipes],\n exports: [...modules, ...directives, ...pipes, ...components, ...formComponents],\n providers: [{ provide: TRANSLOCO_SCOPE, useValue: \"bitnglibrary\" }, MessageService]\n})\nexport class SharedLibraryModule {}\n","import { TranslatedMessage } from \"../../base/models\";\n\nexport class BitNotification {\n static INFO: BitNotificationSeverityType = \"info\";\n static WARN: BitNotificationSeverityType = \"warn\";\n static ERROR: BitNotificationSeverityType = \"error\";\n\n constructor(\n public title: TranslatedMessage,\n public message: TranslatedMessage,\n public severity: BitNotificationSeverityType = BitNotification.INFO, // info, warn, error\n public life?: number // Tiempo en milisegundos para que se cierre la notificación\n ) {}\n}\n\nexport type BitNotificationSeverityType = \"info\" | \"warn\" | \"error\";\n\n// Max valor para 32-bit signed integer = máximo que permite setTimeout en JavaScript (usado por PrimeNG para ocultar la notificación)\nexport const BIT_NOTIFICATION_MAX_LIFE: number = 2147483647;\n","import { TranslatedMessage, ErrorValidateForm } from \"../../base/models\";\nimport { BitNotification } from \"./bitnotification\";\n\nexport class BitNotificationError extends BitNotification {\n clearErrors: boolean;\n constructor(\n public title: TranslatedMessage,\n public message: TranslatedMessage,\n public context?: string,\n public multipleErrors?: ErrorValidateForm[],\n public detail?: string,\n public prefixErrorsMap?: { [key: string]: string }\n ) {\n super(title, message, BitNotification.ERROR);\n }\n}\n","/**\n * Clase base que contiene la información que todos los objetos de datos pueden necesitar.\n */\nexport class Item {\n constructor(public id: number) {}\n}\n","import { Item } from \"./item\";\n\nexport class Fichero extends Item {\n constructor(\n public id: number,\n public nombre: string,\n public fileName: string,\n public mimeType: string,\n public tamano: number,\n public fechaModificacion: string,\n public tipoFichero: string,\n public observaciones: string\n ) {\n super(id);\n }\n\n public static newObject(): Fichero {\n return new Fichero(null, \"\", \"\", \"\", 0, \"\", null, \"\");\n }\n}\n","\nimport { Observable } from \"rxjs\";\nimport { Injectable } from \"@angular/core\";\nimport { CanDeactivateFn } from \"@angular/router\";\n\nexport interface CanComponentDeactivate {\n canDeactivate: () => boolean | Observable<boolean>;\n}\n\n/**\n * CanDeactivate guard function version\n * @param component\n * @returns\n */\nexport const CanDeactivateGuardFn: CanDeactivateFn<CanComponentDeactivate> = (component: CanComponentDeactivate) => component.canDeactivate ? component.canDeactivate() : true;\n\n\n@Injectable()\nexport class CanDeactivateGuard {\n canDeactivate(component: CanComponentDeactivate): Observable<boolean> | boolean {\n return component.canDeactivate ? component.canDeactivate() : true;\n }\n}\n","import { Injectable, inject } from \"@angular/core\";\nimport { HttpInterceptor, HttpRequest, HttpHandler, HttpEvent, HttpErrorResponse } from \"@angular/common/http\";\nimport { Observable, throwError } from \"rxjs\";\nimport { catchError, finalize } from \"rxjs/operators\";\nimport { BitMessageService } from \"../services/message.service\";\nimport { GeneralUtils } from \"../services/general-utils.service\";\nimport { HttpUtilsService } from \"../services/http-utils.service\";\n\n@Injectable({ providedIn: \"root\" })\nexport class CustomHttpInterceptor implements HttpInterceptor {\n private bitMessageService = inject(BitMessageService);\n private generalUtils = inject(GeneralUtils);\n\n constructor() {\n console.log(\"construyendo el CustomHttpInterceptor\");\n }\n\n intercept(request: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {\n let url = request.url;\n this.generalUtils.startLoading();\n return next.handle(request).pipe(\n catchError((error: HttpErrorResponse) => {\n //this.store.dispatch(new AddGlobalError(error));\n console.log(\"error que nos retorna el server\", error);\n let customError = HttpUtilsService.getCustomError(error);\n console.log(\"custom error\", error);\n this.bitMessageService.sendError(customError);\n return throwError(error);\n }),\n finalize(() => {\n console.log(\"finalizando la llamada http\");\n this.generalUtils.stopLoading();\n })\n );\n }\n}\n","import { Injectable } from \"@angular/core\";\nimport { DefaultDataService } from \"../services/default-data.service\";\n\n/**\n * Permite registrar los servicios de DataService que utilizarán los servicios EntityCollectionService para alimentar su signalStore\n * Cada servicio se registra en un array asociado a su nombre de entidad\n */\n@Injectable({ providedIn: \"root\" })\nexport class EntityDataService {\n protected services: { [name: string]: DefaultDataService<any> } = {};\n\n constructor() {}\n\n /**\n *\n * @param entityName\n * @param service\n */\n registerService<T>(entityName: string, service: DefaultDataService<T>): void {\n this.services[entityName.trim()] = service;\n }\n\n /**\n *\n * @param entityName\n * @returns\n */\n getService<T>(entityName: string): DefaultDataService<T> {\n return this.services[entityName.trim()];\n }\n}\n","import { emptyFilter } from \"../../base/shared/base.filter\";\nimport { EntityOp } from \"./entity-op\";\n\nexport interface EntityAction<P = any> {\n readonly type: string;\n readonly payload: EntityActionPayload<P>;\n}\n\nexport interface EntityActionPayload<P = any> {\n readonly entityName: string;\n readonly entityOp: EntityOp;\n readonly data?: P;\n}\n\nexport type EntityState = {\n pattern: string; //patrón de búsqueda\n loaded: boolean; //indica si la lista de elementos ha sido cargada\n loading: boolean; //indica si se está cargando la lista de elementos\n error: boolean; //indica si ha habido un error al cargar la lista de elementos\n totalItems: number; //número total de elementos que se han recuperado tras ejecutar el count en el servidor\n};\n\nexport const initialEntityState: EntityState = {\n pattern: JSON.stringify(emptyFilter),\n loaded: false,\n loading: false,\n error: false,\n totalItems: 0\n};\n\nexport interface Action {\n type: string;\n}\n\nexport type EntityId = string | number;\n\nexport interface BaseEntity {\n id: EntityId;\n}\n\nexport type Comparer<T> = (a: T, b: T) => number;\n","import { PartialStateUpdater } from \"@ngrx/signals\";\nimport { BaseFilter } from \"../../base/shared/base.filter\";\n\nexport const isNumber = (val: any) => typeof val === \"number\" && val === val;\n\nexport const isString = <T = any>(str: string | T): str is string => {\n return typeof str === \"string\";\n};\nexport function setPatternUpdater(pattern: string): PartialStateUpdater<{ pattern: string }> {\n return () => ({ pattern });\n}\n\nexport function setFilterUpdater(filter: any): PartialStateUpdater<{ filter: BaseFilter }> {\n return () => ({ filter });\n}\n\nexport function setLoadedUpdater(loaded: boolean): PartialStateUpdater<{ loaded: boolean }> {\n return () => ({ loaded });\n}\n\nexport function setLoadingUpdater(loading: boolean): PartialStateUpdater<{ loading: boolean }> {\n return () => ({ loading });\n}\n\nexport function setErrorUpdater(error: boolean): PartialStateUpdater<{ error: boolean }> {\n return () => ({ error });\n}\n\nexport function setTotalItemsUpdater(totalItems: number): PartialStateUpdater<{ totalItems: number }> {\n return () => ({ totalItems });\n}\n","import { patchState, signalStore, withComputed, withMethods, withState } from \"@ngrx/signals\";\nimport {\n addEntities,\n addEntity,\n removeAllEntities,\n removeEntities,\n removeEntity,\n setEntities,\n setEntity,\n updateEntity,\n withEntities\n} from \"@ngrx/signals/entities\";\nimport { Signal, computed, inject } from \"@angular/core\";\n\nimport { emptyFilter } from \"../../base/shared/base.filter\";\nimport { DefaultDataService } from \"../services/default-data.service\";\nimport { EntityDataService } from \"./entity-data.service\";\nimport { EntityOp } from \"./entity-op\";\nimport { EntityAction, BaseEntity, Action, EntityId, initialEntityState } from \"./models\";\nimport { EntityMetadataMap } from \"./entity-metadata-map\";\nimport {\n isNumber,\n isString,\n setErrorUpdater,\n setLoadedUpdater,\n setLoadingUpdater,\n setPatternUpdater,\n setTotalItemsUpdater\n} from \"./functions\";\n\nexport class EntityCollectionServiceBase<T extends BaseEntity> {\n /** Entity name */\n readonly entityName: string;\n /** Entity metadata */\n readonly entityMetadata: EntityMetadataMap;\n /** Internal signal store definition */\n private EntityStore = signalStore( \n // permitimos que desde fuera del store se pueda modificar el estado\n // por ejemplo podemos ejecutar esto: patchState(this.entityStore, setEntities(list));\n { providedIn: \"root\", protectedState: false }, \n withState(initialEntityState),\n withEntities<T>(),\n withMethods((state) => ({ \n setEntities(entities: T[]) {\n patchState(state, setEntities(entities));\n },\n setEntity(entity: T) {\n patchState(state, setEntity(entity));\n },\n addEntity(entity: T) {\n patchState(state, addEntity(entity));\n },\n addEntities(entities: T[]) {\n patchState(state, addEntities(entities));\n },\n removeEntity(key: EntityId) {\n patchState(state, removeEntity(key));\n },\n removeEntities(keys: EntityId[]) {\n patchState(state, removeEntities(keys));\n },\n removeAllEntities() {\n patchState(state, removeAllEntities());\n },\n updateEntity(update: { id: EntityId; changes: Partial<T> }) {\n patchState(state, updateEntity(update));\n },\n setLoaded(isLoaded: boolean) {\n patchState(state, setLoadedUpdater(isLoaded));\n },\n setLoading(isLoading: boolean) {\n patchState(state, setLoadingUpdater(isLoading));\n },\n setError(isError: boolean) {\n patchState(state, setErrorUpdater(isError));\n },\n setTotalItems(totalItems: number) {\n patchState(state, setTotalItemsUpdater(totalItems));\n },\n setPattern(pattern: string) {\n patchState(state, setPatternUpdater(pattern));\n } \n })),\n withComputed((state) => ({\n count: computed(() => state.entities().length),\n filteredEntities: computed(() => {\n let entities = state.entities();\n let entityMetadata = this.entityMetadata[this.entityName];\n if (entityMetadata) {\n console.log(\"Hay entityMetadata definido para la entidad\");\n // si hay filtro proporcionado podremos filtrar las entidades\n let filterFn = entityMetadata.filterFn;\n if (filterFn) {\n console.log(\"Hay filtro para las entities. Lo aplicamos\");\n // invocamos a la función de filtro definida por el usuario\n entities = filterFn(state.entities(), state.pattern()); //state.pattern()\n }\n // si hay comparador proporcionado podremos comparar las entidades\n let sortComparerFn = entityMetadata.sortComparer;\n if (sortComparerFn) {\n console.log(\"Hay comparador para las entitites. Lo aplicamos\");\n // invocamos a la función de comparación definida por el usuario\n entities = entities.sort(sortComparerFn);\n }\n }\n return entities;\n })\n //filter: computed(() => (state.pattern ? JSON.parse(state.pattern()) : undefined))\n }))\n );\n /** Internal signal store object */\n entityStore = inject(this.EntityStore);\n /** Signal of count of entities in the cached collection. */\n count$: Signal<number> = this.entityStore.count;\n /** Signal of all entities in the cached collection. */\n entities$: Signal<T[]> = computed(() => {\n let entities = this.entityStore.entities();\n let entityMetadata = this.entityMetadata[this.entityName];\n if (entityMetadata) console.log(\"Hay entityMetadata definido para la entidad\");\n let sortComparerFn = entityMetadata && entityMetadata.sortComparer;\n if (sortComparerFn) {\n console.log(\"Hay comparador para las entitites. Lo aplicamos\");\n // invocamos a la función de comparación definida por el usuario\n entities = entities.sort(sortComparerFn);\n }\n return entities;\n });\n /** Signal of all ids in the cached collection. */\n ids$: Signal<EntityId[]> = this.entityStore.ids;\n /** Signal of the filter object applied by the entity collection's filter function */\n //filter$: Signal<any> = this.entityStore.filter;\n /** Signal of the filter pattern applied by the entity collection's filter function */\n pattern$: Signal<string> = this.entityStore.pattern;\n /** Signal of entities in the cached collection that pass the filter function */\n filteredEntities$: Signal<T[]> = this.entityStore.filteredEntities;\n /** Signal of the keys of the cached collection, in the collection's native sort order */\n keys$: Signal<EntityId[]> = this.entityStore.ids;\n /** Signal true when the collection has been loaded */\n loaded$: Signal<boolean> = this.entityStore.loaded;\n /** Signal true when a multi-entity query command is in progress. */\n loading$: Signal<boolean> = this.entityStore.loading;\n /** Signal with the number of items that could be collected from the server */\n totalItems$: Signal<number> = this.entityStore.totalItems;\n /** Signal with the indicator of an error */\n error$: Signal<boolean> = this.entityStore.error;\n /** We inject the EntityDataService service to be able to obtain the DataService service to be able to access the server.\n We know which service to use thanks to the name of the entity */\n entityDataService = inject(EntityDataService);\n /** Service data for this entity store. Obtained from the EntityDataService.*/\n service: DefaultDataService<T>;\n\n constructor(entityName: string, entityMetadata: EntityMetadataMap) {\n //}, protected entityStore: any) {\n this.entityName = entityName;\n this.entityMetadata = entityMetadata;\n // obtenemos el servicio registrado con el key\n this.service = this.entityDataService.getService(this.entityName);\n if (this.service == null) {\n throw new Error(\n `No EntityCollectionServiceBase for entity type ${this.entityName}. Did you forget to register the service with the EntityDataService?`\n );\n }\n }\n\n /**\n * Create an {EntityAction} for this entity type and\n * dispatch it immediately to the store.\n * @param op {EntityOp} the entity operation\n * @param [data] the action data\n * @returns the dispatched EntityAction\n */\n createAndDispatch<P = any>(op: EntityOp, data?: P): EntityAction<P> {\n return null;\n }\n /**\n * Dispatch an action of any type to the ngrx store.\n * @param action the Action\n * @returns the dispatched Action\n */\n dispatch(action: Action): Action {\n return;\n }\n /**\n * Dispatch action to save a new entity to remote storage.\n * @param entity entity to add without a key.\n * @returns Promise of the entity\n * after server reports successful save or the save error.\n */\n async add(entity: T): Promise<T> {\n if (!entity) return;\n const record = await this.service.add(entity);\n this.addOneToCache(record);\n return record;\n }\n\n /**\n * Dispatch action to delete entity from remote storage by key.\n * @param entity The entity to delete\n * @returns Promise of the deleted entity's key\n * after server reports successful save or the save error.\n */\n delete(entity: T): Promise<EntityId>;\n\n /**\n * Dispatch action to delete entity from remote storage by key.\n * @param key The primary key of the entity to remove\n * @returns Promise of the deleted key\n * after server reports successful save or the save error.\n */\n delete(key: EntityId): Promise<EntityId>;\n async delete(key: T | EntityId): Promise<EntityId> {\n if (!key) return;\n let id: EntityId;\n if (!isNumber(key) && !isString(key)) {\n id = key[\"id\"];\n } else {\n id = key as EntityId;\n }\n await this.service.delete(id);\n this.removeOneFromCache(id);\n return id;\n }\n /**\n * Dispatch action to query remote storage for all entities and\n * merge the queried entities into the cached collection.\n * @returns Promise of the collection\n * after server reports successful query or the query error.\n */\n async getAll(): Promise<T[]> {\n this.checkService();\n const list = await this.callServiceOperation(() => this.service.getAll());\n list && this.entityStore.setEntities(list); //patchState(this.entityStore, setEntities(list));\n return list;\n }\n\n /**\n * Dispatch action to query remote storage for the entity with this primary key.\n * If the server returns an entity, merge it into the cached collection.\n * @param key The primary key of the entity to get.\n * @returns Promise of the queried entity that is in the collection\n * after server reports success or the query error.\n */\n async getByKey(key: any): Promise<T> {\n this.checkService();\n const record = await this.callServiceOperation(() => this.service.getById(key));\n record && this.entityStore.setEntity(record); //patchState(this.entityStore, setEntity(record));\n return record;\n }\n /**\n * Dispatch action to query remote storage for the entities that satisfy a query expressed\n * with either a query parameter map or an HTTP URL query string,\n * and merge the results into the cached collection.\n * @param queryParams the query in a form understood by the server\n * @param [options] options that influence merge behavior\n * @returns Promise of the queried entities\n * after server reports successful query or the query error.\n */\n async getWithQuery(queryParams: string): Promise<T[]> {\n this.checkService();\n let list = await this.callServiceOperation(() => this.service.getWithQuery(queryParams));\n list && this.entityStore.setEntities(list);//patchState(this.entityStore, setEntities(list));\n return list;\n }\n /**\n * Dispatch action to query remote storage for all entities and\n * completely replace the cached collection with the queried entities.\n * @returns Promise of the collection\n * after server reports successful query or the query error.\n */\n async load(): Promise<T[]> {\n this.checkService();\n const list = await this.callServiceOperation(() => this.service.getAll());\n this.addAllToCache(list);\n return list;\n }\n /**\n * Dispatch action to query remote storage for the entities that satisfy a query expressed\n * with an HTTP URL query string,\n * and completely replace the cached collection with the queried entities.\n * @param queryParams the query in a form understood by the server\n * @returns Promise of the queried entities\n * after server reports successful query or the query error.\n */\n async loadWithQuery(queryParams: string): Promise<T[]> {\n this.checkService();\n const list = await this.callServiceOperation(() => this.service.getWithQuery(queryParams));\n this.addAllToCache(list);\n return list;\n }\n /**\n * Dispatch action to save the updated entity (or partial entity) in remote storage.\n * The update entity may be partial (but must have its key)\n * in which case it patches the existing entity.\n * @param entity update entity, which might be a partial of T but must at least have its key.\n * @returns Promise of the updated entity\n * after server reports successful save or the save error.\n */\n async update(entity: Partial<T>): Promise<T> {\n this.checkService();\n this.checkId(entity);\n const record = await this.service.update(entity[\"id\"], entity);\n this.updateOneInCache(record);\n return record;\n }\n /**\n * Dispatch action to save a new or existing entity to remote storage.\n * Call only if the server supports upsert.\n * @param entity entity to add or upsert.\n * It may omit its key if an add, and is pessimistic, and the server creates the key;\n * must have a key if optimistic save.\n * @param [options] options that influence save and merge behavior\n * @returns Promise of the entity\n * after server reports successful save or the save error.\n */\n async upsert(entity: T): Promise<T> {\n this.checkService();\n const record = await this.service.upsert(entity);\n // setEntity crea el objeto en el store si no existe o lo actualiza si existe\n this.entityStore.setEntity(record); //patchState(this.entityStore, setEntity(record)); \n return record;\n }\n /*** Cache-only operations that do not update remote storage ***/\n /**\n * Replace all entities in the cached collection.\n * Does not save to remote storage.\n * @param entities to add directly to cache.\n */\n addAllToCache(entities: T[]): void {\n this.entityStore.setEntities(entities); //patchState(this.entityStore, setEntities(entities));\n //patchState(this.entityStore, setAllEntities(entities));\n }\n /**\n * Add a new entity directly to the cache.\n * Does not save to remote storage.\n * Ignored if an entity with the same primary key is already in cache.\n * @param entity to add directly to cache.\n * @param [options] options such as mergeStrategy\n */\n addOneToCache(entity: T): void {\n this.entityStore.addEntity(entity); //patchState(this.entityStore, addEntity(entity));\n }\n /**\n * Add multiple new entities directly to the cache.\n * Does not save to remote storage.\n * Entities with primary keys already in cache are ignored.\n * @param entities to add directly to cache.\n */\n addManyToCache(entities: T[]): void {\n this.entityStore.addEntities(entities); //patchState(this.entityStore, addEntities(entities));\n }\n /** Clear the cached entity collection */\n clearCache(): void {\n this.entityStore.removeAllEntities(); //patchState(this.entityStore, removeAllEntities());\n this.setTotalItems(0);\n }\n /**\n * Remove an entity directly from the cache.\n * Does not delete that entity from remote storage.\n * @param entity The entity to remove\n */\n removeOneFromCache(entity: T): void;\n /**\n * Remove an entity directly from the cache.\n * Does not delete that entity from remote storage.\n * @param key The primary key of the entity to remove\n * @param [options] options such as mergeStrategy\n */\n removeOneFromCache(key: EntityId);\n removeOneFromCache(key: T | EntityId) {\n if (!key) return;\n let id: EntityId;\n if (!isNumber(key) && !isString(key)) {\n id = key[\"id\"];\n } else {\n id = key as EntityId;\n }\n this.entityStore.removeEntity(id); //patchState(this.entityStore, removeEntity(id));\n }\n /**\n * Remove multiple entities directly from the cache.\n * Does not delete these entities from remote storage.\n * @param entity The entities to remove\n */\n removeManyFromCache(entities: T[]): void;\n /**\n * Remove multiple entities directly from the cache.\n * Does not delete these entities from remote storage.\n * @param keys The primary keys of the entities to remove\n * @param [options] options such as mergeStrategy\n */\n removeManyFromCache(keys: EntityId[]): void;\n removeManyFromCache(keys: T[] | EntityId[]): void {\n if (!keys) return;\n let ids: EntityId[] = [];\n let key = keys[0];\n if (!isNumber(key) && !isString(key)) {\n ids = (keys as T[]).map((entity) => entity[\"id\"]);\n } else {\n ids = keys as EntityId[];\n }\n this.entityStore.removeEntities(ids); //patchState(this.entityStore, removeEntities(ids));\n }\n /**\n * Update a cached entity directly.\n * Does not update that entity in remote storage.\n * Ignored if an entity with matching primary key is not in cache.\n * The update entity may be partial (but must have its key)\n * in which case it patches the existing entity.\n * @param entity to update directly in cache.\n */\n updateOneInCache(entity: Partial<T>): void {\n if (entity && entity[\"id\"]) {\n this.entityStore.updateEntity({ id: entity[\"id\"], changes: entity }); //patchState(this.entityStore, updateEntity({ id: entity[\"id\"], changes: entity }));\n }\n }\n /**\n * Update multiple cached entities directly.\n * Does not update these entities in remote storage.\n * Entities whose primary keys are not in cache are ignored.\n * Update entities may be partial but must at least have their keys.\n * such partial entities patch their cached counterparts.\n * @param entities to update directly in cache.\n * @param [options] options such as mergeStrategy\n */\n updateManyInCache(entities: Partial<T>[]): void {\n entities.forEach((entity) => this.updateOneInCache(entity));\n }\n /**\n * Insert or update a cached entity directly.\n * Does not save to remote storage.\n * Upsert entity might be a partial of T but must at least have its key.\n * Pass the Update<T> structure as the payload.\n * @param entity to upsert directly in cache.\n */\n upsertOneInCache(entity: Partial<T>): void {\n if (!entity) return;\n if (entity[\"id\"]) {\n this.updateOneInCache(entity);\n } else {\n this.addOneToCache(entity as T);\n }\n }\n /**\n * Insert or update multiple cached entities directly.\n * Does not save to remote storage.\n * Upsert entities might be partial but must at least have their keys.\n * Pass an array of the Update<T> structure as the payload.\n * @param entities to upsert directly in cache.\n */\n upsertManyInCache(entities: Partial<T>[]): void {\n if (!entities) return;\n entities.forEach((entity) => this.upsertOneInCache(entity));\n }\n /**\n * Set the pattern that the collection's filter applies\n * when using the `filteredEntities` selector.\n */\n setFilter(pattern: any): void {\n //patchState(this.entityStore, setFilterUpdater(filter));\n //let pattern = filter != undefined ? JSON.stringify(filter) : \"\";\n this.entityStore.setPattern(pattern); //patchState(this.entityStore, setPatternUpdater(pattern));\n }\n initFilter(): void {\n this.setFilter(JSON.stringify(emptyFilter));\n }\n /** Set the error indicator */\n setError(error: boolean): void {\n this.entityStore.setError(error); //patchState(this.entityStore, setErrorUpdater(error));\n }\n /** Set the total number of items in the collection */\n setTotalItems(totalItems: number): void {\n this.entityStore.setTotalItems(totalItems); //patchState(this.entityStore, setTotalItemsUpdater(totalItems));\n }\n /** Set the loaded flag */\n setLoaded(isLoaded: boolean): void {\n this.entityStore.setLoaded(isLoaded); //patchState(this.entityStore, setLoadedUpdater(isLoaded));\n }\n /** Set the loading flag */\n setLoading(isLoading: boolean): void {\n this.entityStore.setLoading(isLoading); //patchState(this.entityStore, setLoadingUpdater(isLoading));\n }\n /** Set the loaded flag to false, the loading flag to false and the error flag to false */\n initLoad() {\n this.setLoaded(false);\n this.setLoading(false);\n this.setError(false);\n }\n /** Set the loaded flag to false, the loading flag to true and the error flag to false */\n private loading() {\n this.setLoaded(false);\n this.setLoading(true);\n this.setError(false);\n }\n /** Set the loaded flag to true, the loading flag to false and the error flag to false */\n private loaded() {\n this.setLoaded(true);\n this.setLoading(false);\n this.setError(false);\n }\n /** Check if the service object has been provided. Throws an Error otherwise */\n private checkService() {\n if (!this.service) {\n throw new Error(\n `No EntityCollectionServiceBase for entity type ${this.entityName}. Did you forget to register the service with the EntityDataService?`\n );\n }\n }\n /** Check if the entity object has any property with the name id. Throws an Error otherwise */\n private checkId(entity: Partial<T>) {\n if (!entity[\"id\"]) {\n throw new Error(`Missing primary key 'id' in entity update data`);\n }\n }\n /** Call a service operation and handle the result */\n private async callServiceOperation(operationToCall): Promise<any> {\n this.loading();\n try {\n let result = await operationToCall();\n this.loaded();\n return result;\n } catch (error) {\n this.setLoaded(false);\n this.setLoading(false);\n this.setError(true);\n throw error;\n }\n }\n}\n","/**\n * Filters the `entities` array argument and returns the original `entities`,\n * or a new filtered array of entities.\n * NEVER mutate the original `entities` array itself.\n **/\nexport type EntityFilterFn<T> = (entities: T[], pattern?: any) => T[];\n\n/**\n * Creates an {EntityFilterFn} that matches RegExp or RegExp string pattern\n * anywhere in any of the given props of an entity.\n * If pattern is a string, spaces are significant and ignores case.\n */\nexport function PropsFilterFnFactory<T = any>(\n props: (keyof T)[] = []\n): EntityFilterFn<T> {\n if (props.length === 0) {\n // No properties -> nothing could match -> return unfiltered\n return (entities: T[], pattern: string) => entities;\n }\n\n return (entities: T[], pattern: string | RegExp) => {\n if (!entities) {\n return [];\n }\n\n const regExp =\n typeof pattern === 'string' ? new RegExp(pattern, 'i') : pattern;\n if (regExp) {\n const predicate = (e: any) => props.some((prop) => regExp.test(e[prop]));\n return entities.filter(predicate);\n }\n return entities;\n };\n}\n","/** General purpose entity action operations, good for any entity type */\nexport enum EntityOp {\n // Persistance operations\n CANCEL_PERSIST = \"cancel-persist\",\n CANCELED_PERSIST = \"canceled-persist\",\n\n QUERY_ALL = \"query-all\",\n QUERY_ALL_SUCCESS = \"query-all/success\",\n QUERY_ALL_ERROR = \"query-all/error\",\n\n QUERY_LOAD = \"query-load\",\n QUERY_LOAD_SUCCESS = \"query-load/success\",\n QUERY_LOAD_ERROR = \"query-load/error\",\n\n QUERY_MANY = \"query-many\",\n QUERY_MANY_SUCCESS = \"query-many/success\",\n QUERY_MANY_ERROR = \"query-many/error\",\n\n QUERY_BY_KEY = \"query-by-key\",\n QUERY_BY_KEY_SUCCESS = \"query-by-key/success\",\n QUERY_BY_KEY_ERROR = \"query-by-key/error\",\n\n SAVE_ADD_MANY = \"save/add-many\",\n SAVE_ADD_MANY_ERROR = \"save/add-many/error\",\n SAVE_ADD_MANY_SUCCESS = \"save/add-many/success\",\n\n SAVE_ADD_ONE = \"save/add-one\",\n SAVE_ADD_ONE_ERROR = \"save/add-one/error\",\n SAVE_ADD_ONE_SUCCESS = \"save/add-one/success\",\n\n SAVE_DELETE_MANY = \"save/delete-many\",\n SAVE_DELETE_MANY_SUCCESS = \"save/delete-many/success\",\n SAVE_DELETE_MANY_ERROR = \"save/delete-many/error\",\n\n SAVE_DELETE_ONE = \"save/delete-one\",\n SAVE_DELETE_ONE_SUCCESS = \"save/delete-one/success\",\n SAVE_DELETE_ONE_ERROR = \"save/delete-one/error\",\n\n SAVE_UPDATE_MANY = \"save/update-many\",\n SAVE_UPDATE_MANY_SUCCESS = \"save/update-many/success\",\n SAVE_UPDATE_MANY_ERROR = \"save/update-many/error\",\n\n SAVE_UPDATE_ONE = \"save/update-one\",\n SAVE_UPDATE_ONE_SUCCESS = \"save/update-one/success\",\n SAVE_UPDATE_ONE_ERROR = \"save/update-one/error\",\n\n // Use only if the server supports upsert;\n SAVE_UPSERT_MANY = \"save/upsert-many\",\n SAVE_UPSERT_MANY_SUCCESS = \"save/upsert-many/success\",\n SAVE_UPSERT_MANY_ERROR = \"save/upsert-many/error\",\n\n // Use only if the server supports upsert;\n SAVE_UPSERT_ONE = \"save/upsert-one\",\n SAVE_UPSERT_ONE_SUCCESS = \"save/upsert-one/success\",\n SAVE_UPSERT_ONE_ERROR = \"save/upsert-one/error\",\n\n // Cache operations\n ADD_ALL = \"add-all\",\n ADD_MANY = \"add-many\",\n ADD_ONE = \"add-one\",\n REMOVE_ALL = \"remove-all\",\n REMOVE_MANY = \"remove-many\",\n REMOVE_ONE = \"remove-one\",\n UPDATE_MANY = \"update-many\",\n UPDATE_ONE = \"update-one\",\n UPSERT_MANY = \"upsert-many\",\n UPSERT_ONE = \"upsert-one\",\n\n COMMIT_ALL = \"commit-all\",\n COMMIT_MANY = \"commit-many\",\n COMMIT_ONE = \"commit-one\",\n UNDO_ALL = \"undo-all\",\n UNDO_MANY = \"undo-many\",\n UNDO_ONE = \"undo-one\",\n\n SET_CHANGE_STATE = \"set-change-state\",\n SET_COLLECTION = \"set-collection\",\n SET_FILTER = \"set-filter\",\n SET_LOADED = \"set-loaded\",\n SET_LOADING = \"set-loading\"\n}\n\n/** \"Success\" suffix appended to EntityOps that are successful.*/\nexport const OP_SUCCESS = \"/success\";\n\n/** \"Error\" suffix appended to EntityOps that have failed.*/\nexport const OP_ERROR = \"/error\";\n\n/** Make the error EntityOp corresponding to the given EntityOp */\nexport function makeErrorOp(op: EntityOp): EntityOp {\n return <EntityOp>(op + OP_ERROR);\n}\n\n/** Make the success EntityOp corresponding to the given EntityOp */\nexport function makeSuccessOp(op: EntityOp): EntityOp {\n return <EntityOp>(op + OP_SUCCESS);\n}\n","import { Injectable } from \"@angular/core\";\n\n/**\n * Known resource URLS for specific entity types.\n * Each entity's resource URLS are endpoints that\n * target single entity and multi-entity HTTP operations.\n * Used by the `DefaultHttpUrlGenerator`.\n */\nexport abstract class EntityHttpResourceUrls {\n [entityName: string]: HttpResourceUrls;\n}\n\n/**\n * Resource URLS for HTTP operations that target single entity\n * and multi-entity endpoints.\n */\nexport interface HttpResourceUrls {\n /**\n * The URL path for a single entity endpoint, e.g, `some-api-root/hero/`\n * such as you'd use to add a hero.\n * Example: `httpClient.post<Hero>('some-api-root/hero/', addedHero)`.\n * Note trailing slash (/).\n */\n entityResourceUrl: string;\n /**\n * The URL path for a multiple-entity endpoint, e.g, `some-api-root/heroes/`\n * such as you'd use when getting all heroes.\n * Example: `httpClient.get<Hero[]>('some-api-root/heroes/')`\n * Note trailing slash (/).\n */\n collectionResourceUrl: string;\n}\n\n@Injectable({ providedIn: \"root\" })\nexport class HttpUrlGenerator {\n protected knownHttpResourceUrls: EntityHttpResourceUrls = {};\n\n /**\n * Get or generate the entity and collection resource URLs for the given entity type name\n * @param entityName {string} Name of the entity type, e.g, 'Hero'\n * @param root {string} Root path to the resource, e.g., 'some-api`\n */\n protected getResourceUrls(entityName: string): HttpResourceUrls {\n let resourceUrls = this.knownHttpResourceUrls[entityName];\n if (!resourceUrls) {\n // lanza una excepcion indicando que no se ha encontrado la entidad\n throw new Error(`No HTTP resource URLs found for entity type name '${entityName}'`);\n }\n return resourceUrls;\n }\n\n /**\n * Create the path to a single entity resource\n * @param entityName {string} Name of the entity type, e.g, 'Hero'\n * @param root {string} Root path to the resource, e.g., 'some-api`\n * @returns complete path to resource, e.g, 'some-api/hero'\n */\n entityResource(entityName: string): string {\n return this.getResourceUrls(entityName).entityResourceUrl;\n }\n\n /**\n * Create the path to a multiple entity (collection) resource\n * @param entityName {string} Name of the entity type, e.g, 'Hero'\n * @param root {string} Root path to the resource, e.g., 'some-api`\n * @returns complete path to resource, e.g, 'some-api/heroes'\n */\n collectionResource(entityName: string): string {\n return this.getResourceUrls(entityName).collectionResourceUrl;\n }\n /**\n * Register known single-entity and collection resource URLs for HTTP calls\n * @param entityHttpResourceUrls {EntityHttpResourceUrls} resource urls for specific entity type names\n * Well-formed resource urls end in a '/';\n * Note: this method does not ensure that resource urls are well-formed.\n */\n registerHttpResourceUrls(entityHttpResourceUrls: EntityHttpResourceUrls): void {\n this.knownHttpResourceUrls = {\n ...this.knownHttpResourceUrls,\n ...(entityHttpResourceUrls || {})\n };\n }\n}\n\n/** Remove leading & trailing spaces or slashes */\nexport function normalizeRoot(root: string) {\n return root.replace(/^[/\\s]+|[/\\s]+$/g, \"\");\n}\n","/*\n * Public API Surface of bit-ng-library\n */\n\nexport * from \"./lib/base/components/base.component\";\nexport * from \"./lib/base/shared/base-interface.service\";\nexport * from \"./lib/base/shared/base.filter\";\nexport * from \"./lib/base/shared/base.service\";\nexport * from \"./lib/base/shared/utils\";\nexport * from \"./lib/base/models/types\";\nexport * from \"./lib/base/models/toolbars\";\n\nexport * from \"./lib/sharedlibrary/sharedlibrary.module\";\n\nexport * from \"./lib/sharedlibrary/components/breadcrumb/bit-breadcrumb.component\";\nexport * from \"./lib/sharedlibrary/components/contol-messages/bit-control-messages.component\";\nexport * from \"./lib/sharedlibrary/components/dialog/bit-dialog.component\";\nexport * from \"./lib/sharedlibrary/components/footer/bit-footer.component\";\nexport * from \"./lib/sharedlibrary/components/footer/bit-footer-messages.component\";\nexport * from \"./lib/sharedlibrary/components/footer/bit-pajigator.component\";\nexport * from \"./lib/sharedlibrary/components/header/bit-header.component\";\nexport * from \"./lib/sharedlibrary/components/help/bit-help.component\";\nexport * from \"./lib/sharedlibrary/components/loading/bit-loading.component\";\nexport * from \"./lib/sharedlibrary/components/notificacion/bit-notification-toast.component\";\nexport * from \"./lib/sharedlibrary/components/notificacion/bit-notification-error.component\";\nexport * from \"./lib/sharedlibrary/components/toolbar/bit-toolbar.component\";\nexport * from \"./lib/sharedlibrary/components/upload/bit-ng-upload.component\";\nexport * from \"./lib/sharedlibrary/components/user/bit-user-controls.component\";\nexport * from \"./lib/sharedlibrary/components/misc/bit-boton-ayuda.component\";\nexport * from \"./lib/sharedlibrary/components/misc/bit-column-boolean.component\";\nexport * from \"./lib/sharedlibrary/components/misc/bit-domain-value.component\";\nexport * from \"./lib/sharedlibrary/components/language/bit-language-selector.component\";\nexport * from \"./lib/sharedlibrary/components/misc/bit-sidebar.component\";\nexport * from \"./lib/sharedlibrary/components/theme/bit-theme-selector.component\";\nexport * from \"./lib/sharedlibrary/components/settings/bit-settings.component\";\nexport * from \"./lib/sharedlibrary/components/form/autocomplete/bit-autocomplete.component\";\nexport * from \"./lib/sharedlibrary/components/form/text/bit-text.component\";\nexport * from \"./lib/sharedlibrary/components/form/textarea/bit-textarea.component\";\nexport * from \"./lib/sharedlibrary/components/form/date/bit-date.component\";\nexport * from \"./lib/sharedlibrary/components/form/time/bit-time.component\";\nexport * from \"./lib/sharedlibrary/components/form/datetime/bit-datetime.component\";\nexport * from \"./lib/sharedlibrary/components/form/calendar/bit-calendar.component\";\nexport * from \"./lib/sharedlibrary/components/form/checkbox/bit-checkbox.component\";\nexport * from \"./lib/sharedlibrary/components/form/multiple-checkbox/bit-multiple-checkbox.component\";\nexport * from \"./lib/sharedlibrary/components/form/switch/bit-switch.component\";\nexport * from \"./lib/sharedlibrary/components/form/switch/bit-switch-si-no.component\";\nexport * from \"./lib/sharedlibrary/components/form/dropdown/bit-dropdown.component\";\nexport * from \"./lib/sharedlibrary/components/form/dropdown/bit-dropdown-multiple.component\";\nexport * from \"./lib/sharedlibrary/components/form/dropdown/bit-dropdown-general.component\";\nexport * from \"./lib/sharedlibrary/components/form/editor/bit-editor.component\";\nexport * from \"./lib/sharedlibrary/components/form/readonly/bit-readonly.component\";\nexport * from \"./lib/sharedlibrary/components/form/number/bit-number.component\";\nexport * from \"./lib/sharedlibrary/components/form/amount/bit-amount.component\";\nexport * from \"./lib/sharedlibrary/components/form/bit-custom.component\";\nexport * from \"./lib/sharedlibrary/components/form/bit-general.component\";\n\nexport * from \"./lib/sharedlibrary/data/autocomplete\"\nexport * from \"./lib/sharedlibrary/data/ayudacontextual\";\nexport * from \"./lib/sharedlibrary/data/bitmessage\";\nexport * from \"./lib/sharedlibrary/data/bitnotification-error\";\nexport * from \"./lib/sharedlibrary/data/bitnotification\";\nexport * from \"./lib/sharedlibrary/data/configuration-editor\";\nexport * from \"./lib/sharedlibrary/data/domain\";\nexport * from \"./lib/sharedlibrary/data/error\";\nexport * from \"./lib/sharedlibrary/data/fichero\";\nexport * from \"./lib/sharedlibrary/data/item\";\n\nexport * from \"./lib/sharedlibrary/directives/bit-panel.directive\";\nexport * from \"./lib/sharedlibrary/directives/focus-register.directive\";\n\nexport * from \"./lib/sharedlibrary/pipes/bytes.pipe\";\nexport * from \"./lib/sharedlibrary/pipes/capitalize.pipe\";\nexport * from \"./lib/sharedlibrary/pipes/cut-text.pipe\";\nexport * from \"./lib/sharedlibrary/pipes/other-actions.pipe\";\nexport * from \"./lib/sharedlibrary/pipes/pipe-cantidadmoneda.pipe\";\nexport * from \"./lib/sharedlibrary/pipes/remove-line-breaks.pipe\";\nexport * from \"./lib/sharedlibrary/pipes/domain-value.pipe\";\nexport * from \"./lib/sharedlibrary/pipes/domain-list-value.pipe\";\nexport * from \"./lib/sharedlibrary/pipes/list-value.pipe\";\nexport * from \"./lib/sharedlibrary/pipes/si-o-no.pipe\";\nexport * from \"./lib/sharedlibrary/pipes/stringify.pipe\"\n\nexport * from \"./lib/sharedlibrary/services/autocomplete-data.service\";\nexport * from \"./lib/sharedlibrary/services/ayuda.service\";\nexport * from \"./lib/sharedlibrary/services/base-data-adapter.service\";\nexport * from \"./lib/sharedlibrary/services/base-data.service\";\nexport * from \"./lib/sharedlibrary/services/default-data.service\";\nexport * from \"./lib/sharedlibrary/services/bit-panel.service\";\nexport * from \"./lib/sharedlibrary/services/custom-validators.service\";\nexport * from \"./lib/sharedlibrary/services/date-utils.service\";\nexport * from \"./lib/sharedlibrary/services/domain.service\";\nexport * from \"./lib/sharedlibrary/services/download.service\";\nexport * from \"./lib/sharedlibrary/services/focus.service\";\nexport * from \"./lib/sharedlibrary/services/general-utils.service\";\nexport * from \"./lib/sharedlibrary/services/http-utils.service\";\nexport * from \"./lib/sharedlibrary/services/locator.service\";\nexport * from \"./lib/sharedlibrary/services/message.service\";\nexport * from \"./lib/sharedlibrary/services/session-shared.service\";\nexport * from \"./lib/sharedlibrary/services/tableview.service\";\nexport * from \"./lib/sharedlibrary/services/toolbar.service\";\nexport * from \"./lib/sharedlibrary/services/translate.service\";\nexport * from \"./lib/sharedlibrary/services/upload.service\";\nexport * from \"./lib/sharedlibrary/services/storage.service\";\nexport * from \"./lib/sharedlibrary/services/theme-fbit.service\";\nexport * from \"./lib/sharedlibrary/services/locale.service\";\nexport * from \"./lib/sharedlibrary/services/clear-items.service\";\nexport * from \"./lib/sharedlibrary/services/menu.service\";\n\nexport * from \"./lib/sharedlibrary/guards/candeactivate.guard\";\nexport * from \"./lib/sharedlibrary/global.constants\";\nexport * from \"./lib/sharedlibrary/utils/custom-http-interceptor\";\nexport * from \"./lib/sharedlibrary/utils/general-utils\";\n\nexport * from \"./lib/sharedlibrary/entities/entity-collection.service\";\nexport * from \"./lib/sharedlibrary/entities/entity-data.service\";\nexport * from \"./lib/sharedlibrary/entities/entity-filters\";\nexport * from \"./lib/sharedlibrary/entities/entity-metadata-map\";\nexport * from \"./lib/sharedlibrary/entities/entity-op\";\nexport * from \"./lib/sharedlibrary/entities/functions\";\nexport * from \"./lib/sharedlibrary/entities/http-url-generator\";\nexport * from \"./lib/sharedlibrary/entities/models\";","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["CustomError","i1","i2","i3","i4","i5.CantidadMonedaPipe","i1.BitHelpComponent","i1.BitPajigatorComponent","i2.BitFooterMessagesComponent","i3.BitBotonAyudaComponent","i2.BitBreadCrumbComponent","i3.BitToolbarComponent","i6.FocusRegisterDirective","i7","i4.FocusRegisterDirective","i5.BitControlMessages","i3.FocusRegisterDirective","i4.BitControlMessages","i3.BitControlMessages","i2.TranslateService","i6","i5","i6.BitLanguageSelectorComponent","i7.BitThemeSelectorComponent","isNumber","FileUploadModulePrimeNG","FileUploadModule"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"bit-ng-library.mjs","sources":["../../../projects/bit-ng-library/src/lib/sharedlibrary/data/autocomplete.ts","../../../projects/bit-ng-library/src/lib/sharedlibrary/services/autocomplete-data.service.ts","../../../projects/bit-ng-library/src/lib/sharedlibrary/data/ayudacontextual.ts","../../../projects/bit-ng-library/src/lib/sharedlibrary/services/storage.service.ts","../../../projects/bit-ng-library/src/lib/sharedlibrary/services/theme-fbit.service.ts","../../../projects/bit-ng-library/src/lib/sharedlibrary/services/locale.service.ts","../../../projects/bit-ng-library/src/lib/sharedlibrary/services/ayuda.service.ts","../../../projects/bit-ng-library/src/lib/sharedlibrary/data/error.ts","../../../projects/bit-ng-library/src/lib/sharedlibrary/services/message.service.ts","../../../projects/bit-ng-library/src/lib/sharedlibrary/data/domain.ts","../../../projects/bit-ng-library/src/lib/sharedlibrary/services/general-utils.service.ts","../../../projects/bit-ng-library/src/lib/sharedlibrary/services/translate.service.ts","../../../projects/bit-ng-library/src/lib/sharedlibrary/services/http-utils.service.ts","../../../projects/bit-ng-library/src/lib/sharedlibrary/services/default-data.service.ts","../../../projects/bit-ng-library/src/lib/sharedlibrary/services/base-data.service.ts","../../../projects/bit-ng-library/src/lib/sharedlibrary/services/base-data-adapter.service.ts","../../../projects/bit-ng-library/src/lib/sharedlibrary/services/bit-panel.service.ts","../../../projects/bit-ng-library/src/lib/sharedlibrary/services/custom-validators.service.ts","../../../projects/bit-ng-library/src/lib/sharedlibrary/services/date-utils.service.ts","../../../projects/bit-ng-library/src/lib/sharedlibrary/services/domain.service.ts","../../../projects/bit-ng-library/src/lib/sharedlibrary/utils/general-utils.ts","../../../projects/bit-ng-library/src/lib/sharedlibrary/services/download.service.ts","../../../projects/bit-ng-library/src/lib/sharedlibrary/services/focus.service.ts","../../../projects/bit-ng-library/src/lib/sharedlibrary/services/locator.service.ts","../../../projects/bit-ng-library/src/lib/sharedlibrary/services/session-shared.service.ts","../../../projects/bit-ng-library/src/lib/sharedlibrary/services/tableview.service.ts","../../../projects/bit-ng-library/src/lib/sharedlibrary/services/toolbar.service.ts","../../../projects/bit-ng-library/src/lib/sharedlibrary/services/upload.service.ts","../../../projects/bit-ng-library/src/lib/sharedlibrary/services/clear-items.service.ts","../../../projects/bit-ng-library/src/lib/base/components/base.component.ts","../../../projects/bit-ng-library/src/lib/base/shared/utils.ts","../../../projects/bit-ng-library/src/lib/base/shared/base.filter.ts","../../../projects/bit-ng-library/src/lib/sharedlibrary/global.constants.ts","../../../projects/bit-ng-library/src/lib/base/shared/base.service.ts","../../../projects/bit-ng-library/src/lib/base/models/types.ts","../../../projects/bit-ng-library/src/lib/base/models/toolbars.ts","../../../projects/bit-ng-library/src/lib/sharedlibrary/components/breadcrumb/bit-breadcrumb.component.ts","../../../projects/bit-ng-library/src/lib/sharedlibrary/components/contol-messages/bit-control-messages.component.ts","../../../projects/bit-ng-library/src/lib/sharedlibrary/data/bitmessage.ts","../../../projects/bit-ng-library/src/lib/sharedlibrary/components/dialog/bit-dialog.component.ts","../../../projects/bit-ng-library/src/lib/sharedlibrary/pipes/pipe-cantidadmoneda.pipe.ts","../../../projects/bit-ng-library/src/lib/sharedlibrary/components/footer/bit-pajigator.component.ts","../../../projects/bit-ng-library/src/lib/sharedlibrary/components/footer/bit-pajigator.component.html","../../../projects/bit-ng-library/src/lib/sharedlibrary/components/help/bit-help.component.ts","../../../projects/bit-ng-library/src/lib/sharedlibrary/components/footer/bit-footer-messages.component.ts","../../../projects/bit-ng-library/src/lib/sharedlibrary/components/footer/bit-footer-messages.component.html","../../../projects/bit-ng-library/src/lib/sharedlibrary/components/footer/bit-footer.component.ts","../../../projects/bit-ng-library/src/lib/sharedlibrary/components/footer/bit-footer.component.html","../../../projects/bit-ng-library/src/lib/sharedlibrary/components/misc/bit-boton-ayuda.component.ts","../../../projects/bit-ng-library/src/lib/sharedlibrary/components/toolbar/bit-toolbar.component.ts","../../../projects/bit-ng-library/src/lib/sharedlibrary/components/toolbar/bit-toolbar.component.html","../../../projects/bit-ng-library/src/lib/sharedlibrary/components/header/bit-header.component.ts","../../../projects/bit-ng-library/src/lib/sharedlibrary/components/header/bit-header.component.html","../../../projects/bit-ng-library/src/lib/sharedlibrary/components/loading/bit-loading.component.ts","../../../projects/bit-ng-library/src/lib/sharedlibrary/components/notificacion/bit-notification-toast.component.ts","../../../projects/bit-ng-library/src/lib/sharedlibrary/components/notificacion/bit-notification-error.component.ts","../../../projects/bit-ng-library/src/lib/sharedlibrary/directives/focus-register.directive.ts","../../../projects/bit-ng-library/src/lib/sharedlibrary/components/upload/bit-ng-upload.component.ts","../../../projects/bit-ng-library/src/lib/sharedlibrary/components/upload/bit-ng-upload.component.html","../../../projects/bit-ng-library/src/lib/sharedlibrary/components/user/bit-user-controls.component.ts","../../../projects/bit-ng-library/src/lib/sharedlibrary/components/user/bit-user-controls.component.html","../../../projects/bit-ng-library/src/lib/sharedlibrary/components/misc/bit-column-boolean.component.ts","../../../projects/bit-ng-library/src/lib/sharedlibrary/components/misc/bit-domain-value.component.ts","../../../projects/bit-ng-library/src/lib/sharedlibrary/components/form/bit-general.component.ts","../../../projects/bit-ng-library/src/lib/sharedlibrary/components/form/bit-custom.component.ts","../../../projects/bit-ng-library/src/lib/sharedlibrary/components/form/text/bit-text.component.ts","../../../projects/bit-ng-library/src/lib/sharedlibrary/components/form/text/bit-text.component.html","../../../projects/bit-ng-library/src/lib/sharedlibrary/components/form/textarea/bit-textarea.component.ts","../../../projects/bit-ng-library/src/lib/sharedlibrary/components/form/textarea/bit-textarea.component.html","../../../projects/bit-ng-library/src/lib/sharedlibrary/components/form/calendar/bit-calendar.component.ts","../../../projects/bit-ng-library/src/lib/sharedlibrary/components/form/date/bit-date.component.ts","../../../projects/bit-ng-library/src/lib/sharedlibrary/components/form/date/bit-date.component.html","../../../projects/bit-ng-library/src/lib/sharedlibrary/components/form/time/bit-time.component.ts","../../../projects/bit-ng-library/src/lib/sharedlibrary/components/form/time/bit-time.component.html","../../../projects/bit-ng-library/src/lib/sharedlibrary/components/form/datetime/bit-datetime.component.ts","../../../projects/bit-ng-library/src/lib/sharedlibrary/components/form/datetime/bit-datetime.component.html","../../../projects/bit-ng-library/src/lib/sharedlibrary/components/form/checkbox/bit-checkbox.component.ts","../../../projects/bit-ng-library/src/lib/sharedlibrary/components/form/checkbox/bit-checkbox.component.html","../../../projects/bit-ng-library/src/lib/sharedlibrary/components/form/switch/bit-switch.component.ts","../../../projects/bit-ng-library/src/lib/sharedlibrary/components/form/switch/bit-switch.component.html","../../../projects/bit-ng-library/src/lib/sharedlibrary/components/form/autocomplete/bit-autocomplete.component.ts","../../../projects/bit-ng-library/src/lib/sharedlibrary/components/form/autocomplete/bit-autocomplete.component.html","../../../projects/bit-ng-library/src/lib/sharedlibrary/components/form/dropdown/bit-dropdown-general.component.ts","../../../projects/bit-ng-library/src/lib/sharedlibrary/components/form/dropdown/bit-dropdown.component.ts","../../../projects/bit-ng-library/src/lib/sharedlibrary/components/form/dropdown/bit-dropdown.component.html","../../../projects/bit-ng-library/src/lib/sharedlibrary/components/form/dropdown/bit-dropdown-multiple.component.ts","../../../projects/bit-ng-library/src/lib/sharedlibrary/components/form/dropdown/bit-dropdown-multiple.component.html","../../../projects/bit-ng-library/src/lib/sharedlibrary/data/configuration-editor.ts","../../../projects/bit-ng-library/src/lib/sharedlibrary/components/form/editor/bit-editor.component.ts","../../../projects/bit-ng-library/src/lib/sharedlibrary/components/form/editor/bit-editor.component.html","../../../projects/bit-ng-library/src/lib/sharedlibrary/components/form/readonly/bit-readonly.component.ts","../../../projects/bit-ng-library/src/lib/sharedlibrary/components/form/readonly/bit-readonly.component.html","../../../projects/bit-ng-library/src/lib/sharedlibrary/components/form/number/bit-number.component.ts","../../../projects/bit-ng-library/src/lib/sharedlibrary/components/form/number/bit-number.component.html","../../../projects/bit-ng-library/src/lib/sharedlibrary/components/form/amount/bit-amount.component.ts","../../../projects/bit-ng-library/src/lib/sharedlibrary/services/menu.service.ts","../../../projects/bit-ng-library/src/lib/sharedlibrary/components/misc/bit-sidebar.component.ts","../../../projects/bit-ng-library/src/lib/sharedlibrary/components/misc/bit-sidebar.component.html","../../../projects/bit-ng-library/src/lib/sharedlibrary/components/theme/bit-theme-selector.component.ts","../../../projects/bit-ng-library/src/lib/sharedlibrary/components/theme/bit-theme-selector.component.html","../../../projects/bit-ng-library/src/lib/sharedlibrary/components/language/bit-language-selector.component.ts","../../../projects/bit-ng-library/src/lib/sharedlibrary/components/language/bit-language-selector.component.html","../../../projects/bit-ng-library/src/lib/sharedlibrary/components/settings/bit-settings.component.ts","../../../projects/bit-ng-library/src/lib/sharedlibrary/components/settings/bit-settings.component.html","../../../projects/bit-ng-library/src/lib/sharedlibrary/pipes/bytes.pipe.ts","../../../projects/bit-ng-library/src/lib/sharedlibrary/pipes/capitalize.pipe.ts","../../../projects/bit-ng-library/src/lib/sharedlibrary/pipes/cut-text.pipe.ts","../../../projects/bit-ng-library/src/lib/sharedlibrary/pipes/domain-list-value.pipe.ts","../../../projects/bit-ng-library/src/lib/sharedlibrary/pipes/domain-value.pipe.ts","../../../projects/bit-ng-library/src/lib/sharedlibrary/pipes/list-value.pipe.ts","../../../projects/bit-ng-library/src/lib/sharedlibrary/pipes/other-actions.pipe.ts","../../../projects/bit-ng-library/src/lib/sharedlibrary/pipes/remove-line-breaks.pipe.ts","../../../projects/bit-ng-library/src/lib/sharedlibrary/pipes/si-o-no.pipe.ts","../../../projects/bit-ng-library/src/lib/sharedlibrary/pipes/stringify.pipe.ts","../../../projects/bit-ng-library/src/lib/sharedlibrary/pipes/index.ts","../../../projects/bit-ng-library/src/lib/sharedlibrary/directives/bit-panel.directive.ts","../../../projects/bit-ng-library/src/lib/sharedlibrary/directives/index.ts","../../../projects/bit-ng-library/src/lib/sharedlibrary/components/form/switch/bit-switch-si-no.component.ts","../../../projects/bit-ng-library/src/lib/sharedlibrary/components/form/switch/bit-switch-si-no.component.html","../../../projects/bit-ng-library/src/lib/sharedlibrary/components/form/multiple-checkbox/bit-multiple-checkbox.component.ts","../../../projects/bit-ng-library/src/lib/sharedlibrary/components/form/multiple-checkbox/bit-multiple-checkbox.component.html","../../../projects/bit-ng-library/src/lib/sharedlibrary/sharedlibrary.module.ts","../../../projects/bit-ng-library/src/lib/sharedlibrary/data/bitnotification.ts","../../../projects/bit-ng-library/src/lib/sharedlibrary/data/bitnotification-error.ts","../../../projects/bit-ng-library/src/lib/sharedlibrary/data/item.ts","../../../projects/bit-ng-library/src/lib/sharedlibrary/data/fichero.ts","../../../projects/bit-ng-library/src/lib/sharedlibrary/guards/candeactivate.guard.ts","../../../projects/bit-ng-library/src/lib/sharedlibrary/utils/custom-http-interceptor.ts","../../../projects/bit-ng-library/src/lib/sharedlibrary/entities/entity-data.service.ts","../../../projects/bit-ng-library/src/lib/sharedlibrary/entities/models.ts","../../../projects/bit-ng-library/src/lib/sharedlibrary/entities/functions.ts","../../../projects/bit-ng-library/src/lib/sharedlibrary/entities/entity-collection.service.ts","../../../projects/bit-ng-library/src/lib/sharedlibrary/entities/entity-filters.ts","../../../projects/bit-ng-library/src/lib/sharedlibrary/entities/entity-op.ts","../../../projects/bit-ng-library/src/lib/sharedlibrary/entities/http-url-generator.ts","../../../projects/bit-ng-library/src/public-api.ts","../../../projects/bit-ng-library/src/bit-ng-library.ts"],"sourcesContent":["export class Autocomplete {\r\n constructor(\r\n public id: number | string,\r\n public descripcion: string\r\n ) {\r\n }\r\n}\r\n","import { Observable } from \"rxjs\";\r\n\r\nimport { Autocomplete } from \"../data/autocomplete\";\r\nimport { map } from \"rxjs/operators\";\r\nimport { HttpUtilsService } from \"./http-utils.service\";\r\n\r\nexport abstract class AutocompleteDataService {\r\n protected httpUtilsService: HttpUtilsService;\r\n\r\n constructor(\r\n httpUtilsService: HttpUtilsService\r\n ) {\r\n console.log(\"AutocompleteDataService creado\");\r\n this.httpUtilsService = httpUtilsService;\r\n }\r\n\r\n findContactos(query: string): Observable<Autocomplete[]> {\r\n return this.findAutocomplete(\"contactos\", query)\r\n .pipe(\r\n map(\r\n (items: Autocomplete[]) => items\r\n && items.map((item: Autocomplete) => new Autocomplete(this.extractEmail(item.descripcion), item.descripcion))\r\n )\r\n );\r\n }\r\n\r\n findAutocomplete(tipoElemento: string, query: string): Observable<Autocomplete[]> {\r\n return this.httpUtilsService.getHttpGet<Autocomplete[]>(this.getUrlBase(tipoElemento, query));\r\n }\r\n\r\n getUrlBase(tipoElemento: string, query: string) {\r\n return `autocompletes/${tipoElemento}?cadena=${query}`;\r\n }\r\n\r\n extractEmail(desc: string): string {\r\n if (desc) {\r\n return desc.substring(desc.indexOf(\"<\") + 1, desc.indexOf(\">\"));\r\n } else {\r\n return \"\";\r\n }\r\n }\r\n}\r\n","export class AyudaContextual {\r\n constructor(public key: string, public header: string, public title: string, public body: string) {}\r\n\r\n public static newObject(obj): AyudaContextual {\r\n return new AyudaContextual(obj.key, obj.header || obj.title, obj.title || obj.header, obj.body);\r\n }\r\n}\r\n","import { Injectable } from \"@angular/core\";\r\n\r\n@Injectable()\r\nexport class StorageService {\r\n static MENU = \"menu\";\r\n static LANGUAGE = \"language\";\r\n static VERSION = \"version\";\r\n static THEME = \"theme\"; \r\n static DARK_MODE = \"dark_mode\";\r\n\r\n // si se activa el log se mostrarán mensajes por consola\r\n private log: boolean = false;\r\n // contexto de la aplicación para no colisionar con otras aplicaciones que usen el mismo almacenamiento del navegador\r\n private context: string;\r\n // mapa con los datos que se han recuperado del almacenamiento del navegador\r\n private data: Map<string, any> = new Map<string, any>();\r\n // keys de los datos que se pueden almacenar en el almacenamiento del navegador\r\n private keys: string[] = [];\r\n\r\n constructor() {}\r\n\r\n // setea si queremos que el servicio logee todo lo que hace\r\n setLog(log: boolean): void {\r\n this.log = log;\r\n }\r\n\r\n // establece el mapa interno y sustituye al que el servicio construye internamente. Realmente este método no debería usarse \r\n // salvo excepciones muy controladas\r\n setDataMap(data: Map<string, any>): void {\r\n this.data = data;\r\n }\r\n\r\n // recupera el mapa interno clave:valor con todo lo que el servicio tiene almacenado internamente \r\n getDataMap(): Map<string, any> {\r\n return this.data;\r\n }\r\n\r\n // setea el contexto de la aplicación y añade como claves: menu, language y version\r\n setContext(context: string): void {\r\n this.context = context;\r\n StorageService.MENU = this.addContextToKey(\"menu\");\r\n StorageService.LANGUAGE = this.addContextToKey(\"language\");\r\n StorageService.VERSION = this.addContextToKey(\"version\");\r\n StorageService.THEME = this.addContextToKey(\"theme\");\r\n StorageService.DARK_MODE = this.addContextToKey(\"darkMode\");\r\n // añadimos las claves mínimas que tendrá la app\r\n this.keys.push(StorageService.MENU, StorageService.LANGUAGE, StorageService.VERSION, StorageService.THEME, StorageService.DARK_MODE);\r\n this.log && console.log(\"keys\", this.keys);\r\n }\r\n\r\n // recupera el contexto de la app utilizado para añadir un prefijo a todas las claves\r\n getContext(): string {\r\n return this.context;\r\n }\r\n\r\n // añade el contexto a la clave como prefijo\r\n addContextToKey(key: string): string {\r\n return this.context + \"_\" + key; \r\n }\r\n\r\n // añade el contexto guardado en el servicio como prefijo a la clave en el caso que la clave no lo lleve\r\n addContextIfNeeded(key: string): string {\r\n if (!key.includes(this.context)) {\r\n key = this.addContextToKey(key);\r\n }\r\n return key;\r\n }\r\n\r\n // añade una clave a la lista de claves. La clave siempre tendrá el contexto como prefijo aunque la clave \r\n // proporcionada no lo lleve\r\n addKey(key: string): string {\r\n key = this.addContextToKey(key);\r\n this.keys.push(key);\r\n this.log && console.log(`addKey ${key}`);\r\n return key;\r\n }\r\n\r\n // añade una lista de claves a la lista de claves. Las claves siempre tendrán el contexto como prefijo \r\n // aunque las claves proporcionadas no lo lleven\r\n addKeys(keys: string[]): void {\r\n // a cada key del array le concatenamos el contexto de la aplicación\r\n keys.forEach(key => this.addKey(key));\r\n //this.keys = this.keys.concat(keys.map(key => this.addContextToKey(key)));\r\n this.log && console.log(`addKeys ${this.keys}`);\r\n }\r\n\r\n // almacena un objeto en el mapa con la clave indicada. Además se persiste en el storage del navegador (comportamiento por defecto)\r\n // si no queremos persistir el objeto en el storage del navegador indicaremos a false la propiedad persist, en caso de que sí\r\n // no es necesario pasar true. \r\n // no es necesario que la clave lleve el contexto como prefijo\r\n setData(key: string, object: any, persist: boolean = true): void {\r\n key = this.addContextIfNeeded(key);\r\n this.data.set(key, object);\r\n this.log && console.log(\"setData\", key, object);\r\n // si la clave no está en la lista de claves la añadimos\r\n if (!this.keys.includes(key)) {\r\n this.addKey(key);\r\n }\r\n persist && this.saveDataToStorage(key);\r\n }\r\n\r\n // recupera el valor actual en el mapa con la clave indicada. \r\n // no es necesario que la clave lleve el contexto como prefijo\r\n getData(key: string): any {\r\n key = this.addContextIfNeeded(key);\r\n return this.data.get(key);\r\n }\r\n\r\n // recuperas todos los datos del almacenamiento del navegador y los setea en el mapa interno del servicio\r\n recoverAllDataFromStorage(): void { \r\n // para cada clave recuperamos el objeto del almacenamiento del navegador\r\n this.log && console.log(\"recoverAllDataFromStorage\", this.keys);\r\n for (let key of this.keys) {\r\n this.recoverDataFromStorage(key);\r\n }\r\n }\r\n\r\n // recupera un objeto del almacenamiento del navegador asociado a la clave y lo setea en el mapa\r\n // no es necesario que la clave lleve el contexto como prefijo\r\n recoverDataFromStorage(key: string): any {\r\n let data = null;\r\n key = this.addContextIfNeeded(key);\r\n try {\r\n data = JSON.parse(localStorage.getItem(key));\r\n // seteamos el objeto con la clave en el mapa\r\n this.log && console.log(\"recoverDataFromStorage\", key, data);\r\n this.setData(key, data);\r\n } catch (e) {\r\n this.log && console.warn(\"Error al recuperar el objeto del almacenamiento del navegador: \" + e);\r\n }\r\n return data;\r\n }\r\n\r\n // guarda todos los datos del mapa en el almacenamiento del navegador\r\n saveAllDataToStorage(): void {\r\n this.log && console.log(\"saveAllDataToStorage\");\r\n // recuperamos las claves del mapa\r\n let iteratorKeys = this.data.keys();\r\n this.log && console.log(\"iteratorKeys\", iteratorKeys);\r\n // iteramos sobre las claves para guardar los objetos en el almacenamiento del navegador\r\n for (let key of iteratorKeys) {\r\n this.saveDataToStorage(key);\r\n }\r\n }\r\n\r\n // guarda un objeto del mapa en el almacenamiento del navegador\r\n // no es necesario que la clave lleve el contexto como prefijo\r\n saveDataToStorage(key: string): any {\r\n key = this.addContextIfNeeded(key);\r\n let object = this.data.get(key);\r\n this.log && console.log(\"saveDataToStorage\", key, object);\r\n // guardamos el objeto en el almacenamiento del navegador\r\n try {\r\n object = JSON.stringify(object); \r\n localStorage.setItem(key, object);\r\n this.log && console.log(\"saveDataToStorage\", key, object);\r\n } catch (e) {\r\n console.warn(\"Error al guardar el objeto en el almacenamiento del navegador: \" + e);\r\n }\r\n return object;\r\n }\r\n}\r\n","import { inject, Injectable, signal } from \"@angular/core\";\r\nimport { PrimeNG } from \"primeng/config\";\r\nimport Aura from \"@primeng/themes/aura\";\r\nimport { StorageService } from \"./storage.service\";\r\n\r\n@Injectable()\r\nexport class ThemeFBitService {\r\n static THEME_PRIME = \"Prime\"; // nombre del tema por defecto\r\n static THEME_CAIB = \"CAIB\";\r\n static THEME_MATERIAL = \"Material\";\r\n static THEME_NORA = \"Nora\";\r\n\r\n primeNgConfig = inject(PrimeNG);\r\n storageService = inject(StorageService);\r\n themeList$ = signal([ThemeFBitService.THEME_CAIB, ThemeFBitService.THEME_PRIME, ThemeFBitService.THEME_MATERIAL, ThemeFBitService.THEME_NORA]);\r\n currentTheme$ = signal(\"Aura\");\r\n darkMode$ = signal(false);\r\n Prime: any;\r\n Material: any;\r\n Nora: any;\r\n Caib: any;\r\n themeOptions: any = {\r\n darkModeSelector: \".my-app-dark\" //es el selector que cuando lo añadamos como clase al index.html hará que se active el modo oscuro\r\n }\r\n\r\n constructor() {}\r\n\r\n setPrimeTheme(Prime: any) {\r\n console.log(\"setPrimeTheme\");\r\n this.Prime = Prime;\r\n }\r\n\r\n setMaterialTheme(Material: any) {\r\n console.log(\"setFBitMaterialTheme\");\r\n this.Material = Material;\r\n }\r\n\r\n setNoraTheme(Nora: any) {\r\n console.log(\"setNoraTheme\");\r\n this.Nora = Nora;\r\n }\r\n\r\n setCaibTheme(Caib: any) {\r\n console.log(\"setCaibTheme\");\r\n this.Caib = Caib;\r\n }\r\n\r\n setTheme(theme: any, options: any = this.themeOptions) {\r\n let primeTheme = this.getTheme(theme) || this.Caib;\r\n console.log(\"setTheme\", theme, !!primeTheme);\r\n this.primeNgConfig.theme.set({\r\n preset: primeTheme,\r\n options\r\n });\r\n this.currentTheme$.set(theme);\r\n }\r\n\r\n setDarkMode(darkMode: boolean) {\r\n this.darkMode$.set(darkMode);\r\n this.storageService.setData(StorageService.DARK_MODE, darkMode);\r\n }\r\n\r\n changeTheme(theme: string) {\r\n this.setTheme(theme);\r\n this.storageService.setData(StorageService.THEME, theme);\r\n }\r\n\r\n getTheme(theme: string) {\r\n switch (theme) {\r\n case \"Aura\":\r\n return Aura;\r\n case ThemeFBitService.THEME_MATERIAL:\r\n return this.Material;\r\n case ThemeFBitService.THEME_NORA:\r\n return this.Nora;\r\n case ThemeFBitService.THEME_PRIME:\r\n return this.Prime;\r\n case ThemeFBitService.THEME_CAIB:\r\n return this.Caib; \r\n }\r\n }\r\n\r\n // activa el modo oscuro para primeNG. basicamente añade o quita la clase my-app-dark a nivel de la raíz html\r\n toggleDarkMode() {\r\n const element = document.querySelector(\"html\");\r\n element.classList.toggle(\"my-app-dark\");\r\n console.log(\"toggleDarkMode\");\r\n }\r\n}\r\n","import { Injectable, inject, signal } from \"@angular/core\";\r\nimport { StorageService } from \"./storage.service\";\r\nimport { TranslateService } from \".\";\r\n\r\n@Injectable({\r\n providedIn: \"root\"\r\n})\r\nexport class LocaleService {\r\n // the locales the app supports\r\n locales = [\r\n { label: \"Castellano\", value: \"es\" },\r\n { label: \"Català\", value: \"ca\" }\r\n ];\r\n // the default locale\r\n locale$ = signal<string>(\"ca\");\r\n\r\n storageService: StorageService = inject(StorageService);\r\n translateService: TranslateService = inject(TranslateService);\r\n\r\n constructor() {\r\n console.log(\"construyendo LocaleService\");\r\n }\r\n\r\n // change locale/language at runtime\r\n updateLocale(locale: string) {\r\n console.log(\"update locale\", locale);\r\n if (this.locales.some((l) => l.value === locale)) {\r\n this.locale$.set(locale);\r\n }\r\n this.storageService.setData(StorageService.LANGUAGE, this.locale$());\r\n this.translateService.setActiveLang(this.locale$());\r\n }\r\n}\r\n","import { Injectable, inject, computed, signal } from \"@angular/core\";\r\n\r\nimport { AyudaContextual } from \"../data/ayudacontextual\";\r\nimport { ThemeFBitService } from \"./theme-fbit.service\";\r\nimport { LocaleService } from \"./locale.service\";\r\n\r\n@Injectable({ providedIn: \"root\" })\r\nexport class AyudaService {\r\n public mostrar = signal<AyudaContextual>(null);\r\n public static AYUDAS = []; // Inicializar desde la aplicacion cliente\r\n protected mapaAyudas: Map<string, AyudaContextual>; // mapa de ayudas contextuales del sistema\r\n\r\n themeFbitService = inject(ThemeFBitService);\r\n localeService = inject(LocaleService);\r\n baseHelpUrl$ = computed(() => `assets/docshelp/${this.localeService.locale$()}/index.html?darkMode=${this.themeFbitService.darkMode$()}`);\r\n\r\n constructor() {\r\n this.loadAyudas();\r\n }\r\n\r\n // procesa el fichero app.ayudas.json y crea el mapa para acceder luego directamente por clave\r\n private loadAyudas() {\r\n this.mapaAyudas = new Map<string, AyudaContextual>();\r\n if (AyudaService.AYUDAS) {\r\n AyudaService.AYUDAS.forEach(elem => {\r\n this.mapaAyudas.set(elem.key, AyudaContextual.newObject(elem));\r\n });\r\n console.log(`Cargadas ${this.mapaAyudas.size} ayudas contextuales`);\r\n } else {\r\n console.warn(\"No se han podido cargar las ayudas contextuales de la aplicacion.\");\r\n }\r\n }\r\n\r\n mostrarAyuda(key: string) {\r\n if (this.mapaAyudas.has(key)) {\r\n this.mostrar.set(this.mapaAyudas.get(key));\r\n } else {\r\n console.warn(`No existe ayuda para la clave [${key}]`);\r\n }\r\n }\r\n}\r\n","/**\r\n * Clase base que contiene la información sobre un error producido en la aplicación.\r\n */\r\nexport class Error {\r\n constructor(\r\n public url: string,\r\n public summary: string,\r\n public errorText: string,\r\n public trazaError?: any,\r\n public notificacion?: boolean,\r\n public masInfo?: string\r\n ) {}\r\n}\r\n","import { Injectable } from \"@angular/core\";\r\nimport { Subject, Observable } from \"rxjs\";\r\n\r\nimport { BitMessage } from \"../data/bitmessage\";\r\nimport { Error } from \"../data/error\";\r\nimport { BitNotification } from \"../data/bitnotification\";\r\nimport { BitNotificationError } from \"../data/bitnotification-error\";\r\n\r\n/**\r\n *\r\n */\r\n@Injectable({ providedIn: \"root\" })\r\nexport class BitMessageService {\r\n // Observable string sources\r\n private observableMessagesSource = new Subject<BitMessage>(); //mensajes generales que se mostrarán como un dialog en el centro de la pantalla\r\n public observableMessages: Observable<BitMessage>;\r\n private observableNotificationsSource = new Subject<BitNotification>(); //notifiaciones que se mostrarán como un growl\r\n public observableNotifications: Observable<BitNotification>;\r\n private observableErrorsSource = new Subject<Error>(); //errores del servidor que se mostrarán como un dialog igual con la traza del error\r\n public observableErrors: Observable<Error>;\r\n private observableNotificacionsErrorsSource = new Subject<BitNotificationError>(); //errores controlados enviados del servidor que se mostrarán como una ventanita similar al growl\r\n public observableNotificationsErrors: Observable<BitNotificationError>;\r\n\r\n constructor() {\r\n this.observableMessages = this.observableMessagesSource.asObservable();\r\n this.observableErrors = this.observableErrorsSource.asObservable();\r\n this.observableNotificationsErrors = this.observableNotificacionsErrorsSource.asObservable();\r\n this.observableNotifications = this.observableNotificationsSource.asObservable();\r\n }\r\n\r\n /**\r\n * Ask user to confirm an action. `message` explains the action and choices.\r\n * Returns promise resolving to `true`=confirm or `false`=cancel\r\n */\r\n confirm(message?: string) {\r\n return new Promise<boolean>((resolve) => {\r\n return resolve(window.confirm(message || \" OK?\"));\r\n });\r\n }\r\n\r\n /** Enviamos un mensaje. Como mínimo el componente DialogComponent lo recibirá y lo mostrará al usuario */\r\n sendMessage(message: BitMessage) {\r\n this.observableMessagesSource.next(message);\r\n }\r\n\r\n /**\r\n * Enviamos un error. El componente DialogComponent lo recibirá y lo mostrará al usuario en el centro del usuario\r\n **/\r\n sendError(error: Error) {\r\n this.observableErrorsSource.next(error);\r\n }\r\n\r\n /** Enviamos una notificación. El componente NotificationComponent lo recibirá y la mostrará en pantalla */\r\n sendNotification(notification: BitNotification) {\r\n this.observableNotificationsSource.next(notification);\r\n }\r\n\r\n /**\r\n * Enviamos un error. Se mostrará como una ventana arriba a la derecha con un close para cerrarlo\r\n * @param bitNotificationError\r\n */\r\n sendNotificationError(bitNotificationError: BitNotificationError, clearErrors: boolean = true) {\r\n console.log(\"sendNotificationError\", bitNotificationError, clearErrors);\r\n bitNotificationError.clearErrors = clearErrors;\r\n this.observableNotificacionsErrorsSource.next(bitNotificationError);\r\n }\r\n\r\n hideNotificacionErrorPanel() {\r\n console.log(\"hideNotificacionErrorPanel\");\r\n this.observableNotificacionsErrorsSource.next(null);\r\n }\r\n\r\n hideNotificacionPanel() {\r\n console.log(\"hideNotificacionPanel\");\r\n this.observableNotificationsSource.next(null);\r\n }\r\n\r\n hideMessagePanel() {\r\n this.observableMessagesSource.next(null);\r\n }\r\n\r\n hideErrorsPanel() {\r\n this.observableErrorsSource.next(null);\r\n }\r\n}\r\n","export class Domain {\r\n public static DUMMY: Domain = new Domain(null, \"Qualsevol\", false);\r\n constructor(public value: string | boolean, public label: string, public disabled?: boolean) {}\r\n}\r\n","import { Injectable, signal } from \"@angular/core\";\r\nimport moment from \"moment\";\r\nimport { Subject } from \"rxjs\";\r\nimport { UrlSegment } from \"@angular/router\";\r\nimport { Domain } from \"../data/domain\";\r\n\r\n@Injectable({ providedIn: \"root\" })\r\nexport class GeneralUtils {\r\n public static FORMAT_SHORT_DATE = \"DD/MM/YYYY\";\r\n public static FORMAT_LONG_DATE = \"DD/MM/YYYY HH:mm\";\r\n public static FORMAT_SHORT_TIME = \"HH:mm\";\r\n public static FORMAT_SHORT_SECONDS_TIME = \"HH:mm:ss\";\r\n private observableLoadingSource = new Subject<string>();\r\n public observableLoading;\r\n loading = signal<number>(0);\r\n\r\n constructor() {\r\n console.log(\"GeneralUtils constructor\");\r\n this.observableLoading = this.observableLoadingSource.asObservable();\r\n }\r\n\r\n public startLoading(): void {\r\n console.log(\"startLoading\");\r\n this.observableLoadingSource.next(\"start\");\r\n this.loading.update((value) => ++value);\r\n }\r\n\r\n public stopLoading(): void {\r\n console.log(\"startLoading\");\r\n this.observableLoadingSource.next(\"stop\");\r\n this.loading.update((value) => --value);\r\n }\r\n\r\n public static capitalizeFirstLetter(cad: string): string {\r\n return cad && cad.charAt(0).toUpperCase() + cad.slice(1);\r\n }\r\n\r\n public static getTwoDigits(digit: number): string {\r\n if (digit < 10) {\r\n return \"0\" + digit;\r\n } else {\r\n return \"\" + digit;\r\n }\r\n }\r\n\r\n public static getPathFromURL(segments: UrlSegment[]): string {\r\n let path = \"\";\r\n for (let seg of segments) {\r\n path += seg.path;\r\n path += \"/\";\r\n }\r\n return path;\r\n }\r\n\r\n /** Transforma el objeto en un objeto FormData para enviar como un multipart*/\r\n public static objectToFormData(object: Object) {\r\n let formData: any = new FormData();\r\n Object.keys(object).map((k) => {\r\n if (Array.isArray(object[k])) {\r\n for (let fileItem of object[k]) {\r\n formData.append(k, fileItem);\r\n }\r\n } else {\r\n formData.append(k, object[k]);\r\n }\r\n });\r\n return formData;\r\n }\r\n\r\n public static buildNombreCompleto(obj: any): string {\r\n let str = \"\";\r\n if (obj.nombre) str += obj.nombre;\r\n if (obj.apellido1) str += (str.length > 0 ? \" \" : \"\") + obj.apellido1;\r\n if (obj.apellido2) str += (str.length > 0 ? \" \" : \"\") + obj.apellido2;\r\n return str;\r\n }\r\n\r\n public static getTodayAsString(format: string = GeneralUtils.FORMAT_SHORT_DATE): string {\r\n return moment(new Date()).format(format);\r\n }\r\n\r\n public static getDateAsString(value: Date, format: string = GeneralUtils.FORMAT_SHORT_DATE): string {\r\n return moment(value).format(format);\r\n }\r\n\r\n public static getStringAsDate(value: string, format: string = GeneralUtils.FORMAT_SHORT_DATE): Date {\r\n return moment(value, format).toDate();\r\n }\r\n\r\n public static getDateTimeAsString(value: Date, format: string = GeneralUtils.FORMAT_LONG_DATE): string {\r\n return moment(value).format(format);\r\n }\r\n\r\n public static getTimeAsString(fecha: Date, format: string = GeneralUtils.FORMAT_SHORT_TIME): string {\r\n return moment(fecha).format(format);\r\n }\r\n\r\n public static stringToDate(fString: string): Date {\r\n return moment(fString).toDate();\r\n }\r\n\r\n public static stringShortToDate(fString: string): Date {\r\n return moment(fString, \"DD/MM/YYYY\").toDate();\r\n }\r\n\r\n public static stringToTime(tString: string): Date {\r\n return moment(tString, \"HH:mm\").toDate();\r\n }\r\n\r\n public static getTimeFromDateString(fecha: string): string {\r\n return moment(fecha).format(GeneralUtils.FORMAT_SHORT_TIME);\r\n }\r\n\r\n public static getWithDaysOffset(offset: number = 0): string {\r\n return moment().add(offset, \"days\").format(GeneralUtils.FORMAT_SHORT_DATE);\r\n }\r\n\r\n public static getFirstDayOfCurrentMonth(): string {\r\n return moment().startOf(\"month\").format(GeneralUtils.FORMAT_SHORT_DATE);\r\n }\r\n\r\n public static getLastDayOfCurrentMonth(): string {\r\n return moment().endOf(\"month\").format(GeneralUtils.FORMAT_SHORT_DATE);\r\n }\r\n\r\n public static fechaInicioDespuesIgualFechaFin(fechaInicio: string, fechaFin: string): boolean {\r\n if (fechaInicio && fechaFin) {\r\n return GeneralUtils.stringShortToDate(fechaInicio) > GeneralUtils.stringShortToDate(fechaFin);\r\n }\r\n return false;\r\n }\r\n\r\n public static horaInicioDespuesHoraFin(horaInicio: string, horaFin: string): boolean {\r\n if (horaInicio && horaFin) {\r\n return GeneralUtils.stringToTime(horaInicio) > GeneralUtils.stringToTime(horaFin);\r\n }\r\n return false;\r\n }\r\n\r\n public static fechaEnRango(fecha: string, fechaInicio: string, fechaFin: string): boolean {\r\n if (fecha) {\r\n let fechaDate = GeneralUtils.stringShortToDate(fecha);\r\n let output = !(\r\n (fechaInicio && fechaDate < GeneralUtils.stringShortToDate(fechaInicio)) ||\r\n (fechaFin && fechaDate > GeneralUtils.stringShortToDate(fechaFin))\r\n );\r\n return output;\r\n }\r\n return false;\r\n }\r\n\r\n public static addOpcionVacia(lista: any[], texto?: string) {\r\n let nLista = lista.slice();\r\n nLista.unshift(new Domain(null, texto ? texto : \"\"));\r\n return nLista;\r\n }\r\n\r\n public static getOptionText(list: Domain[], id: number): string {\r\n for (let d of list) {\r\n if (+d.value == id) {\r\n return d.label;\r\n }\r\n }\r\n return \"-\";\r\n }\r\n}\r\n","import { Injectable, inject } from \"@angular/core\";\r\nimport { TranslocoService, TranslateParams, HashMap, TranslocoScope } from \"@jsverse/transloco\";\r\nimport { Observable, BehaviorSubject } from \"rxjs\";\r\n\r\nimport { TranslatedMessage } from \"../../base/models/types\";\r\n\r\n/**\r\n * Construye un objeto TranslatedMessage con información para que el receptor pueda traducir el mensaje según\r\n * el idioma especificado\r\n * @param code código dentro del fichero json para traducir el mensaje\r\n * @param context contexto de traducción que permitirár localizar el fichero json\r\n * @param params Hashmap de tipo nombre propiedad, valor que permitirá customizar el mensaje a traducir\r\n */\r\nexport function buildTranslatedMessage(code: string, context: string, params?: {}): TranslatedMessage {\r\n // la nueva versión de transloco quiere un null y no una cadena vacía\r\n let newContext = !context ? null : context;\r\n let translatedMessage: any = { code: code, context: newContext, params: params };\r\n return translatedMessage;\r\n}\r\n\r\n/** wrapper al servicio de traducción de textos */\r\n@Injectable({ providedIn: \"root\" })\r\nexport class TranslateService {\r\n private translocoService = inject(TranslocoService);\r\n private defaultLanguage = inject<any>(\"DEFAULT_LANGUAGE\" as any) ?? \"ca\";\r\n\r\n private langChangeSubject: BehaviorSubject<string>;\r\n langChanged$: Observable<string>;\r\n\r\n constructor() {\r\n //para suscribirnos a cambios de idioma y emitimos un primer valor que es el idioma en curso\r\n console.log(\"default language\", this.defaultLanguage);\r\n this.langChangeSubject = new BehaviorSubject<string>(this.defaultLanguage);\r\n this.langChanged$ = this.langChangeSubject.asObservable(); //.pipe(startWith(this.getActiveLang()));\r\n }\r\n\r\n /** Permite traducir un texto cuya clave tiene incluida el contexto en la propia key. Se entiende que el prefijo antes\r\n * del primer punto representará el contexto y el resto representará la clave que podrá ser compuesta:\r\n * Ejemplo: contexto.grupo.subgrupo.clave\r\n */\r\n selectTranslateWithContext(key: string) {\r\n let point = key.indexOf(\".\");\r\n let context = \"\";\r\n if (point != -1) {\r\n context = key.substring(0, point);\r\n key = key.substring(point + 1, key.length);\r\n }\r\n return this.selectTranslate(key, null, context);\r\n }\r\n\r\n selectTranslate(key: TranslateParams, params?: HashMap, lang?: string | TranslocoScope, _isObject?: boolean): Observable<any> {\r\n // console.log(`selectTranslate ${key} ${lang}`);\r\n return this.translocoService.selectTranslate(key, params, lang, _isObject);\r\n }\r\n\r\n selectTranslateObject(key: string, params?: HashMap, lang?: string): Observable<any> {\r\n return this.translocoService.selectTranslateObject(key, params, lang);\r\n }\r\n\r\n setActiveLang(lang: string): this {\r\n this.translocoService.setActiveLang(lang);\r\n this.langChangeSubject.next(lang); //emitimos que hemos cambiado el idioma\r\n // console.log(\"setActiveLang\", lang);\r\n return this;\r\n }\r\n\r\n getActiveLang(): string {\r\n let lang = this.translocoService.getActiveLang();\r\n return lang;\r\n }\r\n}\r\n","import { Injectable, inject } from \"@angular/core\";\r\nimport { HttpClient, HttpHeaders, HttpErrorResponse } from \"@angular/common/http\";\r\nimport { Observable } from \"rxjs\";\r\n\r\nimport { Error as CustomError } from \"../data/error\";\r\nimport { BitMessageService } from \"./message.service\";\r\nimport { GeneralUtils } from \"./general-utils.service\";\r\nimport { TranslateService } from \"./translate.service\";\r\n\r\n@Injectable({ providedIn: \"root\" })\r\nexport class HttpUtilsService {\r\n protected http = inject(HttpClient);\r\n protected bitMessageService = inject(BitMessageService);\r\n protected generalUtils = inject(GeneralUtils);\r\n protected translateService = inject(TranslateService);\r\n private apiUrl = inject<string>(\"API_URL\" as any);\r\n private contextPath = inject<string>(\"CONTEXT_PATH\" as any);\r\n\r\n // customizado por proyecto: {provide: 'CONTEXT_PATH', useValue: environment.CONTEXT}\r\n static CONTEXT_PATH = \"bitcitafront\";\r\n static LOGIN_AUTHENTICATION = \"\";\r\n static errorAccessServerTitle: string = \"\";\r\n static errorAccessServerMessage: string = \"\";\r\n static errorServerTitle: string = \"\";\r\n static errorServerMessage: string = \"\";\r\n\r\n constructor() {\r\n HttpUtilsService.CONTEXT_PATH = this.contextPath;\r\n console.log(`HttpUtilsSerive creado con API Url: ${this.apiUrl} y contextPath: ${this.contextPath}`);\r\n this.getMessagesI18N();\r\n }\r\n\r\n getMessagesI18N() {\r\n this.translateService\r\n .selectTranslate(\"messages.erroraccessservertitle\", {}, \"bitnglibrary\")\r\n .subscribe((v) => (HttpUtilsService.errorAccessServerTitle = v));\r\n this.translateService\r\n .selectTranslate(\"messages.erroraccessservermessage\", {}, \"bitnglibrary\")\r\n .subscribe((v) => (HttpUtilsService.errorAccessServerMessage = v));\r\n this.translateService.selectTranslate(\"messages.errorservertitle\", {}, \"bitnglibrary\").subscribe((v) => (HttpUtilsService.errorServerTitle = v));\r\n this.translateService.selectTranslate(\"messages.errorservermessage\", {}, \"bitnglibrary\").subscribe((v) => (HttpUtilsService.errorServerMessage = v));\r\n }\r\n\r\n /*\r\n private handleError(error: HttpErrorResponse) {\r\n //this.generalUtils.stopLoading();\r\n let customError = HttpUtilsService.getCustomError(error);\r\n this.bitMessageService.sendError(customError);\r\n return throwError(customError);\r\n }*/\r\n\r\n static getCustomError(error: HttpErrorResponse): CustomError {\r\n let lastUrlAcceded = error.url;\r\n let innerError;\r\n let customError;\r\n\r\n if (\r\n error.message &&\r\n (error.message.includes(\"Unexpected token < in JSON\") || //chrome\r\n error.message.includes(\"JSON.parse: unexpected character at line 1 column 1\") || //firefox\r\n error.message.includes(\"JSON.parse Error: Invalid character at position:1\")) //explorer\r\n ) {\r\n console.log(\"Parece que hemos perdido la sesión\");\r\n //customError = new CustomError(lastUrlAcceded, \"S'ha detectat que s'ha perdut la sessió amb el servidor. És necessari que torni a autenticar-se en el sistema.\\n Si no apareix la pàgina d'introducció d'usuari i contrasenya, per favor tanqui el navegador i torni a obrir l'aplicació.\",\r\n //\"S'ha detectat que s'ha perdut la sessió amb el servidor. És necessari que torni a autenticar-se en el sistema.\\n Si no apareix la pàgina d'introducció d'usuari i contrasenya, per favor tanqui el navegador i torni a obrir l'aplicació.\", undefined, true, null);\r\n HttpUtilsService.reloadPage();\r\n return;\r\n }\r\n\r\n try {\r\n innerError = JSON.parse(error.error);\r\n } catch (err) {\r\n innerError = error.error;\r\n }\r\n if (innerError && (innerError[\"notificacion\"] || innerError[\"trazaError\"])) {\r\n //el error es controlado del servidor\r\n customError = <CustomError>innerError;\r\n } else {\r\n //el error es un problema de comunicaciones o del propio cliente Angular\r\n if (error.status || error.status === 0) {\r\n //caso jetty o error controlado del servidor\r\n console.log(\"HTTP Error con status \" + error.status);\r\n if (error.status >= 300 && error.status < 500) {\r\n customError = new CustomError(lastUrlAcceded, this.errorAccessServerTitle, this.errorAccessServerMessage, undefined, true);\r\n } else {\r\n customError = new CustomError(lastUrlAcceded, this.errorServerTitle, this.errorServerMessage, undefined, true);\r\n }\r\n } else {\r\n customError = new CustomError(lastUrlAcceded, error.message, error.message, error.error);\r\n }\r\n }\r\n return customError;\r\n }\r\n\r\n static reloadPage() {\r\n let currentUrl = window.location.href;\r\n console.log(`current url ${currentUrl}`);\r\n let index: number = currentUrl.lastIndexOf(HttpUtilsService.CONTEXT_PATH);\r\n let newUrl: string;\r\n if (index != -1) {\r\n newUrl = currentUrl.substring(0, index + HttpUtilsService.CONTEXT_PATH.length);\r\n } else {\r\n newUrl = currentUrl;\r\n }\r\n console.log(`new url ${newUrl}`);\r\n window.location.href = newUrl;\r\n }\r\n\r\n public getHttpPost<T>(url, hqlRequest, emptyResponse: boolean = false): Observable<T> {\r\n console.log(\"calling url server via POST:\" + this.apiUrl + url);\r\n let body = JSON.stringify(hqlRequest);\r\n let headers: HttpHeaders = new HttpHeaders().set(\"Content-Type\", \"application/json\");\r\n headers = this.addAuthenticationData(headers);\r\n let vResponseType: any = emptyResponse ? \"text\" : \"json\";\r\n return this.http.post<T>(this.apiUrl + url, body, { headers, responseType: vResponseType });\r\n }\r\n\r\n public getHttpPut<T>(url, hqlRequest): Observable<T> {\r\n console.log(\"calling url server via PUT:\" + this.apiUrl + url);\r\n let body = JSON.stringify(hqlRequest);\r\n let headers: HttpHeaders = new HttpHeaders().set(\"Content-Type\", \"application/json\");\r\n headers = this.addAuthenticationData(headers);\r\n return this.http.put<T>(this.apiUrl + url, body, { headers });\r\n }\r\n\r\n public getHttpPatch<T>(url, hqlRequest): Observable<T> {\r\n console.log(\"calling url server via PUT:\" + this.apiUrl + url);\r\n let body = JSON.stringify(hqlRequest);\r\n let headers: HttpHeaders = new HttpHeaders().set(\"Content-Type\", \"application/json\");\r\n headers = this.addAuthenticationData(headers);\r\n return this.http.patch<T>(this.apiUrl + url, body, { headers });\r\n }\r\n\r\n public getHttpDelete(url): Observable<any> {\r\n console.log(\"calling url server via DELETE:\" + this.apiUrl + url);\r\n let headers: HttpHeaders = new HttpHeaders().set(\"Content-Type\", \"application/json\");\r\n headers = this.addAuthenticationData(headers);\r\n return this.http.delete(this.apiUrl + url, {\r\n headers,\r\n responseType: \"text\"\r\n });\r\n }\r\n\r\n public getHttpGet<T>(url): Observable<T> {\r\n console.log(\"calling url server via GET:\" + this.apiUrl + url);\r\n let headers: HttpHeaders = this.addAuthenticationData(new HttpHeaders());\r\n\r\n return this.http.get<T>(this.apiUrl + url, {\r\n headers: headers\r\n });\r\n }\r\n\r\n private addAuthenticationData(httpHeaders: HttpHeaders) {\r\n if (HttpUtilsService.LOGIN_AUTHENTICATION && HttpUtilsService.LOGIN_AUTHENTICATION != \"\") {\r\n httpHeaders = httpHeaders.append(\"Authorization\", \"Basic \" + HttpUtilsService.LOGIN_AUTHENTICATION);\r\n }\r\n return httpHeaders;\r\n }\r\n}\r\n\r\nexport var httpUtilsServiceInjectables: Array<any> = [\r\n {\r\n provide: HttpUtilsService,\r\n useClass: HttpUtilsService\r\n }\r\n];\r\n","import { inject } from \"@angular/core\";\r\nimport { HttpClient } from \"@angular/common/http\";\r\nimport { lastValueFrom } from \"rxjs\";\r\n\r\nimport { HttpUtilsService } from \"./http-utils.service\";\r\nimport { HttpUrlGenerator } from \"../entities/http-url-generator\";\r\nimport { EntityId } from \"../entities/models\";\r\n\r\n\r\nexport abstract class DefaultDataService<T> {\r\n protected httpUtilsService: HttpUtilsService = inject(HttpUtilsService);\r\n\r\n constructor(protected entityName: string, protected http: HttpClient, protected httpUrlGenerator: HttpUrlGenerator) {}\r\n\r\n async add(entity: T): Promise<T> {\r\n return lastValueFrom(this.http.post<T>(this.httpUrlGenerator.entityResource(this.entityName), entity));\r\n }\r\n\r\n async delete(key: number | string): Promise<number | string> {\r\n return lastValueFrom(\r\n this.http.delete<number | string>(`${this.httpUrlGenerator.entityResource(this.entityName)}${key}`)\r\n );\r\n }\r\n async getAll(): Promise<T[]> {\r\n return lastValueFrom(this.http.get<T[]>(this.httpUrlGenerator.collectionResource(this.entityName)));\r\n }\r\n\r\n async getById(key: number | string): Promise<T> {\r\n return lastValueFrom(this.http.get<T>(`${this.httpUrlGenerator.entityResource(this.entityName)}${key}`));\r\n }\r\n\r\n async getWithQuery(queryParams: string | undefined): Promise<T[]> {\r\n return lastValueFrom(\r\n this.http.get<T[]>(`${this.httpUrlGenerator.collectionResource(this.entityName)}?${queryParams}`)\r\n );\r\n }\r\n\r\n async update(id: EntityId, update: Partial<T>): Promise<T> {\r\n return lastValueFrom(this.http.put<T>(`${this.httpUrlGenerator.entityResource(this.entityName)}${id}`, update));\r\n }\r\n\r\n async upsert(entity: T): Promise<T> {\r\n // si no tiene id hacemos un post si no un put\r\n if (!entity[\"id\"]) {\r\n return this.add(entity);\r\n } else {\r\n return this.update(entity[\"id\"], entity);\r\n }\r\n }\r\n}\r\n","\r\nimport { HttpUtilsService } from \"./http-utils.service\";\r\nimport { Item } from \"../data\";\r\nimport { DefaultDataService } from \"./default-data.service\";\r\n\r\n\r\nexport abstract class BaseDataService<T extends Item> extends DefaultDataService<T> {\r\n protected httpUtilsService: HttpUtilsService;\r\n\r\n /** Borra las entidades del servidor asociadas al parentId proporcionado */\r\n abstract deleteEntities(entities: number[], parentId: number): Promise<any>;\r\n /** Cuenta el número total de elementos de una búsqueda con filtro */\r\n abstract countAllByFilter(queryParams: string): Promise<number>;\r\n /** Realiza el patch de la entidad y retorna la entidad completa */\r\n abstract patchEntity(patch: any): Promise<T>;\r\n}\r\n","import { Item } from \"../data\";\r\nimport { BaseDataService } from \"./base-data.service\";\r\n\r\nexport class BaseDataAdapterService<T extends Item> extends BaseDataService<T> {\r\n /** Borra las entidades del servidor */\r\n deleteEntities(entities: number[], parentId: number): Promise<any> {\r\n throw new Error(\"Method not implemented.\");\r\n }\r\n /** Cuenta el número total de elementos de una búsqueda con filtro */\r\n countAllByFilter(queryParams: string): Promise<number> {\r\n throw new Error(\"Method not implemented.\");\r\n }\r\n\r\n /** Realiza el patch de la entidad y retorna la entidad completa */\r\n patchEntity(patch: any): Promise<T> {\r\n throw new Error(\"Method not implemented.\");\r\n }\r\n}\r\n","import { Observable, Subject } from \"rxjs\";\r\n\r\n/**\r\n * Servicio que permite comunicar cuando debe abrirse o cerrarse un panel\r\n */\r\nexport class BitPanelService {\r\n private tooglePanel$ = new Subject<any>(); // permite comunicar que el panel debe abrirse o cerrarse\r\n\r\n // comunicará que el panel debe abrirse o cerrarse\r\n tooglePanel(event) {\r\n this.tooglePanel$.next(event);\r\n }\r\n\r\n // Retorna el observable para recibir notificaciones de si debemos abrir o cerrar el panel\r\n getTooglePanel(): Observable<boolean> {\r\n return this.tooglePanel$;\r\n }\r\n}\r\n","import { FormGroup, UntypedFormControl, UntypedFormArray, ValidatorFn } from \"@angular/forms\";\r\nimport { GeneralUtils } from \"./general-utils.service\";\r\nimport { TranslatedMessage, ErrorValidateForm } from \"../../base/models/types\";\r\nimport { buildTranslatedMessage } from \"./translate.service\";\r\n\r\nexport class CustomValidators {\r\n static config = {\r\n required: CustomValidators.buildErrorMessage(\"required\"),\r\n invalidDate: CustomValidators.buildErrorMessage(\"Data incorrecta\"),\r\n invalidTime: CustomValidators.buildErrorMessage(\"invalidTime\"),\r\n invalidEmailAddress: CustomValidators.buildErrorMessage(\"invalidEmailAddress\"),\r\n invalidEmailCSVAddress: CustomValidators.buildErrorMessage(\"invalidEmailCSVAddress\"),\r\n invalidLogin: CustomValidators.buildErrorMessage(\"invalidLogin\"),\r\n invalidEtiqueta: CustomValidators.buildErrorMessage(\"invalidEtiqueta\"),\r\n invalidName: CustomValidators.buildErrorMessage(\"invalidName\"),\r\n invalidCodigo: CustomValidators.buildErrorMessage(\"invalidCodigo\"),\r\n invalidAlfanumerico: CustomValidators.buildErrorMessage(\"invalidAlfanumerico\"),\r\n invalidCantidad: CustomValidators.buildErrorMessage(\"invalidCantidad\"),\r\n invalidEnteroPositivo: CustomValidators.buildErrorMessage(\"invalidEnteroPositivo\"),\r\n invalidEnteroPositivoIncluyeCero: CustomValidators.buildErrorMessage(\"invalidEnteroPositivoIncluyeCero\"),\r\n invalidCantidadDecimal: CustomValidators.buildErrorMessage(\"invalidCantidadDecimal\"),\r\n invalidNumeroPositivo: CustomValidators.buildErrorMessage(\"invalidNumeroPositivo\"),\r\n invalidCodigoPostal: CustomValidators.buildErrorMessage(\"invalidCodigoPostal\"),\r\n invalidTelefono: CustomValidators.buildErrorMessage(\"invalidTelefono\"),\r\n invalidTelefonoCSV: CustomValidators.buildErrorMessage(\"invalidTelefonoCSV\"),\r\n invalidPorcentaje: CustomValidators.buildErrorMessage(\"invalidPorcentaje\"),\r\n invalidUrl: CustomValidators.buildErrorMessage(\"invalidUrl\"),\r\n invalidPath: CustomValidators.buildErrorMessage(\"invalidPath\"),\r\n invalidNIF: CustomValidators.buildErrorMessage(\"invalidNIF\"),\r\n invalidNIE: CustomValidators.buildErrorMessage(\"invalidNIE\"),\r\n invalidCIF: CustomValidators.buildErrorMessage(\"invalidCIF\"),\r\n invalidNIFNIE: CustomValidators.buildErrorMessage(\"invalidNIFNIE\"),\r\n invalidAnyo: CustomValidators.buildErrorMessage(\"invalidAnyo\"),\r\n maxlength: CustomValidators.buildErrorMessage(\"maxlength\"),\r\n invalidNumeroDocumentoTipoDocumento: CustomValidators.buildErrorMessage(\"invalidNumeroDocumentoTipoDocumento\"),\r\n direccionIncompleta: CustomValidators.buildErrorMessage(\"direccionIncompleta\"),\r\n requiredExtraData: CustomValidators.buildErrorMessage(\"requiredExtraData\"),\r\n invalidRangoFechaFinPosteriorInicio: CustomValidators.buildErrorMessage(\"invalidRangoFechaFinPosteriorInicio\"),\r\n invalidRangoHoraFinPosteriorInicio: CustomValidators.buildErrorMessage(\"invalidRangoHoraFinPosteriorInicio\"),\r\n invalidDateTimeNotAfterCurrentDate: CustomValidators.buildErrorMessage(\"invalidDateTimeNotAfterCurrentDate\")\r\n };\r\n\r\n static CustomValidatorsMap = {\r\n codigoNumerico: CustomValidators.codigoValidator,\r\n codigoAlfanumerico: CustomValidators.alfanumericoValidator,\r\n nombre: CustomValidators.nombreValidator,\r\n numero: CustomValidators.cantidadDecimalValidator,\r\n entero: CustomValidators.cantidadValidator,\r\n numeroPositivo: CustomValidators.numeroPositivoValidator,\r\n enteroPositivo: CustomValidators.enteroPositivoValidator,\r\n nif: CustomValidators.nifValidator,\r\n nie: CustomValidators.nieValidator,\r\n cif: CustomValidators.cifValidator,\r\n nifnie: CustomValidators.nifNieValidator,\r\n cp: CustomValidators.codigoPostalValidator,\r\n telefono: CustomValidators.telefonoValidator,\r\n telefonoCSV: CustomValidators.telefonoCSVValidator,\r\n emailCSV: CustomValidators.emailCSVValidator,\r\n email: CustomValidators.emailValidator,\r\n fecha: CustomValidators.dataValidator,\r\n anyo: CustomValidators.anyoValidator\r\n };\r\n\r\n static buildErrorMessage(code: string, params?: {}): TranslatedMessage {\r\n return buildTranslatedMessage(\"form.messages.\" + code, \"bitnglibrary\", params);\r\n }\r\n\r\n static getValidatorErrorMessage(code: string) {\r\n return CustomValidators.config[code];\r\n }\r\n\r\n // método para unir validadores\r\n static compose(validators: ValidatorFn[]): ValidatorFn {\r\n let result = function (g: FormGroup) {\r\n // ejecutamos cada uno de los validadores y unimos sus resultados\r\n let innerResult = validators.map((validator) => validator(g)).reduce((acc, result = {}) => Object.assign(acc, result), {});\r\n return innerResult;\r\n };\r\n return result;\r\n }\r\n\r\n static required(control): { [s: string]: boolean } {\r\n if (control.value === null || control.value === undefined || control.value === \"\") {\r\n return { required: true };\r\n } else {\r\n return null;\r\n }\r\n }\r\n\r\n // este validador en realidad no está haciendo nada porque bit-input, para fechas no válidas, sustituye\r\n // control.value por un null y el validador pasa siempre\r\n static dataValidator(control): { [s: string]: boolean } {\r\n // formato dd/MM/yyyy\r\n if (!control.value || control.value.match(/^(0[1-9]|1\\d|2\\d|3[01])\\/(0[1-9]|1[0-2])\\/(19|20)\\d{2}$/)) {\r\n return null;\r\n } else {\r\n return { invalidDate: true };\r\n }\r\n }\r\n\r\n static timeValidator(control): { [s: string]: boolean } {\r\n // formato hh:mm\r\n if (!control.value || (control.value && control.value.match(/^[0-9][0-9]:[0-9][0-9]$/))) {\r\n return null;\r\n } else {\r\n return { invalidTime: true };\r\n }\r\n }\r\n\r\n static emailValidator(control): { [s: string]: boolean } {\r\n // RFC 2822 compliant regex\r\n if (!control.value || control.value.match(/\\S+@([-\\w]+\\.)+\\w+/g)) {\r\n return null;\r\n } else {\r\n return { invalidEmailAddress: true };\r\n }\r\n }\r\n\r\n static emailCSVValidator(control): { [s: string]: boolean } {\r\n // RFC 2822 compliant regex\r\n if (!control.value || control.value.match(/^(( )*[\\w\\.]+@([-\\w]+\\.)+\\w+( )*)(,( )*[\\w\\.]+@([-\\w]+\\.)+\\w+( )*)*$/g)) {\r\n return null;\r\n } else {\r\n return { invalidEmailCSVAddress: true };\r\n }\r\n }\r\n\r\n static loginValidator(control): { [s: string]: boolean } {\r\n if (!control.value || control.value.match(/^[a-z0-9_-]{3,15}/)) {\r\n return null;\r\n } else {\r\n return { invalidLogin: true };\r\n }\r\n }\r\n\r\n static etiquetaValidator(control): { [s: string]: boolean } {\r\n if (!control.value || control.value.match(/^[a-zA-Z0-9_-]+/)) {\r\n return null;\r\n } else {\r\n return { invalidEtiqueta: true };\r\n }\r\n }\r\n\r\n static nombreValidator(control): { [s: string]: boolean } {\r\n if (\r\n !control.value ||\r\n /^([A-Za-z0-9_\\.\\,\\'\\\"\\(\\)\\;\\:\\-\\/\\@\\?\\%\\?\\¿\\&\\+\\-\\*\\/\\ \\n\\rºª'´’·ïü?`áéíóúÁÉÍÓÚàèìòùÀÈÌÒÙÄËÏÖÜäëïöüñÑçÇ¡!#])+$/.test(control.value)\r\n ) {\r\n return null;\r\n } else {\r\n return { invalidName: true };\r\n }\r\n }\r\n\r\n static codigoValidator(control): { [s: string]: boolean } {\r\n if (!control.value || control.value.match(/^([0-9])+$/)) {\r\n return null;\r\n } else {\r\n return { invalidCodigo: true };\r\n }\r\n }\r\n\r\n static alfanumericoValidator(control): { [s: string]: boolean } {\r\n if (!control.value || control.value.match(/^([A-Z0-9_\\.\\-ÑÇ])+$/)) {\r\n return null;\r\n } else {\r\n return { invalidAlfanumerico: true };\r\n }\r\n }\r\n\r\n static cantidadValidator(control): { [s: string]: boolean } {\r\n // value is either empty, or a number without decimals\r\n if (!control.value || control.value === \"\") {\r\n return null;\r\n }\r\n let num = Number(control.value);\r\n if (!isNaN(num) && num % 1 == 0) {\r\n return null;\r\n }\r\n return { invalidCantidad: true };\r\n }\r\n\r\n /* Valida números enteros (sin decimales) positivos (>=0) */\r\n static enteroPositivoValidator(control): { [s: string]: boolean } {\r\n // value is either empty, or a number without decimals\r\n if (!control.value || control.value === \"\") {\r\n return null;\r\n }\r\n let num = Number(control.value);\r\n if (!isNaN(num) && num % 1 == 0 && num >= 0) {\r\n return null;\r\n }\r\n return { invalidEnteroPositivo: true };\r\n }\r\n\r\n static enteroPositivoValidatorIncluyeCeroValidator(control): { [s: string]: boolean } {\r\n // value is either empty, or a positive number (including 0) without decimals\r\n if (!control.value || control.value === \"\") {\r\n return null;\r\n }\r\n let num = Number(control.value);\r\n if (!isNaN(num) && num % 1 == 0 && num >= 0) {\r\n return null;\r\n }\r\n return { invalidEnteroPositivoIncluyeCero: true };\r\n }\r\n\r\n /* Valida números enteros (con decimales) */\r\n static cantidadDecimalValidator(control): { [s: string]: boolean } {\r\n // value is either empty, or a number (including decimals)\r\n if (!control.value || control.value === \"\" || !isNaN(Number(control.value))) {\r\n return null;\r\n } else {\r\n return { invalidCantidadDecimal: true };\r\n }\r\n }\r\n\r\n /* Valida números enteros (con decimales) positivos (>=0) */\r\n static numeroPositivoValidator(control): { [s: string]: boolean } {\r\n if (!control.value || control.value === \"\" || (!isNaN(Number(control.value)) && Number(control.value) >= 0)) {\r\n return null;\r\n } else {\r\n return { invalidNumeroPositivo: true };\r\n }\r\n }\r\n\r\n /* Valida código postal (numero de 5 dígitos) */\r\n static codigoPostalValidator(control): { [s: string]: boolean } {\r\n if (!control.value || (control.value.match(/^([0-9])+$/) && control.value.length == 5)) {\r\n return null;\r\n } else {\r\n return { invalidCodigoPostal: true };\r\n }\r\n }\r\n\r\n /* Valida telefono (numero de 9 dígitos) */\r\n static telefonoValidator(control): { [s: string]: boolean } {\r\n if (!control.value || control.value.match(/^[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]$/)) {\r\n return null;\r\n } else {\r\n return { invalidTelefono: true };\r\n }\r\n }\r\n\r\n /* Valida telefono (numero de 9 dígitos) */\r\n static telefonoCSVValidator(control): { [s: string]: boolean } {\r\n if (!control.value || control.value.match(/^[0-9]{9}(( *, *)[0-9]{9})*$/g)) {\r\n return null;\r\n } else {\r\n return { invalidTelefonoCSV: true };\r\n }\r\n }\r\n\r\n static buildLongitudValidator(lon: number) {\r\n let errorKey = \"invalidLongitud\";\r\n let errorKeyIndex = errorKey + \" _\" + lon.toString();\r\n CustomValidators.config[errorKeyIndex] = CustomValidators.buildErrorMessage(errorKey, { lon: lon });\r\n return (control) => {\r\n if (!control.value || control.value.length <= lon) {\r\n return null;\r\n } else {\r\n let ret = {};\r\n ret[errorKeyIndex] = true;\r\n return ret;\r\n }\r\n };\r\n }\r\n\r\n static buildCantidadMinValidator(min: number) {\r\n let errorKey = \"invalidCantidadMin\";\r\n let errorKeyIndex = errorKey + \" _\" + min.toString();\r\n CustomValidators.config[errorKeyIndex] = CustomValidators.buildErrorMessage(errorKey, { min: min });\r\n return (control) => {\r\n if (control.value === \"\" || control.value == null) return null;\r\n let num = Number(control.value);\r\n if (isNaN(num) || num >= min) {\r\n // si no es numérico o el valor >= min, pasa la validación\r\n return null;\r\n } else {\r\n let ret = {};\r\n ret[errorKeyIndex] = true;\r\n return ret;\r\n }\r\n };\r\n }\r\n\r\n static buildCantidadMaxValidator(max: number) {\r\n let errorKey = \"invalidCantidadMax\";\r\n let errorKeyIndex = errorKey + \"_\" + max.toString();\r\n CustomValidators.config[errorKeyIndex] = CustomValidators.buildErrorMessage(errorKey, { max: max });\r\n return (control) => {\r\n if (control.value === \"\" || control.value == null) return null;\r\n let num = Number(control.value);\r\n if (isNaN(num) || num <= max) {\r\n // si no es numérico o el valor ≤ max, pasa la validación\r\n return null;\r\n } else {\r\n let ret = {};\r\n ret[errorKeyIndex] = true;\r\n return ret;\r\n }\r\n };\r\n }\r\n\r\n static buildCantidadMinMaxValidator(min: number, max: number) {\r\n let errorKey = \"invalidCantidadMinMax\";\r\n let errorKeyIndex = errorKey + \"_\" + min.toString() + \"_\" + max.toString();\r\n CustomValidators.config[errorKeyIndex] = CustomValidators.buildErrorMessage(errorKey, {\r\n min: min,\r\n max: max\r\n });\r\n return (control) => {\r\n if (control.value === \"\" || control.value == null) return null;\r\n let num = Number(control.value);\r\n if (!isNaN(num) && num >= min && num <= max) {\r\n return null;\r\n } else {\r\n let ret = {};\r\n ret[errorKeyIndex] = true;\r\n return ret;\r\n }\r\n };\r\n }\r\n\r\n static porcentajeValidator(control): { [s: string]: boolean } {\r\n // expected a numeric value between 0 and 100\r\n if (!control.value || control.value === \"\") {\r\n return null;\r\n } else {\r\n let n = Number(control.value);\r\n if (!isNaN(n) && n >= 0 && n <= 100) {\r\n return null;\r\n } else {\r\n return { invalidPorcentaje: true };\r\n }\r\n }\r\n }\r\n\r\n static urlValidator(control): { [s: string]: boolean } {\r\n let pattern = new RegExp(\r\n \"^(https?:\\\\/\\\\/)?\" + // protocol\r\n \"((([a-z\\\\d]([a-z\\\\d-]*[a-z\\\\d])*)\\\\.?)+[a-z]{2,}|\" + // domain name\r\n \"((\\\\d{1,3}\\\\.){3}\\\\d{1,3}))\" + // OR ip (v4) address\r\n \"(\\\\:\\\\d+)?(\\\\/[-a-z\\\\d%_.~+]*)*\" + // port and path\r\n \"(\\\\?[;&a-z\\\\d%_.~+=-]*)?\" + // query string\r\n \"(\\\\#[-a-z\\\\d_]*)?$\",\r\n \"i\"\r\n ); // fragment locator\r\n if (!control.value || pattern.test(control.value)) {\r\n return null;\r\n } else {\r\n return { invalidUrl: true };\r\n }\r\n }\r\n\r\n static pathValidator(control): { [s: string]: boolean } {\r\n let pattern = new RegExp(\r\n \"^((\\\\/)?[-a-z\\\\d%_.~+]*)*\" + // port and path\r\n \"(\\\\?[;&a-z\\\\d%_.~+=-]*)?\" + // query string\r\n \"(\\\\#[-a-z\\\\d_]*)?$\",\r\n \"i\"\r\n ); // fragment locator\r\n if (!control.value || pattern.test(control.value)) {\r\n return null;\r\n } else {\r\n return { invalidPath: true };\r\n }\r\n }\r\n\r\n /**\r\n * Retorna un string con todos los errores que contiene el formulario, separados por saltos de línea.\r\n */\r\n static validateForm(form: FormGroup, prefix: string[] = []): ErrorValidateForm[] {\r\n let mensajes: ErrorValidateForm[] = [];\r\n // errores en términos de grupo\r\n for (let errorKey in form.errors) {\r\n let pr = prefix ? prefix : [\"\"];\r\n mensajes.push({ prefixes: pr, errorMessage: CustomValidators.config[errorKey] });\r\n }\r\n\r\n for (let controlKey in form.controls) {\r\n let control = form.controls[controlKey];\r\n if (!control.valid) {\r\n // no es válido, hay mensajes que recuperar\r\n let controlLabel: string[] = prefix.concat([controlKey]); // nombre apilado\r\n\r\n // detectamos si es un campo o un formulario anidado\r\n if (control instanceof FormGroup) {\r\n // es un formulario anidado, seguimos bajando recursivamente\r\n mensajes = mensajes.concat(CustomValidators.validateForm(control, controlLabel));\r\n } else if (control instanceof UntypedFormControl) {\r\n // es un campo final, añadimos sus mensajes de error\r\n for (let errorKey in control.errors) {\r\n mensajes.push({ prefixes: controlLabel, errorMessage: CustomValidators.config[errorKey] });\r\n }\r\n } else if (control instanceof UntypedFormArray) {\r\n // es una lista de controles anidada, la recorremos\r\n control.controls &&\r\n control.controls.forEach((arrControl, index) => {\r\n let arrControlLabel: string[] = controlLabel.concat([index.toString()]);\r\n if (arrControl instanceof FormGroup) {\r\n // es una lista de FormGroups, bajamos a ellos recursivamente\r\n mensajes = mensajes.concat(CustomValidators.validateForm(arrControl, arrControlLabel));\r\n } else if (arrControl instanceof UntypedFormControl) {\r\n // es una lista de FormControls, los tratamos desde aquí\r\n for (let errorKey in control.errors) {\r\n mensajes.push({ prefixes: arrControlLabel, errorMessage: CustomValidators.config[errorKey] });\r\n }\r\n } else {\r\n // ??? ¿Un array de arrays? No está previsto.\r\n console.log(\"[CustomValidators] Unexpected FormArray with nested FormArrays\");\r\n }\r\n });\r\n }\r\n }\r\n }\r\n return mensajes;\r\n }\r\n\r\n /**\r\n * Recibe un objeto con las propiedades {fieldTipo, fieldNumero} y devuelve un validador de formulario para documentos de identificación.\r\n * El error que puede generarse es del tipo 'invalidNumeroDocumentoTipoDocumento'.\r\n */\r\n static buildNumeroDocumentoValidator({ fieldTipo = \"documentoTipo\", fieldNumero = \"documentoNumero\" } = {}): ValidatorFn {\r\n let result = function (g: FormGroup) {\r\n if (!g) {\r\n return null;\r\n }\r\n let documentoTipo = g.get(fieldTipo) && g.get(fieldTipo).value;\r\n let documentoNumero = g && g.get(fieldNumero) && g.get(fieldNumero).value;\r\n let invalid = false;\r\n if (documentoTipo && documentoNumero) {\r\n if (documentoTipo == \"DNI\") {\r\n invalid = !CustomValidators.isValidDNI(documentoNumero);\r\n } else if (documentoTipo == \"CIF\") {\r\n invalid = !CustomValidators.isValidCIF(documentoNumero);\r\n } else if (documentoTipo == \"NIF\") {\r\n //invalid = !documentoNumero.match(/^[0-9]{8}[a-z|A-Z]$/);\r\n invalid = !CustomValidators.isValidNIF(documentoNumero);\r\n } else if (documentoTipo == \"NIE\") {\r\n invalid = !CustomValidators.isValidNIE(documentoNumero);\r\n }\r\n }\r\n\r\n if (invalid) {\r\n return { invalidNumeroDocumentoTipoDocumento: true };\r\n } else {\r\n return null;\r\n }\r\n };\r\n return result;\r\n }\r\n\r\n static nifValidator(control): { [s: string]: boolean } {\r\n if (!control.value || CustomValidators.isValidNIF(control.value)) {\r\n return null;\r\n } else {\r\n return { invalidNIF: true };\r\n }\r\n }\r\n\r\n static nieValidator(control): { [s: string]: boolean } {\r\n if (!control.value || CustomValidators.isValidNIE(control.value)) {\r\n return null;\r\n } else {\r\n return { invalidNIE: true };\r\n }\r\n }\r\n\r\n static nifNieValidator(control): { [s: string]: boolean } {\r\n if (!control.value || CustomValidators.isValidNIF(control.value) || CustomValidators.isValidNIE(control.value)) {\r\n return null;\r\n } else {\r\n return { invalidNIFNIE: true };\r\n }\r\n }\r\n\r\n static cifValidator(control): { [s: string]: boolean } {\r\n let pattern = new RegExp(/^[a-z|A-Z][0-9]{7}[a-z|A-Z|0-9]/); // TODO\r\n if (!control.value || pattern.test(control.value)) {\r\n return null;\r\n } else {\r\n return { invalidCIF: true };\r\n }\r\n }\r\n\r\n static anyoValidator(control): { [s: string]: boolean } {\r\n let pattern = new RegExp(/^[0-9]{4}$/); // TODO\r\n if (!control.value || pattern.test(control.value)) {\r\n return null;\r\n } else {\r\n return { invalidAnyo: true };\r\n }\r\n }\r\n\r\n static isValidDNI(value: string): boolean {\r\n return true; // ¿deberíamos validar algo? Con letra ya tenemos el NIF\r\n }\r\n\r\n // Referencia principal: https://gist.github.com/carlos-mg89/4aaafa310c9e4b91f5fb890540f38cae\r\n static isValidCIF(value: string): boolean {\r\n const CIF_REGEX = /^([ABCDEFGHJKLMNPQRSUVW])(\\d{7})([0-9A-J])$/;\r\n if (!value || !value.match(CIF_REGEX)) return false;\r\n\r\n value = value.toUpperCase();\r\n var match = value.match(CIF_REGEX);\r\n const letter = match[1];\r\n const number = match[2];\r\n const control = match[3];\r\n\r\n var even_sum = 0;\r\n var odd_sum = 0;\r\n var n: number;\r\n\r\n for (var i = 0; i < number.length; i++) {\r\n n = parseInt(number[i], 10);\r\n // Odd positions (Even index equals to odd position. i=0 equals first position)\r\n if (i % 2 === 0) {\r\n // Odd positions are multiplied first\r\n n *= 2;\r\n // If the multiplication is bigger than 10 we need to adjust\r\n odd_sum += n < 10 ? n : n - 9;\r\n // Even positions, just sum them\r\n } else {\r\n even_sum += n;\r\n }\r\n }\r\n\r\n const control_digit = (10 - Number((even_sum + odd_sum).toString().substr(-1))).toString().substr(-1);\r\n const control_letter = \"JABCDEFGHI\".substr(Number(control_digit), 1);\r\n\r\n // Control must be a digit\r\n if (letter.match(/[ABEH]/)) {\r\n return control === control_digit;\r\n }\r\n // Control must be a letter ( referencia: https://es.wikipedia.org/wiki/C%C3%B3digo_de_identificaci%C3%B3n_fiscal )\r\n else if (letter.match(/[PQRSWN]/)) {\r\n return control === control_letter;\r\n }\r\n // Can be either\r\n else {\r\n return control === control_digit || control === control_letter;\r\n }\r\n }\r\n\r\n // https://github.com/jquery-validation/jquery-validation/blob/master/src/additional/nifES.js\r\n static isValidNIF(value: string): boolean {\r\n value = value.toUpperCase();\r\n // Basic format test\r\n if (!value.match(\"((^[A-Z]{1}[0-9]{7}[A-Z0-9]{1}$|^[T]{1}[A-Z0-9]{8}$)|^[0-9]{8}[A-Z]{1}$)\")) {\r\n return false;\r\n }\r\n // Test NIF\r\n if (/^[0-9]{8}[A-Z]{1}$/.test(value)) {\r\n return \"TRWAGMYFPDXBNJZSQVHLCKE\".charAt(Number(value.substring(8, 0)) % 23) === value.charAt(8);\r\n }\r\n // Test specials NIF (starts with K, L or M)\r\n if (/^[KLM]{1}/.test(value)) {\r\n return value[8] !== \"TRWAGMYFPDXBNJZSQVHLCKE\".charAt(Number(value.substring(8, 1)) % 23);\r\n }\r\n return false;\r\n }\r\n\r\n static isValidNIE(value: string): boolean {\r\n // Un NIE sigue una validación muy similar a la de un DNI, con la diferencia\r\n // de que en lugar de ser ocho números + letra debe ser letra + siete números + letra,\r\n // siendo la primera letra X, Y o Z sustituible por 0, 1 o 2 respectivamente.\r\n let nieRegEx = new RegExp(/^[XYZ]{1}[0-9]{7}[TRWAGMYFPDXBNJZSQVHLCKET]{1}$/gi);\r\n\r\n // Si no tiene el formato básico, no es válido\r\n if (!nieRegEx.test(value)) {\r\n return false;\r\n }\r\n\r\n // Sustituimos la primera letra por el número equivalente y aprovechamos la validación de NIF\r\n value = value.toString().toUpperCase().replace(/^[X]/, \"0\").replace(/^[Y]/, \"1\").replace(/^[Z]/, \"2\");\r\n\r\n return CustomValidators.isValidNIF(value);\r\n }\r\n\r\n static rangoFechasValidator({ fieldFechaInicio = \"fechaInicio\", fieldFechaFin = \"fechaFin\" } = {}): ValidatorFn {\r\n let result = function (g: FormGroup) {\r\n if (!g) {\r\n return null;\r\n }\r\n let fechaInicio = g.get(fieldFechaInicio) && g.get(fieldFechaInicio).value;\r\n let fechaFin = g && g.get(fieldFechaFin) && g.get(fieldFechaFin).value;\r\n if (fechaInicio && fechaFin) {\r\n let inicio = GeneralUtils.stringShortToDate(fechaInicio);\r\n let fin = GeneralUtils.stringShortToDate(fechaFin);\r\n if (inicio > fin) {\r\n return { invalidRangoFechaFinPosteriorInicio: true };\r\n }\r\n }\r\n return null;\r\n };\r\n return result;\r\n }\r\n\r\n static rangoHorasValidator({ fieldHoraInicio = \"horaInicio\", fieldHoraFin = \"horaFin\" } = {}): ValidatorFn {\r\n let result = function (g: FormGroup) {\r\n if (!g) {\r\n return null;\r\n }\r\n let inicio = g.get(fieldHoraInicio) && g.get(fieldHoraInicio).value && GeneralUtils.stringToTime(g.get(fieldHoraInicio).value);\r\n let fin = g && g.get(fieldHoraFin) && g.get(fieldHoraFin).value && GeneralUtils.stringToTime(g.get(fieldHoraFin).value);\r\n if (inicio && fin && inicio >= fin) {\r\n return { invalidRangoHoraFinPosteriorInicio: true };\r\n }\r\n return null;\r\n };\r\n return result;\r\n }\r\n\r\n static dateTimeNotAfterCurrentDateValidator({ fieldfecha = \"fecha\", fieldHora = \"hora\" } = {}): ValidatorFn {\r\n let result = function (g: FormGroup) {\r\n if (!g) {\r\n return null;\r\n }\r\n let campoFecha = g.get(fieldfecha);\r\n let campoHora = g.get(fieldHora);\r\n if (campoFecha && campoFecha.value && campoFecha.value.match(/^(0[1-9]|1\\d|2\\d|3[01])\\/(0[1-9]|1[0-2])\\/(19|20)\\d{2}$/)) {\r\n let date = GeneralUtils.getStringAsDate(campoFecha.value);\r\n if (campoHora && campoHora.value && campoHora.value.match(/^[0-9][0-9]:[0-9][0-9]$/)) {\r\n date.setHours(campoHora.value.split(\":\")[0]);\r\n date.setMinutes(campoHora.value.split(\":\")[1]);\r\n }\r\n if (date < new Date()) {\r\n return { invalidDateTimeNotAfterCurrentDate: true };\r\n }\r\n }\r\n return null;\r\n };\r\n return result;\r\n }\r\n\r\n static buildMinLongitudValidator(lon: number) {\r\n let errorKey = \"invalidMinLongitud\";\r\n let errorKeyIndex = errorKey + \"_\" + lon.toString();\r\n CustomValidators.config[errorKeyIndex] = CustomValidators.buildErrorMessage(errorKey, { lon: lon });\r\n let result = (control) => {\r\n if (!control.value || control.value.length >= lon) {\r\n return null;\r\n } else {\r\n let ret = {};\r\n ret[errorKeyIndex] = true;\r\n return ret;\r\n }\r\n };\r\n return result;\r\n }\r\n}\r\n","import { Injectable } from \"@angular/core\";\r\nimport { Domain } from \"../data/domain\";\r\n\r\nimport moment from \"moment\";\r\n\r\n@Injectable({ providedIn: \"root\" })\r\nexport class DateUtils {\r\n public static FORMAT_SHORT_DATE = \"DD/MM/YYYY\";\r\n public static FORMAT_LONG_DATE = \"DD/MM/YYYY HH:mm\";\r\n public static FORMAT_SHORT_TIME = \"HH:mm\";\r\n public static FORMAT_SHORT_SECONDS_TIME = \"HH:mm:ss\";\r\n\r\n constructor() {\r\n console.log(\"Date constructor\");\r\n }\r\n\r\n public getTodayAsString(format: string = DateUtils.FORMAT_SHORT_DATE): string {\r\n return moment(new Date()).format(format);\r\n }\r\n\r\n public getDateAsString(value: Date, format: string = DateUtils.FORMAT_SHORT_DATE): string {\r\n return moment(value).format(format);\r\n }\r\n\r\n public getStringAsDate(value: string, format: string = DateUtils.FORMAT_SHORT_DATE): Date {\r\n return moment(value, format).toDate();\r\n }\r\n\r\n public getDateTimeAsString(value: Date, format: string = DateUtils.FORMAT_LONG_DATE): string {\r\n return moment(value).format(format);\r\n }\r\n\r\n public getTimeAsString(fecha: Date, format: string = DateUtils.FORMAT_SHORT_TIME): string {\r\n return moment(fecha).format(format);\r\n }\r\n\r\n public stringToDate(fString: string): Date {\r\n return moment(fString).toDate();\r\n }\r\n\r\n public stringShortToDate(fString: string): Date {\r\n return moment(fString, \"DD/MM/YYYY\").toDate();\r\n }\r\n\r\n public stringToTime(tString: string): Date {\r\n return moment(tString, \"HH:mm\").toDate();\r\n }\r\n\r\n public getTimeFromDateString(fecha: string): string {\r\n return moment(fecha).format(DateUtils.FORMAT_SHORT_TIME);\r\n }\r\n\r\n public getWithDaysOffset(offset: number = 0): string {\r\n return moment().add(offset, \"days\").format(DateUtils.FORMAT_SHORT_DATE);\r\n }\r\n\r\n public getFirstDayOfCurrentMonth(): string {\r\n return moment().startOf(\"month\").format(DateUtils.FORMAT_SHORT_DATE);\r\n }\r\n\r\n public getLastDayOfCurrentMonth(): string {\r\n return moment().endOf(\"month\").format(DateUtils.FORMAT_SHORT_DATE);\r\n }\r\n\r\n public fechaInicioDespuesIgualFechaFin(fechaInicio: string, fechaFin: string): boolean {\r\n if (fechaInicio && fechaFin) {\r\n return this.stringShortToDate(fechaInicio) > this.stringShortToDate(fechaFin);\r\n }\r\n return false;\r\n }\r\n\r\n public horaInicioDespuesHoraFin(horaInicio: string, horaFin: string): boolean {\r\n if (horaInicio && horaFin) {\r\n return this.stringToTime(horaInicio) > this.stringToTime(horaFin);\r\n }\r\n return false;\r\n }\r\n\r\n public fechaEnRango(fecha: string, fechaInicio: string, fechaFin: string): boolean {\r\n if (fecha) {\r\n let fechaDate = this.stringShortToDate(fecha);\r\n let output = !(\r\n (fechaInicio && fechaDate < this.stringShortToDate(fechaInicio)) ||\r\n (fechaFin && fechaDate > this.stringShortToDate(fechaFin))\r\n );\r\n return output;\r\n }\r\n return false;\r\n }\r\n\r\n public addOpcionVacia(lista: any[], texto?: string) {\r\n let nLista = lista.slice();\r\n nLista.unshift(new Domain(null, texto ? texto : \"\"));\r\n return nLista;\r\n }\r\n\r\n public getOptionText(list: Domain[], id: number): string {\r\n for (let d of list) {\r\n if (+d.value == id) {\r\n return d.label;\r\n }\r\n }\r\n return \"-\";\r\n }\r\n}\r\n","import { Injectable, Injector, Signal, inject } from \"@angular/core\";\r\nimport { toSignal } from \"@angular/core/rxjs-interop\";\r\nimport { of } from \"rxjs\";\r\nimport { TranslateService } from \"./translate.service\";\r\nimport { mergeMap } from \"rxjs/operators\";\r\n\r\n@Injectable({ providedIn: \"root\" })\r\nexport class DomainService {\r\n protected translateService = inject(TranslateService);\r\n\r\n\r\n getTranslatedDomain(domain: Map<string, []>, injector: Injector): Signal<any> {\r\n return toSignal(\r\n this.translateService.langChanged$.pipe(\r\n mergeMap((lang) => {\r\n return domain && domain[lang] ? of(domain[lang]) : of([]);\r\n })\r\n ),\r\n { injector: injector }\r\n );\r\n }\r\n}","import { HttpResponse } from \"@angular/common/http\";\r\n\r\n// Devuelve el filename especificado en el content-disposition de una response\r\nexport function getFileNameFromResponse(response: HttpResponse<Blob>) {\r\n let filename = \"\";\r\n const contentDisposition = response.headers.get(\"Content-Disposition\");\r\n if (contentDisposition) {\r\n const parts: string[] = contentDisposition.split(\";\");\r\n\r\n parts\r\n .filter((value) => value.trim().toLowerCase().startsWith(\"filename\"))\r\n .forEach((value) => {\r\n const subparts = value.split(\"=\");\r\n filename = replaceAll(subparts[1].trim(), '\"', \"\");\r\n });\r\n }\r\n\r\n return filename;\r\n}\r\n\r\n// Remplaza todas las ocurrencias de una cadena por otra\r\nexport function replaceAll(target: string, find: string, replace: string): string {\r\n return target.replace(new RegExp(find, \"g\"), replace);\r\n}","import { Injectable, inject } from \"@angular/core\";\r\nimport { HttpClient } from \"@angular/common/http\";\r\nimport { Observable } from \"rxjs\";\r\nimport { map, takeUntil, tap } from \"rxjs/operators\";\r\nimport { saveAs } from \"file-saver\";\r\n\r\nimport { GeneralUtils } from \"./general-utils.service\";\r\nimport { getFileNameFromResponse } from \"../utils/general-utils\";\r\n\r\n@Injectable({\r\n providedIn: \"root\"\r\n})\r\nexport class DownloadService {\r\n private http = inject(HttpClient);\r\n private generalUtils = inject(GeneralUtils);\r\n\r\n\r\n // Devuelve un objeto que contiene el nombre del fichero y su contenido como Blob\r\n // Determinamos el nombre del fichero a partir del header \"Content-Disposition\" de la response\r\n download(fileUrl: string, fileName?: string): Observable<{ blob: Blob; filename: string }> {\r\n console.log(\"download fichero '\" + fileUrl + \"'\");\r\n\r\n this.generalUtils.startLoading();\r\n\r\n return this.http.get(fileUrl, { observe: \"response\", responseType: \"blob\" }).pipe(\r\n map((res) => {\r\n return {\r\n blob: new Blob([res.body], { type: res.headers.get(\"Content-Type\") }),\r\n filename: fileName ? fileName : getFileNameFromResponse(res) //obtenemos el nombre de la response\r\n };\r\n }),\r\n tap(\r\n () => this.generalUtils.stopLoading(),\r\n () => this.generalUtils.stopLoading()\r\n )\r\n );\r\n }\r\n\r\n // Descarga el fichero de la URL y lo guarda en el equipo local.\r\n downloadAndSave(destroy$: Observable<boolean>, fileUrl: string, fileName?: string): void {\r\n this.download(fileUrl, fileName)\r\n .pipe(takeUntil(destroy$))\r\n .subscribe(\r\n (file) => {\r\n this.generalUtils.startLoading();\r\n saveAs(file.blob, file.filename);\r\n this.generalUtils.stopLoading();\r\n },\r\n () => this.generalUtils.stopLoading()\r\n );\r\n }\r\n}\r\n","import { Injectable } from \"@angular/core\";\r\n\r\n/**\r\n * FocusService almacena el campo/elemento que actualmente tiene el foco del usuario.\r\n */\r\n@Injectable({ providedIn: \"root\" })\r\nexport class FocusService {\r\n // El campo/elemento con el foco\r\n private focused: string = \"none\";\r\n\r\n focus(id: string): void {\r\n //console.log(`focus on ${id}`);\r\n this.focused = id;\r\n }\r\n\r\n clear(): void {\r\n //console.log('clear focus');\r\n this.focused = undefined;\r\n }\r\n\r\n getFocusedElement(): string {\r\n //console.log(`returning focus on ${this.focused}`);\r\n return this.focused;\r\n }\r\n}\r\n","import { Injector } from \"@angular/core\";\r\n\r\n/**\r\n * Este servicio almacena de forma estática el objeto Injector de angular para que pueda utilizarse desde cualquier\r\n * punto de la app\r\n */\r\nexport class LocatorService {\r\n static injector: Injector = null;\r\n}\r\n","import { Injectable } from \"@angular/core\";\r\n\r\n@Injectable({ providedIn: \"root\" })\r\nexport class SessionSharedService {\r\n private data: Map<string, any>;\r\n\r\n //TO-DO. Guardarlo en un localstorage por un tiempo limitado por si hacen F5\r\n constructor() {\r\n this.data = new Map<string, any>();\r\n }\r\n\r\n get(key: string): any {\r\n // console.log('shared get', key);\r\n return this.data.get(key);\r\n }\r\n\r\n set(key: string, value: any): void {\r\n // console.log('shared set', key, value);\r\n this.data.set(key, value);\r\n }\r\n}\r\n","import { Injectable } from \"@angular/core\";\r\nimport { Subject } from \"rxjs\";\r\n\r\n@Injectable({ providedIn: \"root\" })\r\nexport class TableViewService {\r\n private observableExportSource = new Subject<Boolean>();\r\n public observableExport;\r\n\r\n constructor() {\r\n this.observableExport = this.observableExportSource.asObservable();\r\n }\r\n\r\n sendExportMessage() {\r\n this.observableExportSource.next(true);\r\n }\r\n}\r\n","import { Injectable } from \"@angular/core\";\r\nimport { Observable, ReplaySubject } from \"rxjs\";\r\n\r\n@Injectable({ providedIn: \"root\" })\r\nexport class ToolbarService {\r\n //private observableToolbarSource = new BehaviorSubject<any>(null);\r\n private observableToolbarSource = new ReplaySubject<any>(10);\r\n public observableToolbar: Observable<any>;\r\n\r\n constructor() {\r\n console.log(\"ToolbarService creado\");\r\n //el toolbar al suscribirse recibirá eiempre los últimos n mensajes (toolbar) enviados. Es para protegernos y garantizar que cuando un toolbar\r\n //se susbscribe después de que el componente padre envíe su toolbar, entonces si se cuelan delante más toolbars, al menos lo reciba\r\n //OJO!. Juntar share() con ReplaySubject o publishReplay hace que no se comporte como se esperaba\r\n this.observableToolbar = this.observableToolbarSource.asObservable(); //.share();//.publishReplay(3).refCount();\r\n }\r\n\r\n updateToolbar(componentId: string, toolbar: any) {\r\n toolbar.componentId = componentId;\r\n this.observableToolbarSource.next(toolbar);\r\n }\r\n}\r\n","import { Injectable, inject } from \"@angular/core\";\r\n\r\nimport { HttpUtilsService } from \"./http-utils.service\";\r\n\r\n@Injectable({ providedIn: \"root\" })\r\nexport class UploadService {\r\n private apiUrl = inject<string>(\"API_URL\" as any);\r\n\r\n private UPLOAD_URL: string;\r\n private DOWNLOAD_URL: string;\r\n\r\n constructor() {\r\n this.UPLOAD_URL = `${this.apiUrl}ficheros/upload`;\r\n this.DOWNLOAD_URL = `${this.apiUrl}ficheros/download/`;\r\n console.log(\"UploadService creado con API_URL:\", this.apiUrl);\r\n }\r\n\r\n /**\r\n * servicio para hacer upload de ficheros al servidor\r\n * @param url indica la URL a la que queremos subir el fichero. Si es null se utilizará el endpoint por defecto definido en UPLOAD_URL\r\n * @param files fichero(s) a subir al servidor\r\n * @param params parámetros adicionales en forma de Map para hacer la subida\r\n */\r\n upload(url: string, files: Array<File>, params: { [key: string]: string }) {\r\n return new Promise((resolve, reject) => {\r\n let formData: any = new FormData();\r\n\r\n for (let key in params) {\r\n formData.append(key, params[key]);\r\n }\r\n\r\n let xhr = new XMLHttpRequest();\r\n for (let i = 0; i < files.length; i++) {\r\n formData.append(\"file\", files[i], files[i].name);\r\n }\r\n xhr.onreadystatechange = () => {\r\n if (xhr.readyState === 4) {\r\n if (xhr.status === 200) {\r\n resolve(xhr.response);\r\n } else {\r\n reject(xhr.response); //TODO: No llega a los componentes\r\n }\r\n }\r\n };\r\n xhr.open(\"POST\", url == null ? this.UPLOAD_URL : url, true);\r\n if (HttpUtilsService.LOGIN_AUTHENTICATION && HttpUtilsService.LOGIN_AUTHENTICATION != \"\") {\r\n xhr.setRequestHeader(\"Authorization\", \"Basic \" + HttpUtilsService.LOGIN_AUTHENTICATION);\r\n }\r\n xhr.send(formData);\r\n });\r\n }\r\n\r\n getUrlDownloadFile(id: number) {\r\n return `${this.DOWNLOAD_URL}${id}`;\r\n }\r\n}\r\n","import { Injectable, signal } from \"@angular/core\";\r\n\r\n@Injectable()\r\nexport class ClearItemsService {\r\n private clearItems = signal<boolean>(false);\r\n constructor() {}\r\n\r\n setClearItems(value: boolean) {\r\n this.clearItems.set(value);\r\n }\r\n\r\n getClearItems() {\r\n return this.clearItems;\r\n }\r\n}\r\n","import { Subject } from \"rxjs\";\r\nimport { DestroyRef, Directive, inject } from \"@angular/core\";\r\n\r\nimport { AyudaService } from \"../../sharedlibrary/services\";\r\n\r\n@Directive()\r\nexport abstract class BaseComponent {\r\n destroy$: Subject<boolean> = new Subject<boolean>();\r\n destroyRef = inject(DestroyRef);\r\n ayudaService = inject(AyudaService);\r\n\r\n ngOnDestroy() {\r\n this.destroy$.next(true);\r\n this.destroy$.unsubscribe();\r\n }\r\n\r\n getHelpSectionUrl(section: string) {\r\n return this.ayudaService.baseHelpUrl$() + '#/' + section + \"/\";\r\n }\r\n}\r\n","/**\r\n * Actualiza el elemento de la lista en caso de que exista en dicha lista, o lo inserta en caso de que no exista\r\n * @param element objeto que queremos actualizar o insertar en la lista\r\n * @param list lista de elementos\r\n */\r\nimport moment from \"moment\";\r\n\r\nexport function upsertElement(element, list) {\r\n let find: boolean = false;\r\n if (!list) list = [];\r\n list.forEach((item, index) => {\r\n if (item.id == element.id) {\r\n list[index] = element;\r\n find = true;\r\n }\r\n });\r\n if (!find) {\r\n list.push(element);\r\n }\r\n return list;\r\n}\r\n\r\n/**\r\n * Elimina el elemento de la lista\r\n * @param element elemento a eliminar de la lista\r\n * @param list lista de elementos\r\n */\r\nexport function deleteElement(element, list) {\r\n return list.filter((item) => item.id != element.id);\r\n}\r\n\r\n/** Permite copiar las propiedades de un objeto exceptuando las propiedades indicadas en keys.\r\n * Util para obtener los valores del filtro exceptuando las propiedades pagina y resultados.\r\n * La copia se realiza mediante Object.assign por lo que hay que tenerlo en cuenta por temas de propiedades anidadas\r\n * @param obj objeto que queremos copiar\r\n * @param keys array de propiedades que no queremos copiar\r\n */\r\nexport function reject(obj, keys) {\r\n return Object.keys(obj)\r\n .filter((k) => !keys.includes(k))\r\n .map((k) => Object.assign({}, { [k]: obj[k] }))\r\n .reduce((res, o) => Object.assign(res, o), {});\r\n}\r\n\r\n/** Permite seleccionar las propiedades de un objeto indicadas en keys, excluyendo el resto.\r\n * La copia se realiza mediante Object.assign por lo que hay que tenerlo en cuenta por temas de propiedades anidadas\r\n * @param obj objeto que queremos copiar\r\n * @param keys array de propiedades que queremos copiar\r\n */\r\nexport function choose(obj, keys) {\r\n return Object.keys(obj)\r\n .filter((k) => keys.includes(k))\r\n .map((k) => Object.assign({}, { [k]: obj[k] }))\r\n .reduce((res, o) => Object.assign(res, o), {});\r\n}\r\n\r\n/**\r\n * Equivalente al Object.assign() pero realiza una copia profunda: tanto los atributos como los objetos anidados\r\n * Modifica el objeto target asignando los objetos pasados como parámetros\r\n * ejemplo: assign({a: \"a\", b: {id: \"b\"}, c: \"c\"},\r\n * {a: \"a2\", b: {id: \"b2\"}, d: \"d\"}) =>\r\n * {a: \"a2\", b: {id: \"b2\"}, c: \"c\", d: \"d\"}\r\n *\r\n * @param target objeto destino\r\n * @param sources objetos cuyas propiedades se leen para mergear en el objeto destino\r\n * @see https://stackoverflow.com/questions/27936772/how-to-deep-merge-instead-of-shallow-merge\r\n */\r\nexport function assign(target, ...sources) {\r\n const isObject = (obj) => obj && typeof obj === \"object\" && !Array.isArray(obj);\r\n\r\n if (!sources.length) return target;\r\n const source = sources.shift();\r\n\r\n if (isObject(target) && isObject(source)) {\r\n for (const key in source) {\r\n if (isObject(source[key])) {\r\n if (source[key] instanceof Date) {\r\n target[key] = moment(source[key]).format(\"yy-MM-DDTHH:mm:ss\");\r\n } else {\r\n if (!target[key]) target[key] = {};\r\n assign(target[key], source[key]);\r\n }\r\n } else {\r\n target[key] = source[key];\r\n }\r\n }\r\n }\r\n\r\n return assign(target, ...sources);\r\n}\r\n\r\nexport function objectoToQueryParameters(params: {}): string {\r\n return Object.keys(params)\r\n .filter((key) => !!params[key])\r\n .map((key) => key + \"=\" + params[key])\r\n .join(\"&\");\r\n}\r\n\r\nexport function objectToQueryParametersWithZeroValues(params: {}): string {\r\n return Object.keys(params)\r\n .filter((key) => params[key] !== null && params[key] !== undefined && params[key] !== \"\")\r\n .map((key) => key + \"=\" + params[key])\r\n .join(\"&\");\r\n}\r\n\r\nexport function removeNull<T>(obj: T | any) {\r\n Object.keys(obj).forEach((key) => {\r\n if (obj[key] && typeof obj[key] === \"object\") removeNull(obj[key]);\r\n else if (obj[key] == null) delete obj[key];\r\n });\r\n return obj;\r\n}\r\n/*\r\nVersión immutable:\r\n\r\nexport function assign(...objects) {\r\n const isObject = obj => obj && typeof obj === 'object';\r\n\r\n return objects.reduce((prev, obj) => {\r\n Object.keys(obj).forEach(key => {\r\n const pVal = prev[key];\r\n const oVal = obj[key];\r\n\r\n if (Array.isArray(pVal) && Array.isArray(oVal)) {\r\n prev[key] = pVal.concat(...oVal);\r\n }\r\n else if (isObject(pVal) && isObject(oVal)) {\r\n prev[key] = assign(pVal, oVal);\r\n }\r\n else {\r\n prev[key] = oVal;\r\n }\r\n });\r\n\r\n return prev;\r\n }, {});\r\n}*/\r\n","import { reject } from \"./utils\";\r\n\r\nexport const BASE_RESULTADOS_PAGE: number = 20;\r\n\r\n/**\r\n * Clase base que contiene lo mínimo necesario para almacenar un filtro de búsqueda.\r\n */\r\nexport class BaseFilter {\r\n public static RESULTADOS_PAGE: number = BASE_RESULTADOS_PAGE;\r\n public static PAGE: number = 1;\r\n\r\n /*\r\n * Ejemplo de uso de columnasOrdenacion:\r\n\r\n public static newObject(): CustomFilter {\r\n let filter = new PlantillaFilter(null, CustomFilter.getDefaultOrder(), BaseFilter.RESULTADOS_PAGE, BaseFilter.PAGE);\r\n return filter;\r\n }\r\n\r\n public static getDefaultOrder(): string[] {\r\n return ['-nombre', 'id'];\r\n }\r\n */\r\n public columnasOrdenacion: string[];\r\n\r\n constructor(public resultados: number, public pagina: number) {}\r\n\r\n public reset() {\r\n this.resultados = BaseFilter.RESULTADOS_PAGE;\r\n this.pagina = BaseFilter.PAGE;\r\n }\r\n\r\n /**\r\n * Permite obtener los valores del filtro exceptuando las propiedades pagina y resultados. Útil para inicializar el FormGroup\r\n * con los valores del filtro sin traernos estas propiedades que no interesan que estén en el FormGroup\r\n */\r\n public formValues(): { [x: string]: any } {\r\n let values = reject(this, [\"pagina\", \"resultados\"]);\r\n return values;\r\n }\r\n\r\n public allValues(): { [x: string]: any } {\r\n return reject(this, []);\r\n }\r\n}\r\n\r\nexport const emptyFilter = new BaseFilter(BaseFilter.RESULTADOS_PAGE, 1);\r\n\r\n//Funciones genéricas para poder filtrar elementos en el store con ngrxdata\r\n\r\nlet initPagination: number;\r\nlet endPagination: number;\r\n\r\n/**\r\n * Permite filtrar las entidades especificadas por parámetro pasándolas por la función innerFilterFn\r\n * además de la función paginationFn.\r\n * Parametros:\r\n * pattern: corresponde con el filtro especificado por el usuario pero representado en JSON\r\n * filter: corresponde con el objeto Filter que es una imagen de pattern pero como Objeto. En este objeto\r\n * tendremos la información de qué pagina y cuantos resultados tenemos que mostrar además de los campos\r\n * seleccionados por el usuario\r\n * innerFilterFn: función que dado una entidad y un filter, determina si la entidad casa o no con el filter\r\n * Return:\r\n * Esta función retorna una lista de entidades que casan con el filtro. En el caso de que patter sea null,\r\n * se retornan tal cual todas las entities\r\n */\r\nexport function baseFilterFn<T>(entities: T[], pattern: string, filter: BaseFilter, innerFilterFn: any) {\r\n console.log(\"pattern recibido\", pattern);\r\n if (pattern) {\r\n console.log(\"filtramos entidades con este filter\", filter);\r\n initPagination = (filter.pagina - 1) * filter.resultados;\r\n endPagination = initPagination + filter.resultados;\r\n console.log(`pagination init ${initPagination} end ${endPagination}`);\r\n return entities.filter(innerFilterFn).filter(paginationFn);\r\n } else {\r\n return entities;\r\n }\r\n}\r\n\r\n/** Función de paginación. Se determina si index, que es la posición actual del elemento a analizar de las entidades,\r\n * está entre initPagination (>=) y endPagination (< exclusivo).\r\n * initpagination y endPagination son variables globales en esta clase\r\n */\r\n/**TODO: Hay un problema con la paginación si el usuario salta por ejemplo de la página 1 a la página 3 sin pasar por la 2.\r\n * En ese caso, en el store tendremos 40 elementos cargados pero los 20 últimos al ser de la página 3 no entrarán en esta\r\n * función porque sus índices dentro del array de elementos no están entre la posición 40 y 60 si no entre la posición\r\n * 20 y 40. De momento no se me ha ocurrido una forma de solucionarlo y tampoco sé si tiene sentido que un usuario no avance\r\n * de página en página. Una posible solución es que si un usuario salta a una página remota pero en el store no tenemos\r\n * cargados los elementos de páginas anteriores, entonces el rango de carga a enviar al servidor debería ser más amplio\r\n * para cargar los elementos anteriores y que los índices cuadren. Así, si el usuario salta de la página 1 a la 3, entonces\r\n * al servidor le debemos pedir que nos cargue también la 2 junto a la 3 por lo que al servidor en el fondo debemos darle un rango\r\n * de elementos a cargar y no solo el número de página a cargar.\r\n * */\r\nfunction paginationFn(element, index, array) {\r\n // let init = filter.page * filter.results;\r\n // let end = init + filter.results;\r\n // console.log(`init ${init} end ${end} index ${index} entra ${index >= init && index < end}`);\r\n return index >= initPagination && index < endPagination;\r\n}\r\n","export enum FormType {\r\n Insert,\r\n Update,\r\n Select\r\n}\r\nexport enum PageStatus {\r\n Init,\r\n Searching,\r\n FinishSearch,\r\n Error,\r\n ReadOnly,\r\n Reset,\r\n EmptyResult,\r\n MoreResults = -1\r\n}\r\n\r\nexport const entityDefaultDispatcherOptions: any = {\r\n optimisticAdd: false,\r\n optimisticSaveEntities: false,\r\n optimisticUpsert: false,\r\n optimisticUpdate: false, //para cambiar la forma en que se guarda y actualiza la UI. True -> actualizo el store, la UI sin esperar respuesta del servidor\r\n optimisticDelete: false\r\n};\r\n\r\nexport const TYPE_LIST: string = \"list\";\r\nexport const TYPE_SCROLL: string = \"scroll\";\r\nexport const TYPE_FORM: string = \"form\";\r\nexport const TYPE_BLANK: string = \"blank\";","import { Observable } from \"rxjs\";\r\n\r\nimport { BaseCRUDServiceInterface } from \"./base-interface.service\";\r\nimport { BaseFilter } from \"./base.filter\";\r\nimport { Item } from \"../../sharedlibrary/data/item\";\r\nimport { FormType } from \"../../sharedlibrary/global.constants\";\r\nimport { HttpUtilsService } from \"../../sharedlibrary/services/http-utils.service\";\r\nimport { BitMessageService } from \"../../sharedlibrary/services/message.service\";\r\n\r\n/**\r\n * Clase básica que implementa un CRUD.\r\n * Es recomendable que todos los servicios que implementan un CRUD extiendan esta clase\r\n * o implementen la interface BaseCRUDServiceInterface.\r\n */\r\nexport abstract class BaseCRUDService implements BaseCRUDServiceInterface {\r\n /** URL base del servicio CRUD. */\r\n protected baseUrl: string;\r\n\r\n constructor(protected bitMessageService: BitMessageService, protected http: HttpUtilsService) {}\r\n\r\n /** Inserta o modifica la información del elemento. */\r\n save<T>(object: Item, mode: FormType, params?: { [key: string]: string }): Observable<T> {\r\n if (mode == FormType.Insert) {\r\n let resolveUrl = this.resolveUrl(this.baseUrl, params);\r\n return this.http.getHttpPost<T>(resolveUrl, object);\r\n } else {\r\n let resolveUrl = this.resolveUrl(this.baseUrl + \"/\" + object.id, params);\r\n return this.http.getHttpPut<T>(resolveUrl, object);\r\n }\r\n }\r\n\r\n /** Inserta o modifica la información del elemento. */\r\n saveObject<T>(object: Item, params?: { [key: string]: string }): Observable<T> {\r\n return this.save<T>(object, object && object.id ? FormType.Update : FormType.Insert, params);\r\n }\r\n\r\n /** Elimina el elemento. */\r\n delete(id: Number, params?: { [key: string]: string }) {\r\n let resolveUrl = this.resolveUrl(this.baseUrl + \"/\" + id, params);\r\n return this.http.getHttpDelete(resolveUrl);\r\n }\r\n\r\n /** Elimina todos los elementos pasados por parámetro */\r\n deleteAll(items: number[], params?: { [key: string]: string }): Observable<any> {\r\n let resolveUrl = this.resolveUrl(this.baseUrl + \"/delete\", params);\r\n return this.http.getHttpPost(resolveUrl, items);\r\n }\r\n\r\n /** Recupera la información del elemento. */\r\n get<T>(id: Number, params?: { [key: string]: string }): Observable<T> {\r\n let resolveUrl = this.resolveUrl(this.baseUrl + \"/\" + id, params);\r\n return this.http.getHttpGet<T>(resolveUrl);\r\n }\r\n\r\n /** Recupera todos los elementos. */\r\n getAll<T>(params?: { [key: string]: string }): Observable<T> {\r\n let resolveUrl = this.resolveUrl(this.baseUrl, params);\r\n return this.http.getHttpGet<T>(resolveUrl);\r\n }\r\n\r\n /** Recupera la lista (opcionalmente, filtrada y paginada) de elementos. */\r\n getAllByFilter<T>(filter: BaseFilter, params?: { [key: string]: string }): Observable<T> {\r\n let resolveUrl = this.resolveUrl(this.baseUrl + \"/filter\", params);\r\n return this.http.getHttpPost<T>(resolveUrl, filter);\r\n }\r\n\r\n /** Recupera el número total de la lista (filtrada) de elementos. */\r\n countAllByFilter(filter: BaseFilter, params?: { [key: string]: string }): Observable<number> {\r\n let resolveUrl = this.resolveUrl(this.baseUrl + \"/count\", params);\r\n return this.http.getHttpPost<number>(resolveUrl, filter);\r\n }\r\n\r\n /**\r\n * Construye la URL final en base a la plantilla y la colección de parámetros.\r\n * Si la clave de un parámetro forma parte de la URL, la reemplaza por su valor.\r\n * Si la clave de un parámetro no forma parte de la URL, se añadirá como parte del queryString.\r\n */\r\n resolveUrl(url: string, params: { [key: string]: string }): string {\r\n let queryParams: Array<string> = [];\r\n let newUrl = url;\r\n if (params) {\r\n for (let key in params)\r\n if (newUrl.indexOf(key) >= 0) {\r\n newUrl = newUrl.replace(key, params[key]);\r\n } else {\r\n queryParams.push(`${key}=${params[key]}`);\r\n }\r\n }\r\n if (queryParams.length > 0) {\r\n if (newUrl.indexOf(\"?\") < 0) {\r\n newUrl += \"?\" + queryParams.join(\"&\");\r\n } else {\r\n newUrl += \"&\" + queryParams.join(\"&\");\r\n }\r\n }\r\n return newUrl;\r\n }\r\n}\r\n","import { Action } from \"@ngrx/store\";\r\n\r\nexport type FactoryCreateAction = (type: string, payload?: any) => Action;\r\nexport type FactoryCreateNewObject<T> = (data?: any) => T;\r\nexport type FactoryCreateNewFilter<F> = () => F;\r\nexport type FactoryCreateNewFilterFromFilter<F> = (F) => F;\r\nexport type FactoryCopyObject<T> = (T) => T;\r\nexport type FactoryCreateToolbar<T> = (T) => any;\r\nexport type TranslatedMessage = { code: string; context?: string; params?: {} };\r\nexport type ErrorValidateForm = { prefixes: string[]; errorMessage: TranslatedMessage };\r\nexport type ToolbarButtonType = {\r\n visible?: boolean;\r\n enable?: boolean;\r\n otherAction?: boolean;\r\n action?: string;\r\n label?: string;\r\n estilo?: string;\r\n displayAsButton?: boolean;\r\n};\r\nexport type ToolbarType = Map<string, ToolbarButtonType> | {};\r\n\r\nexport enum GENERIC_TYPE {\r\n GO_FORM = \"[Models] Go Form\",\r\n GO_LIST = \"[Models] Go List\",\r\n LOAD_ITEMS = \"[Models] Load Items\",\r\n SAVE_ITEM = \"[Models] Save item\",\r\n INSERT_ITEM = \"[Models] Insert item\",\r\n UPDATE_ITEM = \"[Models] Update item\",\r\n DELETE_ITEM = \"[Models] Delete Item\",\r\n DELETE_ITEMS = \"[Models] Delete Items\",\r\n SHOW_ITEM_FOR_UPDATE = \"[Models] Show item for update\",\r\n SHOW_ITEM_FOR_INSERT = \"[Models] Show item for insert\",\r\n ITEMS_SELECTED = \"[Models] items selected\",\r\n CLOSE_ITEM = \"[Models] Close item\",\r\n NEW_PAGE_SIZE = \"[Modles] New Page Size\",\r\n PAGE_CHANGE = \"[Modles] Page Change\",\r\n RESET_FILTER = \"[Modles] Reset Filter\"\r\n}\r\n","import { FormType } from \"../../sharedlibrary/global.constants\";\r\nimport { ToolbarType, ToolbarButtonType } from \"./types\";\r\n\r\n/**\r\n * Construye la típica toolbar para listados con los botones: print, export y new. El botón new se construirá si\r\n * el parámetro readOnly es false\r\n * @param readOnly boolean para indicar si estamos en una pantalla readOnly donde no queremos que el botón new se cree\r\n * @param enable boolean para indicar si queremos que los botones print y export estén habilitados\r\n * @returns un objeto de tipo ToolbarType\r\n */\r\nexport function makeToolbarList(readOnly: boolean, enable: boolean): ToolbarType {\r\n let toolbar = {\r\n print: buildButtonToolbar(true, enable),\r\n export: buildButtonToolbar(true, enable)\r\n };\r\n if (!readOnly) {\r\n toolbar[\"new\"] = buildButtonToolbar(true, true, null, null, \"fa fa-database\");\r\n }\r\n return toolbar;\r\n}\r\n\r\nexport function getInitToolbar(): ToolbarType {\r\n return buildDefaultToolbarForm(FormType.Insert, true, false);\r\n}\r\n\r\nexport function getToolbarObjectLoadedDefault(): ToolbarType {\r\n return buildDefaultToolbarForm(FormType.Update, true, false);\r\n}\r\n\r\n/**\r\n * Construye la típica toolbar en función del tipo de formulario:\r\n * FormType.Select: botón de print visible y habilitado\r\n * FormType.Insert: botónes:\r\n * - save visible y habilitado en función de saveEnable.\r\n * - delete y print no visibles ni habilitados\r\n * FormType.Update: botones:\r\n * - save visible si soloLectura es false, habilitado si saveEnable es true,\r\n * - delete y print visibles y habilitados\r\n * @param formType enum FormType que nos indicará si el form es para insert, update o select\r\n * @param saveEnable boolean para indicar si queremos que el botón save esté habilitado\r\n * @param soloLectura boolean para indicar si estamos en un form de solo lectura. En caso de que sea afirmativo la pantalla de update\r\n * no mostrará el botón save\r\n * @returns un objeto de tipo ToolbarType\r\n */\r\nexport function buildDefaultToolbarForm(formType: FormType, saveEnable: boolean = true, soloLectura: boolean = false, customLabelOtherActions?: string): ToolbarType {\r\n const otherActionsLabel = customLabelOtherActions ? { _otherActionsLabel: customLabelOtherActions } : {};\r\n switch (formType) {\r\n case FormType.Select:\r\n return { ...otherActionsLabel, print: buildButtonToolbar(true, true) } as ToolbarType;\r\n case FormType.Insert:\r\n return {\r\n ...otherActionsLabel,\r\n save: buildButtonToolbar(true, saveEnable),\r\n delete: buildButtonToolbar(false, false),\r\n print: buildButtonToolbar(false, false)\r\n } as ToolbarType;\r\n case FormType.Update:\r\n return {\r\n ...otherActionsLabel,\r\n save: buildButtonToolbar(!soloLectura, saveEnable),\r\n delete: buildButtonToolbar(true, true),\r\n print: buildButtonToolbar(true, true)\r\n } as ToolbarType;\r\n default:\r\n return {};\r\n }\r\n}\r\n\r\n/**\r\n * Construye la típica toolbar en función del tipo de formulario:\r\n * FormType.Select: botón de print visible y habilitado\r\n * FormType.Insert: botónes:\r\n * - save visible y habilitado en función de saveEnable.\r\n * - delete y print no visibles ni habilitados\r\n * FormType.Update: botones:\r\n * - save visible, habilitado si saveEnable es true,\r\n * - delete y print visibles y habilitados\r\n * @param formType enum FormType que nos indicará si el form es para insert, update o select\r\n * @param saveEnable boolean para indicar si queremos que el botón save esté habilitado\r\n * @returns un objeto de tipo ToolbarType\r\n */\r\nexport function makeToolbarForm(formType: FormType, saveEnable: boolean): ToolbarType {\r\n return buildDefaultToolbarForm(formType, saveEnable);\r\n}\r\n\r\n/**\r\n * Añade un nuevo button a la toolbar especificada\r\n * @param toolbar objeto de tipo ToolbarType\r\n * @param buttonName string con el nombre del botón dentro de la toolbar\r\n * @param button objeto de tipo ToolbarOptionType\r\n * @returns un objeto de tipo ToolbarType con la nueva opción añadida\r\n */\r\nexport function addButtonToToolbar(toolbar: ToolbarType, buttonName: string, button: ToolbarButtonType): ToolbarType {\r\n let newToolbar: ToolbarType = { ...toolbar };\r\n newToolbar[buttonName] = button;\r\n return newToolbar;\r\n}\r\n\r\n/**\r\n * Construye un objeto de tipo ToolbarButtonType\r\n * @param visible boolean para indicar si queremos que el botón esté visible\r\n * @param enable boolean para indicar si queremos que el botón esté habilitado\r\n * @param otherAction boolean para indicar si queremos que el botón se de tipo otras opciones\r\n * @param action string con el nombre de la action cuando se pulse el botón\r\n * @param label string con la etiqueta usada para buscar en el fichero de traducciones\r\n * @param estilo string con el estilo a aplicar\r\n * @param displayAsButton boolean para indicar si la acción (siendo otherAction) se fuerza para mostrar como botón (true)\r\n * @returns un objeto de tipo ToolbarButtonType\r\n */\r\nexport function buildButtonToolbar(\r\n visible: boolean,\r\n enable: boolean,\r\n otherAction?: boolean,\r\n action?: string,\r\n label?: string,\r\n estilo?: string,\r\n displayAsButton?: boolean\r\n): ToolbarButtonType {\r\n let optionToolbar = { visible, enable } as ToolbarButtonType;\r\n if (otherAction) optionToolbar[\"otherAction\"] = otherAction;\r\n if (action) optionToolbar[\"action\"] = action;\r\n if (label) optionToolbar[\"label\"] = label;\r\n if (estilo) optionToolbar[\"estilo\"] = estilo;\r\n if (displayAsButton) optionToolbar[\"displayAsButton\"] = displayAsButton;\r\n return optionToolbar;\r\n}\r\n\r\nexport function makeToolbarChildList(enableDelete: boolean) {\r\n return {\r\n new: { enable: true, visible: true },\r\n delete: { enable: enableDelete, visible: enableDelete }\r\n };\r\n}\r\n","import { Component, OnInit, ChangeDetectionStrategy, input, inject } from \"@angular/core\";\r\nimport { Router } from \"@angular/router\";\r\n\r\n/**\r\n * Componenente que muestra la miga de pan en función de los datos de entrada. Estos datos corresponden con\r\n * un array de objetos que tendrán tres campos: label, url y params. El label debe ser obligatorio y corresponde con la\r\n * información en pantalla a mostrar. La url y params son opcionales y correposnden con la dirección a la que el usuario podrá ir\r\n * si pulsa en ella.\r\n * Ejemplos: [\r\n * {label: 'Desenvolupament', url: 'developer/exceptions'},\r\n * {label: 'Log'},\r\n * {label: 'Usuaris', url: 'mantenimiento/users', params: {query: 'true'}}\r\n * ]\r\n **/\r\n\r\n@Component({\r\n selector: \"bit-breadcrumb\",\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n template: `\r\n <ul class=\"breadcrumb\">\r\n @for (path of bc(); track path; let i = $index) {\r\n <li [class.active]=\"i == bc().length - 1\">\r\n @if (i < bc().length - 1 && path.url) {\r\n <a class=\"breadcrumb-item\" (click)=\"goAddress(path)\" href=\"#\">{{ \"breadcrumb.\" + path.label | transloco }}</a>\r\n }\r\n @if (i == bc().length - 1 || !path.url) {\r\n <span class=\"breadcrumb-item active\">{{ \"breadcrumb.\" + path.label | transloco }}</span>\r\n }\r\n </li>\r\n }\r\n </ul>\r\n `\r\n //styleUrls: [\"bit-breadcrumb.component.css\"]\r\n ,\r\n standalone: false\r\n})\r\nexport class BitBreadCrumbComponent implements OnInit {\r\n protected router = inject(Router);\r\n\r\n readonly bc = input<any[]>([], { alias: \"breadcrumb\" });\r\n\r\n /** Comprobamos si los datos de entrada no están definidos para inicializarlos en blanco */\r\n ngOnInit(): void {\r\n const bc = this.bc();\r\n if (bc.length == 0) bc.push({ label: \" \" });\r\n }\r\n\r\n /** Vamos a la URL que contenga el path */\r\n goAddress(path: any) {\r\n if (path.params) {\r\n this.router.navigate([path.url, path.params]);\r\n } else {\r\n this.router.navigate([path.url]);\r\n }\r\n return false; //para evitar que navegue al href=\"#\"\r\n }\r\n}\r\n","import { Component, input, inject } from \"@angular/core\";\r\nimport { UntypedFormControl } from \"@angular/forms\";\r\n\r\nimport { TranslateService, CustomValidators, FocusService } from \"../../services\";\r\nimport { Observable } from \"rxjs\";\r\nimport { TranslatedMessage } from \"../../../base/models/types\";\r\n\r\n@Component({\r\n selector: \"control-messages\",\r\n template: `\r\n @if (isError) {\r\n <div>\r\n <span class=\"mensaje-error-input\">{{ errorMessage$ | async }}</span>\r\n </div>\r\n }\r\n `\r\n //styleUrls: [\"bit-control-messages.component.css\"]\r\n ,\r\n standalone: false\r\n})\r\nexport class BitControlMessages {\r\n private focusService = inject(FocusService);\r\n protected translateService = inject(TranslateService);\r\n\r\n readonly control = input<UntypedFormControl>();\r\n readonly field = input<string>();\r\n errorMessage$: Observable<string>;\r\n\r\n get isError(): boolean {\r\n if (this.focusService.getFocusedElement() !== this.field()) {\r\n for (let propertyName in this.control().errors) {\r\n // If control has a error\r\n const control = this.control();\r\n if (control.errors.hasOwnProperty(propertyName) && control.touched) {\r\n // Return the appropriate error message from the Validation Service\r\n let translatedError: TranslatedMessage = CustomValidators.getValidatorErrorMessage(propertyName);\r\n this.errorMessage$ = this.translateService.selectTranslate(translatedError.code, translatedError.params, translatedError.context);\r\n return true;\r\n }\r\n }\r\n }\r\n return false;\r\n }\r\n}\r\n","import { TranslatedMessage } from \"../../base/models\";\r\n\r\nexport class BitMessage {\r\n static WIDTH: number = 600;\r\n static INFO: string = \"info\";\r\n static WARN: string = \"warn\";\r\n static ERROR: string = \"error\";\r\n\r\n constructor(\r\n public title: string,\r\n public message: string,\r\n public width: number = BitMessage.WIDTH,\r\n public height: number = 0,\r\n public modal: boolean = false,\r\n public severity: string = \"info\", //info, warn, error\r\n public masInfo?: string,\r\n public json: boolean = false\r\n ) {}\r\n\r\n public static newMessage(title, message, severity?): BitMessage {\r\n return new BitMessage(title, message, BitMessage.WIDTH, 0, false, severity);\r\n }\r\n}\r\n","import { Component, OnDestroy, OnInit, inject } from \"@angular/core\";\r\nimport { takeUntil } from \"rxjs/operators\";\r\n\r\nimport { BaseComponent } from \"../../../base/components/base.component\";\r\nimport { BitMessage } from \"../../data/bitmessage\";\r\nimport { Error } from \"../../data/error\";\r\nimport { BitMessageService } from \"../../services/message.service\";\r\nimport { TranslateService } from \"../../services\";\r\n\r\n@Component({\r\n selector: \"bit-dialog\",\r\n template: `\r\n @if (!isSeverityInfo) {\r\n <p-dialog\r\n class=\"scroll-y scroll-{{ message.height }}\"\r\n header=\"{{ message.title }}\"\r\n [(visible)]=\"display\"\r\n [style]=\"{ width: '50vw' }\"\r\n [breakpoints]=\"{ '1199px': '65vw', '767px': '80vw', '575px': '95vw' }\"\r\n [modal]=\"message.modal\"\r\n showEffect=\"fade\"\r\n position=\"top\"\r\n >\r\n <p class=\"mensaje-dialogo\">{{ message.message }}</p>\r\n @if (message.masInfo) {\r\n <span>\r\n <pre>{{ message.masInfo }}</pre>\r\n </span>\r\n }\r\n <footer>\r\n <div class=\"ui-dialog-buttonpane ui-widget-content ui-helper-clearfix\"> </div>\r\n </footer>\r\n </p-dialog>\r\n }\r\n @if (isSeverityInfo && !message.json) {\r\n <p-dialog\r\n class=\"scroll-y scroll-{{ message.height }}\"\r\n header=\"{{ message.title }}\"\r\n [style]=\"{ width: '50vw' }\"\r\n [breakpoints]=\"{ '1199px': '65vw', '767px': '80vw', '575px': '95vw' }\"\r\n [(visible)]=\"display\"\r\n [modal]=\"message.modal\"\r\n showEffect=\"fade\"\r\n position=\"top\"\r\n >\r\n <p class=\"mensaje-dialogo\" [innerHTML]=\"message.message\"></p>\r\n </p-dialog>\r\n }\r\n @if (message.json) {\r\n <p-dialog\r\n class=\"scroll-y scroll-{{ message.height }}\"\r\n header=\"{{ message.title }}\"\r\n [(visible)]=\"display\"\r\n [style]=\"{ width: '50vw' }\"\r\n [breakpoints]=\"{ '1199px': '65vw', '767px': '80vw', '575px': '95vw' }\"\r\n [baseZIndex]=\"10000\"\r\n [modal]=\"message.modal\"\r\n showEffect=\"fade\"\r\n position=\"top\"\r\n >\r\n <pre [innerHTML]=\"syntaxHighlight(message.message)\"></pre>\r\n </p-dialog>\r\n }\r\n `\r\n //styleUrls: [\"bit-dialog.component.css\"]\r\n ,\r\n standalone: false\r\n})\r\nexport class BitDialogComponent extends BaseComponent implements OnInit, OnDestroy {\r\n protected bitMessageService = inject(BitMessageService);\r\n protected translateService = inject(TranslateService);\r\n\r\n public static MENSAJE_VOID: string = \"No hi ha dades per mostrar\";\r\n display: boolean = false;\r\n message: BitMessage;\r\n height: number = 200;\r\n errorAccessUrl: string;\r\n errorAccess: string;\r\n\r\n constructor() {\r\n super();\r\n const bitMessageService = this.bitMessageService;\r\n\r\n //console.log(\"DialogComponent contructor(\" + bitMessageService + \")\");\r\n //Nos suscribimos a la espera de que envíen mensajes\r\n bitMessageService.observableMessages.pipe(takeUntil(this.destroy$)).subscribe((message) => {\r\n this.showMessage(message);\r\n });\r\n bitMessageService.observableErrors.pipe(takeUntil(this.destroy$)).subscribe((message) => {\r\n this.showError(message);\r\n });\r\n }\r\n\r\n ngOnInit() {\r\n //inicializamos el objeto para que no pete el template\r\n this.message = new BitMessage(\"\", \"\");\r\n this.getMessagesI18N();\r\n }\r\n\r\n getMessagesI18N() {\r\n this.translateService\r\n .selectTranslate(\"messages.erroraccessurl\", {}, \"bitnglibrary\")\r\n .pipe(takeUntil(this.destroy$))\r\n .subscribe((v) => (this.errorAccessUrl = v));\r\n this.translateService\r\n .selectTranslate(\"messages.erroraccess\", {}, \"bitnglibrary\")\r\n .pipe(takeUntil(this.destroy$))\r\n .subscribe((v) => (this.errorAccess = v));\r\n }\r\n\r\n showMessage(message: BitMessage) {\r\n this.message = message;\r\n if (this.message.json) {\r\n try {\r\n let json = eval(\"(\" + this.message.message + \")\"); //{\"w\":1, \"b\":'foo', \"c\":[false,'false',null, 'null', {\"d\":{\"e\":1.3e5,\"f\":'2.3e5'}}]};\r\n this.message.message = JSON.stringify(json, undefined, 2);\r\n } catch (error) {\r\n console.warn(\"No pudo convertirse a JSON la información del log\");\r\n }\r\n }\r\n message.height === 0 ? (this.message.height = this.calculateHeightNumber()) : undefined;\r\n this.display = true;\r\n }\r\n\r\n showError(error: Error) {\r\n let messageError = error.url ? `${this.errorAccessUrl} ${error.url}` : `${this.errorAccess}`;\r\n this.showMessage(new BitMessage(messageError, error.errorText, 1024, 600, false, BitMessage.ERROR, error.trazaError));\r\n }\r\n\r\n get isSeverityInfo() {\r\n return this.message && this.message.severity === \"info\";\r\n }\r\n\r\n /**\r\n * Calcula la altura del diálogo en función de la información a mostrar.\r\n * TODO: Contar las líneas reales del mensaje en vez de la longitud\r\n */\r\n private calculateHeightNumber(): number {\r\n let msj = this.message.message;\r\n if (msj) {\r\n if (msj.length < 100) {\r\n return 100;\r\n } else if (msj.length < 200) {\r\n return 200;\r\n } else if (msj.length < 300) {\r\n return 300;\r\n } else if (msj.length < 400) {\r\n return 400;\r\n } else {\r\n return 500;\r\n }\r\n } else {\r\n this.message.message = BitDialogComponent.MENSAJE_VOID;\r\n return 100;\r\n }\r\n }\r\n\r\n syntaxHighlight(json) {\r\n if (typeof json != \"string\") {\r\n json = JSON.stringify(json, undefined, 2);\r\n }\r\n json = json.replace(/&/g, \"&\").replace(/</g, \"<\").replace(/>/g, \">\");\r\n return json.replace(/(\"(\\\\u[a-zA-Z0-9]{4}|\\\\[^u]|[^\\\\\"])*\"(\\s*:)?|\\b(true|false|null)\\b|-?\\d+(?:\\.\\d*)?(?:[eE][+\\-]?\\d+)?)/g, function (match) {\r\n var cls = \"number\";\r\n if (/^\"/.test(match)) {\r\n if (/:$/.test(match)) {\r\n cls = \"key\";\r\n } else {\r\n cls = \"string\";\r\n }\r\n } else if (/true|false/.test(match)) {\r\n cls = \"boolean\";\r\n } else if (/null/.test(match)) {\r\n cls = \"null\";\r\n }\r\n return '<span class=\"' + cls + '\">' + match + \"</span>\";\r\n });\r\n }\r\n}\r\n","import { Pipe, PipeTransform } from \"@angular/core\";\r\n\r\nconst PADDING = \"000000\";\r\n\r\n@Pipe({\r\n name: \"cantidadMoneda\",\r\n standalone: false\r\n})\r\nexport class CantidadMonedaPipe implements PipeTransform {\r\n private readonly DECIMAL_SEPARATOR: string;\r\n private readonly DECIMAL_SEPARATOR_INPUT: string;\r\n private readonly THOUSANDS_SEPARATOR: string;\r\n\r\n constructor() {\r\n this.DECIMAL_SEPARATOR = \",\";\r\n this.DECIMAL_SEPARATOR_INPUT = \".\";\r\n this.THOUSANDS_SEPARATOR = \".\";\r\n }\r\n\r\n transform(value: number | string, fractionSize: number = 2): string {\r\n if (value === null || value === undefined) {\r\n return \"\";\r\n }\r\n\r\n let svalue = String(value);\r\n\r\n const regexp = new RegExp('^[1-9]+[0-9]*([.]([0-9]+)?)?$');\r\n const test = regexp.test(svalue);\r\n if (!test) {\r\n return svalue;\r\n }\r\n\r\n let [integer, fraction = \"\"] = (value || \"\").toString().split(this.DECIMAL_SEPARATOR_INPUT);\r\n\r\n fraction = fractionSize > 0 ? this.DECIMAL_SEPARATOR + (fraction + PADDING).substring(0, fractionSize) : \"\";\r\n\r\n integer = integer.replace(/\\B(?=(\\d{3})+(?!\\d))/g, this.THOUSANDS_SEPARATOR);\r\n\r\n return integer + fraction;\r\n }\r\n\r\n parse(value: string, previous: string, event: any, fractionSize: number = 2): string {\r\n if (value === null || value === undefined) {\r\n return \"\";\r\n }\r\n\r\n let svalue = String(value);\r\n\r\n const regexp = new RegExp('^[1-9]+[0-9]*([.][0-9]{3})*(,([0-9]+)?)?$');\r\n const test = regexp.test(svalue);\r\n if (!test) {\r\n return svalue;\r\n }\r\n\r\n let [integer, fraction = \"\"] = (value || \"\").split(this.DECIMAL_SEPARATOR);\r\n\r\n integer = integer.replace(/\\./g, \"\");\r\n\r\n fraction =\r\n parseInt(fraction, 10) > 0 && fractionSize > 0\r\n ? this.DECIMAL_SEPARATOR_INPUT + (fraction + PADDING).substring(0, fractionSize)\r\n : \"\";\r\n\r\n return integer + fraction;\r\n }\r\n}\r\n","import { ChangeDetectionStrategy, Component, computed, input, model, output } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'bit-pajigator',\r\n templateUrl: './bit-pajigator.component.html',\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n standalone: false\r\n})\r\n\r\nexport class BitPajigatorComponent {\r\n paginator = input<boolean>(true);\r\n page = model<number>(0);\r\n totalItems = input<number>(0);\r\n rowsPerPageOptions = input<number[]>([20]);\r\n itemsPerPage = model<number>(this.rowsPerPageOptions()[0]);\r\n maxCurrentItems = input<number>(0);\r\n onPageChange = output<number>();\r\n onPageSizeChange = output<number>();\r\n\r\n maxPages = computed(() => {\r\n let maxPages;\r\n if (!this.itemsPerPage() || !this.totalItems()) {\r\n maxPages = 0;\r\n } else {\r\n maxPages = Math.ceil(this.totalItems() / this.itemsPerPage());\r\n }\r\n console.log(\"totalItems:\" + this.totalItems() + \"maxPages:\" + maxPages + \" itemsPerPage:\" + this.itemsPerPage());\r\n return maxPages;\r\n });\r\n showPageInfo = computed(() => this.totalItems() > 0);\r\n showLeftNavigationButton = computed(() => this.totalItems() > 0 && this.page() != 1);\r\n showRightNavigationButton = computed(() => this.totalItems() > 0 && this.page() < this.maxPages());\r\n\r\n changeItemsPerpage(items: number): void {\r\n if (!items) return; // nos protegemos de que prime nos envíe un valor no definido\r\n if (items != this.itemsPerPage()) {\r\n this.itemsPerPage.set(items);\r\n this.onPageSizeChange.emit(items);\r\n }\r\n }\r\n\r\n changePage(direction: number): void {\r\n this.page.update((current) => (current += direction));\r\n this.onPageChange.emit(this.page());\r\n }\r\n}\r\n","<div [class]=\"paginator() ? 'pajigator-outer-container' : 'pajigator-outer-container-single-result'\">\r\n <div class=\"pajigator-container\">\r\n <div class=\"pajigator-results-container\">\r\n <span class=\"pajigator-results-label\">{{\"bitnglibrary.footer.results\" | transloco}}</span>\r\n @if (paginator()) { \r\n @if (maxCurrentItems() >= totalItems()) {\r\n <span>{{totalItems() | cantidadMoneda:0}}</span>\r\n }\r\n @if (maxCurrentItems() < totalItems()) {\r\n <span>{{maxCurrentItems()}} / {{totalItems()}}</span>\r\n }\r\n } @else {\r\n <span>{{totalItems() | cantidadMoneda:0}}</span>\r\n }\r\n </div>\r\n @if (paginator()) { \r\n <div class=\"pajigator-page-size\">\r\n <div class=\"pajigator-page-size-label\">{{ \"bitnglibrary.footer.itemsPerPage\" | transloco }}</div>\r\n <!-- appendTo=\"body\"--->\r\n <p-select appendTo=\"body\"\r\n [options]=\"rowsPerPageOptions()\"\r\n [ngModel]=\"itemsPerPage()\"\r\n (ngModelChange)=\"changeItemsPerpage($event)\" />\r\n </div>\r\n <div class=\"pajigator-range-actions\">\r\n @if (showPageInfo()) {\r\n <div class=\"pajigator-range-label\"> {{ \"bitnglibrary.footer.page\" | transloco }} {{page()}} de {{maxPages()}} </div>\r\n }\r\n <p-button (onClick)=\"changePage(-1)\" [disabled]=\"!showLeftNavigationButton()\" severity=\"primary\" label=\"<\" ariaLabel=\"Pàgina anterior\" />\r\n <p-button (onClick)=\"changePage(1)\" [disabled]=\"!showRightNavigationButton()\" severity=\"primary\" label=\">\" ariaLabel=\"Pàgina següent\" />\r\n </div>\r\n } \r\n </div>\r\n</div>","import { Component, ChangeDetectionStrategy, computed, inject, linkedSignal } from \"@angular/core\";\r\n\r\nimport { AyudaContextual } from \"../../data/ayudacontextual\";\r\nimport { AyudaService } from \"../../services/ayuda.service\";\r\n\r\n@Component({\r\n selector: \"bit-help\",\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n template: `\r\n @if (mostrarAyuda()) {\r\n <div class=\"ventana-ayuda\">\r\n <div class=\"ayuda-header\">\r\n {{ ayuda().header }}\r\n <span class=\"fa fa-close\" (click)=\"hideAyuda()\"></span>\r\n </div>\r\n <div class=\"ayuda-body\">\r\n <p class=\"ayuda-subtitulo\" [innerHTML]=\"ayuda().title\"></p>\r\n <p [innerHTML]=\"ayuda().body\"></p>\r\n </div>\r\n </div>\r\n }\r\n `\r\n //styleUrls: [\"bit-help.component.css\"]\r\n ,\r\n standalone: false\r\n})\r\nexport class BitHelpComponent {\r\n protected ayudaService = inject(AyudaService);\r\n\r\n ayuda = linkedSignal<AyudaContextual, AyudaContextual>({\r\n source: this.ayudaService.mostrar,\r\n computation: (newAyuda, _) => {\r\n console.log(\"newAyuda\", newAyuda);\r\n return newAyuda;\r\n }\r\n });\r\n \r\n mostrarAyuda = computed(() => this.ayuda() != null);\r\n\r\n /** Oculta el modal con los avisos */\r\n hideAyuda() {\r\n this.ayuda.set(null);\r\n }\r\n\r\n}\r\n","import { ChangeDetectionStrategy, Component, computed, input, inject } from '@angular/core';\r\nimport { toSignal } from '@angular/core/rxjs-interop';\r\n\r\nimport { PageStatus, TYPE_BLANK, TYPE_FORM, TYPE_LIST, TYPE_SCROLL } from '../../global.constants';\r\nimport { TranslateService } from '../../services';\r\n\r\n@Component({\r\n selector: 'bit-footer-messages',\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n templateUrl: 'bit-footer-messages.component.html',\r\n standalone: false\r\n})\r\n\r\nexport class BitFooterMessagesComponent {\r\n private translateService = inject(TranslateService);\r\n\r\n status = input<PageStatus>(PageStatus.Init); // Determina en qué estado está la página: PageStatus.Init, PageStatus.SEARCHING, PageStatus.FINISH_SEARCH\r\n maxCurrentItems = input<number>();\r\n totalItems = input<number>();\r\n typeFooter = input<string>(\"list\", { alias: \"type\" });\r\n\r\n isFooterList = computed(() => this.typeFooter() === TYPE_LIST);\r\n isFooterScroll = computed(() => this.typeFooter() === TYPE_SCROLL);\r\n isFooterForm = computed(() => this.typeFooter() === TYPE_FORM);\r\n /** Flag: la página está realizando la búsqueda. */\r\n searchInitiated = computed(\r\n () => this.status() === PageStatus.Init || this.status() == PageStatus.Reset || !this.status()\r\n );\r\n /** Flag: la página está realizando la búsqueda. */\r\n searching = computed(() => this.status() === PageStatus.Searching);\r\n /** Flag: la página ha finalizado la última búsqueda. */\r\n searchFinished = computed(() => this.status() === PageStatus.FinishSearch);\r\n /** Flag: la página está en modo solo lectura */\r\n readOnly = computed(() => this.status() == PageStatus.ReadOnly);\r\n /** Flag: la página ha finalizado con error */\r\n error = computed(() => this.status() == PageStatus.Error);\r\n /** Flag: encontrado resultado. */\r\n foundResult = computed(() => {\r\n return (\r\n this.searchFinished() &&\r\n ((this.isFooterList() && this.totalItems() > 0) ||\r\n this.isFooterForm() ||\r\n (this.isFooterScroll() && this.totalItems() <= this.maxCurrentItems()))\r\n );\r\n });\r\n /** Flag: hay más resultados (scroll). */\r\n moreResults = computed(() => {\r\n return this.searchFinished() && this.isFooterScroll() && this.totalItems() > this.maxCurrentItems();\r\n });\r\n /** Flag: no hay resultados. */\r\n emptyResult = computed(() => this.searchFinished() && this.totalItems() === 0);\r\n\r\n messages = computed(() => {\r\n let messagesMap = new Map<PageStatus, string>();\r\n if (this.isFooterList() || this.isFooterScroll()) {\r\n messagesMap.set(PageStatus.Init, \"bitnglibrary.footer.list.init\");\r\n messagesMap.set(PageStatus.Searching, \"bitnglibrary.footer.list.searching\");\r\n messagesMap.set(PageStatus.EmptyResult, \"bitnglibrary.footer.list.emptyresult\");\r\n messagesMap.set(PageStatus.FinishSearch, \"bitnglibrary.footer.list.finishsearch\");\r\n messagesMap.set(PageStatus.MoreResults, \"bitnglibrary.footer.list.moreresults\");\r\n } else if (this.isFooterForm()) {\r\n messagesMap.set(PageStatus.Init, \"bitnglibrary.footer.form.init\");\r\n messagesMap.set(PageStatus.Searching, \"bitnglibrary.footer.form.searching\");\r\n messagesMap.set(PageStatus.FinishSearch, \"bitnglibrary.footer.form.finishsearch\");\r\n messagesMap.set(PageStatus.ReadOnly, \"bitnglibrary.footer.list.readonly\");\r\n } else if (this.typeFooter() === TYPE_BLANK) {\r\n console.log(\"the footer is BLANK!\");\r\n }\r\n messagesMap.set(PageStatus.Error, \"bitnglibrary.footer.error\");\r\n return messagesMap;\r\n });\r\n\r\n initMessage = toSignal(this.translateService.selectTranslate(this.messages().get(PageStatus.Init)));\r\n searchingMessage = toSignal(this.translateService.selectTranslate(this.messages().get(PageStatus.Searching)));\r\n finishMessage = toSignal(this.translateService.selectTranslate(this.messages().get(PageStatus.FinishSearch)));\r\n moreResultsMessage = toSignal(this.translateService.selectTranslate(this.messages().get(PageStatus.MoreResults)));\r\n emptyMessage = toSignal(this.translateService.selectTranslate(this.messages().get(PageStatus.EmptyResult)));\r\n readOnlyMessage = toSignal(this.translateService.selectTranslate(this.messages().get(PageStatus.ReadOnly)));\r\n errorMessage = toSignal(this.translateService.selectTranslate(this.messages().get(PageStatus.Error)));\r\n\r\n getStyle = computed(() => {\r\n let type = this.error() ? \"error\" : \"info\";\r\n if (this.isFooterList()) {\r\n return `mensaje-list mensaje-${type}`;\r\n } else if (this.isFooterScroll()) {\r\n return `mensaje-scroll mensaje-${type}`;\r\n } else if (this.isFooterForm()) {\r\n return `mensaje-form mensaje-${type}`;\r\n }\r\n });\r\n\r\n message = computed(() => {\r\n if (this.searchInitiated()) return this.initMessage();\r\n if (this.searching()) return this.searchingMessage();\r\n if (this.readOnly()) return this.readOnlyMessage();\r\n if (this.foundResult()) return this.finishMessage();\r\n if (this.moreResults()) return this.moreResultsMessage();\r\n if (this.emptyResult()) return this.emptyMessage();\r\n if (this.error()) return this.errorMessage();\r\n return \"\";\r\n });\r\n}\r\n","<div>\r\n <div [class]=\"getStyle()\">\r\n <i class=\"fa fa-info\"></i>\r\n <span>{{message()}}</span>\r\n </div>\r\n\r\n <bit-help />\r\n</div>","import {\r\n ChangeDetectionStrategy,\r\n Component,\r\n computed,\r\n input,\r\n output,\r\n} from \"@angular/core\";\r\nimport { BaseFilter } from \"../../../base/shared/base.filter\";\r\nimport { PageStatus, TYPE_FORM, TYPE_LIST, TYPE_SCROLL } from \"../../global.constants\";\r\n\r\n/**\r\n * Componente que muestra un paginador en la sección footer.\r\n **/\r\n@Component({\r\n selector: \"bit-footer\",\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n templateUrl: \"bit-footer.component.html\",\r\n standalone: false\r\n})\r\nexport class BitFooterComponent {\r\n totalItems = input<number>(); // Número total de elementos recuperados de la consulta\r\n filter = input<BaseFilter>(); // filtro de búsqieda\r\n status = input<PageStatus>(PageStatus.Init); // Determina en qué estado está la página: PageStatus.Init, PageStatus.SEARCHING, PageStatus.FINISH_SEARCH\r\n paginator = input<boolean>(false);\r\n mostrarAvisos = input<boolean>(true);\r\n fixed = input<boolean>(true); // Indicará si lo queremos fijo abajo en la página. Por defecto sí.\r\n typeFooter = input<string>(\"list\", { alias: \"type\" });\r\n visible = input<boolean>(true);\r\n onPageChange = output<number>(); //para notificar cambios en la página a mostrar\r\n onNewPageSize = output<number>(); //para notificar cambios en los elementos a mostrar por página\r\n baseItemsPerPage: number = BaseFilter.RESULTADOS_PAGE; // guardamos el número de resultados pre-configurados por página para mostrar la lista de x, x+10 y x+20\r\n\r\n page = computed(() => (this.filter() ? this.filter().pagina : 1));\r\n itemsPerPage = computed(() => (this.filter() ? this.filter().resultados : this.baseItemsPerPage));\r\n maxCurrentItems = computed(() => {\r\n let maxCurrentItems: number = this.filter()?.pagina * this.filter()?.resultados;\r\n if (maxCurrentItems > this.totalItems()) {\r\n maxCurrentItems = this.totalItems();\r\n }\r\n return maxCurrentItems;\r\n }); // número de elementos que mostramos en pantalla. Necesario para el modo scroll\r\n showPajigator = computed(() => this.typeFooter() === \"list\" && this.visible());\r\n showScroll = computed(() => this.typeFooter() === \"scroll\" && this.visible());\r\n getStyle = computed(() => {\r\n if ((this.fixed() && this.typeFooter() === TYPE_LIST) || this.typeFooter() === TYPE_SCROLL) {\r\n return \"footer navbar-fixed-bottom\";\r\n } else if (this.fixed && this.typeFooter() === TYPE_FORM) {\r\n return \"footer navbar-fixed-bottom-form\";\r\n } else {\r\n return \"footer\";\r\n }\r\n });\r\n\r\n pageChange(page: number): void {\r\n this.onPageChange.emit(page);\r\n }\r\n\r\n pageSizeChange(pageSize: number): void {\r\n this.onNewPageSize.emit(pageSize);\r\n }\r\n}\r\n","<footer [class]=\"getStyle()\">\r\n\r\n @if (showScroll()) {\r\n <div class=\"scroll-outer-container\">\r\n <div class=\"pajigator-container\">\r\n <label>{{\"bitnglibrary.footer.results\" | transloco}}</label>\r\n @if (maxCurrentItems() >= totalItems()) {\r\n <span>{{totalItems()}}</span>\r\n }\r\n @if (maxCurrentItems() < totalItems()) {\r\n <span>{{maxCurrentItems()}} / {{totalItems()}}</span>\r\n }\r\n </div>\r\n </div>\r\n }\r\n\r\n @if (showPajigator()) {\r\n <bit-pajigator [paginator]=\"paginator()\"\r\n [totalItems]=\"totalItems()\"\r\n [page]=\"page()\"\r\n [itemsPerPage]=\"itemsPerPage()\"\r\n [rowsPerPageOptions]=\"[baseItemsPerPage,baseItemsPerPage*2,baseItemsPerPage*4,baseItemsPerPage*10,baseItemsPerPage*50]\"\r\n [maxCurrentItems]=\"maxCurrentItems()\"\r\n (onPageChange)=\"pageChange($event)\"\r\n (onPageSizeChange)=\"pageSizeChange($event)\" />\r\n }\r\n\r\n @if (mostrarAvisos()) {\r\n <bit-footer-messages [type]=\"typeFooter()\"\r\n [status]=\"status()\"\r\n [maxCurrentItems]=\"maxCurrentItems()\"\r\n [totalItems]=\"totalItems()\" />\r\n }\r\n\r\n</footer>\r\n","import { Component, input, inject } from '@angular/core';\r\nimport { AyudaService } from '../../services';\r\n\r\n@Component({\r\n selector: \"bit-boton-ayuda\",\r\n template: `\r\n @if (boton()) {\r\n <p-button type=\"button\" (onClick)=\"mostrarAyuda()\" [size]=\"buttonSize()\" [ngClass]=\"'p-button-outlined p-button-secondary ' + extraClass()\">\r\n {{ \"bitnglibrary.help\" | transloco }} <span class=\"fa fa-life-ring\"></span>\r\n </p-button>\r\n }\r\n\r\n @if (!boton()) {\r\n <i [ngClass]=\"'btn-ayuda fa fa-question ' + extraClass()\" (click)=\"mostrarAyuda()\"></i>\r\n }\r\n `,\r\n standalone: false\r\n})\r\nexport class BitBotonAyudaComponent {\r\n private ayudaService = inject(AyudaService);\r\n\r\n readonly ayuda = input<string>(undefined);\r\n readonly boton = input<boolean>(false); // show a little [?] or a full button\r\n readonly extraClass = input<string>(\"\"); // extra CSS classes for HTML component\r\n readonly buttonSize = input<\"small\" | \"large\">(undefined);\r\n\r\n mostrarAyuda() {\r\n this.ayudaService.mostrarAyuda(this.ayuda());\r\n }\r\n}\r\n","import { ChangeDetectionStrategy, Component, computed, input, output, inject } from \"@angular/core\";\r\nimport { MenuItem } from \"primeng/api\";\r\nimport { TranslateService } from \"../../services\";\r\nimport { takeUntil } from \"rxjs/operators\";\r\nimport { BaseComponent } from \"../../../base/components\";\r\n\r\n/**\r\n * Componenente que muestra una barra de botones.\r\n */\r\n@Component({\r\n selector: \"bit-toolbar\",\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n templateUrl: \"bit-toolbar.component.html\",\r\n standalone: false\r\n})\r\nexport class BitToolbarComponent extends BaseComponent {\r\n private translateService = inject(TranslateService);\r\n\r\n public static FILTER_BUTTON: string = \"filter\";\r\n public static PRINT_BUTTON: string = \"print\";\r\n public static EXPORT_BUTTON: string = \"export\";\r\n public static NEW_BUTTON: string = \"new\";\r\n public static SAVE_BUTTON: string = \"save\";\r\n public static DELETE_BUTTON: string = \"delete\";\r\n public static ADD_BUTTON: string = \"add\";\r\n public static HELP_BUTTON: string = \"help\";\r\n public mostrar: boolean = false;\r\n public translations: { [key: string]: string } = {};\r\n\r\n readonly toolbar = input<{ [key: string]: any }>({});\r\n readonly ayuda = input<string>(); // clave de la ayuda contextual que mostrar para su botón\r\n readonly femenino = input<boolean>(false); // género femenino (para los nombres de botones) o no\r\n readonly buttonSize = input<\"small\" | \"large\">(); // tamaño de los botones, por defecto normal\r\n readonly otherActionsDropdown = input<boolean>(false); // determina si todas las \"other actions\" se muestran en un desplegable o depende del atributo displayAsButton de cada una\r\n readonly onToolbarButtonPressed = output<string>();\r\n\r\n /** Devuelve si hay other actions que deben mostrarse en desplegable (solo cuando hay más de una). */\r\n itemsOtherActionsEnDesplegable = computed((): any[] => {\r\n const toolbar = this.toolbar() || {};\r\n const actions = this.getOtherActionsDropdownModel(toolbar);\r\n if (actions?.length > 1) return actions;\r\n else return [];\r\n });\r\n\r\n /** Devuelve la clave de traducción del label del botón de \"other actions\" */\r\n otherActionsLabel = computed((): string => {\r\n const toolbar = this.toolbar() || {};\r\n return (toolbar as any)['_otherActionsLabel'] || 'other-actions';\r\n });\r\n\r\n /** Devuelve si hay other actions que deben mostrarse como botón (incluye la de desplegable si hay solo una). */\r\n itemsOtherActionsEnBoton = computed((): any[] => {\r\n const toolbar = this.toolbar() || {};\r\n const actions = Object.values(toolbar).filter((item) => this.incluirOtherActionComoBoton(item));\r\n const actionsEnDesplegable = this.itemsOtherActionsEnDesplegable();\r\n // Si hay acciones en desplegable y solo es una, la incluimos también como botón\r\n if (actionsEnDesplegable?.length === 1) actions.push(actionsEnDesplegable[0]);\r\n return actions;\r\n });\r\n\r\n constructor() {\r\n super();\r\n\r\n this.translateService\r\n .selectTranslate(\"toolbar\", {}, \"bitnglibrary\", true)\r\n .pipe(takeUntil(this.destroy$))\r\n .subscribe((translations) => {\r\n this.translations = translations;\r\n });\r\n }\r\n\r\n onSplitButtonLabelClick(sb: any, event: MouseEvent) {\r\n setTimeout(() => sb.onDropdownButtonClick(event));\r\n }\r\n\r\n enable(button: string): boolean {\r\n const toolbar = this.toolbar();\r\n return toolbar && toolbar[button] && toolbar[button].enable;\r\n }\r\n\r\n visible(button: string): boolean {\r\n const toolbar = this.toolbar();\r\n return toolbar && toolbar[button] && toolbar[button].visible;\r\n }\r\n\r\n label(button: string, defaultLabel: string): string {\r\n const toolbar = this.toolbar();\r\n return (toolbar && toolbar[button] && toolbar[button].label) || defaultLabel;\r\n }\r\n\r\n estilo(button: string, defaultValue: string): string {\r\n const toolbar = this.toolbar();\r\n return (toolbar && toolbar[button] && toolbar[button].estilo) || defaultValue || \"fa fa-balance-spinner\";\r\n }\r\n\r\n showFilter() {\r\n this.onToolbarButtonPressed.emit(BitToolbarComponent.FILTER_BUTTON);\r\n }\r\n\r\n print() {\r\n this.onToolbarButtonPressed.emit(BitToolbarComponent.PRINT_BUTTON);\r\n }\r\n\r\n exportData() {\r\n this.onToolbarButtonPressed.emit(BitToolbarComponent.EXPORT_BUTTON);\r\n }\r\n\r\n newElement() {\r\n this.onToolbarButtonPressed.emit(BitToolbarComponent.NEW_BUTTON);\r\n }\r\n\r\n add() {\r\n this.onToolbarButtonPressed.emit(BitToolbarComponent.ADD_BUTTON);\r\n }\r\n\r\n save() {\r\n this.onToolbarButtonPressed.emit(BitToolbarComponent.SAVE_BUTTON);\r\n }\r\n\r\n delete() {\r\n this.onToolbarButtonPressed.emit(BitToolbarComponent.DELETE_BUTTON);\r\n }\r\n\r\n otherAction(button: any) {\r\n this.onToolbarButtonPressed.emit(button.action);\r\n }\r\n\r\n /**\r\n * Recorremos el toolbar y devolvemos un array con las acciones que tienen que incluirse\r\n * transformadas a MenuItem, para poder mostrarlas en el desplegable de SplitButton.\r\n */\r\n getOtherActionsDropdownModel(toolbar: { [key: string]: any }): MenuItem[] {\r\n let actions: MenuItem[] = [];\r\n for (let key in toolbar) {\r\n if (this.incluirOtherActionEnDropdown(toolbar[key])) {\r\n let toolbarItem = toolbar[key]; // capture the current toolbar item\r\n actions.push({\r\n label: this.translations[toolbarItem.label],\r\n icon: toolbarItem.estilo,\r\n visible: toolbarItem.visible,\r\n command: () => {\r\n this.otherAction(toolbarItem);\r\n } // use the captured toolbar item\r\n });\r\n }\r\n }\r\n return actions;\r\n }\r\n\r\n /**\r\n * Indica si la acción debe incluirse en el desplegable de \"other actions\":\r\n * - Es una otherAction\r\n * - Es visible\r\n * - Todas se tienen que incluir en desplegable (this.otherActionsDropdown() es true) y esta acción tiene displayAsButton como \"no true\"\r\n */\r\n incluirOtherActionEnDropdown(toolbarItem: any): boolean {\r\n return toolbarItem.otherAction && toolbarItem.visible && this.otherActionsDropdown() && toolbarItem.displayAsButton !== true;\r\n }\r\n\r\n /**\r\n * Indica si la acción debe incluirse como botón \"other actions\":\r\n * - Es una otherAction\r\n * - Es visible\r\n * - No todas se tienen que incluir en desplegable (this.otherActionsDropdown() es false) o esta acción tiene displayAsButton como \"true\"\r\n */\r\n incluirOtherActionComoBoton(toolbarItem: any): boolean {\r\n return toolbarItem.otherAction && toolbarItem.visible && (!this.otherActionsDropdown() || toolbarItem.displayAsButton === true);\r\n }\r\n}\r\n","<div class=\"contenedor-toolbar\">\r\n\r\n <!-- acciones no estandar definidas dinámicamente o muy particulares que se deben incluir en un desplegable -->\r\n @if (itemsOtherActionsEnDesplegable().length > 1) {\r\n <p-splitbutton #sb label=\"{{'bitnglibrary.toolbar.' + otherActionsLabel() | transloco}}\" [model]=\"itemsOtherActionsEnDesplegable()\" (onClick)=\"onSplitButtonLabelClick(sb, $event)\" />\r\n }\r\n\r\n <!-- acciones no estandar definidas dinámicamente o muy particulares que se muestran una tras otra en línea -->\r\n @for (button of itemsOtherActionsEnBoton(); track button) {\r\n <p-button type=\"button\" [disabled]=\"!button.enable\" (onClick)=\"otherAction(button)\" [size]=\"buttonSize()\">{{\"bitnglibrary.toolbar.\"+button.label | transloco}} <span [class]=\"button.estilo?button.estilo:'pi pi-angle-right'\"></span></p-button>\r\n }\r\n\r\n <!-- acciones estandar -->\r\n @if (visible('new')) {\r\n <p-button type=\"button\" [disabled]=\"!enable('new')\" (onClick)=\"newElement()\" [size]=\"buttonSize()\" styleClass=\"p-button-danger\">{{(femenino() ? \"bitnglibrary.toolbar.new-female\": \"bitnglibrary.toolbar.new\") | transloco}} <span [class]=\"estilo('new', 'pi pi-plus')\"></span></p-button>\r\n }\r\n @if (visible('add')) {\r\n <p-button type=\"button\" [disabled]=\"!enable('add')\" (onClick)=\"add()\" [size]=\"buttonSize()\" styleClass=\"p-button-danger\">{{\"bitnglibrary.toolbar.add\" | transloco}} <span [class]=\"estilo('add', 'pi pi-plus')\"></span></p-button>\r\n }\r\n\r\n @if (visible('export')) {\r\n <p-button type=\"button\" [disabled]=\"!enable('export')\" (onClick)=\"exportData()\" [size]=\"buttonSize()\" styleClass=\"p-button-secondary\">{{\"bitnglibrary.toolbar.export\" | transloco}} <span [class]=\"estilo('export', 'pi pi-file')\"></span></p-button>\r\n }\r\n @if (visible('save')) {\r\n <p-button type=\"button\" [disabled]=\"!enable('save')\" (onClick)=\"save()\" [size]=\"buttonSize()\" styleClass=\"p-button-success\">{{\"bitnglibrary.toolbar.save\" | transloco}} <span [class]=\"estilo('save', 'pi pi-save')\"></span></p-button>\r\n }\r\n @if (visible('delete')) {\r\n <p-button type=\"button\" [disabled]=\"!enable('delete')\" (onClick)=\"delete()\" [size]=\"buttonSize()\" styleClass=\"p-button-danger\">{{\"bitnglibrary.toolbar.delete\" | transloco}} <span [class]=\"estilo('delete', 'pi pi-trash')\"></span></p-button>\r\n }\r\n @if (visible('print')) {\r\n <p-button type=\"button\" [disabled]=\"!enable('print')\" (onClick)=\"print()\" [size]=\"buttonSize()\" styleClass=\"p-button-secondary\">{{\"bitnglibrary.toolbar.print\" | transloco}} <span [class]=\"estilo('print', 'pi pi-print')\"></span></p-button>\r\n }\r\n @if (ayuda()) {\r\n <bit-boton-ayuda boton=\"true\" [ayuda]=\"ayuda()\" [buttonSize]=\"buttonSize()\" />\r\n }\r\n</div>\r\n","import { Component, ChangeDetectionStrategy, input, output } from \"@angular/core\";\r\n\r\n/**\r\n * Componente que muestra miga de pan y toolbar\r\n */\r\n@Component({\r\n selector: \"bit-header\",\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n templateUrl: \"bit-header.component.html\",\r\n standalone: false\r\n})\r\nexport class BitHeaderComponent {\r\n readonly toolbar = input<any>({});\r\n readonly noToolbar = input<boolean>(false);\r\n readonly otherActionsDropdown = input<boolean>(false); // determina si las \"other actions\" deben mostrarse en línea o como un desplegable\r\n readonly breadcrumb = input<any[]>(undefined);\r\n readonly masacciones = input<any[]>(undefined);\r\n readonly colsBreadcrumb = input<number>(undefined);\r\n readonly femenino = input<boolean>(false); // género femenino (para los nombres de botones) o no\r\n readonly ayuda = input<string>(undefined); // clave de la ayuda contextual para la botonera\r\n\r\n readonly onToolbarButtonPressed = output<string>();\r\n\r\n /** Tenemos que capturar el evento y volver a subirlo, por diseño Angular2 no permite enviar un evento de un nieto a su abuelo, solo\r\n * de hijo a padre\r\n */\r\n onTBPressed(button) {\r\n this.onToolbarButtonPressed.emit(button);\r\n }\r\n}\r\n","<!-- <div class=\"grid mt-3 mb-3\">\r\n<div class=\"col-12 lg:col-4 sm:col-4 caja-breadcrumb\"> -->\r\n <!-- ruta de donde nos encontramos (miga de pan) -->\r\n <!-- <bit-breadcrumb *ngIf=\"breadcrumb\" [breadcrumb]=\"breadcrumb\"></bit-breadcrumb>\r\n</div>\r\n<div *ngIf=\"noToolbar === false\"\r\n class=\"col-12 lg:col-8 sm:col-8\"> -->\r\n <!-- botonera de acciones -->\r\n <!-- <bit-toolbar\r\n [toolbar]=\"toolbar\"\r\n [femenino]=\"femenino\"\r\n [otherActionsDropdown]=\"otherActionsDropdown\"\r\n [ayuda]=\"ayuda\"\r\n(onToolbarButtonPressed)=\"onTBPressed($event)\"></bit-toolbar>\r\n</div>\r\n</div> -->\r\n\r\n<div class=\"grid mt-3 mb-3\">\r\n <div class=\"col-12 caja-breadcrumb\" [ngClass]=\"[colsBreadcrumb() ? 'lg:col-' + colsBreadcrumb() : 'lg:col-4']\">\r\n <!-- ruta de donde nos encontramos (miga de pan) -->\r\n @if (breadcrumb()) {\r\n <bit-breadcrumb [breadcrumb]=\"breadcrumb()\" />\r\n }\r\n </div>\r\n @if (noToolbar() === false) {\r\n <div\r\n class=\"col-12\" [ngClass]=\"[colsBreadcrumb() ? 'lg:col-' + (12- colsBreadcrumb()) : 'lg:col-8']\">\r\n <!-- botonera de acciones -->\r\n <bit-toolbar [toolbar]=\"toolbar()\"\r\n [femenino]=\"femenino()\"\r\n [otherActionsDropdown]=\"otherActionsDropdown()\"\r\n [ayuda]=\"ayuda()\"\r\n (onToolbarButtonPressed)=\"onTBPressed($event)\" />\r\n </div>\r\n }\r\n</div>","import { Component, OnDestroy, computed, input, inject } from \"@angular/core\";\r\n\r\nimport { GeneralUtils } from \"../../services/general-utils.service\";\r\n\r\n@Component({\r\n selector: \"bit-loading\",\r\n template: `\r\n @if (loading()) {\r\n <div class=\"modal\">\r\n <div class=\"grid\">\r\n <div class=\"col-12 text-center\">\r\n <i class=\"pi pi-spin pi-spinner icono-loading\"></i>\r\n </div>\r\n </div>\r\n </div>\r\n }\r\n ` ,\r\n standalone: false\r\n})\r\nexport class BitLoadingComponent implements OnDestroy {\r\n private generalUtils = inject(GeneralUtils);\r\n readonly imageSource = input<string>(undefined, { alias: \"source\" });\r\n \r\n loading = computed(() => this.generalUtils.loading() > 0);\r\n\r\n constructor() {\r\n console.log(\"Constructor bitloading\");\r\n }\r\n\r\n ngOnDestroy() {\r\n this.generalUtils.loading.set(0);\r\n }\r\n}\r\n","import { Component, OnDestroy, OnInit, inject } from '@angular/core';\r\nimport { concatMap, filter, take, tap } from 'rxjs/operators';\r\nimport { combineLatest, of } from 'rxjs';\r\nimport { MessageService } from 'primeng/api';\r\n\r\nimport { BaseComponent } from '../../../base/components';\r\nimport { BitMessageService, TranslateService } from '../../services';\r\nimport { BitNotificationSeverityType } from '../../data';\r\n\r\n@Component({\r\n selector: \"bit-notification-toast\",\r\n template: ` <p-toast key=\"notification\" position=\"top-right\" /> `,\r\n standalone: false\r\n})\r\nexport class BitNotificationToastComponent extends BaseComponent implements OnInit, OnDestroy {\r\n protected bitMessageService = inject(BitMessageService);\r\n protected primeMessageService = inject(MessageService);\r\n protected translateService = inject(TranslateService);\r\n\r\n\r\n ngOnInit() {\r\n this.subscribeToNotifications();\r\n }\r\n\r\n //Nos suscribimos a la espera de que envíen notificaciones\r\n subscribeToNotifications() {\r\n this.bitMessageService.observableNotifications\r\n .pipe(\r\n tap((notification) => {\r\n //controlamos si nos llega vacío\r\n if (!notification) {\r\n this.hide();\r\n }\r\n }),\r\n filter((notification) => !!notification), //controlamos que no pasemos algo vacío\r\n concatMap(\r\n (notification) =>\r\n combineLatest([\r\n of(notification.severity),\r\n this.translateService.selectTranslate(notification.title.code, notification.title.params, notification.title.context),\r\n this.translateService.selectTranslate(notification.message.code, notification.message.params, notification.message.context),\r\n of(this.getLife(notification.life)) // Si no se especifica el tiempo, usamos el valor por defecto\r\n ]).pipe(take(1)) //prevenimos que si nos cambian de idioma, se vuelva a disparar la traducción y vuelva a aparecer el mensaje en el idioma elegido\r\n )\r\n )\r\n .subscribe(([severity, title, message, life]) => {\r\n this.showNotification(severity, title, message, life);\r\n });\r\n }\r\n\r\n showNotification(severity: BitNotificationSeverityType, title: string, message: string, life?: number) {\r\n this.primeMessageService.add({ key: \"notification\", severity: severity, summary: title, detail: message, life: this.getLife(life) });\r\n }\r\n\r\n private hide() {\r\n this.primeMessageService.clear();\r\n }\r\n\r\n private getLife(life?: number): number {\r\n return life ? life : DEFAULT_LIFE; // Si no se especifica el tiempo, usamos el valor por defecto\r\n }\r\n}\r\n\r\nconst DEFAULT_LIFE = 3000; // Tiempo por defecto en milisegundos para que se cierre la notificación\r\n","import { Component, input, OnDestroy, inject } from \"@angular/core\";\r\nimport { concatMap, filter, take, tap } from \"rxjs/operators\";\r\nimport { combineLatest, of, Observable, forkJoin } from \"rxjs\";\r\nimport { MessageService } from \"primeng/api\";\r\n\r\nimport { BaseComponent } from \"../../../base/components/base.component\";\r\nimport { BitMessageService, TranslateService } from \"../../services\";\r\nimport { ErrorValidateForm } from \"../../../base/models\";\r\n\r\n@Component({\r\n selector: \"bit-notification-error\",\r\n template: ` <p-toast /> `,\r\n standalone: false\r\n})\r\nexport class BitNotificationErrorComponent extends BaseComponent implements OnDestroy {\r\n protected bitMessageService = inject(BitMessageService);\r\n protected primeMessageService = inject(MessageService);\r\n protected translateService = inject(TranslateService);\r\n\r\n escape = input<boolean>(true);\r\n closable = input<boolean>(true);\r\n messages: any[] = [];\r\n\r\n ngOnInit() {\r\n console.log(\"BitNotificationErrorComponent ngOnInit\");\r\n this.subscribeToNotificationMessages();\r\n }\r\n\r\n //Nos suscribimos a la espera de que envíen notificaciones de error\r\n private subscribeToNotificationMessages() {\r\n this.bitMessageService.observableNotificationsErrors\r\n .pipe(\r\n tap((notificacionError) => {\r\n //controlamos si nos llega vacio\r\n if (!notificacionError) {\r\n this.hideErrors();\r\n }\r\n }),\r\n filter((notificacionError) => !!notificacionError), //controlamos que no pasemos algo vacío\r\n concatMap((notificationError) =>\r\n combineLatest([\r\n //de momento, title y message no se están mostrando en pantalla\r\n this.translateService.selectTranslate(notificationError.title.code, notificationError.title.params, notificationError.title.context),\r\n this.translateService.selectTranslate(notificationError.message.code, notificationError.message.params, notificationError.message.context),\r\n of(notificationError.context),\r\n of(notificationError.multipleErrors),\r\n of(notificationError.detail),\r\n of(notificationError.clearErrors),\r\n of(notificationError.prefixErrorsMap)\r\n ]).pipe(take(1))\r\n )\r\n )\r\n .subscribe(([title, message, context, multipleErrors, detail, clearErrors, prefixErrorsMap]) => {\r\n this.showNotificationError(title, message, context, multipleErrors, detail, clearErrors, prefixErrorsMap);\r\n });\r\n }\r\n\r\n /**\r\n * Muestra una notificación de error que puede ser o bien múltiple o simple\r\n * @param title\r\n * @param message\r\n * @param context\r\n * @param multipleErrors\r\n */\r\n showNotificationError(\r\n title: string,\r\n message: string,\r\n context: string,\r\n multipleErrors: ErrorValidateForm[],\r\n detail: string,\r\n clearErrors: boolean = true,\r\n prefixErrorsMap?: { [key: string]: string }\r\n ) {\r\n console.log(\"clearErrors\", clearErrors);\r\n if (clearErrors) {\r\n this.clearErrors();\r\n }\r\n console.log(`showNotificationError ${title} ${message}`);\r\n if (multipleErrors) {\r\n console.log(\"multiple errors\");\r\n //Para cada error a mostrar\r\n const observables = multipleErrors.map((error) =>\r\n combineLatest([\r\n this.getTranslatedPrefixes(error, context, prefixErrorsMap),\r\n this.translateService.selectTranslate(error.errorMessage.code, error.errorMessage.params, error.errorMessage.context)\r\n ]).pipe(take(1))\r\n );\r\n\r\n forkJoin(observables).subscribe((results) => {\r\n results.forEach(([prefixes, textError]) => {\r\n this.pushError(prefixes != null && prefixes.length > 0 ? prefixes.reduce((acc, v) => acc + \" > \" + v) : \"\", textError);\r\n });\r\n // Aquí sabes que han terminado todas las suscripciones\r\n this.showErrors();\r\n });\r\n } else {\r\n console.log(\"single error\");\r\n if (!detail) {\r\n this.pushError(title, message);\r\n } else {\r\n this.pushError(message, detail);\r\n }\r\n this.showErrors();\r\n }\r\n }\r\n\r\n /** Añade un mensaje de error a la lista general de errores que mostrará el componente usando Prime */\r\n private pushError(title: string, message: string) {\r\n console.log(`new error ${title} ${message}`);\r\n this.messages.push({\r\n severity: \"error\",\r\n summary: title,\r\n detail: message,\r\n sticky: true\r\n });\r\n }\r\n\r\n private showErrors() {\r\n console.log(\"showErrors\");\r\n this.primeMessageService.addAll(this.messages);\r\n }\r\n\r\n private clearErrors() {\r\n console.log(\"clearErrors\");\r\n this.messages = [];\r\n }\r\n\r\n private hideErrors() {\r\n console.log(\"hideErrors\");\r\n this.clearErrors();\r\n this.primeMessageService.clear();\r\n }\r\n\r\n /** Transforma un array de códigos a traducir en un array de observables para traducir cada código y combinado todo\r\n * con el operador combineLatest para recibir los valores traducidos en la misma secuencia que ocupan en el array\r\n */\r\n private getTranslatedPrefixes(error: ErrorValidateForm, context: string, prefixErrorsMap: { [key: string]: string }): Observable<string[]> {\r\n if (error.prefixes.length > 0) {\r\n let prefixErrors$: Observable<string>[] = error.prefixes.map((code) => {\r\n if (typeof code == \"number\") {\r\n //para arrays\r\n return of(code);\r\n } else {\r\n if (prefixErrorsMap && prefixErrorsMap[code]) {\r\n return of(prefixErrorsMap[code]);\r\n } else {\r\n return this.translateService.selectTranslate(code, undefined, context);\r\n }\r\n }\r\n });\r\n return combineLatest(prefixErrors$);\r\n } else {\r\n return of([]);\r\n }\r\n }\r\n}\r\n","import { Directive, ElementRef, HostListener, Renderer2, inject } from \"@angular/core\";\r\n\r\nimport { FocusService } from \"../services/focus.service\";\r\n\r\n@Directive({\r\n selector: \"input,select,textarea,bit-input,bit-select\" //TODO: no funciona bien con autoComplete. No se registra el focus\r\n ,\r\n standalone: false\r\n})\r\nexport class FocusRegisterDirective {\r\n private elRef = inject(ElementRef);\r\n private renderer = inject(Renderer2);\r\n private focusService = inject(FocusService);\r\n\r\n\r\n @HostListener(\"focus\") onFocus() {\r\n this.focusService.focus(this.elRef.nativeElement.id);\r\n }\r\n\r\n @HostListener(\"blur\") onBlur() {\r\n this.focusService.clear();\r\n }\r\n}\r\n","import { ChangeDetectionStrategy, Component, OnInit, input, output, viewChild, inject, computed, signal } from '@angular/core';\r\n\r\nimport { FileItem, FileUploader, ParsedResponseHeaders } from 'ng2-file-upload';\r\nimport { GeneralUtils } from '../../services';\r\n\r\n@Component({\r\n selector: \"bit-ng-upload\",\r\n templateUrl: \"bit-ng-upload.component.html\",\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n standalone: false\r\n})\r\nexport class BitNGUploadComponent implements OnInit {\r\n private generalUtils = inject(GeneralUtils);\r\n\r\n readonly uploader = input.required<FileUploader>();\r\n readonly hasDropZone = input<boolean>();\r\n readonly hasQueue = input<boolean>();\r\n readonly hasSingleUpload = input<boolean>();\r\n readonly hasMultipleUpload = input<boolean>();\r\n readonly deleteItemAfterUpload = input<boolean>();\r\n readonly canUpload = input<boolean>();\r\n readonly hasProgressBar = input<boolean>();\r\n readonly sizeDropZone = input<number>();\r\n readonly sizeQueue = input<number>();\r\n readonly inputAccept = input<string>(\"*\");\r\n\r\n readonly onSuccess = output<any>();\r\n readonly onError = output<any>();\r\n\r\n readonly fileInput = viewChild<any>(\"fileRef\");\r\n\r\n hasBaseDropZoneOver = signal<boolean>(false);\r\n\r\n ngOnInit(): void {\r\n this.uploader().onSuccessItem = (item: FileItem, response: string, status: number, headers: ParsedResponseHeaders) => {\r\n console.log(\"success upload file\");\r\n this.stopLoading();\r\n this.onSuccess.emit({ item, response, status, headers });\r\n if (this.deleteItemAfterUpload()) {\r\n item.remove();\r\n }\r\n };\r\n this.uploader().onErrorItem = (item: FileItem, response: string, status: number, headers: ParsedResponseHeaders) => {\r\n console.log(\"error upload file\");\r\n this.stopLoading();\r\n this.onError.emit({ item, response, status, headers });\r\n };\r\n this.uploader().onProgressItem = (item: FileItem, progress: any) => {\r\n console.log(progress);\r\n };\r\n this.hasBaseDropZoneOver.set(true);\r\n }\r\n\r\n /** Arrancará el spinner en el caso de que la barra de progreso esté desactivada*/\r\n startLoading() {\r\n if (!this.hasProgressBar()) {\r\n this.generalUtils.startLoading();\r\n }\r\n }\r\n\r\n /** Parará el spinner en el caso de que la barra de progreso esté desactivada*/\r\n stopLoading() {\r\n if (!this.hasProgressBar()) {\r\n this.generalUtils.stopLoading();\r\n }\r\n }\r\n\r\n /** Sube todos los ficheros en cola al servidor */\r\n uploadAll() {\r\n this.startLoading();\r\n this.uploader().uploadAll();\r\n }\r\n\r\n /** Elimina la cola de ficheros y des-selecciona el fichero que pudiera estar seleccionado en el single input file */\r\n removeQueue() {\r\n this.stopLoading();\r\n this.uploader().clearQueue();\r\n this.removeInputFile();\r\n }\r\n\r\n /** Cancela la subida de ficheros al servidor */\r\n cancelQueue() {\r\n this.stopLoading();\r\n this.uploader().cancelAll();\r\n }\r\n\r\n /** Sube un fichero al servidor de manera individual */\r\n uploadFile(item) {\r\n this.startLoading();\r\n item.upload();\r\n }\r\n\r\n /** Elimina de la cola un fichero en concreto y en el caso de que coincida con el seleccionado en el single input file, también\r\n * lo des-selecciona\r\n */\r\n removeFile(item) {\r\n this.stopLoading();\r\n const fileInput = this.fileInput();\r\n if (fileInput && fileInput.nativeElement.value.indexOf(item.file.name) != -1) {\r\n this.removeInputFile();\r\n }\r\n item.remove();\r\n }\r\n\r\n /** Cancela la subida de un fichero de manera individual */\r\n cancelFile(item) {\r\n this.stopLoading();\r\n item.cancel();\r\n }\r\n\r\n /** Des-selecciona el fichero seleccionado en el input file */\r\n removeInputFile() {\r\n const fileInput = this.fileInput();\r\n if (fileInput) fileInput.nativeElement.value = \"\";\r\n }\r\n\r\n /** Evento que se dispara cuando arrastran un fichero a la zona de drag&drop */\r\n public fileOverBase(e: any): void {\r\n this.hasBaseDropZoneOver.set(e);\r\n }\r\n}\r\n","<div class=\"grid\">\r\n <div class=\"col-12\">\r\n @if (hasDropZone()) {\r\n <div\r\n ng2FileDrop\r\n [ngClass]=\"{'nv-file-over': hasBaseDropZoneOver()}\"\r\n (fileOver)=\"fileOverBase($event)\"\r\n [uploader]=\"uploader()\"\r\n class=\"well my-drop-zone\">\r\n <div class=\"contenedor-upload\">\r\n <i class=\"fa fa-file documento\"></i>\r\n <div>\r\n <span>{{ \"bitnglibrary.upload.dropfiles\" | transloco }}</span>\r\n <div class=\"grid\">\r\n <div class=\"col-12\">\r\n @if (hasMultipleUpload()) {\r\n <label class=\"btn-upload\">\r\n <input autocomplete=\"upload\" type=\"file\" ng2FileSelect [uploader]=\"uploader()\" multiple [accept]=\"inputAccept()\" />\r\n <i class=\"fa fa-upload\"></i>{{'bitnglibrary.upload.multiple' | transloco}}\r\n </label>\r\n }\r\n @if (hasSingleUpload()) {\r\n <label class=\"btn-upload\">\r\n <input autocomplete=\"upload\" #fileRef type=\"file\" ng2FileSelect [uploader]=\"uploader()\" [accept]=\"inputAccept()\" />\r\n <i class=\"fa fa-upload\"></i>{{'bitnglibrary.upload.simple' | transloco}}\r\n </label>\r\n }\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n }\r\n </div>\r\n</div>\r\n<div class=\"grid\">\r\n @if (hasQueue()) {\r\n <div class=\"col-12\">\r\n <p>{{\"bitnglibrary.upload.uploadfiles\" | transloco}}: {{ uploader()?.queue?.length }}</p>\r\n <p-table [value]=\"uploader()?.queue\">\r\n <ng-template pTemplate=\"header\">\r\n <tr>\r\n <th width=\"50%\">{{\"bitnglibrary.upload.filename\" | transloco}}</th>\r\n @if (uploader().options.isHTML5) {\r\n <th>{{\"bitnglibrary.upload.filesize\" | transloco}}</th>\r\n }\r\n @if (uploader().options.isHTML5 && hasProgressBar()) {\r\n <th>{{\"bitnglibrary.upload.progress\" | transloco}}</th>\r\n }\r\n @if (canUpload()) {\r\n <th>Estat</th>\r\n }\r\n <th>{{\"bitnglibrary.upload.actions\" | transloco}}</th>\r\n </tr>\r\n </ng-template>\r\n <ng-template pTemplate=\"body\" let-item>\r\n <tr>\r\n <td><strong>{{ item?.file?.name }}</strong></td>\r\n @if (uploader()?.options?.isHTML5) {\r\n <td nowrap>{{ item?.file?.size/1024 | number:'.2' }} KB</td>\r\n }\r\n @if (uploader().options.isHTML5 && hasProgressBar()) {\r\n <td>\r\n <div class=\"progress\" style=\"margin-bottom: 0;\">\r\n <div class=\"progress-bar\" role=\"progressbar\" [ngStyle]=\"{ 'width': item.progress + '%' }\"></div>\r\n </div>\r\n </td>\r\n }\r\n @if (canUpload()) {\r\n <td class=\"p-text-center\">\r\n @if (item.isSuccess) {\r\n <span><i class=\"fa fa-check\"></i></span>\r\n }\r\n @if (item.isCancel) {\r\n <span><i class=\"fa fa-ban\"></i></span>\r\n }\r\n @if (item.isError) {\r\n <span><i class=\"fa fa-times\"></i></span>\r\n }\r\n </td>\r\n }\r\n <td nowrap>\r\n @if (canUpload()) {\r\n <p-button icon=\"fa fa-upload\" title=\"{{'bitnglibrary.upload.upload' | transloco}}\" styleClass=\"p-button-success\"\r\n (onClick)=\"uploadFile(item)\" [disabled]=\"item.isReady || item.isUploading || item.isSuccess\" />\r\n }\r\n @if (canUpload()) {\r\n <p-button icon=\"fa fa-ban\" title=\"{{'bitnglibrary.upload.cancelupload' | transloco}}\" styleClass=\"p-button-warning\"\r\n (onClick)=\"cancelFile(item)\" [disabled]=\"!item.isUploading\" />\r\n }\r\n <p-button icon=\"fa fa-trash\" title=\"{{'bitnglibrary.upload.removefromqueue' | transloco}}\" styleClass=\"p-button-danger\"\r\n (onClick)=\"removeFile(item)\" />\r\n </td>\r\n </tr>\r\n </ng-template>\r\n </p-table>\r\n @if (hasProgressBar()) {\r\n <div class=\"cola-progreso\">\r\n <span>{{\"bitnglibrary.upload.progressqueue\" | transloco}}<span>{{(uploader()?.progress?.toString() == 'NaN'? (\"bitnglibrary.upload.finishupload\"|transloco): uploader()?.progress + ' %')}}</span></span>\r\n <div class=\"progress\">\r\n <div class=\"progress-bar\" role=\"progressbar\" [ngStyle]=\"{ 'width': (uploader()?.progress?.toString() == 'NaN'?'0':uploader()?.progress) + '%' }\"></div>\r\n </div>\r\n </div>\r\n }\r\n <div>\r\n\r\n @if (canUpload()) {\r\n <p-button icon=\"fa fa-upload\" title=\"{{'bitnglibrary.upload.uploadall' | transloco}}\" styleClass=\"p-button-success\"\r\n (onClick)=\"uploadAll()\" [disabled]=\"!(uploader()?.getNotUploadedItems()?.length)\" />\r\n }\r\n @if (canUpload()) {\r\n <p-button icon=\"fa fa-ban\" title=\"{{'bitnglibrary.upload.cancelall' | transloco}}\" styleClass=\"p-button-warning\"\r\n (onClick)=\"cancelQueue()\" [disabled]=\"!(uploader()?.isUploading)\" />\r\n }\r\n <p-button icon=\"fa fa-trash\" title=\"{{'bitnglibrary.upload.removeall' | transloco}}\" styleClass=\"p-button-danger\"\r\n (onClick)=\"removeQueue()\" [disabled]=\"!(uploader()?.queue?.length)\" />\r\n </div>\r\n </div>\r\n }\r\n</div>\r\n","import { Component, computed, input } from \"@angular/core\";\r\n\r\n\r\ninterface AuthUser {\r\n id: number;\r\n nombreCompleto: string;\r\n login: string;\r\n}\r\n\r\n/**\r\n * Componente general que muestra controles de sesión de usuario.\r\n *\r\n * Informa del login actualmente en sesión\r\n */\r\n@Component({\r\n selector: \"bit-user-controls\",\r\n templateUrl: \"./bit-user-controls.component.html\"\r\n ,\r\n standalone: false\r\n})\r\nexport class BitUserControlsComponent {\r\n readonly usuario = input.required<AuthUser>();\r\n userJSON: string;\r\n\r\n json = computed(() => JSON.stringify(this.usuario(), null, 4));\r\n}\r\n","@if (usuario()) {\r\n <span class=\"userControls\"><span class=\"fa fa-user\" title=\"{{ json() }}\"></span> {{ usuario().nombreCompleto }} ({{usuario().login}}) </span>\r\n}","import { Component, input } from \"@angular/core\";\r\n\r\n/**\r\n * Componenente que muestra un paginador en la sección footer.\r\n **/\r\n\r\n@Component({\r\n selector: \"bit-column-boolean\",\r\n template: `\r\n @if (data()) {\r\n <span class=\"ui-cell-data\">\r\n {{ data()[field()] ? textTrue() : textFalse() }}\r\n </span>\r\n }\r\n `,\r\n standalone: false\r\n})\r\nexport class BitColumnBooleanComponent {\r\n readonly data = input<any>(undefined); // objeto del que extraer la propiedad\r\n readonly field = input<string>(undefined); // propiedad booleana que procesar\r\n readonly textTrue = input<string>(\"Sí\");\r\n readonly textFalse = input<string>(\"No\");\r\n\r\n constructor() {}\r\n}\r\n","import { Component, OnChanges, computed, input, signal } from \"@angular/core\";\r\n\r\nimport { Domain } from \"../../data/domain\";\r\n\r\n@Component({\r\n selector: \"bit-domain-value\",\r\n template: `\r\n <span>{{ translatedValue() }}</span>\r\n `,\r\n standalone: false\r\n})\r\nexport class BitDomainValueComponent { \r\n readonly value = input<string>();\r\n readonly emptyText = input<string>(\"\");\r\n readonly data = input<Domain[]>();\r\n \r\n translatedValue = computed(() => {\r\n // buscar traducción para el valor en el dominio\r\n const data = this.data();\r\n let domainMatch = data && data.find(obj => obj.value == this.value());\r\n\r\n const value = this.value();\r\n if (domainMatch) {\r\n return domainMatch.label;\r\n } else if (value) {\r\n return String(`??${value}??`);\r\n } else {\r\n return this.emptyText() ?? \"Carregant...\";\r\n }\r\n });\r\n}\r\n","import { Directive, input, computed, output, ElementRef, inject } from \"@angular/core\";\r\nimport { FormControl } from \"@angular/forms\";\r\n\r\nimport { BaseComponent } from \"../../../base/components/base.component\";\r\n\r\n/**\r\n * Clase general que todos los componentes personalizados deben extender. Contiene toda la lógica común para trabajar con\r\n * componentes personalizados\r\n */\r\n@Directive()\r\nexport abstract class BitGeneralComponent extends BaseComponent {\r\n readonly control = input<FormControl>(undefined, { alias: \"formControl\" });\r\n readonly nombre = input<any>();\r\n readonly nombreDirectiva = input<any>();\r\n readonly label = input<string>();\r\n readonly estilo = input<string>();\r\n readonly tooltipTexto = input<string>();\r\n readonly tooltipPosicion = input<string>();\r\n readonly ayuda = input<string>(); // clave de la ayuda contextual\r\n readonly placeholder = input<string>(\"\");\r\n readonly readOnly = input<boolean>(false);\r\n readonly hideLabel = input<boolean>(false); // forzar que no se reserve espacio para el nombre del campo\r\n readonly forceObligatorio = input<boolean>(false);\r\n readonly testid = input<string>();\r\n readonly log = input<boolean>(false);\r\n readonly onChange = output<any>();\r\n readonly onTouch = output<any>();\r\n readonly onBlur = output<any>();\r\n readonly onFocus = output<any>();\r\n readonly elementRef = inject(ElementRef); \r\n\r\n dataTestId = computed(() => {\r\n const testid = this.testid();\r\n return testid ? testid : this.nombre();\r\n }); \r\n\r\n get obligatorio(): boolean {\r\n let control = this.control();\r\n return this.forceObligatorio() || (control && control.errors && control.errors[\"required\"]);\r\n }\r\n\r\n showAyuda() {\r\n this.ayudaService.mostrarAyuda(this.ayuda());\r\n }\r\n}\r\n","import { Directive, signal } from \"@angular/core\";\r\n\r\nimport { BitGeneralComponent } from \"./bit-general.component\";\r\n\r\n/** Clase customizada para componentes personalizados que requieren implementar la interface ControlValueAccessor.\r\n * Tipicamente para aquellos componentes personalizados que trabajan sobre otros componentes no estándars HTML como\r\n * pueden ser los componentes de prime como switch, autocomplete, calendar, select, etc.\r\n */\r\n@Directive()\r\nexport abstract class BitCustomComponent extends BitGeneralComponent {\r\n\r\n isDisabled = signal<boolean>(false); \r\n\r\n // nos permite decirle a Angular que nuestro componente ha modificado su valor\r\n _onChange = (_: any) => { }\r\n // nos permite decirle a Angular que nuestro componente ha sido tacado\r\n _onTouch = () => { }\r\n\r\n setDisabledState(isDisabled: boolean): void {\r\n this.isDisabled.set(isDisabled);\r\n }\r\n\r\n /** Se activa cuando Angular nos informa de que debemos actualizar la vista. Cada componente hijo deberá ver\r\n * si requiere o no implementar este método */\r\n abstract writeValue(value: any);\r\n\r\n _onBlur(event = {}) {\r\n this.log() && console.log(\"_onBlur forComponent:\"+this.nombre());\r\n this.onBlur.emit({});\r\n this.touchComponent();\r\n }\r\n\r\n _onFocus() {\r\n this.log() && console.log(\"_onFocus forComponent:\"+this.nombre());\r\n this.onFocus.emit({});\r\n }\r\n\r\n changeComponentValue(value: any) {\r\n this.log() && console.log(\"changeComponentValue forComponent:\"+this.nombre()+ \" and value:\"+value);\r\n this._onChange(value);\r\n this.onChange.emit(value);\r\n }\r\n\r\n touchComponent() {\r\n this.log() && console.log(\"touchComponent forComponent:\"+this.nombre());\r\n this._onTouch();\r\n this.onTouch.emit({});\r\n }\r\n\r\n registerOnChange(fn: any) {\r\n this._onChange = fn;\r\n }\r\n\r\n registerOnTouched(fn: any) {\r\n this._onTouch = fn;\r\n }\r\n}\r\n","import { Component, forwardRef } from \"@angular/core\";\r\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from \"@angular/forms\";\r\n\r\nimport { BitCustomComponent } from \"../bit-custom.component\";\r\n\r\n\r\n@Component({\r\n selector: \"bit-text\",\r\n templateUrl: \"bit-text.component.html\",\r\n providers: [{\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => BitTextComponent),\r\n multi: true\r\n }],\r\n standalone: false\r\n})\r\nexport class BitTextComponent extends BitCustomComponent implements ControlValueAccessor {\r\n value: string;\r\n\r\n get value_lectura(): string {\r\n if (this.value == null) {\r\n this.log() && console.log(\"value lectura is null\");\r\n return \"\";\r\n } // si es null o undefined (es lo que evalúa el \"==null\")\r\n else {\r\n this.log() && console.log(\"value lectura: \" + this.value);\r\n return this.value;\r\n }\r\n }\r\n\r\n writeValue(v: string): void {\r\n this.log() && console.log(`writeValue forComponent ${this.nombre()} with value ${v}`);\r\n if (!v) { \r\n this.value = \"\";\r\n } else {\r\n this.value = v;\r\n }\r\n }\r\n\r\n onChangeValue(text) {\r\n this.log() && console.log(\"_onChangeValue forComponent: \" + this.nombre() + \" with value:\" + text);\r\n this.value = text;\r\n this.changeComponentValue(this.value);\r\n }\r\n\r\n}\r\n","@if (!hideLabel()) {\r\n <label for=\"{{ nombre() }}\">\r\n <ng-content /> @if (obligatorio) {\r\n <span class=\"obligatorio fa fa-asterisk\"></span>\r\n } \r\n @if (ayuda()) {\r\n <i class=\"btn-ayuda fa fa-question\" (click)=\"showAyuda()\"></i>\r\n }\r\n </label>\r\n}\r\n@if (readOnly()) {\r\n <p class=\"lectura\" [id]=\"nombre()\">{{ value_lectura }}</p>\r\n}\r\n@if (!tooltipTexto() && !readOnly()) {\r\n <input\r\n pInputText\r\n type=\"text\"\r\n id=\"{{ nombre() }}\"\r\n name=\"{{ nombre() }}\"\r\n autocomplete=\"{{ nombre() }}\"\r\n ariaLabel=\"{{ nombre() }}\"\r\n [disabled]=\"isDisabled()\"\r\n [ngModel]=\"value\"\r\n [attr.directive]=\"nombreDirectiva()\"\r\n [placeholder]=\"placeholder()\"\r\n (ngModelChange)=\"onChangeValue($event)\"\r\n (blur)=\"_onBlur()\"\r\n (focus)=\"_onFocus()\"\r\n attr.data-testid=\"{{ dataTestId()}}\"\r\n />\r\n}\r\n@if (tooltipTexto() && !readOnly()) {\r\n <input\r\n pInputText\r\n type=\"text\"\r\n id=\"{{ nombre() }}\"\r\n name=\"{{ nombre() }}\"\r\n ariaLabel=\"{{ nombre() }}\"\r\n [disabled]=\"isDisabled()\"\r\n [ngModel]=\"value\"\r\n [attr.directive]=\"nombreDirectiva()\"\r\n [pTooltip]=\"tooltipTexto()\"\r\n [tooltipPosition]=\"tooltipPosicion()\"\r\n (ngModelChange)=\"onChangeValue($event)\"\r\n (blur)=\"_onBlur()\"\r\n (focus)=\"_onFocus()\"\r\n attr.data-testid=\"{{ dataTestId()}}\"\r\n />\r\n}\r\n@if (control() != null) {\r\n <control-messages [control]=\"control()\" [field]=\"nombre()\" />\r\n}\r\n","import { Component, forwardRef, input } from \"@angular/core\";\r\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from \"@angular/forms\";\r\n\r\nimport { BitCustomComponent } from \"../bit-custom.component\";\r\n\r\n@Component({\r\n selector: \"bit-textarea\",\r\n templateUrl: \"bit-textarea.component.html\",\r\n providers: [{\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => BitTextAreaComponent),\r\n multi: true\r\n }],\r\n standalone: false\r\n})\r\nexport class BitTextAreaComponent extends BitCustomComponent implements ControlValueAccessor {\r\n readonly filas = input<number>(2);\r\n\r\n value: string;\r\n\r\n get value_lectura(): string {\r\n if (this.value == null) {\r\n this.log() && console.log(\"value lectura is null\");\r\n return \"\";\r\n } // si es null o undefined (es lo que evalúa el \"==null\")\r\n else {\r\n this.log() && console.log(\"value lectura: \" + this.value);\r\n return this.value;\r\n }\r\n }\r\n\r\n writeValue(v: string): void {\r\n this.log() && console.log(`writeValue forComponent ${this.nombre()} with value ${v}`);\r\n if (!v) {\r\n this.value = \"\";\r\n } else {\r\n this.value = v;\r\n }\r\n }\r\n\r\n onChangeValue(text) {\r\n this.log() && console.log(\"_onChangeValue forComponent: \" + this.nombre() + \" with value:\" + text);\r\n this.value = text;\r\n this.changeComponentValue(this.value);\r\n }\r\n\r\n}\r\n","@if (!hideLabel()) {\r\n <label for=\"{{ nombre() }}\">\r\n <ng-content /> @if (obligatorio) {\r\n <span class=\"obligatorio fa fa-asterisk\"></span>\r\n } \r\n @if (ayuda()) {\r\n <i class=\"btn-ayuda fa fa-question\" (click)=\"showAyuda()\"></i>\r\n }\r\n </label>\r\n}\r\n@if (readOnly()) {\r\n <pre class=\"lectura\" [id]=\"nombre()\">{{ value_lectura }}</pre>\r\n}\r\n@if (!readOnly()) {\r\n <textarea\r\n pInputTextarea\r\n id=\"{{ nombre() }}\"\r\n name=\"{{ nombre() }}\"\r\n autocomplete=\"{{ nombre() }}\"\r\n ariaLabel=\"{{ nombre() }}\"\r\n [placeholder]=\"placeholder()\"\r\n [disabled]=\"isDisabled()\"\r\n [ngModel]=\"value\"\r\n class=\"{{ estilo() }}\"\r\n [rows]=\"filas()\"\r\n (ngModelChange)=\"onChangeValue($event)\"\r\n attr.data-testid=\"{{ dataTestId()}}\"\r\n ></textarea>\r\n}\r\n@if (control() != null) {\r\n <control-messages [control]=\"control()\" [field]=\"nombre()\" />\r\n}\r\n","import { Directive, inject, input, output } from \"@angular/core\";\r\nimport moment from \"moment\";\r\n\r\nimport { TranslateService } from \"../../../services/translate.service\";\r\nimport { DateUtils } from \"../../../services\";\r\nimport { BitCustomComponent } from \"../bit-custom.component\";\r\n\r\n/** Clase general para componentes personalizados de tipo Fecha como puede ser BitDate, BitTime y BitDateTime */\r\n@Directive()\r\nexport abstract class BitCalendarComponent extends BitCustomComponent {\r\n // calendarios\r\n fechaMinima = input<Date>(undefined); // fecha mínima seleccionable\r\n fechaMaxima = input<Date>(undefined); // fecha máxima seleccionable\r\n calendarReadOnlyInput = input<boolean>(false); // desabilitar edicion por teclado\r\n format = input<string>();\r\n showButtonBar = input<boolean>(false); \r\n appendTo = input<string>(\"body\");\r\n onSelect = output<any>();\r\n\r\n protected dateUtils: DateUtils = inject(DateUtils);\r\n protected translateService: TranslateService = inject(TranslateService);\r\n\r\n locale: any;\r\n value: Date;\r\n visual_format: string; // formato visual que escribirá el usuario. Necesario para saber si lo que el usuario ha escrito es correcto\r\n\r\n _onTodayClick(event) {\r\n this.log() && console.log(\"_onTodayClick forComponent:\"+this.nombre())\r\n this.value = new Date();\r\n this.emitNewValue();\r\n }\r\n\r\n _onSelect(date: Date) {\r\n this.log() && console.log(\"onSelect forComponent:\"+this.nombre()+\" with date:\"+date);\r\n this.value = date;\r\n this.emitNewValue();\r\n this.onSelect.emit(date);\r\n }\r\n\r\n _onInput(data) {\r\n this.log() && console.log(\"_onInput forComponent:\"+this.nombre())\r\n // recuperamos el valor del campo\r\n let value = data.currentTarget.value;\r\n try {\r\n this.log() && console.log(\"value\", value);\r\n // si es una fecha, hora o fecha/hora\r\n if (this.isValueCorrect(value)) {\r\n // hacemos una transformación de string a date y de date a string porque en el caso de DateTime la representación visual e informática no tiene nada que ver\r\n let d = this.dateUtils.getStringAsDate(value, this.visual_format);\r\n this.log() && console.log(\"converted to date value\", d);\r\n value = this.getDateAsString(d);\r\n this.log() && console.log(\"converted to string value\", value);\r\n this.writeValue(value);\r\n this.emitNewValue();\r\n }\r\n } catch (error) {\r\n }\r\n }\r\n\r\n _onBlur(data) {\r\n this.log() && console.log(\"_onInput forComponent:\"+this.nombre())\r\n super._onBlur();\r\n // recuperamos el valor del campo\r\n let value = data.currentTarget.value;\r\n try {\r\n this.log() && console.log(\"onBlur value\", value);\r\n // Cuando abandonemos el campo si el valor es un truño, seteamos null en el formcontrol\r\n if (!this.isValueCorrect(value)) {\r\n this.writeValue(null);\r\n this.emitNewValue();\r\n }\r\n } catch (error) {\r\n }\r\n }\r\n\r\n _onClear() {\r\n this.log() && console.log(\"_onClear forComponent:\"+this.nombre())\r\n this.writeValue(null);\r\n this.emitNewValue();\r\n }\r\n\r\n emitNewValue() {\r\n let v: string = null;\r\n if (this.value) {\r\n try {\r\n this.log() && console.log(\"emitNewValue\", this.value);\r\n v = this.dateUtils.getDateAsString(this.value, this.getDateFormat());\r\n } catch (e) {\r\n }\r\n } else {\r\n this.log() && console.log(\"noValue to emit for component:\"+this.nombre());\r\n }\r\n this.changeComponentValue(v);\r\n }\r\n\r\n isValueCorrect(value): boolean {\r\n return moment(value, this.visual_format, true).isValid();\r\n }\r\n\r\n abstract getDateFormat(): string;\r\n\r\n abstract getDateAsString(d: Date): string;\r\n\r\n}\r\n","import { Component, computed, forwardRef, input, inject } from '@angular/core';\r\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from \"@angular/forms\";\r\n\r\nimport { DateUtils } from '../../../services/date-utils.service';\r\nimport { BitCalendarComponent } from '../calendar/bit-calendar.component';\r\n\r\n@Component({\r\n selector: \"bit-date\",\r\n templateUrl: \"bit-date.component.html\",\r\n providers: [{\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => BitDateComponent),\r\n multi: true\r\n }],\r\n standalone: false\r\n})\r\nexport class BitDateComponent extends BitCalendarComponent implements ControlValueAccessor {\r\n protected dateUtils = inject(DateUtils);\r\n\r\n readonly placeholder = input<string>(\"dd/mm/yyyy\");\r\n \r\n constructor() {\r\n super();\r\n this.visual_format = DateUtils.FORMAT_SHORT_DATE;\r\n }\r\n\r\n get value_lectura(): string {\r\n if (this.value == null) {\r\n this.log() && console.log(\"value lectura is null\");\r\n return \"\";\r\n }\r\n else {\r\n let v = this.dateUtils.getDateAsString(this.value, this.getDateFormat());\r\n this.log() && console.log(\"value lectura: \" + v);\r\n return v;\r\n }\r\n }\r\n\r\n writeValue(v: string): void {\r\n this.log() && console.log(`writeValue forComponent ${this.nombre()} with value ${v}`);\r\n if (!v || v === \"\") {\r\n this.value = null;\r\n } else {\r\n this.value = this.dateUtils.getStringAsDate(v, this.getDateFormat());\r\n this.log() && console.log(\"new value:\" + this.value);\r\n }\r\n }\r\n\r\n getDateAsString(d: Date): string {\r\n let value = this.dateUtils.getDateAsString(d, this.getDateFormat());\r\n return value;\r\n }\r\n\r\n getDateFormat(): string {\r\n return this.format() ? this.format() : DateUtils.FORMAT_SHORT_DATE;\r\n }\r\n}\r\n","@if (!hideLabel()) {\r\n <label for=\"{{ nombre() }}\">\r\n <ng-content /> @if (obligatorio) {\r\n <span class=\"obligatorio fa fa-asterisk\"></span>\r\n } \r\n @if (ayuda()) {\r\n <i class=\"btn-ayuda fa fa-question\" (click)=\"showAyuda()\"></i>\r\n }\r\n </label>\r\n}\r\n@if (readOnly()) {\r\n <p class=\"lectura\" [id]=\"nombre()\">{{ value_lectura }}</p>\r\n}\r\n@if (!readOnly()) {\r\n <p-datepicker class=\"FormControl\"\r\n id=\"{{ nombre() }}\"\r\n name=\"{{ nombre() }}\"\r\n ariaLabel=\"{{ nombre() }}\"\r\n autofocus=\"false\"\r\n [disabled]=\"isDisabled()\"\r\n [(ngModel)]=\"value\"\r\n dateFormat=\"dd/mm/yy\"\r\n placeholder=\"{{ placeholder() }}\"\r\n [showOtherMonths]=\"true\"\r\n [selectOtherMonths]=\"true\"\r\n [readonlyInput]=\"calendarReadOnlyInput()\"\r\n [minDate]=\"fechaMinima()\"\r\n [maxDate]=\"fechaMaxima()\"\r\n yearRange=\"2000:2050\"\r\n [firstDayOfWeek]=\"1\"\r\n showButtonBar={{showButtonBar()}}\r\n [appendTo]=\"appendTo()\"\r\n (onSelect)=\"_onSelect(value)\"\r\n (onClear)=\"_onClear()\"\r\n (onClearClick)=\"_onClear()\"\r\n (onFocus)=\"_onFocus()\"\r\n (onBlur)=\"_onBlur($event)\"\r\n (onInput)=\"_onInput($event)\"\r\n attr.data-testid=\"{{ dataTestId()}}\"\r\n />\r\n}\r\n@if (!readOnly()) {\r\n <span class=\"glyphicon glyphicon-calendar icono-input\"></span>\r\n}\r\n@if (control() != null) {\r\n <control-messages [control]=\"control()\" [field]=\"nombre()\" />\r\n}\r\n","import { Component, forwardRef, input, inject } from \"@angular/core\";\r\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from \"@angular/forms\";\r\n\r\nimport { DateUtils } from \"../../../services/date-utils.service\";\r\nimport { BitCalendarComponent } from \"../calendar/bit-calendar.component\";\r\n\r\n\r\n@Component({\r\n selector: \"bit-time\",\r\n templateUrl: \"bit-time.component.html\",\r\n providers: [{\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => BitTimeComponent),\r\n multi: true\r\n }],\r\n standalone: false\r\n})\r\nexport class BitTimeComponent extends BitCalendarComponent implements ControlValueAccessor {\r\n protected dateUtils = inject(DateUtils);\r\n\r\n readonly placeholder = input<string>(\"hh:mm\");\r\n\r\n constructor() {\r\n super();\r\n this.visual_format = DateUtils.FORMAT_SHORT_TIME;\r\n }\r\n\r\n get value_lectura(): string {\r\n if (this.value == null) {\r\n this.log() && console.log(\"value lectura is null\");\r\n return \"\";\r\n }\r\n else {\r\n let v = this.dateUtils.getTimeAsString(this.value, this.getDateFormat());\r\n this.log() && console.log(\"value lectura: \" + v);\r\n return v;\r\n }\r\n }\r\n\r\n writeValue(v: string): void {\r\n this.log() && console.log(`writeValue forComponent ${this.nombre()} with value ${v}`);\r\n if (!v) {\r\n this.value = null;\r\n } else {\r\n this.value = this.dateUtils.getStringAsDate(v, this.getDateFormat());\r\n this.log() && console.log(\"new value:\" + this.value);\r\n }\r\n }\r\n\r\n getDateAsString(d: Date): string {\r\n let value = this.dateUtils.getTimeAsString(d, this.getDateFormat());\r\n return value;\r\n }\r\n\r\n getDateFormat(): string {\r\n return this.format() ? this.format() : DateUtils.FORMAT_SHORT_TIME;\r\n }\r\n}\r\n","@if (!hideLabel()) {\r\n <label for=\"{{ nombre() }}\">\r\n <ng-content /> @if (obligatorio) {\r\n <span class=\"obligatorio fa fa-asterisk\"></span>\r\n } \r\n @if (ayuda()) {\r\n <i class=\"btn-ayuda fa fa-question\" (click)=\"showAyuda()\"></i>\r\n }\r\n </label>\r\n}\r\n@if (readOnly()) {\r\n <p class=\"lectura\" [id]=\"nombre()\">{{ value_lectura }}</p>\r\n}\r\n@if (!readOnly()) {\r\n <p-datepicker class=\"FormControl\"\r\n id=\"{{ nombre() }}\"\r\n name=\"{{ nombre() }}\"\r\n ariaLabel=\"{{ nombre() }}\"\r\n autofocus=\"false\"\r\n [disabled]=\"isDisabled()\"\r\n [(ngModel)]=\"value\"\r\n dateFormat=\"HH:mm\"\r\n [timeOnly]=\"true\"\r\n placeholder=\"{{ placeholder() }}\"\r\n [firstDayOfWeek]=\"1\"\r\n showButtonBar={{showButtonBar()}}\r\n (onTodayClick)=\"_onTodayClick($event)\"\r\n [appendTo]=\"appendTo()\"\r\n (onSelect)=\"_onSelect(value)\"\r\n (onClear)=\"_onClear()\"\r\n (onClearClick)=\"_onClear()\"\r\n (onFocus)=\"_onFocus()\"\r\n (onBlur)=\"_onBlur($event)\"\r\n (onInput)=\"_onInput($event)\"\r\n attr.data-testid=\"{{ dataTestId()}}\"\r\n />\r\n}\r\n@if (control() != null) {\r\n <control-messages [control]=\"control()\" [field]=\"nombre()\" />\r\n}\r\n","import { Component, forwardRef, input, inject } from '@angular/core';\r\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from \"@angular/forms\";\r\n\r\nimport { DateUtils } from '../../../services/date-utils.service';\r\nimport { BitCalendarComponent } from \"../calendar/bit-calendar.component\";\r\n\r\n@Component({\r\n selector: \"bit-datetime\",\r\n templateUrl: \"bit-datetime.component.html\",\r\n providers: [{\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => BitDateTimeComponent),\r\n multi: true\r\n }],\r\n standalone: false\r\n})\r\nexport class BitDateTimeComponent extends BitCalendarComponent implements ControlValueAccessor {\r\n protected dateUtils = inject(DateUtils);\r\n\r\n readonly placeholder = input<string>(\"dd/mm/yyyy hh:mm\");\r\n \r\n constructor() {\r\n super();\r\n this.visual_format = DateUtils.FORMAT_LONG_DATE;\r\n }\r\n\r\n get value_lectura(): string {\r\n if (this.value == null) {\r\n this.log() && console.log(\"value lectura is null\");\r\n return \"\";\r\n }\r\n else {\r\n let v = this.dateUtils.getDateTimeAsString(this.value, this.getDateFormat());\r\n this.log() && console.log(\"value lectura: \" + v);\r\n return v;\r\n }\r\n }\r\n\r\n writeValue(v: string): void {\r\n this.log() && console.log(`writeValue forComponent ${this.nombre()} with value ${v}`);\r\n if (!v) {\r\n this.value = null;\r\n } else {\r\n this.value = this.dateUtils.getStringAsDate(v, this.getDateFormat());\r\n this.log() && console.log(\"new value:\" + this.value);\r\n }\r\n }\r\n\r\n getDateAsString(d: Date): string {\r\n let value = this.dateUtils.getDateTimeAsString(d, this.getDateFormat());\r\n return value;\r\n }\r\n\r\n getDateFormat(): string {\r\n return this.format() ? this.format() : DateUtils.FORMAT_LONG_DATE;\r\n }\r\n\r\n}\r\n","@if (!hideLabel()) {\r\n <label for=\"{{ nombre() }}\">\r\n <ng-content /> @if (obligatorio) {\r\n <span class=\"obligatorio fa fa-asterisk\"></span>\r\n } \r\n @if (ayuda()) {\r\n <i class=\"btn-ayuda fa fa-question\" (click)=\"showAyuda()\"></i>\r\n }\r\n </label>\r\n}\r\n@if (readOnly()) {\r\n <p class=\"lectura\" [id]=\"nombre()\">{{ value_lectura }}</p>\r\n}\r\n@if (!readOnly()) {\r\n <p-datepicker class=\"FormControl\"\r\n id=\"{{ nombre() }}\"\r\n name=\"{{ nombre() }}\"\r\n ariaLabel=\"{{ nombre() }}\"\r\n autofocus=\"false\"\r\n [disabled]=\"isDisabled()\"\r\n [(ngModel)]=\"value\"\r\n dateFormat=\"dd/mm/yy\"\r\n placeholder=\"{{ placeholder() }}\" \r\n [minDate]=\"fechaMinima()\"\r\n [maxDate]=\"fechaMaxima()\"\r\n [showOtherMonths]=\"true\"\r\n [selectOtherMonths]=\"true\"\r\n yearRange=\"2000:2050\"\r\n [showTime]=\"true\"\r\n [firstDayOfWeek]=\"1\"\r\n showButtonBar={{showButtonBar()}}\r\n [appendTo]=\"appendTo()\"\r\n (onSelect)=\"_onSelect(value)\"\r\n (onClear)=\"_onClear()\"\r\n (onClearClick)=\"_onClear()\"\r\n (onFocus)=\"_onFocus()\"\r\n (onBlur)=\"_onBlur($event)\"\r\n (onInput)=\"_onInput($event)\"\r\n attr.data-testid=\"{{ dataTestId()}}\"\r\n />\r\n}\r\n@if (!readOnly()) {\r\n <span class=\"glyphicon glyphicon-calendar icono-input\"></span>\r\n}\r\n@if (control() != null) {\r\n <control-messages [control]=\"control()\" [field]=\"nombre()\" />\r\n}\r\n","import { Component, forwardRef } from \"@angular/core\";\r\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from \"@angular/forms\";\r\n\r\nimport { BitCustomComponent } from \"../bit-custom.component\";\r\n\r\n@Component({\r\n selector: \"bit-checkbox\",\r\n templateUrl: \"bit-checkbox.component.html\",\r\n providers: [{\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => BitCheckBoxComponent),\r\n multi: true\r\n }],\r\n standalone: false\r\n})\r\nexport class BitCheckBoxComponent extends BitCustomComponent implements ControlValueAccessor {\r\n value: Boolean;\r\n\r\n get value_lectura(): string {\r\n this.log() && console.log(\"value lectura: \" + this.value);\r\n return this.value ? \"Sí\" : \"No\";\r\n }\r\n\r\n writeValue(v: Boolean): void {\r\n this.log() && console.log(`writeValue forComponent ${this.nombre()} with value ${v}`);\r\n this.value = v;\r\n }\r\n\r\n onChangeValue(event) {\r\n this.value = event.checked;\r\n this.log() && console.log(\"_onChangeValue forComponent: \" + this.nombre() + \" with value:\" + this.value);\r\n this.changeComponentValue(this.value);\r\n }\r\n}\r\n","@if (!hideLabel()) {\r\n <label for=\"{{ nombre() }}\">\r\n <ng-content /> @if (obligatorio) {\r\n <span class=\"obligatorio fa fa-asterisk\"></span>\r\n } \r\n @if (ayuda()) {\r\n <i class=\"btn-ayuda fa fa-question\" (click)=\"showAyuda()\"></i>\r\n }\r\n </label>\r\n}\r\n@if (readOnly()) {\r\n <p class=\"lectura\" [id]=\"nombre()\">{{ value_lectura }}</p>\r\n}\r\n@if (!readOnly()) {\r\n <p-checkbox class=\"{{ estilo() }}\"\r\n binary=\"true\"\r\n [(ngModel)]=\"value\"\r\n name=\"{{ nombre() }}\"\r\n ariaLabel=\"{{ nombre() }}\"\r\n [disabled]=\"isDisabled()\"\r\n id=\"{{ nombre() }}\"\r\n (onChange)=\"onChangeValue($event)\"\r\n attr.data-testid=\"{{ dataTestId()}}\"\r\n />\r\n}\r\n\r\n@if (ayuda()) {\r\n <i (click)=\"showAyuda()\" class=\"btn-ayuda-checkbox fa fa-question\"></i>\r\n}\r\n\r\n@if (control() != null) {\r\n <control-messages [control]=\"control()\" [field]=\"nombre()\" />\r\n}\r\n","import { Component, forwardRef } from \"@angular/core\";\r\n\r\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from \"@angular/forms\";\r\nimport { BitCustomComponent } from \"../bit-custom.component\";\r\n\r\n@Component({\r\n selector: \"bit-switch\",\r\n templateUrl: \"bit-switch.component.html\",\r\n providers: [{\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => BitSwitchComponent),\r\n multi: true\r\n }],\r\n standalone: false\r\n})\r\nexport class BitSwitchComponent extends BitCustomComponent implements ControlValueAccessor {\r\n value: Boolean;\r\n\r\n get value_lectura(): string {\r\n this.log() && console.log(\"value lectura: \" + this.value);\r\n return this.value ? \"Sí\" : \"No\";\r\n }\r\n\r\n writeValue(v: Boolean): void {\r\n this.log() && console.log(`writeValue forComponent ${this.nombre()} with value ${v}`);\r\n this.value = v;\r\n }\r\n\r\n onChangeValue(event) {\r\n this.value = event.checked;\r\n this.log() && console.log(\"_onChangeValue forComponent: \" + this.nombre() + \" with value:\" + this.value);\r\n this.changeComponentValue(this.value);\r\n }\r\n\r\n\r\n}\r\n","@if (!hideLabel()) {\r\n <label for=\"{{ nombre() }}\">\r\n <ng-content /> @if (obligatorio) {\r\n <span class=\"obligatorio fa fa-asterisk\"></span>\r\n } \r\n @if (ayuda()) {\r\n <i class=\"btn-ayuda fa fa-question\" (click)=\"showAyuda()\"></i>\r\n }\r\n </label>\r\n}\r\n@if (readOnly()) {\r\n <p class=\"lectura\" [id]=\"nombre()\">{{ value_lectura }}</p>\r\n}\r\n@if (!readOnly()) {\r\n <p-toggleswitch onLabel=\"Sí\"\r\n offLabel=\"No\"\r\n binary=\"true\"\r\n [(ngModel)]=\"value\"\r\n name=\"{{ nombre() }}\"\r\n ariaLabel=\"{{ nombre() }}\"\r\n [disabled]=\"isDisabled()\"\r\n id=\"{{ nombre() }}\"\r\n (onChange)=\"onChangeValue($event)\"\r\n attr.data-testid=\"{{ dataTestId()}}\"\r\n />\r\n}\r\n@if (control() != null) {\r\n <control-messages [control]=\"control()\" [field]=\"nombre()\" />\r\n}\r\n","import { AfterViewInit, Component, forwardRef, TemplateRef } from \"@angular/core\";\r\nimport { input, computed, output, contentChild } from \"@angular/core\";\r\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from \"@angular/forms\";\r\nimport { AutoCompleteSelectEvent } from \"primeng/autocomplete\";\r\n\r\nimport { BitCustomComponent } from \"../bit-custom.component\";\r\n\r\n@Component({\r\n selector: \"bit-autocomplete\",\r\n templateUrl: \"bit-autocomplete.component.html\",\r\n providers: [\r\n {\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => BitAutoCompleteComponent),\r\n multi: true\r\n }\r\n ],\r\n standalone: false\r\n})\r\nexport class BitAutoCompleteComponent extends BitCustomComponent implements ControlValueAccessor, AfterViewInit {\r\n readonly suggestions = input<any[]>([]);\r\n readonly suggestionField = input<string>();\r\n readonly multiple = input<boolean>(false);\r\n readonly inputStyleClass = input<string>();\r\n readonly id = input<string>(\"id\");\r\n readonly displayValue = input<string>();\r\n readonly customTemplate = input<boolean>(false); // si se usa un template personalizado para mostrar los items\r\n readonly completeMethod = output<string>();\r\n readonly onSelect = output<string>();\r\n readonly onClear = output<any>();\r\n\r\n readonly itemTemplate = contentChild(\"itemTemplate\", { read: TemplateRef });\r\n\r\n suggestions_mapped = computed(() => {\r\n let suggestions = this.suggestions();\r\n if (suggestions) {\r\n let newList = suggestions.map((obj: { [x: string]: any }) => (obj instanceof Object && !this.customTemplate() ? obj[this.suggestionField()] : obj));\r\n this.log() && console.log(\"suggestions mapped for component: \" + this.nombre(), newList);\r\n return newList;\r\n }\r\n });\r\n\r\n value: string;\r\n\r\n ngAfterViewInit() {\r\n // Control de errores:\r\n // 1. Si se quiere usar una template personalizada, se debe especificar el input customTemplate.\r\n // 2. Si se usa customTemplate, se debe especificar el input suggestionField para poder mapear el objeto en el campo de texto.\r\n // 3. Si se usa itemTemplate, se debe especificar customTemplate a true. (warning)\r\n const customTemplate = this.customTemplate();\r\n const itemTemplate = this.itemTemplate();\r\n if (customTemplate && !itemTemplate) {\r\n throw new Error(\r\n \"BitAutoCompleteComponent: Si se especifica el input customTemplate se debe proporcionar una template a través de '<ng-template #itemTemplate let-item>'\"\r\n );\r\n } else if (customTemplate && !this.suggestionField()) {\r\n throw new Error(\r\n \"BitAutoCompleteComponent: Si se especifica el input customTemplate, se debe especificar el input suggestionField para poder mapear el objeto en el campo de texto cuando elijamos uno de la lista.\"\r\n );\r\n } else if (!customTemplate && itemTemplate) {\r\n this.log() &&\r\n console.warn(\r\n \"BitAutoCompleteComponent: Se ha proporcionado una template personalizada a través de 'itemTemplate', pero se está pasando de ella. Para usarla, debe establecer customTemplate a true.\"\r\n );\r\n }\r\n }\r\n\r\n // ngOnChanges(changes: { [propKey: string]: SimpleChange }) {\r\n // for (let propName in changes) {\r\n // if (propName === \"suggestions\") {\r\n // let changedProp = changes[propName];\r\n // let newList = changedProp.currentValue;\r\n // // El mapeo tiene que ser con todo el objeto, no solo con el campo suggestionField, porque si se usa un template personalizado\r\n // // se necesita el objeto completo para poder pasarlos a la template y que se pinte correctamente.\r\n // this.suggestions_mapped = newList && newList.map((obj: { [x: string]: any }) => ((obj instanceof Object && !this.customTemplate()) ? obj[this.suggestionField()] : obj));\r\n // //console.log(\"newList\", this.suggestions_mapped);\r\n // }\r\n // }\r\n // }\r\n\r\n search(event: any) {\r\n this.log() && console.log(\"search for component: \" + this.nombre(), event);\r\n this.completeMethod.emit(event);\r\n }\r\n\r\n get value_lectura(): string {\r\n if (this.value == null) {\r\n this.log() && console.log(\"value lectura is null\");\r\n return \"\";\r\n } // si es null o undefined (es lo que evalúa el \"==null\")\r\n else {\r\n this.log() && console.log(\"value lectura: \" + this.value);\r\n return this.value;\r\n }\r\n }\r\n\r\n writeValue(v: number | string): void {\r\n // El 0 es un valor válido\r\n this.log() && console.log(`writeValue forComponent ${this.nombre()} with value ${v}`);\r\n if (v === null || v === undefined || v === \"\") {\r\n this.value = \"\";\r\n } else {\r\n if (typeof v === \"string\") {\r\n this.value = v.toString();\r\n } else {\r\n this.value = this.displayValue();\r\n }\r\n }\r\n }\r\n\r\n changeComponentValue(value: any) {\r\n this.log() && console.log(`changeComponentValue forComponent ${this.nombre()} with value ${value}`);\r\n let valueConverted: any;\r\n if (this.suggestionField()) {\r\n // si estamos especificando que lo que el autocompletar hace es operar sobre una lista de objetos\r\n // recuperamos el objeto dentro de la lista con el valor del campo suggestionField igual al seleccionado\r\n let selectedObject = this._findObject(value);\r\n this.log() && console.log(\"selectedObject\", selectedObject);\r\n // el valor reconvertido será el ID del objeto que es lo que vamos a meter en el FormControl\r\n valueConverted = selectedObject && selectedObject[this.id()];\r\n this.log() && console.log(\"valueConverted\", valueConverted);\r\n // emitimos que ha cambiado el objeto\r\n this.onChange.emit(selectedObject);\r\n } else {\r\n // si no es una lista de objetos el comportamiento es el de siempre\r\n valueConverted = value;\r\n this.log() && console.log(\"valueConverted\", valueConverted);\r\n this.onChange.emit(valueConverted);\r\n }\r\n this._onChange(valueConverted);\r\n }\r\n\r\n _onSelect(event: AutoCompleteSelectEvent) {\r\n this.value = event.value;\r\n this.log() && console.log(\"_onSelect forComponent: \" + this.nombre() + \" with value:\" + this.value);\r\n this.changeComponentValue(this.value);\r\n if (this.suggestionField()) {\r\n let selectedObject = this._findObject(event.value);\r\n this.log() && console.log(\"selectedObject: \" + selectedObject);\r\n this.onSelect.emit(selectedObject);\r\n } else {\r\n this.onSelect.emit(this.value);\r\n }\r\n }\r\n\r\n _onClear() {\r\n this.value = \"\";\r\n this.log() && console.log(\"_onClear forComponent: \" + this.nombre());\r\n this.changeComponentValue(this.value);\r\n this.onClear.emit({});\r\n }\r\n\r\n _findObject(value: any) {\r\n this.log() && console.log(\"_findObject forComponent: \" + this.nombre() + \" with value\", value);\r\n // Si se usa un template personalizado, devolvemos el valor directamente, porque ya estará allí, no hace falta buscarlo en la lista de sugerencias\r\n if (this.customTemplate()) {\r\n return this.value;\r\n } else {\r\n if (value) {\r\n let v = this.suggestions().find((obj) => obj[this.suggestionField()] === value);\r\n this.log() && console.log(\"_findObject forComponent: \" + this.nombre() + \" find value\", v);\r\n return v;\r\n }\r\n }\r\n }\r\n}\r\n","@if (!hideLabel()) {\r\n<label for=\"{{ nombre() }}\">\r\n <ng-content /> @if (obligatorio) {\r\n <span class=\"obligatorio fa fa-asterisk\"></span>\r\n } @if (ayuda()) {\r\n <i class=\"btn-ayuda fa fa-question\" (click)=\"showAyuda()\"></i>\r\n }\r\n</label>\r\n} @if (readOnly()) {\r\n<p class=\"lectura\" [id]=\"nombre()\">{{ value_lectura }}</p>\r\n} @if (!readOnly()) {\r\n<!-- Si usamos un template personalizado, hay que indicar el optionLabel para que sepa cuál es el campo a mostrar al seleccionar un elemento -->\r\n<p-autoComplete\r\n fluid\r\n [(ngModel)]=\"value\"\r\n id=\"{{ nombre() }}\"\r\n name=\"{{ nombre() }}\"\r\n ariaLabel=\"{{ nombre() }}\"\r\n [disabled]=\"isDisabled()\"\r\n [placeholder]=\"placeholder()\"\r\n [delay]=\"400\"\r\n [suggestions]=\"suggestions_mapped()\"\r\n [multiple]=\"multiple()\"\r\n [inputStyleClass]=\"inputStyleClass()\"\r\n optionLabel=\"{{ customTemplate() ? this.suggestionField() : '' }}\"\r\n appendTo=\"body\"\r\n (completeMethod)=\"search($event)\"\r\n (onSelect)=\"_onSelect($event)\"\r\n (onClear)=\"_onClear()\"\r\n (onBlur)=\"_onBlur()\"\r\n (onFocus)=\"_onFocus()\"\r\n attr.data-testid=\"{{ dataTestId() }}\"\r\n>\r\n @if (customTemplate() && itemTemplate()) {\r\n <ng-template pTemplate=\"item\" let-item>\r\n <ng-container *ngTemplateOutlet=\"itemTemplate(); context: { $implicit: item }\" />\r\n </ng-template>\r\n }\r\n</p-autoComplete>\r\n} @if (control() != null) {\r\n<control-messages [control]=\"control()\" [field]=\"nombre()\" />\r\n}\r\n","import { computed, Directive, input } from \"@angular/core\";\r\nimport { ActivatedRoute } from \"@angular/router\";\r\n\r\nimport { TranslateService } from \"../../../services/translate.service\";\r\nimport { BitCustomComponent } from \"../bit-custom.component\";\r\nimport { toSignal } from \"@angular/core/rxjs-interop\";\r\n\r\n/**\r\n * Clase general común a ambos bit-dropdown (El normal y el múltiple).\r\n * Actualmente solo extendida por el dropdown normal, pendiente el múltiple que aún usa la interfaz ControlValueAccessor.\r\n *\r\n * @input data: array de objetos a mostrar en el select. Puede ser null, en cuyo caso domain no puede ser null\r\n * @input domain: nombre del dominio que contiene los datos y que nos resolverá la página cuando cargue el componente. Puede ser null, en cuyo caso data no puede ser null\r\n * @input id: identificador del componente select\r\n * @input filter: true indicará que podemos buscar dentro del select, false que no.\r\n **/\r\n@Directive()\r\nexport abstract class BitDropDownGeneralComponent extends BitCustomComponent {\r\n readonly hideLabel = input<boolean>(false); // forzar no reservar espacio para el nombre del campo\r\n readonly data = input<any[]>(); // lista de valores estáticos con lo que inicializamos el select\r\n readonly id = input<any>();\r\n readonly excludedValues = input<any[]>();\r\n readonly emptyText = input<string>(\"\"); //valor por defecto seleccionable como primer elemento\r\n readonly includeEmpty = input<boolean>(true);\r\n readonly valueAs = input<string>();\r\n readonly appendTo = input<string>(\"body\");\r\n readonly group = input<boolean>(false);\r\n readonly atributoLabel = input(\"label\"); // El atributo de los objetos de la lista que corresponde al label\r\n readonly atributoValue = input(\"value\"); // El atributo de los objetos de la lista que corresponde al valor\r\n readonly atributoDisabled = input(\"inactivo\"); // El atributo de los objetos de la lista que indica si un valor está deshabilitado\r\n\r\n listaOpciones = computed(() => {\r\n let list = this.data() ? this.data().slice() : [];\r\n this.log() && console.log(\"Lista de opciones forComponent:\" + this.nombre(), list);\r\n return list;\r\n });\r\n\r\n listaOpcionesVisible = computed(() => {\r\n let opciones = [];\r\n if (this.listaOpciones()) {\r\n opciones = Object.assign([], this.listaOpciones());\r\n // repasamos si hay opciones a excluir que debamos eliminar\r\n if (this.excludedValues()) {\r\n opciones = opciones.filter((op) => this.excludedValues().indexOf(op.value) < 0);\r\n this.log() && console.log(\"Lista de opciones forComponent:\" + this.nombre() + \" después de excludeValues\", opciones);\r\n }\r\n }\r\n if (this.includeEmpty()) {\r\n let newOption = { value: null, label: this.emptyText() };\r\n newOption[this.atributoValue()] = null;\r\n newOption[this.atributoLabel()] = this.emptyText();\r\n opciones.splice(0, 0, newOption);\r\n this.log() && console.log(\"Lista de opciones forComponent:\" + this.nombre() + \" después de includeEmpty\", opciones);\r\n } \r\n this.log() && console.log(\"Lista de opciones visibles forComponent:\" + this.nombre() + \" después de excludeValues\", opciones);\r\n return opciones;\r\n });\r\n \r\n value: any;\r\n\r\n constructor(protected router: ActivatedRoute, protected translateService: TranslateService) {\r\n super();\r\n }\r\n\r\n}\r\n","import { Component, forwardRef, OnChanges, SimpleChange, input, effect, inject } from \"@angular/core\";\r\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from \"@angular/forms\";\r\nimport { ActivatedRoute } from \"@angular/router\";\r\n\r\nimport { TranslateService } from \"../../../services\";\r\nimport { BitDropDownGeneralComponent } from \"./bit-dropdown-general.component\";\r\n\r\n/**\r\n * Clase que utiliza un custom componente para select de elementos\r\n * <bit-dropdown [domain]=\"'DOMAIN_TIPO_LOG'\" id=\"tipolog\" [control]=\"formControl\"> Tipus d'operació</bit-dropdown>\r\n *\r\n * @input data: array de objetos a mostrar en el select. Puede ser null, en cuyo caso domain no puede ser null\r\n * @input domain: nombre del dominio que contiene los datos y que nos resolverá la página cuando cargue el componente. Puede ser null, en cuyo caso data no puede ser null\r\n * @input id: identificador del componente select\r\n * @input filter: true indicará que podemos buscar dentro del select, false que no.\r\n **/\r\n@Component({\r\n selector: \"bit-dropdown\",\r\n templateUrl: \"bit-dropdown.component.html\",\r\n providers: [\r\n {\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => BitDropDownComponent),\r\n multi: true\r\n }\r\n ],\r\n standalone: false\r\n})\r\nexport class BitDropDownComponent extends BitDropDownGeneralComponent implements ControlValueAccessor {\r\n protected router: ActivatedRoute;\r\n protected translateService: TranslateService;\r\n\r\n readonly filter = input<boolean>(false);\r\n\r\n constructor() {\r\n const router = inject(ActivatedRoute);\r\n const translateService = inject(TranslateService);\r\n\r\n super(router, translateService);\r\n \r\n this.router = router;\r\n this.translateService = translateService;\r\n }\r\n \r\n get value_lectura(): string {\r\n let dom = this.listaOpciones() && this.listaOpciones().find((d) => d[this.atributoValue()] == this.value);\r\n let v = dom ? dom[this.atributoLabel()] : this.value;\r\n this.log() && console.log(\"value lectura: \" + v);\r\n return v;\r\n }\r\n\r\n writeValue(v: any): void {\r\n this.log() && console.log(`writeValue forComponent ${this.nombre()} with value ${v}`);\r\n if (this.valueAs() == \"string\") {\r\n // convertimos el number a string porque nos han dicho que el ID del select es string\r\n this.value = v != null ? \"\" + v : v;\r\n } else {\r\n this.value = v;\r\n }\r\n }\r\n\r\n _onChangeValue(event) {\r\n this.value = event.value;\r\n // convertimos el string seleccionado del select a number\r\n if (this.valueAs() == \"string\") {\r\n this.log() && console.log(`_onChangeValue forComponent ${this.nombre()} value as string`);\r\n this.changeComponentValue(this.value != null ? +event.value : null);\r\n } else {\r\n this.changeComponentValue(event.value);\r\n }\r\n }\r\n\r\n _onClear() {\r\n this.value = null;\r\n this.changeComponentValue(this.value);\r\n }\r\n}\r\n","@if (!hideLabel()) {\r\n <label for=\"{{ nombre() }}\">\r\n <ng-content /> @if (obligatorio) {\r\n <span class=\"obligatorio fa fa-asterisk\"></span>\r\n } \r\n @if (ayuda()) {\r\n <i (click)=\"showAyuda()\" class=\"btn-ayuda fa fa-question\"></i>\r\n }\r\n </label>\r\n}\r\n@if (readOnly()) {\r\n <p class=\"lectura\" [id]=\"nombre()\">{{ value_lectura }}</p>\r\n}\r\n@if (!readOnly()) {\r\n <p-select\r\n id=\"{{ nombre() }}\"\r\n [(ngModel)]=\"value\"\r\n ariaLabel=\"{{ nombre() }}\"\r\n [disabled]=\"isDisabled()\"\r\n [options]=\"listaOpcionesVisible()\"\r\n [filter]=\"filter()\"\r\n [group]=\"group()\"\r\n [optionLabel]=\"atributoLabel()\"\r\n [optionValue]=\"atributoValue()\"\r\n [optionDisabled]=\"atributoDisabled()\"\r\n [appendTo]=\"appendTo()\"\r\n (onChange)=\"_onChangeValue($event)\"\r\n (onClear)=\"_onClear()\"\r\n (onBlur)=\"_onBlur()\"\r\n (onFocus)=\"_onFocus()\"\r\n attr.data-testid=\"{{ dataTestId()}}\"\r\n >\r\n <ng-template let-item pTemplate=\"item\">\r\n <span [ngClass]=\"{ 'opcion-desactivada': item[atributoDisabled()] }\">{{ item[atributoLabel()] }}</span>\r\n </ng-template>\r\n </p-select>\r\n @if (control() != null) {\r\n <control-messages [control]=\"control()\" [field]=\"id()\" />\r\n }\r\n}\r\n","import { Component, forwardRef, input, inject } from \"@angular/core\";\r\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from \"@angular/forms\";\r\nimport { ActivatedRoute } from \"@angular/router\";\r\n\r\nimport { TranslateService } from \"../../../services/translate.service\";\r\nimport { BitDropDownGeneralComponent } from \"./bit-dropdown-general.component\";\r\n\r\n/**\r\n * Clase que utiliza un custom componente para select múltiple de elementos\r\n * <bit-dropdown-multiple id=\"tipolog\" [formControl]=\"formControl\"\"> Tipus d'operació</bit-dropdown-multiple>\r\n **/\r\n\r\n@Component({\r\n selector: \"bit-dropdown-multiple\",\r\n templateUrl: \"bit-dropdown-multiple.component.html\",\r\n providers: [\r\n {\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => BitDropDownMultipleComponent),\r\n multi: true\r\n }\r\n ],\r\n styleUrls: [\"bit-dropdown-multiple.component.css\"],\r\n standalone: false\r\n})\r\nexport class BitDropDownMultipleComponent extends BitDropDownGeneralComponent implements ControlValueAccessor {\r\n protected router: ActivatedRoute;\r\n protected translateService: TranslateService;\r\n\r\n readonly maxSelectedLabels = input<number>(3);\r\n readonly showSeparateSelectedLabels = input<boolean>(false); // indica si se muestran los elementos seleccionados en una columna separada\r\n readonly title = input<string>(undefined); //título que aparece en el link para eliminar un elemento una vez seleccionado\r\n readonly filter = input<boolean>(true);\r\n\r\n // Si se pueden seleccionar muchos elementos, que el label de los elementos seleccionados no\r\n // aparezca dentro del select, y hacerlo como una lista fuera del select.\r\n value: any[];\r\n\r\n constructor() {\r\n const router = inject(ActivatedRoute);\r\n const translateService = inject(TranslateService);\r\n\r\n super(router, translateService);\r\n\r\n this.router = router;\r\n this.translateService = translateService;\r\n }\r\n\r\n labelSelectedItem(id): string {\r\n let label: string = \"\";\r\n if (this.listaOpciones()) {\r\n let selected = this.listaOpciones().find((c) => c[this.atributoValue()] == id);\r\n if (selected) {\r\n label = selected[this.atributoLabel()];\r\n this.log() && console.log(`labelSelectedItem forComponent ${this.nombre()} selected: ${label}`);\r\n }\r\n }\r\n return label;\r\n }\r\n\r\n deleteSelectedItem(event, item) {\r\n this.log() && console.log(\"deleteSelectedItem forComponent:\" + this.nombre(), item);\r\n event.preventDefault();\r\n let index = this.value.indexOf(item);\r\n var currentValue = this.value;\r\n this.log() && console.log(\"currentValue: \" + currentValue);\r\n currentValue.splice(index, 1);\r\n this.value = currentValue.slice(0);\r\n this.log() && console.log(\"value: \" + currentValue);\r\n this.emitValue();\r\n }\r\n\r\n get value_lectura(): string {\r\n let vals = this.control().value;\r\n if (!!vals) {\r\n let value: any[] = [];\r\n for (let val of vals) {\r\n let opcion = this.listaOpciones().find((d) => d[this.atributoValue()] == val);\r\n if (opcion) {\r\n value.push(opcion[this.atributoLabel()]);\r\n } else {\r\n value.push(val);\r\n }\r\n }\r\n let v = value.join(\", \");\r\n this.log() && console.log(\"value lectura: \" + v);\r\n return v;\r\n }\r\n this.log() && console.log(\"value lectura is blank\");\r\n return \"\";\r\n }\r\n\r\n writeValue(v: any[]): void {\r\n this.log() && console.log(`writeValue forComponent ${this.nombre()} with value ${v}`);\r\n this.value = v;\r\n if (this.valueAs() == \"string\") {\r\n // convertimos el number a string porque nos han dicho que el ID del select es string\r\n if (v != null) {\r\n this.value = [];\r\n v.forEach((item) => this.value.push(\"\" + item));\r\n this.log() && console.log(\"currentValues: \", this.value);\r\n }\r\n }\r\n }\r\n\r\n _onChangeValue(event) {\r\n this.value = event.value;\r\n this.log() && console.log(\"_onChangeValue forComponent:\" + this.nombre() + \" with values: \" + this.value);\r\n // convertimos el string selecionado del select a number\r\n let v = this.value;\r\n if (this.valueAs() == \"string\") {\r\n v = [];\r\n this.value.forEach((item) => v.push(+item));\r\n this.log() && console.log(\"value as string: \", this.value);\r\n }\r\n this.emitValue();\r\n }\r\n\r\n _onClear() {\r\n this.log() && console.log(\"_onClear forComponent:\" + this.nombre());\r\n this.value = null;\r\n this.emitValue();\r\n }\r\n\r\n emitValue() {\r\n this.changeComponentValue(this.value);\r\n }\r\n}\r\n","@if (!hideLabel()) {\r\n <label for=\"{{ nombre() }}\"><ng-content /> @if (obligatorio) {\r\n <span class=\"obligatorio fa fa-asterisk\"></span>\r\n } \r\n @if (ayuda()) {\r\n <i (click)=\"showAyuda()\" class=\"btn-ayuda fa fa-question\"></i>\r\n }\r\n </label>\r\n}\r\n@if (readOnly() && !showSeparateSelectedLabels()) {\r\n <p class=\"lectura\">{{ value_lectura }}</p>\r\n}\r\n@if (!readOnly()) {\r\n <p-multiSelect id=\"{{ id() }}\"\r\n [(ngModel)]=\"value\"\r\n [placeholder]=\"placeholder()\"\r\n [filter]=\"filter()\"\r\n ariaLabel=\"{{ nombre() }}\"\r\n [options]=\"listaOpciones()\"\r\n [disabled]=\"isDisabled()\"\r\n [optionLabel]=\"atributoLabel()\"\r\n [optionValue]=\"atributoValue()\"\r\n [maxSelectedLabels]=\"maxSelectedLabels()\"\r\n [appendTo]=\"appendTo()\"\r\n selectedItemsLabel=\"{0} elements seleccionats\"\r\n (onChange)=\"_onChangeValue($event)\"\r\n (onClear)=\"_onClear()\"\r\n (onBlur)=\"_onBlur()\"\r\n (onFocus)=\"_onFocus()\"\r\n attr.data-testid=\"{{ dataTestId()}}\"\r\n />\r\n @if (control() != null) {\r\n <control-messages [control]=\"control()\" [field]=\"id()\" />\r\n }\r\n @if (showSeparateSelectedLabels()) {\r\n <div>\r\n <label for=\"{{ nombre() }}\"> </label>\r\n <div class=\"multiselect-labels\">\r\n @for (item of value; track item) {\r\n <div class=\"label label-primary multiselect-labels-lg\">\r\n <span>{{ labelSelectedItem(item) }}</span>\r\n @if (!readOnly()) {\r\n \r\n <a (click)=\"deleteSelectedItem($event, item)\" title=\"{{ title() }}\"><i class=\"fa fa-times\"></i></a>\r\n }\r\n </div>\r\n }\r\n </div>\r\n </div>\r\n }\r\n}","export class ConfigurationEditor {\r\n fontFormat: boolean = true;\r\n fontSize: boolean = true;\r\n bullet: boolean = true;\r\n link: boolean = true;\r\n\r\n constructor() {}\r\n\r\n public static newObject(): ConfigurationEditor {\r\n return new ConfigurationEditor();\r\n }\r\n\r\n public static newCustomObject(object: any): ConfigurationEditor {\r\n let editor = new ConfigurationEditor();\r\n editor.fontFormat = object[\"fontFormat\"];\r\n editor.fontSize = object[\"fontSize\"];\r\n editor.bullet = object[\"bullet\"];\r\n editor.link = object[\"link\"];\r\n\r\n return editor;\r\n }\r\n}\r\n","import { Component, forwardRef, input, output } from \"@angular/core\";\r\n\r\n\r\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from \"@angular/forms\";\r\nimport { ConfigurationEditor } from \"../../../data/configuration-editor\";\r\nimport { BitCustomComponent } from \"../bit-custom.component\";\r\n\r\n/**\r\n * Clase que utiliza un custom componente para campo editor de HTML\r\n * Utiliza la interfaz ControlValueAccessor\r\n * <bit-editor [(ngModel)]=\"object.descripcion\" [ngModelOptions]=\"{standalone: true}\" height=\"250\"> Descripció</bit-editor>\r\n * Para utilizar, importar tambien js y css.\r\n *\r\n * https://www.primefaces.org/primeng/#/editor\r\n * https://quilljs.com/docs/modules/toolbar/\r\n *\r\n **/\r\n\r\n@Component({\r\n selector: \"bit-editor\",\r\n templateUrl: \"bit-editor.component.html\",\r\n providers: [{\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => BitEditorComponent),\r\n multi: true\r\n }],\r\n standalone: false\r\n})\r\nexport class BitEditorComponent extends BitCustomComponent implements ControlValueAccessor {\r\n readonly tipo = input<string>(\"default\");\r\n // si es \"custom\", se utiliza el objeto de configuracion: configuration.\r\n // si es \"default\", no se utiliza ninguna configuracion (se muestran todos los controles)\r\n readonly configuration = input<ConfigurationEditor>(BitEditorComponent.globalConfiguration);\r\n readonly height = input<number>(100);\r\n readonly onTextChange = output<any>();\r\n\r\n value: string;\r\n\r\n // es posible tener configuraciones globales en todos los bit-editor de un proyecto\r\n public static globalConfiguration = ConfigurationEditor.newObject();\r\n\r\n get value_lectura(): string {\r\n if (this.value == null) {\r\n this.log() && console.log(\"value lectura is null\");\r\n return \"\";\r\n } // si es null o undefined (es lo que evalúa el \"==null\")\r\n else {\r\n this.log() && console.log(\"value lectura: \" + this.value);\r\n return this.value;\r\n }\r\n }\r\n\r\n writeValue(v: string): void {\r\n this.log() && console.log(`writeValue forComponent ${this.nombre()} with value ${v}`);\r\n if (!v) {\r\n this.value = \"\";\r\n } else {\r\n this.value = v;\r\n }\r\n }\r\n\r\n onChangeValue(text) {\r\n this.value = text;\r\n this.log() && console.log(\"_onSelect forComponent: \" + this.nombre() + \" with value:\" + this.value);\r\n this.changeComponentValue(this.value);\r\n }\r\n\r\n onInit(quill) {\r\n /*var toolbar = quill.editor.getModule('toolbar');\r\n toolbar.addHandler('link', function(value) {\r\n if (value) {\r\n var href = prompt('Introduzca la URL');\r\n this.quill.format('link', href);\r\n } else {\r\n this.quill.format('link', false);\r\n }\r\n });*/\r\n }\r\n\r\n _onTextChange(event) {\r\n this.log() && console.log(\"_onTextChange forComponent: \" + this.nombre() + \" with event:\", event);\r\n this.onTextChange.emit(event);\r\n }\r\n\r\n get configuracion(): ConfigurationEditor {\r\n const configuration = this.configuration();\r\n return configuration ? configuration : BitEditorComponent.globalConfiguration;\r\n }\r\n}\r\n","@if (!hideLabel()) {\r\n <label for=\"{{ nombre() }}\">\r\n <ng-content /> @if (obligatorio) {\r\n <span class=\"obligatorio fa fa-asterisk\"></span>\r\n } \r\n @if (ayuda()) {\r\n <i class=\"btn-ayuda fa fa-question\" (click)=\"showAyuda()\"></i>\r\n }\r\n </label>\r\n}\r\n@if (readOnly()) {\r\n <p class=\"lectura\">\r\n {{ value_lectura && value_lectura != \"\" ? value_lectura : \" \" }}\r\n </p>\r\n}\r\n@if (!readOnly() && tipo() == 'custom') {\r\n <p-editor\r\n id=\"{{ nombre() }}\"\r\n name=\"{{ nombre() }}\"\r\n [ngModel]=\"value\"\r\n styleClass=\"editor\"\r\n [disabled]=\"isDisabled()\"\r\n [placeholder]=\"placeholder()\"\r\n [style]=\"{ height: height() + 'px' }\"\r\n (onInit)=\"onInit($event)\"\r\n (ngModelChange)=\"onChangeValue($event)\"\r\n (onTextChange)=\"_onTextChange($event)\"\r\n attr.data-testid=\"{{ dataTestId()}}\"\r\n >\r\n <p-header>\r\n @if (configuracion.fontSize) {\r\n <span class=\"ql-formats\">\r\n <select class=\"ql-size\">\r\n <option value=\"small\">{{ \"bitnglibrary.form.biteditor.small\" | transloco }}</option>\r\n <!-- Note a missing, thus falsy value, is used to reset to default -->\r\n <option selected>{{ \"bitnglibrary.form.biteditor.normal\" | transloco }}</option>\r\n <option value=\"large\">{{ \"bitnglibrary.form.biteditor.large\" | transloco }}</option>\r\n <option value=\"huge\">{{ \"bitnglibrary.form.biteditor.huge\" | transloco }}</option>\r\n </select>\r\n </span>\r\n }\r\n @if (configuracion.fontFormat) {\r\n <span class=\"ql-formats\">\r\n <button class=\"ql-bold\" aria-label=\"Bold\"></button>\r\n <button class=\"ql-italic\" aria-label=\"Italic\"></button>\r\n <button class=\"ql-underline\" aria-label=\"Underline\"></button>\r\n <button class=\"ql-strike\" aria-label=\"Strikethrough\"></button>\r\n </span>\r\n }\r\n @if (configuracion.bullet) {\r\n <span class=\"ql-formats\">\r\n <button class=\"ql-list\" aria-label=\"Insert Ordered List\" value=\"ordered\" type=\"button\"></button>\r\n <button class=\"ql-list\" aria-label=\"Insert Bullet List\" value=\"bullet\" type=\"button\"></button>\r\n </span>\r\n }\r\n @if (configuracion.link) {\r\n <span class=\"ql-formats\">\r\n <button class=\"ql-link\" aria-label=\"Insert Link\" type=\"button\"></button>\r\n </span>\r\n }\r\n </p-header>\r\n </p-editor>\r\n}\r\n@if (!readOnly() && (!tipo() || tipo() == 'default')) {\r\n <p-editor id=\"{{ nombre() }}\"\r\n name=\"{{ nombre() }}\"\r\n [ngModel]=\"value\"\r\n styleClass=\"editor\"\r\n [placeholder]=\"placeholder()\"\r\n [placeholder]=\"placeholder()\"\r\n [style]=\"{ height: height() + 'px' }\"\r\n (ngModelChange)=\"onChangeValue($event)\"\r\n attr.data-testid=\"{{ dataTestId()}}\"\r\n />\r\n}\r\n@if (control() != null) {\r\n <control-messages [control]=\"control()\" [field]=\"nombre()\" />\r\n}\r\n","import { Component, computed, input, inject } from '@angular/core';\r\nimport { ActivatedRoute } from '@angular/router';\r\n\r\nimport { AyudaService, DateUtils, SessionSharedService } from '../../../services';\r\n\r\n@Component({\r\n selector: \"bit-readonly\",\r\n templateUrl: \"bit-readonly.component.html\",\r\n standalone: false\r\n})\r\nexport class BitReadonlyComponent {\r\n protected router = inject(ActivatedRoute);\r\n protected sessionShared = inject(SessionSharedService);\r\n protected ayudaService = inject(AyudaService);\r\n protected dateUtils = inject(DateUtils);\r\n\r\n readonly ayuda = input<string>();\r\n readonly valor = input<any>();\r\n readonly tipo = input<\"text\" | \"textarea\" | \"number\" | \"date\" | \"datetime\" | \"time\" | \"boolean\" | \"list\" | \"list-multiple\">(\"text\"); // text (default), date, datetime, time, boolean, textarea, list, list-multiple\r\n readonly hideLabel = input<boolean>(false);\r\n readonly data = input<any[]>(); //lista de valores estáticos con lo que inicializamos el select\r\n \r\n isTextarea = computed(() => this.tipo() === \"textarea\"); \r\n opcionesDropdown = computed<any[]>(() => {\r\n return (this.data() && this.data().slice()) || [];\r\n });\r\n\r\n showAyuda() {\r\n this.ayudaService.mostrarAyuda(this.ayuda());\r\n }\r\n\r\n get value_lectura(): string {\r\n const valor = this.valor();\r\n switch (this.tipo()) {\r\n case \"date\":\r\n return valor ? this.dateUtils.getDateAsString(this.dateUtils.stringShortToDate(valor)) : \"\";\r\n case \"datetime\":\r\n return valor ? this.dateUtils.getDateTimeAsString(this.dateUtils.stringToDate(valor)) : \"\";\r\n case \"time\":\r\n return valor ? this.dateUtils.getTimeAsString(this.dateUtils.stringToTime(valor)) : \"\";\r\n case \"boolean\":\r\n return valor ? \"Sí\" : \"No\";\r\n case \"list\":\r\n let d = this.opcionesDropdown().find(d => d.value == valor);\r\n return d ? d.label : \"\";\r\n case \"list-multiple\":\r\n let labels: any[] = this.opcionesDropdown() && this.opcionesDropdown().filter(d => valor && valor.indexOf(d.value) > -1).map(d => d.label);\r\n return labels ? labels.join(\", \") : null;\r\n default:\r\n return valor;\r\n }\r\n }\r\n}\r\n","@if (!hideLabel()) {\r\n <label>\r\n <ng-content /> \r\n @if (ayuda()) {\r\n <i class=\"btn-ayuda fa fa-question\" (click)=\"showAyuda()\"></i>\r\n }\r\n </label>\r\n}\r\n@if (!isTextarea()) {\r\n <p class=\"lectura\">{{value_lectura}}</p>\r\n}\r\n@if (isTextarea()) {\r\n <pre class=\"lectura\">{{value_lectura}}</pre>\r\n}","import { Component, ElementRef, forwardRef, HostListener, ViewChild, input, viewChild } from \"@angular/core\";\r\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from \"@angular/forms\";\r\n\r\nimport { BitCustomComponent } from \"../bit-custom.component\";\r\n\r\n@Component({\r\n selector: \"bit-number\",\r\n templateUrl: \"bit-number.component.html\",\r\n providers: [{\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => BitNumberComponent),\r\n multi: true\r\n }],\r\n standalone: false\r\n})\r\nexport class BitNumberComponent extends BitCustomComponent implements ControlValueAccessor {\r\n readonly modo = input<\"decimal\" | \"currency\">(\"decimal\");\r\n readonly divisa = input<string>();\r\n readonly prefijo = input<string>();\r\n readonly sufijo = input<string>();\r\n readonly minimo = input<number>();\r\n readonly maximo = input<number>();\r\n readonly numeroDecimales = input<number>();\r\n readonly maximoDecimales = input<number>();\r\n readonly separadorGrupo = input<boolean>(false);\r\n readonly mostrarBotones = input<boolean>();\r\n readonly incremento = input<number>(1);\r\n\r\n inputElement = viewChild<ElementRef>('inputReference');\r\n\r\n value: number;\r\n\r\n get value_lectura(): number {\r\n this.log() && console.log(\"value lectura: \" + this.value);\r\n return this.value;\r\n }\r\n\r\n writeValue(v: number): void {\r\n this.log() && console.log(`writeValue forComponent ${this.nombre()} with value ${v}`);\r\n this.value = v;\r\n }\r\n\r\n onChangeValue(text) {\r\n this.log() && console.log(\"_onChangeValue forComponent: \" + this.nombre() + \" with value:\" + text);\r\n this.value = text;\r\n this.changeComponentValue(this.value);\r\n }\r\n\r\n // Hasta que https://github.com/primefaces/primeng/issues/11442 no se resuelva,\r\n // hacemos esta triquiñuela para que al pulsar el 'punto' o la 'coma'\r\n // se nos situe el cursor en la primera posición decimal.\r\n // (basado en https://github.com/primefaces/primeng/issues/8985#issuecomment-1351712540 y\r\n // https://stackoverflow.com/a/70303350/9741090)\r\n // @HostListener(\"keydown\", [\"$event.key\"])\r\n // onKeyDown(key: string) {\r\n // const input = this.inputElement().nativeElement.firstChild.childNodes[0] as HTMLInputElement;\r\n // if (!input) return;\r\n\r\n // if (key === \",\" || key === \".\") {\r\n // if (input.value.indexOf(\",\") === -1) {\r\n // input.value += \",\";\r\n // } else {\r\n // let posicionComa: number = input.value.indexOf(\",\");\r\n // input.focus();\r\n // input.setSelectionRange(posicionComa + 1, posicionComa + 1);\r\n // }\r\n // } else if (key === \"ArrowLeft\") {\r\n // // corregir efecto cursor a la izquierda si estamos detrás de €\r\n // if (this.modo() === \"currency\") {\r\n // let posicionEspacio: number = input.value.indexOf(String.fromCharCode(160));\r\n // if (posicionEspacio > 0 && input.selectionStart > posicionEspacio) {\r\n // input.setSelectionRange(posicionEspacio, posicionEspacio);\r\n // }\r\n // }\r\n // // corregir efecto cursor a la izquierda con el texto seleccionado por completo\r\n // if (input.selectionStart === 0 && input.selectionEnd === input.value.length) {\r\n // input.setSelectionRange(0, 0);\r\n // }\r\n // }\r\n // }\r\n}\r\n","@if (!hideLabel()) {\r\n <label for=\"{{ nombre() }}\">\r\n <ng-content /> @if (obligatorio) {\r\n <span class=\"obligatorio fa fa-asterisk\"></span>\r\n } \r\n @if (ayuda()) {\r\n <i class=\"btn-ayuda fa fa-question\" (click)=\"showAyuda()\"></i>\r\n }\r\n </label>\r\n}\r\n@if (readOnly()) {\r\n <p class=\"lectura\" [id]=\"nombre()\">{{ value_lectura }}</p>\r\n}\r\n@if (!tooltipTexto() && !readOnly()) {\r\n <p-inputNumber\r\n #inputReference\r\n id=\"{{ nombre() }}\"\r\n name=\"{{ nombre() }}\"\r\n ariaLabel=\"{{ nombre() }}\"\r\n [disabled]=\"isDisabled()\"\r\n [ngModel]=\"value\"\r\n [attr.directive]=\"nombreDirectiva()\"\r\n [placeholder]=\"placeholder()\"\r\n [mode]=\"modo()\"\r\n [currency]=\"divisa()\"\r\n [prefix]=\"prefijo()\"\r\n [suffix]=\"sufijo()\"\r\n [min]=\"minimo()\"\r\n [max]=\"maximo()\"\r\n [minFractionDigits]=\"numeroDecimales()\"\r\n [maxFractionDigits]=\"maximoDecimales() == null ? numeroDecimales() : maximoDecimales()\"\r\n [useGrouping]=\"separadorGrupo()\"\r\n [showButtons]=\"mostrarBotones()\"\r\n [step]=\"incremento()\"\r\n locale=\"es-ES\"\r\n (ngModelChange)=\"onChangeValue($event)\"\r\n (blur)=\"_onBlur()\"\r\n (focus)=\"_onFocus()\"\r\n attr.data-testid=\"{{ dataTestId()}}\"\r\n />\r\n}\r\n@if (tooltipTexto() && !readOnly()) {\r\n <p-inputNumber\r\n #inputReference\r\n id=\"{{ nombre() }}\"\r\n name=\"{{ nombre() }}\"\r\n ariaLabel=\"{{ nombre() }}\"\r\n [disabled]=\"isDisabled()\"\r\n [ngModel]=\"value\"\r\n [attr.directive]=\"nombreDirectiva()\"\r\n [pTooltip]=\"tooltipTexto()\"\r\n [tooltipPosition]=\"tooltipPosicion()\"\r\n [mode]=\"modo()\"\r\n [currency]=\"divisa()\"\r\n [prefix]=\"prefijo()\"\r\n [suffix]=\"sufijo()\"\r\n [min]=\"minimo()\"\r\n [max]=\"maximo()\"\r\n [minFractionDigits]=\"numeroDecimales()\"\r\n [maxFractionDigits]=\"maximoDecimales() == null ? numeroDecimales() : maximoDecimales()\"\r\n [useGrouping]=\"separadorGrupo()\"\r\n [showButtons]=\"mostrarBotones()\"\r\n [step]=\"incremento()\"\r\n locale=\"es-ES\"\r\n (ngModelChange)=\"onChangeValue($event)\"\r\n (blur)=\"_onBlur()\"\r\n (focus)=\"_onFocus()\"\r\n attr.data-testid=\"{{ dataTestId()}}\"\r\n />\r\n}\r\n@if (control() != null) {\r\n <control-messages [control]=\"control()\" [field]=\"nombre()\" />\r\n}\r\n","import { Component, forwardRef, input } from \"@angular/core\";\r\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from \"@angular/forms\";\r\n\r\nimport { BitNumberComponent } from \"../number/bit-number.component\";\r\n\r\n@Component({\r\n selector: \"bit-amount\",\r\n templateUrl: \"../number/bit-number.component.html\",\r\n providers: [{\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => BitAmountComponent),\r\n multi: true\r\n }],\r\n standalone: false\r\n})\r\nexport class BitAmountComponent extends BitNumberComponent implements ControlValueAccessor {\r\n readonly prefijo = input<string>();\r\n readonly sufijo = input<string>();\r\n readonly minimo = input<number>();\r\n readonly maximo = input<number>();\r\n readonly mostrarBotones = input<boolean>();\r\n readonly incremento = input<number>();\r\n readonly modo = input<\"decimal\" | \"currency\">(\"currency\");\r\n readonly divisa = input<string>(\"EUR\");\r\n readonly maximoDecimales = input<number>(2);\r\n readonly separadorGrupo = input<boolean>(true);\r\n}\r\n","import { Injectable, signal } from \"@angular/core\";\r\n\r\n/** Esta clase contiene información sobre el menú pulsado por el usuairo. Permite setear dicho valor y recuperarlo mediante un signal */\r\n@Injectable({ providedIn: \"root\" })\r\nexport class MenuService {\r\n private currentMenu$ = signal<MenuTitle | undefined>(undefined);\r\n constructor() {}\r\n\r\n setCurrentMenu(menuTitle: MenuTitle) {\r\n this.currentMenu$.set(menuTitle);\r\n }\r\n\r\n // retorna el signal con la información del menú actualmente pulsado\r\n getCurrentMenu() {\r\n return this.currentMenu$;\r\n }\r\n}\r\n\r\nexport class MenuTitle {\r\n public menuName: string;\r\n public submenuName: string;\r\n constructor(menuName: string, submenuName: string) {\r\n this.menuName = menuName;\r\n this.submenuName = submenuName;\r\n }\r\n}\r\n","import { Component, ChangeDetectionStrategy, inject, input, output } from \"@angular/core\";\r\nimport { MenuItem } from \"primeng/api\";\r\nimport { StorageService } from \"../../services/storage.service\";\r\nimport { MenuTitle } from \"../../services/menu.service\";\r\n\r\n@Component({\r\n selector: \"bit-sidebar\",\r\n templateUrl: \"./bit-sidebar.component.html\",\r\n styleUrls: [\"bit-sidebar.component.css\"],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n standalone: false\r\n})\r\nexport class BitSidebarComponent {\r\n readonly items = input<MenuItem[]>(undefined);\r\n readonly visibilidad = input<boolean>(undefined);\r\n readonly onSelectLanguage = output<any>();\r\n readonly onCloseMenu = output<boolean>();\r\n readonly onMenuTitle = output<MenuTitle>();\r\n\r\n // servicio para almacenar datos en la sesión del navegador\r\n storageService = inject(StorageService);\r\n\r\n closeMenu() {\r\n this.onCloseMenu.emit(true);\r\n }\r\n\r\n clickMenu(item) {\r\n item.expanded = !item.expanded;\r\n this.storageService.setData(StorageService.MENU, this.items());\r\n }\r\n\r\n clickMenuItem(event: any, item: MenuItem, subitem: MenuItem) {\r\n event.stopPropagation();\r\n this.closeMenu();\r\n if (subitem.routerLink) {\r\n this.onMenuTitle.emit(new MenuTitle(item.label, subitem.label));\r\n } else {\r\n window.open(subitem.url, \"_blank\");\r\n }\r\n }\r\n\r\n selectLanguage(language) {\r\n this.closeMenu();\r\n this.onSelectLanguage.emit(language);\r\n }\r\n}\r\n","<div id=\"mySidebar\" class=\"sidebar\" [style.min-width]=\"visibilidad() ? '300px' : '0px'\">\r\n <i class=\"closebtn fa fa-times\" (click)=\"closeMenu()\"></i>\r\n <ul>\r\n @for (item of items(); track item) {\r\n <li class=\"item\" (click)=\"clickMenu(item)\">\r\n @if (item.items.length > 0) {\r\n <i class=\"fa\" [ngClass]=\"{'fa-chevron-right':!item.expanded,'fa-chevron-down':item.expanded}\"></i>\r\n }\r\n {{ \"menu.\" + item.label | transloco }}\r\n @if (item.expanded) {\r\n <ul>\r\n @for (subitem of item.items; track subitem) {\r\n <li class=\"subitem\" [routerLink]=\"subitem.routerLink\" (click)=\"clickMenuItem($event, item, subitem)\">\r\n <i class=\"{{subitem.icon}}\"></i> \r\n <a>{{ \"menu.\" + subitem.label | transloco }}</a></li>\r\n }\r\n </ul>\r\n }\r\n </li>\r\n }\r\n </ul>\r\n <!-- <p class=\"idioma-selector\"> \r\n <bit-language-selector (onSelectLanguage)=\"selectLanguage($event)\"></bit-language-selector>\r\n </p> -->\r\n <p class=\"nombre-desarrollado\">{{ \"menu.desarrollado-por\" | transloco }} <a href=\"https://www.caib.es/webgoib/w/agencia-balear-digitalitzacio-ciberseguretat-i-telecomunicacions\" target=\"_blank\">IB Digital</a></p>\r\n</div>\r\n","import { Component, inject, computed, output, effect } from \"@angular/core\";\r\nimport { SelectButtonOptionClickEvent } from \"primeng/selectbutton\";\r\nimport { ThemeFBitService } from \"../../services/theme-fbit.service\";\r\n\r\n@Component({\r\n selector: \"bit-theme-selector\",\r\n templateUrl: \"./bit-theme-selector.component.html\",\r\n standalone: false \r\n})\r\nexport class BitThemeSelectorComponent {\r\n onChangeTheme = output<string>();\r\n themeFBitService = inject(ThemeFBitService);\r\n\r\n themeList$ = computed(() =>\r\n this.themeFBitService.themeList$().map((theme) => {\r\n return { name: theme };\r\n })\r\n );\r\n currentTheme$ = computed(() => {\r\n return this.themeFBitService.currentTheme$();\r\n });\r\n\r\n constructor() {\r\n effect(() => {\r\n console.log(\"theme\", this.currentTheme$());\r\n console.log(\"themeList\", this.themeList$());\r\n });\r\n }\r\n\r\n selectGroupChanged(_event: SelectButtonOptionClickEvent) {\r\n console.log(\"event\", _event);\r\n this.selectTheme(_event.option[\"name\"]);\r\n }\r\n\r\n selectTheme(theme) {\r\n this.themeFBitService.changeTheme(theme);\r\n this.onChangeTheme.emit(theme);\r\n }\r\n}\r\n","<p-selectbutton \r\n [options]=\"themeList$()\" \r\n [ngModel]=\"currentTheme$()\" \r\n optionLabel=\"name\" \r\n optionValue=\"name\" \r\n (onOptionClick)=\"selectGroupChanged($event)\"/>","import { Component, ChangeDetectionStrategy, inject, signal, linkedSignal, output } from \"@angular/core\";\r\nimport { SelectButtonOptionClickEvent } from \"primeng/selectbutton\";\r\nimport { LocaleService } from \"../../services/locale.service\";\r\n\r\n@Component({\r\n selector: \"bit-language-selector\",\r\n templateUrl: \"./bit-language-selector.component.html\",\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n standalone: false\r\n})\r\nexport class BitLanguageSelectorComponent {\r\n readonly onSelectLanguage = output<string>();\r\n\r\n localeService: LocaleService = inject(LocaleService);\r\n languageList$ = signal(this.localeService.locales);\r\n currentLanguage$ = linkedSignal(() => this.localeService.locale$());\r\n //signal(this.localeService.locale$());\r\n\r\n selectGroupChanged(_event: SelectButtonOptionClickEvent) {\r\n console.log(\"event\", _event);\r\n this.selectLanguage(_event.option[\"value\"]);\r\n }\r\n\r\n selectLanguage(language) {\r\n this.localeService.updateLocale(language);\r\n this.currentLanguage$.set(language);\r\n this.onSelectLanguage.emit(language);\r\n }\r\n}\r\n","<p-selectbutton \r\n [options]=\"languageList$()\" \r\n [ngModel]=\"currentLanguage$()\" \r\n optionLabel=\"label\" \r\n optionValue=\"value\" \r\n (onOptionClick)=\"selectGroupChanged($event)\"/>","import { Component, inject, OnInit, output } from \"@angular/core\";\r\nimport { ThemeFBitService } from \"../../services/theme-fbit.service\";\r\n\r\n@Component({\r\n selector: \"bit-settings\",\r\n templateUrl: \"bit-settings.component.html\",\r\n styleUrl: \"bit-settings.component.css\",\r\n standalone: false\r\n})\r\nexport class BitSettingsComponent implements OnInit {\r\n onSelectLanguage = output<string>();\r\n themeFBitService = inject(ThemeFBitService);\r\n isDarkMode: boolean = false;\r\n onDarkModeChange = output<boolean>();\r\n\r\n constructor() {}\r\n\r\n ngOnInit() {\r\n this.isDarkMode = this.themeFBitService.darkMode$();\r\n if (this.isDarkMode) {\r\n this.themeFBitService.toggleDarkMode();\r\n }\r\n }\r\n\r\n selectLanguage(language) {\r\n this.onSelectLanguage.emit(language);\r\n }\r\n\r\n toggleDarkMode(event) {\r\n this.themeFBitService.toggleDarkMode();\r\n this.themeFBitService.setDarkMode(this.isDarkMode);\r\n this.onDarkModeChange.emit(this.isDarkMode); // Emit the new state\r\n }\r\n}\r\n","<ng-container *transloco=\"let t\">\r\n <a href=\"#\" (click)=\"op.toggle($event); $event.preventDefault();\" class=\"pi pi-cog icono-header\" pTooltip=\"{{ t('configselection') }}\" tooltipPosition=\"left\" aria-label=\"{{ t('configselection') }}\"></a>\r\n <p-popover #op ariaLabel=\"{{ t('configselection') }}\">\r\n <div class=\"config-panel-settings\">\r\n <span class=\"config-panel-label\">{{ t('themelabel') }}</span>\r\n <bit-theme-selector />\r\n <span class=\"config-panel-label\">{{ t('darkmodeselection') }}</span>\r\n <div class=\"flex gap-2 align-items-center\">\r\n <span class=\"fa-solid fa-moon\"></span>\r\n <p-toggleswitch ariaLabel=\"{{ t('darkmodeselection') }}\" [(ngModel)]=\"isDarkMode\" (onChange)=\"toggleDarkMode($event);\" attr.data-testid=\"darkMode\"/>\r\n </div>\r\n <span class=\"config-panel-label\">{{ t('languageselection') }}</span>\r\n <div class=\"flex gap-2 align-items-center\">\r\n <span class=\"fa-solid fa-globe\"></span>\r\n <bit-language-selector (onSelectLanguage)=\"selectLanguage($event)\"/>\r\n </div>\r\n \r\n </div> \r\n </p-popover>\r\n</ng-container>","import { Pipe, PipeTransform } from \"@angular/core\";\r\n\r\n/**\r\n * Pipe que muestra en una unidad \"human-readable\" el tamaño de un fichero\r\n */\r\n\r\nexport type ByteUnit = \"B\" | \"kB\" | \"KB\" | \"MB\" | \"GB\" | \"TB\";\r\n\r\n@Pipe({\r\n name: \"bytes\",\r\n standalone: false\r\n})\r\nexport class BytesPipe implements PipeTransform {\r\n static formats: { [key: string]: { max: number; prev?: ByteUnit } } = {\r\n B: { max: 1024 },\r\n kB: { max: Math.pow(1024, 2), prev: \"B\" },\r\n KB: { max: Math.pow(1024, 2), prev: \"B\" }, // Backward compatible\r\n MB: { max: Math.pow(1024, 3), prev: \"kB\" },\r\n GB: { max: Math.pow(1024, 4), prev: \"MB\" },\r\n TB: { max: Number.MAX_SAFE_INTEGER, prev: \"GB\" }\r\n };\r\n\r\n transform(input: any, decimal = 0, from: ByteUnit = \"B\", to?: ByteUnit): any {\r\n if (!(isNumberFinite(input) && isNumberFinite(decimal) && isInteger(decimal) && isPositive(decimal))) {\r\n return input;\r\n }\r\n\r\n let bytes = input;\r\n let unit = from;\r\n while (unit !== \"B\") {\r\n bytes *= 1024;\r\n unit = BytesPipe.formats[unit].prev as ByteUnit;\r\n }\r\n\r\n if (to) {\r\n const format = BytesPipe.formats[to];\r\n\r\n const result = toDecimal(BytesPipe.calculateResult(format, bytes), decimal);\r\n\r\n return BytesPipe.formatResult(result, to);\r\n }\r\n\r\n for (const key in BytesPipe.formats) {\r\n if (BytesPipe.formats.hasOwnProperty(key)) {\r\n const format = BytesPipe.formats[key];\r\n if (bytes < format.max) {\r\n const result = toDecimal(BytesPipe.calculateResult(format, bytes), decimal);\r\n\r\n return BytesPipe.formatResult(result, key);\r\n }\r\n }\r\n }\r\n }\r\n\r\n static formatResult(result: number, unit: string): string {\r\n if (result) {\r\n return `${result.toLocaleString(\"ca-ES\")} ${unit}`;\r\n } else {\r\n return `0 ${unit}`;\r\n }\r\n }\r\n\r\n static calculateResult(format: { max: number; prev?: ByteUnit }, bytes: number) {\r\n const prev = format.prev ? BytesPipe.formats[format.prev] : undefined;\r\n return prev ? bytes / prev.max : bytes;\r\n }\r\n}\r\n\r\nfunction isNumber(value: any): value is number {\r\n return typeof value === \"number\";\r\n}\r\n\r\nfunction isNumberFinite(value: any): value is number {\r\n return isNumber(value) && isFinite(value);\r\n}\r\n\r\n// Not strict positive\r\nfunction isPositive(value: number): boolean {\r\n return value >= 0;\r\n}\r\n\r\nfunction isInteger(value: number): boolean {\r\n // No rest, is an integer\r\n return value % 1 === 0;\r\n}\r\n\r\nfunction toDecimal(value: number, decimal: number): number {\r\n return Math.round(value * Math.pow(10, decimal)) / Math.pow(10, decimal);\r\n}\r\n","import { Pipe, PipeTransform } from \"@angular/core\";\r\n\r\n/**\r\n * Cambia a mayúscula el primer carácter de un texto.\r\n */\r\n@Pipe({\r\n name: \"capitalize\",\r\n standalone: false\r\n})\r\nexport class CapitalizePipe implements PipeTransform {\r\n transform(texto: string): string {\r\n if (texto && texto.length > 0) {\r\n return texto.charAt(0).toUpperCase() + texto.slice(1);\r\n } else {\r\n return texto;\r\n }\r\n }\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\n\r\n@Pipe({\r\n name: 'cutText',\r\n standalone: false\r\n})\r\nexport class CutTextPipe implements PipeTransform {\r\n transform(value: string, maxLength: number = 40): any {\r\n if (!value) return value;\r\n if (value.length < maxLength) {\r\n return value;\r\n }\r\n return value.substring(0, maxLength) + \"...\";\r\n }\r\n}","import { Pipe, PipeTransform } from \"@angular/core\";\r\nimport { Domain } from \"../data\";\r\n\r\n@Pipe({\r\n name: \"domainListValue\",\r\n standalone: false\r\n})\r\nexport class DomainListValuePipe implements PipeTransform {\r\n transform(list: any[], domain: Domain[]) {\r\n let s = \"\";\r\n if (list && list.length > 0) {\r\n for (let value of list) {\r\n // buscar traducción para el valor en el dominio\r\n let domainMatch = domain && domain.find((obj) => obj.value == value);\r\n if (domainMatch) s = s + domainMatch.label + \", \";\r\n else if (value) s = s + String(`??${value}??`) + \", \";\r\n }\r\n }\r\n if (s.endsWith(\", \")) s = s.substring(0, s.length - 2);\r\n return s;\r\n }\r\n}\r\n","import { Pipe, PipeTransform } from \"@angular/core\";\r\nimport { Domain } from \"../data\";\r\n\r\n@Pipe({\r\n name: \"domainValue\",\r\n standalone: false\r\n})\r\nexport class DomainValuePipe implements PipeTransform {\r\n transform(value: any, domain: Domain[]) {\r\n // buscar traducción para el valor en el dominio\r\n let domainMatch = domain && domain.find((obj) => obj.value == value);\r\n\r\n if (domainMatch) {\r\n return domainMatch.label;\r\n } else if (value) {\r\n return String(`??${value}??`);\r\n } else {\r\n return \"\";\r\n }\r\n }\r\n}\r\n","import { Pipe, PipeTransform } from \"@angular/core\";\r\n\r\n@Pipe({\r\n name: \"listValue\",\r\n standalone: false\r\n})\r\nexport class ListValuePipe implements PipeTransform {\r\n transform(list: any[], field: string) {\r\n let s = \"\";\r\n if (list && list.length > 0) {\r\n for (let value of list) {\r\n s = s + value[field] + \", \";\r\n }\r\n }\r\n if (s.endsWith(\", \")) s = s.substring(0, s.length - 2);\r\n return s;\r\n }\r\n}\r\n","import { Pipe, PipeTransform } from \"@angular/core\";\r\n\r\n@Pipe({\r\n name: \"otherToolbarAction\",\r\n standalone: false\r\n})\r\n/**\r\n * Convierte un map de acciones del toolbar en un array de acciones pero conteniendo\r\n * solo aquellas acciones que tengan la propiedad otherAction definida a true\r\n */\r\nexport class OtherToolbarActionPipe implements PipeTransform {\r\n transform(toolbarMap: any): any[] {\r\n let actions = [];\r\n for (var key in toolbarMap) {\r\n if (toolbarMap[key].otherAction) {\r\n actions.push(toolbarMap[key]);\r\n }\r\n }\r\n return actions;\r\n }\r\n}\r\n","import { Pipe, PipeTransform } from \"@angular/core\";\r\n\r\n@Pipe({\r\n name: \"removeLineBreaks\",\r\n standalone: false\r\n})\r\n/**\r\n * Acorta un texto con saltos de línea, sustituyendo los saltos por \"//\" y limitando la cadena final a 200 caracteres\r\n */\r\nexport class RemoveLineBreaksPipe implements PipeTransform {\r\n transform(str: string): string {\r\n if (str.indexOf(\"\\n\") > 0) {\r\n str = str\r\n .split(\"\\n\")\r\n .filter(line => line.trim().length > 0)\r\n .join(\" // \");\r\n }\r\n if (str.length > 200) {\r\n str = str.substring(0, 200) + \" ...\";\r\n }\r\n return str;\r\n }\r\n}\r\n","import {Pipe, PipeTransform} from \"@angular/core\";\r\n\r\n@Pipe({\r\n name: \"siONo\",\r\n standalone: false\r\n})\r\nexport class SiONoPipe implements PipeTransform {\r\n transform(value: boolean, nullable?: boolean): string {\r\n if (nullable) {\r\n return value ? \"Sí\" : value == null ? \"\" : \"No\";\r\n } else {\r\n return value ? \"Sí\" : \"No\";\r\n }\r\n }\r\n}\r\n","import { Pipe, PipeTransform } from \"@angular/core\";\r\n\r\n@Pipe({\r\n name: \"stringify\",\r\n standalone: false\r\n})\r\nexport class StringifyPipe implements PipeTransform {\r\n transform(value: any) {\r\n return JSON.stringify(value);\r\n }\r\n}\r\n","import { BytesPipe } from \"./bytes.pipe\";\r\nimport { CapitalizePipe } from \"./capitalize.pipe\";\r\nimport { CutTextPipe } from \"./cut-text.pipe\";\r\nimport { DomainListValuePipe } from \"./domain-list-value.pipe\";\r\nimport { DomainValuePipe } from \"./domain-value.pipe\";\r\nimport { ListValuePipe } from \"./list-value.pipe\";\r\nimport { OtherToolbarActionPipe } from \"./other-actions.pipe\";\r\nimport { CantidadMonedaPipe } from \"./pipe-cantidadmoneda.pipe\";\r\nimport { RemoveLineBreaksPipe } from \"./remove-line-breaks.pipe\";\r\nimport { SiONoPipe } from \"./si-o-no.pipe\";\r\nimport { StringifyPipe } from \"./stringify.pipe\";\r\n\r\nexport * from \"./bytes.pipe\";\r\nexport * from \"./capitalize.pipe\";\r\nexport * from \"./cut-text.pipe\";\r\nexport * from \"./other-actions.pipe\";\r\nexport * from \"./pipe-cantidadmoneda.pipe\";\r\nexport * from \"./remove-line-breaks.pipe\";\r\nexport * from \"./domain-list-value.pipe\";\r\nexport * from \"./domain-value.pipe\";\r\nexport * from \"./list-value.pipe\";\r\nexport * from \"./si-o-no.pipe\";\r\nexport * from \"./stringify.pipe\"\r\n\r\nexport const pipes: any[] = [BytesPipe, CapitalizePipe, CutTextPipe, DomainValuePipe, DomainListValuePipe, ListValuePipe, OtherToolbarActionPipe, CantidadMonedaPipe, RemoveLineBreaksPipe, SiONoPipe, StringifyPipe];\r\n","import { Directive, inject } from \"@angular/core\";\r\nimport { Subscription } from \"rxjs\";\r\nimport { Popover } from \"primeng/popover\";\r\nimport { BitPanelService } from \"../services/bit-panel.service\";\r\n\r\n/**\r\n * Directiva para poder acceder al panel de alertas a modo de interactuar con él como por ejemplo poder abrirlo y cerrarlo\r\n */\r\n@Directive({\r\n selector: \"[bitpanel]\",\r\n standalone: false\r\n})\r\nexport class BitPanelDirective {\r\n suscription: Subscription;\r\n\r\n bitPanelService: BitPanelService = inject(BitPanelService); // con este servicio podremos suscribirnos para recibir la orden de abrir o cerrar\r\n overlay: Popover = inject(Popover); // accederemos al componente Overlay al que estamos enganchados cual sanguijuela\r\n\r\n ngOnInit() {\r\n // Nos suscribimos a las notificaciones para abrir o cerrar el panel\r\n this.suscription = this.bitPanelService.getTooglePanel().subscribe((event) => {\r\n this.overlay && this.overlay.toggle(event); // abrete o cierrate sésamo\r\n });\r\n }\r\n\r\n ngOnDestroy() {\r\n this.suscription && this.suscription.unsubscribe();\r\n }\r\n}\r\n","import { BitPanelDirective } from \"./bit-panel.directive\";\r\nimport { FocusRegisterDirective } from \"./focus-register.directive\";\r\n\r\nexport * from \"./bit-panel.directive\";\r\nexport * from \"./focus-register.directive\";\r\n\r\nexport const directives: any[] = [\r\n BitPanelDirective,\r\n FocusRegisterDirective\r\n]","import { Component, forwardRef, input } from \"@angular/core\";\r\n\r\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from \"@angular/forms\";\r\nimport { BitCustomComponent } from \"../bit-custom.component\";\r\n\r\n@Component({\r\n selector: \"bit-switch-si-no\",\r\n templateUrl: \"bit-switch-si-no.component.html\",\r\n providers: [{\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => BitSwitchSiNoComponent),\r\n multi: true\r\n }],\r\n standalone: false\r\n})\r\nexport class BitSwitchSiNoComponent extends BitCustomComponent implements ControlValueAccessor {\r\n\r\n readonly valorTrue = input<any>(true);\r\n readonly valorFalse = input<any>(false);\r\n\r\n value: Boolean;\r\n\r\n get value_lectura(): string {\r\n this.log() && console.log(\"value lectura: \" + this.value);\r\n return this.value ? \"Sí\" : \"No\";\r\n }\r\n\r\n writeValue(v: Boolean): void {\r\n this.log() && console.log(`writeValue forComponent ${this.nombre()} with value ${v}`);\r\n this.value = v;\r\n }\r\n\r\n onChangeValue(event: { checked: Boolean; }) {\r\n this.value = event.checked;\r\n this.log() && console.log(\"_onChangeValue forComponent: \" + this.nombre() + \" with value:\" + this.value);\r\n this.changeComponentValue(this.value);\r\n }\r\n\r\n}\r\n","@if (!hideLabel()) {\r\n <label for=\"{{ nombre() }}\">\r\n <ng-content /> @if (obligatorio) {\r\n <span class=\"obligatorio fa fa-asterisk\"></span>\r\n } \r\n @if (ayuda()) {\r\n <i class=\"btn-ayuda fa fa-question\" (click)=\"showAyuda()\"></i>\r\n }\r\n </label>\r\n}\r\n@if (readOnly()) {\r\n <p class=\"lectura\" [id]=\"nombre()\">{{ value_lectura }}</p>\r\n}\r\n@if (!readOnly()) {\r\n <p-toggleswitch onLabel=\"Sí\"\r\n offLabel=\"No\"\r\n binary=\"true\"\r\n [(ngModel)]=\"value\"\r\n name=\"{{ nombre() }}\"\r\n ariaLabel=\"{{ nombre() }}\"\r\n [disabled]=\"isDisabled()\"\r\n id=\"{{ nombre() }}\"\r\n [trueValue]=\"valorTrue()\"\r\n [falseValue]=\"valorFalse()\"\r\n (onChange)=\"onChangeValue($event)\"\r\n attr.data-testid=\"{{ dataTestId()}}\"\r\n />\r\n}\r\n@if (control() != null) {\r\n <control-messages [control]=\"control()\" [field]=\"nombre()\" />\r\n}\r\n","import { Component, computed, forwardRef, input, signal } from \"@angular/core\";\r\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from \"@angular/forms\";\r\nimport { CheckboxChangeEvent } from \"primeng/checkbox\";\r\nimport { BitCustomComponent } from \"../bit-custom.component\";\r\nimport { Domain } from \"../../../data\";\r\n\r\n@Component({\r\n selector: \"bit-checkbox-multiple\",\r\n templateUrl: \"bit-multiple-checkbox.component.html\",\r\n providers: [\r\n {\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => BitMultipleCheckboxComponent),\r\n multi: true\r\n }\r\n ],\r\n standalone: false\r\n})\r\nexport class BitMultipleCheckboxComponent extends BitCustomComponent implements ControlValueAccessor {\r\n readonly chekAll = input<boolean>(true);\r\n readonly data = input<Domain[]>();\r\n\r\n isCheckAll = signal<boolean>(false);\r\n estiloCheckAll = computed(()=> {\r\n if (this.isCheckAll()) {\r\n return \"pi pi-check-square\";\r\n } else {\r\n return \"pi pi-stop\";\r\n }\r\n });\r\n value: (string | boolean)[];\r\n\r\n get value_lectura(): string {\r\n if (this.value) {\r\n // Mostramos los labels del dominio que está en data.\r\n let v = this.value.map((v: string | boolean) => {\r\n const label = this.data()?.find((d: Domain) => d.value === v)?.label;\r\n return label ? label : v;\r\n })?.join(\", \");\r\n this.log() && console.log(\"value lectura\", v);\r\n return v;\r\n } else {\r\n this.log() && console.log(\"value lectura is blank\");\r\n return \"\";\r\n }\r\n }\r\n\r\n writeValue(v: string[]): void {\r\n this.log() && console.log(`writeValue forComponent ${this.nombre()} with value ${v}`);\r\n this.value = v;\r\n this.refreshCheckAll();\r\n }\r\n\r\n onChangeValue(event: CheckboxChangeEvent) {\r\n let selected: string[] = event && event.checked;\r\n this.log() && console.log(\"onChangeValue forComponent: \" + this.nombre() + \" selected:\" + selected);\r\n if (selected && selected.length > 0) {\r\n this.value = selected; \r\n } else {\r\n this.value = null;\r\n }\r\n\r\n this.refreshCheckAll();\r\n this.changeComponentValue(this.value);\r\n }\r\n\r\n onCheckAll() {\r\n this.isCheckAll.update((value) => !value);\r\n this.log() && console.log(\"onCheckAll forComponent: \" + this.nombre() + \" with new value for checkAll:\" + this.isCheckAll());\r\n if (this.isCheckAll()) {\r\n this.value = this.data().map((v: Domain) => v.value);\r\n this.log() && console.log(\"currentValue: \" + this.value);\r\n } else {\r\n this.value = null;\r\n this.log() && console.log(\"currentValue is null\");\r\n }\r\n\r\n this.changeComponentValue(this.value);\r\n }\r\n\r\n private refreshCheckAll() {\r\n this.isCheckAll.set(this.data()?.length === this.value?.length);\r\n }\r\n}\r\n","<ng-container *transloco=\"let t\">\r\n\r\n @if (!hideLabel()) {\r\n <label for=\"{{ nombre() }}\">\r\n <ng-content /> \r\n @if (!readOnly() && this.chekAll()) {\r\n <i title=\"{{t('bitnglibrary.form.bitmultiplecheckbox.checkall')}}\"\r\n style=\"color: #ced4da\"\r\n class=\"font-normal cursor-pointer hover:text-blue-600 cursor-pointer text-sm {{ estiloCheckAll() }}\"\r\n (click)=\"onCheckAll()\"></i> \r\n }\r\n @if (obligatorio) {\r\n <span class=\"obligatorio fa fa-asterisk\"></span> \r\n }\r\n @if (ayuda()) {\r\n <i class=\"btn-ayuda fa fa-question\" (click)=\"showAyuda()\"></i>\r\n }\r\n </label>\r\n }\r\n\r\n @if (readOnly()) {\r\n <p class=\"lectura\" [id]=\"nombre()\">{{ value_lectura }}</p>\r\n } @else {\r\n\r\n @for (dominio of data(); track dominio) {\r\n <div class=\"field-checkbox inline-block\">\r\n <p-checkbox\r\n id=\"{{ nombre() + '-' + dominio.value }}\"\r\n name=\"{{ nombre() + '-' + dominio.value }}\"\r\n ariaLabel=\"{{ nombre() }}\"\r\n [value]=\"dominio.value\"\r\n [(ngModel)]=\"value\"\r\n [inputId]=\"dominio.value\"\r\n [disabled]=\"isDisabled()\"\r\n (onChange)=\"onChangeValue($event)\">\r\n attr.data-testid=\"{{ dataTestId() + \"-\" + dominio.value }}\"\r\n </p-checkbox>\r\n <label class=\"inline-block ml-2 mr-4 font-normal cursor-pointer hover:text-blue-400\"\r\n [for]=\"dominio.value\">{{ dominio.label }}</label>\r\n </div>\r\n }\r\n @if (ayuda()) {\r\n <i (click)=\"showAyuda()\" class=\"btn-ayuda-checkbox fa fa-question\"></i>\r\n }\r\n\r\n @if (control() != null) {\r\n <control-messages [control]=\"control()\" [field]=\"nombre()\" />\r\n }\r\n }\r\n\r\n</ng-container>\r\n","import { NgModule } from \"@angular/core\";\r\nimport { ReactiveFormsModule, FormsModule } from \"@angular/forms\";\r\nimport { CommonModule } from \"@angular/common\";\r\nimport { RouterModule } from \"@angular/router\";\r\n\r\nimport { TranslocoModule, TRANSLOCO_SCOPE } from \"@jsverse/transloco\";\r\n\r\nimport { DatePickerModule } from \"primeng/datepicker\";\r\nimport { InputTextModule } from \"primeng/inputtext\";\r\nimport { EditorModule } from \"primeng/editor\";\r\nimport { MultiSelectModule } from \"primeng/multiselect\";\r\nimport { SelectModule } from \"primeng/select\";\r\nimport { PaginatorModule } from \"primeng/paginator\";\r\nimport { CheckboxModule } from \"primeng/checkbox\";\r\nimport { ButtonModule } from \"primeng/button\";\r\nimport { RadioButtonModule } from \"primeng/radiobutton\";\r\nimport { TabsModule } from \"primeng/tabs\";\r\nimport { DialogModule } from \"primeng/dialog\";\r\nimport { AccordionModule } from \"primeng/accordion\";\r\nimport { AutoCompleteModule } from \"primeng/autocomplete\";\r\nimport { ToggleSwitchModule } from \"primeng/toggleswitch\";\r\nimport { TooltipModule } from \"primeng/tooltip\";\r\nimport { PopoverModule } from \"primeng/popover\";\r\nimport { MessageModule } from \"primeng/message\";\r\nimport { MenuModule } from \"primeng/menu\";\r\nimport { MenubarModule } from \"primeng/menubar\";\r\nimport { MegaMenuModule } from \"primeng/megamenu\";\r\nimport { TableModule } from \"primeng/table\";\r\nimport { TreeModule } from \"primeng/tree\";\r\nimport { DynamicDialogModule } from \"primeng/dynamicdialog\";\r\nimport { InputNumberModule } from \"primeng/inputnumber\";\r\nimport { FluidModule } from \"primeng/fluid\";\r\n\r\nimport { FieldsetModule } from \"primeng/fieldset\";\r\nimport { ToastModule } from \"primeng/toast\";\r\nimport { FileUploadModule } from \"ng2-file-upload\";\r\nimport { MessageService } from \"primeng/api\";\r\nimport { TreeTableModule } from \"primeng/treetable\";\r\nimport { TextareaModule } from \"primeng/textarea\";\r\nimport { BadgeModule } from \"primeng/badge\";\r\nimport { FileUploadModule as FileUploadModulePrimeNG } from \"primeng/fileupload\";\r\nimport { ChipModule } from \"primeng/chip\";\r\nimport { ToggleButtonModule } from \"primeng/togglebutton\";\r\nimport { SplitterModule } from \"primeng/splitter\";\r\nimport { ScrollPanelModule } from \"primeng/scrollpanel\";\r\nimport { TieredMenuModule } from \"primeng/tieredmenu\";\r\nimport { InputMaskModule } from \"primeng/inputmask\";\r\nimport { InputGroupAddonModule } from \"primeng/inputgroupaddon\";\r\nimport { InputGroupModule } from \"primeng/inputgroup\";\r\nimport { SelectButtonModule } from \"primeng/selectbutton\";\r\nimport { RippleModule } from \"primeng/ripple\";\r\nimport { SplitButtonModule } from \"primeng/splitbutton\";\r\n\r\nimport { BitBreadCrumbComponent } from \"./components/breadcrumb/bit-breadcrumb.component\";\r\nimport { BitControlMessages } from \"./components/contol-messages/bit-control-messages.component\";\r\nimport { BitDialogComponent } from \"./components/dialog/bit-dialog.component\";\r\nimport { BitFooterComponent } from \"./components/footer/bit-footer.component\";\r\nimport { BitHeaderComponent } from \"./components/header/bit-header.component\";\r\nimport { BitHelpComponent } from \"./components/help/bit-help.component\";\r\nimport { BitLoadingComponent } from \"./components/loading/bit-loading.component\";\r\nimport { BitNotificationToastComponent } from \"./components/notificacion/bit-notification-toast.component\";\r\nimport { BitNotificationErrorComponent } from \"./components/notificacion/bit-notification-error.component\";\r\nimport { BitToolbarComponent } from \"./components/toolbar/bit-toolbar.component\";\r\nimport { BitNGUploadComponent } from \"./components/upload/bit-ng-upload.component\";\r\nimport { BitUserControlsComponent } from \"./components/user/bit-user-controls.component\";\r\nimport { BitBotonAyudaComponent } from \"./components/misc/bit-boton-ayuda.component\";\r\nimport { BitColumnBooleanComponent } from \"./components/misc/bit-column-boolean.component\";\r\nimport { BitDomainValueComponent } from \"./components/misc/bit-domain-value.component\";\r\nimport { BitTextComponent } from \"./components/form/text/bit-text.component\";\r\nimport { BitTextAreaComponent } from \"./components/form/textarea/bit-textarea.component\";\r\nimport { BitDateComponent } from \"./components/form/date/bit-date.component\";\r\nimport { BitTimeComponent } from \"./components/form/time/bit-time.component\";\r\nimport { BitDateTimeComponent } from \"./components/form/datetime/bit-datetime.component\";\r\nimport { BitCheckBoxComponent } from \"./components/form/checkbox/bit-checkbox.component\";\r\nimport { BitSwitchComponent } from \"./components/form/switch/bit-switch.component\";\r\nimport { BitAutoCompleteComponent } from \"./components/form/autocomplete/bit-autocomplete.component\";\r\nimport { BitDropDownComponent } from \"./components/form/dropdown/bit-dropdown.component\";\r\nimport { BitDropDownMultipleComponent } from \"./components/form/dropdown/bit-dropdown-multiple.component\";\r\nimport { BitEditorComponent } from \"./components/form/editor/bit-editor.component\";\r\nimport { BitReadonlyComponent } from \"./components/form/readonly/bit-readonly.component\";\r\nimport { BitPajigatorComponent } from \"./components/footer/bit-pajigator.component\";\r\nimport { BitFooterMessagesComponent } from \"./components/footer/bit-footer-messages.component\";\r\nimport { BitNumberComponent } from \"./components/form/number/bit-number.component\";\r\nimport { BitAmountComponent } from \"./components/form/amount/bit-amount.component\";\r\nimport { BitSidebarComponent } from \"./components/misc/bit-sidebar.component\";\r\nimport { BitThemeSelectorComponent } from \"./components/theme/bit-theme-selector.component\";\r\nimport { BitSettingsComponent } from \"./components/settings/bit-settings.component\";\r\nimport { BitLanguageSelectorComponent } from \"./components/language/bit-language-selector.component\";\r\n\r\nimport { pipes } from \"./pipes\";\r\nimport { directives } from \"./directives\";\r\nimport { BitSwitchSiNoComponent } from \"./components/form/switch/bit-switch-si-no.component\";\r\nimport { BitMultipleCheckboxComponent } from \"./components/form/multiple-checkbox/bit-multiple-checkbox.component\";\r\n\r\nconst modules: any[] = [\r\n AccordionModule,\r\n AutoCompleteModule,\r\n BadgeModule,\r\n DatePickerModule,\r\n CheckboxModule,\r\n ChipModule,\r\n CommonModule,\r\n DialogModule,\r\n DynamicDialogModule,\r\n InputNumberModule,\r\n EditorModule,\r\n FieldsetModule,\r\n FileUploadModulePrimeNG,\r\n FluidModule,\r\n FormsModule,\r\n InputGroupAddonModule,\r\n InputGroupModule,\r\n InputMaskModule,\r\n ToggleSwitchModule,\r\n TextareaModule,\r\n InputTextModule,\r\n MegaMenuModule,\r\n MenubarModule,\r\n MenuModule,\r\n MultiSelectModule,\r\n SelectModule,\r\n PopoverModule,\r\n MessageModule,\r\n PaginatorModule,\r\n ButtonModule,\r\n RadioButtonModule,\r\n ReactiveFormsModule,\r\n RippleModule,\r\n ScrollPanelModule,\r\n SelectButtonModule,\r\n SplitButtonModule,\r\n SplitterModule,\r\n TableModule,\r\n TabsModule,\r\n TieredMenuModule,\r\n ToastModule,\r\n ToggleButtonModule,\r\n TooltipModule,\r\n TreeModule,\r\n TreeTableModule\r\n];\r\n\r\nexport const components: any[] = [\r\n BitBreadCrumbComponent,\r\n BitControlMessages,\r\n BitDialogComponent,\r\n BitFooterComponent,\r\n BitPajigatorComponent,\r\n BitFooterMessagesComponent,\r\n BitHeaderComponent,\r\n BitHelpComponent,\r\n BitLoadingComponent,\r\n BitNotificationToastComponent,\r\n BitNotificationErrorComponent,\r\n BitToolbarComponent,\r\n BitNGUploadComponent,\r\n BitUserControlsComponent,\r\n BitBotonAyudaComponent,\r\n BitColumnBooleanComponent,\r\n BitDomainValueComponent,\r\n BitSidebarComponent,\r\n BitSettingsComponent,\r\n BitLanguageSelectorComponent,\r\n BitThemeSelectorComponent\r\n];\r\n\r\nexport const formComponents: any[] = [\r\n BitTextComponent,\r\n BitTextAreaComponent,\r\n BitDateComponent,\r\n BitTimeComponent,\r\n BitDateTimeComponent,\r\n BitCheckBoxComponent,\r\n BitMultipleCheckboxComponent,\r\n BitSwitchComponent,\r\n BitSwitchSiNoComponent,\r\n BitAutoCompleteComponent,\r\n BitDropDownComponent,\r\n BitDropDownMultipleComponent,\r\n BitEditorComponent,\r\n BitReadonlyComponent,\r\n BitNumberComponent,\r\n BitAmountComponent\r\n];\r\n\r\n@NgModule({\r\n imports: [...modules, RouterModule, FileUploadModule, TranslocoModule],\r\n declarations: [...directives, ...components, ...formComponents, ...pipes],\r\n exports: [...modules, ...directives, ...pipes, ...components, ...formComponents],\r\n providers: [{ provide: TRANSLOCO_SCOPE, useValue: \"bitnglibrary\" }, MessageService]\r\n})\r\nexport class SharedLibraryModule {}\r\n","import { TranslatedMessage } from \"../../base/models\";\r\n\r\nexport class BitNotification {\r\n static INFO: BitNotificationSeverityType = \"info\";\r\n static WARN: BitNotificationSeverityType = \"warn\";\r\n static ERROR: BitNotificationSeverityType = \"error\";\r\n\r\n constructor(\r\n public title: TranslatedMessage,\r\n public message: TranslatedMessage,\r\n public severity: BitNotificationSeverityType = BitNotification.INFO, // info, warn, error\r\n public life?: number // Tiempo en milisegundos para que se cierre la notificación\r\n ) {}\r\n}\r\n\r\nexport type BitNotificationSeverityType = \"info\" | \"warn\" | \"error\";\r\n\r\n// Max valor para 32-bit signed integer = máximo que permite setTimeout en JavaScript (usado por PrimeNG para ocultar la notificación)\r\nexport const BIT_NOTIFICATION_MAX_LIFE: number = 2147483647;\r\n","import { TranslatedMessage, ErrorValidateForm } from \"../../base/models\";\r\nimport { BitNotification } from \"./bitnotification\";\r\n\r\nexport class BitNotificationError extends BitNotification {\r\n clearErrors: boolean;\r\n constructor(\r\n public title: TranslatedMessage,\r\n public message: TranslatedMessage,\r\n public context?: string,\r\n public multipleErrors?: ErrorValidateForm[],\r\n public detail?: string,\r\n public prefixErrorsMap?: { [key: string]: string }\r\n ) {\r\n super(title, message, BitNotification.ERROR);\r\n }\r\n}\r\n","/**\r\n * Clase base que contiene la información que todos los objetos de datos pueden necesitar.\r\n */\r\nexport class Item {\r\n constructor(public id: number) {}\r\n}\r\n","import { Item } from \"./item\";\r\n\r\nexport class Fichero extends Item {\r\n constructor(\r\n public id: number,\r\n public nombre: string,\r\n public fileName: string,\r\n public mimeType: string,\r\n public tamano: number,\r\n public fechaModificacion: string,\r\n public tipoFichero: string,\r\n public observaciones: string\r\n ) {\r\n super(id);\r\n }\r\n\r\n public static newObject(): Fichero {\r\n return new Fichero(null, \"\", \"\", \"\", 0, \"\", null, \"\");\r\n }\r\n}\r\n","\r\nimport { Observable } from \"rxjs\";\r\nimport { Injectable } from \"@angular/core\";\r\nimport { CanDeactivateFn } from \"@angular/router\";\r\n\r\nexport interface CanComponentDeactivate {\r\n canDeactivate: () => boolean | Observable<boolean>;\r\n}\r\n\r\n/**\r\n * CanDeactivate guard function version\r\n * @param component\r\n * @returns\r\n */\r\nexport const CanDeactivateGuardFn: CanDeactivateFn<CanComponentDeactivate> = (component: CanComponentDeactivate) => component.canDeactivate ? component.canDeactivate() : true;\r\n\r\n\r\n@Injectable()\r\nexport class CanDeactivateGuard {\r\n canDeactivate(component: CanComponentDeactivate): Observable<boolean> | boolean {\r\n return component.canDeactivate ? component.canDeactivate() : true;\r\n }\r\n}\r\n","import { Injectable, inject } from \"@angular/core\";\r\nimport { HttpInterceptor, HttpRequest, HttpHandler, HttpEvent, HttpErrorResponse } from \"@angular/common/http\";\r\nimport { Observable, throwError } from \"rxjs\";\r\nimport { catchError, finalize } from \"rxjs/operators\";\r\nimport { BitMessageService } from \"../services/message.service\";\r\nimport { GeneralUtils } from \"../services/general-utils.service\";\r\nimport { HttpUtilsService } from \"../services/http-utils.service\";\r\n\r\n@Injectable({ providedIn: \"root\" })\r\nexport class CustomHttpInterceptor implements HttpInterceptor {\r\n private bitMessageService = inject(BitMessageService);\r\n private generalUtils = inject(GeneralUtils);\r\n\r\n constructor() {\r\n console.log(\"construyendo el CustomHttpInterceptor\");\r\n }\r\n\r\n intercept(request: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {\r\n let url = request.url;\r\n this.generalUtils.startLoading();\r\n return next.handle(request).pipe(\r\n catchError((error: HttpErrorResponse) => {\r\n //this.store.dispatch(new AddGlobalError(error));\r\n console.log(\"error que nos retorna el server\", error);\r\n let customError = HttpUtilsService.getCustomError(error);\r\n console.log(\"custom error\", error);\r\n this.bitMessageService.sendError(customError);\r\n return throwError(error);\r\n }),\r\n finalize(() => {\r\n console.log(\"finalizando la llamada http\");\r\n this.generalUtils.stopLoading();\r\n })\r\n );\r\n }\r\n}\r\n","import { Injectable } from \"@angular/core\";\r\nimport { DefaultDataService } from \"../services/default-data.service\";\r\n\r\n/**\r\n * Permite registrar los servicios de DataService que utilizarán los servicios EntityCollectionService para alimentar su signalStore\r\n * Cada servicio se registra en un array asociado a su nombre de entidad\r\n */\r\n@Injectable({ providedIn: \"root\" })\r\nexport class EntityDataService {\r\n protected services: { [name: string]: DefaultDataService<any> } = {};\r\n\r\n constructor() {}\r\n\r\n /**\r\n *\r\n * @param entityName\r\n * @param service\r\n */\r\n registerService<T>(entityName: string, service: DefaultDataService<T>): void {\r\n this.services[entityName.trim()] = service;\r\n }\r\n\r\n /**\r\n *\r\n * @param entityName\r\n * @returns\r\n */\r\n getService<T>(entityName: string): DefaultDataService<T> {\r\n return this.services[entityName.trim()];\r\n }\r\n}\r\n","import { emptyFilter } from \"../../base/shared/base.filter\";\r\nimport { EntityOp } from \"./entity-op\";\r\n\r\nexport interface EntityAction<P = any> {\r\n readonly type: string;\r\n readonly payload: EntityActionPayload<P>;\r\n}\r\n\r\nexport interface EntityActionPayload<P = any> {\r\n readonly entityName: string;\r\n readonly entityOp: EntityOp;\r\n readonly data?: P;\r\n}\r\n\r\nexport type EntityState = {\r\n pattern: string; //patrón de búsqueda\r\n loaded: boolean; //indica si la lista de elementos ha sido cargada\r\n loading: boolean; //indica si se está cargando la lista de elementos\r\n error: boolean; //indica si ha habido un error al cargar la lista de elementos\r\n totalItems: number; //número total de elementos que se han recuperado tras ejecutar el count en el servidor\r\n};\r\n\r\nexport const initialEntityState: EntityState = {\r\n pattern: JSON.stringify(emptyFilter),\r\n loaded: false,\r\n loading: false,\r\n error: false,\r\n totalItems: 0\r\n};\r\n\r\nexport interface Action {\r\n type: string;\r\n}\r\n\r\nexport type EntityId = string | number;\r\n\r\nexport interface BaseEntity {\r\n id: EntityId;\r\n}\r\n\r\nexport type Comparer<T> = (a: T, b: T) => number;\r\n","import { PartialStateUpdater } from \"@ngrx/signals\";\r\nimport { BaseFilter } from \"../../base/shared/base.filter\";\r\n\r\nexport const isNumber = (val: any) => typeof val === \"number\" && val === val;\r\n\r\nexport const isString = <T = any>(str: string | T): str is string => {\r\n return typeof str === \"string\";\r\n};\r\nexport function setPatternUpdater(pattern: string): PartialStateUpdater<{ pattern: string }> {\r\n return () => ({ pattern });\r\n}\r\n\r\nexport function setFilterUpdater(filter: any): PartialStateUpdater<{ filter: BaseFilter }> {\r\n return () => ({ filter });\r\n}\r\n\r\nexport function setLoadedUpdater(loaded: boolean): PartialStateUpdater<{ loaded: boolean }> {\r\n return () => ({ loaded });\r\n}\r\n\r\nexport function setLoadingUpdater(loading: boolean): PartialStateUpdater<{ loading: boolean }> {\r\n return () => ({ loading });\r\n}\r\n\r\nexport function setErrorUpdater(error: boolean): PartialStateUpdater<{ error: boolean }> {\r\n return () => ({ error });\r\n}\r\n\r\nexport function setTotalItemsUpdater(totalItems: number): PartialStateUpdater<{ totalItems: number }> {\r\n return () => ({ totalItems });\r\n}\r\n","import { patchState, signalStore, withComputed, withMethods, withState } from \"@ngrx/signals\";\r\nimport {\r\n addEntities,\r\n addEntity,\r\n removeAllEntities,\r\n removeEntities,\r\n removeEntity,\r\n setEntities,\r\n setEntity,\r\n updateEntity,\r\n withEntities\r\n} from \"@ngrx/signals/entities\";\r\nimport { Signal, computed, inject } from \"@angular/core\";\r\n\r\nimport { emptyFilter } from \"../../base/shared/base.filter\";\r\nimport { DefaultDataService } from \"../services/default-data.service\";\r\nimport { EntityDataService } from \"./entity-data.service\";\r\nimport { EntityOp } from \"./entity-op\";\r\nimport { EntityAction, BaseEntity, Action, EntityId, initialEntityState } from \"./models\";\r\nimport { EntityMetadataMap } from \"./entity-metadata-map\";\r\nimport {\r\n isNumber,\r\n isString,\r\n setErrorUpdater,\r\n setLoadedUpdater,\r\n setLoadingUpdater,\r\n setPatternUpdater,\r\n setTotalItemsUpdater\r\n} from \"./functions\";\r\n\r\nexport class EntityCollectionServiceBase<T extends BaseEntity> {\r\n /** Entity name */\r\n readonly entityName: string;\r\n /** Entity metadata */\r\n readonly entityMetadata: EntityMetadataMap;\r\n /** Internal signal store definition */\r\n private EntityStore = signalStore( \r\n // permitimos que desde fuera del store se pueda modificar el estado\r\n // por ejemplo podemos ejecutar esto: patchState(this.entityStore, setEntities(list));\r\n { providedIn: \"root\", protectedState: false }, \r\n withState(initialEntityState),\r\n withEntities<T>(),\r\n withMethods((state) => ({ \r\n setEntities(entities: T[]) {\r\n patchState(state, setEntities(entities));\r\n },\r\n setEntity(entity: T) {\r\n patchState(state, setEntity(entity));\r\n },\r\n addEntity(entity: T) {\r\n patchState(state, addEntity(entity));\r\n },\r\n addEntities(entities: T[]) {\r\n patchState(state, addEntities(entities));\r\n },\r\n removeEntity(key: EntityId) {\r\n patchState(state, removeEntity(key));\r\n },\r\n removeEntities(keys: EntityId[]) {\r\n patchState(state, removeEntities(keys));\r\n },\r\n removeAllEntities() {\r\n patchState(state, removeAllEntities());\r\n },\r\n updateEntity(update: { id: EntityId; changes: Partial<T> }) {\r\n patchState(state, updateEntity(update));\r\n },\r\n setLoaded(isLoaded: boolean) {\r\n patchState(state, setLoadedUpdater(isLoaded));\r\n },\r\n setLoading(isLoading: boolean) {\r\n patchState(state, setLoadingUpdater(isLoading));\r\n },\r\n setError(isError: boolean) {\r\n patchState(state, setErrorUpdater(isError));\r\n },\r\n setTotalItems(totalItems: number) {\r\n patchState(state, setTotalItemsUpdater(totalItems));\r\n },\r\n setPattern(pattern: string) {\r\n patchState(state, setPatternUpdater(pattern));\r\n } \r\n })),\r\n withComputed((state) => ({\r\n count: computed(() => state.entities().length),\r\n filteredEntities: computed(() => {\r\n let entities = state.entities();\r\n let entityMetadata = this.entityMetadata[this.entityName];\r\n if (entityMetadata) {\r\n console.log(\"Hay entityMetadata definido para la entidad\");\r\n // si hay filtro proporcionado podremos filtrar las entidades\r\n let filterFn = entityMetadata.filterFn;\r\n if (filterFn) {\r\n console.log(\"Hay filtro para las entities. Lo aplicamos\");\r\n // invocamos a la función de filtro definida por el usuario\r\n entities = filterFn(state.entities(), state.pattern()); //state.pattern()\r\n }\r\n // si hay comparador proporcionado podremos comparar las entidades\r\n let sortComparerFn = entityMetadata.sortComparer;\r\n if (sortComparerFn) {\r\n console.log(\"Hay comparador para las entitites. Lo aplicamos\");\r\n // invocamos a la función de comparación definida por el usuario\r\n entities = entities.sort(sortComparerFn);\r\n }\r\n }\r\n return entities;\r\n })\r\n //filter: computed(() => (state.pattern ? JSON.parse(state.pattern()) : undefined))\r\n }))\r\n );\r\n /** Internal signal store object */\r\n entityStore = inject(this.EntityStore);\r\n /** Signal of count of entities in the cached collection. */\r\n count$: Signal<number> = this.entityStore.count;\r\n /** Signal of all entities in the cached collection. */\r\n entities$: Signal<T[]> = computed(() => {\r\n let entities = this.entityStore.entities();\r\n let entityMetadata = this.entityMetadata[this.entityName];\r\n if (entityMetadata) console.log(\"Hay entityMetadata definido para la entidad\");\r\n let sortComparerFn = entityMetadata && entityMetadata.sortComparer;\r\n if (sortComparerFn) {\r\n console.log(\"Hay comparador para las entitites. Lo aplicamos\");\r\n // invocamos a la función de comparación definida por el usuario\r\n entities = entities.sort(sortComparerFn);\r\n }\r\n return entities;\r\n });\r\n /** Signal of all ids in the cached collection. */\r\n ids$: Signal<EntityId[]> = this.entityStore.ids;\r\n /** Signal of the filter object applied by the entity collection's filter function */\r\n //filter$: Signal<any> = this.entityStore.filter;\r\n /** Signal of the filter pattern applied by the entity collection's filter function */\r\n pattern$: Signal<string> = this.entityStore.pattern;\r\n /** Signal of entities in the cached collection that pass the filter function */\r\n filteredEntities$: Signal<T[]> = this.entityStore.filteredEntities;\r\n /** Signal of the keys of the cached collection, in the collection's native sort order */\r\n keys$: Signal<EntityId[]> = this.entityStore.ids;\r\n /** Signal true when the collection has been loaded */\r\n loaded$: Signal<boolean> = this.entityStore.loaded;\r\n /** Signal true when a multi-entity query command is in progress. */\r\n loading$: Signal<boolean> = this.entityStore.loading;\r\n /** Signal with the number of items that could be collected from the server */\r\n totalItems$: Signal<number> = this.entityStore.totalItems;\r\n /** Signal with the indicator of an error */\r\n error$: Signal<boolean> = this.entityStore.error;\r\n /** We inject the EntityDataService service to be able to obtain the DataService service to be able to access the server.\r\n We know which service to use thanks to the name of the entity */\r\n entityDataService = inject(EntityDataService);\r\n /** Service data for this entity store. Obtained from the EntityDataService.*/\r\n service: DefaultDataService<T>;\r\n\r\n constructor(entityName: string, entityMetadata: EntityMetadataMap) {\r\n //}, protected entityStore: any) {\r\n this.entityName = entityName;\r\n this.entityMetadata = entityMetadata;\r\n // obtenemos el servicio registrado con el key\r\n this.service = this.entityDataService.getService(this.entityName);\r\n if (this.service == null) {\r\n throw new Error(\r\n `No EntityCollectionServiceBase for entity type ${this.entityName}. Did you forget to register the service with the EntityDataService?`\r\n );\r\n }\r\n }\r\n\r\n /**\r\n * Create an {EntityAction} for this entity type and\r\n * dispatch it immediately to the store.\r\n * @param op {EntityOp} the entity operation\r\n * @param [data] the action data\r\n * @returns the dispatched EntityAction\r\n */\r\n createAndDispatch<P = any>(op: EntityOp, data?: P): EntityAction<P> {\r\n return null;\r\n }\r\n /**\r\n * Dispatch an action of any type to the ngrx store.\r\n * @param action the Action\r\n * @returns the dispatched Action\r\n */\r\n dispatch(action: Action): Action {\r\n return;\r\n }\r\n /**\r\n * Dispatch action to save a new entity to remote storage.\r\n * @param entity entity to add without a key.\r\n * @returns Promise of the entity\r\n * after server reports successful save or the save error.\r\n */\r\n async add(entity: T): Promise<T> {\r\n if (!entity) return;\r\n const record = await this.service.add(entity);\r\n this.addOneToCache(record);\r\n return record;\r\n }\r\n\r\n /**\r\n * Dispatch action to delete entity from remote storage by key.\r\n * @param entity The entity to delete\r\n * @returns Promise of the deleted entity's key\r\n * after server reports successful save or the save error.\r\n */\r\n delete(entity: T): Promise<EntityId>;\r\n\r\n /**\r\n * Dispatch action to delete entity from remote storage by key.\r\n * @param key The primary key of the entity to remove\r\n * @returns Promise of the deleted key\r\n * after server reports successful save or the save error.\r\n */\r\n delete(key: EntityId): Promise<EntityId>;\r\n async delete(key: T | EntityId): Promise<EntityId> {\r\n if (!key) return;\r\n let id: EntityId;\r\n if (!isNumber(key) && !isString(key)) {\r\n id = key[\"id\"];\r\n } else {\r\n id = key as EntityId;\r\n }\r\n await this.service.delete(id);\r\n this.removeOneFromCache(id);\r\n return id;\r\n }\r\n /**\r\n * Dispatch action to query remote storage for all entities and\r\n * merge the queried entities into the cached collection.\r\n * @returns Promise of the collection\r\n * after server reports successful query or the query error.\r\n */\r\n async getAll(): Promise<T[]> {\r\n this.checkService();\r\n const list = await this.callServiceOperation(() => this.service.getAll());\r\n list && this.entityStore.setEntities(list); //patchState(this.entityStore, setEntities(list));\r\n return list;\r\n }\r\n\r\n /**\r\n * Dispatch action to query remote storage for the entity with this primary key.\r\n * If the server returns an entity, merge it into the cached collection.\r\n * @param key The primary key of the entity to get.\r\n * @returns Promise of the queried entity that is in the collection\r\n * after server reports success or the query error.\r\n */\r\n async getByKey(key: any): Promise<T> {\r\n this.checkService();\r\n const record = await this.callServiceOperation(() => this.service.getById(key));\r\n record && this.entityStore.setEntity(record); //patchState(this.entityStore, setEntity(record));\r\n return record;\r\n }\r\n /**\r\n * Dispatch action to query remote storage for the entities that satisfy a query expressed\r\n * with either a query parameter map or an HTTP URL query string,\r\n * and merge the results into the cached collection.\r\n * @param queryParams the query in a form understood by the server\r\n * @param [options] options that influence merge behavior\r\n * @returns Promise of the queried entities\r\n * after server reports successful query or the query error.\r\n */\r\n async getWithQuery(queryParams: string): Promise<T[]> {\r\n this.checkService();\r\n let list = await this.callServiceOperation(() => this.service.getWithQuery(queryParams));\r\n list && this.entityStore.setEntities(list);//patchState(this.entityStore, setEntities(list));\r\n return list;\r\n }\r\n /**\r\n * Dispatch action to query remote storage for all entities and\r\n * completely replace the cached collection with the queried entities.\r\n * @returns Promise of the collection\r\n * after server reports successful query or the query error.\r\n */\r\n async load(): Promise<T[]> {\r\n this.checkService();\r\n const list = await this.callServiceOperation(() => this.service.getAll());\r\n this.addAllToCache(list);\r\n return list;\r\n }\r\n /**\r\n * Dispatch action to query remote storage for the entities that satisfy a query expressed\r\n * with an HTTP URL query string,\r\n * and completely replace the cached collection with the queried entities.\r\n * @param queryParams the query in a form understood by the server\r\n * @returns Promise of the queried entities\r\n * after server reports successful query or the query error.\r\n */\r\n async loadWithQuery(queryParams: string): Promise<T[]> {\r\n this.checkService();\r\n const list = await this.callServiceOperation(() => this.service.getWithQuery(queryParams));\r\n this.addAllToCache(list);\r\n return list;\r\n }\r\n /**\r\n * Dispatch action to save the updated entity (or partial entity) in remote storage.\r\n * The update entity may be partial (but must have its key)\r\n * in which case it patches the existing entity.\r\n * @param entity update entity, which might be a partial of T but must at least have its key.\r\n * @returns Promise of the updated entity\r\n * after server reports successful save or the save error.\r\n */\r\n async update(entity: Partial<T>): Promise<T> {\r\n this.checkService();\r\n this.checkId(entity);\r\n const record = await this.service.update(entity[\"id\"], entity);\r\n this.updateOneInCache(record);\r\n return record;\r\n }\r\n /**\r\n * Dispatch action to save a new or existing entity to remote storage.\r\n * Call only if the server supports upsert.\r\n * @param entity entity to add or upsert.\r\n * It may omit its key if an add, and is pessimistic, and the server creates the key;\r\n * must have a key if optimistic save.\r\n * @param [options] options that influence save and merge behavior\r\n * @returns Promise of the entity\r\n * after server reports successful save or the save error.\r\n */\r\n async upsert(entity: T): Promise<T> {\r\n this.checkService();\r\n const record = await this.service.upsert(entity);\r\n // setEntity crea el objeto en el store si no existe o lo actualiza si existe\r\n this.entityStore.setEntity(record); //patchState(this.entityStore, setEntity(record)); \r\n return record;\r\n }\r\n /*** Cache-only operations that do not update remote storage ***/\r\n /**\r\n * Replace all entities in the cached collection.\r\n * Does not save to remote storage.\r\n * @param entities to add directly to cache.\r\n */\r\n addAllToCache(entities: T[]): void {\r\n this.entityStore.setEntities(entities); //patchState(this.entityStore, setEntities(entities));\r\n //patchState(this.entityStore, setAllEntities(entities));\r\n }\r\n /**\r\n * Add a new entity directly to the cache.\r\n * Does not save to remote storage.\r\n * Ignored if an entity with the same primary key is already in cache.\r\n * @param entity to add directly to cache.\r\n * @param [options] options such as mergeStrategy\r\n */\r\n addOneToCache(entity: T): void {\r\n this.entityStore.addEntity(entity); //patchState(this.entityStore, addEntity(entity));\r\n }\r\n /**\r\n * Add multiple new entities directly to the cache.\r\n * Does not save to remote storage.\r\n * Entities with primary keys already in cache are ignored.\r\n * @param entities to add directly to cache.\r\n */\r\n addManyToCache(entities: T[]): void {\r\n this.entityStore.addEntities(entities); //patchState(this.entityStore, addEntities(entities));\r\n }\r\n /** Clear the cached entity collection */\r\n clearCache(): void {\r\n this.entityStore.removeAllEntities(); //patchState(this.entityStore, removeAllEntities());\r\n this.setTotalItems(0);\r\n }\r\n /**\r\n * Remove an entity directly from the cache.\r\n * Does not delete that entity from remote storage.\r\n * @param entity The entity to remove\r\n */\r\n removeOneFromCache(entity: T): void;\r\n /**\r\n * Remove an entity directly from the cache.\r\n * Does not delete that entity from remote storage.\r\n * @param key The primary key of the entity to remove\r\n * @param [options] options such as mergeStrategy\r\n */\r\n removeOneFromCache(key: EntityId);\r\n removeOneFromCache(key: T | EntityId) {\r\n if (!key) return;\r\n let id: EntityId;\r\n if (!isNumber(key) && !isString(key)) {\r\n id = key[\"id\"];\r\n } else {\r\n id = key as EntityId;\r\n }\r\n this.entityStore.removeEntity(id); //patchState(this.entityStore, removeEntity(id));\r\n }\r\n /**\r\n * Remove multiple entities directly from the cache.\r\n * Does not delete these entities from remote storage.\r\n * @param entity The entities to remove\r\n */\r\n removeManyFromCache(entities: T[]): void;\r\n /**\r\n * Remove multiple entities directly from the cache.\r\n * Does not delete these entities from remote storage.\r\n * @param keys The primary keys of the entities to remove\r\n * @param [options] options such as mergeStrategy\r\n */\r\n removeManyFromCache(keys: EntityId[]): void;\r\n removeManyFromCache(keys: T[] | EntityId[]): void {\r\n if (!keys) return;\r\n let ids: EntityId[] = [];\r\n let key = keys[0];\r\n if (!isNumber(key) && !isString(key)) {\r\n ids = (keys as T[]).map((entity) => entity[\"id\"]);\r\n } else {\r\n ids = keys as EntityId[];\r\n }\r\n this.entityStore.removeEntities(ids); //patchState(this.entityStore, removeEntities(ids));\r\n }\r\n /**\r\n * Update a cached entity directly.\r\n * Does not update that entity in remote storage.\r\n * Ignored if an entity with matching primary key is not in cache.\r\n * The update entity may be partial (but must have its key)\r\n * in which case it patches the existing entity.\r\n * @param entity to update directly in cache.\r\n */\r\n updateOneInCache(entity: Partial<T>): void {\r\n if (entity && entity[\"id\"]) {\r\n this.entityStore.updateEntity({ id: entity[\"id\"], changes: entity }); //patchState(this.entityStore, updateEntity({ id: entity[\"id\"], changes: entity }));\r\n }\r\n }\r\n /**\r\n * Update multiple cached entities directly.\r\n * Does not update these entities in remote storage.\r\n * Entities whose primary keys are not in cache are ignored.\r\n * Update entities may be partial but must at least have their keys.\r\n * such partial entities patch their cached counterparts.\r\n * @param entities to update directly in cache.\r\n * @param [options] options such as mergeStrategy\r\n */\r\n updateManyInCache(entities: Partial<T>[]): void {\r\n entities.forEach((entity) => this.updateOneInCache(entity));\r\n }\r\n /**\r\n * Insert or update a cached entity directly.\r\n * Does not save to remote storage.\r\n * Upsert entity might be a partial of T but must at least have its key.\r\n * Pass the Update<T> structure as the payload.\r\n * @param entity to upsert directly in cache.\r\n */\r\n upsertOneInCache(entity: Partial<T>): void {\r\n if (!entity) return;\r\n if (entity[\"id\"]) {\r\n this.updateOneInCache(entity);\r\n } else {\r\n this.addOneToCache(entity as T);\r\n }\r\n }\r\n /**\r\n * Insert or update multiple cached entities directly.\r\n * Does not save to remote storage.\r\n * Upsert entities might be partial but must at least have their keys.\r\n * Pass an array of the Update<T> structure as the payload.\r\n * @param entities to upsert directly in cache.\r\n */\r\n upsertManyInCache(entities: Partial<T>[]): void {\r\n if (!entities) return;\r\n entities.forEach((entity) => this.upsertOneInCache(entity));\r\n }\r\n /**\r\n * Set the pattern that the collection's filter applies\r\n * when using the `filteredEntities` selector.\r\n */\r\n setFilter(pattern: any): void {\r\n //patchState(this.entityStore, setFilterUpdater(filter));\r\n //let pattern = filter != undefined ? JSON.stringify(filter) : \"\";\r\n this.entityStore.setPattern(pattern); //patchState(this.entityStore, setPatternUpdater(pattern));\r\n }\r\n initFilter(): void {\r\n this.setFilter(JSON.stringify(emptyFilter));\r\n }\r\n /** Set the error indicator */\r\n setError(error: boolean): void {\r\n this.entityStore.setError(error); //patchState(this.entityStore, setErrorUpdater(error));\r\n }\r\n /** Set the total number of items in the collection */\r\n setTotalItems(totalItems: number): void {\r\n this.entityStore.setTotalItems(totalItems); //patchState(this.entityStore, setTotalItemsUpdater(totalItems));\r\n }\r\n /** Set the loaded flag */\r\n setLoaded(isLoaded: boolean): void {\r\n this.entityStore.setLoaded(isLoaded); //patchState(this.entityStore, setLoadedUpdater(isLoaded));\r\n }\r\n /** Set the loading flag */\r\n setLoading(isLoading: boolean): void {\r\n this.entityStore.setLoading(isLoading); //patchState(this.entityStore, setLoadingUpdater(isLoading));\r\n }\r\n /** Set the loaded flag to false, the loading flag to false and the error flag to false */\r\n initLoad() {\r\n this.setLoaded(false);\r\n this.setLoading(false);\r\n this.setError(false);\r\n }\r\n /** Set the loaded flag to false, the loading flag to true and the error flag to false */\r\n private loading() {\r\n this.setLoaded(false);\r\n this.setLoading(true);\r\n this.setError(false);\r\n }\r\n /** Set the loaded flag to true, the loading flag to false and the error flag to false */\r\n private loaded() {\r\n this.setLoaded(true);\r\n this.setLoading(false);\r\n this.setError(false);\r\n }\r\n /** Check if the service object has been provided. Throws an Error otherwise */\r\n private checkService() {\r\n if (!this.service) {\r\n throw new Error(\r\n `No EntityCollectionServiceBase for entity type ${this.entityName}. Did you forget to register the service with the EntityDataService?`\r\n );\r\n }\r\n }\r\n /** Check if the entity object has any property with the name id. Throws an Error otherwise */\r\n private checkId(entity: Partial<T>) {\r\n if (!entity[\"id\"]) {\r\n throw new Error(`Missing primary key 'id' in entity update data`);\r\n }\r\n }\r\n /** Call a service operation and handle the result */\r\n private async callServiceOperation(operationToCall): Promise<any> {\r\n this.loading();\r\n try {\r\n let result = await operationToCall();\r\n this.loaded();\r\n return result;\r\n } catch (error) {\r\n this.setLoaded(false);\r\n this.setLoading(false);\r\n this.setError(true);\r\n throw error;\r\n }\r\n }\r\n}\r\n","/**\r\n * Filters the `entities` array argument and returns the original `entities`,\r\n * or a new filtered array of entities.\r\n * NEVER mutate the original `entities` array itself.\r\n **/\r\nexport type EntityFilterFn<T> = (entities: T[], pattern?: any) => T[];\r\n\r\n/**\r\n * Creates an {EntityFilterFn} that matches RegExp or RegExp string pattern\r\n * anywhere in any of the given props of an entity.\r\n * If pattern is a string, spaces are significant and ignores case.\r\n */\r\nexport function PropsFilterFnFactory<T = any>(\r\n props: (keyof T)[] = []\r\n): EntityFilterFn<T> {\r\n if (props.length === 0) {\r\n // No properties -> nothing could match -> return unfiltered\r\n return (entities: T[], pattern: string) => entities;\r\n }\r\n\r\n return (entities: T[], pattern: string | RegExp) => {\r\n if (!entities) {\r\n return [];\r\n }\r\n\r\n const regExp =\r\n typeof pattern === 'string' ? new RegExp(pattern, 'i') : pattern;\r\n if (regExp) {\r\n const predicate = (e: any) => props.some((prop) => regExp.test(e[prop]));\r\n return entities.filter(predicate);\r\n }\r\n return entities;\r\n };\r\n}\r\n","/** General purpose entity action operations, good for any entity type */\r\nexport enum EntityOp {\r\n // Persistance operations\r\n CANCEL_PERSIST = \"cancel-persist\",\r\n CANCELED_PERSIST = \"canceled-persist\",\r\n\r\n QUERY_ALL = \"query-all\",\r\n QUERY_ALL_SUCCESS = \"query-all/success\",\r\n QUERY_ALL_ERROR = \"query-all/error\",\r\n\r\n QUERY_LOAD = \"query-load\",\r\n QUERY_LOAD_SUCCESS = \"query-load/success\",\r\n QUERY_LOAD_ERROR = \"query-load/error\",\r\n\r\n QUERY_MANY = \"query-many\",\r\n QUERY_MANY_SUCCESS = \"query-many/success\",\r\n QUERY_MANY_ERROR = \"query-many/error\",\r\n\r\n QUERY_BY_KEY = \"query-by-key\",\r\n QUERY_BY_KEY_SUCCESS = \"query-by-key/success\",\r\n QUERY_BY_KEY_ERROR = \"query-by-key/error\",\r\n\r\n SAVE_ADD_MANY = \"save/add-many\",\r\n SAVE_ADD_MANY_ERROR = \"save/add-many/error\",\r\n SAVE_ADD_MANY_SUCCESS = \"save/add-many/success\",\r\n\r\n SAVE_ADD_ONE = \"save/add-one\",\r\n SAVE_ADD_ONE_ERROR = \"save/add-one/error\",\r\n SAVE_ADD_ONE_SUCCESS = \"save/add-one/success\",\r\n\r\n SAVE_DELETE_MANY = \"save/delete-many\",\r\n SAVE_DELETE_MANY_SUCCESS = \"save/delete-many/success\",\r\n SAVE_DELETE_MANY_ERROR = \"save/delete-many/error\",\r\n\r\n SAVE_DELETE_ONE = \"save/delete-one\",\r\n SAVE_DELETE_ONE_SUCCESS = \"save/delete-one/success\",\r\n SAVE_DELETE_ONE_ERROR = \"save/delete-one/error\",\r\n\r\n SAVE_UPDATE_MANY = \"save/update-many\",\r\n SAVE_UPDATE_MANY_SUCCESS = \"save/update-many/success\",\r\n SAVE_UPDATE_MANY_ERROR = \"save/update-many/error\",\r\n\r\n SAVE_UPDATE_ONE = \"save/update-one\",\r\n SAVE_UPDATE_ONE_SUCCESS = \"save/update-one/success\",\r\n SAVE_UPDATE_ONE_ERROR = \"save/update-one/error\",\r\n\r\n // Use only if the server supports upsert;\r\n SAVE_UPSERT_MANY = \"save/upsert-many\",\r\n SAVE_UPSERT_MANY_SUCCESS = \"save/upsert-many/success\",\r\n SAVE_UPSERT_MANY_ERROR = \"save/upsert-many/error\",\r\n\r\n // Use only if the server supports upsert;\r\n SAVE_UPSERT_ONE = \"save/upsert-one\",\r\n SAVE_UPSERT_ONE_SUCCESS = \"save/upsert-one/success\",\r\n SAVE_UPSERT_ONE_ERROR = \"save/upsert-one/error\",\r\n\r\n // Cache operations\r\n ADD_ALL = \"add-all\",\r\n ADD_MANY = \"add-many\",\r\n ADD_ONE = \"add-one\",\r\n REMOVE_ALL = \"remove-all\",\r\n REMOVE_MANY = \"remove-many\",\r\n REMOVE_ONE = \"remove-one\",\r\n UPDATE_MANY = \"update-many\",\r\n UPDATE_ONE = \"update-one\",\r\n UPSERT_MANY = \"upsert-many\",\r\n UPSERT_ONE = \"upsert-one\",\r\n\r\n COMMIT_ALL = \"commit-all\",\r\n COMMIT_MANY = \"commit-many\",\r\n COMMIT_ONE = \"commit-one\",\r\n UNDO_ALL = \"undo-all\",\r\n UNDO_MANY = \"undo-many\",\r\n UNDO_ONE = \"undo-one\",\r\n\r\n SET_CHANGE_STATE = \"set-change-state\",\r\n SET_COLLECTION = \"set-collection\",\r\n SET_FILTER = \"set-filter\",\r\n SET_LOADED = \"set-loaded\",\r\n SET_LOADING = \"set-loading\"\r\n}\r\n\r\n/** \"Success\" suffix appended to EntityOps that are successful.*/\r\nexport const OP_SUCCESS = \"/success\";\r\n\r\n/** \"Error\" suffix appended to EntityOps that have failed.*/\r\nexport const OP_ERROR = \"/error\";\r\n\r\n/** Make the error EntityOp corresponding to the given EntityOp */\r\nexport function makeErrorOp(op: EntityOp): EntityOp {\r\n return <EntityOp>(op + OP_ERROR);\r\n}\r\n\r\n/** Make the success EntityOp corresponding to the given EntityOp */\r\nexport function makeSuccessOp(op: EntityOp): EntityOp {\r\n return <EntityOp>(op + OP_SUCCESS);\r\n}\r\n","import { Injectable } from \"@angular/core\";\r\n\r\n/**\r\n * Known resource URLS for specific entity types.\r\n * Each entity's resource URLS are endpoints that\r\n * target single entity and multi-entity HTTP operations.\r\n * Used by the `DefaultHttpUrlGenerator`.\r\n */\r\nexport abstract class EntityHttpResourceUrls {\r\n [entityName: string]: HttpResourceUrls;\r\n}\r\n\r\n/**\r\n * Resource URLS for HTTP operations that target single entity\r\n * and multi-entity endpoints.\r\n */\r\nexport interface HttpResourceUrls {\r\n /**\r\n * The URL path for a single entity endpoint, e.g, `some-api-root/hero/`\r\n * such as you'd use to add a hero.\r\n * Example: `httpClient.post<Hero>('some-api-root/hero/', addedHero)`.\r\n * Note trailing slash (/).\r\n */\r\n entityResourceUrl: string;\r\n /**\r\n * The URL path for a multiple-entity endpoint, e.g, `some-api-root/heroes/`\r\n * such as you'd use when getting all heroes.\r\n * Example: `httpClient.get<Hero[]>('some-api-root/heroes/')`\r\n * Note trailing slash (/).\r\n */\r\n collectionResourceUrl: string;\r\n}\r\n\r\n@Injectable({ providedIn: \"root\" })\r\nexport class HttpUrlGenerator {\r\n protected knownHttpResourceUrls: EntityHttpResourceUrls = {};\r\n\r\n /**\r\n * Get or generate the entity and collection resource URLs for the given entity type name\r\n * @param entityName {string} Name of the entity type, e.g, 'Hero'\r\n * @param root {string} Root path to the resource, e.g., 'some-api`\r\n */\r\n protected getResourceUrls(entityName: string): HttpResourceUrls {\r\n let resourceUrls = this.knownHttpResourceUrls[entityName];\r\n if (!resourceUrls) {\r\n // lanza una excepcion indicando que no se ha encontrado la entidad\r\n throw new Error(`No HTTP resource URLs found for entity type name '${entityName}'`);\r\n }\r\n return resourceUrls;\r\n }\r\n\r\n /**\r\n * Create the path to a single entity resource\r\n * @param entityName {string} Name of the entity type, e.g, 'Hero'\r\n * @param root {string} Root path to the resource, e.g., 'some-api`\r\n * @returns complete path to resource, e.g, 'some-api/hero'\r\n */\r\n entityResource(entityName: string): string {\r\n return this.getResourceUrls(entityName).entityResourceUrl;\r\n }\r\n\r\n /**\r\n * Create the path to a multiple entity (collection) resource\r\n * @param entityName {string} Name of the entity type, e.g, 'Hero'\r\n * @param root {string} Root path to the resource, e.g., 'some-api`\r\n * @returns complete path to resource, e.g, 'some-api/heroes'\r\n */\r\n collectionResource(entityName: string): string {\r\n return this.getResourceUrls(entityName).collectionResourceUrl;\r\n }\r\n /**\r\n * Register known single-entity and collection resource URLs for HTTP calls\r\n * @param entityHttpResourceUrls {EntityHttpResourceUrls} resource urls for specific entity type names\r\n * Well-formed resource urls end in a '/';\r\n * Note: this method does not ensure that resource urls are well-formed.\r\n */\r\n registerHttpResourceUrls(entityHttpResourceUrls: EntityHttpResourceUrls): void {\r\n this.knownHttpResourceUrls = {\r\n ...this.knownHttpResourceUrls,\r\n ...(entityHttpResourceUrls || {})\r\n };\r\n }\r\n}\r\n\r\n/** Remove leading & trailing spaces or slashes */\r\nexport function normalizeRoot(root: string) {\r\n return root.replace(/^[/\\s]+|[/\\s]+$/g, \"\");\r\n}\r\n","/*\r\n * Public API Surface of bit-ng-library\r\n */\r\n\r\nexport * from \"./lib/base/components/base.component\";\r\nexport * from \"./lib/base/shared/base-interface.service\";\r\nexport * from \"./lib/base/shared/base.filter\";\r\nexport * from \"./lib/base/shared/base.service\";\r\nexport * from \"./lib/base/shared/utils\";\r\nexport * from \"./lib/base/models/types\";\r\nexport * from \"./lib/base/models/toolbars\";\r\n\r\nexport * from \"./lib/sharedlibrary/sharedlibrary.module\";\r\n\r\nexport * from \"./lib/sharedlibrary/components/breadcrumb/bit-breadcrumb.component\";\r\nexport * from \"./lib/sharedlibrary/components/contol-messages/bit-control-messages.component\";\r\nexport * from \"./lib/sharedlibrary/components/dialog/bit-dialog.component\";\r\nexport * from \"./lib/sharedlibrary/components/footer/bit-footer.component\";\r\nexport * from \"./lib/sharedlibrary/components/footer/bit-footer-messages.component\";\r\nexport * from \"./lib/sharedlibrary/components/footer/bit-pajigator.component\";\r\nexport * from \"./lib/sharedlibrary/components/header/bit-header.component\";\r\nexport * from \"./lib/sharedlibrary/components/help/bit-help.component\";\r\nexport * from \"./lib/sharedlibrary/components/loading/bit-loading.component\";\r\nexport * from \"./lib/sharedlibrary/components/notificacion/bit-notification-toast.component\";\r\nexport * from \"./lib/sharedlibrary/components/notificacion/bit-notification-error.component\";\r\nexport * from \"./lib/sharedlibrary/components/toolbar/bit-toolbar.component\";\r\nexport * from \"./lib/sharedlibrary/components/upload/bit-ng-upload.component\";\r\nexport * from \"./lib/sharedlibrary/components/user/bit-user-controls.component\";\r\nexport * from \"./lib/sharedlibrary/components/misc/bit-boton-ayuda.component\";\r\nexport * from \"./lib/sharedlibrary/components/misc/bit-column-boolean.component\";\r\nexport * from \"./lib/sharedlibrary/components/misc/bit-domain-value.component\";\r\nexport * from \"./lib/sharedlibrary/components/language/bit-language-selector.component\";\r\nexport * from \"./lib/sharedlibrary/components/misc/bit-sidebar.component\";\r\nexport * from \"./lib/sharedlibrary/components/theme/bit-theme-selector.component\";\r\nexport * from \"./lib/sharedlibrary/components/settings/bit-settings.component\";\r\nexport * from \"./lib/sharedlibrary/components/form/autocomplete/bit-autocomplete.component\";\r\nexport * from \"./lib/sharedlibrary/components/form/text/bit-text.component\";\r\nexport * from \"./lib/sharedlibrary/components/form/textarea/bit-textarea.component\";\r\nexport * from \"./lib/sharedlibrary/components/form/date/bit-date.component\";\r\nexport * from \"./lib/sharedlibrary/components/form/time/bit-time.component\";\r\nexport * from \"./lib/sharedlibrary/components/form/datetime/bit-datetime.component\";\r\nexport * from \"./lib/sharedlibrary/components/form/calendar/bit-calendar.component\";\r\nexport * from \"./lib/sharedlibrary/components/form/checkbox/bit-checkbox.component\";\r\nexport * from \"./lib/sharedlibrary/components/form/multiple-checkbox/bit-multiple-checkbox.component\";\r\nexport * from \"./lib/sharedlibrary/components/form/switch/bit-switch.component\";\r\nexport * from \"./lib/sharedlibrary/components/form/switch/bit-switch-si-no.component\";\r\nexport * from \"./lib/sharedlibrary/components/form/dropdown/bit-dropdown.component\";\r\nexport * from \"./lib/sharedlibrary/components/form/dropdown/bit-dropdown-multiple.component\";\r\nexport * from \"./lib/sharedlibrary/components/form/dropdown/bit-dropdown-general.component\";\r\nexport * from \"./lib/sharedlibrary/components/form/editor/bit-editor.component\";\r\nexport * from \"./lib/sharedlibrary/components/form/readonly/bit-readonly.component\";\r\nexport * from \"./lib/sharedlibrary/components/form/number/bit-number.component\";\r\nexport * from \"./lib/sharedlibrary/components/form/amount/bit-amount.component\";\r\nexport * from \"./lib/sharedlibrary/components/form/bit-custom.component\";\r\nexport * from \"./lib/sharedlibrary/components/form/bit-general.component\";\r\n\r\nexport * from \"./lib/sharedlibrary/data/autocomplete\"\r\nexport * from \"./lib/sharedlibrary/data/ayudacontextual\";\r\nexport * from \"./lib/sharedlibrary/data/bitmessage\";\r\nexport * from \"./lib/sharedlibrary/data/bitnotification-error\";\r\nexport * from \"./lib/sharedlibrary/data/bitnotification\";\r\nexport * from \"./lib/sharedlibrary/data/configuration-editor\";\r\nexport * from \"./lib/sharedlibrary/data/domain\";\r\nexport * from \"./lib/sharedlibrary/data/error\";\r\nexport * from \"./lib/sharedlibrary/data/fichero\";\r\nexport * from \"./lib/sharedlibrary/data/item\";\r\n\r\nexport * from \"./lib/sharedlibrary/directives/bit-panel.directive\";\r\nexport * from \"./lib/sharedlibrary/directives/focus-register.directive\";\r\n\r\nexport * from \"./lib/sharedlibrary/pipes/bytes.pipe\";\r\nexport * from \"./lib/sharedlibrary/pipes/capitalize.pipe\";\r\nexport * from \"./lib/sharedlibrary/pipes/cut-text.pipe\";\r\nexport * from \"./lib/sharedlibrary/pipes/other-actions.pipe\";\r\nexport * from \"./lib/sharedlibrary/pipes/pipe-cantidadmoneda.pipe\";\r\nexport * from \"./lib/sharedlibrary/pipes/remove-line-breaks.pipe\";\r\nexport * from \"./lib/sharedlibrary/pipes/domain-value.pipe\";\r\nexport * from \"./lib/sharedlibrary/pipes/domain-list-value.pipe\";\r\nexport * from \"./lib/sharedlibrary/pipes/list-value.pipe\";\r\nexport * from \"./lib/sharedlibrary/pipes/si-o-no.pipe\";\r\nexport * from \"./lib/sharedlibrary/pipes/stringify.pipe\"\r\n\r\nexport * from \"./lib/sharedlibrary/services/autocomplete-data.service\";\r\nexport * from \"./lib/sharedlibrary/services/ayuda.service\";\r\nexport * from \"./lib/sharedlibrary/services/base-data-adapter.service\";\r\nexport * from \"./lib/sharedlibrary/services/base-data.service\";\r\nexport * from \"./lib/sharedlibrary/services/default-data.service\";\r\nexport * from \"./lib/sharedlibrary/services/bit-panel.service\";\r\nexport * from \"./lib/sharedlibrary/services/custom-validators.service\";\r\nexport * from \"./lib/sharedlibrary/services/date-utils.service\";\r\nexport * from \"./lib/sharedlibrary/services/domain.service\";\r\nexport * from \"./lib/sharedlibrary/services/download.service\";\r\nexport * from \"./lib/sharedlibrary/services/focus.service\";\r\nexport * from \"./lib/sharedlibrary/services/general-utils.service\";\r\nexport * from \"./lib/sharedlibrary/services/http-utils.service\";\r\nexport * from \"./lib/sharedlibrary/services/locator.service\";\r\nexport * from \"./lib/sharedlibrary/services/message.service\";\r\nexport * from \"./lib/sharedlibrary/services/session-shared.service\";\r\nexport * from \"./lib/sharedlibrary/services/tableview.service\";\r\nexport * from \"./lib/sharedlibrary/services/toolbar.service\";\r\nexport * from \"./lib/sharedlibrary/services/translate.service\";\r\nexport * from \"./lib/sharedlibrary/services/upload.service\";\r\nexport * from \"./lib/sharedlibrary/services/storage.service\";\r\nexport * from \"./lib/sharedlibrary/services/theme-fbit.service\";\r\nexport * from \"./lib/sharedlibrary/services/locale.service\";\r\nexport * from \"./lib/sharedlibrary/services/clear-items.service\";\r\nexport * from \"./lib/sharedlibrary/services/menu.service\";\r\n\r\nexport * from \"./lib/sharedlibrary/guards/candeactivate.guard\";\r\nexport * from \"./lib/sharedlibrary/global.constants\";\r\nexport * from \"./lib/sharedlibrary/utils/custom-http-interceptor\";\r\nexport * from \"./lib/sharedlibrary/utils/general-utils\";\r\n\r\nexport * from \"./lib/sharedlibrary/entities/entity-collection.service\";\r\nexport * from \"./lib/sharedlibrary/entities/entity-data.service\";\r\nexport * from \"./lib/sharedlibrary/entities/entity-filters\";\r\nexport * from \"./lib/sharedlibrary/entities/entity-metadata-map\";\r\nexport * from \"./lib/sharedlibrary/entities/entity-op\";\r\nexport * from \"./lib/sharedlibrary/entities/functions\";\r\nexport * from \"./lib/sharedlibrary/entities/http-url-generator\";\r\nexport * from \"./lib/sharedlibrary/entities/models\";","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["CustomError","i1","i2","i3","i4","i5.CantidadMonedaPipe","i1.BitHelpComponent","i1.BitPajigatorComponent","i2.BitFooterMessagesComponent","i3.BitBotonAyudaComponent","i2.BitBreadCrumbComponent","i3.BitToolbarComponent","i6.FocusRegisterDirective","i7","i4.FocusRegisterDirective","i5.BitControlMessages","i3.FocusRegisterDirective","i4.BitControlMessages","i3.BitControlMessages","i2.TranslateService","i6","i5","i6.BitLanguageSelectorComponent","i7.BitThemeSelectorComponent","isNumber","FileUploadModulePrimeNG","FileUploadModule"],"mappings":"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"}
|