Row status (XMLView)
Este tipo permite colorear las filas en base al valor de un campo del registro o de una serie de condiciones. Se declara mediante la inclusión de una relación de uno o varios registros option indicando la configuración que se aplicará para la fila. Los atributos que se pueden informar son: el color (obligatorio) para indicar el color deseado, fieldname para indicar sobre que campo se valida la opción y title como el texto identificativo para el usuario de la opción.
<rows>
<row type="status">
<option color="success" fieldname="estado" title="open">ABIERTO</option>
<option color="warning" fieldname="estado" title="closed">CERRADO</option>
</row>
</rows>
Colores
Para la selección del color se utilizan los colores para tablas de bootstrap.
- info: azul
- success: verde
- warning: amarillo
- danger: rojo
- light: gris claro
- secondary: negro
Operadores
Podemos usar estos operadores en el valor de la etiqueta option.
- Si el valor empieza por
gt:
se aplicará si el valor del campo del modelo es mayor que el valor indicado. - Si el valor empieza por
gte:
se aplicará si el valor del campo del modelo es mayor o igual que el valor indicado. - Si el valor empieza por
lt:
se aplicará si el valor del campo del modelo es menor que el valor indicado. - Si el valor empieza por
lte:
se aplicará si el valor del campo del modelo es menor o igual que el valor indicado. - Si el valor empieza por
neq:
se aplicara si el valor del campo del modelo es distinto que el valor indicado. - Si el valor es
null:
se aplicara si el valor del campo del modelo es nulo. - Si el valor es
notnull:
se aplicara si el valor del campo del modelo no es nulo. - En cualquier otro caso se realizará una comprobación de igualdad, es decir que el valor del campo del modelo es igual al valor indicado.
También podemos usar el comodín field:XXX
para comprar con el valor de otra columna.
Declaración de las condiciones
Para la declaración de condiciones se puede utilizar alguno de los siguientes métodos:
- Un único campo: se declara el atributo fieldname dentro de la declaración del row indicando el nombre del campo que contendrá los valores.
- Varios campos: se declara el atributo fieldname dentro de la declaración del option indicando el nombre del campo que contendrá los valores.
- Ambos: se declara el atributo fieldname dentro de row y dentro de los option que no usen el campo general indicado dentro de row.
Ejemplo para condiciones con un mismo campo
<rows>
<row type="status" fieldname="estado">
<option color="info" title="pending">Pendiente</option>
<option color="warning" title="partial">Parcial</option>
</row>
</rows>
- Pinta la fila de color azul si el campo 'estado' es 'Pendiente'.
- Pinta la fila de color amarillo si el campo 'estado' es 'Parcial'.
Ejemplo para condiciones con distintos campos y valores
<rows>
<row type="status">
<option color="info" fieldname="nostock">1</option>
<option color="danger" fieldname="bloqueado">1</option>
<option color="success" fieldname="stockfis">gt:1</option>
<option color="warning" fieldname="stockfis">lt:1</option>
</row>
</rows>
- Pinta la fila de color azul si el campo 'nostock' es 'Verdadero'
- Pinta la fila de color rojo si el campo 'bloqueado' es 'Verdadero'
- Pinta la fila de color verde si el campo 'stockfis' es mayor que '0'
- Pinta la fila de color amarillo si el campo 'stockfis' es menor que '1'
Ejemplo para comparar con otro campo
<rows>
<row type="status">
<option color="danger" fieldname="disponible">lt:field:stockmin</option>
</row>
</rows>
- Pinta la fila de color rojo si el campo 'disponible' es menor que el valor del campo 'stockmin'
Añadir colores desde el controlador
Desde ListController también podemos añadir colores a los listados.
$this->addColor($viewName, 'nostock', 1, 'info', 'no controla stock');
Desde los EditController también podemos añadir colores a los listados.
$this->view[$viewName]->addColor('nostock', 1, 'info', 'no controla stock');
La función addColor() tiene los siguientes parámetros:
- $fieldName: Nombre del campo donde hacer la comprobación, igual a fieldname del xml.
- $value: Valor a comprobar, el fieldName se comprobará con este valor.
- $color: El color a mostrar en la fila.
- $title: Será el texto a mostrar en la leyenda de los colores.