Files
2024-07-02 17:12:26 +02:00

229 lines
12 KiB
Plaintext

<div class="card">
<div class="card-header">
<div class="d-flex justify-content-between">
<div class="px-2">
<div class="d-flex">
<div class="px-0">
<h3>Progetti</h3>
</div>
<div class="px-2">
@* <div class="form-check form-switch">
<input class="form-check-input" type="checkbox" role="switch" @bind="OnlyActive">
<label class="form-check-label">@actMessage</label>
</div> *@
<div class="form-check form-switch">
<input class="form-check-input" type="checkbox" role="switch" @bind="NotArchived">
<label class="form-check-label">@archMessage</label>
</div>
</div>
</div>
</div>
<div class="px-2">
<div class="d-flex">
@* <div class="px-2">
@if (CurrItem == null)
{
<button class="btn btn-success" @onclick="()=>CreateNew()"><i class="fa-solid fa-square-plus"></i> Add New</button>
}
else
{
<button class="btn btn-warning" @onclick="()=> DoEdit(null)"><i class="fa-solid fa-ban"></i> Cancel</button>
}
</div> *@
<div class="px-2">
<div class="input-group">
<span class="input-group-text" id="basic-addon1">Macchina</span>
<select class="form-select" @bind="@MachineIdSel">
<option value="0">--- Tutti ---</option>
@foreach (var item in MachineList)
{
<option value="@item.MachineID">
@item.MainKey | @item.Name (@item.MachineID)
</option>
}
</select>
</div>
</div>
</div>
</div>
</div>
@if (CurrItem != null)
{
@*<hr />
<MaterialEdit CurrRecord="CurrItem" EC_update="ForceReload"></MaterialEdit> *@
}
</div>
<div class="card-body p-1">
@if (ListRecords == null || isLoading)
{
<EgwCoreLib.Razor.LoadingData></EgwCoreLib.Razor.LoadingData>
}
else if (totalCount == 0)
{
<div class="alert alert-info">Nessun record trovato</div>
}
else
{
<table class="table table-striped table-sm text-start">
<thead>
<tr class="">
<th>
<button class="btn btn-primary btn-sm" @onclick="() => DoSelect(null)"><i class="fa-solid fa-rotate"></i></button>
</th>
<th>ID <Sorter ParamName="ProjDbId" IsAsc="@sortAsc" CurrParam="@sortField" sortReq="SortRequested"></Sorter></th>
@* @if (ProjDbId == 0)
{
<th>Macchina <Sorter ParamName="Machine" IsAsc="@sortAsc" CurrParam="@sortField" sortReq="SortRequested"></Sorter></th>
} *@
<th>Descrizione <Sorter ParamName="ProjDescription" IsAsc="@sortAsc" CurrParam="@sortField" sortReq="SortRequested"></Sorter></th>
@* <th>Filename <Sorter ParamName="BTLFileName" IsAsc="@sortAsc" CurrParam="@sortField" sortReq="SortRequested"></Sorter></th> *@
<th class="text-start">Inserito <Sorter ParamName="DtCreated" IsAsc="@sortAsc" CurrParam="@sortField" sortReq="SortRequested"></Sorter></th>
<th class="text-start">Aggiornato <Sorter ParamName="DtLastAction" IsAsc="@sortAsc" CurrParam="@sortField" sortReq="SortRequested"></Sorter></th>
<th class="text-start">Produzione <Sorter ParamName="DtStartProd" IsAsc="@sortAsc" CurrParam="@sortField" sortReq="SortRequested"></Sorter></th>
<th class="text-end">Prog % <Sorter ParamName="ProgPerc" IsAsc="@sortAsc" CurrParam="@sortField" sortReq="SortRequested"></Sorter></th>
<th class="text-end">Time <Sorter ParamName="ProcTimeEst" IsAsc="@sortAsc" CurrParam="@sortField" sortReq="SortRequested"></Sorter></th>
@* <th class="text-end"></th> *@
</tr>
</thead>
<tbody>
@foreach (var item in ListRecords)
{
string cssTime = item.ProcTimeReal > 0 ? "text-dark fw-bold" : "text-secondary";
<tr class="align-middle @CheckSel(item)">
<td>
<button class="btn btn-info btn-sm" @onclick="() => DoSelect(item)"><i class="fa-solid fa-search"></i></button>
@* <button class="btn btn-primary btn-sm" @onclick="() => DoEdit(item)"><i class="fa-solid fa-edit"></i></button> *@
</td>
<td>
<div title="@($"Ext.Id: {item.ProjExtId} | Cloud Id: {item.ProjDbId} | Rem DB Id: {item.ProjExtDbId}")">
<div class="fw-bold">
@($"{item.ProjDbId:000000}")
</div>
@if (item.PType == Enums.BWType.BEAM)
{
<span class="border border-primary rounded px-1">
<i class="fa-solid fa-lines-leaning"></i>
</span>
}
else
{
<span class="border border-info rounded px-1">
<i class="fa-solid fa-draw-polygon"></i>
</span>
}
@if (item.IsArchived)
{
<span class="ms-1 border border-danger rounded px-1" title="Archiviato">
<i class="fa-solid fa-book-open"></i>
</span>
}
</div>
</td>
@* @if (ProjDbId == 0)
{
<td>
<sup class="small">[@item.MachineID]</sup>
@item.Machine
</td>
} *@
<td>
@if (!string.IsNullOrEmpty(item.ProjDescription))
{
<div class="fw-bold">
@item.ProjDescription
</div>
}
else
{
<div class="">
<i>Undef</i>
</div>
}
<sub>@item.Machine | <i>@item.BTLFileName</i></sub>
</td>
<td class="text-start">
<div>
@($"{item.DtCreated:yyyy-MM-dd}")
</div>
<small>
@($"{item.DtCreated:ddd HH:mm:ss}")
</small>
</td>
<td class="text-start">
<div>
@($"{item.DtLastAction:yyyy-MM-dd}")
</div>
<small>
@($"{item.DtLastAction:ddd HH:mm:ss}")
</small>
</td>
<td class="text-end">
<div class="d-flex justify-content-between lh-1">
<div>
real:
</div>
<div>
@if (item.DtStartProd > DateTime.MinValue)
{
@($"{item.DtStartProd:yyyy-MM-dd}")
}
else
{
<span>n.a.</span>
}
</div>
</div>
<div>
<div class="d-flex justify-content-between lh-1 small">
<div>
prev:
</div>
<div>
@if (item.DtSchedule > DateTime.MinValue)
{
@($"{item.DtSchedule:yyyy-MM-dd}")
}
else
{
<span>n.a.</span>
}
</div>
</div>
</div>
</td>
<td class="text-end">
@if (item.ValAct > 0)
{
<ProgBar currVal="@item.ValAct" maxVal="@item.ValMax" yelLim="@(yLim*item.ValMax)" redLim="@(rLim*item.ValMax)"></ProgBar>
}
else
{
<ProgBar currVal="0" maxVal="1" singleLine="true"></ProgBar>
}
</td>
<td class="text-end">
@if (item.ProcTimeReal > 0)
{
<span class="fw-bold" title="Reale">@($"{item.ProcTimeReal:N1}") min</span>
}
else
{
<span class="text-secondary" title="Stima">@($"{item.ProcTimeEst:N1}") min</span>
}
</td>
</tr>
}
</tbody>
</table>
}
</div>
<div class="card-footer">
<EgwCoreLib.Razor.DataPager PageSize="@numRecord" currPage="@currPage" numRecordChanged="SetNumRec" numPageChanged="SetPage" totalCount="@totalCount" showLoading="@isLoading"></EgwCoreLib.Razor.DataPager>
</div>
</div>