Ir al contenido

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:

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>

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.