272 lines
17 KiB
Plaintext
272 lines
17 KiB
Plaintext
@using MP.SPEC.Components
|
|
@using MP.SPEC.Data
|
|
|
|
@if (ListRecords == null)
|
|
{
|
|
<LoadingData></LoadingData>
|
|
}
|
|
else if (totalCount == 0)
|
|
{
|
|
<div class="alert alert-warning text-center display-4">Nessun record trovato</div>
|
|
}
|
|
else
|
|
{
|
|
<div class="row">
|
|
@if (currRecord != null && !showStats && isCurrOdl)
|
|
{
|
|
<div class="col-6 col-lg-8">
|
|
<button @onclick="() => forceSyncDb()" class="btn btn-success btn-sm btn-">Forza sync dati ODL <i class="bi bi-fast-forward-circle"></i></button>
|
|
</div>
|
|
<div class="col-6 col-lg-4 text-end">
|
|
<button @onclick="() => chiudiOdl()" class="btn btn-danger btn-sm btn-">Registra chiusura ODL <i class="far fa-stop-circle"></i></button>
|
|
</div>
|
|
}
|
|
<div class="col-12">
|
|
<table class="table table-sm table-striped">
|
|
<thead>
|
|
<tr>
|
|
<th>
|
|
@if (currRecord != null)
|
|
{
|
|
<button @onclick="() => resetSel()" class="btn btn-primary btn-sm"><i class="bi bi-arrow-counterclockwise"></i></button>
|
|
}
|
|
</th>
|
|
<th>Cod</th>
|
|
<th><i class="fa-solid fa-file"></i> Articolo</th>
|
|
<th><i class="fa-solid fa-screwdriver-wrench"></i> Fase</th>
|
|
<th><i class="fa-solid fa-hard-drive"></i> Macchina</th>
|
|
<th><i class="fa-solid fa-circle-info"></i> Info ciclo</th>
|
|
<th><i class="fa-solid fa-calendar-day"></i> Periodo</th>
|
|
<th title="Durata in ore:min"><i class="fa-solid fa-clock"></i> Durata</th>
|
|
</tr>
|
|
</thead>
|
|
<tbody>
|
|
@foreach (var record in ListRecords)
|
|
{
|
|
<tr class="@checkSelect(@record.IdxOdl)">
|
|
<td>
|
|
@if (isCurrOdl)
|
|
{
|
|
<button class="btn btn-primary btn-sm" @onclick="() => selRecord(record)"><i class="fa-solid fa-magnifying-glass"></i></button>
|
|
}
|
|
else
|
|
{
|
|
<button class="btn btn-secondary btn-sm disabled"><i class="fa-solid fa-magnifying-glass"></i></button>
|
|
}
|
|
</td>
|
|
<td>
|
|
<div class="small"><b>ODL</b> @($"{record.IdxOdl:000000}")</div>
|
|
<div class="small"><b>PODL</b> @($"{getPodl(record.IdxOdl):000000}")</div>
|
|
</td>
|
|
<td>
|
|
@record.CodArticolo
|
|
<div class="small textConsensed text-secondary">@record.ArticoloNav.DescArticolo</div>
|
|
</td>
|
|
<td>
|
|
<div>
|
|
@tradFase(record.KeyRichiesta)
|
|
</div>
|
|
@if (record.Note != "")
|
|
{
|
|
<div class="small textConsensed text-secondary badge text-bg-light border border-secondary rounded">
|
|
<b class="text-dark"></b> <span class="text-wrap text-start"> @record.Note </span>
|
|
</div>
|
|
}
|
|
</td>
|
|
|
|
<td>
|
|
@record.IdxMacchina
|
|
<div class="small textConsensed text-secondary">@record.MachineNav.Descrizione</div>
|
|
</td>
|
|
<td>
|
|
<div class="small textConsensed"><b>N° pezzi:</b> @record.NumPezzi</div>
|
|
<div class="small textConsensed"><b>T. Ciclo:</b> @record.Tcassegnato.ToString("N3")</div>
|
|
|
|
</td>
|
|
<td>
|
|
<div class="small d-flex justify-content-between">
|
|
<div>
|
|
<div><b>@($"{@record.DataInizio:yyyy/MM/dd}")</b></div>
|
|
<div>@($"{@record.DataInizio:ddd HH:mm:ss}")</div>
|
|
</div>
|
|
<div class="p-0">
|
|
<i class="fa-solid fa-angles-right"></i>
|
|
</div>
|
|
<div>
|
|
@if (@record.DataFine != null)
|
|
{
|
|
<div><b>@($"{@record.DataFine:yyyy/MM/dd}")</b></div>
|
|
<div>@($"{@record.DataFine:ddd HH:mm:ss}")</div>
|
|
}
|
|
else
|
|
{
|
|
<div class="text-secondary">
|
|
<div><b>@($"{DateTime.Now:yyyy/MM/dd}")</b></div>
|
|
<div>@($"{DateTime.Now:ddd HH:mm:ss}")</div>
|
|
</div>
|
|
}
|
|
</div>
|
|
</div>
|
|
</td>
|
|
<td>
|
|
<div>
|
|
<b>@record.DurataMinuti</b>
|
|
</div>
|
|
<div>
|
|
<button class="btn btn-sm btn-primary py-0" type="button" @onclick="() => selectStatRecord(record)" data-bs-toggle="modal" data-bs-target="#myModal" title="Mostra statistiche"><i class="fa-solid fa-chart-pie"></i></button>
|
|
</div>
|
|
<!-- Modal -->
|
|
</td>
|
|
</tr>
|
|
}
|
|
</tbody>
|
|
</table>
|
|
|
|
|
|
<div class="modal fade" id="myModal" tabindex="-1" aria-labelledby="staticBackdropLabel" aria-hidden="true">
|
|
<div class="modal-dialog modal-dialog-centered modal-xl">
|
|
<div class="modal-content">
|
|
<div class="modal-header bg-primary col-12">
|
|
@if (statRecord != null)
|
|
{
|
|
<div class="col-3">
|
|
<div class="modal-title fs-2" id="staticBackdropLabel"><b>ODL @($"{statRecord.IdxOdl:000000}")</b></div>
|
|
<div class="small text-light">PODL @($"{getPodl(statRecord.IdxOdl):000000}")</div>
|
|
</div>
|
|
<div class="col-6 fs-5">
|
|
<b>@statRecord.CodArticolo</b>
|
|
<div class="small textConsensed text-light">@statRecord.ArticoloNav.DescArticolo</div>
|
|
</div>
|
|
<div class="col-2 fs-5">
|
|
<b>@statRecord.IdxMacchina</b>
|
|
<div class="small textConsensed text-light">@statRecord.MachineNav.Descrizione</div>
|
|
</div>
|
|
}
|
|
<div class="col-1 text-end">
|
|
<button type="button" class="btn btn-close" data-bs-dismiss="modal" aria-label="Close"></button>
|
|
</div>
|
|
</div>
|
|
<div class="modal-body col-12">
|
|
@if (statRecord != null && showStats)
|
|
{
|
|
<div class="d-flex justify-content-between">
|
|
<div class="col-8">
|
|
<div>
|
|
<table class="table">
|
|
<tbody>
|
|
<tr>
|
|
<td style="width: 270px">
|
|
<div class="small textConsensed"><b>N° pezzi:</b> @statRecord.NumPezzi</div>
|
|
<div class="small textConsensed"><b>T. Ciclo:</b> @statRecord.Tcassegnato.ToString("N3")</div>
|
|
</td>
|
|
<td style="width: 300px">
|
|
<div class="small d-flex justify-content-between">
|
|
<div>
|
|
<div><b>@($"{@statRecord.DataInizio:yyyy/MM/dd}")</b></div>
|
|
<div>@($"{@statRecord.DataInizio:ddd HH:mm:ss}")</div>
|
|
</div>
|
|
<div class="p-0">
|
|
<i class="fa-solid fa-angles-right"></i>
|
|
</div>
|
|
<div>
|
|
@if (@statRecord.DataFine != null)
|
|
{
|
|
<div><b>@($"{@statRecord.DataFine:yyyy/MM/dd}")</b></div>
|
|
<div>@($"{@statRecord.DataFine:ddd HH:mm:ss}")</div>
|
|
}
|
|
else
|
|
{
|
|
<div class="text-secondary">
|
|
<div><b>@($"{DateTime.Now:yyyy/MM/dd}")</b></div>
|
|
<div>@($"{DateTime.Now:ddd HH:mm:ss}")</div>
|
|
</div>
|
|
}
|
|
</div>
|
|
</div>
|
|
</td>
|
|
</tr>
|
|
</tbody>
|
|
</table>
|
|
</div>
|
|
<div>
|
|
<table class="table">
|
|
<tbody>
|
|
<tr>
|
|
<td>
|
|
<div>
|
|
@tradFase(statRecord.KeyRichiesta)
|
|
</div>
|
|
@if (statRecord.Note != "")
|
|
{
|
|
<div class="small textConsensed text-secondary badge text-bg-light border border-secondary rounded">
|
|
<b class="text-dark"></b> <span class="text-wrap text-start"> @statRecord.Note </span>
|
|
</div>
|
|
}
|
|
</td>
|
|
<td>
|
|
<div class="input-group input-group-sm">
|
|
<div class="input-group-text">
|
|
<span class="me-1 @leftStringCSS">Tutti gli Stati</span>
|
|
<span class="form-check form-check-sm form-switch py-1" title="Mostra/Nascondi macchina spenta">
|
|
<input class="form-check-input" type="checkbox" id="switchSpenta" @onchange="() => toggleSpenta()" value="@hideSpenta">
|
|
</span>
|
|
<span class="@rightStringCSS">Nascondi Spenta</span>
|
|
</div>
|
|
</div>
|
|
</td>
|
|
</tr>
|
|
</tbody>
|
|
</table>
|
|
</div>
|
|
<div>
|
|
@if (statRecord != null)
|
|
{
|
|
@if (ListOdlStatsAct != null)
|
|
{
|
|
@foreach (var stat in ListOdlStatsAct)
|
|
{
|
|
<div class="p-1">
|
|
<div class="d-flex justify-content-between">
|
|
<div class="text-uppercase">
|
|
@stat.Descrizione
|
|
</div>
|
|
<div>
|
|
<b>@(formDurata(stat.TotDurata))</b>
|
|
</div>
|
|
|
|
</div>
|
|
<div class="progress">
|
|
<div class="progress-bar @colorChanger(@stat.Css)" role="progressbar" aria-valuenow="0" aria-valuemin="0" style="width: @Math.Round(calcolaPerc(stat.TotDurata),0)%; background-color:@pbStyle(@stat.Css);" aria-valuemax="100">@($"{calcolaPerc(stat.TotDurata):N1}%")</div>
|
|
</div>
|
|
</div>
|
|
|
|
}
|
|
}
|
|
}
|
|
</div>
|
|
</div>
|
|
<div class="col-4 dcContainer">
|
|
@if (statRecord != null && ListOdlStats != null)
|
|
{
|
|
<div class="dcBox">
|
|
<ODLPlot SelectedOdl="@statRecord.IdxOdl" hideSpenta="@hideSpenta"></ODLPlot>
|
|
</div>
|
|
<div class="dcBox dcOverlay d-flex">
|
|
<div class="align-self-center text-center w-100">
|
|
<b class="fs-3">@durataFilt</b>
|
|
@*<b class="fs-3">@statRecord.DurataMinuti</b>*@
|
|
</div>
|
|
</div>
|
|
}
|
|
</div>
|
|
</div>
|
|
}
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
}
|
|
|