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

ComponenteTipo de valorPara qué sirve
DnzSpanMoneydecimal? (importe)Dinero con símbolo de moneda y región. Color rojo/verde opcional
DnzSpanDecimaldecimal?Decimal con sufijo libre ( kg, uds). Color por signo opcional
DnzSpanPercentdecimal?Porcentaje con % y decimales recortados. Color por signo opcional
DnzSpanIntegerdecimal?Entero: trunca los decimales
DnzSpanDateDateOnly?Fecha localizada con etiqueta Hoy/Ayer/Mañana/Pasado/Futuro
DnzSpanDateTimeDateTime?Fecha y hora completa, relativa o con estado
DnzSpanMinutesdecimal? (minutos)Minutos como duración corta: 90 se muestra como 1h 30m
DnzSpanKVstringPar clave-valor (etiqueta + valor)
DnzSpanByteslong?Tamaño en B, KB, MB, GB o TB
DnzSpanGigaBytesdecimal? (GB)GB con cambio automático a TB, MB o KB
DnzSpanGramsdecimal? (gramos)Peso en gr o Kg según magnitud
DnzTimeSpanDisplayTimeSpan?Duración en partes: 2d 3h 15m
DnzTimeSpanDisplayCompactTimeSpan?Igual, en tamaño pequeño
DnzTimeSpanDisplayBadgeTimeSpan?Igual, cada parte en una etiqueta
DnzFileNamestring + 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ámetroTipoPor defectoQué hace
Amountdecimal?0El importe a mostrar. Si es null no muestra nada
Labelstring""Etiqueta encima del importe
Iconstring""Icono Material a la izquierda (requiere Label)
AutoColorboolfalseVerde si positivo, rojo si negativo
AutoColorGreenboolfalseSolo verde cuando es positivo
AutoColorRedboolfalseSolo rojo cuando es negativo
CssClassstring""Clases extra para el <span>
FontSizestring"16px"Tamaño de fuente
IsVisiblebooltrueOculta 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ámetroTipoPor defectoQué hace
Valuedecimal?nullNúmero a mostrar. Si es null no muestra nada
Symbolstring""Texto detrás del número ( kg, uds)
AutoColorboolfalseVerde si positivo, rojo si negativo
Classstring""Clases extra para el <span>
FontSizestring"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ámetroTipoPor defectoQué hace
Valuedecimal?nullPorcentaje a mostrar. Si es null no muestra nada
Decimalsint1Decimales máximos; los ceros de cola se omiten (12,50 se muestra como 12,5)
AutoColorboolfalseVerde si positivo, rojo si negativo
Classstring""Clases extra para el <span>
FontSizestring"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ámetroTipoPor defectoQué hace
Valuedecimal?nullValor a truncar y mostrar como int
FontSizestring"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ámetroTipoPor defectoQué hace
ValueDateOnly?nullFecha a mostrar. Si es null no muestra nada
FriendlyModebooltrueFormato legible en lugar de literal
ShowBadgeboolfalseMuestra la fecha dentro de un RadzenBadge
ShowStatusboolfalseAñade la etiqueta Hoy/Ayer/Mañana/Pasado/Futuro al lado
Classstring""Clases extra para el contenedor
FontSizestring"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ámetroTipoPor defectoQué hace
ValueDateTime?nullFecha y hora a mostrar, en UTC; se muestra en la hora de la empresa (ICultureService). Si es null no muestra nada
RelativeboolfalseTexto relativo (Dinaup.FormatHelpers.FormatRelativeTime); el absoluto va al texto emergente
ShowBadgeboolfalseMuestra el texto dentro de un RadzenBadge
ShowStatusboolfalseAñade la etiqueta de estado relativa a hoy. Compara días en la zona de la empresa, no con el reloj del servidor
CaptionboolfalseTexto pequeño y discreto
Classstring""Clases extra para el contenedor
FontSizestring"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ámetroTipoPor defectoQué hace
Valuedecimal?0Minutos totales. Admite negativos (-30m). Si es null no muestra nada
FontSizestring"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ámetroTipoPor defectoQué hace
Keystring""La etiqueta o clave
ValuestringnullEl valor ya formateado (si no usas ChildContent)
ChildContentRenderFragmentnullMarcado libre para el valor; tiene prioridad sobre Value
HorizontalboolfalseClave y valor en la misma línea
Iconstring""Icono Material, o URL de imagen si empieza por / o http
IconColorstring""Color del icono
ValueColorstring""Color del texto del valor
TextRightboolfalseAlinea el valor a la derecha
LabelWidthstring""Ancho máximo de la etiqueta
Classstring""Clases extra para el contenedor
VisiblebooltrueOculta 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ámetroTipoPor defectoQué hace
Valuelong?nullTamaño en bytes. Si es null no muestra nada
Classstring""Clases extra para el <span>
FontSizestring"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ámetroTipoPor defectoQué hace
Valuedecimal?nullGB a mostrar. Si es null no muestra nada
AutoColorboolfalseNaranja por encima de 50, rojo por encima de 100
Classstring""Clases extra para el <span>
FontSizestring"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ámetroTipoPor defectoQué hace
Valuedecimal?nullPeso en gramos. Si es null no muestra nada
AutoColorboolfalseColor según si pasa de 1000 gr
Classstring""Clases extra para el <span>
FontSizestring"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ámetroTipoPor defectoQué hace
ValueTimeSpan?nullDuración a descomponer. Si es null muestra EmptyText
ShowSecondsboolfalseIncluye los segundos en el desglose
EmptyTextstring""Texto cuando Value es null
NumberClassstring"fw-semibold text-dark"Clases para los números
LabelClassstring"text-muted small ms-1"Clases para las etiquetas (d, h, m, s)
Stylestring""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ámetroTipoPor defectoQué hace
ValueTimeSpan?nullDuración a descomponer. Si es null muestra EmptyText
ShowSecondsboolfalseIncluye los segundos en el desglose
EmptyTextstring""Texto cuando Value es null
Stylestring""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ámetroTipoPor defectoQué hace
ValueTimeSpan?nullDuración a descomponer. Si es null muestra EmptyText
ShowSecondsboolfalseIncluye los segundos en el desglose
EmptyTextstring""Texto cuando Value es null
Stylestring""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

En esta página