Creación de Reportes en JS
Sus plugins pueden tener sus propios reportes en ellos.
Estos reportes son visibles bajo la pestaña Internal
en el área de reportes.
Para crear un reporte, diríjase al directorio CLARIVE_BASE/plugins/
o créelo si no existe.
Luego cree un directorio de plugin para su plugin, llamémoslo
myplugin.
mkdir $CLARIVE_BASE/plugins/myplugin # and inside that directory we create an /init directory mkdir $CLARIVE_BASE/plugins/myplugin/init/personalReport.js
Ahora creamos nuestro archivo personalReport.js
($CLARIVE_BASE/plugins/myplugin/init/personalReport.js)
con el siguiente contenido:
var reg = require('cla/reg'); reg.register('report.myplugin.personal', { name: _('My Personal Report'), metaHandler: function(config) { return { fields: { columns: [ { id: 'name', text: 'Name' }, { id: 'value', text: 'Value', width: 300 } ] }, report_rows: 100 }; }, securityHandler: function(username) { var permissions = cla.modelJSON('Permissions'); var userRoles = permissions.userRoles(username).map(function(v) { return v.role; }); // in this system, a role of name "CLIENT" exists return userRoles.indexOf('CLIENT') > -1 ? true : false; }, dataHandler: function(config, params) { var rows = [{ name: 'aaa', value: 'bbb' }]; return { rows: rows, total: rows.length }; } });
Ahora reinicie el servidor web de Clarive para que recoja el reporte.
Con un usuario administrador (root), diríjase a la interfaz Topic > Reports >
Internal para ver su reporte.
Inicialmente solo los usuarios administradores pueden ver los reportes internos. Para hacerlos
disponibles a otros usuarios, use la función security_handler al registrar
su reporte.
Definición de reporte¶
Al registrar un reporte, primero elija una clave de registro,
como report.[mypluginname].[myreportkey] usando
todas letras minúsculas, sin espacios ni caracteres especiales.
La clave de registro debe ser única en el sistema.
El campo name: es el nombre del reporte visible por los usuarios.
Dentro de la definición del reporte, puede haber 3 métodos críticos:
-
metaHandler(config)- define los nombres de columnas y tipos de columnas para el reporte. -
securityHandler(username)- verifica si un usuario dado puede ver el reporte. -
dataHandler(config)- genera las filas de datos que serán mostradas por el reporte.
metaHandler(config)¶
Esta función será llamada una vez cuando el reporte sea ejecutado por primera vez por el usuario. Debe retornar los metadatos de columna para que la UI de Clarive sepa qué columnas renderizar para el usuario.
La función debe retornar la siguiente estructura de datos:
fields - un objeto que contiene el array columns de columnas.
Cada columna es un Object con la siguiente estructura:
id: el id único de la columnatext: el texto mostrado en el encabezado de la columnawidth(opcional): el número de píxeles que tendrá la columnahidden(opcional):trueofalsepara mostrar la columna u ocultarla. El usuario puede agregar una columna oculta más tarde al reporte.sortable(opcional):trueofalsepara permitir al usuario ordenar por esta columna.
report_rows - el número de filas por página para el reporte. Esto se
usa para construir el paginador debajo en la tabla del reporte.
securityHandler(username)¶
Esta función se ejecuta cada vez que el usuario abre la UI de Reportes, para decidir si el reporte debería estar en la lista, disponible para que el usuario lo ejecute, o no.
Implemente aquí una lógica de verificación de seguridad para permitir a los usuarios acceder al reporte.
Luego retorne true (el usuario puede ver el reporte)
o false (permiso denegado para ver/ejecutar el usuario)
dataHandler(config)¶
Esta función se ejecuta una vez por cada página de datos solicitada.
La función debe usar los datos de config para determinar cuál
página es la página actual que el usuario está viendo.
La función debe retornar un Object con las siguientes claves:
rows - un array de Objects de cada fila en la tabla del reporte.
La estructura del objeto de fila debe coincidir con el parámetro columns
enviado por el metaHandler(), donde cada id en el
array de columnas es una clave en el objeto de fila.
total - el número total de filas en el conjunto de datos. Esto se
usa por la UI de la tabla del reporte para calcular el número de páginas
en el conjunto de datos resultante.