Files
GPW/GPW.CORE.UI/Components/RegAtt.razor
T

135 lines
4.3 KiB
Plaintext

@using CORE.Data.DbModels
@using UI.Data
@inject GpwDataService GDataServ
<div class="py-0 small flex-fill @blockCss" style="width: @widthPerc">
<div class="d-flex">
@*@cssSelected*@
@if (@CurrData.IdxFase > 0)
{
@*<div class="px-1 text-left border border-secondary border-top-0 border-bottom-0 border-left-0 table-info" style="font-size: 0.7rem;">*@
<button @onclick="() => Edit()" class="px-1 text-center border border-secondary border-top-0 border-bottom-0 border-left-0 btn btn-info btn-sm" style="font-size: 0.72rem;">
@if (@CurrData.OreTot > 1)
{
<div>@CurrData.Inizio.ToString("HH:mm")</div>
<div>@CurrData.Fine.ToString("HH:mm")</div>
<div class="badge badge-dark">@($"{@CurrData.Durata.Hours}h {@CurrData.Durata.Minutes:00}'")</div>
}
else
{
<div>@CurrData.Inizio.ToString("HH")</div>
<div>@CurrData.Inizio.ToString("mm")</div>
<div class="badge badge-dark">@($"{CurrData.OreTot*60:N0}'")</div>
}
</button>
<div class="px-1 text-left textTrim flex-fill">
<div class="text-dark" title="@CurrData.FasiNav?.ProgettoNav?.ClienteNav?.RagSociale - @CurrData.FasiNav?.ProgettoNav?.NomeProj"><b>@(trimLine($"{CurrData.FasiNav?.ProgettoNav?.ClienteNav?.RagSociale}",65))</b> - @(trimLine($"{CurrData.FasiNav?.ProgettoNav?.NomeProj}",75))</div>
<div class="text-secondary" title="@CurrData.FasiNav?.DescrizioneFase">@(trimLine($"{CurrData.FasiNav?.DescrizioneFase}",130))</div>
<div class="small" title="@CurrData.Descrizione">@(trimLine($"{CurrData.Descrizione}",250))</div>
</div>
@*<div class="pl-1 text-right">
<div>
<button class="btn btn-sm btn-outline-info" @onclick="() => Edit()"><i class="fas fa-edit"></i></button>
</div>
<div>
<button class="btn btn-sm btn-outline-success" @onclick="() => Edit()"><i class="fas fa-magic"></i></button>
</div>
</div>*@
}
else
{
<div class="px-1 small textTrim">
<AddRA IdxDip="@IdxDipSel" NewItemCreated="() => Edit()" InizioPer="@CurrData.Inizio"></AddRA>
</div>
}
</div>
</div>
@code {
[Parameter]
public RegAttivitaModel CurrData { get; set; } = null!;
[Parameter]
public int Periodo { get; set; } = 1;
[Parameter]
public int IdxDipSel { get; set; } = 0;
[Parameter]
public List<AnagFasiModel> ListFasi { get; set; } = null!;
[Parameter]
public EventCallback<RegAttivitaModel> ItemSelected { get; set; }
/// <summary>
/// Trim linea di testo secondo regole
/// </summary>
/// <param name="stringOrig">Stringa origiale</param>
/// <param name="multFact">Fattore di moltiplicazione (std: 130)</param>
/// <returns></returns>
protected string trimLine(object stringOrig, int multFact = 130)
{
double num = 1;
if (CurrData.OreTot != null)
{
num = (double)CurrData.OreTot;
}
double perc = num / Periodo;
int maxLenght = (int)(perc * multFact);
string answ = $"{stringOrig}";
if (answ.Length > maxLenght)
{
answ = $"{answ.Substring(0, maxLenght)}...";
}
return answ;
}
private string widthPerc
{
get
{
string answ = "1%";
if (CurrData != null)
{
answ = $"{CurrData.OreTot / Periodo:P2}".Replace(",", ".");
}
return answ;
}
}
private string blockCss
{
get
{
string answ = CurrData.IdxFase == 0 ? "" : " border border-info rounded";
return answ;
}
}
protected bool isSelected = false;
protected string cssSelected
{
get => isSelected ? "table-info" : "";
}
protected override void OnInitialized()
{
isSelected = false;
}
/// <summary>
/// Indico item selezionato
/// </summary>
protected async void Edit()
{
isSelected = true;
await ItemSelected.InvokeAsync(CurrData);
}
}