Esta documentación está en fase de desarrollo y puede contener errores.

Datos tipados (Spans)

Componentes para mostrar valores tipados (dinero, fechas, decimales, tiempo) con el formato y la region de Dinaup.

Lees una fila de un informe y pintas cada celda con el formato correcto: el dinero con su simbolo, la fecha en local, los minutos como duracion, los bytes como MB. Todo sin formatear a mano ni acordarte de la cultura del cliente.

Comparten patron: les pasas el valor crudo y ellos deciden como mostrarlo. Casi todos aceptan un Label/Key, un Icon opcional y un FontSize. El formato y la region salen del RegionService interno, asi que el mismo componente se ve bien en cualquier pais. Mapean 1:1 con las columnas que devuelve un informe del SDK: la columna trae el dato, el span lo pinta.

El tipo del dato manda: si tienes un decimal de euros usa DnzSpanMoney, si es un porcentaje DnzSpanPercent, si son minutos DnzSpanMinutes. No hay un span generico que valga para todo.

Que formatea cada uno

ComponenteTipo de valorPara que sirve
DnzSpanMoneydecimal? (importe)Dinero con simbolo de moneda y region. Auto-color rojo/verde
DnzSpanDecimaldecimal?Decimal con sufijo libre ( kg, uds...). Auto-color
DnzSpanPercentdecimal?Porcentaje con % y decimales recortados. Auto-color
DnzSpanIntegerdecimal?Entero pelado (trunca decimales)
DnzSpanDateDateOnly?Fecha localizada con badge Hoy/Ayer/Pasado
DnzSpanDateTimeDateTime?Fecha y hora completa, relativa o con estado
DnzSpanMinutesdecimal? (minutos)Minutos como duracion corta: 90 -> 1h 30m
DnzSpanKVstringPar clave-valor inline (label + valor)
DnzSpanByteslong?Tamano en B/KB/MB/GB/TB
DnzSpanGigaBytesdecimal? (GB)GB con conversion automatica de unidad
DnzSpanGramsdecimal? (gramos)Peso en gr o Kg segun magnitud
DnzTimeSpanDisplayTimeSpan?Duracion en partes: 2d 3h 15m
DnzTimeSpanDisplayCompactTimeSpan?Igual, en tamano pequeno
DnzTimeSpanDisplayBadgeTimeSpan?Igual, cada parte en un badge

Todos se autoocultan cuando el valor es nulo: si Value/Amount viene null, no pintan nada. No hace falta envolverlos en un @if.

AutoColor: verde positivo, rojo negativo

DnzSpanMoney, DnzSpanDecimal y DnzSpanPercent traen AutoColor. Con el activado, el valor se pinta verde si es positivo y rojo si es negativo. Ideal para saldos, margenes o variaciones, donde el signo distingue lo que suma de lo que resta sin escribir una sola condicion.

<DnzSpanMoney Amount=@cliente.Saldo AutoColor=true />

Saldo positivo, verde. Saldo en numeros rojos, rojo. Sin un solo if.

<DnzSpanMoney Amount=@factura.Total />

Un total se enseña en el color por defecto: no tiene sentido pintar de rojo un importe que solo es lo que hay que pagar.


DnzSpanMoney

Importes de dinero con el simbolo de moneda y el formato de la region del cliente. Para listados de facturas, totales y resumenes.

<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" />

Parametros

ParametroTipoDefaultQue hace
Amountdecimal?0El importe a mostrar. Si es null no pinta nada
Labelstring""Etiqueta encima del importe (caption)
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"Tamano de fuente
IsVisiblebooltrueOculta el componente sin quitarlo del arbol

Sin Label pinta solo el importe. Con Label lo monta en columna (etiqueta arriba, importe abajo). Con Label + Icon, ademas añade el icono a la izquierda del bloque.

DnzSpanDecimal

Cualquier decimal con un sufijo libre detras: unidades de stock, kilos, lo que sea. Lo que DnzSpanMoney hace con la moneda, este lo deja a tu eleccion via Symbol.

<DnzSpanDecimal Value=@articulo.Stock Symbol=" uds" />

Una diferencia con color segun el signo:

<DnzSpanDecimal Value=@diferencia Symbol=" kg" AutoColor=true />

Parametros

ParametroTipoDefaultQue hace
Valuedecimal?nullNumero a mostrar. Si es null no pinta nada
Symbolstring""Texto detras del numero ( kg, uds...)
AutoColorboolfalseVerde si positivo, rojo si negativo
Classstring""Clases extra para el <span>
FontSizestring"16px"Tamano de fuente

DnzSpanPercent

Porcentaje listo: tu das el numero en escala humana (12.5), el le pone el % y recorta los decimales sobrantes.

<DnzSpanPercent Value=@informe.Margen Decimals="2" AutoColor=true />

Parametros

ParametroTipoDefaultQue hace
Valuedecimal?nullPorcentaje a mostrar. Si es null no pinta nada
Decimalsint1Decimales maximos; los ceros de cola se omiten (12,50 -> 12,5)
AutoColorboolfalseVerde si positivo, rojo si negativo
Classstring""Clases extra para el <span>
FontSizestring"16px"Tamano de fuente

Value va en escala humana: para enseñar "12,5 %" pasale 12.5, no 0.125.

DnzSpanInteger

Entero limpio: trunca la parte decimal del valor y lo pinta sin separadores ni simbolos. Para contadores y cantidades enteras donde los decimales sobran.

<DnzSpanInteger Value=@(item.Quantity) />

Parametros

ParametroTipoDefaultQue hace
Valuedecimal?nullValor a truncar y mostrar como int
FontSizestring"16px"Tamano de fuente

DnzSpanDate

Fecha (sin hora) en formato amigable y localizado, con un badge opcional que dice si es Hoy, Ayer, Manana, Pasado o Futuro. Trabaja con DateOnly.

<DnzSpanDate Value=@DateOnly.FromDateTime(item.FechaCreacion) />

Con el badge de estado para una agenda de vencimientos:

<DnzSpanDate Value=@vencimiento.Fecha ShowStatus=true />

Parametros

ParametroTipoDefaultQue hace
ValueDateOnly?nullFecha a mostrar. Si es null no pinta nada
FriendlyModebooltrueFormato amigable en lugar de literal
ShowBadgeboolfalsePinta la fecha dentro de un RadzenBadge
ShowStatusboolfalseAnade el badge Hoy/Ayer/Pasado al lado
Classstring""Clases extra para el contenedor
FontSizestring"0.875rem"Tamano de fuente

El tooltip siempre lleva la fecha exacta, aunque el texto visible sea amigable. Pasas el raton por encima y ves el dia concreto.

DnzSpanDateTime

Fecha y hora completas. Puede pintarse en modo relativo (hace 5 min), como caption discreto, o con el badge de estado. Trabaja con DateTime (en UTC, como todo en Dinaup).

<DnzSpanDateTime Value=@item.FechaModificacion />

Modo relativo para un feed de actividad reciente:

<DnzSpanDateTime Value=@evento.Cuando Relative=true ShowStatus=true />

Parametros

ParametroTipoDefaultQue hace
ValueDateTime?nullFecha y hora a mostrar. Si es null no pinta nada
RelativeboolfalseTexto relativo (hace 5 min); el absoluto va al tooltip
ShowBadgeboolfalsePinta el texto dentro de un RadzenBadge
ShowStatusboolfalseAnade el badge Hoy/Ayer/Pasado al lado
CaptionboolfalseEstilo caption (texto pequeno y discreto)
Classstring""Clases extra para el contenedor
FontSizestring"0.875rem"Tamano de fuente

DnzSpanMinutes

Convierte un numero de minutos en una duracion corta y legible: 45 -> 45m, 90 -> 1h 30m, 180 -> 3h. Aguanta negativos (les antepone el signo). Para tiempos de servicio, citas o tareas medidas en minutos.

<DnzSpanMinutes Value=@cita.DuracionMinutos />

Parametros

ParametroTipoDefaultQue hace
Valuedecimal?0Minutos totales. Soporta negativos (-30m). Si es null no pinta nada
FontSizestring"16px"Tamano de fuente

DnzSpanKV

Par clave-valor: la etiqueta arriba o a la izquierda y el valor debajo o al lado. Es el bloque de detalle tipico de un dialogo o una ficha. A diferencia del resto, este recibe el valor ya formateado como string (o un ChildContent con markup 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 manda: si lo pones, ignora Value y pinta lo que metas dentro.

Parametros

ParametroTipoDefaultQue hace
Keystring""La etiqueta / clave
ValuestringnullEl valor ya formateado (si no usas ChildContent)
ChildContentRenderFragmentnullMarkup libre para el valor; tiene prioridad sobre Value
HorizontalboolfalseClave y valor en la misma linea, no apilados
Iconstring""Icono Material o URL de imagen (/... o http)
IconColorstring""Color del icono
ValueColorstring""Color del texto del valor
TextRightboolfalseAlinea el valor a la derecha
LabelWidthstring""Ancho maximo de la etiqueta
Classstring""Clases extra para el contenedor
VisiblebooltrueOculta el componente entero

DnzSpanBytes

Tamano de fichero a partir de un long de bytes, con conversion automatica de unidad: elige entre B, KB, MB, GB o TB segun la magnitud. Para adjuntos, backups y almacenamiento.

<DnzSpanBytes Value=@adjunto.TamanoBytes />

Parametros

ParametroTipoDefaultQue hace
Valuelong?nullTamano en bytes. Si es null no pinta nada
Classstring""Clases extra para el <span>
FontSizestring"16px"Tamano de fuente

DnzSpanGigaBytes

Igual que DnzSpanBytes pero partiendo de GB (decimal). Sube a TB o baja a MB/KB segun el valor, y puede pintar en color cuando se acerca a la cuota.

<DnzSpanGigaBytes Value=@tenant.AlmacenamientoGb AutoColor=true />

Parametros

ParametroTipoDefaultQue hace
Valuedecimal?nullGB a mostrar. Si es null no pinta nada
AutoColorboolfalseNaranja si > 50, rojo si > 100
Classstring""Clases extra para el <span>
FontSizestring"16px"Tamano de fuente

Ojo: el AutoColor de DnzSpanGigaBytes no es verde/rojo por signo, es un semaforo de consumo (naranja al pasar de 50 GB, rojo al pasar de 100 GB). Pensado para cuotas de almacenamiento.

DnzSpanGrams

Peso a partir de gramos (decimal). Por debajo de 1000 lo muestra en gr; a partir de ahi salta a Kg. Pensado para basculas y pesaje en TPV.

<DnzSpanGrams Value=@TPV.HeaderFacturaModel.Peso FontSize="15px" />

Parametros

ParametroTipoDefaultQue hace
Valuedecimal?nullPeso en gramos. Si es null no pinta nada
AutoColorboolfalseColor segun si pasa de 1000 gr
Classstring""Clases extra para el <span>
FontSizestring"16px"Tamano de fuente

DnzTimeSpanDisplay

Pinta un TimeSpan descompuesto en partes con su etiqueta: 2d 3h 15m. Solo muestra las partes que no son cero, asi que una duracion corta sale limpia. Numero y etiqueta se estilan por separado.

<DnzTimeSpanDisplay Value=@(sesion.Fin - sesion.Inicio) ShowSeconds=true />

Con texto para el caso vacio:

<DnzTimeSpanDisplay Value=@tarea.TiempoInvertido EmptyText="Sin registrar" />

Parametros

ParametroTipoDefaultQue hace
ValueTimeSpan?nullDuracion a descomponer. Si es null muestra EmptyText (o nada)
ShowSecondsboolfalseIncluye los segundos en el desglose
EmptyTextstring""Texto a mostrar cuando Value es null
NumberClassstring"fw-semibold text-dark"Clases para los numeros
LabelClassstring"text-muted small ms-1"Clases para las etiquetas (d, h, m)
Stylestring""Estilo inline del contenedor

DnzTimeSpanDisplayCompact

El mismo desglose que DnzTimeSpanDisplay, pero con numero y etiqueta en tamano pequeno. Atajo comodo para tablas y celdas: ya trae las clases de estilo puestas.

<DnzTimeSpanDisplayCompact Value=@tarea.Duracion />

Parametros

ParametroTipoDefaultQue hace
ValueTimeSpan?nullDuracion a descomponer. Si es null muestra EmptyText (o nada)
ShowSecondsboolfalseIncluye los segundos en el desglose
EmptyTextstring""Texto a mostrar cuando Value es null
Stylestring""Estilo inline del contenedor

DnzTimeSpanDisplayBadge

El mismo desglose, pero cada parte va dentro de un badge de color. Para resaltar duraciones en cabeceras o resumenes.

<DnzTimeSpanDisplayBadge Value=@sesion.Duracion />

Parametros

ParametroTipoDefaultQue hace
ValueTimeSpan?nullDuracion a descomponer. Si es null muestra EmptyText (o nada)
ShowSecondsboolfalseIncluye los segundos en el desglose
EmptyTextstring""Texto a mostrar cuando Value es null
Stylestring""Estilo inline del contenedor

Patron tipico: columna de informe -> span

Estos componentes encajan directamente 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 te devuelve.

Pinta cada columna con su span

Importe -> DnzSpanMoney. Fecha -> DnzSpanDate. Duracion -> DnzSpanMinutes. Sin formatear nada a mano.

@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 vacia, el span no pinta nada. Menos ruido en tu marcado.


Relacionado

On this page