135 lines
4.3 KiB
Plaintext
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);
|
|
}
|
|
}
|