Campo Suggestbox de parámetros
Esta es una implementación del típico componente AJAX de cuadro de sugerencias:
| Atributo | Descripción | Obligatorio |
|---|---|---|
| label | El texto mostrado como etiqueta en la interfaz de usuario. | true |
| name | Identificador único del campo. Dos campos no pueden tener el mismo nombre en la misma definición de tarea. El nombre debe ser único. |
true |
| table | Nombre de la tabla de metadatos. La aplicación puede almacenar valores en la tabla de metadatos, que pueden utilizarse en esta consulta. |
true |
| width | El ancho del elemento HTML. | false |
| height | El alto del elemento HTML. | false |
| filterQuery | Una consulta Hibernate para filtrar los datos. Utilice {0} para colocar el texto introducido por el usuario. | true |
| valueQuery | Una consulta Hibernate para obtener el valor de un identificador. Utilice {0} para colocar el identificador. | true |
| filterMinLen | El número mínimo de caracteres introducidos para empezar a filtrar los resultados. | true |
| dialogTitle | El título del diálogo HTML. | true |
- Elementos hijos:
Los valores del suggestbox se definen en tablas de metadatos.
- La aplicación utiliza dos tablas llamadas OKM_DB_METADATA_TYPE y OKM_DB_METADATA_VALUE que ayudan a almacenar los valores de las opciones utilizadas en los selects. Esto es muy útil cuando se dispone de un gran número de valores.
- En la tabla OKM_DB_METADATA_TYPE se almacena la definición de la tabla de metadatos (nombre de la tabla, nombre de la columna y tipo de la columna).
- En la tabla OKM_DB_METADATA_VALUE se almacenan los valores de los registros.
Cree la definición de la tabla de metadatos.
- Vaya a Administration > Utilities > Database query.
- En la parte inferior derecha, seleccione jdbc de la lista.
- Pegue el SQL en el cuadro
DELETE FROM OKM_DB_METADATA_TYPE WHERE DMT_TABLE='country';INSERT INTO OKM_DB_METADATA_TYPE (DMT_TABLE, DMT_REAL_COLUMN, DMT_TYPE, DMT_VIRTUAL_COLUMN) VALUES ('country', 'col00', 'integer', 'country_id');INSERT INTO OKM_DB_METADATA_TYPE (DMT_TABLE, DMT_REAL_COLUMN, DMT_TYPE, DMT_VIRTUAL_COLUMN) VALUES ('country', 'col01', 'text', 'country_name');- Haga clic en la parte inferior derecha en el botón Execute.
Inserte los valores de la tabla de metadatos:
- Vaya a Administration > Utilities > Database query.
- En la parte inferior derecha, seleccione jdbc de la lista.
- Pegue el SQL en el cuadro
DELETE FROM OKM_DB_METADATA_VALUE WHERE DMV_TABLE='country';INSERT INTO OKM_DB_METADATA_VALUE (DMV_TABLE, DMV_COL00, DMV_COL01) VALUES ('country', '001', 'Australia');INSERT INTO OKM_DB_METADATA_VALUE (DMV_TABLE, DMV_COL00, DMV_COL01) VALUES ('country', '002', 'Canada');- Haga clic en la parte inferior derecha en el botón Execute.
Por último, la definición XML:
- En optionsQuery, los valores que empiezan por el carácter $ se identifican como nombres de columna. Véase $country_id y $country_name más abajo.
- Pueden utilizarse cláusulas SQL normales como “lower”, “like”, “order by”, etc.
<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE report-parameters PUBLIC "-//OpenKM//DTD Report Parameters 2.1//EN" "http://www.openkm.com/dtd/report-parameters-2.1.dtd"><report-parameters> <suggestbox label="country" name="suggestbox" width="200px" table="country" dialogTitle="Choose country" filterMinLen="3" filterQuery="select $country_id, $country_name from DatabaseMetadataValue dmv where dmv.table='country' and lower(dmv.$country_name) like '%{0}%' order by dmv.$country_name" valueQuery="select $country_id, $country_name from DatabaseMetadataValue dmv where dmv.table='country' and dmv.$country_id='{0}'" /></report-parameters>