@clavisco/search-modal
v0.0.2
Published
> Permite mostrar datos maestros en una modal en la cual se podrán filtrar y seleccionar el dato maestro requerido
Downloads
52
Readme
Acerca de @clavisco/search-modal
Permite mostrar datos maestros en una modal en la cual se podrán filtrar y seleccionar el dato maestro requerido
¿Qué resuelve?
Facilita la Visualización de Datos Maestros: El componente simplifica la visualización de datos maestros al proporcionar una interfaz modal intuitiva para mostrar estos datos de manera clara y organizada.
Capacidad de Filtrado y Selección: Permite a los usuarios filtrar y seleccionar datos maestros específicos dentro de la modal, lo que mejora la experiencia de usuario al ofrecer una forma eficiente de interactuar con grandes conjuntos de datos.
Optimización del Proceso de Selección: Al ofrecer funcionalidades de filtrado, el componente agiliza el proceso de selección del dato maestro requerido, lo que ahorra tiempo y mejora la productividad del usuario.
Mejora de la Usabilidad: Al proporcionar una modalidad para visualizar y seleccionar datos maestros, el componente mejora la usabilidad al presentar la información de manera clara y permitir una interacción fácil y efectiva.
Consistencia y Precisión: Al mostrar datos maestros de manera uniforme y ofrecer opciones de filtrado, el componente garantiza la consistencia y la precisión en la selección de los datos requeridos.
Mejora de la Experiencia del Usuario: En conjunto, estas características contribuyen a una experiencia del usuario mejorada al simplificar la visualización y selección de datos maestros, lo que resulta en una interacción más eficiente y satisfactoria con la aplicación o sistema que utiliza este componente.
Dependencias
Resumen de versión
Características (Features)
- Se agrega configuración para permitir cambiar icono de selección de fila
Implementación
Para la implementación de este componente se requiere usar MatDialog de @angular/material, dicha modal en la propiedad data
va a recibir un objeto del tipo ISearchModalComponentDialogData
el cual posee las siguientes propiedades:
- Id:
Requerido
Representa el identificador de la modal en para los procesos realizados con LinkerService. - ModalTitle:
Opcional
El titulo que va a tener la modal cuando se muestre. - TableMappedColumns:
Opcional
Contiene las propiedades a ignorar y renombrar del los registros que se van a mostrar en la tabla. - Records:
Opcional
Registros que se van a mostrar en la tabla. - RecordsCount:
Opcional
Cantidad de registros que se van a mostrar en la tabla. - MinInputCharacters:
Opcional
Cantidad de caracteres que se requeridad en el valor del input de busqueda para iniciar el proceso de filtrado. - InputDebounceTime:
Opcional
Tiempo de espera entre cada cambio del valor de input de busqueda para iniciar el proceso de filtrado. - ShouldPaginateRequest:
Opcional
Indica si la tabla manejará la paginación como una solicitud paginada. El valor predeterminado es false. - SelectRowIcon:
Opcional
Icono que se muestra en la fila el cual es usado para seleccionarla.
Ejemplo de implementación
records: any[] = [
{
CardCode: "C00001",
CardName: "REPUBLICA CHECA S.A",
GroupNum: 101,
SlpCode: 23,
Identification: 112345498,
Id: 1
},
{
CardCode: "C00002",
CardName: "REPLUBLICA DOMINICADA S.A",
GroupNum: 101,
SlpCode: 14,
Identification: 115345498,
Id: 2
}];
constructor(private matDialog: MatDialog){}
ngOnInit(): void
{
Register<CL_CHANNEL>(this.modalId, CL_CHANNEL.OUTPUT, this.OnMasterDataSelected, this.callbacks);
}
OnMaterDataSelected = (_event: ICLEvent) => {
// Do what you want with the selected record
}
//...more code
ShowModal(): void
{
this.matDialog.open(SearchModalComponent, {
width: '65%',
height: "60%",
data: {
Id: this.modalId,
ModalTitle: 'Lista de socios de negocios',
Records: this.records,
RecordsCount: this.records.length,
MinInputCharacters: 5,
InputDebounceTime: 250,
ShouldPaginateRequest: false,
TableMappedColumns: {
IgnoreColumns: ['GroupNum', 'Identification'],
RenameColumns: {
Id: 'Id',
CardName: 'Nombre',
CardCode: 'Codigo',
SlpCode: 'Vendedor'
}
}
} as ISearchModalComponentDialogData<IBusinessPartner>
});
}
//... i-business-partner.ts
export interface IBusinessPartner
{
CardCode: string;
CardName: string;
Id: number;
Identification: number;
GroupNum: number;
SlpCode: number;
}
Eventos emitidos
Evento de busqueda
El evento de búsqueda se emite cuando:
- Al cambiar el tamaño de la página.
- Al hacer cambio de página.
- Al escribir en el input de búsqueda.
- Al presionar el botón de búsqueda.
Este evento se puede escuchar mediante el canal CL_CHANNEL.REQUEST_RECORDS
.
Ejemplo:
ngOnInit(): void {
this.subscriptions$.add(this.linkerService.Flow()?.pipe(StepDown(this.callbacks)).subscribe({
next: callback => Run(callback.Target, callback, this.callbacks.Callbacks),
error: error => CLPrint(error)
}));
Register<CL_CHANNEL>(this.modalId, CL_CHANNEL.REQUEST_RECORDS, this.OnModalRequestRecords, this.callbacks);
}
OnModalRequestRecords = (_event: ICLEvent) => {
console.log("Search filters: ", JSON.parse(_event.Data))
}
Nota: Si al momento de levantar la modal se le envía la propiedad ShouldPaginateRequest
en true
esta va a establecer automáticamente los headers HTTP para paginación de consulta. Importante tener en cuenta que el interceptor Miscellaneous.Interceptors.PagedRequestInterceptor
de @clavisco/core debe estar en la matriz de proveedores, además el endpoint al que va a consultar los datos debe tener el data annotation [EnablePagination]
que se puede encontrar en el namespace CL.COMMON.ActionFilters.ServiceLayer
o Cl.Core.Common.ActionFilters.ServiceLayer
esto depende del framework de .Net que se esté usando.
Selección de dato maestro
Para obtener el dato maestro seleccionado, lo que se debe hacer es subscribirse al resultado de la modal después de ser cerrada.
Ejemplo:
// Listen the OUTPUT channel
Register<CL_CHANNEL>(this.modalId, CL_CHANNEL.OUTPUT, this.OnMasterDataSelected, this.callbacks);
// Create the method to execute when an event is emitted throught OUTPUT channel
OnMaterDataSelected = (_event: ICLEvent) => {
// Do what you want with the selected record
}
Nota: El valor que devuelve la modal puede ser vacío, ya que al presionar el botón de cerrado, este enviará vacío.
Eventos escuchados
Agregar registros a la tabla
Para esto se debe emitir el evento INFLATE a la modal con los registros que se quieran agregar:
this.linkerService.Publish({
Target: this.modalId,
Data: JSON.stringify({
Records: this.records,
RecordsCount: this.records.length
}),
CallBack: CL_CHANNEL.INFLATE
});
ClavisCo ©