Cambiata visualizzazione calendario e aggiunto formAttività

This commit is contained in:
2025-06-11 10:11:20 +02:00
parent d462e9faca
commit d8f2588e0e
52 changed files with 1308 additions and 4734 deletions

View File

@@ -1,31 +1,57 @@
@using Template.Shared.Core.Dto
@using Template.Shared.Core.Helpers.Enum
<div class="activity-card @Activity.Category.ConvertToHumanReadable()">
<div class="activity-card @Activity.Category.ConvertToHumanReadable()" @onclick="() => OpenActivityForm(Activity.ActivityId)">
<div class="activity-left-section">
<div class="activity-hours-section">
<span class="activity-hours">
@if (Activity.EffectiveTime is null)
{
@($"{Activity.EstimatedTime:t}")
}
else
{
@($"{Activity.EffectiveTime:t}")
}
</span>
@if (Durata != null)
{
<MudChip T="string" Icon="@IconConstants.Chip.Time" Color="Color.Dark" Size="Size.Small">@($"{Durata.Value.TotalHours:####}h")</MudChip>
}
</div>
<div class="activity-body-section">
<MudText Class="activity-title" Typo="Typo.button" HtmlTag="h3">@Activity.Commessa</MudText>
<MudText Class="activity-subtitle" Typo="Typo.caption">@Activity.ActivityDescription</MudText>
<div class="title-section">
<MudText Class="activity-title" Typo="Typo.body1" HtmlTag="h3">
@switch (Activity.Category)
{
case ActivityCategoryEnum.Commessa:
@Activity.Commessa
break;
case ActivityCategoryEnum.Interna:
@Activity.Cliente
break;
case ActivityCategoryEnum.Memo:
@Activity.ActivityDescription
break;
default:
@("")
break;
}
</MudText>
<div class="activity-hours-section">
<span class="activity-hours">
@if (Activity.EffectiveTime is null)
{
@($"{Activity.EstimatedTime:t}")
}
else
{
@($"{Activity.EffectiveTime:t}")
}
</span>
</div>
</div>
@if (Activity.Category != ActivityCategoryEnum.Memo)
{
<MudText Class="activity-subtitle" Typo="Typo.body1" HtmlTag="p">@Activity.ActivityDescription</MudText>
}
</div>
</div>
<div class="activity-info-section">
@if (Durata != null && (Durata.Value.TotalHours > 0 || Durata.Value.Minutes > 0))
{
var ore = (int)Durata.Value.TotalHours;
var minuti = Durata.Value.Minutes;
<MudChip T="string" Icon="@IconConstants.Chip.Time" Color="Color.Dark" Size="Size.Small">
@(ore > 0 ? $"{ore}h{(minuti > 0 ? $" {minuti}m" : "")}" : $"{minuti}m")
</MudChip>
}
@if (Activity.ActivityResultId != null)
{
<MudChip T="string" Icon="@IconConstants.Chip.Stato" Size="Size.Small" Color="Color.Success">@Activity.ActivityResultId</MudChip>
@@ -38,7 +64,6 @@
[Parameter] public ActivityDTO Activity { get; set; } = new();
private TimeSpan? Durata { get; set; }
private Color ColorStatus { get; set; }
protected override void OnInitialized()
{
@@ -46,7 +71,15 @@
{
{ EffectiveTime: not null, EffectiveEndtime: not null } => Activity.EffectiveEndtime.Value - Activity.EffectiveTime.Value,
{ EstimatedTime: not null, EstimatedEndtime: not null } => Activity.EstimatedEndtime.Value - Activity.EstimatedTime.Value,
_ => Durata
_ => null
};
}
private void OpenActivityForm(string? activityId)
{
var url = "/activity";
url = !activityId.IsNullOrEmpty() ? $"{url}/{activityId}" : url;
NavigationManager.NavigateTo(url);
}
}

View File

@@ -1,14 +1,11 @@
.activity-card {
width: 100%;
display: flex;
flex-direction: row;
align-items: center;
justify-content: space-between;
padding: .5rem .7rem;
flex-direction: column;
padding: .5rem .5rem;
border-radius: 12px;
line-height: normal;
border: 1px solid var(--card-border-color);
box-shadow: var(--card-shadow);
}
.activity-card.memo { border-left: 5px solid var(--mud-palette-info-darken); }
@@ -20,13 +17,14 @@
.activity-left-section {
display: flex;
align-items: center;
margin-left: 4px;
}
.activity-hours-section {
width: min-content;
.title-section {
display: flex;
flex-direction: column;
align-items: center;
flex-direction: row;
justify-content: space-between;
width: 100%;
}
.activity-hours { font-weight: 700; }
@@ -34,22 +32,24 @@
.activity-hours-section ::deep .mud-chip { margin: 5px 0 0 !important; }
.activity-body-section {
width: fit-content;
margin: 0 1rem;
width: 100%;
display: flex;
flex-direction: column;
}
.activity-body-section ::deep > .activity-title {
.title-section ::deep > .activity-title {
font-weight: 800 !important;
margin: 0 0 .2rem 0 !important;
margin: 0 !important;
line-height: normal !important;
}
.activity-body-section ::deep > .activity-subtitle {
font-size: smaller;
color: var(--mud-palette-gray-darker);
margin: .2rem 0 !important;
line-height: normal !important;
}
.activity-info-section { width: min-content; }
.activity-info-section {
width: min-content;
display: flex;
}