283 lines
16 KiB
Plaintext
283 lines
16 KiB
Plaintext
<div class="row my-1 mx-0 rounded-3" style="background-color: #34495E; ">
|
|
<div class="col-12 px-1">
|
|
<CalendarMonth DtRif="@dtCurr" MainCss="table table-dark table-borderless" DateSelected="DisplayDate" MonthChanged="ReloadMonth" DateCheck="@DateCheck" DateCheckBlock="@DateCFF" SingleWeek="@showDetail" SelDayCss="selDate rounded-top p-2" HeadStyle="color: #E67E22"></CalendarMonth>
|
|
</div>
|
|
@if (showDetail)
|
|
{
|
|
<div class="col-12 px-1 bg-gradient py-2">
|
|
@if (EditRecord == null)
|
|
{
|
|
<div class="row">
|
|
@if (DayMinTot < 1440)
|
|
{
|
|
<div class="col-3 my-2 pe-1">
|
|
<button class="btn btn-success w-100" @onclick="() => AddNew(true)" title="Inserisci produzione"><i class="fa-solid fa-plus"></i> Prod</button>
|
|
</div>
|
|
<div class="col-3 my-2 px-1">
|
|
<button class="btn btn-warning w-100" @onclick="() => AddNew(false)" title="Inserisci Fermata"><i class="fa-solid fa-plus"></i> Fermata</button>
|
|
</div>
|
|
<div class="col-3 my-2 px-1">
|
|
<button class="btn btn-secondary w-100" @onclick="() => FixMissing()" title="Riempi periodi mancanti"><i class="fa-solid fa-fill-drip"></i> Spenta</button>
|
|
</div>
|
|
}
|
|
else
|
|
{
|
|
@if (DayImportRatio != 1)
|
|
{
|
|
<div class="col-3 my-2 pe-1">
|
|
@if (Math.Abs(DayMinTot * 60 - 1440 * 60) < 2)
|
|
{
|
|
<button class="btn btn-success w-100 px-0" @onclick="() => FreezeDay()" title="Conferma giornata"><i class="fa-solid fa-stamp"></i> Conferma</button>
|
|
}
|
|
else
|
|
{
|
|
<button class="btn btn-secondary w-100 px-0 disabled" title="Conferma non permessa per copertura errata gioranta"><i class="fa-solid fa-stamp"></i> Errore Durata</button>
|
|
}
|
|
</div>
|
|
<div class="col-6 my-2 px-1">
|
|
</div>
|
|
}
|
|
else
|
|
{
|
|
<div class="col-6 col-md-5 col-lg-3 my-2">
|
|
<div class="rounded-3 py-2 px-3 text-center bg-dark w-100 bg-gradient"><i class="fa-solid fa-square-check text-success"></i> Conferma OK</div>
|
|
</div>
|
|
<div class="col-3 col-md-4 col-lg-6 my-2 px-1">
|
|
</div>
|
|
}
|
|
}
|
|
<div class="col-3 my-2 ps-1">
|
|
<button class="btn btn-outline-light w-100 px-0" @onclick="@CloseDet"><i class="fa-solid fa-xmark"></i> Close</button>
|
|
</div>
|
|
</div>
|
|
@if (SeqStatus != null && SeqStatus.Count() > 0)
|
|
{
|
|
<div class="row">
|
|
<div class="col-12">
|
|
<div class="d-flex justify-content-between fs-4">
|
|
<div class="px-1">Prod: @($"{DayMinLav:N1}") min (@($"{DayOee:P1}"))</div>
|
|
<div class="px-1">Copert: @($"{DayMinTot:N0}") min</div>
|
|
</div>
|
|
</div>
|
|
<div class="col-12">
|
|
<div class="progress" style="min-height: 3.5rem;">
|
|
@foreach (var item in SeqStatus)
|
|
{
|
|
<div class="progress-bar @item.CssBlock" style="width: @PercWidth(item.ValuePerc);">
|
|
@if (item.HasError)
|
|
{
|
|
<div class="bg-danger text-warning" title="Error!!!">@item.Title</div>
|
|
}
|
|
else
|
|
{
|
|
<div>@item.Title</div>
|
|
}
|
|
<small>@($"{item.Value:N0}min")</small>
|
|
</div>
|
|
}
|
|
</div>
|
|
</div>
|
|
</div>
|
|
}
|
|
}
|
|
else
|
|
{
|
|
<div class="row mx-0 bg-dark bg-gradient">
|
|
<div class="col-6 mt-2">
|
|
<button class="btn btn-warning w-100" @onclick="() => DoCancel()"><i class="fa-solid fa-ban"></i> Cancel</button>
|
|
</div>
|
|
<div class="col-6 mt-2">
|
|
@if (EditRecord.IsWork && (!string.IsNullOrEmpty(EditRecord.CodArticolo) && EditRecord.PzBuoni > 0 && EditRecord.TCiclo > 0) || (!EditRecord.IsWork && EditRecord.MinProd > 0))
|
|
{
|
|
<button class="btn btn-success w-100" @onclick="() => DoSave()"><i class="fa-solid fa-floppy-disk"></i> Save</button>
|
|
}
|
|
else
|
|
{
|
|
<button class="btn btn-secondary disabled w-100"><i class="fa-solid fa-floppy-disk"></i> Save</button>
|
|
}
|
|
</div>
|
|
<div class="col-12 my-2">
|
|
@if (EditRecord.IsWork)
|
|
{
|
|
@if (doSearchArt)
|
|
{
|
|
<dialog class="modal fade show" tabindex="-1" style="display:block; background-color: rgba(10,10,10,.6);" aria-modal="true" role="dialog">
|
|
<div class="modal-dialog modal-xl">
|
|
<div class="modal-content p-2">
|
|
<div class="modal-title d-flex justify-content-between">
|
|
<div class="px-0">
|
|
<h3>Selezione Articoli da ricerca</h3>
|
|
</div>
|
|
<div class="px-0">
|
|
<button class="btn btn-outline-dark" @onclick="() => SearchArtToggle()"><i class="fa-solid fa-xmark"></i></button>
|
|
</div>
|
|
</div>
|
|
<div class="modal-body">
|
|
<SelectCodArt SearchMinChar="3" E_CodArt="SetArtSelected"></SelectCodArt>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</dialog>
|
|
}
|
|
<div class="row">
|
|
<div class="col-6 col-lg-3 my-2">
|
|
<div class="form-floating">
|
|
<input type="text" class="form-control" @bind="@EditRecord.KeyRichiesta"></input>
|
|
<label>Commessa</label>
|
|
</div>
|
|
</div>
|
|
<div class="col-6 col-lg-3 my-2">
|
|
<div class="input-group">
|
|
<div class="form-floating">
|
|
<input type="text" class="form-control" @bind="@EditRecord.CodArticolo"></input>
|
|
<label>Articolo</label>
|
|
</div>
|
|
<button class="btn btn-success" @onclick="() => SearchArtToggle()"><i class="fa-brands fa-searchengin fa-2x"></i></button>
|
|
</div>
|
|
</div>
|
|
<div class="col-4 col-lg-2 my-2 pe-0">
|
|
<div class="form-floating">
|
|
@if (enableEditTime)
|
|
{
|
|
<input type="time" class="form-control" @bind="@EditRecord.InizioStato"></input>
|
|
}
|
|
else
|
|
{
|
|
<input type="time" class="form-control disabled text-secondary" @bind="@EditRecord.InizioStato" disabled></input>
|
|
}
|
|
<label>Inizio</label>
|
|
</div>
|
|
</div>
|
|
<div class="col-4 col-lg-2 my-2">
|
|
<div class="form-floating">
|
|
<input type="number" class="form-control" @bind="@EditRecord.PzBuoni" step="1"></input>
|
|
<label>Pezzi</label>
|
|
</div>
|
|
</div>
|
|
<div class="col-4 col-lg-2 my-2 ps-0">
|
|
<div class="form-floating">
|
|
<select @bind="@EditRecord.TCiclo" class="form-select">
|
|
@foreach (var item in ListTCiclo)
|
|
{
|
|
<option value="@item.Key">@item.Value</option>
|
|
}
|
|
</select>
|
|
<label>T.Ciclo</label>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
}
|
|
else
|
|
{
|
|
<div class="row">
|
|
<div class="col-12">
|
|
<div class="form-floating">
|
|
<select @bind="@EditRecord.IdxTipoEv" class="form-select">
|
|
@foreach (var item in ListEvents)
|
|
{
|
|
<option value="@item.value">@item.label</option>
|
|
}
|
|
</select>
|
|
<label>Tipo Fermata</label>
|
|
</div>
|
|
</div>
|
|
<div class="col-6 my-2">
|
|
<div class="form-floating">
|
|
@if (enableEditTime)
|
|
{
|
|
<input type="time" class="form-control" @bind="@EditRecord.InizioStato"></input>
|
|
}
|
|
else
|
|
{
|
|
<input type="time" class="form-control disabled" @bind="@EditRecord.InizioStato" disabled></input>
|
|
}
|
|
<label>Inizio</label>
|
|
</div>
|
|
</div>
|
|
<div class="col-6 my-2">
|
|
<div class="form-floating">
|
|
<input type="number" id="minProd" name="minProd" class="form-control" @bind="@EditRecord.MinProd" step="0.1" placeholder="0.0" min="0" max="1440"></input>
|
|
<label>Durata (min)</label>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
}
|
|
</div>
|
|
</div>
|
|
}
|
|
</div>
|
|
<div class="col-12 px-1">
|
|
<table class="table table-dark table-sm table-striped">
|
|
<thead>
|
|
<tr>
|
|
<th></th>
|
|
<th>Macc</th>
|
|
<th>Stato</th>
|
|
<th>Art.</th>
|
|
<th>Ora</th>
|
|
<th class="text-end">Pezzi</th>
|
|
<th class="text-end">T.Ciclo</th>
|
|
<th class="text-end">Minuti</th>
|
|
<th class="text-end"></th>
|
|
</tr>
|
|
</thead>
|
|
<tbody>
|
|
@if (ListDay == null)
|
|
{
|
|
<tr>
|
|
<td colspan="9">
|
|
<div class="alert alert-info fs-6">Nessun dato disponibile</div>
|
|
</td>
|
|
</tr>
|
|
}
|
|
else
|
|
{
|
|
foreach (var item in ListDay)
|
|
{
|
|
<tr>
|
|
<td>
|
|
@if (item.Imported == null)
|
|
{
|
|
<button class="btn btn-sm btn-primary" @onclick="() => DoEdit(item)"><i class="fa-solid fa-pen"></i></button>
|
|
}
|
|
else
|
|
{
|
|
<button class="btn btn-sm btn-secondary disabled"><i class="fa-solid fa-pen"></i></button>
|
|
}
|
|
</td>
|
|
<td>@item.IdxMacchina</td>
|
|
<td>@(EvDescript(item.IdxTipoEv))</td>
|
|
<td>
|
|
<div>@item.CodArticolo</div>
|
|
@if (!string.IsNullOrEmpty(item.KeyRichiesta))
|
|
{
|
|
<small>@item.KeyRichiesta</small>
|
|
}
|
|
</td>
|
|
<td title="@($"{item.InizioStato:yyyy.MM.dd HH:mm:ss} --> {item.FineStato:yyyy.MM.dd HH:mm:ss}")">@($"{item.InizioStato:HH:mm}")</td>
|
|
<td class="text-end">@item.PzBuoni</td>
|
|
<td class="text-end">@($"{item.TCiclo:f2}")</td>
|
|
<td class="text-end">@($"{item.MinProd:f2}")</td>
|
|
<td class="text-end">
|
|
@if (item.Imported == null)
|
|
{
|
|
<button class="btn btn-sm btn-danger" @onclick="() => DoDelete(item)"><i class="fa-solid fa-trash-can"></i></button>
|
|
}
|
|
else
|
|
{
|
|
<button class="btn btn-sm btn-secondary disabled"><i class="fa-solid fa-trash-can"></i></button>
|
|
|
|
}
|
|
</td>
|
|
</tr>
|
|
}
|
|
}
|
|
</tbody>
|
|
</table>
|
|
</div>
|
|
}
|
|
</div>
|
|
@if (showProgress)
|
|
{
|
|
<ProgressDisplay RefreshInterval="100" Title="@progressTitle" MaxVal="100" CurrVal="@currVal" NextVal="@nextVal" ExpTimeMSec="@expTimeMsec" DisplaySize="ProgressDisplay.ModalSize.Medium"></ProgressDisplay>
|
|
} |