Fix gestione update HW da elenco conf

This commit is contained in:
Samuele Locatelli
2025-10-22 10:13:33 +02:00
parent 09f49e6be9
commit 3bc0f5613b
18 changed files with 238 additions and 162 deletions
+15
View File
@@ -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 = "";
+1 -1
View File
@@ -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>
+22 -20
View File
@@ -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);
}
}
+2 -2
View File
@@ -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/"
}
}
+1
View File
@@ -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
+6 -9
View File
@@ -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
+3 -3
View File
@@ -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>
+1 -1
View File
@@ -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>
+1
View File
@@ -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 -1
View File
@@ -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
View File
@@ -1 +1 @@
0.9.2510.2119
0.9.2510.2210
+1 -1
View File
@@ -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>