Fix gestione update HW da elenco conf
This commit is contained in:
@@ -43,6 +43,7 @@ namespace EgwCoreLib.Lux.Data.Services
|
||||
bomChannel = _config.GetValue<string>("ServerConf:BomChannel") ?? "Egw:bom";
|
||||
updateChannel = _config.GetValue<string>("ServerConf:UpdateChannel") ?? "Egw:update";
|
||||
shapeChannel = _config.GetValue<string>("ServerConf:ShapeChannel") ?? "Egw:shape:curr";
|
||||
hwListChannel = _config.GetValue<string>("ServerConf:HwListChannel") ?? "Egw:hw:list";
|
||||
hwOptChannel = _config.GetValue<string>("ServerConf:HwOptChannel") ?? "Egw:hw:opt";
|
||||
profListChannel = _config.GetValue<string>("ServerConf:ProfListChannel") ?? "Egw:prof:list";
|
||||
// Appends ":*" to the channels to enable wildcard subscription for dynamic events
|
||||
@@ -62,6 +63,10 @@ namespace EgwCoreLib.Lux.Data.Services
|
||||
{
|
||||
shapeChannel += ":*";
|
||||
}
|
||||
if (!hwListChannel.EndsWith(":*"))
|
||||
{
|
||||
hwListChannel += ":*";
|
||||
}
|
||||
if (!hwOptChannel.EndsWith(":*"))
|
||||
{
|
||||
hwOptChannel += ":*";
|
||||
@@ -82,6 +87,7 @@ namespace EgwCoreLib.Lux.Data.Services
|
||||
PipeBom = new MessagePipe(RedisConn, bomChannel);
|
||||
PipeUpdate = new MessagePipe(RedisConn, updateChannel);
|
||||
PipeShape = new MessagePipe(RedisConn, shapeChannel);
|
||||
PipeHwList = new MessagePipe(RedisConn, hwListChannel);
|
||||
PipeHwOpt = new MessagePipe(RedisConn, hwOptChannel);
|
||||
PipeProfList = new MessagePipe(RedisConn, profListChannel);
|
||||
}
|
||||
@@ -95,6 +101,11 @@ namespace EgwCoreLib.Lux.Data.Services
|
||||
/// </summary>
|
||||
public MessagePipe PipeBom { get; set; } = null!;
|
||||
|
||||
/// <summary>
|
||||
/// Pipe dei messaggi per ritorno HwList da Engine di calcolo verso interfaccia utente.
|
||||
/// I messaggi vengono inviati sul canale Redis definito da HwListChannel.
|
||||
/// </summary>
|
||||
public MessagePipe PipeHwList { get; set; } = null!;
|
||||
/// <summary>
|
||||
/// Pipe dei messaggi per ritorno HwOptions calcolate da Engine di calcolo verso interfaccia utente.
|
||||
/// I messaggi vengono inviati sul canale Redis definito da HwOptChannel.
|
||||
@@ -214,6 +225,10 @@ namespace EgwCoreLib.Lux.Data.Services
|
||||
/// </summary>
|
||||
private int cacheTtlShort = 60 * 1;
|
||||
|
||||
/// <summary>
|
||||
/// Canale ritorno Hw List
|
||||
/// </summary>
|
||||
private string hwListChannel = "";
|
||||
/// <summary>
|
||||
/// Canale ritorno Hw Options
|
||||
/// </summary>
|
||||
|
||||
@@ -853,7 +853,7 @@ namespace EgwCoreLib.Lux.Data.Services
|
||||
return fatto;
|
||||
}
|
||||
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// Effettua eliminazione della riga offerta
|
||||
/// </summary>
|
||||
@@ -1000,24 +1000,37 @@ namespace EgwCoreLib.Lux.Data.Services
|
||||
{
|
||||
try
|
||||
{
|
||||
// salvo il set come oggetti deserializzati/testati?
|
||||
#if false
|
||||
// deserializzo la Bom...
|
||||
var bomList = JsonConvert.DeserializeObject<List<BomItemDTO>>(rawContent);
|
||||
if (bomList != null)
|
||||
{
|
||||
// verifico 1:1 gli item ricevuti dalla BOM sul DB con eventuale insert
|
||||
dbController.ItemUpsertFromBom(bomList);
|
||||
// salvo la BOM nel record del DB relativo all'oggetto richiesto
|
||||
dbController.OfferUpsertFromBom(uID, bomList);
|
||||
}
|
||||
#endif
|
||||
// non effettuo salvataggio sul DB perché master del dato è esterno e lo lasceremo solo in cache REDIS
|
||||
await Task.Delay(1);
|
||||
}
|
||||
catch { }
|
||||
}
|
||||
await Task.Delay(1);
|
||||
}
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// Esegue salvataggio ProfileList sul DB
|
||||
/// </summary>
|
||||
/// <param name="uID">UID dell'item offerta di cui si è ricevuto la BOM</param>
|
||||
/// <param name="execEnvironment">Environment dell'item</param>
|
||||
/// <param name="rawContent">HardwareModelList serializzata</param>
|
||||
/// <returns></returns>
|
||||
public async Task SaveProfileListAsync(string uID, Constants.EXECENVIRONMENTS execEnvironment, string rawContent)
|
||||
{
|
||||
// salvo sul DB il risultato della BOM
|
||||
if (!string.IsNullOrEmpty(rawContent))
|
||||
{
|
||||
try
|
||||
{
|
||||
// non effettuo salvataggio sul DB perché master del dato è esterno e lo lasceremo solo in cache REDIS
|
||||
await Task.Delay(1);
|
||||
}
|
||||
catch { }
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
#endregion Public Methods
|
||||
|
||||
#region Protected Fields
|
||||
|
||||
@@ -25,8 +25,9 @@ namespace EgwCoreLib.Lux.Data.Services
|
||||
liveTag = _config.GetValue<string>("ServerConf:ImageLiveTag") ?? "svg";
|
||||
cacheTag = _config.GetValue<string>("ServerConf:ImageFileTag") ?? "svgfile";
|
||||
calcTag = _config.GetValue<string>("ServerConf:ImageCalcTag") ?? "svg-preview";
|
||||
bomChannel = _config.GetValue<string>("ServerConf:BomChannel") ?? "Egw-bom";
|
||||
updateChannel = _config.GetValue<string>("ServerConf:UpdateChannel") ?? "Egw-update";
|
||||
bomChannel = _config.GetValue<string>("ServerConf:BomChannel") ?? "Egw:bom";
|
||||
hmlChannel = _config.GetValue<string>("ServerConf:HwListChannel") ?? "Egw:hml";
|
||||
updateChannel = _config.GetValue<string>("ServerConf:UpdateChannel") ?? "Egw:update";
|
||||
// verifico la url base
|
||||
apiUrl = _config.GetValue<string>("ServerConf:Prog.ApiUrl") ?? "https://iis01.egalware.com/lux/srv/api";
|
||||
imgBasePath = _config.GetValue<string>("ServerConf:ImageBaseUrl") ?? "window";
|
||||
@@ -118,7 +119,7 @@ namespace EgwCoreLib.Lux.Data.Services
|
||||
string tag = isLive ? liveTag : cacheTag;
|
||||
if (imgUID.EndsWith(".svg"))
|
||||
{
|
||||
imgUID.Replace(".svg","");
|
||||
imgUID.Replace(".svg", "");
|
||||
}
|
||||
string rndImg = $"{DateTime.Now:HHmmssfff}";
|
||||
string fullUrl = $"{baseUrl}/{tag}/{imgUID}-{rndImg}.svg?envir={envir}".Replace("////", "//");
|
||||
@@ -151,6 +152,23 @@ namespace EgwCoreLib.Lux.Data.Services
|
||||
return $"{rawVal}";
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Salva e invia su channel richiesto un update x UID
|
||||
/// è attesao un refresh per chi sottoscrive il canale
|
||||
/// </summary>
|
||||
/// <param name="env"></param>
|
||||
/// <param name="uid"></param>
|
||||
public async Task<bool> PublishUpdateAsync(string uid, Constants.EXECENVIRONMENTS env)
|
||||
{
|
||||
bool done = false;
|
||||
// invio notifica sul canale di update generale...
|
||||
string notifyChannel = $"{updateChannel}:{env}";
|
||||
// contenuto è UID
|
||||
long numSent = await _redisService.PublishAsync(notifyChannel, $"{uid}");
|
||||
done = numSent > 0;
|
||||
return done;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Calcola URL immagine dato
|
||||
/// </summary>
|
||||
@@ -188,24 +206,7 @@ namespace EgwCoreLib.Lux.Data.Services
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Salva e invia su channel richiesto un update x UID
|
||||
/// è attesao un refresh per chi sottoscrive il canale
|
||||
/// </summary>
|
||||
/// <param name="env"></param>
|
||||
/// <param name="uid"></param>
|
||||
public async Task<bool> PublishUpdateAsync(string uid, Constants.EXECENVIRONMENTS env)
|
||||
{
|
||||
bool done = false;
|
||||
// invio notifica sul canale di update generale...
|
||||
string notifyChannel = $"{updateChannel}:{env}";
|
||||
// contenuto è UID
|
||||
long numSent = await _redisService.PublishAsync(notifyChannel, $"{uid}");
|
||||
done = numSent > 0;
|
||||
return done;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Salva e invia su channel img redis SVG per il doc richiesto
|
||||
/// Salva e invia su channel dedicato HML l'elenco degli HarwareModel (conf preferiti) gestiti
|
||||
/// </summary>
|
||||
/// <param name="uid"></param>
|
||||
/// <param name="rawData"></param>
|
||||
@@ -220,6 +221,22 @@ namespace EgwCoreLib.Lux.Data.Services
|
||||
return done;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Salva e invia su channel profile list gestiti
|
||||
/// </summary>
|
||||
/// <param name="uid"></param>
|
||||
/// <param name="rawData"></param>
|
||||
public async Task<bool> SaveProfileListAsync(string uid, Constants.EXECENVIRONMENTS env, string rawData)
|
||||
{
|
||||
// salvo img in cache
|
||||
string currKey = $"{redisBaseKey}:{env}:PROFLIST:{uid.Replace("/", ":")}";
|
||||
var done = await _redisService.SetAsync(currKey, rawData);
|
||||
// invio notifica nuova svg generata sul canale... viene inviato solo svg con ID nel canale
|
||||
string notifyChannel = $"{profListChannel}:{uid}";
|
||||
long numSent = await _redisService.PublishAsync(notifyChannel, rawData);
|
||||
return done;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Salva e invia su channel img redis SVG per il doc richiesto
|
||||
/// </summary>
|
||||
@@ -265,18 +282,16 @@ namespace EgwCoreLib.Lux.Data.Services
|
||||
private readonly string apiUrl = "";
|
||||
|
||||
private readonly string bomChannel = "bom:item";
|
||||
private readonly string updateChannel = "ui:update";
|
||||
private readonly string cacheTag = "svgfile";
|
||||
private readonly string calcTag = "svgpreview";
|
||||
private readonly string hmlChannel = "hml:item";
|
||||
private readonly string hwOptChannel = "hw:opt";
|
||||
private readonly string imgBasePath = "";
|
||||
private readonly string liveTag = "svg";
|
||||
|
||||
private readonly string svgChannel = "svg:img";
|
||||
private readonly string shapeChannel = "shape:curr";
|
||||
private readonly string hwOptChannel = "hw:opt";
|
||||
private readonly string profListChannel = "prof:list";
|
||||
|
||||
private readonly string shapeChannel = "shape:curr";
|
||||
private readonly string svgChannel = "svg:img";
|
||||
private readonly string updateChannel = "ui:update";
|
||||
private IConfiguration _config;
|
||||
|
||||
private string imageBaseUrl = "";
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
<TargetFramework>net8.0</TargetFramework>
|
||||
<Nullable>enable</Nullable>
|
||||
<ImplicitUsings>enable</ImplicitUsings>
|
||||
<Version>0.9.2510.2119</Version>
|
||||
<Version>0.9.2510.2210</Version>
|
||||
</PropertyGroup>
|
||||
|
||||
<ItemGroup>
|
||||
|
||||
@@ -50,24 +50,24 @@ namespace Lux.API.Services
|
||||
// gestione ritorno preview SVG
|
||||
if (retData.Args.ContainsKey("Svg"))
|
||||
{
|
||||
// dovrei leggere dagli args l'IUID dell'SVG ritornato...
|
||||
// salvo SVG
|
||||
string newSvg = retData.Args["Svg"];
|
||||
// recupero UID ed SVG
|
||||
string UID = retData.Args["UID"];
|
||||
string newSvg = retData.Args["Svg"];
|
||||
// reinvio in redis (cache + channel)
|
||||
await cacheService.SaveSvgAsync(UID, retData.ExecEnvironment, newSvg);
|
||||
}
|
||||
|
||||
// gesitone ritorno BOM
|
||||
if (retData.Args.ContainsKey("BOM"))
|
||||
{
|
||||
string newBom = retData.Args["BOM"];
|
||||
// recupero UID e BOM
|
||||
string UID = retData.Args["UID"];
|
||||
// salvo BOM ricevuta RAW in redis
|
||||
string newBom = retData.Args["BOM"];
|
||||
// salvo BOM ricevuta RAW in redis (cache)
|
||||
await cacheService.SaveBomAsync(UID, retData.ExecEnvironment, newBom);
|
||||
// salvo la BOM completa con i dati recuperati dal DB
|
||||
await dbService.SaveBomAsync(UID, retData.ExecEnvironment, newBom);
|
||||
|
||||
// pubblico refresh info così da segnalare richeista di update conseguente
|
||||
// pubblico refresh info così da segnalare richiesta di update conseguente
|
||||
await cacheService.PublishUpdateAsync(UID, retData.ExecEnvironment);
|
||||
}
|
||||
|
||||
@@ -75,20 +75,20 @@ namespace Lux.API.Services
|
||||
if (retData.Args.ContainsKey("SashShape"))
|
||||
{
|
||||
//// salvo HardwareList ricevuta
|
||||
//string newHml = retData.Args["HardwareModelList"];
|
||||
//string profList = retData.Args["HardwareModelList"];
|
||||
//string UID = retData.Args["UID"];
|
||||
//await cacheService.SaveHmlAsync(UID, retData.ExecEnvironment, newHml);
|
||||
//await dbService.SaveHmlAsync(UID, retData.ExecEnvironment, newHml);
|
||||
//await cacheService.SaveHmlAsync(UID, retData.ExecEnvironment, profList);
|
||||
//await dbService.SaveHmlAsync(UID, retData.ExecEnvironment, profList);
|
||||
}
|
||||
|
||||
// gestione ritorno opzioni HW
|
||||
if (retData.Args.ContainsKey("HardwareOptions"))
|
||||
{
|
||||
//// salvo HardwareList ricevuta
|
||||
//string newHml = retData.Args["HardwareModelList"];
|
||||
//string profList = retData.Args["HardwareModelList"];
|
||||
//string UID = retData.Args["UID"];
|
||||
//await cacheService.SaveHmlAsync(UID, retData.ExecEnvironment, newHml);
|
||||
//await dbService.SaveHmlAsync(UID, retData.ExecEnvironment, newHml);
|
||||
//await cacheService.SaveHmlAsync(UID, retData.ExecEnvironment, profList);
|
||||
//await dbService.SaveHmlAsync(UID, retData.ExecEnvironment, profList);
|
||||
}
|
||||
|
||||
|
||||
@@ -100,9 +100,10 @@ namespace Lux.API.Services
|
||||
// Gestione ritorno lista preferiti HW (ammissibili)
|
||||
if (retData.Args.ContainsKey("HardwareModelList"))
|
||||
{
|
||||
// salvo HardwareList ricevuta
|
||||
string newHml = retData.Args["HardwareModelList"];
|
||||
// recupero UID e lista preferiti HW
|
||||
string UID = retData.Args["UID"];
|
||||
string newHml = retData.Args["HardwareModelList"];
|
||||
// salvo HardwareList ricevuta
|
||||
await cacheService.SaveHmlAsync(UID, retData.ExecEnvironment, newHml);
|
||||
await dbService.SaveHmlAsync(UID, retData.ExecEnvironment, newHml);
|
||||
}
|
||||
@@ -110,11 +111,12 @@ namespace Lux.API.Services
|
||||
// gestione ritorno lista profili VALIDI per JWD
|
||||
if (retData.Args.ContainsKey("ProfileList"))
|
||||
{
|
||||
//// salvo HardwareList ricevuta
|
||||
//string newHml = retData.Args["HardwareModelList"];
|
||||
//string UID = retData.Args["UID"];
|
||||
//await cacheService.SaveHmlAsync(UID, retData.ExecEnvironment, newHml);
|
||||
//await dbService.SaveHmlAsync(UID, retData.ExecEnvironment, newHml);
|
||||
// recupero UID e elenco profili validi
|
||||
string UID = retData.Args["UID"];
|
||||
string profList = retData.Args["ProfileList"];
|
||||
// salvo ProfileList ricevuta
|
||||
await cacheService.SaveProfileListAsync(UID, retData.ExecEnvironment, profList);
|
||||
await dbService.SaveProfileListAsync(UID, retData.ExecEnvironment, profList);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -7,8 +7,8 @@
|
||||
},
|
||||
"ServerConf": {
|
||||
"BaseUrl": "/lux/srv/",
|
||||
"PubChannel": "EgwDevEngineInput",
|
||||
"SubChannel": "EgwDevEngineOutput",
|
||||
//"PubChannel": "EgwDevEngineInput",
|
||||
//"SubChannel": "EgwDevEngineOutput",
|
||||
"ImageBaseUrl": "https://iis01.egalware.com/lux/srv/api/window/"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -60,6 +60,7 @@
|
||||
"SubChannel": "EgwEngineOutput",
|
||||
"SvgChannel": "Egw:svg:img",
|
||||
"ShapeChannel": "Egw:shape:curr",
|
||||
"HwListChannel": "Egw:hw:list",
|
||||
"HwOptChannel": "Egw:hw:opt",
|
||||
"ProfListChannel": "Egw:prof:list",
|
||||
"BomChannel": "Egw:bom",
|
||||
|
||||
@@ -1,8 +1,13 @@
|
||||
<div class="card shadow">
|
||||
<div class="card-header">
|
||||
<div class="card-header text-bg-secondary">
|
||||
<div class="d-flex justify-content-between">
|
||||
<div class="px-0">
|
||||
<h5>Conf. Hardware</h5>
|
||||
<div class="px-0 d-flex">
|
||||
<div class="px-0">
|
||||
<h5>Conf. Hardware</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>
|
||||
</div>
|
||||
</div>
|
||||
<div class="px-0">
|
||||
<div class="px-0 d-flex justify-content-between">
|
||||
@@ -10,7 +15,7 @@
|
||||
<div class="input-group input-group-sm" title="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>
|
||||
<button class="btn @btnResetCss" @onclick="ResetSearch"><i class="fas fa-ban"></i></button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@@ -31,8 +36,8 @@
|
||||
<table class="table table-sm table-striped">
|
||||
<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>
|
||||
<th class="text-nowrap">
|
||||
Cod.
|
||||
</th>
|
||||
@* <th>ID</th> *@
|
||||
<th class="text-nowrap">Fam.</th>
|
||||
|
||||
@@ -1,17 +1,42 @@
|
||||
using EgwCoreLib.Lux.Core.RestPayload;
|
||||
using EgwCoreLib.Lux.Data.DbModel.Config;
|
||||
using EgwCoreLib.Lux.Data.DbModel.Sales;
|
||||
using EgwCoreLib.Lux.Data.Services;
|
||||
using EgwMultiEngineManager.Data;
|
||||
using Microsoft.AspNetCore.Components;
|
||||
using Microsoft.JSInterop;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace Lux.UI.Components.Compo.Config
|
||||
{
|
||||
public partial class HardwareMan
|
||||
public partial class HardwareMan : IDisposable
|
||||
{
|
||||
#region Public Methods
|
||||
|
||||
/// <summary>
|
||||
/// Dispose sottoscrizione canale
|
||||
/// </summary>
|
||||
public void Dispose()
|
||||
{
|
||||
DLService.PipeHwList.EA_NewMessage -= PipeHwList_EA_NewMessage;
|
||||
}
|
||||
|
||||
#endregion Public Methods
|
||||
|
||||
#region Protected Properties
|
||||
|
||||
[Inject]
|
||||
protected ConfigDataService CDService { get; set; } = null!;
|
||||
|
||||
[Inject]
|
||||
protected IConfiguration Config { get; set; } = null!;
|
||||
|
||||
[Inject]
|
||||
protected CalcRequestService CService { get; set; } = null!;
|
||||
|
||||
[Inject]
|
||||
protected DataLayerServices DLService { get; set; } = null!;
|
||||
|
||||
[Inject]
|
||||
protected IJSRuntime JSRuntime { get; set; } = null!;
|
||||
|
||||
@@ -36,19 +61,18 @@ namespace Lux.UI.Components.Compo.Config
|
||||
/// <summary>
|
||||
/// Reset selezione
|
||||
/// </summary>
|
||||
protected void DoReset()
|
||||
protected async Task DoReqUpdate()
|
||||
{
|
||||
EditRecord = null;
|
||||
SelRecord = null;
|
||||
// chiamata richiesta update da calc
|
||||
await callRefreshHwList(confHw);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Selezione articolo x display info
|
||||
/// </summary>
|
||||
/// <param name="curRec"></param>
|
||||
protected void DoSelect(HardwareModel curRec)
|
||||
protected override void OnInitialized()
|
||||
{
|
||||
SelRecord = curRec;
|
||||
apiUrl = Config.GetValue<string>("ServerConf:Prog.ApiUrl") ?? "";
|
||||
genericBasePath = Config.GetValue<string>("ServerConf:GenericBaseUrl") ?? "";
|
||||
calcTag = Config.GetValue<string>("ServerConf:CalcTag") ?? "calc";
|
||||
DLService.PipeHwList.EA_NewMessage += PipeHwList_EA_NewMessage;
|
||||
}
|
||||
|
||||
protected override void OnParametersSet()
|
||||
@@ -79,80 +103,86 @@ namespace Lux.UI.Components.Compo.Config
|
||||
#region Private Fields
|
||||
|
||||
private List<HardwareModel> AllRecords = new();
|
||||
|
||||
private string apiUrl = "";
|
||||
|
||||
private string calcTag = "calc";
|
||||
|
||||
/// <summary>
|
||||
/// Conf HW corrente (produttore) - gestire con conf?
|
||||
/// </summary>
|
||||
private string confHw = "HW.AGB";
|
||||
|
||||
private int currPage = 1;
|
||||
private HardwareModel? EditRecord = null;
|
||||
|
||||
private string genericBasePath = "generic";
|
||||
|
||||
private bool isLoading = false;
|
||||
|
||||
private List<HardwareModel> ListRecords = new();
|
||||
|
||||
private int numRecord = 5;
|
||||
private HardwareModel? SelRecord = null;
|
||||
|
||||
private int totalCount = 0;
|
||||
|
||||
#endregion Private Fields
|
||||
|
||||
#region Private Properties
|
||||
|
||||
private string btnResetCss
|
||||
{
|
||||
get => string.IsNullOrEmpty(searchVal) ? "btn-outline-light" : "btn-primary";
|
||||
}
|
||||
|
||||
private string searchVal { get; set; } = string.Empty;
|
||||
|
||||
#endregion Private Properties
|
||||
|
||||
#if false
|
||||
/// <summary>
|
||||
/// impossta record x eliminazione
|
||||
/// </summary>
|
||||
/// <param name="selRec"></param>
|
||||
protected async Task DoDelete(HardwareModel selRec)
|
||||
{
|
||||
if (!await JSRuntime.InvokeAsync<bool>("confirm", $"Sicuro di voler eliminare il record? Dettagli: {selRec.HardwareID} | {selRec.Description} | {selRec.Thickness}"))
|
||||
return;
|
||||
|
||||
// esegue eliminazione del record...
|
||||
await CDService.ConfHardwareDeleteAsync(selRec);
|
||||
|
||||
EditRecord = null;
|
||||
SelRecord = null;
|
||||
await ReloadData();
|
||||
UpdateTable();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Edit articolo selezionato
|
||||
/// </summary>
|
||||
/// <param name="curRec"></param>
|
||||
protected void DoEdit(HardwareModel curRec)
|
||||
{
|
||||
EditRecord = curRec;
|
||||
}
|
||||
#endif
|
||||
#if false
|
||||
private async Task DoAdd()
|
||||
{
|
||||
// aggiungo un nuovo record in coda...
|
||||
EditRecord = new HardwareModel()
|
||||
{
|
||||
Description = "New Glass",
|
||||
Code = "",
|
||||
Thickness = 30
|
||||
};
|
||||
await DoSave(EditRecord);
|
||||
}
|
||||
|
||||
private async Task DoSave(HardwareModel currRec)
|
||||
{
|
||||
// salvo
|
||||
await CDService.ConfHardwareUpsertAsync(currRec);
|
||||
await ResetEdit();
|
||||
UpdateTable();
|
||||
EditRecord = null;
|
||||
SelRecord = null;
|
||||
}
|
||||
#endif
|
||||
|
||||
#region Private Methods
|
||||
|
||||
/// <summary>
|
||||
/// Effettua vera richiesta della BOM
|
||||
/// </summary>
|
||||
/// <param name="currRec"></param>
|
||||
/// <returns></returns>
|
||||
private async Task callRefreshHwList(string reqUid)
|
||||
{
|
||||
Dictionary<string, string> DictExec = new Dictionary<string, string>();
|
||||
DictExec.Add("Mode", $"{(int)Egw.Window.Data.Enums.QuestionModes.HARDWARE}");
|
||||
// da rivedere?
|
||||
DictExec.Add("UID", reqUid);
|
||||
DictExec.Add("SubMode", $"{(int)Egw.Window.Data.Enums.QuestionHwSubModes.LIST}");
|
||||
DictExec.Add("Manufacturer", $"{(int)Egw.Window.Data.Enums.HardwareManufacturers.AGB}");
|
||||
CalcRequestDTO req = new CalcRequestDTO()
|
||||
{
|
||||
EnvType = EgwMultiEngineManager.Data.Constants.EXECENVIRONMENTS.WINDOW,
|
||||
DictExec = DictExec
|
||||
};
|
||||
// svuotiamo cache dati...
|
||||
AllRecords = new List<HardwareModel>();
|
||||
isLoading = true;
|
||||
|
||||
// chiamo la chiamata POST alla API, che manda la richiesta via REDIS
|
||||
await CService.CallRestPost($"{apiUrl}/{genericBasePath}", $"{calcTag}/{reqUid}", req);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Ricevuto update da Calc x elenco HW: aggiorno!
|
||||
/// </summary>
|
||||
/// <param name="sender"></param>
|
||||
/// <param name="e"></param>
|
||||
/// <exception cref="NotImplementedException"></exception>
|
||||
private void PipeHwList_EA_NewMessage(object? sender, EventArgs e)
|
||||
{
|
||||
ReloadData();
|
||||
UpdateTable();
|
||||
_ = InvokeAsync(StateHasChanged);
|
||||
}
|
||||
|
||||
private void ReloadData()
|
||||
{
|
||||
isLoading = true;
|
||||
AllRecords = CDService.ElencoHw(EgwMultiEngineManager.Data.Constants.EXECENVIRONMENTS.WINDOW, "HW.AGB");
|
||||
AllRecords = CDService.ElencoHw(EgwMultiEngineManager.Data.Constants.EXECENVIRONMENTS.WINDOW, confHw);
|
||||
// se ho ricerca testuale faccio filtro ulteriore...
|
||||
if (string.IsNullOrEmpty(SearchVal))
|
||||
{
|
||||
@@ -172,15 +202,6 @@ namespace Lux.UI.Components.Compo.Config
|
||||
totalCount = AllRecords.Count;
|
||||
}
|
||||
|
||||
#if false
|
||||
private void ResetEdit()
|
||||
{
|
||||
// reset edit
|
||||
EditRecord = null;
|
||||
ReloadData();
|
||||
}
|
||||
#endif
|
||||
|
||||
/// <summary>
|
||||
/// Filtro e paginazione
|
||||
/// </summary>
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
<div class="card shadow">
|
||||
<div class="card-header">
|
||||
<div class="card-header text-bg-secondary">
|
||||
<div class="d-flex justify-content-between">
|
||||
<div class="px-0">
|
||||
<h5>Conf. Profilo</h5>
|
||||
@@ -10,7 +10,7 @@
|
||||
<div class="input-group input-group-sm" title="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>
|
||||
<button class="btn @btnResetCss" @onclick="ResetSearch"><i class="fas fa-ban"></i></button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -2,6 +2,7 @@ using EgwCoreLib.Lux.Data.DbModel.Config;
|
||||
using EgwCoreLib.Lux.Data.Services;
|
||||
using Microsoft.AspNetCore.Components;
|
||||
using Microsoft.JSInterop;
|
||||
using System.ComponentModel;
|
||||
|
||||
namespace Lux.UI.Components.Compo.Config
|
||||
{
|
||||
@@ -116,6 +117,11 @@ namespace Lux.UI.Components.Compo.Config
|
||||
|
||||
#region Private Properties
|
||||
|
||||
private string btnResetCss
|
||||
{
|
||||
get => string.IsNullOrEmpty(searchVal) ? "btn-outline-light" : "btn-primary";
|
||||
}
|
||||
|
||||
private string searchVal { get; set; } = string.Empty;
|
||||
|
||||
#endregion Private Properties
|
||||
|
||||
@@ -581,9 +581,7 @@ namespace Lux.UI.Components.Compo
|
||||
/// </summary>
|
||||
private OfferRowModel? EditRecord = null;
|
||||
|
||||
private string genBasePath = "generic";
|
||||
|
||||
private string GenericBasePath = "";
|
||||
private string genericBasePath = "";
|
||||
|
||||
/// <summary>
|
||||
/// Channel update HwOptions
|
||||
@@ -675,7 +673,7 @@ namespace Lux.UI.Components.Compo
|
||||
calcRequestDTO.EnvType = EditRecord.Envir;
|
||||
calcRequestDTO.DictExec = reqDict;
|
||||
// chiamo la chiamata POST alla API, che manda la richiesta via REDIS
|
||||
await ICService.CallRestPost($"{apiUrl}/{GenericBasePath}", $"{calcTag}/{EditRecord.OfferRowUID}", calcRequestDTO);
|
||||
await ICService.CallRestPost($"{apiUrl}/{genericBasePath}", $"{calcTag}/{EditRecord.OfferRowUID}", calcRequestDTO);
|
||||
}
|
||||
EditRecord = null;
|
||||
CurrEditMode = EditMode.None;
|
||||
@@ -686,7 +684,7 @@ namespace Lux.UI.Components.Compo
|
||||
{
|
||||
apiUrl = Config.GetValue<string>("ServerConf:Prog.ApiUrl") ?? "";
|
||||
imgBasePath = Config.GetValue<string>("ServerConf:ImageBaseUrl") ?? "";
|
||||
GenericBasePath = Config.GetValue<string>("ServerConf:GenericBaseUrl") ?? "";
|
||||
genericBasePath = Config.GetValue<string>("ServerConf:GenericBaseUrl") ?? "";
|
||||
calcTag = Config.GetValue<string>("ServerConf:CalcTag") ?? "calc";
|
||||
svgChannel = Config.GetValue<string>("ServerConf:SvgChannel") ?? "";
|
||||
shapeChannel = Config.GetValue<string>("ServerConf:ShapeChannel") ?? "";
|
||||
@@ -840,7 +838,6 @@ namespace Lux.UI.Components.Compo
|
||||
/// </summary>
|
||||
/// <param name="sender"></param>
|
||||
/// <param name="e"></param>
|
||||
/// <exception cref="NotImplementedException"></exception>
|
||||
private async void PipeUpdate_EA_NewMessage(object? sender, EventArgs e)
|
||||
{
|
||||
// aggiorno visualizzazione
|
||||
@@ -973,7 +970,7 @@ namespace Lux.UI.Components.Compo
|
||||
await InvokeAsync(StateHasChanged);
|
||||
|
||||
// chiamo la chiamata POST alla API, che manda la richiesta via REDIS
|
||||
await CService.CallRestPost($"{apiUrl}/{genBasePath}", $"{calcTag}/{currRec.OfferRowUID}", req);
|
||||
await CService.CallRestPost($"{apiUrl}/{genericBasePath}", $"{calcTag}/{currRec.OfferRowUID}", req);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
@@ -1019,7 +1016,7 @@ namespace Lux.UI.Components.Compo
|
||||
calcRequestDTO.EnvType = EditRecord.Envir;
|
||||
calcRequestDTO.DictExec = reqDict;
|
||||
// chiamo la chiamata POST alla API, che manda la richiesta via REDIS
|
||||
await ICService.CallRestPost($"{apiUrl}/{GenericBasePath}", $"{calcTag}/{EditRecord.OfferRowUID}", calcRequestDTO);
|
||||
await ICService.CallRestPost($"{apiUrl}/{genericBasePath}", $"{calcTag}/{EditRecord.OfferRowUID}", calcRequestDTO);
|
||||
#if false
|
||||
// salvo su DB!
|
||||
await DLService.OffertRowUpdateSerStruct(EditRecord.OfferRowID, serStruct);
|
||||
@@ -1127,7 +1124,7 @@ namespace Lux.UI.Components.Compo
|
||||
CalcRequestDTO calcRequestDTO = new CalcRequestDTO();
|
||||
calcRequestDTO.EnvType = EgwMultiEngineManager.Data.Constants.EXECENVIRONMENTS.BEAM;
|
||||
calcRequestDTO.DictExec = fileArgs;
|
||||
await ICService.CallRestPost($"{apiUrl}/{GenericBasePath}", $"{calcTag}/{EditRecord.OfferRowUID}", calcRequestDTO);
|
||||
await ICService.CallRestPost($"{apiUrl}/{genericBasePath}", $"{calcTag}/{EditRecord.OfferRowUID}", calcRequestDTO);
|
||||
|
||||
#if false
|
||||
// salvo in locale il file: SISTEMARE PERMESSI
|
||||
|
||||
@@ -19,15 +19,15 @@
|
||||
</div>
|
||||
<div class="card-body py-1">
|
||||
<div class="row">
|
||||
<div class="col-12 col-md-6 g-2" style="min-height: 24rem;">
|
||||
<ProfileMan></ProfileMan>
|
||||
</div>
|
||||
<div class="col-12 col-md-6 g-2" style="min-height: 24rem;">
|
||||
<WoodMan></WoodMan>
|
||||
</div>
|
||||
<div class="col-12 col-md-6 g-2" style="min-height: 24rem;">
|
||||
<GlassMan></GlassMan>
|
||||
</div>
|
||||
<div class="col-12 col-md-6 g-2" style="min-height: 24rem;">
|
||||
<ProfileMan></ProfileMan>
|
||||
</div>
|
||||
<div class="col-12 col-md-6 g-2" style="min-height: 24rem;">
|
||||
<HardwareMan></HardwareMan>
|
||||
</div>
|
||||
|
||||
@@ -5,7 +5,7 @@
|
||||
<Nullable>enable</Nullable>
|
||||
<ImplicitUsings>enable</ImplicitUsings>
|
||||
<UserSecretsId>aspnet-Lux.UI-a758c101-a2f4-4e38-977d-1c4887dbbd50</UserSecretsId>
|
||||
<Version>0.9.2510.2119</Version>
|
||||
<Version>0.9.2510.2210</Version>
|
||||
</PropertyGroup>
|
||||
|
||||
<ItemGroup>
|
||||
|
||||
@@ -68,6 +68,7 @@
|
||||
"SubChannel": "EgwEngineOutput",
|
||||
"SvgChannel": "Egw:svg:img",
|
||||
"ShapeChannel": "Egw:shape:curr",
|
||||
"HwListChannel": "Egw:hw:list",
|
||||
"HwOptChannel": "Egw:hw:opt",
|
||||
"ProfListChannel": "Egw:prof:list",
|
||||
"BomChannel": "Egw:bom",
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
<body>
|
||||
<i>LUX - Web Windows MES</i>
|
||||
<h4>Versione: 0.9.2510.2119</h4>
|
||||
<h4>Versione: 0.9.2510.2210</h4>
|
||||
<br /> Note di rilascio:
|
||||
<ul>
|
||||
<li>
|
||||
|
||||
@@ -1 +1 @@
|
||||
0.9.2510.2119
|
||||
0.9.2510.2210
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<item>
|
||||
<version>0.9.2510.2119</version>
|
||||
<version>0.9.2510.2210</version>
|
||||
<url>http://nexus.steamware.net/repository/SWS/GPW/stable/GPW.UI.zip</url>
|
||||
<changelog>http://nexus.steamware.net/repository/SWS/GPW/stable/ChangeLog.html</changelog>
|
||||
<mandatory>false</mandatory>
|
||||
|
||||
Reference in New Issue
Block a user