bit-ng-library 19.0.2 → 19.0.3
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 +15 -0
- package/fesm2022/bit-ng-library.mjs +11 -7
- package/fesm2022/bit-ng-library.mjs.map +1 -1
- package/lib/sharedlibrary/components/notificacion/bit-notification-error.component.d.ts +1 -1
- package/lib/sharedlibrary/components/notificacion/bit-notification-error.component.d.ts.map +1 -1
- package/lib/sharedlibrary/data/bitnotification-error.d.ts +1 -0
- package/lib/sharedlibrary/data/bitnotification-error.d.ts.map +1 -1
- package/lib/sharedlibrary/services/message.service.d.ts +1 -1
- package/lib/sharedlibrary/services/message.service.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/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/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/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/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/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/pipes/other-actions.pipe.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/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/directives/view-mode.directive.ts","../../../projects/bit-ng-library/src/lib/sharedlibrary/directives/edit-mode.directive.ts","../../../projects/bit-ng-library/src/lib/sharedlibrary/components/form/bit-editable.component.ts","../../../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/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/pipe-cantidadmoneda.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/services/storage.service.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/services/locale.service.ts","../../../projects/bit-ng-library/src/lib/sharedlibrary/components/misc/bit-language-selector.component.ts","../../../projects/bit-ng-library/src/lib/sharedlibrary/components/misc/bit-theme-selector.component.ts","../../../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/services/theme-fbit.service.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":["import { Subject } from \"rxjs\";\nimport { DestroyRef, Directive, inject } from \"@angular/core\";\n\n@Directive()\nexport abstract class BaseComponent {\n destroy$: Subject<boolean> = new Subject<boolean>();\n destroyRef = inject(DestroyRef);\n\n ngOnDestroy() {\n this.destroy$.next(true);\n this.destroy$.unsubscribe();\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 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};\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 \n export 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 */\n export 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 */\n export 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 */\n export 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 * @returns un objeto de tipo ToolbarButtonType\n */\n export function buildButtonToolbar(visible: boolean, enable: boolean, otherAction?: boolean, action?: string, label?: string, estilo?: string): ToolbarButtonType {\n let optionToolbar = { visible, enable } as ToolbarButtonType;\n if (otherAction) {\n optionToolbar[\"otherAction\"] = otherAction;\n }\n if (action) {\n optionToolbar[\"action\"] = action;\n }\n if (label) {\n optionToolbar[\"label\"] = label;\n }\n if (estilo) {\n optionToolbar[\"estilo\"] = estilo;\n }\n return optionToolbar;\n }\n\n export function makeToolbarChildList(enableDelete: boolean) {\n return {\n new: { enable: true, visible: true },\n delete: { enable: enableDelete, visible: enableDelete }\n };\n }","import { Component, Input, OnInit, ChangeDetectionStrategy } 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 @Input(\"breadcrumb\") bc: any[];\n\n constructor(protected router: Router) {}\n\n /** Comprobamos si los datos de entrada no están definidos para inicializarlos en blanco */\n ngOnInit(): void {\n if (this.bc == undefined) this.bc = [];\n if (this.bc.length == 0) this.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","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, EventEmitter } from \"@angular/core\";\n\nimport { AyudaContextual } from \"../data/ayudacontextual\";\n\n@Injectable({ providedIn: \"root\" })\nexport class AyudaService {\n public mostrar: EventEmitter<AyudaContextual> = new EventEmitter<AyudaContextual>();\n\n public static AYUDAS = []; // Inicializar desde la aplicacion cliente\n\n protected mapaAyudas: Map<string, AyudaContextual>; // mapa de ayudas contextuales del sistema\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.emit(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) {\n console.log(\"sendNotificationError\", bitNotificationError);\n this.observableNotificacionsErrorsSource.next(bitNotificationError);\n }\n\n hideNotificacionErrorPanel() {\n this.observableNotificacionsErrorsSource.next(null);\n }\n\n 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 } 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\n constructor() {\n console.log(\"GeneralUtils constructor\");\n this.observableLoading = this.observableLoadingSource.asObservable();\n }\n\n public startLoading(): void {\n this.observableLoadingSource.next(\"start\");\n }\n\n public stopLoading(): void {\n this.observableLoadingSource.next(\"stop\");\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 \"@ngneat/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 let translatedMessage: any = { code: code, context, 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 langChangeSubject: BehaviorSubject<string>;\n langChanged$: Observable<string>;\n\n constructor(private translocoService: TranslocoService, @Inject(\"DEFAULT_LANGUAGE\") private defaultLanguage = \"es\") {\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 // 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 protected http: HttpClient,\n protected bitMessageService: BitMessageService,\n protected generalUtils: GeneralUtils,\n protected translateService: TranslateService,\n @Inject(\"API_URL\") private apiUrl: string,\n @Inject(\"CONTEXT_PATH\") private contextPath: string\n ) {\n HttpUtilsService.CONTEXT_PATH = contextPath;\n console.log(\"HttpUtilsSerive creado con API Url:\" + this.apiUrl);\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 } 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 constructor(protected translateService: TranslateService) {}\n\n getTranslatedDomain(domain: Map<string, []>, injector: Injector): Signal<any> {\n return toSignal(\n this.translateService.langChanged$.pipe(\n mergeMap((lang) => {\n console.log(\"getTranslatedDomain\", 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 } 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 constructor(private http: HttpClient, private generalUtils: GeneralUtils) { }\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 UPLOAD_URL: string;\n private DOWNLOAD_URL: string;\n\n constructor(@Inject(\"API_URL\") private apiUrl: string) {\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 { Component, Input } 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 @Input() control: UntypedFormControl;\n @Input() field: string;\n errorMessage$: Observable<string>;\n\n //constructor( @Host() private formDir: FormGroup) { }\n constructor(private focusService: FocusService, protected translateService: TranslateService) {}\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 if (this.control.errors.hasOwnProperty(propertyName) && this.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 } 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 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(protected bitMessageService: BitMessageService, protected translateService: TranslateService) {\n super();\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 { ChangeDetectionStrategy, ChangeDetectorRef, Component, EventEmitter, Input, OnInit, Output, SimpleChange } from '@angular/core';\n\n@Component({\n selector: 'bit-pajigator',\n templateUrl: './bit-pajigator.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: false\n})\nexport class BitPajigatorComponent implements OnInit {\n @Input()\n page: number;\n @Input()\n totalItems: number;\n @Input()\n itemsPerPage: number;\n @Input()\n rowsPerPageOptions: number[]\n @Input()\n maxCurrentItems: number;\n @Output()\n onPageChange = new EventEmitter<number>();\n @Output()\n onPageSizeChange = new EventEmitter<number>();\n\n maxPages: number;\n\n constructor(private changeDetector: ChangeDetectorRef) {}\n\n ngOnInit() {\n // si no nos llega un valor para itemsPerPage, cogemos el primer valor de la lista de opciones\n this.itemsPerPage = !this.itemsPerPage ? this.rowsPerPageOptions[0] : this.itemsPerPage;\n }\n\n ngOnChanges(changes: { [propKey: string]: SimpleChange }) {\n for (let propName in changes) {\n let changedProp = changes[propName];\n if (propName === \"totalItems\") {\n this.totalItems = changedProp.currentValue;\n console.log(\"totalItems:\" + this.totalItems);\n if (changedProp.previousValue !== changedProp.currentValue) {\n this.calculateMaxPages();\n }\n this.changeDetector.detectChanges();\n }\n }\n }\n\n calculateMaxPages(): void {\n if (!this.itemsPerPage || !this.totalItems) {\n this.maxPages = 0;\n } else {\n this.maxPages = Math.ceil(this.totalItems / this.itemsPerPage);\n }\n console.log(\"maxPages:\" + this.maxPages + \" itemsPerPage:\" + this.itemsPerPage);\n }\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 = items;\n this.onPageSizeChange.emit(items);\n this.calculateMaxPages();\n }\n }\n\n changePage(direction: number): void {\n this.page += direction;\n this.onPageChange.emit(this.page);\n }\n\n get showPageInfo(): boolean {\n return this.totalItems > 0;\n }\n\n get showLeftNavigationButton(): boolean {\n return this.totalItems > 0 && this.page != 1;\n }\n\n get showRightNavigationButton(): boolean {\n return this.totalItems > 0 && this.page < this.maxPages;\n }\n}","<div class=\"pajigator-outer-container\">\n <div class=\"pajigator-container\">\n <div class=\"pajigator-results-container\">\n <span class=\"pajigator-results-label\">{{\"bitnglibrary.footer.results\" | transloco}}</span>\n @if (maxCurrentItems >= totalItems) {\n <span>{{totalItems}}</span>\n }\n @if (maxCurrentItems < totalItems) {\n <span>{{maxCurrentItems}} / {{totalItems}}</span>\n }\n </div>\n <div class=\"pajigator-page-size\">\n <div class=\"pajigator-page-size-label\">{{ \"bitnglibrary.footer.itemsPerPage\" | transloco }}</div>\n <p-select\n [options]=\"rowsPerPageOptions\"\n [ngModel]=\"itemsPerPage\"\n (ngModelChange)=\"changeItemsPerpage($event)\"></p-select>\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 <button (click)=\"changePage(-1)\" type=\"button\" [disabled]=\"!showLeftNavigationButton\" pButton pRipple icon=\"pi pi-angle-left\" class=\"p-button-lg p-button-rounded p-button-text\"></button>\n <button (click)=\"changePage(1)\" type=\"button\" [disabled]=\"!showRightNavigationButton\" pButton pRipple icon=\"pi pi-angle-right\" class=\"p-button-lg p-button-rounded p-button-text\"></button>\n </div>\n </div>\n</div>","import { Component, ChangeDetectorRef, ChangeDetectionStrategy } 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 (ayudaPressed) {\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 ayuda: AyudaContextual;\n\n constructor(protected ayudaService: AyudaService, protected changeDetectorRef: ChangeDetectorRef) {\n this.ayuda = null;\n // cada vez que el servicio emite una nueva ayuda, la mostramos\n ayudaService.mostrar.subscribe(ayuda => {\n console.log(\"Mostrando ayuda\", ayuda);\n this.ayuda = ayuda;\n this.changeDetectorRef.detectChanges();\n });\n }\n\n /** Oculta el modal con los avisos */\n hideAyuda() {\n this.ayuda = null;\n }\n\n get ayudaPressed() {\n return this.ayuda != null;\n }\n}\n","import { ChangeDetectionStrategy, Component, Input, OnInit } from '@angular/core';\nimport { Observable, of } from 'rxjs';\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 implements OnInit {\n @Input()\n messages: Map<PageStatus, string>;\n @Input()\n status: PageStatus = PageStatus.Init; // Determina en qué estado está la página: PageStatus.Init, PageStatus.SEARCHING, PageStatus.FINISH_SEARCH\n @Input()\n typeFooter: string;\n @Input()\n maxCurrentItems: number;\n @Input()\n totalItems: number;\n\n constructor(private translateService: TranslateService) { }\n\n ngOnInit(): void {\n if (this.typeFooter == undefined) {\n this.typeFooter = \"list\";\n }\n //mensajes por defecto si no vienen definidos\n if (this.messages == undefined) {\n this.setMessages();\n this.messages.set(PageStatus.Error, \"bitnglibrary.footer.error\");\n }\n }\n\n private setMessages() {\n console.log(\"definimos los mensajes del footer de manera estándar\");\n this.messages = new Map<PageStatus, string>();\n if (this.isFooterList() || this.isFooterScroll()) {\n this.messages.set(PageStatus.Init, \"bitnglibrary.footer.list.init\");\n this.messages.set(PageStatus.Searching, \"bitnglibrary.footer.list.searching\");\n this.messages.set(PageStatus.EmptyResult, \"bitnglibrary.footer.list.emptyresult\");\n this.messages.set(PageStatus.FinishSearch, \"bitnglibrary.footer.list.finishsearch\");\n this.messages.set(PageStatus.MoreResults, \"bitnglibrary.footer.list.moreresults\")\n } else if (this.isFooterForm()) {\n this.messages.set(PageStatus.Init, \"bitnglibrary.footer.form.init\");\n this.messages.set(PageStatus.Searching, \"bitnglibrary.footer.form.searching\");\n this.messages.set(PageStatus.FinishSearch, \"bitnglibrary.footer.form.finishsearch\");\n this.messages.set(PageStatus.ReadOnly, \"bitnglibrary.footer.list.readonly\");\n } else if (this.typeFooter === TYPE_BLANK) {\n console.log(\"the footer is BLANK!\");\n }\n }\n\n getStyle(error: boolean = false): string {\n let type = 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 isFooterList() {\n return this.typeFooter === TYPE_LIST;\n }\n\n isFooterScroll() {\n return this.typeFooter === TYPE_SCROLL;\n }\n\n isFooterForm() {\n return this.typeFooter === TYPE_FORM;\n }\n\n /** Flag: la página está realizando la búsqueda. */\n get searchInitiated() {\n return this.status === PageStatus.Init || this.status == PageStatus.Reset || !this.status;\n }\n\n /** Flag: la página está realizando la búsqueda. */\n get searching() {\n return this.status === PageStatus.Searching;\n }\n\n /** Flag: la página ha finalizado la última búsqueda. */\n get searchFinished() {\n return this.status === PageStatus.FinishSearch;\n }\n\n /** Flag: la página está en modo solo lectura */\n get readOnly() {\n return this.status == PageStatus.ReadOnly;\n }\n\n /** Flag: la página ha finalizado con error */\n get error() {\n return this.status == PageStatus.Error;\n }\n\n /** Flag: encontrado resultado. */\n get foundResult() {\n return (\n this.status === PageStatus.FinishSearch &&\n ((this.typeFooter === TYPE_LIST && this.totalItems > 0)\n || this.typeFooter === TYPE_FORM\n || (this.typeFooter === TYPE_SCROLL && this.totalItems <= this.maxCurrentItems))\n );\n }\n\n /** Flag: hay más resultados (scroll). */\n get moreResults() {\n return (\n this.status === PageStatus.FinishSearch &&\n (this.typeFooter === TYPE_SCROLL && this.totalItems > this.maxCurrentItems)\n );\n }\n\n /** Flag: no hay resultados. */\n get emptyResult() {\n return this.status === PageStatus.FinishSearch && this.totalItems === 0;\n }\n\n get message(): Observable<string> {\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\n return of(\"\");\n }\n\n get initMessage(): Observable<string> {\n return this.translateService.selectTranslate(this.messages.get(PageStatus.Init));\n }\n\n get searchingMessage(): Observable<string> {\n return this.translateService.selectTranslate(this.messages.get(PageStatus.Searching));\n }\n\n get finishMessage(): Observable<string> {\n return this.translateService.selectTranslate(this.messages.get(PageStatus.FinishSearch));\n }\n\n get moreResultsMessage(): Observable<string> {\n return this.translateService.selectTranslate(this.messages.get(PageStatus.MoreResults));\n }\n\n get emptyMessage(): Observable<string> {\n return this.translateService.selectTranslate(this.messages.get(PageStatus.EmptyResult));\n }\n\n get readOnlyMessage(): Observable<string> {\n return this.translateService.selectTranslate(this.messages.get(PageStatus.ReadOnly));\n }\n\n get errorMessage(): Observable<string> {\n return this.translateService.selectTranslate(this.messages.get(PageStatus.Error));\n }\n}","<div>\n <div [class]=\"getStyle()\">\n <i class=\"fa fa-info\"></i>\n <span>{{message | async}}</span>\n </div>\n\n <bit-help></bit-help>\n</div>","import {\n ChangeDetectionStrategy,\n Component,\n EventEmitter,\n Input,\n OnChanges,\n OnInit,\n Output,\n SimpleChange,\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 implements OnInit, OnChanges {\n @Input()\n totalItems: number; // Número total de elementos recuperados de la consulta\n @Input()\n filter: BaseFilter;\n @Input()\n paginator: boolean;\n @Input()\n mostrarAvisos: boolean = true;\n @Input()\n fixed: boolean = true; // Indicará si lo queremos fijo abajo en la página. Por defecto sí.\n @Input()\n messages: Map<PageStatus, string>;\n @Input()\n status: PageStatus = PageStatus.Init; // Determina en qué estado está la página: PageStatus.Init, PageStatus.SEARCHING, PageStatus.FINISH_SEARCH\n @Input(\"type\")\n typeFooter: string;\n @Input()\n mostrarEnlacesPaginas: boolean = true; //deprecated\n @Input()\n mostrarPrimeraUltimaPagina: boolean = true; //deprecated\n @Input()\n visible: boolean = true;\n @Input()\n forcePageLinkSize: number = 1; //deprecated número de enlaces en el paginador para poder navegar hacia delante o detrás que forzamos a que haya\n @Output()\n onPageChange = new EventEmitter<number>(); //para notificar cambios en la página a mostrar\n @Output()\n onNewPageSize = new EventEmitter<number>(); //para notificar cambios en los elementos a mostrar por página\n\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 maxCurrentItems: number = -1; // número de elementos que mostramos en pantalla. Necesario para el modo scroll\n\n constructor() {\n }\n\n ngOnInit(): void {\n if (this.typeFooter == undefined) {\n this.typeFooter = \"list\";\n }\n if (this.paginator == undefined) {\n this.paginator = false;\n }\n }\n\n /**\n * Escucharemos a cambios en las propiedades totalItems para actualizar el paginador con respecto a las páginas que mostramos\n */\n ngOnChanges(changes: { [propKey: string]: SimpleChange }) {\n for (let propName in changes) {\n let changedProp = changes[propName];\n if (propName === \"status\") {\n this.status = changedProp.currentValue;\n } else if (propName === \"totalItems\") {\n this.totalItems = changedProp.currentValue;\n this.calculateMaxCurrentItems();\n } else if (propName === \"filter\") {\n this.filter = changedProp.currentValue;\n this.calculateMaxCurrentItems();\n }\n }\n }\n\n showPajigator() {\n return this.typeFooter === 'list' && this.visible && this.paginator;\n }\n\n showScroll(): boolean {\n return this.typeFooter === 'scroll' && this.visible;\n }\n\n calculateMaxCurrentItems() {\n this.maxCurrentItems = this.filter?.pagina * this.filter?.resultados;\n if (this.maxCurrentItems > this.totalItems) {\n this.maxCurrentItems = this.totalItems;\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 getStyle() {\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}\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\n [totalItems]=\"totalItems\"\n [page]=\"filter ? filter.pagina : 1\"\n [itemsPerPage]=\"filter ? filter.resultados : 20\"\n [rowsPerPageOptions]=\"[baseItemsPerPage,baseItemsPerPage*2.5,baseItemsPerPage*5,baseItemsPerPage*12.5,baseItemsPerPage*25,baseItemsPerPage*50]\"\n [maxCurrentItems]=\"maxCurrentItems\"\n (onPageChange)=\"pageChange($event)\"\n (onPageSizeChange)=\"pageSizeChange($event)\"></bit-pajigator>\n }\n\n @if (mostrarAvisos) {\n <bit-footer-messages\n [messages]=\"messages\"\n [typeFooter]=\"typeFooter\"\n [status]=\"status\"\n [maxCurrentItems]=\"maxCurrentItems\"\n [totalItems]=\"totalItems\"></bit-footer-messages>\n }\n\n</footer>\n","import { Component, Input } 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\" (click)=\"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 @Input() ayuda: string;\n @Input() boton: boolean = false; // show a little [?] or a full button\n @Input() extraClass: string = \"\"; // extra CSS classes for HTML component\n @Input() buttonSize: \"small\" | \"large\"; // tamaño del botón, por defecto normal\n\n constructor(private ayudaService: AyudaService) {}\n\n mostrarAyuda() {\n this.ayudaService.mostrarAyuda(this.ayuda);\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 { ChangeDetectionStrategy, Component, EventEmitter, Input, Output, SimpleChanges } 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\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 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\n itemsOtherActions: MenuItem[];\n translations: {[key: string]: string};\n\n @Input() toolbar: {};\n @Input() ayuda: string; // clave de la ayuda contextual que mostrar para su botón\n @Input() femenino: boolean = false; // género femenino (para los nombres de botones) o no\n @Input() buttonSize: \"small\" | \"large\"; // tamaño de los botones, por defecto normal\n @Input() otherActionsDropdown: boolean = false; // determina si las \"other actions\" deben mostrarse en línea o como un desplegable\n @Output() onToolbarButtonPressed = new EventEmitter<string>();\n\n mostrarOtherActionsEnDesplegable: boolean;\n\n constructor(\n private translateService: TranslateService\n ) {\n super();\n\n this.translateService.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 return this.toolbar && this.toolbar[button] && this.toolbar[button].enable;\n }\n\n visible(button: string): boolean {\n return this.toolbar && this.toolbar[button] && this.toolbar[button].visible;\n }\n\n label(button: string, defaultLabel: string): string {\n return (this.toolbar && this.toolbar[button] && this.toolbar[button].label) || defaultLabel;\n }\n\n estilo(button: string, defaultValue: string): string {\n return (this.toolbar && this.toolbar[button] && this.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 /** escuchamos cuando la toolbar cambia para ajustar las other Actions */\n ngOnChanges(changes: SimpleChanges) {\n for (let propName in changes) {\n let changedProp = changes[propName];\n if (propName === \"toolbar\") {\n this.toolbar = changedProp.currentValue;\n\n // calcular si las other actions deben mostrarse en desplegable\n // (se ha pedido asi y hay más de una)\n let otherActionsVisibles = 0;\n for (let key in this.toolbar) {\n if (this.toolbar[key].otherAction && this.toolbar[key].visible) {\n otherActionsVisibles++;\n }\n }\n this.mostrarOtherActionsEnDesplegable = this.otherActionsDropdown && otherActionsVisibles > 1;\n if (this.mostrarOtherActionsEnDesplegable) {\n this.itemsOtherActions = this.getOtherActionsDropdownModel();\n }\n }\n }\n }\n\n // Recorremos el toolbar y devolvemos un array con las acciones que tengan la propiedad otherAction a true,\n // transformadas a MenuItem, para poder mostrarlas en el desplegable de SplitButton\n getOtherActionsDropdownModel(): MenuItem[] {\n let actions: MenuItem[] = [];\n for (let key in this.toolbar) {\n if (this.toolbar[key].otherAction) {\n let toolbarItem = this.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: () => { this.otherAction(toolbarItem); } // use the captured toolbar item\n });\n }\n }\n\n return actions;\n }\n\n}\n","<!-- acciones no estandar definidas dinámicamente o muy particulares-->\n<!-- si otherActionsDropdown viene a true y hay más de una acción, se muestran como un desplegable, si no, todas las acciones en línea -->\n<div class=\"contenedor-toolbar\">\n\n @if (mostrarOtherActionsEnDesplegable) {\n @if (otherActionsDropdown) {\n <p-button (click)=\"menu.toggle($event)\" [size]=\"buttonSize\"\n styleClass=\"p-button-primary\" icon=\"pi pi-caret-right\" iconPos=\"right\" label=\"{{'bitnglibrary.toolbar.other-actions' | transloco}}\"></p-button>\n <p-tieredMenu #menu [model]=\"itemsOtherActions\" [popup]=\"true\"></p-tieredMenu>\n }\n }\n\n <!-- si otherActionsDropdown viene a false o solo hay una acción, se muestran una tras otra en línea -->\n @if (!mostrarOtherActionsEnDesplegable) {\n @for (button of (toolbar | otherToolbarAction); track button) {\n @if (button.visible) {\n <p-button type=\"button\" [disabled]=\"!button.enable\" (click)=\"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 }\n <!-- acciones estandar -->\n @if (visible('new')) {\n <p-button type=\"button\" [disabled]=\"!enable('new')\" (click)=\"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')\" (click)=\"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')\" (click)=\"exportData()\" [size]=\"buttonSize\" styleClass=\"p-button-outlined 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')\" (click)=\"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')\" (click)=\"delete()\" [size]=\"buttonSize\" styleClass=\"p-button-outlined 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')\" (click)=\"print()\" [size]=\"buttonSize\" styleClass=\"p-button-outlined 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\"></bit-boton-ayuda>\n }\n</div>\n","import { Component, Input, Output, EventEmitter, ChangeDetectionStrategy } 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 @Input() toolbar: any = {};\n @Input() noToolbar: boolean = false;\n @Input() otherActionsDropdown: boolean = false; // determina si las \"other actions\" deben mostrarse en línea o como un desplegable\n @Input() breadcrumb: any[];\n @Input() masacciones: any[];\n @Input() colsBreadcrumb: number;\n @Input() femenino: boolean = false; // género femenino (para los nombres de botones) o no\n @Input() ayuda: string; // clave de la ayuda contextual para la botonera\n\n @Output() onToolbarButtonPressed = new EventEmitter<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\"></bit-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\n [toolbar]=\"toolbar\"\n [femenino]=\"femenino\"\n [otherActionsDropdown]=\"otherActionsDropdown\"\n [ayuda]=\"ayuda\"\n (onToolbarButtonPressed)=\"onTBPressed($event)\"></bit-toolbar>\n </div>\n }\n</div>","import { Component, Input, OnDestroy } from \"@angular/core\";\nimport { Subscription, Observable } from \"rxjs\";\n\nimport { GeneralUtils } from \"../../services/general-utils.service\";\nimport { startWith, map, tap, delay } from \"rxjs/operators\";\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 //styleUrls: [\"bit-loading.component.css\"]\n ,\n standalone: false\n})\nexport class BitLoadingComponent implements OnDestroy {\n @Input(\"source\") imageSource: string;\n loading: boolean = false;\n loading$: Observable<boolean>;\n inProgressCount: number; // cantidad de cargas en proceso\n private subscription: Subscription;\n\n constructor(private generalUtils: GeneralUtils) {\n console.log(\"Constructor bitloading\");\n this.inProgressCount = 0;\n }\n\n ngOnInit() {\n this.subscription = this.generalUtils.observableLoading\n .pipe(\n map(value => (value == \"start\" ? true : false)),\n startWith(false),\n delay(0) //esto es para evitar el error ExpressionChangedAfterItHasBeenCheckedError. Mas info en: https://blog.angular-university.io/angular-debugging/\n )\n .subscribe(value => {\n if (value) {\n this.inProgressCount++;\n } else {\n if (this.inProgressCount > 0) this.inProgressCount--;\n }\n this.loading = this.inProgressCount > 0;\n });\n }\n\n ngOnDestroy() {\n this.loading = false;\n if (this.subscription != null) this.subscription.unsubscribe();\n }\n}\n","import { Component, OnDestroy } from \"@angular/core\";\nimport { concatMap, take } from \"rxjs/operators\";\nimport { combineLatest, of } from \"rxjs\";\nimport { MessageService } from \"primeng/api\";\n\nimport { BaseComponent } from \"../../../base/components/base.component\";\nimport { BitMessageService, TranslateService } from \"../../services\";\n\n@Component({\n selector: \"bit-notification-toast\",\n template: ` <p-toast key=\"notification\" position=\"top-right\"></p-toast> `,\n standalone: false\n})\nexport class BitNotificationToastComponent extends BaseComponent implements OnDestroy {\n constructor(protected bitMessageService: BitMessageService, protected primeMessageService: MessageService, protected translateService: TranslateService) {\n super();\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 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 ]).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]) => {\n this.showNotification(severity, title, message);\n });\n }\n\n showNotification(severity: string, title: string, message: string) {\n this.primeMessageService.add({ key: \"notification\", severity: severity, summary: title, detail: message });\n }\n}\n","import { Component, OnDestroy } from \"@angular/core\";\nimport { concatMap, filter, take, tap } from \"rxjs/operators\";\nimport { combineLatest, of, Observable } from \"rxjs\";\nimport { ToastMessageOptions } from \"primeng/api\";\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-messages [value]=\"messages\" [closable]=\"true\"></p-messages> `,\n standalone: false\n})\nexport class BitNotificationErrorComponent extends BaseComponent implements OnDestroy {\n messages: ToastMessageOptions[] = [];\n\n constructor(protected bitMessageService: BitMessageService, protected primeMessageService: MessageService, protected translateService: TranslateService) {\n super();\n }\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 ]).pipe(take(1))\n )\n )\n .subscribe(([title, message, context, multipleErrros, detail]) => {\n this.showNotificationError(title, message, context, multipleErrros, detail);\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(title: string, message: string, context: string, multipleErrors: ErrorValidateForm[], detail: string) {\n this.messages = [];\n console.log(`showNotificationError ${title} ${message}`);\n if (multipleErrors) {\n //Para cada error a mostrar\n multipleErrors.map((error) =>\n combineLatest([\n this.getTranslatedPrefixes(error, context),\n this.translateService.selectTranslate(error.errorMessage.code, error.errorMessage.params, error.errorMessage.context)\n ])\n .pipe(take(1)) //prevenimos que si nos cambian de idioma, se vuelva a disparar la traducción y concatenemos mensajes\n .subscribe(([prefixes, textError]) => {\n this.pushError(\n prefixes.reduce((acc, v) => acc + \" > \" + v),\n textError\n );\n })\n );\n } else {\n if (!detail) {\n this.pushError(title, message);\n } else {\n this.pushError(message, detail);\n }\n }\n }\n\n hideNotificacionError() {\n this.messages = [];\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 });\n }\n\n private hideErrors() {\n this.messages = [];\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): Observable<string[]> {\n let prefixErrors$: Observable<string>[] = error.prefixes.map((code) => {\n if (typeof code == \"number\") {\n //para arrays\n return of(code);\n } else {\n return this.translateService.selectTranslate(code, undefined, context);\n }\n });\n return combineLatest(prefixErrors$);\n }\n}\n","import { Directive, ElementRef, HostListener, Renderer2 } 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 constructor(private elRef: ElementRef, private renderer: Renderer2, private focusService: FocusService) {}\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, ChangeDetectorRef, Component, EventEmitter, Input, OnInit, Output, ViewChild } 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 //styleUrls: [\"bit-ng-upload.component.css\"],\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: false\n})\nexport class BitNGUploadComponent implements OnInit {\n @Input()\n uploader: FileUploader;\n @Input()\n hasDropZone: boolean;\n @Input()\n hasQueue: boolean;\n @Input()\n hasSingleUpload: boolean;\n @Input()\n hasMultipleUpload: boolean;\n @Input()\n deleteItemAfterUpload: boolean;\n @Input()\n canUpload: boolean;\n @Input()\n hasProgressBar: boolean;\n @Input()\n sizeDropZone: number;\n @Input()\n sizeQueue: number;\n @Input()\n inputAccept?: string = \"*\";\n\n @Output()\n onSuccess: EventEmitter<any> = new EventEmitter<any>();\n @Output()\n onError: EventEmitter<any> = new EventEmitter<any>();\n\n @ViewChild(\"fileRef\")\n fileInput: any;\n\n hasBaseDropZoneOver: boolean;\n\n constructor(private generalUtils: GeneralUtils, private changeDetector: ChangeDetectorRef) {}\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 this.changeDetector.detectChanges();\n };\n\n this.hasBaseDropZoneOver = false;\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.changeDetector.detectChanges();\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 if (this.fileInput && this.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 if (this.fileInput) this.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 = 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 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 #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 (click)=\"uploadFile(item)\" [disabled]=\"item.isReady || item.isUploading || item.isSuccess\">\n </p-button>\n }\n @if (canUpload) {\n <p-button icon=\"fa fa-ban\" title=\"{{'bitnglibrary.upload.cancelupload' | transloco}}\" styleClass=\"p-button-warning\"\n (click)=\"cancelFile(item)\" [disabled]=\"!item.isUploading\">\n </p-button>\n }\n <p-button icon=\"fa fa-trash\" title=\"{{'bitnglibrary.upload.removefromqueue' | transloco}}\" styleClass=\"p-button-danger\"\n (click)=\"removeFile(item)\">\n </p-button>\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 @if (canUpload) {\n <p-button icon=\"fa fa-upload\" title=\"{{'bitnglibrary.upload.uploadall' | transloco}}\" styleClass=\"p-button-success\"\n (click)=\"uploadAll()\" [disabled]=\"!uploader.getNotUploadedItems().length\">\n </p-button>\n }\n @if (canUpload) {\n <p-button icon=\"fa fa-ban\" title=\"{{'bitnglibrary.upload.cancelall' | transloco}}\" styleClass=\"p-button-warning\"\n (click)=\"cancelQueue()\" [disabled]=\"!uploader.isUploading\">\n </p-button>\n }\n <p-button icon=\"fa fa-trash\" title=\"{{'bitnglibrary.upload.removeall' | transloco}}\" styleClass=\"p-button-danger\"\n (click)=\"removeQueue()\" [disabled]=\"!uploader.queue.length\">\n </p-button>\n </div>\n </div>\n }\n</div>\n","import { Component, Input } from \"@angular/core\";\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 template: `\n @if (usuario) {\n <span class=\"userControls\"><span class=\"fa fa-user\" title=\"{{ json }}\"></span> {{ usuario.nombreCompleto }} ({{usuario.login}}) </span>\n }\n `\n //styleUrls:['bit-user-controls.component.css']\n ,\n standalone: false\n})\nexport class BitUserControlsComponent {\n @Input() usuario;\n userJSON: string;\n\n constructor() {}\n\n get json(): string {\n return this.usuario && JSON.stringify(this.usuario, null, 4);\n }\n}\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 @Input() data: any; // objeto del que extraer la propiedad\n @Input() field: string; // propiedad booleana que procesar\n @Input() textTrue: string = \"Sí\";\n @Input() textFalse: string = \"No\";\n\n constructor() {}\n}\n","import { Component, OnChanges, Input } 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 implements OnChanges {\n translatedValue: string = \"carregant...\";\n\n @Input() value: string;\n @Input() emptyText: string = \"\";\n @Input() data: Domain[];\n\n constructor() {}\n\n ngOnChanges() {\n // cada vez que cambia algo en el input, recalculamos\n this.translatedValue = this.resolveTranslatedValue();\n }\n\n resolveTranslatedValue(): string {\n // buscar traducción para el valor en el dominio\n let domainMatch = this.data && this.data.find(obj => obj.value == this.value);\n\n if (domainMatch) {\n return domainMatch.label;\n } else if (this.value) {\n return String(`??${this.value}??`);\n } else {\n return this.emptyText;\n }\n }\n}\n","import { Input, Directive, Output, EventEmitter } from \"@angular/core\";\nimport { UntypedFormControl } from \"@angular/forms\";\n\nimport { BaseComponent } from \"../../../base/components/base.component\";\nimport { AyudaService } from \"../../services/ayuda.service\";\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 @Input(\"formControl\")\n control: UntypedFormControl;\n @Input()\n nombre: any;\n @Input()\n nombreDirectiva: any;\n @Input()\n label: string;\n @Input()\n estilo: string;\n @Input()\n tooltipTexto: string;\n @Input()\n tooltipPosicion: string;\n @Input()\n ayuda: string; // clave de la ayuda contextual\n @Input()\n placeholder: string = \"\";\n @Input()\n readOnly: boolean = false;\n @Input()\n hideLabel: boolean = false; // forzar que no se reserve espacio para el nombre del campo\n @Input()\n forceObligatorio: boolean = false;\n @Input()\n testid: string;\n @Output()\n onChange = new EventEmitter<any>();\n @Output()\n onTouch = new EventEmitter<any>();\n @Output()\n onBlur = new EventEmitter<any>();\n @Output()\n onFocus = new EventEmitter<any>();\n\n\n constructor(protected ayudaService: AyudaService) {\n super();\n }\n\n get dataTestId(): string {\n return this.testid ? this.testid : this.nombre;\n }\n\n // decidimos marcar el campo como obligatorio si se ha indicado a la fuerza (por parámetro)\n // o si el control de formulario asociado está saltando por ser obligatorio y no haberse rellenado\n get obligatorio(): boolean {\n return this.forceObligatorio || (this.control && this.control.errors && this.control.errors[\"required\"]);\n }\n\n showAyuda() {\n this.ayudaService.mostrarAyuda(this.ayuda);\n }\n}\n","import { Directive } from \"@angular/core\";\nimport { AyudaService } from \"../../services/ayuda.service\";\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: boolean;\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 constructor(protected ayudaService: AyudaService) {\n super(ayudaService);\n }\n\n setDisabledState(isDisabled: boolean): void {\n this.isDisabled = 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.onBlur.emit();\n this.touchComponent();\n }\n\n _onFocus() {\n this.onFocus.emit();\n }\n\n changeComponentValue(value: any) {\n this._onChange(value);\n this.onChange.emit(value);\n }\n\n touchComponent() {\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 { AyudaService } from \"../../../services/ayuda.service\";\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 constructor(protected ayudaService: AyudaService) {\n super(ayudaService);\n }\n\n get value_lectura(): string {\n if (this.value == null) {\n return \"\";\n } // si es null o undefined (es lo que evalúa el \"==null\")\n else {\n return this.value;\n }\n }\n\n writeValue(v: string): void {\n if (!v) {\n this.value = \"\";\n } else {\n this.value = v;\n }\n }\n\n onChangeValue(text) {\n this.value = text;\n this.changeComponentValue(this.value);\n }\n\n}\n","@if (!hideLabel) {\n <label>\n <ng-content></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 [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 [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\"></control-messages>\n}\n","import { Component, forwardRef, Input } from \"@angular/core\";\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from \"@angular/forms\";\n\nimport { AyudaService } from \"../../../services/ayuda.service\";\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 @Input()\n filas: number = 2;\n\n value: string;\n\n constructor(protected ayudaService: AyudaService) {\n super(ayudaService);\n }\n\n get value_lectura(): string {\n if (this.value == null) {\n return \"\";\n } // si es null o undefined (es lo que evalúa el \"==null\")\n else {\n return this.value;\n }\n }\n\n writeValue(v: string): void {\n if (!v) {\n this.value = \"\";\n } else {\n this.value = v;\n }\n }\n\n onChangeValue(text) {\n this.value = text;\n this.changeComponentValue(this.value);\n }\n\n}\n","@if (!hideLabel) {\n <label>\n <ng-content></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 [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\"></control-messages>\n}\n","import { Directive, Output, EventEmitter, inject, Input } from \"@angular/core\";\nimport moment from \"moment\";\n\nimport { AyudaService } from \"../../../services/ayuda.service\";\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 @Input()\n fechaMinima: Date; // fecha mínima seleccionable\n @Input()\n fechaMaxima: Date; // fecha máxima seleccionable\n @Input()\n calendarReadOnlyInput: boolean; // desabilitar edicion por teclado\n @Input()\n showButtonBar = false;\n @Input()\n format: string;\n @Input()\n appendTo: string = \"body\";\n @Output()\n onSelect = new EventEmitter<any>();\n\n protected dateUtils: DateUtils = inject(DateUtils);\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 constructor(protected ayudaService: AyudaService, protected translateService: TranslateService) {\n super(ayudaService);\n }\n\n _onTodayClick(event) {\n this.value = new Date();\n this.emitNewValue();\n }\n\n _onSelect(date: Date) {\n this.value = date;\n this.emitNewValue();\n this.onSelect.emit(date);\n }\n\n _onInput(data) {\n // recuperamos el valor del campo\n let value = data.currentTarget.value;\n try {\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 value = this.getDateAsString(d);\n this.writeValue(value);\n this.emitNewValue();\n }\n } catch (error) {\n }\n }\n\n _onBlur(data) {\n super._onBlur();\n // recuperamos el valor del campo\n let value = data.currentTarget.value;\n try {\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.writeValue(null);\n this.emitNewValue();\n }\n\n emitNewValue() {\n let v: string = null;\n if (this.value) {\n try {\n v = this.dateUtils.getDateAsString(this.value, this.getDateFormat());\n } catch (e) {\n }\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, forwardRef } from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from \"@angular/forms\";\n\nimport { AyudaService } from '../../../services/ayuda.service';\nimport { DateUtils } from '../../../services/date-utils.service';\nimport { TranslateService } from '../../../services/translate.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\n constructor(protected ayudaService: AyudaService, protected translateService: TranslateService, protected dateUtils: DateUtils) {\n super(ayudaService, translateService);\n this.placeholder = \"dd/mm/yyyy\"\n this.visual_format = DateUtils.FORMAT_SHORT_DATE;\n }\n\n get value_lectura(): string {\n if (this.value == null) {\n return \"\";\n }\n else {\n return this.dateUtils.getDateAsString(this.value, this.getDateFormat());\n }\n }\n\n writeValue(v: string): void {\n if (!v || v === \"\") {\n this.value = null;\n } else {\n this.value = this.dateUtils.getStringAsDate(v, this.getDateFormat());\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>\n <ng-content></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 | date: \"dd/MM/yyyy\" }}</p>\n}\n@if (!readOnly) {\n <p-calendar\n class=\"FormControl\"\n id=\"{{ nombre }}\"\n name=\"{{ nombre }}\"\n [disabled]=\"isDisabled\"\n [(ngModel)]=\"value\"\n dateFormat=\"dd/mm/yy\"\n placeholder=\"{{ placeholder }}\"\n [monthNavigator]=\"true\"\n [readonlyInput]=\"calendarReadOnlyInput\"\n [minDate]=\"fechaMinima\"\n [maxDate]=\"fechaMaxima\"\n [yearNavigator]=\"true\"\n yearRange=\"2000:2050\"\n [firstDayOfWeek]=\"1\"\n [locale]=\"locale\"\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 </p-calendar>\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\"></control-messages>\n}\n","import { Component, forwardRef } from \"@angular/core\";\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from \"@angular/forms\";\n\nimport { AyudaService } from \"../../../services/ayuda.service\";\nimport { DateUtils } from \"../../../services/date-utils.service\";\nimport { TranslateService } from \"../../../services/translate.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\n constructor(protected ayudaService: AyudaService, protected translateService: TranslateService, protected dateUtils: DateUtils) {\n super(ayudaService, translateService);\n this.placeholder = \"hh:mm\";\n this.visual_format = DateUtils.FORMAT_SHORT_TIME;\n }\n\n get value_lectura(): string {\n if (this.value == null) {\n return \"\";\n }\n else {\n return this.dateUtils.getTimeAsString(this.value, this.getDateFormat());\n }\n }\n\n writeValue(v: string): void {\n if (!v) {\n this.value = null;\n } else {\n this.value = this.dateUtils.getStringAsDate(v, this.getDateFormat());\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>\n <ng-content></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 | date: \"HH:mm\" }}</p>\n}\n@if (!readOnly) {\n <p-calendar\n class=\"FormControl\"\n id=\"{{ nombre }}\"\n name=\"{{ nombre }}\"\n [disabled]=\"isDisabled\"\n [(ngModel)]=\"value\"\n timeFormat=\"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 </p-calendar>\n}\n@if (control != null) {\n <control-messages [control]=\"control\" [field]=\"nombre\"></control-messages>\n}\n","import { Component, forwardRef, OnInit } from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from \"@angular/forms\";\nimport { AyudaService } from '../../../services/ayuda.service';\nimport { DateUtils } from '../../../services/date-utils.service';\nimport { TranslateService } from '../../../services/translate.service';\n\nimport { BitCalendarComponent } from \"../calendar/bit-calendar.component\";\n\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\n constructor(protected ayudaService: AyudaService, protected translateService: TranslateService, protected dateUtils: DateUtils) {\n super(ayudaService, translateService);\n this.placeholder = \"dd/mm/yyyy hh:mm\";\n this.visual_format = DateUtils.FORMAT_LONG_DATE;\n }\n\n get value_lectura(): string {\n if (this.value == null) {\n return \"\";\n }\n else {\n return this.dateUtils.getDateTimeAsString(this.value, this.getDateFormat());\n }\n }\n\n writeValue(v: string): void {\n if (!v) {\n this.value = null;\n } else {\n this.value = this.dateUtils.getStringAsDate(v, this.getDateFormat());\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>\n <ng-content></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 | date: \"dd/MM/yyyy HH:mm\" }}</p>\n}\n@if (!readOnly) {\n <p-calendar\n class=\"FormControl\"\n id=\"{{ nombre }}\"\n name=\"{{ nombre }}\"\n [disabled]=\"isDisabled\"\n [(ngModel)]=\"value\"\n dateFormat=\"dd/mm/yy\"\n placeholder=\"{{ placeholder }}\"\n [monthNavigator]=\"true\"\n [minDate]=\"fechaMinima\"\n [maxDate]=\"fechaMaxima\"\n [yearNavigator]=\"true\"\n yearRange=\"2000:2050\"\n [locale]=\"locale\"\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 </p-calendar>\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\"></control-messages>\n}\n","import { Component, forwardRef } from \"@angular/core\";\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from \"@angular/forms\";\n\nimport { AyudaService } from '../../../services/ayuda.service';\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 constructor(protected ayudaService: AyudaService) {\n super(ayudaService);\n }\n\n get value_lectura(): string {\n return this.value ? \"Sí\" : \"No\";\n }\n\n writeValue(v: Boolean): void {\n this.value = v;\n }\n\n onChangeValue(event) {\n this.value = event.checked;\n this.changeComponentValue(this.value);\n }\n}\n","@if (!hideLabel) {\n <label>\n <ng-content></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\n class=\"{{ estilo }}\"\n binary=\"true\"\n [(ngModel)]=\"value\"\n name=\"{{ nombre }}\"\n [disabled]=\"isDisabled\"\n id=\"{{ nombre }}\"\n (onChange)=\"onChangeValue($event)\"\n attr.data-testid=\"{{ dataTestId }}\"\n >\n </p-checkbox>\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\"></control-messages>\n}\n","import { Component, forwardRef } from \"@angular/core\";\n\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from \"@angular/forms\";\nimport { AyudaService } from \"../../../services/ayuda.service\";\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 constructor(protected ayudaService: AyudaService) {\n super(ayudaService);\n }\n\n get value_lectura(): string {\n return this.value ? \"Sí\" : \"No\";\n }\n\n writeValue(v: Boolean): void {\n this.value = v;\n }\n\n onChangeValue(event) {\n this.value = event.checked;\n this.changeComponentValue(this.value);\n }\n\n\n}\n","@if (!hideLabel) {\n <label>\n <ng-content></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-inputSwitch\n onLabel=\"Sí\"\n offLabel=\"No\"\n binary=\"true\"\n [(ngModel)]=\"value\"\n name=\"{{ nombre }}\"\n [disabled]=\"isDisabled\"\n id=\"{{ nombre }}\"\n (onChange)=\"onChangeValue($event)\"\n attr.data-testid=\"{{ dataTestId }}\"\n >\n </p-inputSwitch>\n}\n@if (control != null) {\n <control-messages [control]=\"control\" [field]=\"nombre\"></control-messages>\n}\n","import { Component, EventEmitter, forwardRef, Input, OnChanges, Output, SimpleChange } from \"@angular/core\";\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from \"@angular/forms\";\n\nimport { AyudaService } from \"../../../services\";\nimport { BitCustomComponent } from \"../bit-custom.component\";\nimport { AutoCompleteSelectEvent } from \"primeng/autocomplete\";\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, OnChanges {\n @Input()\n suggestions: any[];\n @Input()\n suggestionField: string;\n @Input()\n multiple: boolean = false;\n @Input()\n inputStyleClass: string;\n @Input()\n id: string = \"id\";\n @Input()\n displayValue: string;\n @Output()\n completeMethod = new EventEmitter<string>();\n @Output()\n onSelect = new EventEmitter<string>();\n @Output()\n onClear = new EventEmitter<any>();\n\n suggestions_mapped: string[];\n\n value: string;\n\n constructor(protected ayudaService: AyudaService) {\n super(ayudaService);\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 this.suggestions_mapped = newList && newList.map((obj: { [x: string]: any }) => (obj instanceof Object ? obj[this.suggestionField] : obj));\n //console.log(\"newList\", this.suggestions_mapped);\n }\n }\n }\n\n search(event: any) {\n this.completeMethod.emit(event);\n }\n\n get value_lectura(): string {\n if (this.value == null) {\n return \"\";\n } // si es null o undefined (es lo que evalúa el \"==null\")\n else {\n return this.value;\n }\n }\n\n writeValue(v: number | string): void {\n // El 0 es un valor válido\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 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 // 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 // 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.onChange.emit(valueConverted);\n }\n this._onChange(valueConverted);\n }\n\n _onSelect(event: AutoCompleteSelectEvent) {\n this.value = event.value;\n this.changeComponentValue(this.value);\n if (this.suggestionField) {\n let selectedObject = this._findObject(event.value);\n this.onSelect.emit(selectedObject);\n } else {\n this.onSelect.emit(this.value);\n }\n }\n\n _onClear() {\n this.value = \"\";\n this.changeComponentValue(this.value);\n this.onClear.emit();\n }\n\n _findObject(value: any) {\n return value && this.suggestions.find((obj) => obj[this.suggestionField] === value);\n }\n}\n","@if (!hideLabel) {\n <label>\n <ng-content></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-autoComplete\n [(ngModel)]=\"value\"\n id=\"{{ nombre }}\"\n name=\"{{ nombre }}\"\n [disabled]=\"isDisabled\"\n [placeholder]=\"placeholder\"\n delay=\"400\"\n [suggestions]=\"suggestions_mapped\"\n [multiple]=\"multiple\"\n [inputStyleClass]=\"inputStyleClass\"\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 ></p-autoComplete>\n}\n@if (control != null) {\n <control-messages [control]=\"control\" [field]=\"nombre\"></control-messages>\n}\n","import { Input, Directive } from \"@angular/core\";\nimport { ActivatedRoute } from \"@angular/router\";\nimport { take } from \"rxjs/operators\";\n\nimport { AyudaService } from \"../../../services/ayuda.service\";\nimport { TranslateService } from \"../../../services/translate.service\";\nimport { BitCustomComponent } from \"../bit-custom.component\";\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 @Input() hideLabel: boolean = false; // forzar no reservar espacio para el nombre del campo\n @Input() data: any[]; // lista de valores estáticos con lo que inicializamos el select\n @Input() id: any;\n @Input() excludedValues: any[];\n @Input() emptyText: string = \"bitnglibrary.bitdropdown.any\"; //valor por defecto seleccionable como primer elemento\n @Input() includeEmpty: boolean = true;\n @Input() valueAs: string;\n @Input() appendTo: string = \"body\";\n @Input() group: boolean = false;\n @Input() atributoLabel = \"label\"; // El atributo de los objetos de la lista que corresponde al label\n @Input() atributoValue = \"value\"; // El atributo de los objetos de la lista que corresponde al valor\n @Input() atributoDisabled = \"inactivo\"; // El atributo de los objetos de la lista que indica si un valor está deshabilitado\n\n listaOpciones: any[] = [];\n listaOpcionesVisible: any[] = [];\n valorActual: any; // solo se usa para hacer la transformación cuando es estrictamente necesario\n emptyTextResolved: string = \"\";\n value: any;\n\n constructor(\n protected router: ActivatedRoute,\n protected ayudaService: AyudaService,\n protected translateService: TranslateService\n ) {\n super(ayudaService);\n }\n\n // custom processing after retrieving data array from service\n\n // custom processing after retrieving data array from service\n postRetrieveData() {\n if (this.listaOpciones) {\n this.listaOpcionesVisible = Object.assign([], this.listaOpciones);\n // repasamos si hay opciones a excluir que debamos eliminar\n if (this.excludedValues) {\n this.listaOpcionesVisible = this.listaOpcionesVisible.filter((op) => this.excludedValues.indexOf(op.value) < 0);\n }\n } else {\n this.listaOpcionesVisible = [];\n }\n // determinamos si debemos incluir la opción \"sin selección\" y con qué texto\n if (this.includeEmpty) {\n this.translateService\n .selectTranslateWithContext(this.emptyText)\n .pipe(take(1))\n .subscribe((translation) => {\n let newOption = { value: null, label: translation };\n newOption[this.atributoValue] = null;\n newOption[this.atributoLabel] = translation;\n this.listaOpcionesVisible.splice(0, 0, newOption);\n this.emptyTextResolved = translation;\n });\n }\n }\n}\n","import { Component, forwardRef, Input, OnChanges, SimpleChange } from \"@angular/core\";\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from \"@angular/forms\";\nimport { ActivatedRoute } from \"@angular/router\";\n\nimport { AyudaService, 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 OnChanges, ControlValueAccessor {\n @Input() filter: boolean = false;\n\n constructor(\n protected router: ActivatedRoute,\n protected ayudaService: AyudaService,\n protected translateService: TranslateService\n ) {\n super(router, ayudaService, translateService);\n }\n\n ngOnChanges(changes: { [propKey: string]: SimpleChange }) {\n let hayCambios: boolean = false;\n for (let propName in changes) {\n let changedProp = changes[propName];\n if (propName === \"data\") {\n this.listaOpciones = changedProp.currentValue ? changedProp.currentValue.slice() : [];\n hayCambios = true;\n } else if (propName === \"excludedValues\") {\n this.excludedValues = changedProp.currentValue;\n hayCambios = true;\n } else if (propName === \"includeEmpty\") {\n this.includeEmpty = changedProp.currentValue;\n hayCambios = true;\n }\n }\n if (hayCambios) {\n this.postRetrieveData();\n }\n }\n\n get value_lectura(): string {\n let dom = this.listaOpciones && this.listaOpciones.find((d) => d[this.atributoValue] == this.value);\n return dom ? dom[this.atributoLabel] : this.value;\n }\n\n writeValue(v: any): void {\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.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>\n <ng-content></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 [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\"></control-messages>\n }\n}\n","import { ChangeDetectorRef, Component, forwardRef, Input, OnChanges, SimpleChange } from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { ActivatedRoute } from '@angular/router';\n\nimport { AyudaService } from '../../../services/ayuda.service';\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 provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => BitDropDownMultipleComponent),\n multi: true\n }],\n styleUrls: [\"bit-dropdown-multiple.component.css\"],\n standalone: false\n})\nexport class BitDropDownMultipleComponent extends BitDropDownGeneralComponent implements OnChanges, ControlValueAccessor {\n @Input() maxSelectedLabels: number = 3;\n @Input() showSeparateSelectedLabels: boolean = false; // indica si se muestran los elementos seleccionados en una columna separada\n @Input() title: string; //título que aparece en el link para eliminar un elemento una vez seleccionado\n @Input() filter: boolean;\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 protected router: ActivatedRoute,\n protected ayudaService: AyudaService,\n protected translateService: TranslateService,\n protected changeDetectorRef: ChangeDetectorRef\n ) {\n super(router, ayudaService, translateService);\n }\n\n ngOnChanges(changes: { [propKey: string]: SimpleChange }) {\n let hayCambios: boolean = false;\n for (let propName in changes) {\n let changedProp = changes[propName];\n if (propName === \"data\") {\n this.listaOpciones = changedProp.currentValue ? changedProp.currentValue.slice() : [];\n hayCambios = true;\n } else if (propName === \"excludedValues\") {\n this.excludedValues = changedProp.currentValue;\n hayCambios = true;\n } else if (propName === \"includeEmpty\") {\n this.includeEmpty = changedProp.currentValue;\n hayCambios = true;\n }\n }\n if (hayCambios) {\n this.postRetrieveData();\n }\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 }\n }\n return label;\n }\n\n deleteSelectedItem(event, item) {\n event.preventDefault();\n let index = this.value.indexOf(item);\n var currentValue = this.value;\n currentValue.splice(index, 1);\n this.value = currentValue.slice(0);\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 return value.join(\", \");\n }\n return \"\";\n }\n\n writeValue(v: any[]): void {\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 }\n }\n }\n\n _onChangeValue(event) {\n this.value = event.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 }\n this.emitValue();\n }\n\n _onClear() {\n this.value = null;\n this.emitValue();\n }\n\n emitValue() {\n this.changeComponentValue(this.value);\n }\n\n}\n","@if (!hideLabel) {\n <label><ng-content></ng-content> @if (obligatorio) {\n <span class=\"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\n id=\"{{ id }}\"\n [(ngModel)]=\"value\"\n [options]=\"listaOpciones\"\n [disabled]=\"isDisabled\"\n [optionLabel]=\"atributoLabel\"\n [optionValue]=\"atributoValue\"\n [defaultLabel]=\"emptyTextResolved\"\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 </p-multiSelect>\n @if (control != null) {\n <control-messages [control]=\"control\" [field]=\"id\"></control-messages>\n }\n @if (showSeparateSelectedLabels) {\n <div>\n <label> </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, EventEmitter, forwardRef, Output } from \"@angular/core\";\nimport { Input } from \"@angular/core\";\n\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from \"@angular/forms\";\nimport { ConfigurationEditor } from \"../../../data/configuration-editor\";\nimport { AyudaService } from \"../../../services/ayuda.service\";\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 @Input() tipo: 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 @Input() configuration: ConfigurationEditor = BitEditorComponent.globalConfiguration;\n @Input() height: number = 100;\n @Output() onTextChange = new EventEmitter<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 constructor(protected ayudaService: AyudaService) {\n super(ayudaService);\n }\n\n get value_lectura(): string {\n if (this.value == null) {\n return \"\";\n } // si es null o undefined (es lo que evalúa el \"==null\")\n else {\n return this.value;\n }\n }\n\n writeValue(v: string): void {\n if (!v) {\n this.value = \"\";\n } else {\n this.value = v;\n }\n }\n\n onChangeValue(text) {\n this.value = text;\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.onTextChange.emit(event);\n }\n\n get configuracion(): ConfigurationEditor {\n return this.configuration ? this.configuration : BitEditorComponent.globalConfiguration;\n }\n}\n","@if (!hideLabel) {\n <label>\n <ng-content></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\" value=\"ordered\" type=\"button\"></button>\n <button class=\"ql-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\n 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 </p-editor>\n}\n@if (control != null) {\n <control-messages [control]=\"control\" [field]=\"nombre\"></control-messages>\n}\n","import { ChangeDetectorRef, Component, Input, OnChanges, OnInit, SimpleChanges } from '@angular/core';\nimport { AyudaService } from '../../../services';\nimport { DateUtils, SessionSharedService } from '../../../services';\nimport { ActivatedRoute } from '@angular/router';\n\n@Component({\n selector: \"bit-readonly\",\n templateUrl: \"bit-readonly.component.html\",\n standalone: false\n})\nexport class BitReadonlyComponent implements OnInit, OnChanges {\n @Input() ayuda: string;\n @Input() valor: any;\n @Input() tipo: \"text\" | \"textarea\" | \"number\" | \"date\" | \"datetime\" | \"time\" | \"boolean\" | \"list\" | \"list-multiple\"; // text (default), date, datetime, time, boolean, textarea, list, list-multiple\n @Input() hideLabel: boolean = false;\n @Input() data: any[]; //lista de valores estáticos con lo que inicializamos el select\n @Input() domain: string; //nombre del dominio del que queremos extraer los datos\n\n private opcionesDropdown: any[] = [];\n\n constructor(\n protected router: ActivatedRoute,\n protected sessionShared: SessionSharedService,\n protected ayudaService: AyudaService,\n protected changeDetectorRef: ChangeDetectorRef,\n protected dateUtils: DateUtils\n ) {}\n\n ngOnInit() {\n if (!!this.domain && !this.data) {\n this.router.data.subscribe(result => {\n let dominios = result[\"dominios\"];\n let domainTipo = dominios[this.domain];\n if (domainTipo != null) {\n domainTipo.subscribe(\n (result: any[]) => {\n //console.log(result);\n this.sessionShared.set(this.domain, result.slice()); // almacenamos en sesión una copia para evitar transmitir cambios\n this.opcionesDropdown = result.slice();\n this.changeDetectorRef.detectChanges();\n },\n (error: any) => {\n console.log(\"Error carrega dominis\", this.domain, error);\n }\n );\n } else {\n console.log(\"Domini sense dades\", this.domain);\n }\n });\n } else if (this.data) {\n this.opcionesDropdown = this.data.slice();\n }\n }\n\n ngOnChanges(changes: SimpleChanges) {\n for (let propName in changes) {\n if (propName === \"data\") {\n let newData: any[] = changes[propName].currentValue || [];\n this.opcionesDropdown = newData.slice();\n this.changeDetectorRef.detectChanges();\n }\n }\n }\n\n showAyuda() {\n this.ayudaService.mostrarAyuda(this.ayuda);\n }\n\n get value_lectura(): string {\n this.tipo = this.tipo || \"text\";\n switch (this.tipo) {\n case \"date\":\n return this.valor ? this.dateUtils.getDateAsString(this.dateUtils.stringShortToDate(this.valor)) : \"\";\n case \"datetime\":\n return this.valor ? this.dateUtils.getDateTimeAsString(this.dateUtils.stringToDate(this.valor)) : \"\";\n case \"time\":\n return this.valor ? this.dateUtils.getTimeAsString(this.dateUtils.stringToTime(this.valor)) : \"\";\n case \"boolean\":\n return this.valor ? \"Sí\" : \"No\";\n case \"list\":\n let d = this.opcionesDropdown.find(d => d.value == this.valor);\n return d ? d.label : \"\";\n case \"list-multiple\":\n let labels: any[] = this.opcionesDropdown && this.opcionesDropdown.filter(d => this.valor && this.valor.indexOf(d.value) > -1).map(d => d.label);\n return labels ? labels.join(\", \") : null;\n default:\n return this.valor;\n }\n }\n\n get isTextarea(): boolean {\n return this.tipo === \"textarea\";\n }\n}\n","@if (!hideLabel) {\n <label>\n <ng-content></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 { Directive, TemplateRef } from \"@angular/core\";\n\n@Directive({\n selector: \"[viewMode]\",\n standalone: false\n})\nexport class ViewModeDirective {\n constructor(public tpl: TemplateRef<any>) {}\n}\n","import { Directive, TemplateRef } from \"@angular/core\";\n\n@Directive({\n selector: \"[editMode]\",\n standalone: false\n})\nexport class EditModeDirective {\n constructor(public tpl: TemplateRef<any>) {}\n}\n","import { Component, Output, EventEmitter, ContentChild, ElementRef, OnInit, TemplateRef, ChangeDetectorRef } from \"@angular/core\";\nimport { fromEvent, Subject } from \"rxjs\";\nimport { takeUntil, filter, take, switchMapTo } from \"rxjs/operators\";\n\nimport { BaseComponent } from \"../../../base/components/base.component\";\nimport { ViewModeDirective } from \"../../directives/view-mode.directive\";\nimport { EditModeDirective } from \"../../directives/edit-mode.directive\";\n\n/**\n * Componente que permite editar en linea valores\n */\n@Component({\n selector: \"bit-editable\",\n template: ` <ng-container *ngTemplateOutlet=\"currentView\"></ng-container> `,\n standalone: false\n})\nexport class BitEditableComponent extends BaseComponent implements OnInit {\n @Output() update = new EventEmitter();\n @ContentChild(ViewModeDirective) viewModeTpl: ViewModeDirective;\n @ContentChild(EditModeDirective) editModeTpl: EditModeDirective;\n\n editMode = new Subject();\n editMode$ = this.editMode.asObservable();\n mode: \"view\" | \"edit\" = \"view\";\n\n constructor(private host: ElementRef, private changeDetectorRef: ChangeDetectorRef) {\n super();\n }\n\n ngOnInit() {\n this.viewModeHandler();\n this.editModeHandler();\n }\n\n /**alterna entre las dos vistas, la de visualización y la edición */\n get currentView(): TemplateRef<any> {\n return this.mode === \"view\" ? this.viewModeTpl.tpl : this.editModeTpl.tpl;\n }\n\n private get element(): any {\n return this.host.nativeElement;\n }\n\n /**Gestiona el dobleClick sobre el componente */\n viewModeHandler() {\n fromEvent(this.element, \"click\")\n .pipe(takeUntil(this.destroy$))\n .subscribe(() => {\n console.log(\"click on element\", this.element);\n this.mode = \"edit\";\n this.editMode.next(true); //emitimos el evento de que hemos pasado a edición\n this.changeDetectorRef.detectChanges(); //tenemos que activar el mecanismo de detección de cambios\n });\n }\n\n /**Gestiona hacer click fuera del componente. Solo se activa si estamos en modo edición */\n editModeHandler() {\n //observable cuando pulsan con el ratón en cualquier parte de la página\n const clickOutside$ = fromEvent(document, \"click\").pipe(\n filter(({ target }) => {\n //filtramos que el click no sea precisamente en el elemento que estamos editando\n return this.element.contains(target) === false;\n }),\n take(1)\n );\n //observable cuando pulsan enter en el input\n fromEvent(this.element, \"keyup\")\n .pipe(\n filter((e: any) => e.keyCode == 13),\n takeUntil(this.destroy$)\n )\n .subscribe((event) => {\n console.log(\"event enter pressed\");\n this.throwUpdate();\n });\n\n //cuando editMode se dispara, al hacer dobleclick el usuario, activamos el observable clickOutside para gestionar cuando\n //el usuario ha terminado de editar el componente\n this.editMode$.pipe(switchMapTo(clickOutside$), takeUntil(this.destroy$)).subscribe((event) => {\n console.log(\"event click outside\");\n this.throwUpdate();\n });\n }\n\n throwUpdate() {\n this.update.next(null);\n this.mode = \"view\";\n }\n}\n","import { Component, ElementRef, forwardRef, HostListener, Input, ViewChild } from \"@angular/core\";\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from \"@angular/forms\";\n\nimport { AyudaService } from \"../../../services\";\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 @Input()\n modo: \"decimal\" | \"currency\" = \"decimal\";\n @Input()\n divisa: string;\n @Input()\n prefijo: string;\n @Input()\n sufijo: string;\n @Input()\n minimo: number;\n @Input()\n maximo: number;\n @Input()\n numeroDecimales: number;\n @Input()\n maximoDecimales: number;\n @Input()\n separadorGrupo: boolean = false;\n @Input()\n mostrarBotones: boolean;\n @Input()\n incremento: number = 1;\n\n @ViewChild('inputReference', { read: ElementRef })\n inputElement: ElementRef;\n\n value: number;\n\n constructor(protected ayudaService: AyudaService) {\n super(ayudaService);\n }\n\n get value_lectura(): number {\n return this.value;\n }\n\n writeValue(v: number): void {\n this.value = v;\n }\n\n onChangeValue(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>\n <ng-content></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 [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 [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\"></control-messages>\n}\n","import { ChangeDetectorRef, Component, forwardRef, Input, OnInit } from \"@angular/core\";\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from \"@angular/forms\";\n\nimport { BitNumberComponent } from \"../number/bit-number.component\";\nimport { AyudaService } from \"../../../services\";\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 @Input()\n prefijo: string;\n @Input()\n sufijo: string;\n @Input()\n minimo: number;\n @Input()\n maximo: number;\n @Input()\n mostrarBotones: boolean;\n @Input()\n incremento: number;\n\n modo: \"decimal\" | \"currency\" = \"currency\";\n divisa: string = \"EUR\";\n mostrarMoneda: boolean = true;\n maximoDecimales: number = 2;\n separadorGrupo: boolean = true;\n\n constructor(protected ayudaService: AyudaService) {\n super(ayudaService);\n }\n\n}\n","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\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 { 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 { EditModeDirective } from \"./edit-mode.directive\";\nimport { FocusRegisterDirective } from \"./focus-register.directive\";\nimport { ViewModeDirective } from \"./view-mode.directive\";\n\nexport * from \"./bit-panel.directive\";\nexport * from \"./focus-register.directive\";\nexport * from \"./edit-mode.directive\";\nexport * from \"./view-mode.directive\";\n\nexport const directives: any[] = [\n BitPanelDirective,\n FocusRegisterDirective,\n EditModeDirective,\n ViewModeDirective\n]","import { Component, forwardRef, Input } from \"@angular/core\";\n\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from \"@angular/forms\";\nimport { BitCustomComponent } from \"../bit-custom.component\";\nimport { AyudaService } from \"../../../services\";\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 @Input()\n valorTrue: any = true;\n @Input()\n valorFalse: any = false;\n\n value: Boolean;\n\n constructor(protected ayudaService: AyudaService) {\n super(ayudaService);\n }\n\n get value_lectura(): string {\n return this.value ? \"Sí\" : \"No\";\n }\n\n writeValue(v: Boolean): void {\n this.value = v;\n }\n\n onChangeValue(event: { checked: Boolean; }) {\n this.value = event.checked;\n this.changeComponentValue(this.value);\n }\n\n}\n","@if (!hideLabel) {\n <label>\n <ng-content></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-inputSwitch\n onLabel=\"Sí\"\n offLabel=\"No\"\n binary=\"true\"\n [(ngModel)]=\"value\"\n name=\"{{ nombre }}\"\n [disabled]=\"isDisabled\"\n id=\"{{ nombre }}\"\n [trueValue]=\"valorTrue\"\n [falseValue]=\"valorFalse\"\n (onChange)=\"onChangeValue($event)\"\n attr.data-testid=\"{{ dataTestId }}\"\n >\n </p-inputSwitch>\n}\n@if (control != null) {\n <control-messages [control]=\"control\" [field]=\"nombre\"></control-messages>\n}\n","import { Component, forwardRef, Input } from \"@angular/core\";\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from \"@angular/forms\";\nimport { CheckboxChangeEvent } from \"primeng/checkbox\";\nimport { BitCustomComponent } from \"../bit-custom.component\";\nimport { AyudaService } from \"../../../services\";\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 @Input()\n chekAll: boolean = true;\n\n @Input()\n data: Domain[];\n\n isCheckAll: boolean = false;\n value: (string | boolean)[];\n\n constructor(protected ayudaService: AyudaService) {\n super(ayudaService);\n }\n\n get value_lectura(): string {\n if (this.value) {\n // Mostramos los labels del dominio que está en data.\n return 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 } else {\n return \"\";\n }\n }\n\n writeValue(v: string[]): void {\n this.value = v;\n this.refreshCheckAll();\n }\n\n onChangeValue(event: CheckboxChangeEvent) {\n let selected: string[] = event && event.checked;\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 = !this.isCheckAll;\n\n if (this.isCheckAll) {\n this.value = this.data.map((v: Domain) => v.value);\n } else {\n this.value = null;\n }\n\n this.changeComponentValue(this.value);\n }\n\n get estiloCheckAll(): string {\n if (this.isCheckAll) {\n return \"pi pi-check-square\";\n } else {\n return \"pi pi-stop\";\n }\n }\n\n private refreshCheckAll() {\n this.isCheckAll = this.data?.length === this.value?.length;\n }\n}\n","<ng-container *transloco=\"let t\">\n\n @if (!hideLabel) {\n <label>\n <ng-content></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 [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\"></control-messages>\n }\n }\n\n\n</ng-container>\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\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 // añadimos las claves mínimas que tendrá la app\n this.keys.push(StorageService.MENU, StorageService.LANGUAGE, StorageService.VERSION, StorageService.THEME);\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 { 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, Output, EventEmitter, Input, ChangeDetectionStrategy, inject } from \"@angular/core\";\nimport { MenuItem } from \"primeng/api/menuitem\";\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 @Input()\n items: MenuItem[];\n @Input()\n visibilidad: boolean;\n @Output()\n onSelectLanguage = new EventEmitter<any>();\n @Output()\n onCloseMenu = new EventEmitter<boolean>();\n @Output()\n onMenuTitle = new EventEmitter<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.fundaciobit.org/\" target=\"_blank\">Fundació Bit</a></p>\n</div>\n","import { Injectable, inject } 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: string;\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) {\n console.log(\"update locale\", locale);\n if (this.locales.some((l) => l.value === locale)) {\n this.locale = locale;\n }\n this.storageService.setData(StorageService.LANGUAGE, this.locale);\n this.translateService.setActiveLang(this.locale);\n }\n}\n\n","import { Component, EventEmitter, Output, ChangeDetectionStrategy } from \"@angular/core\";\nimport { LocaleService } from \"../../services/locale.service\";\n\n@Component({\n selector: \"bit-language-selector\",\n template: `\n <div>\n <select class=\"form-control\" (change)=\"selectLanguage($event.target.value)\">\n <option disabled selected>{{ \"languageselection\" | transloco }}</option>\n @for (l of localeService.locales; track l) { <@if (l.value === localeService.locale) {\n <option selected [value]=\"l.value\">{{ l.label }}</option>\n } @else {\n <option [value]=\"l.value\">{{ l.label }}</option>\n } }\n </select>\n </div>\n `,\n styleUrls: [\"bit-language-selector.component.css\"],\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: false\n})\nexport class BitLanguageSelectorComponent {\n @Output()\n onSelectLanguage = new EventEmitter<string>();\n\n constructor(public localeService: LocaleService) {}\n\n selectLanguage(language) {\n this.localeService.updateLocale(language);\n this.onSelectLanguage.emit(language);\n }\n}\n","import { Component, ChangeDetectionStrategy, output, input } from \"@angular/core\";\nimport { LocaleService } from \"../../services/locale.service\";\n\n@Component({\n selector: \"bit-theme-selector\",\n template: `\n <div>\n <select class=\"form-control\" (change)=\"selectTheme($event.target.value)\">\n <option disabled selected>{{ \"themeselection\" | transloco }}</option>\n @for (theme of themes(); track theme) { <@if (theme === currentTheme()) {\n <option selected [value]=\"theme\">{{ theme }}</option>\n } @else {\n <option [value]=\"theme\">{{ theme }}</option>\n } }\n </select>\n </div>\n `,\n styleUrls: [\"bit-theme-selector.component.css\"],\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: false\n})\nexport class BitThemeSelectorComponent {\n themes = input<string[]>();\n currentTheme = input<string>();\n onSelectTheme = output<string>();\n\n constructor(public localeService: LocaleService) {}\n\n selectTheme(theme) {\n this.onSelectTheme.emit(theme);\n }\n}\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 \"@ngneat/transloco\";\n\nimport { CalendarModule } from \"primeng/calendar\";\nimport { InputTextModule } from \"primeng/inputtext\";\nimport { } from \"primeng/dropdown\";\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 { InputSwitchModule } from \"primeng/inputswitch\";\nimport { TooltipModule } from \"primeng/tooltip\";\nimport { PopoverModule } from 'primeng/popover';\nimport { MessagesModule } from \"primeng/messages\";\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';\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 { BitEditableComponent } from \"./components/form/bit-editable.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\";\n\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\";\nimport { BitSidebarComponent } from \"./components/misc/bit-sidebar.component\";\nimport { BitLanguageSelectorComponent } from \"./components/misc/bit-language-selector.component\";\nimport { BitThemeSelectorComponent } from \"./components/misc/bit-theme-selector.component\";\n\nconst modules: any[] = [\n AccordionModule,\n AutoCompleteModule,\n BadgeModule,\n CalendarModule,\n CheckboxModule,\n ChipModule,\n CommonModule,\n DialogModule,\n DynamicDialogModule,\n InputNumberModule,\n EditorModule,\n FieldsetModule,\n FileUploadModulePrimeNG,\n FormsModule,\n InputGroupAddonModule,\n InputGroupModule,\n InputMaskModule,\n InputSwitchModule,\n TextareaModule,\n InputTextModule,\n MegaMenuModule,\n MenubarModule,\n MenuModule,\n MessagesModule,\n MultiSelectModule,\n SelectModule,\n PopoverModule,\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 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 BitEditableComponent,\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: string = \"info\";\n static WARN: string = \"warn\";\n static ERROR: string = \"error\";\n\n constructor(\n public title: TranslatedMessage,\n public message: TranslatedMessage,\n public severity: string = \"info\" //info, warn, error\n ) {}\n}\n","import { TranslatedMessage, ErrorValidateForm } from \"../../base/models\";\nimport { BitNotification } from \"./bitnotification\";\n\nexport class BitNotificationError extends BitNotification {\n constructor(public title: TranslatedMessage, public message: TranslatedMessage, public context?: string, public multipleErrors?: ErrorValidateForm[], public detail?: string) {\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","import { inject, Injectable, signal } from \"@angular/core\";\nimport { PrimeNG } from \"primeng/config\";\nimport Aura from \"@primeng/themes/aura\";\nimport Nora from \"@primeng/themes/nora\";\nimport Material from \"@primeng/themes/material\";\nimport Lara from \"@primeng/themes/lara\";\nimport { StorageService } from \"./storage.service\";\n\n@Injectable()\nexport class ThemeFBitService {\n static THEME_FBIT = \"FBit\"; // nombre del tema por defecto\n primeNgConfig = inject(PrimeNG);\n storageService = inject(StorageService);\n themeList$ = signal([ThemeFBitService.THEME_FBIT, \"Aura\", \"Material\", \"Lara\", \"Nora\"]);\n currentTheme$ = signal(\"Aura\");\n FBit: any;\n\n constructor() {}\n\n setFBitTheme(FBit: any) {\n console.log(\"setFBitTheme\");\n this.FBit = FBit;\n }\n\n setTheme(theme: any) {\n let primeTheme = this.getTheme(theme);\n console.log(\"setTheme\", theme, !!primeTheme);\n this.primeNgConfig.theme.set({\n preset: primeTheme\n });\n this.currentTheme$.set(theme);\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 \"Material\":\n return Material;\n case \"Lara\":\n return Lara;\n case \"Nora\":\n return Nora;\n case \"FBit\":\n return this.FBit || Aura;\n }\n }\n\n // funciona pero nuestras apps no están preparadas para verse en modo oscuro\n toggleDarkMode() {\n const element = document.querySelector(\"html\");\n element.classList.toggle(\"my-app-dark\");\n console.log(\"toggleDarkMode\");\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 } 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 constructor(private bitMessageService: BitMessageService, private generalUtils: GeneralUtils) {\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 // no permitimos que desde fuera del store se pueda modificar el estado\n // por ejemplo no podemos ejecutar esto: patchState(this.entityStore, setEntities(list));\n { providedIn: \"root\", protectedState: false }, // no permitimos que desde fuera del store se pueda modificar el estado\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 // si hay filtro proporcionado podremos filtrar las entidades\n if (this.entityMetadata[this.entityName] && this.entityMetadata[this.entityName].filterFn) {\n // invocamos a la función de filtro definida por el usuario\n //let pattern = JSON.stringify(state.filter());\n return this.entityMetadata[this.entityName].filterFn(state.entities(), state.pattern()); //state.pattern()\n } else {\n return state.entities();\n }\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[]> = this.entityStore.entities;\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/misc/bit-language-selector.component\";\nexport * from \"./lib/sharedlibrary/components/misc/bit-sidebar.component\";\nexport * from \"./lib/sharedlibrary/components/misc/bit-theme-selector.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/bit-editable.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\";\nexport * from \"./lib/sharedlibrary/directives/edit-mode.directive\";\nexport * from \"./lib/sharedlibrary/directives/view-mode.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":["i2","CustomError","i1","i2.BitMessageService","i3.GeneralUtils","i4.TranslateService","i1.TranslateService","i2.GeneralUtils","i1.FocusService","i1.BitMessageService","i2.TranslateService","i3","i4","i5","i1.AyudaService","i2.BitHelpComponent","i1.BitPajigatorComponent","i2.BitFooterMessagesComponent","i4.BitBotonAyudaComponent","i6.OtherToolbarActionPipe","i2.BitBreadCrumbComponent","i3.BitToolbarComponent","i1.GeneralUtils","i7.FocusRegisterDirective","i8","i5.FocusRegisterDirective","i6.BitControlMessages","i3.FocusRegisterDirective","i4.BitControlMessages","i3.DateUtils","i7","i2.AyudaService","i3.TranslateService","i6","i7.BitControlMessages","i2.SessionSharedService","i2.DateUtils","i5.BitControlMessages","isNumber","i1.LocaleService","FileUploadModulePrimeNG","FileUploadModule"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"bit-ng-library.mjs","sources":["../../../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/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/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/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/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/pipes/other-actions.pipe.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/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/directives/view-mode.directive.ts","../../../projects/bit-ng-library/src/lib/sharedlibrary/directives/edit-mode.directive.ts","../../../projects/bit-ng-library/src/lib/sharedlibrary/components/form/bit-editable.component.ts","../../../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/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/pipe-cantidadmoneda.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/services/storage.service.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/services/locale.service.ts","../../../projects/bit-ng-library/src/lib/sharedlibrary/components/misc/bit-language-selector.component.ts","../../../projects/bit-ng-library/src/lib/sharedlibrary/components/misc/bit-theme-selector.component.ts","../../../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/services/theme-fbit.service.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":["import { Subject } from \"rxjs\";\nimport { DestroyRef, Directive, inject } from \"@angular/core\";\n\n@Directive()\nexport abstract class BaseComponent {\n destroy$: Subject<boolean> = new Subject<boolean>();\n destroyRef = inject(DestroyRef);\n\n ngOnDestroy() {\n this.destroy$.next(true);\n this.destroy$.unsubscribe();\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 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};\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 \n export 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 */\n export 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 */\n export 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 */\n export 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 * @returns un objeto de tipo ToolbarButtonType\n */\n export function buildButtonToolbar(visible: boolean, enable: boolean, otherAction?: boolean, action?: string, label?: string, estilo?: string): ToolbarButtonType {\n let optionToolbar = { visible, enable } as ToolbarButtonType;\n if (otherAction) {\n optionToolbar[\"otherAction\"] = otherAction;\n }\n if (action) {\n optionToolbar[\"action\"] = action;\n }\n if (label) {\n optionToolbar[\"label\"] = label;\n }\n if (estilo) {\n optionToolbar[\"estilo\"] = estilo;\n }\n return optionToolbar;\n }\n\n export function makeToolbarChildList(enableDelete: boolean) {\n return {\n new: { enable: true, visible: true },\n delete: { enable: enableDelete, visible: enableDelete }\n };\n }","import { Component, Input, OnInit, ChangeDetectionStrategy } 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 @Input(\"breadcrumb\") bc: any[];\n\n constructor(protected router: Router) {}\n\n /** Comprobamos si los datos de entrada no están definidos para inicializarlos en blanco */\n ngOnInit(): void {\n if (this.bc == undefined) this.bc = [];\n if (this.bc.length == 0) this.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","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, EventEmitter } from \"@angular/core\";\n\nimport { AyudaContextual } from \"../data/ayudacontextual\";\n\n@Injectable({ providedIn: \"root\" })\nexport class AyudaService {\n public mostrar: EventEmitter<AyudaContextual> = new EventEmitter<AyudaContextual>();\n\n public static AYUDAS = []; // Inicializar desde la aplicacion cliente\n\n protected mapaAyudas: Map<string, AyudaContextual>; // mapa de ayudas contextuales del sistema\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.emit(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 this.observableNotificacionsErrorsSource.next(null);\n }\n\n 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 } 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\n constructor() {\n console.log(\"GeneralUtils constructor\");\n this.observableLoading = this.observableLoadingSource.asObservable();\n }\n\n public startLoading(): void {\n this.observableLoadingSource.next(\"start\");\n }\n\n public stopLoading(): void {\n this.observableLoadingSource.next(\"stop\");\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 \"@ngneat/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 let translatedMessage: any = { code: code, context, 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 langChangeSubject: BehaviorSubject<string>;\n langChanged$: Observable<string>;\n\n constructor(private translocoService: TranslocoService, @Inject(\"DEFAULT_LANGUAGE\") private defaultLanguage = \"es\") {\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 // 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 protected http: HttpClient,\n protected bitMessageService: BitMessageService,\n protected generalUtils: GeneralUtils,\n protected translateService: TranslateService,\n @Inject(\"API_URL\") private apiUrl: string,\n @Inject(\"CONTEXT_PATH\") private contextPath: string\n ) {\n HttpUtilsService.CONTEXT_PATH = contextPath;\n console.log(\"HttpUtilsSerive creado con API Url:\" + this.apiUrl);\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 } 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 constructor(protected translateService: TranslateService) {}\n\n getTranslatedDomain(domain: Map<string, []>, injector: Injector): Signal<any> {\n return toSignal(\n this.translateService.langChanged$.pipe(\n mergeMap((lang) => {\n console.log(\"getTranslatedDomain\", 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 } 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 constructor(private http: HttpClient, private generalUtils: GeneralUtils) { }\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 UPLOAD_URL: string;\n private DOWNLOAD_URL: string;\n\n constructor(@Inject(\"API_URL\") private apiUrl: string) {\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 { Component, Input } 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 @Input() control: UntypedFormControl;\n @Input() field: string;\n errorMessage$: Observable<string>;\n\n //constructor( @Host() private formDir: FormGroup) { }\n constructor(private focusService: FocusService, protected translateService: TranslateService) {}\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 if (this.control.errors.hasOwnProperty(propertyName) && this.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 } 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 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(protected bitMessageService: BitMessageService, protected translateService: TranslateService) {\n super();\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 { ChangeDetectionStrategy, ChangeDetectorRef, Component, EventEmitter, Input, OnInit, Output, SimpleChange } from '@angular/core';\n\n@Component({\n selector: 'bit-pajigator',\n templateUrl: './bit-pajigator.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: false\n})\nexport class BitPajigatorComponent implements OnInit {\n @Input()\n page: number;\n @Input()\n totalItems: number;\n @Input()\n itemsPerPage: number;\n @Input()\n rowsPerPageOptions: number[]\n @Input()\n maxCurrentItems: number;\n @Output()\n onPageChange = new EventEmitter<number>();\n @Output()\n onPageSizeChange = new EventEmitter<number>();\n\n maxPages: number;\n\n constructor(private changeDetector: ChangeDetectorRef) {}\n\n ngOnInit() {\n // si no nos llega un valor para itemsPerPage, cogemos el primer valor de la lista de opciones\n this.itemsPerPage = !this.itemsPerPage ? this.rowsPerPageOptions[0] : this.itemsPerPage;\n }\n\n ngOnChanges(changes: { [propKey: string]: SimpleChange }) {\n for (let propName in changes) {\n let changedProp = changes[propName];\n if (propName === \"totalItems\") {\n this.totalItems = changedProp.currentValue;\n console.log(\"totalItems:\" + this.totalItems);\n if (changedProp.previousValue !== changedProp.currentValue) {\n this.calculateMaxPages();\n }\n this.changeDetector.detectChanges();\n }\n }\n }\n\n calculateMaxPages(): void {\n if (!this.itemsPerPage || !this.totalItems) {\n this.maxPages = 0;\n } else {\n this.maxPages = Math.ceil(this.totalItems / this.itemsPerPage);\n }\n console.log(\"maxPages:\" + this.maxPages + \" itemsPerPage:\" + this.itemsPerPage);\n }\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 = items;\n this.onPageSizeChange.emit(items);\n this.calculateMaxPages();\n }\n }\n\n changePage(direction: number): void {\n this.page += direction;\n this.onPageChange.emit(this.page);\n }\n\n get showPageInfo(): boolean {\n return this.totalItems > 0;\n }\n\n get showLeftNavigationButton(): boolean {\n return this.totalItems > 0 && this.page != 1;\n }\n\n get showRightNavigationButton(): boolean {\n return this.totalItems > 0 && this.page < this.maxPages;\n }\n}","<div class=\"pajigator-outer-container\">\n <div class=\"pajigator-container\">\n <div class=\"pajigator-results-container\">\n <span class=\"pajigator-results-label\">{{\"bitnglibrary.footer.results\" | transloco}}</span>\n @if (maxCurrentItems >= totalItems) {\n <span>{{totalItems}}</span>\n }\n @if (maxCurrentItems < totalItems) {\n <span>{{maxCurrentItems}} / {{totalItems}}</span>\n }\n </div>\n <div class=\"pajigator-page-size\">\n <div class=\"pajigator-page-size-label\">{{ \"bitnglibrary.footer.itemsPerPage\" | transloco }}</div>\n <p-select\n [options]=\"rowsPerPageOptions\"\n [ngModel]=\"itemsPerPage\"\n (ngModelChange)=\"changeItemsPerpage($event)\"></p-select>\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 <button (click)=\"changePage(-1)\" type=\"button\" [disabled]=\"!showLeftNavigationButton\" pButton pRipple icon=\"pi pi-angle-left\" class=\"p-button-lg p-button-rounded p-button-text\"></button>\n <button (click)=\"changePage(1)\" type=\"button\" [disabled]=\"!showRightNavigationButton\" pButton pRipple icon=\"pi pi-angle-right\" class=\"p-button-lg p-button-rounded p-button-text\"></button>\n </div>\n </div>\n</div>","import { Component, ChangeDetectorRef, ChangeDetectionStrategy } 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 (ayudaPressed) {\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 ayuda: AyudaContextual;\n\n constructor(protected ayudaService: AyudaService, protected changeDetectorRef: ChangeDetectorRef) {\n this.ayuda = null;\n // cada vez que el servicio emite una nueva ayuda, la mostramos\n ayudaService.mostrar.subscribe(ayuda => {\n console.log(\"Mostrando ayuda\", ayuda);\n this.ayuda = ayuda;\n this.changeDetectorRef.detectChanges();\n });\n }\n\n /** Oculta el modal con los avisos */\n hideAyuda() {\n this.ayuda = null;\n }\n\n get ayudaPressed() {\n return this.ayuda != null;\n }\n}\n","import { ChangeDetectionStrategy, Component, Input, OnInit } from '@angular/core';\nimport { Observable, of } from 'rxjs';\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 implements OnInit {\n @Input()\n messages: Map<PageStatus, string>;\n @Input()\n status: PageStatus = PageStatus.Init; // Determina en qué estado está la página: PageStatus.Init, PageStatus.SEARCHING, PageStatus.FINISH_SEARCH\n @Input()\n typeFooter: string;\n @Input()\n maxCurrentItems: number;\n @Input()\n totalItems: number;\n\n constructor(private translateService: TranslateService) { }\n\n ngOnInit(): void {\n if (this.typeFooter == undefined) {\n this.typeFooter = \"list\";\n }\n //mensajes por defecto si no vienen definidos\n if (this.messages == undefined) {\n this.setMessages();\n this.messages.set(PageStatus.Error, \"bitnglibrary.footer.error\");\n }\n }\n\n private setMessages() {\n console.log(\"definimos los mensajes del footer de manera estándar\");\n this.messages = new Map<PageStatus, string>();\n if (this.isFooterList() || this.isFooterScroll()) {\n this.messages.set(PageStatus.Init, \"bitnglibrary.footer.list.init\");\n this.messages.set(PageStatus.Searching, \"bitnglibrary.footer.list.searching\");\n this.messages.set(PageStatus.EmptyResult, \"bitnglibrary.footer.list.emptyresult\");\n this.messages.set(PageStatus.FinishSearch, \"bitnglibrary.footer.list.finishsearch\");\n this.messages.set(PageStatus.MoreResults, \"bitnglibrary.footer.list.moreresults\")\n } else if (this.isFooterForm()) {\n this.messages.set(PageStatus.Init, \"bitnglibrary.footer.form.init\");\n this.messages.set(PageStatus.Searching, \"bitnglibrary.footer.form.searching\");\n this.messages.set(PageStatus.FinishSearch, \"bitnglibrary.footer.form.finishsearch\");\n this.messages.set(PageStatus.ReadOnly, \"bitnglibrary.footer.list.readonly\");\n } else if (this.typeFooter === TYPE_BLANK) {\n console.log(\"the footer is BLANK!\");\n }\n }\n\n getStyle(error: boolean = false): string {\n let type = 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 isFooterList() {\n return this.typeFooter === TYPE_LIST;\n }\n\n isFooterScroll() {\n return this.typeFooter === TYPE_SCROLL;\n }\n\n isFooterForm() {\n return this.typeFooter === TYPE_FORM;\n }\n\n /** Flag: la página está realizando la búsqueda. */\n get searchInitiated() {\n return this.status === PageStatus.Init || this.status == PageStatus.Reset || !this.status;\n }\n\n /** Flag: la página está realizando la búsqueda. */\n get searching() {\n return this.status === PageStatus.Searching;\n }\n\n /** Flag: la página ha finalizado la última búsqueda. */\n get searchFinished() {\n return this.status === PageStatus.FinishSearch;\n }\n\n /** Flag: la página está en modo solo lectura */\n get readOnly() {\n return this.status == PageStatus.ReadOnly;\n }\n\n /** Flag: la página ha finalizado con error */\n get error() {\n return this.status == PageStatus.Error;\n }\n\n /** Flag: encontrado resultado. */\n get foundResult() {\n return (\n this.status === PageStatus.FinishSearch &&\n ((this.typeFooter === TYPE_LIST && this.totalItems > 0)\n || this.typeFooter === TYPE_FORM\n || (this.typeFooter === TYPE_SCROLL && this.totalItems <= this.maxCurrentItems))\n );\n }\n\n /** Flag: hay más resultados (scroll). */\n get moreResults() {\n return (\n this.status === PageStatus.FinishSearch &&\n (this.typeFooter === TYPE_SCROLL && this.totalItems > this.maxCurrentItems)\n );\n }\n\n /** Flag: no hay resultados. */\n get emptyResult() {\n return this.status === PageStatus.FinishSearch && this.totalItems === 0;\n }\n\n get message(): Observable<string> {\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\n return of(\"\");\n }\n\n get initMessage(): Observable<string> {\n return this.translateService.selectTranslate(this.messages.get(PageStatus.Init));\n }\n\n get searchingMessage(): Observable<string> {\n return this.translateService.selectTranslate(this.messages.get(PageStatus.Searching));\n }\n\n get finishMessage(): Observable<string> {\n return this.translateService.selectTranslate(this.messages.get(PageStatus.FinishSearch));\n }\n\n get moreResultsMessage(): Observable<string> {\n return this.translateService.selectTranslate(this.messages.get(PageStatus.MoreResults));\n }\n\n get emptyMessage(): Observable<string> {\n return this.translateService.selectTranslate(this.messages.get(PageStatus.EmptyResult));\n }\n\n get readOnlyMessage(): Observable<string> {\n return this.translateService.selectTranslate(this.messages.get(PageStatus.ReadOnly));\n }\n\n get errorMessage(): Observable<string> {\n return this.translateService.selectTranslate(this.messages.get(PageStatus.Error));\n }\n}","<div>\n <div [class]=\"getStyle()\">\n <i class=\"fa fa-info\"></i>\n <span>{{message | async}}</span>\n </div>\n\n <bit-help></bit-help>\n</div>","import {\n ChangeDetectionStrategy,\n Component,\n EventEmitter,\n Input,\n OnChanges,\n OnInit,\n Output,\n SimpleChange,\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 implements OnInit, OnChanges {\n @Input()\n totalItems: number; // Número total de elementos recuperados de la consulta\n @Input()\n filter: BaseFilter;\n @Input()\n paginator: boolean;\n @Input()\n mostrarAvisos: boolean = true;\n @Input()\n fixed: boolean = true; // Indicará si lo queremos fijo abajo en la página. Por defecto sí.\n @Input()\n messages: Map<PageStatus, string>;\n @Input()\n status: PageStatus = PageStatus.Init; // Determina en qué estado está la página: PageStatus.Init, PageStatus.SEARCHING, PageStatus.FINISH_SEARCH\n @Input(\"type\")\n typeFooter: string;\n @Input()\n mostrarEnlacesPaginas: boolean = true; //deprecated\n @Input()\n mostrarPrimeraUltimaPagina: boolean = true; //deprecated\n @Input()\n visible: boolean = true;\n @Input()\n forcePageLinkSize: number = 1; //deprecated número de enlaces en el paginador para poder navegar hacia delante o detrás que forzamos a que haya\n @Output()\n onPageChange = new EventEmitter<number>(); //para notificar cambios en la página a mostrar\n @Output()\n onNewPageSize = new EventEmitter<number>(); //para notificar cambios en los elementos a mostrar por página\n\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 maxCurrentItems: number = -1; // número de elementos que mostramos en pantalla. Necesario para el modo scroll\n\n constructor() {\n }\n\n ngOnInit(): void {\n if (this.typeFooter == undefined) {\n this.typeFooter = \"list\";\n }\n if (this.paginator == undefined) {\n this.paginator = false;\n }\n }\n\n /**\n * Escucharemos a cambios en las propiedades totalItems para actualizar el paginador con respecto a las páginas que mostramos\n */\n ngOnChanges(changes: { [propKey: string]: SimpleChange }) {\n for (let propName in changes) {\n let changedProp = changes[propName];\n if (propName === \"status\") {\n this.status = changedProp.currentValue;\n } else if (propName === \"totalItems\") {\n this.totalItems = changedProp.currentValue;\n this.calculateMaxCurrentItems();\n } else if (propName === \"filter\") {\n this.filter = changedProp.currentValue;\n this.calculateMaxCurrentItems();\n }\n }\n }\n\n showPajigator() {\n return this.typeFooter === 'list' && this.visible && this.paginator;\n }\n\n showScroll(): boolean {\n return this.typeFooter === 'scroll' && this.visible;\n }\n\n calculateMaxCurrentItems() {\n this.maxCurrentItems = this.filter?.pagina * this.filter?.resultados;\n if (this.maxCurrentItems > this.totalItems) {\n this.maxCurrentItems = this.totalItems;\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 getStyle() {\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}\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\n [totalItems]=\"totalItems\"\n [page]=\"filter ? filter.pagina : 1\"\n [itemsPerPage]=\"filter ? filter.resultados : 20\"\n [rowsPerPageOptions]=\"[baseItemsPerPage,baseItemsPerPage*2.5,baseItemsPerPage*5,baseItemsPerPage*12.5,baseItemsPerPage*25,baseItemsPerPage*50]\"\n [maxCurrentItems]=\"maxCurrentItems\"\n (onPageChange)=\"pageChange($event)\"\n (onPageSizeChange)=\"pageSizeChange($event)\"></bit-pajigator>\n }\n\n @if (mostrarAvisos) {\n <bit-footer-messages\n [messages]=\"messages\"\n [typeFooter]=\"typeFooter\"\n [status]=\"status\"\n [maxCurrentItems]=\"maxCurrentItems\"\n [totalItems]=\"totalItems\"></bit-footer-messages>\n }\n\n</footer>\n","import { Component, Input } 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\" (click)=\"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 @Input() ayuda: string;\n @Input() boton: boolean = false; // show a little [?] or a full button\n @Input() extraClass: string = \"\"; // extra CSS classes for HTML component\n @Input() buttonSize: \"small\" | \"large\"; // tamaño del botón, por defecto normal\n\n constructor(private ayudaService: AyudaService) {}\n\n mostrarAyuda() {\n this.ayudaService.mostrarAyuda(this.ayuda);\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 { ChangeDetectionStrategy, Component, EventEmitter, Input, Output, SimpleChanges } 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\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 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\n itemsOtherActions: MenuItem[];\n translations: {[key: string]: string};\n\n @Input() toolbar: {};\n @Input() ayuda: string; // clave de la ayuda contextual que mostrar para su botón\n @Input() femenino: boolean = false; // género femenino (para los nombres de botones) o no\n @Input() buttonSize: \"small\" | \"large\"; // tamaño de los botones, por defecto normal\n @Input() otherActionsDropdown: boolean = false; // determina si las \"other actions\" deben mostrarse en línea o como un desplegable\n @Output() onToolbarButtonPressed = new EventEmitter<string>();\n\n mostrarOtherActionsEnDesplegable: boolean;\n\n constructor(\n private translateService: TranslateService\n ) {\n super();\n\n this.translateService.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 return this.toolbar && this.toolbar[button] && this.toolbar[button].enable;\n }\n\n visible(button: string): boolean {\n return this.toolbar && this.toolbar[button] && this.toolbar[button].visible;\n }\n\n label(button: string, defaultLabel: string): string {\n return (this.toolbar && this.toolbar[button] && this.toolbar[button].label) || defaultLabel;\n }\n\n estilo(button: string, defaultValue: string): string {\n return (this.toolbar && this.toolbar[button] && this.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 /** escuchamos cuando la toolbar cambia para ajustar las other Actions */\n ngOnChanges(changes: SimpleChanges) {\n for (let propName in changes) {\n let changedProp = changes[propName];\n if (propName === \"toolbar\") {\n this.toolbar = changedProp.currentValue;\n\n // calcular si las other actions deben mostrarse en desplegable\n // (se ha pedido asi y hay más de una)\n let otherActionsVisibles = 0;\n for (let key in this.toolbar) {\n if (this.toolbar[key].otherAction && this.toolbar[key].visible) {\n otherActionsVisibles++;\n }\n }\n this.mostrarOtherActionsEnDesplegable = this.otherActionsDropdown && otherActionsVisibles > 1;\n if (this.mostrarOtherActionsEnDesplegable) {\n this.itemsOtherActions = this.getOtherActionsDropdownModel();\n }\n }\n }\n }\n\n // Recorremos el toolbar y devolvemos un array con las acciones que tengan la propiedad otherAction a true,\n // transformadas a MenuItem, para poder mostrarlas en el desplegable de SplitButton\n getOtherActionsDropdownModel(): MenuItem[] {\n let actions: MenuItem[] = [];\n for (let key in this.toolbar) {\n if (this.toolbar[key].otherAction) {\n let toolbarItem = this.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: () => { this.otherAction(toolbarItem); } // use the captured toolbar item\n });\n }\n }\n\n return actions;\n }\n\n}\n","<!-- acciones no estandar definidas dinámicamente o muy particulares-->\n<!-- si otherActionsDropdown viene a true y hay más de una acción, se muestran como un desplegable, si no, todas las acciones en línea -->\n<div class=\"contenedor-toolbar\">\n\n @if (mostrarOtherActionsEnDesplegable) {\n @if (otherActionsDropdown) {\n <p-button (click)=\"menu.toggle($event)\" [size]=\"buttonSize\"\n styleClass=\"p-button-primary\" icon=\"pi pi-caret-right\" iconPos=\"right\" label=\"{{'bitnglibrary.toolbar.other-actions' | transloco}}\"></p-button>\n <p-tieredMenu #menu [model]=\"itemsOtherActions\" [popup]=\"true\"></p-tieredMenu>\n }\n }\n\n <!-- si otherActionsDropdown viene a false o solo hay una acción, se muestran una tras otra en línea -->\n @if (!mostrarOtherActionsEnDesplegable) {\n @for (button of (toolbar | otherToolbarAction); track button) {\n @if (button.visible) {\n <p-button type=\"button\" [disabled]=\"!button.enable\" (click)=\"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 }\n <!-- acciones estandar -->\n @if (visible('new')) {\n <p-button type=\"button\" [disabled]=\"!enable('new')\" (click)=\"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')\" (click)=\"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')\" (click)=\"exportData()\" [size]=\"buttonSize\" styleClass=\"p-button-outlined 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')\" (click)=\"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')\" (click)=\"delete()\" [size]=\"buttonSize\" styleClass=\"p-button-outlined 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')\" (click)=\"print()\" [size]=\"buttonSize\" styleClass=\"p-button-outlined 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\"></bit-boton-ayuda>\n }\n</div>\n","import { Component, Input, Output, EventEmitter, ChangeDetectionStrategy } 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 @Input() toolbar: any = {};\n @Input() noToolbar: boolean = false;\n @Input() otherActionsDropdown: boolean = false; // determina si las \"other actions\" deben mostrarse en línea o como un desplegable\n @Input() breadcrumb: any[];\n @Input() masacciones: any[];\n @Input() colsBreadcrumb: number;\n @Input() femenino: boolean = false; // género femenino (para los nombres de botones) o no\n @Input() ayuda: string; // clave de la ayuda contextual para la botonera\n\n @Output() onToolbarButtonPressed = new EventEmitter<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\"></bit-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\n [toolbar]=\"toolbar\"\n [femenino]=\"femenino\"\n [otherActionsDropdown]=\"otherActionsDropdown\"\n [ayuda]=\"ayuda\"\n (onToolbarButtonPressed)=\"onTBPressed($event)\"></bit-toolbar>\n </div>\n }\n</div>","import { Component, Input, OnDestroy } from \"@angular/core\";\nimport { Subscription, Observable } from \"rxjs\";\n\nimport { GeneralUtils } from \"../../services/general-utils.service\";\nimport { startWith, map, tap, delay } from \"rxjs/operators\";\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 //styleUrls: [\"bit-loading.component.css\"]\n ,\n standalone: false\n})\nexport class BitLoadingComponent implements OnDestroy {\n @Input(\"source\") imageSource: string;\n loading: boolean = false;\n loading$: Observable<boolean>;\n inProgressCount: number; // cantidad de cargas en proceso\n private subscription: Subscription;\n\n constructor(private generalUtils: GeneralUtils) {\n console.log(\"Constructor bitloading\");\n this.inProgressCount = 0;\n }\n\n ngOnInit() {\n this.subscription = this.generalUtils.observableLoading\n .pipe(\n map(value => (value == \"start\" ? true : false)),\n startWith(false),\n delay(0) //esto es para evitar el error ExpressionChangedAfterItHasBeenCheckedError. Mas info en: https://blog.angular-university.io/angular-debugging/\n )\n .subscribe(value => {\n if (value) {\n this.inProgressCount++;\n } else {\n if (this.inProgressCount > 0) this.inProgressCount--;\n }\n this.loading = this.inProgressCount > 0;\n });\n }\n\n ngOnDestroy() {\n this.loading = false;\n if (this.subscription != null) this.subscription.unsubscribe();\n }\n}\n","import { Component, OnDestroy } from \"@angular/core\";\nimport { concatMap, take } from \"rxjs/operators\";\nimport { combineLatest, of } from \"rxjs\";\nimport { MessageService } from \"primeng/api\";\n\nimport { BaseComponent } from \"../../../base/components/base.component\";\nimport { BitMessageService, TranslateService } from \"../../services\";\n\n@Component({\n selector: \"bit-notification-toast\",\n template: ` <p-toast key=\"notification\" position=\"top-right\"></p-toast> `,\n standalone: false\n})\nexport class BitNotificationToastComponent extends BaseComponent implements OnDestroy {\n constructor(protected bitMessageService: BitMessageService, protected primeMessageService: MessageService, protected translateService: TranslateService) {\n super();\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 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 ]).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]) => {\n this.showNotification(severity, title, message);\n });\n }\n\n showNotification(severity: string, title: string, message: string) {\n this.primeMessageService.add({ key: \"notification\", severity: severity, summary: title, detail: message });\n }\n}\n","import { Component, OnDestroy } from \"@angular/core\";\nimport { concatMap, filter, take, tap } from \"rxjs/operators\";\nimport { combineLatest, of, Observable } from \"rxjs\";\nimport { ToastMessageOptions } from \"primeng/api\";\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-messages [value]=\"messages\" [closable]=\"true\"></p-messages> `,\n standalone: false\n})\nexport class BitNotificationErrorComponent extends BaseComponent implements OnDestroy {\n messages: ToastMessageOptions[] = [];\n\n constructor(protected bitMessageService: BitMessageService, protected primeMessageService: MessageService, protected translateService: TranslateService) {\n super();\n }\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 ]).pipe(take(1))\n )\n )\n .subscribe(([title, message, context, multipleErrros, detail, clearErrors]) => {\n this.showNotificationError(title, message, context, multipleErrros, detail, clearErrors);\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(title: string, message: string, context: string, multipleErrors: ErrorValidateForm[], detail: string, clearErrors: boolean = true) {\n console.log(\"clearErrors\", clearErrors);\n if (clearErrors) this.messages = [];\n console.log(`showNotificationError ${title} ${message}`);\n if (multipleErrors) {\n //Para cada error a mostrar\n multipleErrors.map((error) =>\n combineLatest([\n this.getTranslatedPrefixes(error, context),\n this.translateService.selectTranslate(error.errorMessage.code, error.errorMessage.params, error.errorMessage.context)\n ])\n .pipe(take(1)) //prevenimos que si nos cambian de idioma, se vuelva a disparar la traducción y concatenemos mensajes\n .subscribe(([prefixes, textError]) => {\n this.pushError(\n prefixes.reduce((acc, v) => acc + \" > \" + v),\n textError\n );\n })\n );\n } else {\n if (!detail) {\n this.pushError(title, message);\n } else {\n this.pushError(message, detail);\n }\n }\n }\n\n hideNotificacionError() {\n this.messages = [];\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 });\n }\n\n private hideErrors() {\n this.messages = [];\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): Observable<string[]> {\n let prefixErrors$: Observable<string>[] = error.prefixes.map((code) => {\n if (typeof code == \"number\") {\n //para arrays\n return of(code);\n } else {\n return this.translateService.selectTranslate(code, undefined, context);\n }\n });\n return combineLatest(prefixErrors$);\n }\n}\n","import { Directive, ElementRef, HostListener, Renderer2 } 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 constructor(private elRef: ElementRef, private renderer: Renderer2, private focusService: FocusService) {}\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, ChangeDetectorRef, Component, EventEmitter, Input, OnInit, Output, ViewChild } 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 //styleUrls: [\"bit-ng-upload.component.css\"],\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: false\n})\nexport class BitNGUploadComponent implements OnInit {\n @Input()\n uploader: FileUploader;\n @Input()\n hasDropZone: boolean;\n @Input()\n hasQueue: boolean;\n @Input()\n hasSingleUpload: boolean;\n @Input()\n hasMultipleUpload: boolean;\n @Input()\n deleteItemAfterUpload: boolean;\n @Input()\n canUpload: boolean;\n @Input()\n hasProgressBar: boolean;\n @Input()\n sizeDropZone: number;\n @Input()\n sizeQueue: number;\n @Input()\n inputAccept?: string = \"*\";\n\n @Output()\n onSuccess: EventEmitter<any> = new EventEmitter<any>();\n @Output()\n onError: EventEmitter<any> = new EventEmitter<any>();\n\n @ViewChild(\"fileRef\")\n fileInput: any;\n\n hasBaseDropZoneOver: boolean;\n\n constructor(private generalUtils: GeneralUtils, private changeDetector: ChangeDetectorRef) {}\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 this.changeDetector.detectChanges();\n };\n\n this.hasBaseDropZoneOver = false;\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.changeDetector.detectChanges();\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 if (this.fileInput && this.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 if (this.fileInput) this.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 = 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 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 #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 (click)=\"uploadFile(item)\" [disabled]=\"item.isReady || item.isUploading || item.isSuccess\">\n </p-button>\n }\n @if (canUpload) {\n <p-button icon=\"fa fa-ban\" title=\"{{'bitnglibrary.upload.cancelupload' | transloco}}\" styleClass=\"p-button-warning\"\n (click)=\"cancelFile(item)\" [disabled]=\"!item.isUploading\">\n </p-button>\n }\n <p-button icon=\"fa fa-trash\" title=\"{{'bitnglibrary.upload.removefromqueue' | transloco}}\" styleClass=\"p-button-danger\"\n (click)=\"removeFile(item)\">\n </p-button>\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 @if (canUpload) {\n <p-button icon=\"fa fa-upload\" title=\"{{'bitnglibrary.upload.uploadall' | transloco}}\" styleClass=\"p-button-success\"\n (click)=\"uploadAll()\" [disabled]=\"!uploader.getNotUploadedItems().length\">\n </p-button>\n }\n @if (canUpload) {\n <p-button icon=\"fa fa-ban\" title=\"{{'bitnglibrary.upload.cancelall' | transloco}}\" styleClass=\"p-button-warning\"\n (click)=\"cancelQueue()\" [disabled]=\"!uploader.isUploading\">\n </p-button>\n }\n <p-button icon=\"fa fa-trash\" title=\"{{'bitnglibrary.upload.removeall' | transloco}}\" styleClass=\"p-button-danger\"\n (click)=\"removeQueue()\" [disabled]=\"!uploader.queue.length\">\n </p-button>\n </div>\n </div>\n }\n</div>\n","import { Component, Input } from \"@angular/core\";\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 template: `\n @if (usuario) {\n <span class=\"userControls\"><span class=\"fa fa-user\" title=\"{{ json }}\"></span> {{ usuario.nombreCompleto }} ({{usuario.login}}) </span>\n }\n `\n //styleUrls:['bit-user-controls.component.css']\n ,\n standalone: false\n})\nexport class BitUserControlsComponent {\n @Input() usuario;\n userJSON: string;\n\n constructor() {}\n\n get json(): string {\n return this.usuario && JSON.stringify(this.usuario, null, 4);\n }\n}\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 @Input() data: any; // objeto del que extraer la propiedad\n @Input() field: string; // propiedad booleana que procesar\n @Input() textTrue: string = \"Sí\";\n @Input() textFalse: string = \"No\";\n\n constructor() {}\n}\n","import { Component, OnChanges, Input } 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 implements OnChanges {\n translatedValue: string = \"carregant...\";\n\n @Input() value: string;\n @Input() emptyText: string = \"\";\n @Input() data: Domain[];\n\n constructor() {}\n\n ngOnChanges() {\n // cada vez que cambia algo en el input, recalculamos\n this.translatedValue = this.resolveTranslatedValue();\n }\n\n resolveTranslatedValue(): string {\n // buscar traducción para el valor en el dominio\n let domainMatch = this.data && this.data.find(obj => obj.value == this.value);\n\n if (domainMatch) {\n return domainMatch.label;\n } else if (this.value) {\n return String(`??${this.value}??`);\n } else {\n return this.emptyText;\n }\n }\n}\n","import { Input, Directive, Output, EventEmitter } from \"@angular/core\";\nimport { UntypedFormControl } from \"@angular/forms\";\n\nimport { BaseComponent } from \"../../../base/components/base.component\";\nimport { AyudaService } from \"../../services/ayuda.service\";\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 @Input(\"formControl\")\n control: UntypedFormControl;\n @Input()\n nombre: any;\n @Input()\n nombreDirectiva: any;\n @Input()\n label: string;\n @Input()\n estilo: string;\n @Input()\n tooltipTexto: string;\n @Input()\n tooltipPosicion: string;\n @Input()\n ayuda: string; // clave de la ayuda contextual\n @Input()\n placeholder: string = \"\";\n @Input()\n readOnly: boolean = false;\n @Input()\n hideLabel: boolean = false; // forzar que no se reserve espacio para el nombre del campo\n @Input()\n forceObligatorio: boolean = false;\n @Input()\n testid: string;\n @Output()\n onChange = new EventEmitter<any>();\n @Output()\n onTouch = new EventEmitter<any>();\n @Output()\n onBlur = new EventEmitter<any>();\n @Output()\n onFocus = new EventEmitter<any>();\n\n\n constructor(protected ayudaService: AyudaService) {\n super();\n }\n\n get dataTestId(): string {\n return this.testid ? this.testid : this.nombre;\n }\n\n // decidimos marcar el campo como obligatorio si se ha indicado a la fuerza (por parámetro)\n // o si el control de formulario asociado está saltando por ser obligatorio y no haberse rellenado\n get obligatorio(): boolean {\n return this.forceObligatorio || (this.control && this.control.errors && this.control.errors[\"required\"]);\n }\n\n showAyuda() {\n this.ayudaService.mostrarAyuda(this.ayuda);\n }\n}\n","import { Directive } from \"@angular/core\";\nimport { AyudaService } from \"../../services/ayuda.service\";\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: boolean;\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 constructor(protected ayudaService: AyudaService) {\n super(ayudaService);\n }\n\n setDisabledState(isDisabled: boolean): void {\n this.isDisabled = 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.onBlur.emit();\n this.touchComponent();\n }\n\n _onFocus() {\n this.onFocus.emit();\n }\n\n changeComponentValue(value: any) {\n this._onChange(value);\n this.onChange.emit(value);\n }\n\n touchComponent() {\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 { AyudaService } from \"../../../services/ayuda.service\";\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 constructor(protected ayudaService: AyudaService) {\n super(ayudaService);\n }\n\n get value_lectura(): string {\n if (this.value == null) {\n return \"\";\n } // si es null o undefined (es lo que evalúa el \"==null\")\n else {\n return this.value;\n }\n }\n\n writeValue(v: string): void {\n if (!v) {\n this.value = \"\";\n } else {\n this.value = v;\n }\n }\n\n onChangeValue(text) {\n this.value = text;\n this.changeComponentValue(this.value);\n }\n\n}\n","@if (!hideLabel) {\n <label>\n <ng-content></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 [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 [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\"></control-messages>\n}\n","import { Component, forwardRef, Input } from \"@angular/core\";\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from \"@angular/forms\";\n\nimport { AyudaService } from \"../../../services/ayuda.service\";\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 @Input()\n filas: number = 2;\n\n value: string;\n\n constructor(protected ayudaService: AyudaService) {\n super(ayudaService);\n }\n\n get value_lectura(): string {\n if (this.value == null) {\n return \"\";\n } // si es null o undefined (es lo que evalúa el \"==null\")\n else {\n return this.value;\n }\n }\n\n writeValue(v: string): void {\n if (!v) {\n this.value = \"\";\n } else {\n this.value = v;\n }\n }\n\n onChangeValue(text) {\n this.value = text;\n this.changeComponentValue(this.value);\n }\n\n}\n","@if (!hideLabel) {\n <label>\n <ng-content></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 [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\"></control-messages>\n}\n","import { Directive, Output, EventEmitter, inject, Input } from \"@angular/core\";\nimport moment from \"moment\";\n\nimport { AyudaService } from \"../../../services/ayuda.service\";\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 @Input()\n fechaMinima: Date; // fecha mínima seleccionable\n @Input()\n fechaMaxima: Date; // fecha máxima seleccionable\n @Input()\n calendarReadOnlyInput: boolean; // desabilitar edicion por teclado\n @Input()\n showButtonBar = false;\n @Input()\n format: string;\n @Input()\n appendTo: string = \"body\";\n @Output()\n onSelect = new EventEmitter<any>();\n\n protected dateUtils: DateUtils = inject(DateUtils);\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 constructor(protected ayudaService: AyudaService, protected translateService: TranslateService) {\n super(ayudaService);\n }\n\n _onTodayClick(event) {\n this.value = new Date();\n this.emitNewValue();\n }\n\n _onSelect(date: Date) {\n this.value = date;\n this.emitNewValue();\n this.onSelect.emit(date);\n }\n\n _onInput(data) {\n // recuperamos el valor del campo\n let value = data.currentTarget.value;\n try {\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 value = this.getDateAsString(d);\n this.writeValue(value);\n this.emitNewValue();\n }\n } catch (error) {\n }\n }\n\n _onBlur(data) {\n super._onBlur();\n // recuperamos el valor del campo\n let value = data.currentTarget.value;\n try {\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.writeValue(null);\n this.emitNewValue();\n }\n\n emitNewValue() {\n let v: string = null;\n if (this.value) {\n try {\n v = this.dateUtils.getDateAsString(this.value, this.getDateFormat());\n } catch (e) {\n }\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, forwardRef } from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from \"@angular/forms\";\n\nimport { AyudaService } from '../../../services/ayuda.service';\nimport { DateUtils } from '../../../services/date-utils.service';\nimport { TranslateService } from '../../../services/translate.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\n constructor(protected ayudaService: AyudaService, protected translateService: TranslateService, protected dateUtils: DateUtils) {\n super(ayudaService, translateService);\n this.placeholder = \"dd/mm/yyyy\"\n this.visual_format = DateUtils.FORMAT_SHORT_DATE;\n }\n\n get value_lectura(): string {\n if (this.value == null) {\n return \"\";\n }\n else {\n return this.dateUtils.getDateAsString(this.value, this.getDateFormat());\n }\n }\n\n writeValue(v: string): void {\n if (!v || v === \"\") {\n this.value = null;\n } else {\n this.value = this.dateUtils.getStringAsDate(v, this.getDateFormat());\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>\n <ng-content></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 | date: \"dd/MM/yyyy\" }}</p>\n}\n@if (!readOnly) {\n <p-calendar\n class=\"FormControl\"\n id=\"{{ nombre }}\"\n name=\"{{ nombre }}\"\n [disabled]=\"isDisabled\"\n [(ngModel)]=\"value\"\n dateFormat=\"dd/mm/yy\"\n placeholder=\"{{ placeholder }}\"\n [monthNavigator]=\"true\"\n [readonlyInput]=\"calendarReadOnlyInput\"\n [minDate]=\"fechaMinima\"\n [maxDate]=\"fechaMaxima\"\n [yearNavigator]=\"true\"\n yearRange=\"2000:2050\"\n [firstDayOfWeek]=\"1\"\n [locale]=\"locale\"\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 </p-calendar>\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\"></control-messages>\n}\n","import { Component, forwardRef } from \"@angular/core\";\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from \"@angular/forms\";\n\nimport { AyudaService } from \"../../../services/ayuda.service\";\nimport { DateUtils } from \"../../../services/date-utils.service\";\nimport { TranslateService } from \"../../../services/translate.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\n constructor(protected ayudaService: AyudaService, protected translateService: TranslateService, protected dateUtils: DateUtils) {\n super(ayudaService, translateService);\n this.placeholder = \"hh:mm\";\n this.visual_format = DateUtils.FORMAT_SHORT_TIME;\n }\n\n get value_lectura(): string {\n if (this.value == null) {\n return \"\";\n }\n else {\n return this.dateUtils.getTimeAsString(this.value, this.getDateFormat());\n }\n }\n\n writeValue(v: string): void {\n if (!v) {\n this.value = null;\n } else {\n this.value = this.dateUtils.getStringAsDate(v, this.getDateFormat());\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>\n <ng-content></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 | date: \"HH:mm\" }}</p>\n}\n@if (!readOnly) {\n <p-calendar\n class=\"FormControl\"\n id=\"{{ nombre }}\"\n name=\"{{ nombre }}\"\n [disabled]=\"isDisabled\"\n [(ngModel)]=\"value\"\n timeFormat=\"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 </p-calendar>\n}\n@if (control != null) {\n <control-messages [control]=\"control\" [field]=\"nombre\"></control-messages>\n}\n","import { Component, forwardRef, OnInit } from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from \"@angular/forms\";\nimport { AyudaService } from '../../../services/ayuda.service';\nimport { DateUtils } from '../../../services/date-utils.service';\nimport { TranslateService } from '../../../services/translate.service';\n\nimport { BitCalendarComponent } from \"../calendar/bit-calendar.component\";\n\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\n constructor(protected ayudaService: AyudaService, protected translateService: TranslateService, protected dateUtils: DateUtils) {\n super(ayudaService, translateService);\n this.placeholder = \"dd/mm/yyyy hh:mm\";\n this.visual_format = DateUtils.FORMAT_LONG_DATE;\n }\n\n get value_lectura(): string {\n if (this.value == null) {\n return \"\";\n }\n else {\n return this.dateUtils.getDateTimeAsString(this.value, this.getDateFormat());\n }\n }\n\n writeValue(v: string): void {\n if (!v) {\n this.value = null;\n } else {\n this.value = this.dateUtils.getStringAsDate(v, this.getDateFormat());\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>\n <ng-content></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 | date: \"dd/MM/yyyy HH:mm\" }}</p>\n}\n@if (!readOnly) {\n <p-calendar\n class=\"FormControl\"\n id=\"{{ nombre }}\"\n name=\"{{ nombre }}\"\n [disabled]=\"isDisabled\"\n [(ngModel)]=\"value\"\n dateFormat=\"dd/mm/yy\"\n placeholder=\"{{ placeholder }}\"\n [monthNavigator]=\"true\"\n [minDate]=\"fechaMinima\"\n [maxDate]=\"fechaMaxima\"\n [yearNavigator]=\"true\"\n yearRange=\"2000:2050\"\n [locale]=\"locale\"\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 </p-calendar>\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\"></control-messages>\n}\n","import { Component, forwardRef } from \"@angular/core\";\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from \"@angular/forms\";\n\nimport { AyudaService } from '../../../services/ayuda.service';\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 constructor(protected ayudaService: AyudaService) {\n super(ayudaService);\n }\n\n get value_lectura(): string {\n return this.value ? \"Sí\" : \"No\";\n }\n\n writeValue(v: Boolean): void {\n this.value = v;\n }\n\n onChangeValue(event) {\n this.value = event.checked;\n this.changeComponentValue(this.value);\n }\n}\n","@if (!hideLabel) {\n <label>\n <ng-content></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\n class=\"{{ estilo }}\"\n binary=\"true\"\n [(ngModel)]=\"value\"\n name=\"{{ nombre }}\"\n [disabled]=\"isDisabled\"\n id=\"{{ nombre }}\"\n (onChange)=\"onChangeValue($event)\"\n attr.data-testid=\"{{ dataTestId }}\"\n >\n </p-checkbox>\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\"></control-messages>\n}\n","import { Component, forwardRef } from \"@angular/core\";\n\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from \"@angular/forms\";\nimport { AyudaService } from \"../../../services/ayuda.service\";\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 constructor(protected ayudaService: AyudaService) {\n super(ayudaService);\n }\n\n get value_lectura(): string {\n return this.value ? \"Sí\" : \"No\";\n }\n\n writeValue(v: Boolean): void {\n this.value = v;\n }\n\n onChangeValue(event) {\n this.value = event.checked;\n this.changeComponentValue(this.value);\n }\n\n\n}\n","@if (!hideLabel) {\n <label>\n <ng-content></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-inputSwitch\n onLabel=\"Sí\"\n offLabel=\"No\"\n binary=\"true\"\n [(ngModel)]=\"value\"\n name=\"{{ nombre }}\"\n [disabled]=\"isDisabled\"\n id=\"{{ nombre }}\"\n (onChange)=\"onChangeValue($event)\"\n attr.data-testid=\"{{ dataTestId }}\"\n >\n </p-inputSwitch>\n}\n@if (control != null) {\n <control-messages [control]=\"control\" [field]=\"nombre\"></control-messages>\n}\n","import { Component, EventEmitter, forwardRef, Input, OnChanges, Output, SimpleChange } from \"@angular/core\";\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from \"@angular/forms\";\n\nimport { AyudaService } from \"../../../services\";\nimport { BitCustomComponent } from \"../bit-custom.component\";\nimport { AutoCompleteSelectEvent } from \"primeng/autocomplete\";\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, OnChanges {\n @Input()\n suggestions: any[];\n @Input()\n suggestionField: string;\n @Input()\n multiple: boolean = false;\n @Input()\n inputStyleClass: string;\n @Input()\n id: string = \"id\";\n @Input()\n displayValue: string;\n @Output()\n completeMethod = new EventEmitter<string>();\n @Output()\n onSelect = new EventEmitter<string>();\n @Output()\n onClear = new EventEmitter<any>();\n\n suggestions_mapped: string[];\n\n value: string;\n\n constructor(protected ayudaService: AyudaService) {\n super(ayudaService);\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 this.suggestions_mapped = newList && newList.map((obj: { [x: string]: any }) => (obj instanceof Object ? obj[this.suggestionField] : obj));\n //console.log(\"newList\", this.suggestions_mapped);\n }\n }\n }\n\n search(event: any) {\n this.completeMethod.emit(event);\n }\n\n get value_lectura(): string {\n if (this.value == null) {\n return \"\";\n } // si es null o undefined (es lo que evalúa el \"==null\")\n else {\n return this.value;\n }\n }\n\n writeValue(v: number | string): void {\n // El 0 es un valor válido\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 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 // 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 // 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.onChange.emit(valueConverted);\n }\n this._onChange(valueConverted);\n }\n\n _onSelect(event: AutoCompleteSelectEvent) {\n this.value = event.value;\n this.changeComponentValue(this.value);\n if (this.suggestionField) {\n let selectedObject = this._findObject(event.value);\n this.onSelect.emit(selectedObject);\n } else {\n this.onSelect.emit(this.value);\n }\n }\n\n _onClear() {\n this.value = \"\";\n this.changeComponentValue(this.value);\n this.onClear.emit();\n }\n\n _findObject(value: any) {\n return value && this.suggestions.find((obj) => obj[this.suggestionField] === value);\n }\n}\n","@if (!hideLabel) {\n <label>\n <ng-content></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-autoComplete\n [(ngModel)]=\"value\"\n id=\"{{ nombre }}\"\n name=\"{{ nombre }}\"\n [disabled]=\"isDisabled\"\n [placeholder]=\"placeholder\"\n delay=\"400\"\n [suggestions]=\"suggestions_mapped\"\n [multiple]=\"multiple\"\n [inputStyleClass]=\"inputStyleClass\"\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 ></p-autoComplete>\n}\n@if (control != null) {\n <control-messages [control]=\"control\" [field]=\"nombre\"></control-messages>\n}\n","import { Input, Directive } from \"@angular/core\";\nimport { ActivatedRoute } from \"@angular/router\";\nimport { take } from \"rxjs/operators\";\n\nimport { AyudaService } from \"../../../services/ayuda.service\";\nimport { TranslateService } from \"../../../services/translate.service\";\nimport { BitCustomComponent } from \"../bit-custom.component\";\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 @Input() hideLabel: boolean = false; // forzar no reservar espacio para el nombre del campo\n @Input() data: any[]; // lista de valores estáticos con lo que inicializamos el select\n @Input() id: any;\n @Input() excludedValues: any[];\n @Input() emptyText: string = \"bitnglibrary.bitdropdown.any\"; //valor por defecto seleccionable como primer elemento\n @Input() includeEmpty: boolean = true;\n @Input() valueAs: string;\n @Input() appendTo: string = \"body\";\n @Input() group: boolean = false;\n @Input() atributoLabel = \"label\"; // El atributo de los objetos de la lista que corresponde al label\n @Input() atributoValue = \"value\"; // El atributo de los objetos de la lista que corresponde al valor\n @Input() atributoDisabled = \"inactivo\"; // El atributo de los objetos de la lista que indica si un valor está deshabilitado\n\n listaOpciones: any[] = [];\n listaOpcionesVisible: any[] = [];\n valorActual: any; // solo se usa para hacer la transformación cuando es estrictamente necesario\n emptyTextResolved: string = \"\";\n value: any;\n\n constructor(\n protected router: ActivatedRoute,\n protected ayudaService: AyudaService,\n protected translateService: TranslateService\n ) {\n super(ayudaService);\n }\n\n // custom processing after retrieving data array from service\n\n // custom processing after retrieving data array from service\n postRetrieveData() {\n if (this.listaOpciones) {\n this.listaOpcionesVisible = Object.assign([], this.listaOpciones);\n // repasamos si hay opciones a excluir que debamos eliminar\n if (this.excludedValues) {\n this.listaOpcionesVisible = this.listaOpcionesVisible.filter((op) => this.excludedValues.indexOf(op.value) < 0);\n }\n } else {\n this.listaOpcionesVisible = [];\n }\n // determinamos si debemos incluir la opción \"sin selección\" y con qué texto\n if (this.includeEmpty) {\n this.translateService\n .selectTranslateWithContext(this.emptyText)\n .pipe(take(1))\n .subscribe((translation) => {\n let newOption = { value: null, label: translation };\n newOption[this.atributoValue] = null;\n newOption[this.atributoLabel] = translation;\n this.listaOpcionesVisible.splice(0, 0, newOption);\n this.emptyTextResolved = translation;\n });\n }\n }\n}\n","import { Component, forwardRef, Input, OnChanges, SimpleChange } from \"@angular/core\";\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from \"@angular/forms\";\nimport { ActivatedRoute } from \"@angular/router\";\n\nimport { AyudaService, 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 OnChanges, ControlValueAccessor {\n @Input() filter: boolean = false;\n\n constructor(\n protected router: ActivatedRoute,\n protected ayudaService: AyudaService,\n protected translateService: TranslateService\n ) {\n super(router, ayudaService, translateService);\n }\n\n ngOnChanges(changes: { [propKey: string]: SimpleChange }) {\n let hayCambios: boolean = false;\n for (let propName in changes) {\n let changedProp = changes[propName];\n if (propName === \"data\") {\n this.listaOpciones = changedProp.currentValue ? changedProp.currentValue.slice() : [];\n hayCambios = true;\n } else if (propName === \"excludedValues\") {\n this.excludedValues = changedProp.currentValue;\n hayCambios = true;\n } else if (propName === \"includeEmpty\") {\n this.includeEmpty = changedProp.currentValue;\n hayCambios = true;\n }\n }\n if (hayCambios) {\n this.postRetrieveData();\n }\n }\n\n get value_lectura(): string {\n let dom = this.listaOpciones && this.listaOpciones.find((d) => d[this.atributoValue] == this.value);\n return dom ? dom[this.atributoLabel] : this.value;\n }\n\n writeValue(v: any): void {\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.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>\n <ng-content></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 [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\"></control-messages>\n }\n}\n","import { ChangeDetectorRef, Component, forwardRef, Input, OnChanges, SimpleChange } from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { ActivatedRoute } from '@angular/router';\n\nimport { AyudaService } from '../../../services/ayuda.service';\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 provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => BitDropDownMultipleComponent),\n multi: true\n }],\n styleUrls: [\"bit-dropdown-multiple.component.css\"],\n standalone: false\n})\nexport class BitDropDownMultipleComponent extends BitDropDownGeneralComponent implements OnChanges, ControlValueAccessor {\n @Input() maxSelectedLabels: number = 3;\n @Input() showSeparateSelectedLabels: boolean = false; // indica si se muestran los elementos seleccionados en una columna separada\n @Input() title: string; //título que aparece en el link para eliminar un elemento una vez seleccionado\n @Input() filter: boolean;\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 protected router: ActivatedRoute,\n protected ayudaService: AyudaService,\n protected translateService: TranslateService,\n protected changeDetectorRef: ChangeDetectorRef\n ) {\n super(router, ayudaService, translateService);\n }\n\n ngOnChanges(changes: { [propKey: string]: SimpleChange }) {\n let hayCambios: boolean = false;\n for (let propName in changes) {\n let changedProp = changes[propName];\n if (propName === \"data\") {\n this.listaOpciones = changedProp.currentValue ? changedProp.currentValue.slice() : [];\n hayCambios = true;\n } else if (propName === \"excludedValues\") {\n this.excludedValues = changedProp.currentValue;\n hayCambios = true;\n } else if (propName === \"includeEmpty\") {\n this.includeEmpty = changedProp.currentValue;\n hayCambios = true;\n }\n }\n if (hayCambios) {\n this.postRetrieveData();\n }\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 }\n }\n return label;\n }\n\n deleteSelectedItem(event, item) {\n event.preventDefault();\n let index = this.value.indexOf(item);\n var currentValue = this.value;\n currentValue.splice(index, 1);\n this.value = currentValue.slice(0);\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 return value.join(\", \");\n }\n return \"\";\n }\n\n writeValue(v: any[]): void {\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 }\n }\n }\n\n _onChangeValue(event) {\n this.value = event.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 }\n this.emitValue();\n }\n\n _onClear() {\n this.value = null;\n this.emitValue();\n }\n\n emitValue() {\n this.changeComponentValue(this.value);\n }\n\n}\n","@if (!hideLabel) {\n <label><ng-content></ng-content> @if (obligatorio) {\n <span class=\"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\n id=\"{{ id }}\"\n [(ngModel)]=\"value\"\n [options]=\"listaOpciones\"\n [disabled]=\"isDisabled\"\n [optionLabel]=\"atributoLabel\"\n [optionValue]=\"atributoValue\"\n [defaultLabel]=\"emptyTextResolved\"\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 </p-multiSelect>\n @if (control != null) {\n <control-messages [control]=\"control\" [field]=\"id\"></control-messages>\n }\n @if (showSeparateSelectedLabels) {\n <div>\n <label> </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, EventEmitter, forwardRef, Output } from \"@angular/core\";\nimport { Input } from \"@angular/core\";\n\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from \"@angular/forms\";\nimport { ConfigurationEditor } from \"../../../data/configuration-editor\";\nimport { AyudaService } from \"../../../services/ayuda.service\";\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 @Input() tipo: 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 @Input() configuration: ConfigurationEditor = BitEditorComponent.globalConfiguration;\n @Input() height: number = 100;\n @Output() onTextChange = new EventEmitter<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 constructor(protected ayudaService: AyudaService) {\n super(ayudaService);\n }\n\n get value_lectura(): string {\n if (this.value == null) {\n return \"\";\n } // si es null o undefined (es lo que evalúa el \"==null\")\n else {\n return this.value;\n }\n }\n\n writeValue(v: string): void {\n if (!v) {\n this.value = \"\";\n } else {\n this.value = v;\n }\n }\n\n onChangeValue(text) {\n this.value = text;\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.onTextChange.emit(event);\n }\n\n get configuracion(): ConfigurationEditor {\n return this.configuration ? this.configuration : BitEditorComponent.globalConfiguration;\n }\n}\n","@if (!hideLabel) {\n <label>\n <ng-content></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\" value=\"ordered\" type=\"button\"></button>\n <button class=\"ql-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\n 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 </p-editor>\n}\n@if (control != null) {\n <control-messages [control]=\"control\" [field]=\"nombre\"></control-messages>\n}\n","import { ChangeDetectorRef, Component, Input, OnChanges, OnInit, SimpleChanges } from '@angular/core';\nimport { AyudaService } from '../../../services';\nimport { DateUtils, SessionSharedService } from '../../../services';\nimport { ActivatedRoute } from '@angular/router';\n\n@Component({\n selector: \"bit-readonly\",\n templateUrl: \"bit-readonly.component.html\",\n standalone: false\n})\nexport class BitReadonlyComponent implements OnInit, OnChanges {\n @Input() ayuda: string;\n @Input() valor: any;\n @Input() tipo: \"text\" | \"textarea\" | \"number\" | \"date\" | \"datetime\" | \"time\" | \"boolean\" | \"list\" | \"list-multiple\"; // text (default), date, datetime, time, boolean, textarea, list, list-multiple\n @Input() hideLabel: boolean = false;\n @Input() data: any[]; //lista de valores estáticos con lo que inicializamos el select\n @Input() domain: string; //nombre del dominio del que queremos extraer los datos\n\n private opcionesDropdown: any[] = [];\n\n constructor(\n protected router: ActivatedRoute,\n protected sessionShared: SessionSharedService,\n protected ayudaService: AyudaService,\n protected changeDetectorRef: ChangeDetectorRef,\n protected dateUtils: DateUtils\n ) {}\n\n ngOnInit() {\n if (!!this.domain && !this.data) {\n this.router.data.subscribe(result => {\n let dominios = result[\"dominios\"];\n let domainTipo = dominios[this.domain];\n if (domainTipo != null) {\n domainTipo.subscribe(\n (result: any[]) => {\n //console.log(result);\n this.sessionShared.set(this.domain, result.slice()); // almacenamos en sesión una copia para evitar transmitir cambios\n this.opcionesDropdown = result.slice();\n this.changeDetectorRef.detectChanges();\n },\n (error: any) => {\n console.log(\"Error carrega dominis\", this.domain, error);\n }\n );\n } else {\n console.log(\"Domini sense dades\", this.domain);\n }\n });\n } else if (this.data) {\n this.opcionesDropdown = this.data.slice();\n }\n }\n\n ngOnChanges(changes: SimpleChanges) {\n for (let propName in changes) {\n if (propName === \"data\") {\n let newData: any[] = changes[propName].currentValue || [];\n this.opcionesDropdown = newData.slice();\n this.changeDetectorRef.detectChanges();\n }\n }\n }\n\n showAyuda() {\n this.ayudaService.mostrarAyuda(this.ayuda);\n }\n\n get value_lectura(): string {\n this.tipo = this.tipo || \"text\";\n switch (this.tipo) {\n case \"date\":\n return this.valor ? this.dateUtils.getDateAsString(this.dateUtils.stringShortToDate(this.valor)) : \"\";\n case \"datetime\":\n return this.valor ? this.dateUtils.getDateTimeAsString(this.dateUtils.stringToDate(this.valor)) : \"\";\n case \"time\":\n return this.valor ? this.dateUtils.getTimeAsString(this.dateUtils.stringToTime(this.valor)) : \"\";\n case \"boolean\":\n return this.valor ? \"Sí\" : \"No\";\n case \"list\":\n let d = this.opcionesDropdown.find(d => d.value == this.valor);\n return d ? d.label : \"\";\n case \"list-multiple\":\n let labels: any[] = this.opcionesDropdown && this.opcionesDropdown.filter(d => this.valor && this.valor.indexOf(d.value) > -1).map(d => d.label);\n return labels ? labels.join(\", \") : null;\n default:\n return this.valor;\n }\n }\n\n get isTextarea(): boolean {\n return this.tipo === \"textarea\";\n }\n}\n","@if (!hideLabel) {\n <label>\n <ng-content></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 { Directive, TemplateRef } from \"@angular/core\";\n\n@Directive({\n selector: \"[viewMode]\",\n standalone: false\n})\nexport class ViewModeDirective {\n constructor(public tpl: TemplateRef<any>) {}\n}\n","import { Directive, TemplateRef } from \"@angular/core\";\n\n@Directive({\n selector: \"[editMode]\",\n standalone: false\n})\nexport class EditModeDirective {\n constructor(public tpl: TemplateRef<any>) {}\n}\n","import { Component, Output, EventEmitter, ContentChild, ElementRef, OnInit, TemplateRef, ChangeDetectorRef } from \"@angular/core\";\nimport { fromEvent, Subject } from \"rxjs\";\nimport { takeUntil, filter, take, switchMapTo } from \"rxjs/operators\";\n\nimport { BaseComponent } from \"../../../base/components/base.component\";\nimport { ViewModeDirective } from \"../../directives/view-mode.directive\";\nimport { EditModeDirective } from \"../../directives/edit-mode.directive\";\n\n/**\n * Componente que permite editar en linea valores\n */\n@Component({\n selector: \"bit-editable\",\n template: ` <ng-container *ngTemplateOutlet=\"currentView\"></ng-container> `,\n standalone: false\n})\nexport class BitEditableComponent extends BaseComponent implements OnInit {\n @Output() update = new EventEmitter();\n @ContentChild(ViewModeDirective) viewModeTpl: ViewModeDirective;\n @ContentChild(EditModeDirective) editModeTpl: EditModeDirective;\n\n editMode = new Subject();\n editMode$ = this.editMode.asObservable();\n mode: \"view\" | \"edit\" = \"view\";\n\n constructor(private host: ElementRef, private changeDetectorRef: ChangeDetectorRef) {\n super();\n }\n\n ngOnInit() {\n this.viewModeHandler();\n this.editModeHandler();\n }\n\n /**alterna entre las dos vistas, la de visualización y la edición */\n get currentView(): TemplateRef<any> {\n return this.mode === \"view\" ? this.viewModeTpl.tpl : this.editModeTpl.tpl;\n }\n\n private get element(): any {\n return this.host.nativeElement;\n }\n\n /**Gestiona el dobleClick sobre el componente */\n viewModeHandler() {\n fromEvent(this.element, \"click\")\n .pipe(takeUntil(this.destroy$))\n .subscribe(() => {\n console.log(\"click on element\", this.element);\n this.mode = \"edit\";\n this.editMode.next(true); //emitimos el evento de que hemos pasado a edición\n this.changeDetectorRef.detectChanges(); //tenemos que activar el mecanismo de detección de cambios\n });\n }\n\n /**Gestiona hacer click fuera del componente. Solo se activa si estamos en modo edición */\n editModeHandler() {\n //observable cuando pulsan con el ratón en cualquier parte de la página\n const clickOutside$ = fromEvent(document, \"click\").pipe(\n filter(({ target }) => {\n //filtramos que el click no sea precisamente en el elemento que estamos editando\n return this.element.contains(target) === false;\n }),\n take(1)\n );\n //observable cuando pulsan enter en el input\n fromEvent(this.element, \"keyup\")\n .pipe(\n filter((e: any) => e.keyCode == 13),\n takeUntil(this.destroy$)\n )\n .subscribe((event) => {\n console.log(\"event enter pressed\");\n this.throwUpdate();\n });\n\n //cuando editMode se dispara, al hacer dobleclick el usuario, activamos el observable clickOutside para gestionar cuando\n //el usuario ha terminado de editar el componente\n this.editMode$.pipe(switchMapTo(clickOutside$), takeUntil(this.destroy$)).subscribe((event) => {\n console.log(\"event click outside\");\n this.throwUpdate();\n });\n }\n\n throwUpdate() {\n this.update.next(null);\n this.mode = \"view\";\n }\n}\n","import { Component, ElementRef, forwardRef, HostListener, Input, ViewChild } from \"@angular/core\";\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from \"@angular/forms\";\n\nimport { AyudaService } from \"../../../services\";\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 @Input()\n modo: \"decimal\" | \"currency\" = \"decimal\";\n @Input()\n divisa: string;\n @Input()\n prefijo: string;\n @Input()\n sufijo: string;\n @Input()\n minimo: number;\n @Input()\n maximo: number;\n @Input()\n numeroDecimales: number;\n @Input()\n maximoDecimales: number;\n @Input()\n separadorGrupo: boolean = false;\n @Input()\n mostrarBotones: boolean;\n @Input()\n incremento: number = 1;\n\n @ViewChild('inputReference', { read: ElementRef })\n inputElement: ElementRef;\n\n value: number;\n\n constructor(protected ayudaService: AyudaService) {\n super(ayudaService);\n }\n\n get value_lectura(): number {\n return this.value;\n }\n\n writeValue(v: number): void {\n this.value = v;\n }\n\n onChangeValue(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>\n <ng-content></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 [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 [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\"></control-messages>\n}\n","import { ChangeDetectorRef, Component, forwardRef, Input, OnInit } from \"@angular/core\";\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from \"@angular/forms\";\n\nimport { BitNumberComponent } from \"../number/bit-number.component\";\nimport { AyudaService } from \"../../../services\";\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 @Input()\n prefijo: string;\n @Input()\n sufijo: string;\n @Input()\n minimo: number;\n @Input()\n maximo: number;\n @Input()\n mostrarBotones: boolean;\n @Input()\n incremento: number;\n\n modo: \"decimal\" | \"currency\" = \"currency\";\n divisa: string = \"EUR\";\n mostrarMoneda: boolean = true;\n maximoDecimales: number = 2;\n separadorGrupo: boolean = true;\n\n constructor(protected ayudaService: AyudaService) {\n super(ayudaService);\n }\n\n}\n","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\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 { 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 { EditModeDirective } from \"./edit-mode.directive\";\nimport { FocusRegisterDirective } from \"./focus-register.directive\";\nimport { ViewModeDirective } from \"./view-mode.directive\";\n\nexport * from \"./bit-panel.directive\";\nexport * from \"./focus-register.directive\";\nexport * from \"./edit-mode.directive\";\nexport * from \"./view-mode.directive\";\n\nexport const directives: any[] = [\n BitPanelDirective,\n FocusRegisterDirective,\n EditModeDirective,\n ViewModeDirective\n]","import { Component, forwardRef, Input } from \"@angular/core\";\n\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from \"@angular/forms\";\nimport { BitCustomComponent } from \"../bit-custom.component\";\nimport { AyudaService } from \"../../../services\";\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 @Input()\n valorTrue: any = true;\n @Input()\n valorFalse: any = false;\n\n value: Boolean;\n\n constructor(protected ayudaService: AyudaService) {\n super(ayudaService);\n }\n\n get value_lectura(): string {\n return this.value ? \"Sí\" : \"No\";\n }\n\n writeValue(v: Boolean): void {\n this.value = v;\n }\n\n onChangeValue(event: { checked: Boolean; }) {\n this.value = event.checked;\n this.changeComponentValue(this.value);\n }\n\n}\n","@if (!hideLabel) {\n <label>\n <ng-content></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-inputSwitch\n onLabel=\"Sí\"\n offLabel=\"No\"\n binary=\"true\"\n [(ngModel)]=\"value\"\n name=\"{{ nombre }}\"\n [disabled]=\"isDisabled\"\n id=\"{{ nombre }}\"\n [trueValue]=\"valorTrue\"\n [falseValue]=\"valorFalse\"\n (onChange)=\"onChangeValue($event)\"\n attr.data-testid=\"{{ dataTestId }}\"\n >\n </p-inputSwitch>\n}\n@if (control != null) {\n <control-messages [control]=\"control\" [field]=\"nombre\"></control-messages>\n}\n","import { Component, forwardRef, Input } from \"@angular/core\";\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from \"@angular/forms\";\nimport { CheckboxChangeEvent } from \"primeng/checkbox\";\nimport { BitCustomComponent } from \"../bit-custom.component\";\nimport { AyudaService } from \"../../../services\";\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 @Input()\n chekAll: boolean = true;\n\n @Input()\n data: Domain[];\n\n isCheckAll: boolean = false;\n value: (string | boolean)[];\n\n constructor(protected ayudaService: AyudaService) {\n super(ayudaService);\n }\n\n get value_lectura(): string {\n if (this.value) {\n // Mostramos los labels del dominio que está en data.\n return 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 } else {\n return \"\";\n }\n }\n\n writeValue(v: string[]): void {\n this.value = v;\n this.refreshCheckAll();\n }\n\n onChangeValue(event: CheckboxChangeEvent) {\n let selected: string[] = event && event.checked;\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 = !this.isCheckAll;\n\n if (this.isCheckAll) {\n this.value = this.data.map((v: Domain) => v.value);\n } else {\n this.value = null;\n }\n\n this.changeComponentValue(this.value);\n }\n\n get estiloCheckAll(): string {\n if (this.isCheckAll) {\n return \"pi pi-check-square\";\n } else {\n return \"pi pi-stop\";\n }\n }\n\n private refreshCheckAll() {\n this.isCheckAll = this.data?.length === this.value?.length;\n }\n}\n","<ng-container *transloco=\"let t\">\n\n @if (!hideLabel) {\n <label>\n <ng-content></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 [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\"></control-messages>\n }\n }\n\n\n</ng-container>\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\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 // añadimos las claves mínimas que tendrá la app\n this.keys.push(StorageService.MENU, StorageService.LANGUAGE, StorageService.VERSION, StorageService.THEME);\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 { 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, Output, EventEmitter, Input, ChangeDetectionStrategy, inject } from \"@angular/core\";\nimport { MenuItem } from \"primeng/api/menuitem\";\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 @Input()\n items: MenuItem[];\n @Input()\n visibilidad: boolean;\n @Output()\n onSelectLanguage = new EventEmitter<any>();\n @Output()\n onCloseMenu = new EventEmitter<boolean>();\n @Output()\n onMenuTitle = new EventEmitter<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.fundaciobit.org/\" target=\"_blank\">Fundació Bit</a></p>\n</div>\n","import { Injectable, inject } 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: string;\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) {\n console.log(\"update locale\", locale);\n if (this.locales.some((l) => l.value === locale)) {\n this.locale = locale;\n }\n this.storageService.setData(StorageService.LANGUAGE, this.locale);\n this.translateService.setActiveLang(this.locale);\n }\n}\n\n","import { Component, EventEmitter, Output, ChangeDetectionStrategy } from \"@angular/core\";\nimport { LocaleService } from \"../../services/locale.service\";\n\n@Component({\n selector: \"bit-language-selector\",\n template: `\n <div>\n <select class=\"form-control\" (change)=\"selectLanguage($event.target.value)\">\n <option disabled selected>{{ \"languageselection\" | transloco }}</option>\n @for (l of localeService.locales; track l) { <@if (l.value === localeService.locale) {\n <option selected [value]=\"l.value\">{{ l.label }}</option>\n } @else {\n <option [value]=\"l.value\">{{ l.label }}</option>\n } }\n </select>\n </div>\n `,\n styleUrls: [\"bit-language-selector.component.css\"],\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: false\n})\nexport class BitLanguageSelectorComponent {\n @Output()\n onSelectLanguage = new EventEmitter<string>();\n\n constructor(public localeService: LocaleService) {}\n\n selectLanguage(language) {\n this.localeService.updateLocale(language);\n this.onSelectLanguage.emit(language);\n }\n}\n","import { Component, ChangeDetectionStrategy, output, input } from \"@angular/core\";\nimport { LocaleService } from \"../../services/locale.service\";\n\n@Component({\n selector: \"bit-theme-selector\",\n template: `\n <div>\n <select class=\"form-control\" (change)=\"selectTheme($event.target.value)\">\n <option disabled selected>{{ \"themeselection\" | transloco }}</option>\n @for (theme of themes(); track theme) { <@if (theme === currentTheme()) {\n <option selected [value]=\"theme\">{{ theme }}</option>\n } @else {\n <option [value]=\"theme\">{{ theme }}</option>\n } }\n </select>\n </div>\n `,\n styleUrls: [\"bit-theme-selector.component.css\"],\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: false\n})\nexport class BitThemeSelectorComponent {\n themes = input<string[]>();\n currentTheme = input<string>();\n onSelectTheme = output<string>();\n\n constructor(public localeService: LocaleService) {}\n\n selectTheme(theme) {\n this.onSelectTheme.emit(theme);\n }\n}\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 \"@ngneat/transloco\";\n\nimport { CalendarModule } from \"primeng/calendar\";\nimport { InputTextModule } from \"primeng/inputtext\";\nimport { } from \"primeng/dropdown\";\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 { InputSwitchModule } from \"primeng/inputswitch\";\nimport { TooltipModule } from \"primeng/tooltip\";\nimport { PopoverModule } from 'primeng/popover';\nimport { MessagesModule } from \"primeng/messages\";\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';\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 { BitEditableComponent } from \"./components/form/bit-editable.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\";\n\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\";\nimport { BitSidebarComponent } from \"./components/misc/bit-sidebar.component\";\nimport { BitLanguageSelectorComponent } from \"./components/misc/bit-language-selector.component\";\nimport { BitThemeSelectorComponent } from \"./components/misc/bit-theme-selector.component\";\n\nconst modules: any[] = [\n AccordionModule,\n AutoCompleteModule,\n BadgeModule,\n CalendarModule,\n CheckboxModule,\n ChipModule,\n CommonModule,\n DialogModule,\n DynamicDialogModule,\n InputNumberModule,\n EditorModule,\n FieldsetModule,\n FileUploadModulePrimeNG,\n FormsModule,\n InputGroupAddonModule,\n InputGroupModule,\n InputMaskModule,\n InputSwitchModule,\n TextareaModule,\n InputTextModule,\n MegaMenuModule,\n MenubarModule,\n MenuModule,\n MessagesModule,\n MultiSelectModule,\n SelectModule,\n PopoverModule,\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 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 BitEditableComponent,\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: string = \"info\";\n static WARN: string = \"warn\";\n static ERROR: string = \"error\";\n\n constructor(\n public title: TranslatedMessage,\n public message: TranslatedMessage,\n public severity: string = \"info\" //info, warn, error\n ) {}\n}\n","import { TranslatedMessage, ErrorValidateForm } from \"../../base/models\";\nimport { BitNotification } from \"./bitnotification\";\n\nexport class BitNotificationError extends BitNotification {\n clearErrors: boolean;\n constructor(public title: TranslatedMessage, public message: TranslatedMessage, public context?: string, public multipleErrors?: ErrorValidateForm[], public detail?: string) {\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","import { inject, Injectable, signal } from \"@angular/core\";\nimport { PrimeNG } from \"primeng/config\";\nimport Aura from \"@primeng/themes/aura\";\nimport Nora from \"@primeng/themes/nora\";\nimport Material from \"@primeng/themes/material\";\nimport Lara from \"@primeng/themes/lara\";\nimport { StorageService } from \"./storage.service\";\n\n@Injectable()\nexport class ThemeFBitService {\n static THEME_FBIT = \"FBit\"; // nombre del tema por defecto\n primeNgConfig = inject(PrimeNG);\n storageService = inject(StorageService);\n themeList$ = signal([ThemeFBitService.THEME_FBIT, \"Aura\", \"Material\", \"Lara\", \"Nora\"]);\n currentTheme$ = signal(\"Aura\");\n FBit: any;\n\n constructor() {}\n\n setFBitTheme(FBit: any) {\n console.log(\"setFBitTheme\");\n this.FBit = FBit;\n }\n\n setTheme(theme: any) {\n let primeTheme = this.getTheme(theme);\n console.log(\"setTheme\", theme, !!primeTheme);\n this.primeNgConfig.theme.set({\n preset: primeTheme\n });\n this.currentTheme$.set(theme);\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 \"Material\":\n return Material;\n case \"Lara\":\n return Lara;\n case \"Nora\":\n return Nora;\n case \"FBit\":\n return this.FBit || Aura;\n }\n }\n\n // funciona pero nuestras apps no están preparadas para verse en modo oscuro\n toggleDarkMode() {\n const element = document.querySelector(\"html\");\n element.classList.toggle(\"my-app-dark\");\n console.log(\"toggleDarkMode\");\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 } 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 constructor(private bitMessageService: BitMessageService, private generalUtils: GeneralUtils) {\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 // no permitimos que desde fuera del store se pueda modificar el estado\n // por ejemplo no podemos ejecutar esto: patchState(this.entityStore, setEntities(list));\n { providedIn: \"root\", protectedState: false }, // no permitimos que desde fuera del store se pueda modificar el estado\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 // si hay filtro proporcionado podremos filtrar las entidades\n if (this.entityMetadata[this.entityName] && this.entityMetadata[this.entityName].filterFn) {\n // invocamos a la función de filtro definida por el usuario\n //let pattern = JSON.stringify(state.filter());\n return this.entityMetadata[this.entityName].filterFn(state.entities(), state.pattern()); //state.pattern()\n } else {\n return state.entities();\n }\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[]> = this.entityStore.entities;\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/misc/bit-language-selector.component\";\nexport * from \"./lib/sharedlibrary/components/misc/bit-sidebar.component\";\nexport * from \"./lib/sharedlibrary/components/misc/bit-theme-selector.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/bit-editable.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\";\nexport * from \"./lib/sharedlibrary/directives/edit-mode.directive\";\nexport * from \"./lib/sharedlibrary/directives/view-mode.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":["i2","CustomError","i1","i2.BitMessageService","i3.GeneralUtils","i4.TranslateService","i1.TranslateService","i2.GeneralUtils","i1.FocusService","i1.BitMessageService","i2.TranslateService","i3","i4","i5","i1.AyudaService","i2.BitHelpComponent","i1.BitPajigatorComponent","i2.BitFooterMessagesComponent","i4.BitBotonAyudaComponent","i6.OtherToolbarActionPipe","i2.BitBreadCrumbComponent","i3.BitToolbarComponent","i1.GeneralUtils","i7.FocusRegisterDirective","i8","i5.FocusRegisterDirective","i6.BitControlMessages","i3.FocusRegisterDirective","i4.BitControlMessages","i3.DateUtils","i7","i2.AyudaService","i3.TranslateService","i6","i7.BitControlMessages","i2.SessionSharedService","i2.DateUtils","i5.BitControlMessages","isNumber","i1.LocaleService","FileUploadModulePrimeNG","FileUploadModule"],"mappings":"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"}
|