Params Suggestbox field
Esta es una implementación del componente típico de cuadro de sugerencias AJAX (suggest box):
| Atributo | Descripción | Obligatorio |
|---|---|---|
| label | El texto que se muestra 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 una tabla de metadatos que puede usarse en esta consulta. |
* |
| width | El ancho del elemento HTML. En el caso de KCenter, la interfaz debe usar valores de ancho basados en %, por ejemplo: - width=“50%” funcionará - width=“100px” se ignorará en la interfaz de KCenter. |
false |
| height | El alto del elemento HTML. | false |
| filterQuery | Una consulta Hibernate para filtrar los datos. Use {0} para colocar la entrada del usuario. | * |
| valueQuery | Una consulta Hibernate para obtener el valor de un identificador. Use {0} para colocar el identificador. | * |
| className | Una clase usada para obtener las opciones seleccionadas. | * |
| filterMinLen | El número mínimo de caracteres en la entrada para empezar a filtrar resultados. | true |
| dialogTitle | El título del diálogo HTML. | true |
-
* Hay tres opciones para obtener los valores del cuadro de sugerencias (usar una de ellas es obligatorio):
-
Elementos hijos:
Basado en table, filterQuery y valueQuery
Sección titulada «Basado en table, filterQuery y valueQuery»Los valores del suggestbox se definen en tablas de metadatos.
- La aplicación usa dos tablas llamadas OKM_DB_METADATA_TYPE y OKM_DB_METADATA_VALUE para ayudar a almacenar los valores de opción usados en los selects. Es muy útil cuando se tiene un gran número de valores.
- OKM_DB_METADATA_TYPE almacena la definición de la tabla de metadatos (nombre de tabla, nombre de columna y tipo de columna).
- OKM_DB_METADATA_VALUE almacena los valores de los registros.
Cree una definición de tabla de metadatos.
- Vaya a Administration > Utilities > Database query.
- En la parte inferior derecha, seleccione jdbc en 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 el botón Execute en la parte inferior derecha.
Inserte los valores de la tabla de metadatos:
- Vaya a Administration > Utilities > Database query.
- En la parte inferior derecha seleccione jdbc en 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 el botón Execute en la parte inferior derecha.
Finalmente, la definición XML:
- En optionsQuery, los valores que empiezan por el carácter $ se identifican como nombres de columna. Vea $country_id y $country_name a continuación.
- Puede usar 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>Basado en filterQuery y valueQuery (sin el atributo table)
Sección titulada «Basado en filterQuery y valueQuery (sin el atributo table)»Ahora filterQuery y valueQuery pueden ser consultas SQL normales.
Cree la tabla COUNTRY:
create table COUNTRY ( CT_ID varchar(2), CT_NAME varchar(32), primary key(CT_ID));
insert into COUNTRY (CT_ID, CT_NAME) values ('es', 'Spain');insert into COUNTRY (CT_ID, CT_NAME) values ('pt', 'Portugal');insert into COUNTRY (CT_ID, CT_NAME) values ('it', 'Italy');Definición de metadatos:
<?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="okp:consulting.suggestbox" width="200px" dialogTitle="Choose country" filterMinLen="3" filterQuery="select ct_id, ct_name from country where ct_name like '%{0}%' order by ct_name" valueQuery="select ct_id, ct_name from country where ct_id='{0}'" /></report-parameters>Basado en className
Sección titulada «Basado en className»Para obtener una lista de aplicaciones externas o con otros fines, su clase puede construirse para recuperar los valores de opción de esos sistemas.
<?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="okp:consulting.suggestbox" width="200px" dialogTitle="Choose country" filterMinLen="3" className="com.openkm.plugin.form.values.SuggestBoxUserList" /></report-parameters>Para más información, lea Creating your own Suggestbox plugin.