Aggiunto componenti x test RadZen Scheduler

This commit is contained in:
Samuele Locatelli
2024-09-06 08:43:12 +02:00
parent bc458303fc
commit 2dde594e40
11 changed files with 366 additions and 6 deletions
@@ -0,0 +1,49 @@
@inject DialogService DialogService
<RadzenTemplateForm TItem="Appointment" Data="@model" Submit=@OnSubmit>
<RadzenStack Gap="1rem">
<RadzenStack Orientation="Orientation.Horizontal" AlignItems="AlignItems.Center" Wrap="FlexWrap.Wrap">
<RadzenLabel Text="Title" Style="width: 4rem;" />
<RadzenTextBox @bind-Value="@model.Text" Name="Text" Style="width: 12rem;" />
<RadzenRequiredValidator Component="Text" Text="Title is required" />
</RadzenStack>
<RadzenStack Orientation="Orientation.Horizontal" AlignItems="AlignItems.Center" Wrap="FlexWrap.Wrap">
<RadzenLabel Text="Detail" Style="width: 4rem;" />
<RadzenTextBox @bind-Value="@model.Detail" Name="Detail" Style="width: 12rem;" />
<RadzenRequiredValidator Component="Detail" Text="Detail is required" />
</RadzenStack>
<RadzenStack Orientation="Orientation.Horizontal" AlignItems="AlignItems.Center" Wrap="FlexWrap.Wrap">
<RadzenLabel Text="Start" Style="width: 4rem;" />
<RadzenDatePicker @bind-Value="@model.Start" Name="Start" ShowTime="true" Style="width: 12rem;" />
<RadzenRequiredValidator Component="Start" Text="Start is required" />
</RadzenStack>
<RadzenStack Orientation="Orientation.Horizontal" AlignItems="AlignItems.Center" Wrap="FlexWrap.Wrap">
<RadzenLabel Text="End" Style="width: 4rem;" />
<RadzenDatePicker Name="End" @bind-Value="@model.End" ShowTime="true" Style="width: 12rem;" />
<RadzenRequiredValidator Component="End" Text="End is required" />
</RadzenStack>
<RadzenStack Orientation="Orientation.Horizontal" JustifyContent="JustifyContent.End" >
<RadzenButton ButtonType="ButtonType.Submit" Text="Save" />
</RadzenStack>
</RadzenStack>
</RadzenTemplateForm>
@code {
[Parameter]
public DateTime Start { get; set; }
[Parameter]
public DateTime End { get; set; }
Appointment model = new Appointment();
protected override void OnParametersSet()
{
model.Start = Start;
model.End = End;
}
void OnSubmit(Appointment model)
{
DialogService.Close(model);
}
}
@@ -0,0 +1,11 @@
namespace EgwCoreLib.BlazorTest.Components
{
public class Appointment
{
public DateTime Start { get; set; }
public DateTime End { get; set; }
public string Text { get; set; } = "";
public string Detail { get; set; } = "";
}
}
@@ -0,0 +1,45 @@
@inject DialogService DialogService
<RadzenTemplateForm TItem="Appointment" Data="@model" Submit=@OnSubmit>
<RadzenStack Gap="1rem">
<RadzenStack Orientation="Orientation.Horizontal" AlignItems="AlignItems.Center" Wrap="FlexWrap.Wrap">
<RadzenLabel Text="Title" Style="width: 6rem;" />
<RadzenTextBox @bind-Value="@model.Text" Name="Text" Style="width: 12rem;" />
<RadzenRequiredValidator Component="Text" Text="Title is required" />
</RadzenStack>
<RadzenStack Orientation="Orientation.Horizontal" AlignItems="AlignItems.Center" Wrap="FlexWrap.Wrap">
<RadzenLabel Text="Detail" Style="width: 6rem;" />
<RadzenTextBox @bind-Value="@model.Detail" Name="Detail" Style="width: 12rem;" />
<RadzenRequiredValidator Component="Detail" Text="Detail is required" />
</RadzenStack>
<RadzenStack Orientation="Orientation.Horizontal" AlignItems="AlignItems.Center" Wrap="FlexWrap.Wrap">
<RadzenLabel Text="Start" Style="width: 6rem;" />
<RadzenDatePicker @bind-Value="@model.Start" Name="Start" ShowTime="true" Style="width: 12rem;" />
<RadzenRequiredValidator Component="Start" Text="Start is required" />
</RadzenStack>
<RadzenStack Orientation="Orientation.Horizontal" AlignItems="AlignItems.Center" Wrap="FlexWrap.Wrap">
<RadzenLabel Text="End" Style="width: 6rem;" />
<RadzenDatePicker Name="End" @bind-Value="@model.End" ShowTime="true" Style="width: 12rem;" />
<RadzenRequiredValidator Component="End" Text="End is required" />
</RadzenStack>
<RadzenStack Orientation="Orientation.Horizontal" JustifyContent="JustifyContent.End" >
<RadzenButton ButtonType="ButtonType.Submit" Text="Save" />
</RadzenStack>
</RadzenStack>
</RadzenTemplateForm>
@code {
[Parameter]
public Appointment Appointment { get; set; }
Appointment model = new Appointment();
protected override void OnParametersSet()
{
model = Appointment;
}
void OnSubmit(Appointment model)
{
DialogService.Close(model);
}
}
@@ -0,0 +1,64 @@
@using Radzen
@using System.Text.Json
@inject IJSRuntime JSRuntime
<RadzenCard Variant="Variant.Outlined" class="rz-mt-4">
<RadzenStack Orientation="Orientation.Vertical" Gap="0.5rem" @attributes=@Attributes>
<RadzenStack Orientation="Orientation.Horizontal" AlignItems="AlignItems.Center" JustifyContent="JustifyContent.SpaceBetween">
<RadzenText TextStyle="TextStyle.Subtitle1" TagName="TagName.P" class="rz-m-0">Console log</RadzenText>
<RadzenButton Click=@OnClearClick Text="Clear console" ButtonStyle="ButtonStyle.Base" Variant="Variant.Flat" Size="ButtonSize.Small" />
</RadzenStack>
<RadzenStack Orientation="Orientation.Vertical" Gap="0" ID="event-console" class="rz-pt-1" Style="border-top: var(--rz-grid-cell-border); min-height: 2rem; max-height: 12rem; overflow: auto;">
@foreach (var message in messages)
{
<RadzenAlert ShowIcon="false" Variant="Variant.Flat" AlertStyle="message.AlertStyle" Size="AlertSize.ExtraSmall" Shade="Shade.Lighter" AllowClose="false" Style="font-size: 0.75rem">
<span Style="opacity: 0.6;">@message.Date.ToString("HH:mm:ss.ff")</span> @message.Text
</RadzenAlert>
}
</RadzenStack>
</RadzenStack>
</RadzenCard>
@code {
class Message
{
public DateTime Date { get; set; }
public string Text { get; set; }
public AlertStyle AlertStyle { get; set; }
}
[Parameter(CaptureUnmatchedValues = true)]
public IDictionary<string, object> Attributes { get; set; }
IList<Message> messages = new List<Message>();
protected override async Task OnAfterRenderAsync(bool firstRender)
{
if (!firstRender)
{
await JSRuntime.InvokeVoidAsync("eval", $"document.getElementById('event-console').scrollTop = document.getElementById('event-console').scrollHeight");
}
}
void OnClearClick()
{
Clear();
}
public void Clear()
{
messages.Clear();
InvokeAsync(StateHasChanged);
}
public void Log(string message, AlertStyle alertStyle = AlertStyle.Info)
{
messages.Add(new Message { Date = DateTime.Now, Text = message, AlertStyle = alertStyle });
InvokeAsync(StateHasChanged);
}
public void Log(object value)
{
Log(JsonSerializer.Serialize(value));
}
}