Datos tipados (Spans)
Componentes para mostrar dinero, fechas, decimales, tiempo y tamaños con el formato y la región configurados en Dinaup.
Estos componentes muestran cada celda de un informe con su formato: el dinero con su símbolo, la fecha en hora local, los minutos como duración, los bytes como MB. No hace falta formatear a mano ni tener en cuenta la cultura del cliente.
Todos siguen el mismo patrón: reciben el valor sin formato y deciden cómo mostrarlo. Casi todos aceptan un Class y un FontSize. El formato y la región salen del ICultureService que registra AddDinaZen, así que el mismo componente se adapta a cualquier país. Cada uno corresponde a un tipo de columna de un informe del SDK: la columna trae el dato y el span lo muestra.
El tipo del dato decide el componente: un decimal de euros va en DnzSpanMoney, un porcentaje en DnzSpanPercent, unos minutos en DnzSpanMinutes. No hay un span genérico que valga para todo.
Qué formatea cada uno
| Componente | Tipo de valor | Para qué sirve |
|---|---|---|
DnzSpanMoney | decimal? (importe) | Dinero con símbolo de moneda y región. Color rojo/verde opcional |
DnzSpanDecimal | decimal? | Decimal con sufijo libre ( kg, uds). Color por signo opcional |
DnzSpanPercent | decimal? | Porcentaje con % y decimales recortados. Color por signo opcional |
DnzSpanInteger | decimal? | Entero: trunca los decimales |
DnzSpanDate | DateOnly? | Fecha localizada con etiqueta Hoy/Ayer/Mañana/Pasado/Futuro |
DnzSpanDateTime | DateTime? | Fecha y hora completa, relativa o con estado |
DnzSpanMinutes | decimal? (minutos) | Minutos como duración corta: 90 se muestra como 1h 30m |
DnzSpanKV | string | Par clave-valor (etiqueta + valor) |
DnzSpanBytes | long? | Tamaño en B, KB, MB, GB o TB |
DnzSpanGigaBytes | decimal? (GB) | GB con cambio automático a TB, MB o KB |
DnzSpanGrams | decimal? (gramos) | Peso en gr o Kg según magnitud |
DnzTimeSpanDisplay | TimeSpan? | Duración en partes: 2d 3h 15m |
DnzTimeSpanDisplayCompact | TimeSpan? | Igual, en tamaño pequeño |
DnzTimeSpanDisplayBadge | TimeSpan? | Igual, cada parte en una etiqueta |
DnzFileName | string + long? | Nombre de fichero con icono por extensión, tamaño y descarga. Detalle en Entrada de datos y formularios |
Todos se ocultan cuando el valor es nulo: si Value o Amount viene null, no muestran nada. No hace falta envolverlos en un @if.
AutoColor: verde positivo, rojo negativo
DnzSpanMoney, DnzSpanDecimal y DnzSpanPercent traen AutoColor. Activado, el valor se muestra en verde si es positivo y en rojo si es negativo. Sirve para saldos, márgenes y variaciones, donde el signo distingue lo que suma de lo que resta.
<DnzSpanMoney Amount=@cliente.Saldo AutoColor=true />Saldo positivo en verde y saldo negativo en rojo, sin ningún if.
<DnzSpanMoney Amount=@factura.Total />Un total va en el color por defecto: no tiene sentido mostrar en rojo un importe que solo indica lo que hay que pagar.
DnzSpanMoney
Importes de dinero con el símbolo de moneda y el formato de la región del cliente. Para listados de facturas, totales y resúmenes.
<DnzSpanMoney Amount=@factura.Total AutoColor=true />Con etiqueta e icono para un KPI en una tarjeta:
<DnzSpanMoney Amount=@resumen.PendienteCobro Label="Pendiente de cobro" Icon="payments" AutoColorRed=true FontSize="20px" />Parámetros
| Parámetro | Tipo | Por defecto | Qué hace |
|---|---|---|---|
Amount | decimal? | 0 | El importe a mostrar. Si es null no muestra nada |
Label | string | "" | Etiqueta encima del importe |
Icon | string | "" | Icono Material a la izquierda (requiere Label) |
AutoColor | bool | false | Verde si positivo, rojo si negativo |
AutoColorGreen | bool | false | Solo verde cuando es positivo |
AutoColorRed | bool | false | Solo rojo cuando es negativo |
CssClass | string | "" | Clases extra para el <span> |
FontSize | string | "16px" | Tamaño de fuente |
IsVisible | bool | true | Oculta el componente sin quitarlo del árbol |
Sin Label muestra solo el importe. Con Label lo coloca en columna (etiqueta encima del importe). Con Label e Icon, añade el icono a la izquierda del bloque.
DnzSpanDecimal
Cualquier decimal con un sufijo libre detrás: unidades de stock, kilos u otra unidad. Donde DnzSpanMoney pone la moneda, este pone el texto de Symbol.
<DnzSpanDecimal Value=@articulo.Stock Symbol=" uds" />Una diferencia con color según el signo:
<DnzSpanDecimal Value=@diferencia Symbol=" kg" AutoColor=true />Parámetros
| Parámetro | Tipo | Por defecto | Qué hace |
|---|---|---|---|
Value | decimal? | null | Número a mostrar. Si es null no muestra nada |
Symbol | string | "" | Texto detrás del número ( kg, uds) |
AutoColor | bool | false | Verde si positivo, rojo si negativo |
Class | string | "" | Clases extra para el <span> |
FontSize | string | "16px" | Tamaño de fuente |
DnzSpanPercent
Porcentaje: recibe el número en escala de 0 a 100 (12.5), añade el % y recorta los decimales sobrantes.
<DnzSpanPercent Value=@informe.Margen Decimals="2" AutoColor=true />Parámetros
| Parámetro | Tipo | Por defecto | Qué hace |
|---|---|---|---|
Value | decimal? | null | Porcentaje a mostrar. Si es null no muestra nada |
Decimals | int | 1 | Decimales máximos; los ceros de cola se omiten (12,50 se muestra como 12,5) |
AutoColor | bool | false | Verde si positivo, rojo si negativo |
Class | string | "" | Clases extra para el <span> |
FontSize | string | "16px" | Tamaño de fuente |
Value va en escala de 0 a 100: para mostrar "12,5 %" pasa 12.5, no 0.125.
DnzSpanInteger
Entero: trunca la parte decimal del valor y lo muestra sin símbolos. Para contadores y cantidades enteras.
<DnzSpanInteger Value=@item.Quantity />Parámetros
| Parámetro | Tipo | Por defecto | Qué hace |
|---|---|---|---|
Value | decimal? | null | Valor a truncar y mostrar como int |
FontSize | string | "16px" | Tamaño de fuente |
DnzSpanDate
Fecha (sin hora) en formato legible y localizado, con una etiqueta opcional que indica si es Hoy, Mañana, Ayer, Pasado o Futuro. Trabaja con DateOnly.
<DnzSpanDate Value=@DateOnly.FromDateTime(item.FechaCreacion) />Con la etiqueta de estado para una agenda de vencimientos:
<DnzSpanDate Value=@vencimiento.Fecha ShowStatus=true />Parámetros
| Parámetro | Tipo | Por defecto | Qué hace |
|---|---|---|---|
Value | DateOnly? | null | Fecha a mostrar. Si es null no muestra nada |
FriendlyMode | bool | true | Formato legible en lugar de literal |
ShowBadge | bool | false | Muestra la fecha dentro de un RadzenBadge |
ShowStatus | bool | false | Añade la etiqueta Hoy/Ayer/Mañana/Pasado/Futuro al lado |
Class | string | "" | Clases extra para el contenedor |
FontSize | string | "0.875rem" | Tamaño de fuente |
El texto emergente siempre lleva la fecha exacta, aunque el texto visible sea el legible.
DnzSpanDateTime
Fecha y hora completas. Se muestra en modo relativo (hace 5 min), como texto pequeño y discreto o con la etiqueta de estado. Trabaja con DateTime.
<DnzSpanDateTime Value=@item.FechaModificacion />Modo relativo para una lista de actividad reciente:
<DnzSpanDateTime Value=@evento.Cuando Relative=true ShowStatus=true />Parámetros
| Parámetro | Tipo | Por defecto | Qué hace |
|---|---|---|---|
Value | DateTime? | null | Fecha y hora a mostrar, en UTC; se muestra en la hora de la empresa (ICultureService). Si es null no muestra nada |
Relative | bool | false | Texto relativo (Dinaup.FormatHelpers.FormatRelativeTime); el absoluto va al texto emergente |
ShowBadge | bool | false | Muestra el texto dentro de un RadzenBadge |
ShowStatus | bool | false | Añade la etiqueta de estado relativa a hoy. Compara días en la zona de la empresa, no con el reloj del servidor |
Caption | bool | false | Texto pequeño y discreto |
Class | string | "" | Clases extra para el contenedor |
FontSize | string | "0.875rem" | Tamaño de fuente |
DnzSpanMinutes
Convierte un número de minutos en una duración corta: 45 se muestra como 45m, 90 como 1h 30m y 180 como 3h. Admite negativos (les antepone el signo). Para tiempos de servicio, citas o tareas medidas en minutos.
<DnzSpanMinutes Value=@cita.DuracionMinutos />Parámetros
| Parámetro | Tipo | Por defecto | Qué hace |
|---|---|---|---|
Value | decimal? | 0 | Minutos totales. Admite negativos (-30m). Si es null no muestra nada |
FontSize | string | "16px" | Tamaño de fuente |
DnzSpanKV
Par clave-valor: la etiqueta encima o a la izquierda y el valor debajo o al lado. Es el bloque de detalle típico de un diálogo o una ficha. Recibe el valor ya formateado como string, o un ChildContent con marcado libre.
<DnzSpanKV Key="Estado" Value=@item.Estado Icon="check_circle" /><DnzSpanKV Key="Total" Horizontal=true Icon="euro" TextRight=true>
<DnzSpanMoney Amount=@factura.Total />
</DnzSpanKV>El ChildContent tiene prioridad: si lo pones, se ignora Value y se muestra su contenido.
Parámetros
| Parámetro | Tipo | Por defecto | Qué hace |
|---|---|---|---|
Key | string | "" | La etiqueta o clave |
Value | string | null | El valor ya formateado (si no usas ChildContent) |
ChildContent | RenderFragment | null | Marcado libre para el valor; tiene prioridad sobre Value |
Horizontal | bool | false | Clave y valor en la misma línea |
Icon | string | "" | Icono Material, o URL de imagen si empieza por / o http |
IconColor | string | "" | Color del icono |
ValueColor | string | "" | Color del texto del valor |
TextRight | bool | false | Alinea el valor a la derecha |
LabelWidth | string | "" | Ancho máximo de la etiqueta |
Class | string | "" | Clases extra para el contenedor |
Visible | bool | true | Oculta el componente entero |
Acepta atributos extra que se pasan al elemento raíz.
DnzSpanBytes
Tamaño de fichero a partir de un long de bytes, con cambio automático de unidad: B, KB, MB, GB o TB según la magnitud. Para adjuntos, copias de seguridad y almacenamiento.
<DnzSpanBytes Value=@adjunto.SizeInBytes />Parámetros
| Parámetro | Tipo | Por defecto | Qué hace |
|---|---|---|---|
Value | long? | null | Tamaño en bytes. Si es null no muestra nada |
Class | string | "" | Clases extra para el <span> |
FontSize | string | "16px" | Tamaño de fuente |
DnzSpanGigaBytes
Igual que DnzSpanBytes pero partiendo de GB (decimal). A partir de 1024 GB sube a TB; por debajo de 1 GB baja a MB o KB. Con AutoColor avisa cuando el consumo pasa de 50 o de 100 GB.
<DnzSpanGigaBytes Value=@tenant.AlmacenamientoGb AutoColor=true />Parámetros
| Parámetro | Tipo | Por defecto | Qué hace |
|---|---|---|---|
Value | decimal? | null | GB a mostrar. Si es null no muestra nada |
AutoColor | bool | false | Naranja por encima de 50, rojo por encima de 100 |
Class | string | "" | Clases extra para el <span> |
FontSize | string | "16px" | Tamaño de fuente |
El AutoColor de DnzSpanGigaBytes no es verde/rojo por signo: es un semáforo de consumo (naranja al pasar de 50 GB, rojo al pasar de 100 GB). Úsalo para cuotas de almacenamiento, no para variaciones.
DnzSpanGrams
Peso a partir de gramos (decimal). Hasta 1000 lo muestra en gr; por encima pasa a Kg con dos decimales. Para básculas y pesaje en TPV.
<DnzSpanGrams Value=@linea.PesoGramos FontSize="15px" />Parámetros
| Parámetro | Tipo | Por defecto | Qué hace |
|---|---|---|---|
Value | decimal? | null | Peso en gramos. Si es null no muestra nada |
AutoColor | bool | false | Color según si pasa de 1000 gr |
Class | string | "" | Clases extra para el <span> |
FontSize | string | "16px" | Tamaño de fuente |
DnzTimeSpanDisplay
Muestra un TimeSpan descompuesto en partes con su etiqueta: 2d 3h 15m. Solo incluye las partes distintas de cero. Número y etiqueta tienen estilos por separado.
<DnzTimeSpanDisplay Value=@(sesion.Fin - sesion.Inicio) ShowSeconds=true />Con texto para el caso vacío:
<DnzTimeSpanDisplay Value=@tarea.TiempoInvertido EmptyText="Sin registrar" />Parámetros
| Parámetro | Tipo | Por defecto | Qué hace |
|---|---|---|---|
Value | TimeSpan? | null | Duración a descomponer. Si es null muestra EmptyText |
ShowSeconds | bool | false | Incluye los segundos en el desglose |
EmptyText | string | "" | Texto cuando Value es null |
NumberClass | string | "fw-semibold text-dark" | Clases para los números |
LabelClass | string | "text-muted small ms-1" | Clases para las etiquetas (d, h, m, s) |
Style | string | "" | Estilo en línea del contenedor |
DnzTimeSpanDisplayCompact
El mismo desglose que DnzTimeSpanDisplay, con número y etiqueta en tamaño pequeño. Para tablas y celdas.
<DnzTimeSpanDisplayCompact Value=@tarea.Duracion />Parámetros
| Parámetro | Tipo | Por defecto | Qué hace |
|---|---|---|---|
Value | TimeSpan? | null | Duración a descomponer. Si es null muestra EmptyText |
ShowSeconds | bool | false | Incluye los segundos en el desglose |
EmptyText | string | "" | Texto cuando Value es null |
Style | string | "" | Estilo en línea del contenedor |
DnzTimeSpanDisplayBadge
El mismo desglose, con cada parte dentro de una etiqueta. Para resaltar duraciones en cabeceras o resúmenes.
<DnzTimeSpanDisplayBadge Value=@sesion.Duracion />Parámetros
| Parámetro | Tipo | Por defecto | Qué hace |
|---|---|---|---|
Value | TimeSpan? | null | Duración a descomponer. Si es null muestra EmptyText |
ShowSeconds | bool | false | Incluye los segundos en el desglose |
EmptyText | string | "" | Texto cuando Value es null |
Style | string | "" | Estilo en línea del contenedor |
Patrón típico: columna de informe a span
Estos componentes encajan sobre las filas que devuelve un informe del SDK. Cada columna tiene su span.
Trae las filas con el SDK
Ejecuta un informe con el Cliente Dinaup y recorre las filas que devuelve.
Muestra cada columna con su span
Importe con DnzSpanMoney, fecha con DnzSpanDate, duración con DnzSpanMinutes.
@foreach (var fila in informe.Filas)
{
<DnzSpanKV Key="Cliente" Value=@fila.Cliente @key=@fila.ID />
<DnzSpanMoney Amount=@fila.Total AutoColor=true />
<DnzSpanDate Value=@fila.Fecha ShowStatus=true />
}Deja que el null haga su trabajo
No protejas con if: si una columna viene vacía, el span no muestra nada.
Relacionado
- KPIs y métricas: cuando el dato tipado es la cifra protagonista de una tarjeta.
- Etiquetas y estados: para estados y etiquetas de color, no valores numéricos.
- Tablas e informes: listados donde estos spans son las celdas.
- Componentes: el resto de familias de DinaZen.
- Informes de Dinaup Flex: de dónde salen las columnas que muestras.
- Cliente Dinaup (SDK .NET): el que trae los datos.