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>