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

Vistas avanzadas

Componentes especializados fuera del CRUD: línea de tiempo Gantt, código resaltado para documentar dentro de la app y selectores de rango de fechas con presets.

Piezas más especializadas, fuera del CRUD de cada día. Aquí tienes la planificación en línea de tiempo con DnzGenericGantt, el código resaltado para documentar dentro de la app (DnzHighlightCode y DnzCodeWindow) y los selectores de rango de fechas con presets para alimentar informes y dashboards (DnzDateRangeSelector y DnzDateTimeRangeSelector).

Qué componente uso

Tres familias dentro de la página:

Necesito...Componente
Pintar tareas/recursos en una línea de tiempo con zoom y navegaciónDnzGenericGantt
Mostrar un snippet con resaltado de sintaxis, copiar y números de líneaDnzHighlightCode
Lo mismo pero con aspecto de ventana (dots de macOS, temas, footer)DnzCodeWindow
Elegir un rango de fechas (solo día) con presets tipo "Últimos 7 días"DnzDateRangeSelector
Elegir un rango con fecha y hora (incluye el HH:mm)DnzDateTimeRangeSelector

DnzGanttToolBar no se usa suelto: lo monta DnzGenericGantt por dentro para la barra de navegación y zoom. Lo documentamos abajo por transparencia, pero tú solo tocas el Gantt.


DnzGenericGantt

Línea de tiempo tipo Gantt: filas por grupo (empleado, recurso, tarea) y barras por intervalo de tiempo, con barra superior para navegar, cambiar de vista (Horas / Semana / Mes / Año) y hacer zoom.

Le pasas dos listas: los Groups (las filas) y los SourceItems (las barras). Cada item se asocia a su fila por GroupId. El componente recalcula el layout solo cuando cambias de vista o de fecha.

<DnzGenericGantt Groups=@_grupos SourceItems=@_citas OnItemClick=@AbrirCita />

@code {
    private List<GanttGroup> _grupos = new();
    private List<GanttItem> _citas = new();

    protected override void OnInitialized()
    {
        _grupos.Add(new GanttGroup { Id = "tecnico-1", Text = "Laura (Taller A)" });
        _grupos.Add(new GanttGroup { Id = "tecnico-2", Text = "Marcos (Taller B)" });

        _citas.Add(new GanttItem("c-1001", "tecnico-1", "Revision 8430-KLM", DateTime.Today.AddHours(9), DateTime.Today.AddHours(11), null));
        _citas.Add(new GanttItem("c-1002", "tecnico-2", "ITV 1190-ZRT", DateTime.Today.AddHours(10), DateTime.Today.AddHours(12), null, "background:#0d6efd;color:#fff"));
    }

    private void AbrirCita(GanttItem item) { /* item.Data trae tu objeto de negocio */ }
}
ParámetroTipoDefaultPara qué
GroupsList<GanttGroup>Filas del Gantt. Cada GanttGroup tiene Id, Text y Template opcional para pintar la celda de la fila.
SourceItemsList<GanttItem>Barras a colocar. Cada GanttItem se ata a su fila por GroupId y lleva From/To, Text, Tooltip y RowStyle (CSS inline de la barra).
OnItemClickEventCallback<GanttItem>Se dispara al hacer clic en una barra. Recupera tu entidad desde item.Data.

Por encima de 20.000 items el componente deja de pintar y muestra un aviso de "demasiados resultados". Es a propósito: filtra antes de pasarle los datos, no le eches el listado entero.

GanttItem se construye con el constructor new GanttItem(id, groupId, text, from, to, data, styleX). El ultimo parametro es CSS inline opcional para colorear la barra.

DnzGanttToolBar

Barra de control del Gantt: flechas anterior/siguiente, botón "Hoy", selector de vista (Horas / Semana / Mes / Año) y zoom. La monta DnzGenericGantt internamente; normalmente no la instancias tú.

<DnzGanttToolBar Viewport=@_viewport ViewportChanged=@OnViewportChanged />

@code {
    private GanttViewport _viewport = new() { ViewMode = GanttViewMode.Hour, FocusDate = DateTime.Today };

    private void OnViewportChanged(GanttViewport vp) => _viewport = vp;
}
ParámetroTipoDefaultPara qué
ViewportGanttViewport(requerido)Estado actual: FocusDate, ViewMode y Zoom. La barra lo lee para pintar titulo y modo activo.
ViewportChangedEventCallback<GanttViewport>Se dispara al navegar, cambiar de vista o tocar el zoom. Devuelve una copia nueva del viewport.

DnzHighlightCode

Bloque de código con resaltado de sintaxis (highlight.js), cabecera con el lenguaje y el nombre de fichero, botón de copiar y números de línea opcionales. Para documentar dentro de la app: snippets de setup, ejemplos de uso, comandos.

<DnzHighlightCode Code=@_snippet Language="csharp" DnzFileName="Program.cs" ShowLineNumbers="true" />

@code {
    private string _snippet = "builder.Services.AddDinaZen();";
}
ParámetroTipoDefaultPara qué
Codestring""El código a mostrar.
Languagestring""Lenguaje para el resaltado: csharp, razor, bash, json, sql, vb... Acepta alias (cs, js, cshtml).
DnzFileNamestring""Nombre de fichero a mostrar en la cabecera (ej. Program.cs).
ShowCopybooltrueMuestra el boton de copiar al portapapeles.
ShowLineNumbersboolfalsePinta la columna de números de línea.
SizeDnzHighlightCodeSizeDefaultTamaño del bloque: Small, Default o Large.

Razor (razor / cshtml) se resalta como XML por dentro. Es el truco de highlight.js, tú solo pasas Language="razor".

DnzCodeWindow

Lo mismo que DnzHighlightCode pero con estética de ventana: los tres puntos rojo/amarillo/verde de macOS, título, temas de color y un footer opcional. Para landings, demos o documentación donde quieras que el código "se vea bonito".

<DnzCodeWindow Code=@_setup Language="csharp" Title="Program.cs" Theme="DnzCodeWindow.DnzCodeWindowTheme.Dracula" ShowLineNumbers="true">
    <span class="text-muted">Registra DinaZen en el arranque.</span>
</DnzCodeWindow>

@code {
    private string _setup = "builder.Services.AddDinaZen();";
}
ParámetroTipoDefaultPara qué
Codestring""El código a mostrar.
Languagestring""Lenguaje del resaltado (mismos alias que DnzHighlightCode, más py, go, rs, dockerfile...).
Titlestring""Titulo de la ventana (nombre de fichero o descripcion).
ShowCopybooltrueMuestra el boton de copiar.
ShowLineNumbersboolfalsePinta los números de línea.
TiltedboolfalseAplica un efecto 3D inclinado, útil en landings.
SizeDnzCodeWindowSizeDefaultSmall, Default o Large.
ThemeDnzCodeWindowThemeDarkTema visual: Dark, Light, Monokai o Dracula.
ChildContentRenderFragmentContenido del footer de la ventana (nota, enlace, etc.).

Si solo quieres mostrar un snippet copiable con resaltado en una ficha o subpage, tira de DnzHighlightCode. Es más plano y ocupa menos.

Si es una landing o una demo donde el código es parte del diseño, DnzCodeWindow con Theme y Tilted queda mucho mejor.

DnzDateRangeSelector

Selector de rango de fechas (solo día, sin hora) con un desplegable de presets: Hoy, Ayer, Últimos 7 días, Este mes, Este trimestre, Este año, etc. Al elegir "Personalizado" aparecen dos date pickers Desde/Hasta. El componente devuelve el rango ya calculado como DateOnly; tú solo recargas datos.

<DnzDateRangeSelector @bind-SelectedPreset=@_preset OnRangeChanged=@CargarFacturas />

@code {
    private DnzDateRangeSelector.DateRangePreset _preset = DnzDateRangeSelector.DateRangePreset.Last30Days;

    private async Task CargarFacturas((DateOnly From, DateOnly To) rango)
    {
        // recargar el listado de facturas entre rango.From y rango.To
    }
}
ParámetroTipoDefaultPara qué
SelectedPresetDateRangePresetLast7DaysPreset activo. Bindeable con @bind-SelectedPreset.
SelectedPresetChangedEventCallback<DateRangePreset>Se dispara al cambiar de preset (lo usa el binding).
OnRangeChangedEventCallback<(DateOnly From, DateOnly To)>Se dispara con el rango ya calculado cada vez que cambia. Aquí recargas tus datos.

OnRangeChanged salta tambien en el primer render con el preset por defecto, asi que el listado carga solo sin tener que disparar nada a mano.

DnzDateTimeRangeSelector

Gemelo del anterior pero con hora: los date pickers personalizados incluyen HH:mm y el rango se devuelve como DateTime (no DateOnly). Úsalo cuando el intervalo importa al minuto: logs, fichajes, eventos, auditoría.

<DnzDateTimeRangeSelector @bind-SelectedPreset=@_preset OnRangeChanged=@CargarEventos />

@code {
    private DnzDateTimeRangeSelector.DateTimeRangePreset _preset = DnzDateTimeRangeSelector.DateTimeRangePreset.Today;

    private async Task CargarEventos((DateTime From, DateTime To) rango)
    {
        // consultar eventos entre rango.From y rango.To
    }
}
ParámetroTipoDefaultPara qué
SelectedPresetDateTimeRangePresetLast7DaysPreset activo. Bindeable con @bind-SelectedPreset.
SelectedPresetChangedEventCallback<DateTimeRangePreset>Se dispara al cambiar de preset (lo usa el binding).
OnRangeChangedEventCallback<(DateTime From, DateTime To)>Se dispara con el rango ya calculado (con hora) cada vez que cambia.

Regla rápida: si el dato es "por día" (ventas, stock, facturación) usa DnzDateRangeSelector. Si necesitas el minuto exacto (logs, fichajes, trazabilidad) usa DnzDateTimeRangeSelector. No mezcles tipos: uno te da DateOnly y el otro DateTime.


Relacionado: Intro a DinaZen · Índice de componentes · SDK .NET · Informes Flex · Guías de estilo C#/Blazor

On this page