Prima implementazione pagina "Attività"
This commit is contained in:
@@ -0,0 +1,125 @@
|
||||
@if (Attivita is not null)
|
||||
{
|
||||
<article class="@CardClass"
|
||||
draggable="@(IsDraggable ? "true" : "false")"
|
||||
@ondragstart="@(() => OnDragStart.InvokeAsync(Attivita))"
|
||||
@ondragover:preventDefault
|
||||
@ondrop="@(() => OnDrop.InvokeAsync(Attivita))">
|
||||
|
||||
<span class="accent-bar"></span>
|
||||
|
||||
<div class="card-body">
|
||||
|
||||
<header class="card-top">
|
||||
<span class="@($"priorita-pill {PrioritaClass}")">
|
||||
<MudIcon Icon="@PrioritaIcon" Size="Size.Small" />
|
||||
<span>@Attivita.Priorita.ToString().ToUpper()</span>
|
||||
</span>
|
||||
|
||||
@if (Attivita.IsLocked)
|
||||
{
|
||||
<MudIcon Icon="@Icons.Material.Filled.Lock" Size="Size.Small"
|
||||
Class="handle-icon lock-icon" Title="Emergenza: non riordinabile" />
|
||||
}
|
||||
else
|
||||
{
|
||||
<MudIcon Icon="@Icons.Material.Filled.DragIndicator" Size="Size.Small"
|
||||
Class="handle-icon drag-icon" Title="Trascina per riordinare" />
|
||||
}
|
||||
</header>
|
||||
|
||||
<h3 class="card-store">
|
||||
<MudIcon Icon="@Icons.Material.Outlined.Store" Size="Size.Small" />
|
||||
<span>@Attivita.PuntoVendita</span>
|
||||
</h3>
|
||||
|
||||
<nav class="card-breadcrumb">
|
||||
<span>@Attivita.Categoria</span>
|
||||
<MudIcon Icon="@Icons.Material.Filled.ChevronRight" Size="Size.Small" />
|
||||
<span>@Attivita.Sottocategoria</span>
|
||||
<MudIcon Icon="@Icons.Material.Filled.ChevronRight" Size="Size.Small" />
|
||||
<span>@Attivita.Reparto</span>
|
||||
</nav>
|
||||
|
||||
<div class="card-location">
|
||||
<MudIcon Icon="@Icons.Material.Outlined.LocationOn" Size="Size.Small" />
|
||||
<span>@Attivita.Luogo</span>
|
||||
</div>
|
||||
|
||||
<p class="card-desc">@Attivita.Descrizione</p>
|
||||
|
||||
@if (Attivita.Allegati.Count > 0)
|
||||
{
|
||||
<span class="card-allegati-pill">
|
||||
<MudIcon Icon="@Icons.Material.Outlined.AttachFile" Size="Size.Small" />
|
||||
<span>@Attivita.Allegati.Count allegat@(Attivita.Allegati.Count == 1 ? "o" : "i")</span>
|
||||
</span>
|
||||
}
|
||||
</div>
|
||||
|
||||
<footer class="card-actions">
|
||||
@if (Attivita.Allegati.Count > 0)
|
||||
{
|
||||
<button type="button" class="btn-card btn-card-ghost"
|
||||
@onclick="@(() => OnVisualizzaAllegati.InvokeAsync(Attivita))">
|
||||
<MudIcon Icon="@Icons.Material.Outlined.FolderOpen" Size="Size.Small" />
|
||||
<span>Allegati</span>
|
||||
</button>
|
||||
}
|
||||
@if (Attivita.Stato == StatoAttivita.Aperta)
|
||||
{
|
||||
<button type="button" class="btn-card btn-card-primary"
|
||||
@onclick="@(() => OnChiudi.InvokeAsync(Attivita))">
|
||||
<MudIcon Icon="@Icons.Material.Filled.CheckCircle" Size="Size.Small" />
|
||||
<span>Chiudi Attività</span>
|
||||
</button>
|
||||
}
|
||||
else
|
||||
{
|
||||
<span class="@($"stato-pill {StatoClass}")">
|
||||
<MudIcon Icon="@StatoIcon" Size="Size.Small" />
|
||||
<span>@Attivita.Stato</span>
|
||||
</span>
|
||||
}
|
||||
</footer>
|
||||
</article>
|
||||
}
|
||||
|
||||
@code {
|
||||
[Parameter, EditorRequired] public AttivitaItem? Attivita { get; set; }
|
||||
[Parameter] public EventCallback<AttivitaItem> OnChiudi { get; set; }
|
||||
[Parameter] public EventCallback<AttivitaItem> OnVisualizzaAllegati { get; set; }
|
||||
[Parameter] public EventCallback<AttivitaItem> OnDragStart { get; set; }
|
||||
[Parameter] public EventCallback<AttivitaItem> OnDrop { get; set; }
|
||||
|
||||
bool IsDraggable => Attivita?.Priorita == PrioritaAttivita.Normale && Attivita.Stato == StatoAttivita.Aperta;
|
||||
|
||||
string CardClass => $"attivita-card {PrioritaClass}{(Attivita?.Stato != StatoAttivita.Aperta ? " card-chiusa" : "")}";
|
||||
|
||||
string PrioritaClass => Attivita?.Priorita switch
|
||||
{
|
||||
PrioritaAttivita.Emergenza => "priorita-emergenza",
|
||||
PrioritaAttivita.Alta => "priorita-alta",
|
||||
_ => "priorita-normale"
|
||||
};
|
||||
|
||||
string PrioritaIcon => Attivita?.Priorita switch
|
||||
{
|
||||
PrioritaAttivita.Emergenza => Icons.Material.Filled.Warning,
|
||||
PrioritaAttivita.Alta => Icons.Material.Filled.ErrorOutline,
|
||||
_ => Icons.Material.Filled.CheckCircleOutline
|
||||
};
|
||||
|
||||
string StatoClass => Attivita?.Stato switch
|
||||
{
|
||||
StatoAttivita.Chiusa => "stato-chiusa",
|
||||
StatoAttivita.Rimandata => "stato-rimandata",
|
||||
_ => "stato-aperta"
|
||||
};
|
||||
|
||||
string StatoIcon => Attivita?.Stato switch
|
||||
{
|
||||
StatoAttivita.Chiusa => Icons.Material.Filled.CheckCircleOutline,
|
||||
_ => Icons.Material.Filled.Schedule
|
||||
};
|
||||
}
|
||||
Reference in New Issue
Block a user