Ir al contenido
Otras versiones

Cargando…

Campo Suggestbox de parámetros

Esta es una implementación del típico componente de cuadro de sugerencias AJAX:

Atributo Descripción Obligatorio
label El texto 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 se puede utilizar en esta consulta.
*
width El ancho del elemento HTML.
En el caso de KCenter, la interfaz de usuario debe utilizar valores de ancho basados en %, por ejemplo:
- width=“50%” funcionará
- width=“100px” se ignorará en la interfaz de usuario de KCenter.
false
height El alto del elemento HTML. false
filterQuery Una consulta de Hibernate para filtrar los datos. Utilice {0} para colocar el texto introducido por el usuario. *
valueQuery Una consulta de Hibernate para obtener el valor de un identificador. Utilice {0} para colocar el identificador. *
className Una clase utilizada para obtener las opciones seleccionadas. *
filterMinLen El número mínimo de caracteres de la entrada para empezar a filtrar los resultados. true
dialogTitle El título del cuadro de diálogo HTML. true
  • * Hay tres opciones para obtener los valores del cuadro de sugerencias (es obligatorio utilizar una de ellas):

  • Elementos hijo:

Los valores del cuadro de sugerencias se definen en tablas de metadatos.

  • La aplicación utiliza dos tablas denominadas OKM_DB_METADATA_TYPE Y OKM_DB_METADATA_VALUE para ayudar a almacenar los valores de opción utilizados en los select. Esto es muy útil cuando se dispone de un gran número de valores.
  • OKM_DB_METADATA_TYPE almacena las definiciones de las tablas de metadatos (nombre de la tabla, nombre de la columna y tipo de columna) en la tabla.
  • 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 el botón Execute de 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 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 el botón Execute de la parte inferior derecha.

Por último, 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 más abajo.
  • Puede utilizar 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 ayudar a obtener una lista de aplicaciones externas o con otros fines, puede construir su clase para que recupere los valores de las opciones 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 Creación de su propio plugin de Suggestbox.