Ir al contenido
Otras versiones

Cargando…

Campo Suggestbox de metadatos

Esta es una implementación del típico componente AJAX de cuadro de sugerencias (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 metadatos no pueden tener el mismo nombre. El nombre debe ser único.
El nombre debe empezar por “okp:”.
Es una buena práctica utilizar el nombre de un grupo de metadatos como base para el nombre del campo de metadatos. Por ejemplo, se ha utilizado “okg:consulting” para el nombre de campo “okp:consulting.suggestbox”, cambiando “okg” por “okp”. Eso ayuda a averiguar el grupo de metadatos a partir del nombre del campo de metadatos.
Utilice solo letras, números y guion bajo: “0-9a-zA-Z_”.
true
table Nombre de la tabla de metadatos.
La aplicación puede almacenar valores en una tabla de metadatos que puede utilizarse en esta consulta.
true
width El ancho del elemento HTML. false
height El alto del elemento HTML. false
description Descripción general. false
filterQuery Una consulta de Hibernate para filtrar los datos. Utilice {0} para colocar la entrada del usuario. true
valueQuery Una consulta de Hibernate para obtener el valor de un identificador. Utilice {0} para colocar el identificador. true
filterMinLen El número mínimo de caracteres de entrada para empezar a filtrar los resultados. true
dialogTitle El título del diálogo HTML. true
readonly El campo establecido no podrá modificarse en la interfaz de usuario. Por defecto el valor es “false”. false
  • Elementos hijos:

Los valores del cuadro de sugerencias 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. Es muy útil cuando tiene?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 tabla, nombre de columna y tipo de columna).
  • En la tabla OKM_DB_METADATA_VALUE se almacenan los valores de los registros.

Crear la definición de la tabla de metadatos.

  • Go to 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.

Insertar los valores de la tabla de metadatos:

  • Go to 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 property-groups PUBLIC "-//OpenKM//DTD Property Groups 2.5//EN"
"http://www.openkm.com/dtd/property-groups-2.5.dtd">
<property-groups>
<property-group label="Consulting" name="okg:consulting">
<suggestbox label="country" name="okp:consulting.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}'" />
</property-group>
</property-groups>