Saltar a contenido

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 columna
  • text: el texto mostrado en el encabezado de la columna
  • width (opcional): el número de píxeles que tendrá la columna
  • hidden (opcional): true o false para mostrar la columna u ocultarla. El usuario puede agregar una columna oculta más tarde al reporte.
  • sortable (opcional): true o false para 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.