Merge branch 'develop' of https://gitlab.steamware.net/etis/lux into develop
This commit is contained in:
@@ -1,12 +1,16 @@
|
||||
<div class="d-flex w-100 align-items-center">
|
||||
<div class="col-3 px-0 text-start">
|
||||
<a href="https://www.egalware.com" target="_blank">About Egalware</a>
|
||||
@inherits BaseComp
|
||||
|
||||
<div class="d-flex w-100 align-items-center px-3 py-2">
|
||||
<div class="flex-grow-1">
|
||||
<h3 class="mb-0">
|
||||
<span class="text-start fw-bold">@title</span>
|
||||
</h3>
|
||||
</div>
|
||||
<div class="col-8 px-0">
|
||||
</div>
|
||||
<div class="col-1 px-2 text-end">
|
||||
|
||||
<div class="d-flex align-items-center gap-2">
|
||||
<i class="fa-solid fa-user-circle fa-lg text-dark"></i>
|
||||
<span class="text-dark fw-medium pe-3">User</span>
|
||||
<select class="form-select form-select-sm" @bind="CurrLang" @bind:after="() => SaveLang()">
|
||||
@* <option disabled>Sel →</option> *@
|
||||
<option value="IT">IT</option>
|
||||
<option value="EN">EN</option>
|
||||
</select>
|
||||
|
||||
@@ -5,11 +5,45 @@ namespace Lux.UI.Components.Compo.Common
|
||||
[Parameter]
|
||||
public string CurrLang { get; set; } = null!;
|
||||
|
||||
|
||||
|
||||
[Parameter]
|
||||
public EventCallback<string> EC_LangSelected { get; set; }
|
||||
|
||||
[Parameter]
|
||||
public string TitlePage { get; set; } = null!;
|
||||
|
||||
|
||||
private string title
|
||||
{
|
||||
get
|
||||
{
|
||||
string currentPageName = TitlePage switch
|
||||
{
|
||||
"Home" => @Traduci("navMan_home"),
|
||||
"" => @Traduci("navMan_home"),
|
||||
"Items" => @Traduci("navMan_artAcquisto"),
|
||||
"SellItems" => @Traduci("navMan_artVendita"),
|
||||
"Resources" => @Traduci("navMan_risorse"),
|
||||
"JobRoute" => @Traduci("navMan_cicli"),
|
||||
"Customer" => @Traduci("navMan_clienti"),
|
||||
"Dealer" => @Traduci("navMan_venditori"),
|
||||
"Template" => @Traduci("navMan_cataloghi"),
|
||||
"Offers" => @Traduci("navMan_offerte"),
|
||||
"Orders" => @Traduci("navMan_ordini"),
|
||||
"BuyOrder" => @Traduci("navMan_ordiniFornitore"),
|
||||
"WorkLoadBalance" => @Traduci("navMan_caricoMacchine"),
|
||||
"ProdPlanner" => @Traduci("navMan_pianificazione"),
|
||||
"GenList" => @Traduci("navMan_anagrafiche"),
|
||||
"ConfList" => @Traduci("navMan_config01"),
|
||||
"ConfListNew" => @Traduci("navMan_config02"),
|
||||
"stats" => @Traduci("navMan_stats"),
|
||||
"OffStats" => @Traduci("navMan_offerStats"),
|
||||
"vocabulary" => "Vocabulary",
|
||||
_ => "Pagina non definita"
|
||||
};
|
||||
return currentPageName;
|
||||
}
|
||||
}
|
||||
|
||||
private Task SaveLang()
|
||||
{
|
||||
return EC_LangSelected.InvokeAsync(CurrLang);
|
||||
|
||||
@@ -1,4 +1,6 @@
|
||||
@if (isLoading)
|
||||
@inherits BaseComp
|
||||
|
||||
@if (isLoading)
|
||||
{
|
||||
<LoadingData></LoadingData>
|
||||
}
|
||||
@@ -10,11 +12,11 @@ else
|
||||
<div class="col-2 text-end">
|
||||
@if (massEdit)
|
||||
{
|
||||
<button class="btn btn-sm btn-warning" @onclick="@ButtonMassEdit">MassEdit <i class="fa-solid fa-ban"></i></button>
|
||||
<button class="btn btn-sm btn-warning" @onclick="@ButtonMassEdit">@Traduci("modMassiva") <i class="fa-solid fa-ban"></i></button>
|
||||
}
|
||||
else
|
||||
{
|
||||
<button class="btn btn-sm btn-primary" @onclick="@ButtonMassEdit">MassEdit <i class="fa-solid fa-pen"></i></button>
|
||||
<button class="btn btn-sm btn-primary" @onclick="@ButtonMassEdit">@Traduci("modMassiva") <i class="fa-solid fa-pen"></i></button>
|
||||
}
|
||||
</div>
|
||||
</div>
|
||||
@@ -24,41 +26,41 @@ else
|
||||
<div class="col-md-2">
|
||||
<div class="form-floating">
|
||||
<input type="text" class="form-control form-control-lg text-end" @bind="@defUM">
|
||||
<label class="small bg-opacity-50">UM</label>
|
||||
<label class="small bg-opacity-50">@Traduci("unitaMisura")</label>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-md-2">
|
||||
<div class="form-floating">
|
||||
<InputDouble CssClass="form-control form-control-lg text-end" Decimals="2" @bind-Value="@totCost"></InputDouble>
|
||||
<label class="small bg-opacity-50">Tot. Cost</label>
|
||||
<label class="small bg-opacity-50">@Traduci("bom_totCosto")</label>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-md-2">
|
||||
<div class="form-floating">
|
||||
<InputPercent CssClass="form-control form-control-lg text-end" ForceInvariantParsing="true" Decimals="1" @bind-Value="@defMargin"></InputPercent>
|
||||
<label class="small bg-opacity-50">Margin</label>
|
||||
<label class="small bg-opacity-50">@Traduci("margine")</label>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-md-2">
|
||||
<div class="form-floating">
|
||||
<input type="number" class="form-control form-control-lg text-end" @bind="@defQtyMax">
|
||||
<label class="small bg-opacity-50">Qty Max</label>
|
||||
<label class="small bg-opacity-50">@Traduci("articoli_qtyMax")</label>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-md-2">
|
||||
<div class="form-floating">
|
||||
<input type="number" class="form-control form-control-lg text-end" @bind="@defRound">
|
||||
<label class="small bg-opacity-50">Round</label>
|
||||
<label class="small bg-opacity-50">@Traduci("bom_arrotondamento")</label>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-md-2">
|
||||
@if (showMassEditSave)
|
||||
{
|
||||
<button class="btn btn-lg btn-success w-100" @onclick="ForceItemPrice">Save <i class="fa-solid fa-cloud-arrow-up"></i></button>
|
||||
<button class="btn btn-lg btn-success w-100" @onclick="ForceItemPrice">@Traduci("salva") <i class="fa-solid fa-cloud-arrow-up"></i></button>
|
||||
}
|
||||
else
|
||||
{
|
||||
<button class="btn btn-lg btn-secondary w-100" disabled>Save <i class="fa-solid fa-cloud-arrow-up"></i></button>
|
||||
<button class="btn btn-lg btn-secondary w-100" disabled>@Traduci("salva") <i class="fa-solid fa-cloud-arrow-up"></i></button>
|
||||
}
|
||||
</div>
|
||||
</div>
|
||||
@@ -71,22 +73,22 @@ else
|
||||
@if (massEdit)
|
||||
{
|
||||
<div class="form-check form-switch">
|
||||
<input class="form-check-input" type="checkbox" role="switch" title="Seleziona/Deseleziona tutti" @bind="SelAll">
|
||||
<input class="form-check-input" type="checkbox" role="switch" title="@Traduci("bom_selDeselTutti")" @bind="SelAll">
|
||||
</div>
|
||||
}
|
||||
</td>
|
||||
<td class="text-center"><i class="fa-solid fa-repeat"></i></td>
|
||||
<td>Class</td>
|
||||
<td>Descrizione</td>
|
||||
<td>@Traduci("bom_classe")</td>
|
||||
<td>@Traduci("descrizione")</td>
|
||||
@* <td>Cod</td> *@
|
||||
@if (ShowVolume)
|
||||
{
|
||||
<td class="text-end">Vol</td>
|
||||
<td class="text-end">@Traduci("bom_vol")</td>
|
||||
}
|
||||
<td class="text-end"># Item</td>
|
||||
<td class="text-end"># @Traduci("bom_art")</td>
|
||||
<td class="text-end">Mat. Qty</td>
|
||||
<td class="text-end">UnitPrice</td>
|
||||
<td class="text-end">Importo</td>
|
||||
<td class="text-end">@Traduci("bom_prezzoUnitario")</td>
|
||||
<td class="text-end">@Traduci("importo")</td>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
@@ -98,14 +100,14 @@ else
|
||||
<td>@(item.numRow)</td>
|
||||
<td colspan="3">
|
||||
<div class="input-group">
|
||||
<button class="btn btn-sm btn-warning" title="Effettua Cambio" @onclick="() => DoCancel()"><i class="fa-solid fa-ban"></i></button>
|
||||
<button class="btn btn-sm btn-warning" title="@Traduci("elimina")" @onclick="() => DoCancel()"><i class="fa-solid fa-ban"></i></button>
|
||||
<select @bind="@EditRecord.ItemID" class="form-select">
|
||||
@foreach (var itemAlt in ListItemAlt)
|
||||
{
|
||||
<option value="@itemAlt.ItemID">@itemAlt.Description | @($"{itemAlt.Cost:C2}")</option>
|
||||
}
|
||||
</select>
|
||||
<button class="btn btn-sm btn-success" title="Effettua Cambio" @onclick="() => DoSave()"><i class="fa-solid fa-check"></i></button>
|
||||
<button class="btn btn-sm btn-success" title="@Traduci("salva")" @onclick="() => DoSave()"><i class="fa-solid fa-check"></i></button>
|
||||
</div>
|
||||
</td>
|
||||
@if (ShowVolume)
|
||||
@@ -126,14 +128,14 @@ else
|
||||
<span>@item.numRow</span>
|
||||
@if (massEdit)
|
||||
{
|
||||
<input class="form-check-input" type="checkbox" role="switch" title="Seleziona per Mass Update" @bind="item.isSelected">
|
||||
<input class="form-check-input" type="checkbox" role="switch" title="@Traduci("bom_selAggiornaMassivo")" @bind="item.isSelected">
|
||||
}
|
||||
</div>
|
||||
</td>
|
||||
<td class="text-center">
|
||||
@if (item.Price == 0)
|
||||
{
|
||||
<button class="btn btn-sm btn-primary" title="Effettua Cambio" @onclick="() => DoEdit(item)"><i class="fa-solid fa-arrow-right-arrow-left"></i></button>
|
||||
<button class="btn btn-sm btn-primary" title="@Traduci("modifica")" @onclick="() => DoEdit(item)"><i class="fa-solid fa-arrow-right-arrow-left"></i></button>
|
||||
}
|
||||
</td>
|
||||
<td>@item.ClassCode</td>
|
||||
|
||||
@@ -22,7 +22,7 @@
|
||||
<div class="input-group">
|
||||
<label class="input-group-text">@Traduci("gruppo")</label>
|
||||
<select class="form-select" @bind="SelectCodGroup">
|
||||
<option value="" selected>--- Tutti ---</option>
|
||||
<option value="" selected>--- @Traduci("tutti") ---</option>
|
||||
@foreach(var group in listGroup)
|
||||
{
|
||||
<option value="@group">@group</option>
|
||||
@@ -32,16 +32,29 @@
|
||||
</div>
|
||||
</div>
|
||||
}
|
||||
<div class="row">
|
||||
@foreach (var item in ListRepFiles)
|
||||
{
|
||||
<div class="col text-center">
|
||||
<a href="@(DoPrint(item))" target="_blank" class="btn btn-primary w-100 m-1">
|
||||
@Descrizione(item)
|
||||
@if (!string.IsNullOrEmpty(SelectCodGroup))
|
||||
{
|
||||
<div class="row">
|
||||
<div class="d-flex col-4 align-items-center text-center">
|
||||
<a href="@(DoPrint("MaterialReqOrd_01"))" target="_blank" class="btn btn-primary m-1">
|
||||
Lista materiale selezionato
|
||||
</a>
|
||||
</div>
|
||||
}
|
||||
</div>
|
||||
</div>
|
||||
}
|
||||
else
|
||||
{
|
||||
<div class="row">
|
||||
@foreach (var item in ListRepFiles)
|
||||
{
|
||||
<div class="col text-center">
|
||||
<a href="@(DoPrint(item))" target="_blank" class="btn btn-primary w-100 m-1">
|
||||
@Descrizione(item)
|
||||
</a>
|
||||
</div>
|
||||
}
|
||||
</div>
|
||||
}
|
||||
}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -9,7 +9,7 @@
|
||||
<div class="px-0">
|
||||
<div class="px-0 d-flex justify-content-between">
|
||||
<div class="px-1">
|
||||
<div class="input-group input-group-sm" title="ricerca">
|
||||
<div class="input-group input-group-sm" title="@Traduci("ricerca")">
|
||||
<span class="input-group-text"><i class="fas fa-search"></i></span>
|
||||
<input type="text" class="form-control" @bind="@SearchVal">
|
||||
<button class="btn @btnResetCss" @onclick="ResetSearch"><i class="fas fa-ban"></i></button>
|
||||
@@ -37,7 +37,7 @@
|
||||
<thead>
|
||||
<tr>
|
||||
<th class="col-1 text-nowrap text-center">
|
||||
<button class="btn btn-sm btn-primary" title="Reset selezione" @onclick="DoReset"><i class="fa-solid fa-arrow-rotate-right"></i></button>
|
||||
<button class="btn btn-sm btn-primary" title="@Traduci("reset")" @onclick="DoReset"><i class="fa-solid fa-arrow-rotate-right"></i></button>
|
||||
</th>
|
||||
@* <th>ID</th> *@
|
||||
<th class="col-1 text-nowrap">@Traduci("cod")</th>
|
||||
|
||||
@@ -8,13 +8,13 @@
|
||||
<h5>@Traduci("config_tipiHardware")</h5>
|
||||
</div>
|
||||
<div class="px-2">
|
||||
<button class="btn btn-sm btn-primary" title="Richiesta Update" @onclick="DoReqUpdate"><i class="fa-solid fa-arrow-rotate-right"></i></button>
|
||||
<button class="btn btn-sm btn-primary" title="@Traduci("aggiorna")" @onclick="DoReqUpdate"><i class="fa-solid fa-arrow-rotate-right"></i></button>
|
||||
</div>
|
||||
</div>
|
||||
<div class="px-0">
|
||||
<div class="px-0 d-flex justify-content-between">
|
||||
<div class="px-1">
|
||||
<div class="input-group input-group-sm" title="ricerca">
|
||||
<div class="input-group input-group-sm" title="@Traduci("ricerca")">
|
||||
<span class="input-group-text"><i class="fas fa-search"></i></span>
|
||||
<input type="text" class="form-control" @bind="@SearchVal">
|
||||
<button class="btn @btnResetCss" @onclick="ResetSearch"><i class="fas fa-ban"></i></button>
|
||||
|
||||
@@ -8,16 +8,16 @@
|
||||
<h5>@Traduci("config_tipiProfilo")</h5>
|
||||
</div>
|
||||
<div class="px-2">
|
||||
<button class="btn btn-sm btn-primary" title="Richiesta Update Profili" @onclick="DoReqUpdate">@Traduci("profilo") <i class="fa-solid fa-arrow-rotate-right"></i></button>
|
||||
<button class="btn btn-sm btn-primary" title="@Traduci("aggiorna") @Traduci("config_tipiProfilo")" @onclick="DoReqUpdate">@Traduci("profilo") <i class="fa-solid fa-arrow-rotate-right"></i></button>
|
||||
</div>
|
||||
<div class="px-2">
|
||||
<button class="btn btn-sm @cssBtnThresh" title="Richiesta Update Soglie Profili" @onclick="DoReqUpdateThresh">@Traduci("config_soglie") <i class="fa-solid fa-arrow-rotate-right"></i></button>
|
||||
<button class="btn btn-sm @cssBtnThresh" title="@Traduci("aggiorna") @Traduci("config_soglie")" @onclick="DoReqUpdateThresh">@Traduci("config_soglie") <i class="fa-solid fa-arrow-rotate-right"></i></button>
|
||||
</div>
|
||||
</div>
|
||||
<div class="px-0">
|
||||
<div class="px-0 d-flex justify-content-between">
|
||||
<div class="px-1">
|
||||
<div class="input-group input-group-sm" title="ricerca">
|
||||
<div class="input-group input-group-sm" title="@Traduci("ricerca")">
|
||||
<span class="input-group-text"><i class="fas fa-search"></i></span>
|
||||
<input type="text" class="form-control" @bind="@SearchVal">
|
||||
<button class="btn @btnResetCss" @onclick="ResetSearch"><i class="fas fa-ban"></i></button>
|
||||
@@ -45,7 +45,7 @@
|
||||
<thead>
|
||||
<tr>
|
||||
<th class="text-nowrap text-center">
|
||||
<button class="btn btn-sm btn-primary" title="Reset selezione" @onclick="DoReset"><i class="fa-solid fa-arrow-rotate-right"></i></button>
|
||||
<button class="btn btn-sm btn-primary" title="@Traduci("reset")" @onclick="DoReset"><i class="fa-solid fa-arrow-rotate-right"></i></button>
|
||||
</th>
|
||||
<th class="text-nowrap">@Traduci("cod")</th>
|
||||
<th class="text-nowrap">@Traduci("descrizione")</th>
|
||||
@@ -62,11 +62,11 @@
|
||||
<td class="text-nowrap text-center">
|
||||
@if (EditRecord != null && EditRecord.Code == item.Code)
|
||||
{
|
||||
<button class="btn btn-sm btn-success" @onclick="() => DoSave(item)"><i class="fa-solid fa-floppy-disk"></i></button>
|
||||
<button class="btn btn-sm btn-success" title="@Traduci("salva")" @onclick="() => DoSave(item)"><i class="fa-solid fa-floppy-disk"></i></button>
|
||||
}
|
||||
else
|
||||
{
|
||||
<button class="btn btn-sm btn-info" @onclick="() => DoEdit(item)"><i class="fa-solid fa-pencil"></i></button>
|
||||
<button class="btn btn-sm btn-info" title="@Traduci("modifica")" @onclick="() => DoEdit(item)"><i class="fa-solid fa-pencil"></i></button>
|
||||
}
|
||||
</td>
|
||||
<td class="">@item.Code</td>
|
||||
@@ -80,18 +80,18 @@
|
||||
@item.Description
|
||||
}
|
||||
</td>
|
||||
<td class="text-end"><button class="btn btn-sm btn-info" @onclick="() => ShowThresh(item)">@item.ThresholdList.Count <i class="fa-solid fa-up-right-from-square"></i></button></td>
|
||||
<td class="text-end"><button class="btn btn-sm btn-info" @onclick="() => ShowData(item)">@item.ProfileDataDict.Count <i class="fa-solid fa-up-right-from-square"></i></button></td>
|
||||
<td class="text-end"><button class="btn btn-sm btn-info" title="@Traduci("apri")" @onclick="() => ShowThresh(item)">@item.ThresholdList.Count <i class="fa-solid fa-up-right-from-square"></i></button></td>
|
||||
<td class="text-end"><button class="btn btn-sm btn-info" title="@Traduci("apri")" @onclick="() => ShowData(item)">@item.ProfileDataDict.Count <i class="fa-solid fa-up-right-from-square"></i></button></td>
|
||||
<td>
|
||||
@if (EditRecord != null && EditRecord.Code == item.Code)
|
||||
{
|
||||
<button class="btn btn-sm btn-warning" @onclick="DoReset"><i class="fa-solid fa-ban"></i></button>
|
||||
<button class="btn btn-sm btn-warning" title="@Traduci("annulla")" @onclick="DoReset"><i class="fa-solid fa-ban"></i></button>
|
||||
}
|
||||
else
|
||||
{
|
||||
if(item.ThresholdList.Count==0 && item.ProfileDataDict.Count==0)
|
||||
{
|
||||
<button class="btn btn-sm btn-danger" @onclick="() => DoDelete(item)"><i class="fa-solid fa-trash"></i></button>
|
||||
<button class="btn btn-sm btn-danger" title="@Traduci("elimina")" @onclick="() => DoDelete(item)"><i class="fa-solid fa-trash"></i></button>
|
||||
}
|
||||
@* else
|
||||
{
|
||||
|
||||
@@ -9,7 +9,7 @@
|
||||
<div class="px-0">
|
||||
<div class="px-0 d-flex justify-content-between">
|
||||
<div class="px-1">
|
||||
<div class="input-group input-group-sm" title="ricerca">
|
||||
<div class="input-group input-group-sm" title="@Traduci("ricerca")">
|
||||
<span class="input-group-text"><i class="fas fa-search"></i></span>
|
||||
<input type="text" class="form-control" @bind="@SearchVal">
|
||||
<button class="btn @btnResetCss" @onclick="ResetSearch"><i class="fas fa-ban"></i></button>
|
||||
|
||||
@@ -10,11 +10,11 @@ else if (totalCount == 0)
|
||||
}
|
||||
else
|
||||
{
|
||||
<table class="table table-sm table-striped">
|
||||
<table class="table align-middle table-sm table-striped">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>
|
||||
<button class="btn btn-sm btn-primary" title="Reset selezione" @onclick="DoReset"><i class="fa-solid fa-arrow-rotate-right"></i></button>
|
||||
<button class="btn btn-sm btn-primary" title="@Traduci("reset")" @onclick="DoReset"><i class="fa-solid fa-arrow-rotate-right"></i></button>
|
||||
</th>
|
||||
<th class="text-start">@Traduci("nome")</th>
|
||||
<th class="text-start">@Traduci("contatti_cognome")</th>
|
||||
@@ -67,7 +67,7 @@ else
|
||||
{
|
||||
<tfoot>
|
||||
<tr>
|
||||
<td colspan="15">
|
||||
<td colspan="8">
|
||||
<EgwCoreLib.Razor.DataPager currPage="@currPage" PageSize="@numRecord" totalCount="@totalCount" numPageChanged="SavePage" numRecordChanged="SaveNumRec"></EgwCoreLib.Razor.DataPager>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@@ -14,7 +14,7 @@ else
|
||||
<thead>
|
||||
<tr>
|
||||
<th>
|
||||
<button class="btn btn-sm btn-primary" title="Reset selezione" @onclick="DoReset"><i class="fa-solid fa-arrow-rotate-right"></i></button>
|
||||
<button class="btn btn-sm btn-primary" title="@Traduci("reset")" @onclick="DoReset"><i class="fa-solid fa-arrow-rotate-right"></i></button>
|
||||
</th>
|
||||
<th class="text-start">@Traduci("nome")</th>
|
||||
<th class="text-start">@Traduci("contatti_cognome")</th>
|
||||
|
||||
@@ -1,4 +1,6 @@
|
||||
<div class="card">
|
||||
@inherits BaseComp
|
||||
|
||||
<div class="card">
|
||||
<div class="card-header">
|
||||
<div class="d-flex justify-content-between">
|
||||
<div class="px-0 fs-3">
|
||||
@@ -10,7 +12,7 @@
|
||||
<div class="input-group">
|
||||
<InputFile class="form-control" OnChange="UploadFile" style="min-width: 24rem;" />
|
||||
</div>
|
||||
<button type="button" class="btn-close pt-3" title="Close Preview" @onclick="CloseEdit"></button>
|
||||
<button type="button" class="btn-close pt-3" title="@Traduci("chiudi")" @onclick="CloseEdit"></button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@@ -25,7 +27,7 @@
|
||||
<li class="list-group-item">somma volume</li>
|
||||
<li class="list-group-item">tempo totale</li>
|
||||
</ul>
|
||||
@* <button class="btn btn-sm btn-outline-primary w-100 mt-auto" @onclick="CloseEdit">Chiudi Preview <i class="fa-solid fa-xmark" title="Close Preview"></i></button> *@
|
||||
@* <button class="btn btn-sm btn-outline-primary w-100 mt-auto" @onclick="CloseEdit">Chiudi Preview <i class="fa-solid fa-xmark" title="@Traduci("chiudi")"></i></button> *@
|
||||
</div>
|
||||
<div class="col-10">
|
||||
<img class="img-fluid" src="@(imgUrl(CurrItem.OfferRowUID, $"{CurrItem.Envir}"))" />
|
||||
|
||||
@@ -1,4 +1,6 @@
|
||||
@if (AddVisible)
|
||||
@inherits BaseComp
|
||||
|
||||
@if (AddVisible)
|
||||
{
|
||||
<div class="modal" tabindex="-1" style="display:block; background-color: rgba(10,10,10,.6);" role="dialog">
|
||||
<div class="modal-dialog">
|
||||
@@ -14,13 +16,13 @@
|
||||
|
||||
<div class="row">
|
||||
<div class="input-group mb-2">
|
||||
<span class="input-group-text" id="basic-addon1">Codice</span>
|
||||
<span class="input-group-text" id="basic-addon1">@Traduci("codice")</span>
|
||||
<input type="text" class="form-control text-end" @bind="@NewRecord.ClassCod" />
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="input-group mb-2">
|
||||
<span class="input-group-text" id="basic-addon1">Descrizione</span>
|
||||
<span class="input-group-text" id="basic-addon1">@Traduci("descrizione")</span>
|
||||
<input type="text" class="form-control text-end" @bind="@NewRecord.Description" />
|
||||
</div>
|
||||
</div>
|
||||
@@ -33,10 +35,10 @@
|
||||
}
|
||||
<div class="row">
|
||||
<div class="col">
|
||||
<button class="btn btn-success w-100" @onclick="DoAdd"><i class="fa-solid fa-save"></i> Save</button>
|
||||
<button class="btn btn-success w-100" @onclick="DoAdd"><i class="fa-solid fa-save"></i> @Traduci("salva")</button>
|
||||
</div>
|
||||
<div class="col">
|
||||
<button class="btn btn-warning w-100" @onclick="ToggleAdd">Cancel <i class="fa-solid fa-ban"></i></button>
|
||||
<button class="btn btn-warning w-100" @onclick="ToggleAdd">@Traduci("annulla") <i class="fa-solid fa-ban"></i></button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@@ -48,10 +50,10 @@
|
||||
<thead>
|
||||
<tr>
|
||||
<th>
|
||||
<button class="btn btn-sm btn-primary" title="Reset selezione" @onclick="DoReset"><i class="fa-solid fa-arrow-rotate-right"></i></button>
|
||||
<button class="btn btn-sm btn-primary" title="@Traduci("reset")" @onclick="DoReset"><i class="fa-solid fa-arrow-rotate-right"></i></button>
|
||||
</th>
|
||||
<th>Cod</th>
|
||||
<th>Descrizione</th>
|
||||
<th>@Traduci("cod")</th>
|
||||
<th>@Traduci("descrizione")</th>
|
||||
<th class="text-end"># Val</th>
|
||||
<th class="text-end">
|
||||
<button class="btn btn-sm btn-success" @onclick="ToggleAdd"><i class="fa-solid fa-plus"></i></button>
|
||||
@@ -65,21 +67,21 @@
|
||||
@if (EditRecord != null && item.ClassCod == EditRecord.ClassCod)
|
||||
{
|
||||
<td class="text-start text-nowrap">
|
||||
<button class="btn btn-sm btn-success" @onclick="() => DoSave(item)"><i class="fa-solid fa-save"></i></button>
|
||||
<button class="btn btn-sm btn-secondary opacity-50"><i class="fa-solid fa-pencil"></i></button>
|
||||
<button class="btn btn-sm btn-success" title="@Traduci("salva")" @onclick="() => DoSave(item)"><i class="fa-solid fa-save"></i></button>
|
||||
<button class="btn btn-sm btn-secondary opacity-50" title="@Traduci("modifica")"><i class="fa-solid fa-pencil"></i></button>
|
||||
</td>
|
||||
<td>@item.ClassCod</td>
|
||||
<td><input class="form-control form-control-sm border-2 border-info py-1" type="text" style="width: 12rem;" @bind="@item.Description" /></td>
|
||||
<td class="text-end">@item.NumChild</td>
|
||||
<td class="text-end">
|
||||
<button class="btn btn-sm btn-warning" @onclick="DoReset"><i class="fa-solid fa-ban"></i></button>
|
||||
<button class="btn btn-sm btn-warning" title="@Traduci("annulla")" @onclick="DoReset"><i class="fa-solid fa-ban"></i></button>
|
||||
</td>
|
||||
}
|
||||
else
|
||||
{
|
||||
<td class="text-start text-nowrap">
|
||||
<button class="btn btn-sm btn-primary" @onclick="() => DoSelect(item)"><i class="fa-solid fa-magnifying-glass"></i></button>
|
||||
<button class="btn btn-sm btn-info" @onclick="() => DoEdit(item)"><i class="fa-solid fa-pencil"></i></button>
|
||||
<button class="btn btn-sm btn-primary" title="@Traduci("seleziona")" @onclick="() => DoSelect(item)"><i class="fa-solid fa-magnifying-glass"></i></button>
|
||||
<button class="btn btn-sm btn-info" title="@Traduci("modifica")" @onclick="() => DoEdit(item)"><i class="fa-solid fa-pencil"></i></button>
|
||||
@* <button class="btn btn-sm btn-success" @onclick="() => DoClone(item)"><i class="fa-solid fa-clone"></i></button> *@
|
||||
</td>
|
||||
<td>@item.ClassCod</td>
|
||||
@@ -88,11 +90,11 @@
|
||||
<td class="text-end">
|
||||
@if (item.NumChild > 0)
|
||||
{
|
||||
<button class="btn btn-sm btn-secondary opacity-50" disabled title="Record Child correlati: cancellazione non permessa"><i class="fa-solid fa-trash-can"></i></button>
|
||||
<button class="btn btn-sm btn-secondary opacity-50" disabled title="@Traduci("childCorrelati")"><i class="fa-solid fa-trash-can"></i></button>
|
||||
}
|
||||
else
|
||||
{
|
||||
<button class="btn btn-sm btn-danger" @onclick="() => DoDelete(item)"><i class="fa-solid fa-trash-can"></i></button>
|
||||
<button class="btn btn-sm btn-danger" title="@Traduci("elimina")" @onclick="() => DoDelete(item)"><i class="fa-solid fa-trash-can"></i></button>
|
||||
}
|
||||
</td>
|
||||
}
|
||||
|
||||
@@ -1,11 +1,13 @@
|
||||
@if (isLoading || ListRecords == null)
|
||||
@inherits BaseComp
|
||||
|
||||
@if (isLoading || ListRecords == null)
|
||||
{
|
||||
<LoadingData></LoadingData>
|
||||
}
|
||||
else if (totalCount == 0)
|
||||
{
|
||||
<div class="alert alert-info text-center">
|
||||
<div class="display-4">Nessun record trovato</div>
|
||||
<div class="display-4">@Traduci("noRecord")</div>
|
||||
<button class="btn btn-sm btn-success" @onclick="DoAdd"><i class="fa-solid fa-plus"></i> Aggiungi</button>
|
||||
</div>
|
||||
}
|
||||
@@ -15,11 +17,11 @@ else
|
||||
<thead>
|
||||
<tr>
|
||||
<th class="text-nowrap">
|
||||
<button class="btn btn-sm btn-primary" title="Reset selezione" @onclick="DoReset"><i class="fa-solid fa-arrow-rotate-right"></i></button>
|
||||
<button class="btn btn-sm btn-primary" title="@Traduci("reset")" @onclick="DoReset"><i class="fa-solid fa-arrow-rotate-right"></i></button>
|
||||
</th>
|
||||
@* <th>ID</th> *@
|
||||
<th class="text-nowrap text-center mx-2">Ord.</th>
|
||||
<th class="w-100">Valore</th>
|
||||
<th class="w-100">@Traduci("valore")</th>
|
||||
<th class="text-nowrap text-end">
|
||||
<button class="btn btn-sm btn-success" @onclick="DoAdd"><i class="fa-solid fa-plus"></i></button>
|
||||
</th>
|
||||
@@ -34,8 +36,8 @@ else
|
||||
@if (EditRecord != null && item.GenValID == EditRecord.GenValID)
|
||||
{
|
||||
<td class="text-start text-nowrap">
|
||||
<button class="btn btn-sm btn-success" @onclick="() => DoSave(item)"><i class="fa-solid fa-save"></i></button>
|
||||
<button class="btn btn-sm btn-secondary opacity-50"><i class="fa-solid fa-pencil" title="Edit @item.GenValID"></i></button>
|
||||
<button class="btn btn-sm btn-success" title="@Traduci("salva")" @onclick="() => DoSave(item)"><i class="fa-solid fa-save"></i></button>
|
||||
<button class="btn btn-sm btn-secondary opacity-50"><i class="fa-solid fa-pencil" title="@Traduci("modifica") @item.GenValID"></i></button>
|
||||
@* <button class="btn btn-sm btn-success" @onclick="() => DoClone(item)" title="Duplicate @item.GenValID"><i class="fa-solid fa-clone"></i></button> *@
|
||||
</td>
|
||||
@* <td>@item.GenValID</td> *@
|
||||
@@ -46,14 +48,14 @@ else
|
||||
</td>
|
||||
<td class="w-100"><input class="form-control form-control-sm border-2 border-info py-1" type="text" @bind="@item.ValString" /></td>
|
||||
<td class="text-nowrap text-end">
|
||||
<button class="btn btn-sm btn-warning" @onclick="DoReset"><i class="fa-solid fa-ban"></i></button>
|
||||
<button class="btn btn-sm btn-warning" title="@Traduci("reset")" @onclick="DoReset"><i class="fa-solid fa-ban"></i></button>
|
||||
</td>
|
||||
}
|
||||
else
|
||||
{
|
||||
<td class="text-start text-nowrap">
|
||||
<button class="btn btn-sm btn-primary" @onclick="() => DoSelect(item)" title="Select @item.GenValID"><i class="fa-solid fa-magnifying-glass"></i></button>
|
||||
<button class="btn btn-sm btn-info" @onclick="() => DoEdit(item)"><i class="fa-solid fa-pencil" title="Edit @item.GenValID"></i></button>
|
||||
<button class="btn btn-sm btn-primary" @onclick="() => DoSelect(item)" title="@Traduci("seleziona") @item.GenValID"><i class="fa-solid fa-magnifying-glass"></i></button>
|
||||
<button class="btn btn-sm btn-info" @onclick="() => DoEdit(item)"><i class="fa-solid fa-pencil" title="@Traduci("modifica") @item.GenValID"></i></button>
|
||||
@* <button class="btn btn-sm btn-success" @onclick="() => DoClone(item)" title="Duplicate @item.GenValID"><i class="fa-solid fa-clone"></i></button> *@
|
||||
</td>
|
||||
@* <td>@item.GenValID</td> *@
|
||||
@@ -64,7 +66,7 @@ else
|
||||
</td>
|
||||
<td class="w-100">@item.ValString</td>
|
||||
<td class="text-nowrap text-end">
|
||||
<button class="btn btn-sm btn-danger" @onclick="() => DoDelete(item)"><i class="fa-solid fa-trash-can"></i></button>
|
||||
<button class="btn btn-sm btn-danger" title="@Traduci("elimina")" @onclick="() => DoDelete(item)"><i class="fa-solid fa-trash-can"></i></button>
|
||||
</td>
|
||||
}
|
||||
</tr>
|
||||
|
||||
@@ -13,7 +13,7 @@
|
||||
{
|
||||
<span class="input-group-text">@Traduci("gruppo")</span>
|
||||
<select @bind="@SelCodGroup" class="form-select">
|
||||
<option value="">--- Sel. Gruppo ---</option>
|
||||
<option value="">--- @Traduci("articoli_selGruppo") ---</option>
|
||||
@foreach (var item in ListItemGroup)
|
||||
{
|
||||
<option value="@item.CodGroup">@item.Description</option>
|
||||
@@ -43,7 +43,7 @@
|
||||
</div>
|
||||
</div>
|
||||
<div class="px-1">
|
||||
<div class="input-group input-group-sm" title="ricerca">
|
||||
<div class="input-group input-group-sm" title="@Traduci("ricerca")">
|
||||
<span class="input-group-text"><i class="fas fa-search"></i></span>
|
||||
<input type="text" class="form-control" @bind="@SearchVal">
|
||||
<button class="btn btn-outline-secondary" @onclick="ResetSearch"><i class="fas fa-ban"></i></button>
|
||||
|
||||
@@ -14,7 +14,7 @@ else
|
||||
<thead>
|
||||
<tr>
|
||||
<th>
|
||||
<button class="btn btn-sm btn-primary" title="Reset selezione" @onclick="DoReset"><i class="fa-solid fa-arrow-rotate-right"></i></button>
|
||||
<button class="btn btn-sm btn-primary" title="@Traduci("reset")" @onclick="DoReset"><i class="fa-solid fa-arrow-rotate-right"></i></button>
|
||||
</th>
|
||||
<th>@Traduci("id")</th>
|
||||
<th>@Traduci("gruppo")</th>
|
||||
@@ -60,7 +60,7 @@ else
|
||||
<td class="text-end text-nowrap">
|
||||
@if (!item.IsOkCost)
|
||||
{
|
||||
<span class="text-danger me-2" title="Manca importo prodotto"><i class="fa-solid fa-triangle-exclamation"></i></span>
|
||||
<span class="text-danger me-2" title="@Traduci("articoli_mancaImporto")"><i class="fa-solid fa-triangle-exclamation"></i></span>
|
||||
}
|
||||
@item.Cost.ToString("C3")
|
||||
</td>
|
||||
@@ -68,7 +68,7 @@ else
|
||||
<td class="text-end text-nowrap">
|
||||
@if (!item.IsOkQty)
|
||||
{
|
||||
<span class="text-warning me-2" title="Range Qty non corretto"><i class="fa-solid fa-triangle-exclamation"></i></span>
|
||||
<span class="text-warning me-2" title="@Traduci("articoli_sbagliatoRangeQty")"><i class="fa-solid fa-triangle-exclamation"></i></span>
|
||||
}
|
||||
<span>@item.QtyMin.ToString("F1") ↔ @item.QtyMax.ToString("F1")</span>
|
||||
</td>
|
||||
|
||||
@@ -18,7 +18,7 @@ else
|
||||
<thead>
|
||||
<tr>
|
||||
<th>
|
||||
<button class="btn btn-sm btn-primary" title="Reset selezione" @onclick="DoReset"><i class="fa-solid fa-arrow-rotate-right"></i></button>
|
||||
<button class="btn btn-sm btn-primary" title="@Traduci("reset")" @onclick="DoReset"><i class="fa-solid fa-arrow-rotate-right"></i></button>
|
||||
</th>
|
||||
<th class="text-center">@Traduci("ambiente")</th>
|
||||
<th>@Traduci("anteprima")</th>
|
||||
@@ -40,7 +40,7 @@ else
|
||||
{
|
||||
<tr class="@checkSel(item)">
|
||||
<td class="text-start text-nowrap">
|
||||
<button class="btn btn-sm btn-primary" @onclick="() => DoSelect(item)"><i class="fa-solid fa-magnifying-glass"></i></button>
|
||||
@* <button class="btn btn-sm btn-primary" @onclick="() => DoSelect(item)"><i class="fa-solid fa-magnifying-glass"></i></button> *@
|
||||
<button class="btn btn-sm btn-info" @onclick="() => DoEdit(item)"><i class="fa-solid fa-pencil"></i></button>
|
||||
@* <button class="btn btn-sm @doCloneCss(item)" @onclick="() => DoClone(item)"><i class="fa-solid fa-clone"></i></button> *@
|
||||
</td>
|
||||
@@ -49,8 +49,8 @@ else
|
||||
<div class="small">(@item.SellingItemID)</div>
|
||||
</td>
|
||||
<td>
|
||||
@* <img class="img-fluid p-1" src="@(imgUrl(item.ImgType, item.ImgUID, $"{item.Envir}"))" width="64" title="Reference Image" /> *@
|
||||
<img class="img-fluid p-1" src="@imgSrc(item.ImgUrl)" width="64" title="Reference Image" />
|
||||
@* <img class="img-fluid p-1" src="@(imgUrl(item.ImgType, item.ImgUID, $"{item.Envir}"))" width="64" /> *@
|
||||
<img class="img-fluid p-1" src="@imgSrc(item.ImgUrl)" width="64" />
|
||||
</td>
|
||||
<td>
|
||||
@item.SourceType
|
||||
|
||||
@@ -1,10 +1,12 @@
|
||||
@if (addVisible)
|
||||
@inherits BaseComp
|
||||
|
||||
@if (addVisible)
|
||||
{
|
||||
<div class="modal" tabindex="-1" style="display:block; background-color: rgba(10,10,10,.6);" role="dialog">
|
||||
<div class="modal-dialog">
|
||||
<div class="modal-content">
|
||||
<div class="modal-header">
|
||||
<div class="modal-title fs-4">Aggiunta Fase e Risorsa</div>
|
||||
<div class="modal-title fs-4">@Traduci("cicli_aggFaseRisorsa")</div>
|
||||
<button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Close" @onclick="ToggleAdd">
|
||||
</button>
|
||||
</div>
|
||||
@@ -15,7 +17,7 @@
|
||||
<div class="col-12">
|
||||
<div class="form-floating mb-1">
|
||||
<input type="text" class="form-control" @bind="@newRecord.Description" />
|
||||
<label class="small">Descrizione</label>
|
||||
<label class="small">@Traduci("descrizione")</label>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-6">
|
||||
@@ -27,7 +29,7 @@
|
||||
<option value="@itemAlt.PhaseID">@itemAlt.CodPhase | @itemAlt.Name</option>
|
||||
}
|
||||
</select>
|
||||
<label class="small">Fase</label>
|
||||
<label class="small">@Traduci("cicli_fase")</label>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-6">
|
||||
@@ -39,7 +41,7 @@
|
||||
<option value="@itemAlt.ResourceID">@itemAlt.CodResource | @itemAlt.Name</option>
|
||||
}
|
||||
</select>
|
||||
<label class="small">Risorsa</label>
|
||||
<label class="small">@Traduci("cicli_risorsa")</label>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@@ -54,15 +56,15 @@
|
||||
<div class="col">
|
||||
@if (newRecord != null && newRecord.PhaseID > 0 && newRecord.ResourceID > 0)
|
||||
{
|
||||
<button class="btn btn-success w-100" @onclick="DoAdd"><i class="fa-solid fa-save"></i> Save</button>
|
||||
<button class="btn btn-success w-100" @onclick="DoAdd"><i class="fa-solid fa-save"></i> @Traduci("salva")</button>
|
||||
}
|
||||
else
|
||||
{
|
||||
<button class="btn btn-secondary w-100" disabled><i class="fa-solid fa-save"></i> Save</button>
|
||||
<button class="btn btn-secondary w-100" disabled><i class="fa-solid fa-save"></i> @Traduci("salva")</button>
|
||||
}
|
||||
</div>
|
||||
<div class="col">
|
||||
<button class="btn btn-warning w-100" @onclick="ToggleAdd">Cancel <i class="fa-solid fa-ban"></i></button>
|
||||
<button class="btn btn-warning w-100" @onclick="ToggleAdd">@Traduci("annulla") <i class="fa-solid fa-ban"></i></button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@@ -78,8 +80,8 @@
|
||||
@if (totalCount == 0)
|
||||
{
|
||||
<div class="alert alert-info text-center">
|
||||
<div class="display-5">Nessun record trovato</div>
|
||||
<button class="btn btn-lg btn-success" @onclick="ToggleAdd">Aggiungi <i class="fa-solid fa-plus"></i></button>
|
||||
<div class="display-5">@Traduci("noRecord")</div>
|
||||
<button class="btn btn-lg btn-success" @onclick="ToggleAdd">@Traduci("nuovo") <i class="fa-solid fa-plus"></i></button>
|
||||
</div>
|
||||
}
|
||||
else
|
||||
@@ -88,15 +90,15 @@
|
||||
<thead>
|
||||
<tr>
|
||||
<th>
|
||||
<button class="btn btn-sm btn-primary" title="Reset selezione" @onclick="DoReset"><i class="fa-solid fa-arrow-rotate-right"></i></button>
|
||||
<button class="btn btn-sm btn-primary" title="@Traduci("reset")" @onclick="DoReset"><i class="fa-solid fa-arrow-rotate-right"></i></button>
|
||||
</th>
|
||||
|
||||
<th>Ord.</th>
|
||||
<th>Fase</th>
|
||||
<th>Risorsa</th>
|
||||
<th>Descrizione</th>
|
||||
<th class="text-center">Tags</th>
|
||||
<th class="text-end">Resa</th>
|
||||
<th>@Traduci("ord")</th>
|
||||
<th>@Traduci("cicli_fase")</th>
|
||||
<th>@Traduci("cicli_risorsa")</th>
|
||||
<th>@Traduci("descrizione")</th>
|
||||
<th class="text-center">@Traduci("cicli_tags")</th>
|
||||
<th class="text-end">@Traduci("cicli_resa")</th>
|
||||
<th>
|
||||
<button class="btn btn-sm btn-success" @onclick="ToggleAdd"><i class="fa-solid fa-plus"></i></button>
|
||||
</th>
|
||||
@@ -139,7 +141,7 @@
|
||||
<InputPercent Decimals="1" CssClass="form-control form-control-sm text-end" @bind-Value="@ProductivityRateProxy" />
|
||||
</td>
|
||||
<td>
|
||||
<button class="btn btn-sm btn-warning" title="Annulla Modifiche" @onclick="DoCancel"><i class="fa-solid fa-ban"></i></button>
|
||||
<button class="btn btn-sm btn-warning" title="@Traduci("annulla")" @onclick="DoCancel"><i class="fa-solid fa-ban"></i></button>
|
||||
</td>
|
||||
}
|
||||
else
|
||||
|
||||
@@ -1,10 +1,12 @@
|
||||
@if (addVisible)
|
||||
@inherits BaseComp
|
||||
|
||||
@if (addVisible)
|
||||
{
|
||||
<div class="modal" tabindex="-1" style="display:block; background-color: rgba(10,10,10,.6);" role="dialog">
|
||||
<div class="modal-dialog">
|
||||
<div class="modal-content">
|
||||
<div class="modal-header">
|
||||
<div class="modal-title fs-4">Aggiunta Ciclo di Lavoro</div>
|
||||
<div class="modal-title fs-4">@Traduci("nuovo")</div>
|
||||
<button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Close" @onclick="ToggleAdd">
|
||||
</button>
|
||||
</div>
|
||||
@@ -13,7 +15,7 @@
|
||||
{
|
||||
<div class="row">
|
||||
<div class="input-group mb-2">
|
||||
<span class="input-group-text" id="basic-addon1">Descrizione</span>
|
||||
<span class="input-group-text" id="basic-addon1">@Traduci("descrizione")</span>
|
||||
<input type="text" class="form-control text-end" @bind="@newRecord.Description" />
|
||||
</div>
|
||||
</div>
|
||||
@@ -26,10 +28,10 @@
|
||||
}
|
||||
<div class="row">
|
||||
<div class="col">
|
||||
<button class="btn btn-success w-100" @onclick="DoAdd"><i class="fa-solid fa-save"></i> Save</button>
|
||||
<button class="btn btn-success w-100" @onclick="DoAdd"><i class="fa-solid fa-save"></i> @Traduci("salva")</button>
|
||||
</div>
|
||||
<div class="col">
|
||||
<button class="btn btn-warning w-100" @onclick="ToggleAdd">Cancel <i class="fa-solid fa-ban"></i></button>
|
||||
<button class="btn btn-warning w-100" @onclick="ToggleAdd">@Traduci("annulla") <i class="fa-solid fa-ban"></i></button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@@ -39,7 +41,7 @@
|
||||
}
|
||||
<div class="card shadow">
|
||||
<div class="card-header">
|
||||
Elenco <b>cicli</b> attivi
|
||||
@Traduci("cicli_elencoCicliAtt")
|
||||
</div>
|
||||
<div class="card-body p-1">
|
||||
@if (isLoading || ListRecords == null)
|
||||
@@ -48,7 +50,7 @@
|
||||
}
|
||||
else if (totalCount == 0)
|
||||
{
|
||||
<div class="alert alert-info text-center display-4">Nessun record trovato</div>
|
||||
<div class="alert alert-info text-center display-4">@Traduci("noRecord")</div>
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -56,22 +58,22 @@
|
||||
<thead>
|
||||
<tr>
|
||||
<th>
|
||||
<button class="btn btn-sm btn-primary" title="Reset selezione" @onclick="DoReset"><i class="fa-solid fa-arrow-rotate-right"></i></button>
|
||||
<button class="btn btn-sm btn-primary" title="@Traduci("reset")" @onclick="DoReset"><i class="fa-solid fa-arrow-rotate-right"></i></button>
|
||||
</th>
|
||||
@if (selRecord == null)
|
||||
{
|
||||
<th>Ord.</th>
|
||||
<th>Descrizione</th>
|
||||
<th class="text-center">Fasi</th>
|
||||
<th class="text-center">Tags</th>
|
||||
<th class="text-center">Drivers</th>
|
||||
<th>@Traduci("ord")</th>
|
||||
<th>@Traduci("descrizione")</th>
|
||||
<th class="text-center">@Traduci("cicli_fasi")</th>
|
||||
<th class="text-center">@Traduci("cicli_tags")</th>
|
||||
<th class="text-center">@Traduci("cicli_drivers")</th>
|
||||
<th>
|
||||
<button class="btn btn-sm btn-success" @onclick="ToggleAdd"><i class="fa-solid fa-plus"></i></button>
|
||||
</th>
|
||||
}
|
||||
else
|
||||
{
|
||||
<th>Descrizione</th>
|
||||
<th>@Traduci("descrizione")</th>
|
||||
}
|
||||
</tr>
|
||||
</thead>
|
||||
@@ -105,7 +107,7 @@
|
||||
<td>
|
||||
@if (item.Lock || item.NumChild > 0)
|
||||
{
|
||||
<button class="btn btn-sm btn-secondary opacity-50" disabled title="Record Child correlati: cancellazione non permessa"><i class="fa-solid fa-trash-can"></i></button>
|
||||
<button class="btn btn-sm btn-secondary opacity-50" disabled title="@Traduci("childCorrelati")"><i class="fa-solid fa-trash-can"></i></button>
|
||||
}
|
||||
else
|
||||
{
|
||||
|
||||
@@ -1,34 +1,36 @@
|
||||
<div class="card shadow">
|
||||
@inherits BaseComp
|
||||
|
||||
<div class="card shadow">
|
||||
<div class="card-header bg-info bg-opacity-50 bg-gradient">
|
||||
<div class="d-flex justify-content-between mb-2">
|
||||
<div class="px-1 fs-3">
|
||||
<b>Simulazione</b> Costing
|
||||
<b>@Traduci("risorsa_simulazCosti")</b>
|
||||
</div>
|
||||
<div class="px-1">
|
||||
@if (isEditing)
|
||||
{
|
||||
<button class="btn btn-warning" @onclick="DoCancel">Cancel <i class="fa-solid fa-ban"></i></button>
|
||||
<button class="btn btn-warning" @onclick="DoCancel">@Traduci("annulla") <i class="fa-solid fa-ban"></i></button>
|
||||
}
|
||||
else
|
||||
{
|
||||
<button class="btn btn-primary" @onclick="DoEdit">Edit <i class="fa-solid fa-pencil"></i></button>
|
||||
<button class="btn btn-primary" @onclick="DoEdit">@Traduci("modifica") <i class="fa-solid fa-pencil"></i></button>
|
||||
}
|
||||
</div>
|
||||
</div>
|
||||
<div class="d-flex justify-content-between">
|
||||
<div class="px-1">
|
||||
<div class="input-group">
|
||||
<span class="input-group-text" title="@CurrRecord.DriverNav.Descript">Driver</span>
|
||||
<span class="input-group-text" title="@CurrRecord.DriverNav.Descript">@Traduci("risorsa_driver")</span>
|
||||
<input placeholder="Qty Driver" @bind="@DriverQty" class="form-control form-control-sm text-end w-auto" type="number" step="0.001" style="width:5rem;" />
|
||||
<span class="input-group-text" title="@CurrRecord.DriverNav.Descript"><b>@CurrRecord.DriverNav.Name</b> (@CurrRecord.DriverNav.Unit)</span>
|
||||
</div>
|
||||
<small class="small text-secondary" title="Prezzo">@CurrRecord.DriverNav.Descript</small>
|
||||
</div>
|
||||
<div class="px-1 fs-3">
|
||||
<div class="fw-bold" title="Prezzo">
|
||||
<div class="fw-bold" title="@Traduci("risorsa_prezzo")">
|
||||
@($"{PriceCalc:C2}")
|
||||
</div>
|
||||
<div class="small text-secondary" title="Prezzo">(@($"{CostCalc:C2}"))</div>
|
||||
<div class="small text-secondary" title="@Traduci("risorsa_prezzo")">(@($"{CostCalc:C2}"))</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@@ -36,7 +38,7 @@
|
||||
<ul class="list-group">
|
||||
<li class="list-group-item d-flex justify-content-between">
|
||||
<div>
|
||||
<div>Cod</div>
|
||||
<div>@Traduci("cod")</div>
|
||||
<small class="small text-secondary">
|
||||
Codifica per ordine/gruppo
|
||||
</small>
|
||||
@@ -59,7 +61,7 @@
|
||||
</li>
|
||||
<li class="list-group-item d-flex justify-content-between">
|
||||
<div>
|
||||
<div>Nome</div>
|
||||
<div>@Traduci("nome")</div>
|
||||
<small class="small text-secondary">
|
||||
Denominazione Risorsa
|
||||
</small>
|
||||
@@ -82,7 +84,7 @@
|
||||
</li>
|
||||
<li class="list-group-item d-flex justify-content-between">
|
||||
<div>
|
||||
<div>Driver Impiegato</div>
|
||||
<div>@Traduci("risorsa_driver")</div>
|
||||
<small class="small text-secondary">
|
||||
Driver di Costing
|
||||
</small>
|
||||
@@ -133,7 +135,7 @@
|
||||
</li>
|
||||
<li class="list-group-item d-flex justify-content-between">
|
||||
<div>
|
||||
<div>Costi Fissi</div>
|
||||
<div>@Traduci("risorsa_costiFissi")</div>
|
||||
<small class="small text-secondary">
|
||||
Costi Fissi nell'unità di riferimento (affitti, ammortamenti)
|
||||
</small>
|
||||
@@ -156,7 +158,7 @@
|
||||
</li>
|
||||
<li class="list-group-item d-flex justify-content-between">
|
||||
<div>
|
||||
<div>Costi Variabili</div>
|
||||
<div>@Traduci("risorsa_costiVariabili")</div>
|
||||
<small class="small text-secondary">
|
||||
Costi Variabili nell'unità di riferimento (energia, consumabili, no materie prime)
|
||||
</small>
|
||||
@@ -179,7 +181,7 @@
|
||||
</li>
|
||||
<li class="list-group-item d-flex justify-content-between">
|
||||
<div>
|
||||
<div>Costo Lavoro</div>
|
||||
<div>@Traduci("risorsa_costoLavoro")</div>
|
||||
<small class="small text-secondary">
|
||||
Costi HR nell'unità di riferimento (diretti)
|
||||
</small>
|
||||
@@ -202,7 +204,7 @@
|
||||
</li>
|
||||
<li class="list-group-item d-flex justify-content-between">
|
||||
<div>
|
||||
<div>OverHead</div>
|
||||
<div>@Traduci("risorsa_overhead")</div>
|
||||
<small class="small text-secondary">
|
||||
Costi OH nell'unità di riferimento (indiretti)
|
||||
</small>
|
||||
@@ -225,7 +227,7 @@
|
||||
</li>
|
||||
<li class="list-group-item d-flex justify-content-between">
|
||||
<div>
|
||||
<div>OverHead +%</div>
|
||||
<div>@Traduci("risorsa_overhead") +%</div>
|
||||
<small class="small text-secondary">
|
||||
Maggiorazione Costi OH nell'unità di riferimento (indiretti)
|
||||
</small>
|
||||
@@ -271,7 +273,7 @@
|
||||
</li>
|
||||
<li class="list-group-item d-flex justify-content-between">
|
||||
<div>
|
||||
<div>Margine +%</div>
|
||||
<div>@Traduci("margine") +%</div>
|
||||
<small class="small text-secondary">
|
||||
Margine Prezzo (scontabile) nell'unità di riferimento (indiretti)
|
||||
</small>
|
||||
@@ -295,7 +297,7 @@
|
||||
@if (isEditing)
|
||||
{
|
||||
<li class="list-group-item d-flex justify-content-between">
|
||||
<button class="btn btn-lg btn-success w-100" @onclick="DoSave">Save <i class="fa-solid fa-floppy-disk"></i></button>
|
||||
<button class="btn btn-lg btn-success w-100" @onclick="DoSave">@Traduci("salva") <i class="fa-solid fa-floppy-disk"></i></button>
|
||||
</li>
|
||||
}
|
||||
</ul>
|
||||
|
||||
@@ -1,6 +1,8 @@
|
||||
<div class="card shadow">
|
||||
@inherits BaseComp
|
||||
|
||||
<div class="card shadow">
|
||||
<div class="card-header">
|
||||
<b>Configurazioni</b> attive
|
||||
<b>@Traduci("risorsa_configAttive")</b>
|
||||
</div>
|
||||
<div class="card-body p-1">
|
||||
@if (isLoading || ListRecords == null)
|
||||
@@ -9,7 +11,7 @@
|
||||
}
|
||||
else if (totalCount == 0)
|
||||
{
|
||||
<div class="alert alert-info text-center display-4">Nessun record trovato</div>
|
||||
<div class="alert alert-info text-center display-4">@Traduci("noRecord")</div>
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -21,11 +23,11 @@
|
||||
<th class="text-center">
|
||||
<button class="btn btn-sm btn-primary" title="Reset selezione" @onclick="DoReset"><i class="fa-solid fa-arrow-rotate-right"></i></button>
|
||||
</th>
|
||||
<th>Cod.</th>
|
||||
<th>Nome</th>
|
||||
<th>Driver</th>
|
||||
<th>@Traduci("cod")</th>
|
||||
<th>@Traduci("nome")</th>
|
||||
<th>@Traduci("risorsa_driver")</th>
|
||||
<th class="text-center">
|
||||
<button class="btn btn-sm btn-success" @onclick="DoAdd" title="Add New"><i class="fa-solid fa-plus"></i></button>
|
||||
<button class="btn btn-sm btn-success" @onclick="DoAdd" title="@Traduci("nuovo")"><i class="fa-solid fa-plus"></i></button>
|
||||
</th>
|
||||
</tr>
|
||||
</thead>
|
||||
|
||||
@@ -3,14 +3,14 @@
|
||||
<div class="modal" tabindex="-1" style="display:block; background-color: rgba(10,10,10,.6);" role="dialog">
|
||||
<div class="modal-dialog modal-xl">
|
||||
<div class="modal-content">
|
||||
<div class="modal-header py-1">
|
||||
<div class="modal-header py-2">
|
||||
<div class="row w-100 align-items-center">
|
||||
<div class="col-4 fs-4">
|
||||
@Traduci("offerta_selezProd")
|
||||
</div>
|
||||
<div class="col-4">
|
||||
<select @bind="@SelTemplateID" class="form-select">
|
||||
<option value="0">--- Selezionare Catalogo ---</option>
|
||||
<option value="0">--- @Traduci("offerta_selezCatalogo") ---</option>
|
||||
@foreach (var itemAlt in ListCataloghi)
|
||||
{
|
||||
<option value="@itemAlt.TemplateID">@itemAlt.Name | @itemAlt.Description</option>
|
||||
@@ -23,7 +23,7 @@
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="modal-body pt-0 pb-2">
|
||||
<div class="modal-body py-2">
|
||||
@if (SelTemplateID == 0)
|
||||
{
|
||||
<div class="alert alert-info fs-4">@Traduci("offerta_selezCatalogo")!</div>
|
||||
@@ -36,12 +36,12 @@
|
||||
<div class="col-2 gx-2 gy-2">
|
||||
<div class="card shadow image-big-hover-pop p-0" @onclick="() => DoAddOrderRow(item)">
|
||||
@* <img src="@(imgUrl(item.ImgType, item.ImgUID, $"{item.Envir}"))" class="card-img-top card-img-fixed img-fluid"> *@
|
||||
<img src="@imgSrc(item.ImgUrl)" class="card-img-top card-img-fixed img-fluid">
|
||||
<img src="@imgSrc(item.ImgUrl)" class="card-img-top card-img-fixed img-fluid" title="@item.Name">
|
||||
<div class="card-body bg-secondary bg-opacity-25 bg-gradient px-2 py-2" style="height: 5rem;">
|
||||
<div class="card-text fs-5 condensed text-truncate" title="@item.TemplateRowUID">
|
||||
@item.TemplateRowUID
|
||||
</div>
|
||||
<div class="card-text text-secondary condensed text-truncate" tit="@item.Name">
|
||||
<div class="card-text text-secondary condensed text-truncate" title="@item.Name">
|
||||
@item.Name
|
||||
</div>
|
||||
</div>
|
||||
@@ -51,11 +51,14 @@
|
||||
</div>
|
||||
}
|
||||
</div>
|
||||
<div class="modal-footer">
|
||||
<div class="w-100">
|
||||
<EgwCoreLib.Razor.DataPager currPage="@currPage" PageSize="@numRecord" totalCount="@totalCount" numPageChanged="SavePage" numRecordChanged="SaveNumRec" PageSizeList="pageSizes"></EgwCoreLib.Razor.DataPager>
|
||||
@if (totalCount > numRecord)
|
||||
{
|
||||
<div class="modal-footer">
|
||||
<div class="w-100">
|
||||
<EgwCoreLib.Razor.DataPager currPage="@currPage" PageSize="@numRecord" totalCount="@totalCount" numPageChanged="SavePage" numRecordChanged="SaveNumRec" PageSizeList="pageSizes"></EgwCoreLib.Razor.DataPager>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@@ -1,8 +1,10 @@
|
||||
@using EgwCoreLib.Lux.Data.DbModel
|
||||
@using EgwCoreLib.Lux.Data.DbModel.Sales
|
||||
|
||||
@inherits BaseComp
|
||||
|
||||
|
||||
<div class="alert alert-warning text-center display-4">
|
||||
display check finali
|
||||
<button class="btn btn-sm btn-primary" title="Reset selezione" @onclick="DoCancel"><i class="fa-solid fa-arrow-rotate-right"></i></button>
|
||||
<button class="btn btn-sm btn-primary" title="@Traduci("reset")" @onclick="DoCancel"><i class="fa-solid fa-arrow-rotate-right"></i></button>
|
||||
</div>
|
||||
|
||||
@code {
|
||||
|
||||
@@ -83,7 +83,7 @@ else
|
||||
</div>
|
||||
}
|
||||
</div>
|
||||
<div class="cad-body px-2">
|
||||
<div class="cad-body px-2 py-2">
|
||||
@if (isLoading || ListRecords == null)
|
||||
{
|
||||
<LoadingData></LoadingData>
|
||||
@@ -286,7 +286,7 @@ else
|
||||
</div>
|
||||
</td>
|
||||
<td class="text-end">
|
||||
<input class="form-control text-end" style="width: 4rem;" type="number" @bind="@item.Qty" />
|
||||
<input class="form-control text-end" style="width: 4rem;display: inline-block;" type="number" @bind="@item.Qty" />
|
||||
</td>
|
||||
}
|
||||
else
|
||||
|
||||
@@ -742,7 +742,7 @@ namespace Lux.UI.Components.Compo.Offer
|
||||
if (dbRec != null)
|
||||
{
|
||||
// se ho parametri validi di preselezione li applico...
|
||||
if (!string.IsNullOrEmpty(CurrRecord.DictPresel) && CurrRecord.DictParameter.Count > 0)
|
||||
if (!string.IsNullOrEmpty(CurrRecord.DictPresel) && CurrRecord.DictParameter.Count > 0 && needRecalc)
|
||||
{
|
||||
// in primis provo conversione diretta
|
||||
var updAnsw = SerialMan.MassUpdate((string)dbRec.SerStruct, CurrRecord.DictParameter);
|
||||
|
||||
@@ -70,7 +70,7 @@ else
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="cad-body px-2">
|
||||
<div class="cad-body px-2 py-2">
|
||||
@if (isLoading || ListRecords == null)
|
||||
{
|
||||
<LoadingData></LoadingData>
|
||||
@@ -457,7 +457,7 @@ else
|
||||
</button>
|
||||
<div class="form-check form-switch small" title="Abilita editing massivo">
|
||||
<input class="form-check-input" type="checkbox" role="switch" @bind="enableMassEdit">
|
||||
<label class="form-check-label">@Traduci("ordine_modMassiva")</label>
|
||||
<label class="form-check-label">@Traduci("modMassiva")</label>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -1,5 +1,4 @@
|
||||
@using EgwCoreLib.Lux.Data.DbModel.Production
|
||||
|
||||
|
||||
<div class="card shadow">
|
||||
<div class="card-body">
|
||||
<table class="table table-sm table-striped">
|
||||
|
||||
@@ -1,4 +1,6 @@
|
||||
@if (AllRecords == null)
|
||||
@inherits BaseComp
|
||||
|
||||
@if (AllRecords == null)
|
||||
{
|
||||
<LoadingData></LoadingData>
|
||||
}
|
||||
@@ -6,16 +8,16 @@ else
|
||||
{
|
||||
if (AllRecords.Count == 0)
|
||||
{
|
||||
<div class="alert alert-warning">Nessun Ordine da Bilanciare</div>
|
||||
<div class="alert alert-warning">@Traduci("noRecord")</div>
|
||||
}
|
||||
else
|
||||
{
|
||||
<div class="row mb-2">
|
||||
<div class="col-6">
|
||||
<button class="btn btn-primary border-0 w-100" @onclick="ToggleDetail">Toggle All</button>
|
||||
<button class="btn btn-primary border-0 w-100" @onclick="ToggleDetail">@Traduci("caricoMac_attivaTutti")</button>
|
||||
</div>
|
||||
<div class="col-6">
|
||||
<button class="btn btn-primary bg-primary bg-opacity-75 border-0 w-100" @onclick="SendAllAsync">Send All</button>
|
||||
<button class="btn btn-primary bg-primary bg-opacity-75 border-0 w-100" @onclick="SendAllAsync">@Traduci("caricoMac_inviaTutti")</button>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
|
||||
@@ -29,7 +29,7 @@ else
|
||||
<thead>
|
||||
<tr>
|
||||
<th>
|
||||
<button class="btn btn-sm btn-primary" title="Reset selezione" @onclick="DoReset"><i class="fa-solid fa-arrow-rotate-right"></i></button>
|
||||
<button class="btn btn-sm btn-primary" title="@Traduci("reset")" @onclick="DoReset"><i class="fa-solid fa-arrow-rotate-right"></i></button>
|
||||
</th>
|
||||
<th>@Traduci("id")</th>
|
||||
<th>@Traduci("ambiente")</th>
|
||||
@@ -49,9 +49,9 @@ else
|
||||
{
|
||||
<tr class="@CheckSelect(item)">
|
||||
<td>
|
||||
<button class="btn btn-sm btn-primary" @onclick="() => DoSelect(item)"><i class="fa-solid fa-magnifying-glass"></i></button>
|
||||
<button class="btn btn-sm btn-info" @onclick="() => DoEdit(item)"><i class="fa-solid fa-pencil"></i></button>
|
||||
<button class="btn btn-sm btn-warning" @onclick="() => DoClone(item)" title="Duplica Offerta"><i class="fa-solid fa-wand-magic"></i></button>
|
||||
<button class="btn btn-sm btn-primary" @onclick="() => DoSelect(item)" title="@Traduci("seleziona")"><i class="fa-solid fa-magnifying-glass"></i></button>
|
||||
<button class="btn btn-sm btn-info" @onclick="() => DoEdit(item)" title="@Traduci("modifica")"><i class="fa-solid fa-pencil"></i></button>
|
||||
<button class="btn btn-sm btn-warning" @onclick="() => DoClone(item)" title="@Traduci("duplica")"><i class="fa-solid fa-wand-magic"></i></button>
|
||||
</td>
|
||||
<td>@item.TemplateID</td>
|
||||
<td>
|
||||
@@ -70,11 +70,11 @@ else
|
||||
<td class="text-end">
|
||||
@if (item.TemplateRowNav.Any())
|
||||
{
|
||||
<button class="btn btn-sm btn-secondary" title="Eliminazione non permessa: child rec presenti"><i class="fa-solid fa-trash"></i></button>
|
||||
<button class="btn btn-sm btn-secondary" title="@Traduci("childCorrelati")"><i class="fa-solid fa-trash"></i></button>
|
||||
}
|
||||
else
|
||||
{
|
||||
<button class="btn btn-sm btn-danger" title="Elimina" @onclick="() => DoDelete(item)"><i class="fa-solid fa-trash"></i></button>
|
||||
<button class="btn btn-sm btn-danger" title="@Traduci("elimina")" @onclick="() => DoDelete(item)"><i class="fa-solid fa-trash"></i></button>
|
||||
}
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@@ -45,7 +45,7 @@ else
|
||||
@Traduci("noRecord")
|
||||
</div>
|
||||
<div class="px-0">
|
||||
<div class="input-group input-group-sm" title="Environment">
|
||||
<div class="input-group input-group-sm" title="@Traduci("ambiente")">
|
||||
<span class="input-group-text">@Traduci("ambiente")</span>
|
||||
<select @bind="@CurrSellingItemId" class="form-select">
|
||||
<option value="0">--- Selezionare ---</option>
|
||||
@@ -74,7 +74,7 @@ else
|
||||
<thead>
|
||||
<tr>
|
||||
<th>
|
||||
<button class="btn btn-sm btn-primary" title="Reset selezione" @onclick="DoReset"><i class="fa-solid fa-arrow-rotate-right"></i></button>
|
||||
<button class="btn btn-sm btn-primary" title="@Traduci("reset")" @onclick="DoReset"><i class="fa-solid fa-arrow-rotate-right"></i></button>
|
||||
</th>
|
||||
<th>@Traduci("anteprima")</th>
|
||||
<th>@Traduci("cataloghi_prod")</th>
|
||||
@@ -89,34 +89,30 @@ else
|
||||
{
|
||||
<tr class="@CheckSelect(item)">
|
||||
<td>
|
||||
<button class="btn btn-sm btn-info" @onclick="() => DoEdit(item)"><i class="fa-solid fa-pencil"></i></button>
|
||||
<button class="btn btn-sm btn-warning" @onclick="() => DoClone(item)" title="Duplica Offerta"><i class="fa-solid fa-wand-magic"></i></button>
|
||||
<button class="btn btn-sm btn-info" @onclick="() => DoEdit(item)" title="@Traduci("modifica")"><i class="fa-solid fa-pencil"></i></button>
|
||||
<button class="btn btn-sm btn-warning" @onclick="() => DoClone(item)" title="@Traduci("duplica")"><i class="fa-solid fa-wand-magic"></i></button>
|
||||
</td>
|
||||
<td>
|
||||
@if (item.Envir == EgwMultiEngineManager.Data.Constants.EXECENVIRONMENTS.WINDOW)
|
||||
{
|
||||
if (item.SellingItemNav?.SourceType == ItemSourceType.Jwd)
|
||||
{
|
||||
@* <img class="img-fluid image-hover-pop p-1" src="@(imgUrl(item.ImgType, item.TemplateRowUID, $"{item.Envir}"))" width="80" @onclick="() => DoEditJwd(item)" title="Edit Item" /> *@
|
||||
<img class="img-fluid image-hover-pop p-1" src="@imgSrc(item.ImgUrl)" width="80" @onclick="() => DoEditJwd(item)" title="Edit Item" />
|
||||
<img class="img-fluid image-hover-pop p-1" src="@imgSrc(item.ImgUrl)" width="80" @onclick="() => DoEditJwd(item)" title="@Traduci("modifica")" />
|
||||
}
|
||||
else
|
||||
{
|
||||
@* <img class="img-fluid p-1" src="@(imgUrl(item.ImgType, item.ImgUID, $"{item.Envir}"))" width="64" title="No Edit" /> *@
|
||||
<img class="img-fluid p-1" src="@imgSrc(item.ImgUrl)" width="64" title="No Edit" />
|
||||
<img class="img-fluid p-1" src="@imgSrc(item.ImgUrl)" width="64" title="@Traduci("noModifica")" />
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
if (item.SellingItemNav?.SourceType == ItemSourceType.FileBTL)
|
||||
{
|
||||
@* <img class="img-fluid image-hover-pop" src="@(imgUrl(item.ImgType, item.TemplateRowUID, $"{item.Envir}"))" width="150" @onclick="() => DoEditFile(item)" title="Edit Item" /> *@
|
||||
<img class="img-fluid image-hover-pop" src="@imgSrc(item.ImgUrl)" width="150" @onclick="() => DoEditFile(item)" title="Edit Item" />
|
||||
<img class="img-fluid image-hover-pop" src="@imgSrc(item.ImgUrl)" width="150" @onclick="() => DoEditFile(item)" title="@Traduci("modifica")" />
|
||||
}
|
||||
else
|
||||
{
|
||||
@* <img class="img-fluid p-1" src="@(imgUrl(item.ImgType, item.ImgUID, $"{item.Envir}"))" width="64" title="No Edit" /> *@
|
||||
<img class="img-fluid p-1" src="@imgSrc(item.ImgUrl)" width="64" title="No Edit" />
|
||||
<img class="img-fluid p-1" src="@imgSrc(item.ImgUrl)" width="64" title="@Traduci("noModifica")" />
|
||||
}
|
||||
}
|
||||
</td>
|
||||
@@ -146,7 +142,7 @@ else
|
||||
</ul>
|
||||
</td>
|
||||
<td class="text-end">
|
||||
<button class="btn btn-sm btn-danger" title="Elimina" @onclick="() => DoDelete(item)"><i class="fa-solid fa-trash"></i></button>
|
||||
<button class="btn btn-sm btn-danger" title="@Traduci("elimina")" @onclick="() => DoDelete(item)"><i class="fa-solid fa-trash"></i></button>
|
||||
</td>
|
||||
</tr>
|
||||
}
|
||||
|
||||
@@ -20,10 +20,10 @@ else
|
||||
<div class="col-4 px-0 d-flex justify-content-end align-items-center gap-2">
|
||||
@CurrRec.Inserted
|
||||
<div class="btn-group" role="group">
|
||||
<a href="@(DownloadUrl(CurrRec.BuyOrderID))" title="Stampa" @onclick:stopPropagation="true" target="_blank" class="btn btn-sm btn-primary">
|
||||
<a href="@(DownloadUrl(CurrRec.BuyOrderID))" title="@Traduci("fornitore_stampa")" @onclick:stopPropagation="true" target="_blank" class="btn btn-sm btn-primary">
|
||||
<i class="fa-solid fa-print"></i>
|
||||
</a>
|
||||
<button class="btn btn-sm btn-primary" title="Scegli template" @onclick:stopPropagation="true" @onclick="() => SelectOptPrint(CurrRec.BuyOrderID)">
|
||||
<button class="btn btn-sm btn-primary" title="@Traduci("fornitore_selTemplate")" @onclick:stopPropagation="true" @onclick="() => SelectOptPrint(CurrRec.BuyOrderID)">
|
||||
<i class="fa-solid fa-chevron-down small"></i>
|
||||
</button>
|
||||
</div>
|
||||
|
||||
@@ -9,12 +9,12 @@
|
||||
<div class="px-0">
|
||||
<div class="px-0 d-flex justify-content-between">
|
||||
<div class="px-1">
|
||||
<div class="input-group input-group-sm" title="ricerca">
|
||||
<div class="input-group input-group-sm" title="@Traduci("ricerca")">
|
||||
<span class="input-group-text"><i class="fas fa-search"></i></span>
|
||||
<select class="form-select" @bind="@SearchVal">
|
||||
@foreach (var item in OrderStateList)
|
||||
{
|
||||
<option value="@item.ToString()">@item.ToString()</option>
|
||||
<option value="@item.ToString()">@Traduci("fornitore_"+item.ToString().ToLower())</option>
|
||||
}
|
||||
</select>
|
||||
</div>
|
||||
|
||||
@@ -12,7 +12,7 @@
|
||||
<div class="input-group input-group-sm">
|
||||
<span class="input-group-text">Ord</span>
|
||||
<select @bind="@SelOrder" class="form-select form-select-sm">
|
||||
<option value="">--- Tutti ---</option>
|
||||
<option value="">--- @Traduci("tutti") ---</option>
|
||||
@foreach (var item in AvailOrdList)
|
||||
{
|
||||
<option value="@item">@item</option>
|
||||
@@ -21,7 +21,7 @@
|
||||
</div>
|
||||
</div>
|
||||
<div class="px-0">
|
||||
<div class="input-group input-group-sm" title="ricerca">
|
||||
<div class="input-group input-group-sm" title="@Traduci("ricerca")">
|
||||
<span class="input-group-text"><i class="fas fa-search"></i></span>
|
||||
<input type="text" class="form-control" accesskey="/" placeholder="Cerca [/] (3+ char)" @bind="@SearchVal">
|
||||
<button class="btn @btnResetCss" @onclick="ResetSearch"><i class="fas fa-ban"></i></button>
|
||||
|
||||
@@ -44,7 +44,7 @@ else
|
||||
<td class="text-end text-nowrap">
|
||||
@if (!item.IsOkQty)
|
||||
{
|
||||
<span class="text-warning me-2" title="Range Qty non corretto"><i class="fa-solid fa-triangle-exclamation"></i></span>
|
||||
<span class="text-warning me-2" title="@Traduci("articoli_sbagliatoRangeQty")"><i class="fa-solid fa-triangle-exclamation"></i></span>
|
||||
}
|
||||
<span>@item.QtyMin.ToString("F1") ↔ @item.QtyMax.ToString("F1")</span>
|
||||
</td>
|
||||
|
||||
@@ -1,4 +1,6 @@
|
||||
<div class="row">
|
||||
@inherits BaseComp
|
||||
|
||||
<div class="row">
|
||||
<div class="col-12 my-1">
|
||||
<ol class="list-group">
|
||||
<li class="list-group-item align-items-lg-start @TitleCss text-light d-flex justify-content-between">
|
||||
@@ -6,7 +8,7 @@
|
||||
@if (QueueAll.Count > 0)
|
||||
{
|
||||
<div class="px-0">
|
||||
<div class="input-group input-group-sm" title="ricerca">
|
||||
<div class="input-group input-group-sm" title="@Traduci("ricerca")">
|
||||
<span class="input-group-text"><i class="fas fa-search"></i></span>
|
||||
<input type="text" class="form-control" @bind="@SearchVal">
|
||||
<button class="btn @SearchCss" @onclick="ResetSearch"><i class="fas fa-ban"></i></button>
|
||||
|
||||
@@ -3,12 +3,12 @@
|
||||
<div class="page">
|
||||
<CascadingValue Value="currLang" Name="LangSel">
|
||||
<div class="@sideClass">
|
||||
<NavMenu EC_compressUpdated="UpdateNavDisplay" />
|
||||
<NavMenu EC_compressUpdated="UpdateNavDisplay" EC_titleUpdated="TitlePage" />
|
||||
</div>
|
||||
|
||||
<main>
|
||||
<div class="top-row px-4">
|
||||
<CmpHeader CurrLang="@currLang" EC_LangSelected="SetLang"></CmpHeader>
|
||||
<CmpHeader CurrLang="@currLang" TitlePage="@titlePage" EC_LangSelected="SetLang"></CmpHeader>
|
||||
</div>
|
||||
|
||||
<article class="content px-4" style="padding-bottom: 40px;">
|
||||
|
||||
@@ -16,6 +16,11 @@ namespace Lux.UI.Components.Layout
|
||||
sideClass = navLarge ? "sidebar" : "sidebarSmall";
|
||||
}
|
||||
|
||||
protected void TitlePage(string title)
|
||||
{
|
||||
titlePage = title;
|
||||
}
|
||||
|
||||
#endregion Protected Methods
|
||||
|
||||
#region Private Fields
|
||||
@@ -24,6 +29,8 @@ namespace Lux.UI.Components.Layout
|
||||
|
||||
private bool navLarge = true;
|
||||
|
||||
private string titlePage = "";
|
||||
|
||||
#endregion Private Fields
|
||||
|
||||
#region Private Methods
|
||||
|
||||
@@ -7,6 +7,9 @@ namespace Lux.UI.Components.Layout
|
||||
[Parameter]
|
||||
public EventCallback<bool> EC_compressUpdated { get; set; }
|
||||
|
||||
[Parameter]
|
||||
public EventCallback<string> EC_titleUpdated { get; set; }
|
||||
|
||||
#endregion Public Properties
|
||||
|
||||
#region Public Methods
|
||||
@@ -38,6 +41,7 @@ namespace Lux.UI.Components.Layout
|
||||
currentUrl = NavigationManager.ToBaseRelativePath(NavigationManager.Uri);
|
||||
NavigationManager.LocationChanged += OnLocationChanged;
|
||||
UpdateDict();
|
||||
AggiornaNomePagina();
|
||||
}
|
||||
|
||||
protected void ToggleCompress()
|
||||
@@ -62,6 +66,8 @@ namespace Lux.UI.Components.Layout
|
||||
private bool onlyIcon = false;
|
||||
private Dictionary<string, List<string>> PageDict = new Dictionary<string, List<string>>();
|
||||
|
||||
private string currentPageName = string.Empty;
|
||||
|
||||
#endregion Private Fields
|
||||
|
||||
#region Private Properties
|
||||
@@ -75,8 +81,17 @@ namespace Lux.UI.Components.Layout
|
||||
private void OnLocationChanged(object? sender, LocationChangedEventArgs e)
|
||||
{
|
||||
currentUrl = NavigationManager.ToBaseRelativePath(e.Location);
|
||||
AggiornaNomePagina();
|
||||
StateHasChanged();
|
||||
}
|
||||
private Task AggiornaNomePagina()
|
||||
{
|
||||
// Estrae solo il percorso (es. "Home", "Template") senza query/hash
|
||||
var path = NavigationManager.ToBaseRelativePath(NavigationManager.Uri);
|
||||
currentPageName = path.Split('?')[0].Split('#')[0].TrimStart('/');
|
||||
|
||||
return EC_titleUpdated.InvokeAsync(currentPageName);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Aggiornamento dizionari per pagine raggruppate in sottomenu
|
||||
|
||||
@@ -1,11 +1,11 @@
|
||||
@page "/ConfListNew"
|
||||
|
||||
<div class="alert alert-secondary shadow">
|
||||
@* <div class="alert alert-secondary shadow">
|
||||
<div class="d-flex px-0 fs-3 gap-3">
|
||||
<b>Configurazioni</b>
|
||||
<i class="fa-solid fa-gears"></i>
|
||||
</div>
|
||||
</div>
|
||||
</div> *@
|
||||
|
||||
<div class="flex-grow-1 overflow-auto p-3">
|
||||
@if (isLoading)
|
||||
|
||||
@@ -1,7 +1,34 @@
|
||||
@page "/Customer"
|
||||
@inherits BaseComp
|
||||
|
||||
<div class="card shadow">
|
||||
<div class="d-flex align-items-center justify-content-between px-4">
|
||||
<button class="btn btn-success shadow-sm rounded-4" style="width:7em; height:3em;" @onclick="DoAdd">
|
||||
<i class="fa-solid fa-user me-1"></i> @Traduci("nuovo")
|
||||
</button>
|
||||
<div class="input-group input-group rounded-2 border-2 shadow-sm" style="width:20em;" title="@Traduci("ricerca")">
|
||||
<span class="input-group-text"><i class="fas fa-search"></i></span>
|
||||
<input type="text" class="form-control" accesskey="/" placeholder="Cerca [/] (3+ char)" @bind="@SearchVal">
|
||||
<button class="btn @btnResetCss" @onclick="ResetSearch"><i class="fas fa-ban"></i></button>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="flex-grow-1 overflow-auto my-2 px-3 py-1 shadow rounded-2 border-2">
|
||||
@if (isLoading)
|
||||
{
|
||||
<LoadingData></LoadingData>
|
||||
}
|
||||
else
|
||||
{
|
||||
if (editRecord != null)
|
||||
{
|
||||
<CustomerEdit CurrRecord="editRecord" EC_Updated="DoSaveSelCustomer" EC_Close="DoCancel"></CustomerEdit>
|
||||
}
|
||||
<CustomerMan CustomerList="ListCustomer" SearchVal="@SearchVal" EC_EditReq="EditCustomer" EC_UpdateReq="DoReloadAsync"></CustomerMan>
|
||||
}
|
||||
</div>
|
||||
|
||||
|
||||
@* <div class="card shadow">
|
||||
<div class="card-header">
|
||||
<div class=" d-flex justify-content-between">
|
||||
<div class="px-0 fs-3">
|
||||
@@ -9,7 +36,7 @@
|
||||
<button class="btn btn-success" @onclick="DoAdd"><i class="fa-solid fa-user"></i> @Traduci("nuovo")</button>
|
||||
</div>
|
||||
<div class="px-0">
|
||||
<div class="input-group input-group-sm" title="ricerca">
|
||||
<div class="input-group input-group-sm" title="@Traduci("ricerca")">
|
||||
<span class="input-group-text"><i class="fas fa-search"></i></span>
|
||||
<input type="text" class="form-control" accesskey="/" placeholder="Cerca [/] (3+ char)" @bind="@SearchVal">
|
||||
<button class="btn @btnResetCss" @onclick="ResetSearch"><i class="fas fa-ban"></i></button>
|
||||
@@ -32,3 +59,4 @@
|
||||
}
|
||||
</div>
|
||||
</div>
|
||||
*@
|
||||
@@ -9,7 +9,7 @@
|
||||
<button class="btn btn-success" @onclick="DoAdd"><i class="fa-solid fa-user"></i> @Traduci("nuovo")</button>
|
||||
</div>
|
||||
<div class="px-0">
|
||||
<div class="input-group input-group-sm" title="ricerca">
|
||||
<div class="input-group input-group-sm" title="@Traduci("ricerca")">
|
||||
<span class="input-group-text"><i class="fas fa-search"></i></span>
|
||||
<input type="text" class="form-control" accesskey="/" placeholder="Cerca [/] (3+ char)" @bind="@SearchVal">
|
||||
<button class="btn @btnResetCss" @onclick="ResetSearch"><i class="fas fa-ban"></i></button>
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
@page "/GenList"
|
||||
|
||||
@inherits BaseComp
|
||||
|
||||
<div class="card shadow">
|
||||
<div class="card-header">
|
||||
@@ -9,7 +9,7 @@
|
||||
</div>
|
||||
<div class="px-0 d-flex justify-content-between">
|
||||
<div class="px-1">
|
||||
<div class="input-group input-group-sm" title="ricerca">
|
||||
<div class="input-group input-group-sm" title="@Traduci("ricerca")">
|
||||
<span class="input-group-text"><i class="fas fa-search"></i></span>
|
||||
<input type="text" class="form-control" @bind="@SearchVal">
|
||||
<button class="btn btn-outline-secondary" @onclick="ResetSearch"><i class="fas fa-ban"></i></button>
|
||||
|
||||
@@ -1,14 +1,15 @@
|
||||
@page "/JobRoute"
|
||||
@inherits BaseComp
|
||||
|
||||
<div class="card shadow">
|
||||
<div class="card-header">
|
||||
<div class=" d-flex justify-content-between">
|
||||
<div class="px-0 fs-3">
|
||||
<b>Cicli di Lavoro</b>
|
||||
<b>@Traduci("cicli_cicliLavoro")</b>
|
||||
</div>
|
||||
<div class="px-0 d-flex justify-content-between">
|
||||
<div class="px-1">
|
||||
<div class="input-group input-group-sm" title="ricerca">
|
||||
<div class="input-group input-group-sm" title="@Traduci("ricerca")">
|
||||
<span class="input-group-text"><i class="fas fa-search"></i></span>
|
||||
<input type="text" class="form-control" @bind="@searchVal">
|
||||
<button class="btn btn-outline-secondary" @onclick="ResetSearch"><i class="fas fa-ban"></i></button>
|
||||
|
||||
@@ -1,6 +1,39 @@
|
||||
@page "/OffStats"
|
||||
|
||||
<div class="card shadow">
|
||||
<div class="d-flex align-items-center justify-content-between px-4">
|
||||
<a href="@NavigationManager.ToAbsoluteUri("Offers")"
|
||||
class="btn btn-primary shadow-sm rounded-4 d-flex align-items-center gap-2"
|
||||
style="width:7em; height:3em;">
|
||||
<i class="fa-solid fa-list ms-1"></i> Offerte
|
||||
</a>
|
||||
<div class="input-group input-group rounded-2 border-2 shadow-sm" style="width:35em;">
|
||||
<div class="input-group">
|
||||
<span class="input-group-text">Da:</span>
|
||||
<input type="datetime-local"
|
||||
class="form-control"
|
||||
min="@periodoLimit.Inizio.AddHours(-1).ToString("yyyy-MM-ddTHH:mm")"
|
||||
max="@DateTime.Now.Hour.ToString("yyyy-MM-ddTHH:mm")"
|
||||
@bind="@dtFrom" />
|
||||
|
||||
<span class="input-group-text">A:</span>
|
||||
<input type="datetime-local"
|
||||
class="form-control"
|
||||
min="@periodoLimit.Inizio.ToString("yyyy-MM-ddTHH:mm")"
|
||||
max="@DateTime.Now.Hour.ToString("yyyy-MM-ddTHH:mm")"
|
||||
@bind="@dtTo" />
|
||||
|
||||
<button class="btn btn-sm @btnReload" @onclick="DoReload">
|
||||
Carica <i class="fa-solid fa-arrows-rotate"></i>
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="flex-grow-1 overflow-auto m-2 p-3 shadow rounded-2 border-2">
|
||||
<OfferStats AllRecords="AllOfferRecords"></OfferStats>
|
||||
</div>
|
||||
|
||||
|
||||
@* <div class="card shadow">
|
||||
<div class="card-header">
|
||||
<div class="card-title m-1">
|
||||
<div class="d-flex align-items-center justify-content-between fs-4">
|
||||
@@ -38,85 +71,4 @@
|
||||
<div class="card-body">
|
||||
<OfferStats AllRecords="AllOfferRecords"></OfferStats>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@* <div class="card shadow">
|
||||
<div class="card-header d-flex align-items-center justify-content-between">
|
||||
<div class="px-0">
|
||||
<div class="fw-bold fs-4">Offerte</div>
|
||||
</div>
|
||||
<div class="px-0 small d-flex">
|
||||
<div class="input-group mb-3">
|
||||
<span class="input-group-text">Da:</span>
|
||||
<input type="datetime-local"
|
||||
class="form-control"
|
||||
min="@periodoLimit.Inizio.AddHours(-1).ToString("yyyy-MM-ddTHH:mm")"
|
||||
max="@DateTime.Now.Hour.ToString("yyyy-MM-ddTHH:mm")"
|
||||
@bind="@dtFrom" />
|
||||
|
||||
<span class="input-group-text">A:</span>
|
||||
<input type="datetime-local"
|
||||
class="form-control"
|
||||
min="@periodoLimit.Inizio.ToString("yyyy-MM-ddTHH:mm")"
|
||||
max="@DateTime.Now.Hour.ToString("yyyy-MM-ddTHH:mm")"
|
||||
@bind="@dtTo" />
|
||||
|
||||
<button class="btn btn-sm @btnReload" @onclick="DoReload">
|
||||
Carica <i class="fa-solid fa-arrows-rotate"></i>
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="card-body">
|
||||
<div class="row px-2">
|
||||
<div class="col-2 px-2">
|
||||
<div class="card border-0 rounded-3 shadow">
|
||||
<div class="card-header bg-primary bg-gradient bg-opacity-25 p-2 rounded">
|
||||
<div class="d-flex align-items-center justify-content-center">
|
||||
<span class="fw-bold text-dark fs-5">Stato offerte</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<PieChart CanvasId="pieOfferCount" PieDict="@DatasetCount" DictColorFill="@FillColors" DictColorBorder="@BorderColors" Label="# Richieste" />
|
||||
</div>
|
||||
<div class="col-2 px-2">
|
||||
<div class="card border-0 rounded-3 shadow">
|
||||
<div class="card-header bg-primary bg-gradient bg-opacity-25 p-2 rounded">
|
||||
<div class="d-flex align-items-center justify-content-center">
|
||||
<span class="fw-bold text-dark fs-5">Venditori</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<PieChart CanvasId="pieDealerCount" PieDict="@DatasetDealerCount" DictColorFill="@FillDealerColors" DictColorBorder="@BorderDealerColors" Label="# Offerte" />
|
||||
</div>
|
||||
<div class="col-7 ps-5">
|
||||
<div class="row">
|
||||
<div class="col-5">
|
||||
<div class="card border-0 rounded-3 shadow">
|
||||
<div class="card-header bg-primary bg-gradient bg-opacity-25 p-4 rounded">
|
||||
<div class="d-flex align-items-center gap-2">
|
||||
<span class="text-primary"><i class="fa-solid fa-coins fa-2x"></i></span>
|
||||
<span class="fw-bold text-dark fs-5 ps-1">Margine medio:</span>
|
||||
<span class="text-primary fs-5 fw-semibold">@MargineMedio() %</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row pt-3">
|
||||
<div class="col-5">
|
||||
<div class="card border-0 rounded-3 shadow">
|
||||
<div class="card-header bg-primary bg-gradient bg-opacity-25 p-4 rounded">
|
||||
<div class="d-flex align-items-center gap-2">
|
||||
<span class="text-primary"><i class="fa-solid fa-home fa-2x"></i></span>
|
||||
<span class="fw-bold text-dark fs-5 ps-1">Finestre per offerta:</span>
|
||||
<span class="text-primary fs-5 fw-semibold">@NumFinestreMedio()</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div> *@
|
||||
</div> *@
|
||||
@@ -22,12 +22,6 @@ namespace Lux.UI.Components.Pages
|
||||
private List<OfferModel> AllOfferRecords { get; set; } = new();
|
||||
|
||||
private bool isLoading = false;
|
||||
//private Dictionary<string, string> FillColors = new();
|
||||
//private Dictionary<string, string> BorderColors = new();
|
||||
//private Dictionary<string, double> DatasetCount = new();
|
||||
//private Dictionary<string, string> FillDealerColors = new();
|
||||
//private Dictionary<string, string> BorderDealerColors = new();
|
||||
//private Dictionary<string, double> DatasetDealerCount = new();
|
||||
private bool needReload = false;
|
||||
private EgwCoreLib.Utils.DtUtils.Periodo periodoLimit = new EgwCoreLib.Utils.DtUtils.Periodo(EgwCoreLib.Utils.DtUtils.PeriodSet.LastYear);
|
||||
////private EgwCoreLib.Utils.DtUtils.Periodo periodoSel = new EgwCoreLib.Utils.DtUtils.Periodo(DateTime.Today.AddHours(DateTime.Now.Hour - 24 * 7), DateTime.Today.AddHours(DateTime.Now.Hour + 1));
|
||||
@@ -75,88 +69,5 @@ namespace Lux.UI.Components.Pages
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//private double MargineMedio()
|
||||
//{
|
||||
// var filtRecord = AllRecords.Where(x => x.OffertState.Equals(OfferStates.Confirmed));
|
||||
// return Math.Round((filtRecord.Sum(x=>x.TotalPrice) - filtRecord.Sum(x => x.TotalCost)) / filtRecord.Sum(x => x.TotalPrice) * 100, 2);
|
||||
//}
|
||||
|
||||
//private double NumFinestreMedio()
|
||||
//{
|
||||
// var filtRecord = AllRecords.Where(x => x.OffertState.Equals(OfferStates.Confirmed));
|
||||
// return Math.Ceiling(filtRecord.Sum(x => x.NumItems) / filtRecord.Count());
|
||||
//}
|
||||
|
||||
///// <summary>
|
||||
///// Caricamento dati
|
||||
///// </summary>
|
||||
///// <returns></returns>
|
||||
//private async Task DoReloadAsync()
|
||||
//{
|
||||
// await ReloadDataAsync();
|
||||
// ReloadStats();
|
||||
// ReloadDealerStats();
|
||||
// needReload = false;
|
||||
//}
|
||||
//private void ReloadStats()
|
||||
//{
|
||||
// var allStates = Enum.GetNames(typeof(Enums.OfferStates)).ToList();
|
||||
|
||||
// FillColors.Clear();
|
||||
// BorderColors.Clear();
|
||||
|
||||
// for (int i = 0; i < allStates.Count; i++)
|
||||
// {
|
||||
// switch (allStates[i])
|
||||
// {
|
||||
// case "Open":
|
||||
// FillColors[allStates[i]] = "hsla(180, 70%, 50%, 0.5)";
|
||||
// break;
|
||||
// case "Confirmed":
|
||||
// FillColors[allStates[i]] = "hsla(90, 70%, 50%, 0.5)";
|
||||
// break;
|
||||
// case "Expired":
|
||||
// FillColors[allStates[i]] = "hsla(0, 70%, 50%, 0.5)";
|
||||
// break;
|
||||
// case "Lost":
|
||||
// FillColors[allStates[i]] = "hsla(270, 70%, 50%, 0.5)";
|
||||
// break;
|
||||
// }
|
||||
// //FillColors[allStates[i]] = palette[i];
|
||||
// BorderColors[allStates[i]] = ColorHelper.ToOpaque(FillColors[allStates[i]]);
|
||||
// }
|
||||
|
||||
// DatasetCount = AllRecords
|
||||
// .Where(p => p.OffertState != null)
|
||||
// .GroupBy(p => p.OffertState.ToString())
|
||||
// .ToDictionary(g => g.Key, g => (double)g.Count());
|
||||
|
||||
// if (DatasetCount == null || DatasetCount.Count == 0)
|
||||
// DatasetCount = new Dictionary<string, double> { ["Nessuna Offerta"] = 1 };
|
||||
//}
|
||||
|
||||
//private void ReloadDealerStats()
|
||||
//{
|
||||
// var allDealer = AllRecords.Select(x=>x.DealerNav.LastName).Distinct().ToList();
|
||||
// var palette = ColorHelper.GeneratePalette(allDealer.Count, 0.5);
|
||||
|
||||
// FillDealerColors.Clear();
|
||||
// BorderDealerColors.Clear();
|
||||
|
||||
// for (int i = 0; i < allDealer.Count; i++)
|
||||
// {
|
||||
// FillDealerColors[allDealer[i]] = palette[i];
|
||||
// BorderDealerColors[allDealer[i]] = ColorHelper.ToOpaque(palette[i]);
|
||||
// }
|
||||
|
||||
// DatasetDealerCount = AllRecords
|
||||
// .Where(p => p.OffertState != null)
|
||||
// .GroupBy(p => p.DealerNav.LastName)
|
||||
// .ToDictionary(g => g.Key, g => (double)g.Count());
|
||||
|
||||
// if (DatasetDealerCount == null || DatasetDealerCount.Count == 0)
|
||||
// DatasetDealerCount = new Dictionary<string, double> { ["Nessun venditore"] = 1 };
|
||||
//}
|
||||
}
|
||||
}
|
||||
@@ -15,22 +15,22 @@
|
||||
<div class="px-0 row">
|
||||
<div class="col px-0">
|
||||
<span @onclick="() => AdvStep(Enums.CompileStep.Header)">
|
||||
<StepArrow ObjId="1" StepText="Testata" BlockStyle="@(ArrowBackCol(Enums.CompileStep.Header))" StrokeWidth="4" ObjW="360" ObjH="60" StrokeColors="@listBord01" TipAngle="90" TextStyle="@txtStyle"></StepArrow>
|
||||
<StepArrow ObjId="1" StepText="@Traduci("offerta_testata")" BlockStyle="@(ArrowBackCol(Enums.CompileStep.Header))" StrokeWidth="4" ObjW="360" ObjH="60" StrokeColors="@listBord01" TipAngle="90" TextStyle="@txtStyle"></StepArrow>
|
||||
</span>
|
||||
</div>
|
||||
<div class="col px-0">
|
||||
<span @onclick="() => AdvStep(Enums.CompileStep.General)">
|
||||
<StepArrow ObjId="2" StepText="Generale" BlockStyle="@(ArrowBackCol(Enums.CompileStep.General))" StrokeWidth="4" ObjW="360" ObjH="60" StrokeColors="@listBord01" TipAngle="90" TextStyle="@txtStyle"></StepArrow>
|
||||
<StepArrow ObjId="2" StepText="@Traduci("offerta_generale")" BlockStyle="@(ArrowBackCol(Enums.CompileStep.General))" StrokeWidth="4" ObjW="360" ObjH="60" StrokeColors="@listBord01" TipAngle="90" TextStyle="@txtStyle"></StepArrow>
|
||||
</span>
|
||||
</div>
|
||||
<div class="col px-0">
|
||||
<span @onclick="() => AdvStep(Enums.CompileStep.Rows)">
|
||||
<StepArrow ObjId="3" StepText="Righe" BlockStyle="@(ArrowBackCol(Enums.CompileStep.Rows))" StrokeWidth="4" ObjW="360" ObjH="60" StrokeColors="@listBord01" TipAngle="90" TextStyle="@txtStyle"></StepArrow>
|
||||
<StepArrow ObjId="3" StepText="@Traduci("offerta_righe")" BlockStyle="@(ArrowBackCol(Enums.CompileStep.Rows))" StrokeWidth="4" ObjW="360" ObjH="60" StrokeColors="@listBord01" TipAngle="90" TextStyle="@txtStyle"></StepArrow>
|
||||
</span>
|
||||
</div>
|
||||
<div class="col px-0">
|
||||
<span @onclick="() => AdvStep(Enums.CompileStep.Delivery)">
|
||||
<StepArrow ObjId="4" StepText="Consegna" BlockStyle="@(ArrowBackCol(Enums.CompileStep.Delivery))" StrokeWidth="4" ObjW="360" ObjH="60" StrokeColors="@listBord01" TipAngle="90" TextStyle="@txtStyle"></StepArrow>
|
||||
<StepArrow ObjId="4" StepText="@Traduci("offerta_consegna")" BlockStyle="@(ArrowBackCol(Enums.CompileStep.Delivery))" StrokeWidth="4" ObjW="360" ObjH="60" StrokeColors="@listBord01" TipAngle="90" TextStyle="@txtStyle"></StepArrow>
|
||||
</span>
|
||||
</div>
|
||||
@* <div class="col px-0">
|
||||
@@ -90,7 +90,7 @@ else
|
||||
@foreach (var itemState in Enum.GetValues(typeof(Enums.OfferStates)).Cast<Enums.OfferStates>())
|
||||
{
|
||||
<div class="col">
|
||||
<button class="btn btn-sm btn-primary w-100 m-1" @onclick="() => SetState(EditStateRec, itemState)">@itemState</button>
|
||||
<button class="btn btn-sm btn-primary w-100 m-1" @onclick="() => SetState(EditStateRec, itemState)">@Traduci("offerta_" + itemState.ToString().ToLower())</button>
|
||||
</div>
|
||||
}
|
||||
</div>
|
||||
@@ -116,10 +116,10 @@ else
|
||||
<div class="input-group">
|
||||
<label class="input-group-text bg-opacity-50">@Traduci("stato")</label>
|
||||
<select class="form-select form-select-sm" @bind="@FiltState">
|
||||
<option value="">-- Tutti --</option>
|
||||
<option value="">-- @Traduci("tutti") --</option>
|
||||
@foreach (var item in Enum.GetNames(typeof(Enums.OfferStates)))
|
||||
{
|
||||
<option value="@item">@item</option>
|
||||
<option value="@item">@Traduci("offerta_" + item.ToString().ToLower())</option>
|
||||
}
|
||||
</select>
|
||||
|
||||
@@ -201,7 +201,7 @@ else
|
||||
{
|
||||
<td>
|
||||
<button class="btn btn-sm bg-@ButtonStateCss(item) bg-gradient bg-opacity-25 text-dark rounded-pill" @onclick="() => EditState(item)">
|
||||
@item.OffertState
|
||||
@Traduci("offerta_" + @item.OffertState.ToString().ToLower())
|
||||
</button>
|
||||
</td>
|
||||
}
|
||||
|
||||
@@ -216,9 +216,11 @@ namespace Lux.UI.Components.Pages
|
||||
|
||||
private void DoAdd()
|
||||
{
|
||||
int refNum = AllRecords.Where(x=>x.RefYear == DateTime.Today.Year).Max(x=>x.RefNum) + 1;
|
||||
EditRecord = new OfferModel()
|
||||
{
|
||||
RefYear = DateTime.Today.Year,
|
||||
RefNum = refNum,
|
||||
Inserted = DateTime.Today,
|
||||
Description = $"Nuova Offerta {DateTime.Today:ddd yyyy.MM.dd}",
|
||||
ValidUntil = DateTime.Today.AddMonths(1)
|
||||
|
||||
@@ -175,10 +175,10 @@ else
|
||||
<div class="input-group">
|
||||
<label class="input-group-text bg-opacity-50">@Traduci("stato")</label>
|
||||
<select @bind="@FiltState" class="form-select form-select-sm">
|
||||
<option value="">-- Tutti --</option>
|
||||
<option value="">-- @Traduci("tutti") --</option>
|
||||
@foreach (var sType in Enum.GetValues(typeof(EgwCoreLib.Lux.Core.Enums.OrderStates)))
|
||||
{
|
||||
<option value="@sType">@sType</option>
|
||||
<option value="@sType">@Traduci("ordine_" + sType.ToString().ToLower())</option>
|
||||
}
|
||||
</select>
|
||||
|
||||
@@ -253,7 +253,7 @@ else
|
||||
</td>
|
||||
<td>
|
||||
<button class="btn btn-sm bg-@ButtonStateCss(item) bg-gradient bg-opacity-25 text-dark rounded-pill" @onclick="() => ManageCalcReq(item)">
|
||||
@item.OrderState
|
||||
@Traduci("ordine_"+@item.OrderState.ToString().ToLower())
|
||||
</button>
|
||||
</td>
|
||||
<td>
|
||||
|
||||
@@ -1,14 +1,15 @@
|
||||
@page "/Resources"
|
||||
@inherits BaseComp
|
||||
|
||||
<div class="card shadow">
|
||||
<div class="card-header">
|
||||
<div class=" d-flex justify-content-between">
|
||||
<div class="px-0 fs-3">
|
||||
<b>Risorse</b>
|
||||
<b>@Traduci("navMan_risorse")</b>
|
||||
</div>
|
||||
<div class="px-0 d-flex justify-content-between">
|
||||
<div class="px-1">
|
||||
<div class="input-group input-group-sm" title="ricerca">
|
||||
<div class="input-group input-group-sm" title="@Traduci("ricerca")">
|
||||
<span class="input-group-text"><i class="fas fa-search"></i></span>
|
||||
<input type="text" class="form-control" @bind="@searchVal">
|
||||
<button class="btn btn-outline-secondary" @onclick="ResetSearch"><i class="fas fa-ban"></i></button>
|
||||
|
||||
@@ -9,19 +9,8 @@
|
||||
<b>@Traduci("navMan_cataloghi")</b>
|
||||
</div>
|
||||
<div class="px-0 d-flex justify-content-between">
|
||||
@* <div class="px-1">
|
||||
<div class="input-group input-group-sm" title="Environment">
|
||||
<span class="input-group-text">Envir</span>
|
||||
<select @bind="@CurrEnvir" class="form-select">
|
||||
@foreach (var item in System.Enum.GetValues(typeof(EgwMultiEngineManager.Data.Constants.EXECENVIRONMENTS)))
|
||||
{
|
||||
<option value="@item">@item</option>
|
||||
}
|
||||
</select>
|
||||
</div>
|
||||
</div> *@
|
||||
<div class="px-1">
|
||||
<div class="input-group input-group-sm" title="ricerca">
|
||||
<div class="input-group input-group-sm" title="@Traduci("ricerca")">
|
||||
<span class="input-group-text"><i class="fas fa-search"></i></span>
|
||||
<input type="text" class="form-control" @bind="@searchVal">
|
||||
<button class="btn btn-outline-secondary" @onclick="ResetSearch"><i class="fas fa-ban"></i></button>
|
||||
|
||||
@@ -1,6 +1,5 @@
|
||||
@page "/vocabulary"
|
||||
@inherits BaseComp
|
||||
@using Lux.UI.Components.Compo.Admin
|
||||
|
||||
<div class="card shadow">
|
||||
<div class="card-header">
|
||||
@@ -11,7 +10,7 @@
|
||||
<div class="px-0">
|
||||
@if (currRec == null)
|
||||
{
|
||||
<div class="input-group input-group-sm" title="ricerca">
|
||||
<div class="input-group input-group-sm" title="@Traduci("ricerca")">
|
||||
<span class="input-group-text"><i class="fas fa-search"></i></span>
|
||||
<input type="text" class="form-control" @bind="@SearchVal">
|
||||
<button class="btn @btnResetCss" @onclick="ResetSearch"><i class="fas fa-ban"></i></button>
|
||||
|
||||
@@ -9,10 +9,13 @@
|
||||
</div>
|
||||
<div class="px-0 d-flex align-items-center">
|
||||
<div class="px-2">
|
||||
<div class="input-group input-group-sm" title="ricerca">
|
||||
<div class="input-group input-group-sm" title="@Traduci("ricerca")">
|
||||
<span class="input-group-text">@Traduci("ambiente")</span>
|
||||
<select class="form-select" @bind="@SearchVal">
|
||||
@foreach (var item in EnvirList)
|
||||
<select class="form-select" @bind="@FiltEnvir">
|
||||
<option value="">-- @Traduci("tutti") --</option>
|
||||
@foreach (var item in Enum.GetValues(typeof(EgwMultiEngineManager.Data.Constants.EXECENVIRONMENTS))
|
||||
.Cast<EgwMultiEngineManager.Data.Constants.EXECENVIRONMENTS>()
|
||||
.Where(e => Convert.ToInt32(e) != 0))
|
||||
{
|
||||
<option value="@item">@item</option>
|
||||
}
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
using EgwCoreLib.Lux.Core.Generic;
|
||||
using EgwCoreLib.Razor;
|
||||
using Newtonsoft.Json;
|
||||
using System.Linq;
|
||||
using static EgwCoreLib.Lux.Core.Enums;
|
||||
using static Lux.UI.Components.Compo.Planner.BalanceProgGroup;
|
||||
|
||||
@@ -73,28 +74,16 @@ namespace Lux.UI.Components.Pages
|
||||
|
||||
#region Private Properties
|
||||
|
||||
private List<string> EnvirList
|
||||
private EgwMultiEngineManager.Data.Constants.EXECENVIRONMENTS? searchValByEnvir { get; set; } = null;
|
||||
private EgwMultiEngineManager.Data.Constants.EXECENVIRONMENTS? FiltEnvir
|
||||
{
|
||||
get
|
||||
{
|
||||
var listEnum = Enum.GetNames(typeof(EgwMultiEngineManager.Data.Constants.EXECENVIRONMENTS))
|
||||
.ToList();
|
||||
if (listEnum.Count > 0)
|
||||
{
|
||||
listEnum[0] = "TUTTI";
|
||||
}
|
||||
return listEnum;
|
||||
}
|
||||
}
|
||||
private string searchValByState { get; set; } = EgwMultiEngineManager.Data.Constants.EXECENVIRONMENTS.WINDOW.ToString();
|
||||
private string SearchVal
|
||||
{
|
||||
get => searchValByState;
|
||||
get => searchValByEnvir;
|
||||
set
|
||||
{
|
||||
if (searchValByState != value)
|
||||
if (searchValByEnvir != value)
|
||||
{
|
||||
searchValByState = value;
|
||||
searchValByEnvir = value;
|
||||
DoFilter();
|
||||
UpdateTable();
|
||||
}
|
||||
}
|
||||
@@ -484,6 +473,7 @@ namespace Lux.UI.Components.Pages
|
||||
ListEstimRecordsAll = await OrdRService.GetByStateMinAsync(OrderStates.Estimated, PeriodoSel.Inizio, PeriodoSel.Fine);
|
||||
ListBalancedRecordsAll = await PGService.GetByOrderStateAsync(OrderStates.Assigned);
|
||||
ListOdlAll = await POService.GetUnassignOdlDtoAsync();
|
||||
DoFilter();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
@@ -615,39 +605,42 @@ namespace Lux.UI.Components.Pages
|
||||
UpdateTable();
|
||||
}
|
||||
|
||||
private void DoFilter()
|
||||
{
|
||||
ListEstimRecords = ListEstimRecordsAll.Where(x => FiltEnvir == null || x.Envir == FiltEnvir).ToList();
|
||||
ListBalancedRecords = ListBalancedRecordsAll.Where(x => FiltEnvir == null || x.OrderRowNav.Envir == FiltEnvir).ToList();
|
||||
ListOdl = ListOdlAll.Where(x => FiltEnvir == null || x.Envir == FiltEnvir).ToList();
|
||||
|
||||
// if (ListEstimRecordsAll != null && ListEstimRecordsAll.Count > 0)
|
||||
// {
|
||||
// ListEstimRecords = ListEstimRecordsAll.Where(x => x.Envir.ToString() == searchValByEnvir).ToList();
|
||||
// }
|
||||
// if (ListBalancedRecordsAll != null && ListBalancedRecordsAll.Count > 0)
|
||||
// {
|
||||
// ListBalancedRecords = ListBalancedRecordsAll.Where(x => x.OrderRowNav.Envir.ToString() == searchValByEnvir).ToList();
|
||||
// }
|
||||
// if (ListOdlAll != null && ListOdlAll.Count > 0)
|
||||
// {
|
||||
// ListOdl = ListOdlAll.Where(x => x.Envir.ToString() == searchValByEnvir).ToList();
|
||||
// }
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Filtro e paginazione
|
||||
/// </summary>
|
||||
private void UpdateTable()
|
||||
{
|
||||
if (searchValByState.Equals("TUTTI"))
|
||||
{
|
||||
ListEstimRecords = ListEstimRecordsAll;
|
||||
ListBalancedRecords = ListBalancedRecordsAll;
|
||||
ListOdl = ListOdlAll;
|
||||
}
|
||||
else
|
||||
{
|
||||
if (ListEstimRecordsAll != null && ListEstimRecordsAll.Count > 0)
|
||||
{
|
||||
ListEstimRecords = ListEstimRecordsAll.Where(x => x.Envir.ToString() == searchValByState).ToList();
|
||||
}
|
||||
if (ListBalancedRecordsAll != null && ListBalancedRecordsAll.Count > 0)
|
||||
{
|
||||
ListBalancedRecords = ListBalancedRecordsAll.Where(x => x.OrderRowNav.Envir.ToString() == searchValByState).ToList();
|
||||
}
|
||||
if (ListOdlAll != null && ListOdlAll.Count > 0)
|
||||
{
|
||||
ListOdl = ListOdlAll.Where(x => x.Envir.ToString() == searchValByState).ToList();
|
||||
}
|
||||
#if false
|
||||
// fix paginazione
|
||||
ListRecords = ListFilt
|
||||
.Skip(numRecord * (currPage - 1))
|
||||
.Take(numRecord)
|
||||
.ToList();
|
||||
#endif
|
||||
}
|
||||
|
||||
#if false
|
||||
// fix paginazione
|
||||
ListRecords = ListFilt
|
||||
.Skip(numRecord * (currPage - 1))
|
||||
.Take(numRecord)
|
||||
.ToList();
|
||||
|
||||
private global::System.Threading.Tasks.Task DoBalance(global::System.Int32 args)
|
||||
{
|
||||
throw new global::System.NotImplementedException();
|
||||
@@ -657,8 +650,8 @@ namespace Lux.UI.Components.Pages
|
||||
throw new global::System.NotImplementedException();
|
||||
}
|
||||
#endif
|
||||
}
|
||||
|
||||
|
||||
#endregion Private Methods
|
||||
#endregion Private Methods
|
||||
}
|
||||
}
|
||||
@@ -10,6 +10,7 @@
|
||||
@using Lux.UI.Client
|
||||
@using Lux.UI.Components
|
||||
@using Lux.UI.Components.Compo
|
||||
@using Lux.UI.Components.Compo.Admin
|
||||
@using Lux.UI.Components.Compo.Charts
|
||||
@using Lux.UI.Components.Compo.Common
|
||||
@using Lux.UI.Components.Compo.Config
|
||||
|
||||
Reference in New Issue
Block a user