diff --git a/Resources/ChangeLog.html b/Resources/ChangeLog.html
index 55c2522..48c7945 100644
--- a/Resources/ChangeLog.html
+++ b/Resources/ChangeLog.html
@@ -1,6 +1,6 @@
WebDoorCreator - Egalware
- Version: 0.9.2402.1615
+ Version: 0.9.2402.1617
Release note:
-
diff --git a/Resources/VersNum.txt b/Resources/VersNum.txt
index 6205485..55ec3f0 100644
--- a/Resources/VersNum.txt
+++ b/Resources/VersNum.txt
@@ -1 +1 @@
-0.9.2402.1615
+0.9.2402.1617
diff --git a/Resources/manifest.xml b/Resources/manifest.xml
index e518ba7..1d6d525 100644
--- a/Resources/manifest.xml
+++ b/Resources/manifest.xml
@@ -1,6 +1,6 @@
-
- 0.9.2402.1615
+ 0.9.2402.1617
http://nexus.steamware.net/repository/SWS/WDC/stable/WDC.UI.zip
http://nexus.steamware.net/repository/SWS/WDC/stable/ChangeLog.html
false
diff --git a/WebDoorCreator.API/Controllers/DoorImageController.cs b/WebDoorCreator.API/Controllers/DoorImageController.cs
index fc1d63c..1182a56 100644
--- a/WebDoorCreator.API/Controllers/DoorImageController.cs
+++ b/WebDoorCreator.API/Controllers/DoorImageController.cs
@@ -5,9 +5,10 @@ using Svg;
using Svg.Skia;
using System.Drawing;
using WebDoorCreator.Data.Services;
+
#if false
using SkiaSharp;
-using Svg.Skia;
+using Svg.Skia;
#endif
namespace WebDoorCreator.API.Controllers
@@ -18,11 +19,12 @@ namespace WebDoorCreator.API.Controllers
{
#region Public Constructors
- public DoorImageController(IConfiguration configuration, QueueDataService DataService)
+ public DoorImageController(IConfiguration configuration, QueueDataService cQDService, WebDoorCreatorService cWDCService)
{
Log.Info("Starting DoorImageController");
_configuration = configuration;
- QDataServ = DataService;
+ QDService = cQDService;
+ WDService = cWDCService;
Log.Info("Avviato DoorImageController");
}
@@ -37,12 +39,20 @@ namespace WebDoorCreator.API.Controllers
return "OK";
}
-
[HttpGet("GetImage.png")]
public async Task GetImagePng(int DoorId)
{
byte[] result = new byte[0];
- string svgContent = await QDataServ.DoorGetLastSvg(DoorId);
+ string svgContent = await QDService.DoorGetLastSvg(DoorId);
+ // se fosse vuoto...
+ if (string.IsNullOrEmpty(svgContent))
+ {
+ // richiede ricalcolo img
+ await SendRecalcReq(DoorId);
+ // legge img vuota
+ svgContent = QDService.DoorGetMissingSvg();
+ }
+ // ora prosegue con conversione...
if (!string.IsNullOrEmpty(svgContent))
{
using (var svg = new SKSvg())
@@ -73,7 +83,15 @@ namespace WebDoorCreator.API.Controllers
[HttpGet("GetImage.svg")]
public async Task GetImageSvg(int DoorId)
{
- string svgContent = await QDataServ.DoorGetLastSvg(DoorId);
+ string svgContent = await QDService.DoorGetLastSvg(DoorId);
+ // se fosse vuoto...
+ if (string.IsNullOrEmpty(svgContent))
+ {
+ // richiede ricalcolo img
+ await SendRecalcReq(DoorId);
+ // legge img vuota
+ svgContent = QDService.DoorGetMissingSvg();
+ }
var result = System.Text.Encoding.UTF8.GetBytes(svgContent);
return File(result, "image/svg+xml");
}
@@ -90,14 +108,35 @@ namespace WebDoorCreator.API.Controllers
#region Private Properties
- private QueueDataService QDataServ { get; set; } = null!;
+ private QueueDataService QDService { get; set; } = null!;
+
+ private WebDoorCreatorService WDService { get; set; } = null!;
#endregion Private Properties
#region Private Methods
+ ///
+ /// Invio richiesta ricalcolo porta
+ ///
+ ///
+ ///
+ private async Task SendRecalcReq(int DoorId)
+ {
+ // richiede ricalcolo img
+ List doorIdList = new List() { $"{DoorId}" };
+ // chiamo reset richieste
+ var list2Proc = await QDService.ResetQueueByDoorList(doorIdList);
+
+ // recupero DDF ed invio x processing
+ if (DoorId > 0)
+ {
+ string currDDF = await WDService.DoorOpGetDDF(DoorId);
+ // versione corrente del DDF generato
+ int currVers = await QDService.SendCalcReq(DoorId, currDDF);
+ }
+ }
#endregion Private Methods
-
}
}
\ No newline at end of file
diff --git a/WebDoorCreator.Data/Services/QueueDataService.cs b/WebDoorCreator.Data/Services/QueueDataService.cs
index ccd191b..fa53cfc 100644
--- a/WebDoorCreator.Data/Services/QueueDataService.cs
+++ b/WebDoorCreator.Data/Services/QueueDataService.cs
@@ -48,6 +48,12 @@ namespace WebDoorCreator.Data.Services
vetoRemoveProcSec = _configuration.GetValue("RuntimeOpt:VetoRemoveProcessing");
logTimingEnable = configuration.GetValue("RuntimeOpt:LogTimingEnable");
statSampleSize = configuration.GetValue("RuntimeOpt:StatSampleSize");
+ // fix dati img missing...
+ missingFilePath = Path.Combine(Directory.GetCurrentDirectory(), "wwwroot/images", "MissingOrange.svg");
+ if (File.Exists(missingFilePath))
+ {
+ missingSvgContent = File.ReadAllText(missingFilePath);
+ }
Log.Info("QueueDataService started!");
}
@@ -182,6 +188,7 @@ namespace WebDoorCreator.Data.Services
answ = $"{rawData}";
}
}
+#if false
// se non trovata --> missing!
if (string.IsNullOrEmpty(answ))
{
@@ -194,7 +201,29 @@ namespace WebDoorCreator.Data.Services
{
answ = File.ReadAllText(missingFilePath);
}
- }
+ }
+#endif
+ return answ;
+ }
+
+ ///
+ /// Restituisce SVG dell'immagine missing...
+ ///
+ ///
+ ///
+ public string DoorGetMissingSvg()
+ {
+ string answ = missingSvgContent;
+ if(string.IsNullOrEmpty(answ))
+ {
+ // fix dati img missing...
+ missingFilePath = Path.Combine(Directory.GetCurrentDirectory(), "wwwroot/images", "MissingOrange.svg");
+ if (File.Exists(missingFilePath))
+ {
+ missingSvgContent = File.ReadAllText(missingFilePath);
+ answ = missingSvgContent;
+ }
+ }
return answ;
}
@@ -1371,6 +1400,15 @@ namespace WebDoorCreator.Data.Services
///
private bool logTimingEnable = false;
+ ///
+ /// Path dell'immagine "missing"
+ ///
+ private string missingFilePath = "";
+ ///
+ /// Contenuto SVG dell'immagine missing
+ ///
+ private string missingSvgContent = "";
+
///
/// Oggetto per connessione a REDIS
///
diff --git a/WebDoorCreator.UI/Components/DoorDef/DoorDefinition.razor.cs b/WebDoorCreator.UI/Components/DoorDef/DoorDefinition.razor.cs
index eeeabd7..9ec4885 100644
--- a/WebDoorCreator.UI/Components/DoorDef/DoorDefinition.razor.cs
+++ b/WebDoorCreator.UI/Components/DoorDef/DoorDefinition.razor.cs
@@ -11,6 +11,16 @@ namespace WebDoorCreator.UI.Components.DoorDef
{
public partial class DoorDefinition : IDisposable
{
+ #region Public Properties
+
+ [Parameter]
+ public int idDoor { get; set; } = 0;
+
+ [Parameter]
+ public int idOrd { get; set; } = 0;
+
+ #endregion Public Properties
+
#region Public Methods
public void Dispose()
@@ -18,7 +28,7 @@ namespace WebDoorCreator.UI.Components.DoorDef
ListBaseDoorOp = null;
currOrder = null;
WDCUService.EA_CurrLanguage -= WDUService_EA_CurrLanguage;
- QDataServ.CalcDonePipe.EA_NewMessage -= CalcDonePipe_EA_NewMessage;
+ QDService.CalcDonePipe.EA_NewMessage -= CalcDonePipe_EA_NewMessage;
}
#endregion Public Methods
@@ -26,14 +36,10 @@ namespace WebDoorCreator.UI.Components.DoorDef
#region Protected Properties
protected bool B_doorOpUpd { get; set; } = false;
+ protected OrderStatusViewModel? currOrder { get; set; } = null;
protected string DoorSvgContent { get; set; } = "";
protected string ErrCode { get; set; } = "ERRORE";
- [Parameter]
- public int idDoor { get; set; } = 0;
- [Parameter]
- public int idOrd { get; set; } = 0;
-
protected bool isDoorOpConf { get; set; } = false;
protected bool IsErr { get; set; } = false;
@@ -43,12 +49,11 @@ namespace WebDoorCreator.UI.Components.DoorDef
[Inject]
protected NavigationManager NavManager { get; set; } = null!;
- protected OrderStatusViewModel? currOrder { get; set; } = null;
-
+ protected int orderStat { get; set; } = 10;
protected bool paramChanged { get; set; } = false;
[Inject]
- protected QueueDataService QDataServ { get; set; } = null!;
+ protected QueueDataService QDService { get; set; } = null!;
protected string userLang { get; set; } = "EN";
@@ -65,8 +70,6 @@ namespace WebDoorCreator.UI.Components.DoorDef
#region Protected Methods
-
- protected int orderStat { get; set; } = 10;
protected async Task catchParamChange(bool ParamChanged)
{
await Task.Delay(1);
@@ -101,7 +104,7 @@ namespace WebDoorCreator.UI.Components.DoorDef
//}
await ReloadData();
WDCUService.EA_CurrLanguage += WDUService_EA_CurrLanguage;
- QDataServ.CalcDonePipe.EA_NewMessage += CalcDonePipe_EA_NewMessage;
+ QDService.CalcDonePipe.EA_NewMessage += CalcDonePipe_EA_NewMessage;
WDCRService.EA_UpdDoorOp += WDService_EA_DoorOpUpdated;
}
@@ -112,7 +115,16 @@ namespace WebDoorCreator.UI.Components.DoorDef
currOrder = null;
await Task.Delay(1);
// cerco img porta...
- DoorSvgContent = await QDataServ.DoorGetLastSvg(idDoor);
+ DoorSvgContent = await QDService.DoorGetLastSvg(idDoor);
+ // se fosse vuoto...
+ if (string.IsNullOrEmpty(DoorSvgContent))
+ {
+ // richiede ricalcolo img
+ await SendRecalcReq(idDoor);
+ // legge img vuota
+ DoorSvgContent = QDService.DoorGetMissingSvg();
+ }
+
// recupero altri dati
var ListRecordDoorOp = await WDService.DoorOpGetByDoorId(idDoor);
if (ListRecordDoorOp != null)
@@ -132,7 +144,7 @@ namespace WebDoorCreator.UI.Components.DoorDef
if (ListOrdersStatus != null)
{
currOrder = ListOrdersStatus.Where(x => x.OrderId == idOrd).FirstOrDefault();
- if(currOrder != null)
+ if (currOrder != null)
{
orderStat = currOrder.OrderStatus;
}
@@ -197,16 +209,16 @@ namespace WebDoorCreator.UI.Components.DoorDef
doorSvgVers = doorSvgVers.Replace(".", ":");
}
// fix ./:
- var hasErr = await QDataServ.DoorErrExists(doorSvgVers);
+ var hasErr = await QDService.DoorErrExists(doorSvgVers);
if (hasErr)
{
- var messErr = await QDataServ.DoorErrGet(doorSvgVers);
+ var messErr = await QDService.DoorErrGet(doorSvgVers);
IsErr = true;
ErrCode = messErr;
}
else
{
- DoorSvgContent = await QDataServ.DoorSvgGet(doorSvgVers);
+ DoorSvgContent = await QDService.DoorSvgGet(doorSvgVers);
}
await Task.Run(async () => await InvokeAsync(StateHasChanged));
@@ -214,6 +226,27 @@ namespace WebDoorCreator.UI.Components.DoorDef
}
}
+ ///
+ /// Invio richiesta ricalcolo porta
+ ///
+ ///
+ ///
+ private async Task SendRecalcReq(int DoorId)
+ {
+ // richiede ricalcolo img
+ List doorIdList = new List() { $"{DoorId}" };
+ // chiamo reset richieste
+ var list2Proc = await QDService.ResetQueueByDoorList(doorIdList);
+
+ // recupero DDF ed invio x processing
+ if (DoorId > 0)
+ {
+ string currDDF = await WDService.DoorOpGetDDF(DoorId);
+ // versione corrente del DDF generato
+ int currVers = await QDService.SendCalcReq(DoorId, currDDF);
+ }
+ }
+
private void WDService_EA_DoorOpUpdated()
{
B_doorOpUpd = WDCRService.isDoorOpUpd;
diff --git a/WebDoorCreator.UI/Controllers/DoorImageController.cs b/WebDoorCreator.UI/Controllers/DoorImageController.cs
index 9fcfee4..a152930 100644
--- a/WebDoorCreator.UI/Controllers/DoorImageController.cs
+++ b/WebDoorCreator.UI/Controllers/DoorImageController.cs
@@ -11,14 +11,87 @@ namespace WebDoorCreator.UI.Controllers
[ApiController]
public class DoorImageController : ControllerBase
{
+ #region Public Constructors
+
+ public DoorImageController(IConfiguration configuration, QueueDataService cQDService, WebDoorCreatorService cWDCService)
+ {
+ Log.Info("Starting DoorImageController");
+ _configuration = configuration;
+ QDService = cQDService;
+ WDService = cWDCService;
+ Log.Info("Avviato DoorImageController");
+ }
+
+ #endregion Public Constructors
+
+ #region Public Methods
+
+ // GET: api/DoorImage
+ [HttpGet]
+ public string Get()
+ {
+ return "OK";
+ }
+
[HttpGet("GetImage.svg")]
public async Task GetImage(int DoorId)
{
- string svgContent = await QDataServ.DoorGetLastSvg(DoorId);
+ string svgContent = await QDService.DoorGetLastSvg(DoorId);
+ // se fosse vuoto...
+ if (string.IsNullOrEmpty(svgContent))
+ {
+ // richiede ricalcolo img
+ await SendRecalcReq(DoorId);
+ // legge img vuota
+ svgContent = QDService.DoorGetMissingSvg();
+ }
var result = System.Text.Encoding.UTF8.GetBytes(svgContent);
return File(result, "image/svg+xml");
}
+ #endregion Public Methods
+
+ #region Private Fields
+
+ private static IConfiguration _configuration = null!;
+
+ private static Logger Log = LogManager.GetCurrentClassLogger();
+
+ #endregion Private Fields
+
+ #region Private Properties
+
+ private QueueDataService QDService { get; set; } = null!;
+
+ private WebDoorCreatorService WDService { get; set; } = null!;
+
+ #endregion Private Properties
+
+ #region Private Methods
+
+ ///
+ /// Invio richiesta ricalcolo porta
+ ///
+ ///
+ ///
+ private async Task SendRecalcReq(int DoorId)
+ {
+ // richiede ricalcolo img
+ List doorIdList = new List() { $"{DoorId}" };
+ // chiamo reset richieste
+ var list2Proc = await QDService.ResetQueueByDoorList(doorIdList);
+
+ // recupero DDF ed invio x processing
+ if (DoorId > 0)
+ {
+ string currDDF = await WDService.DoorOpGetDDF(DoorId);
+ // versione corrente del DDF generato
+ int currVers = await QDService.SendCalcReq(DoorId, currDDF);
+ }
+ }
+
+ #endregion Private Methods
+
#if false
[HttpGet("GetImage.png")]
public async Task GetImagePng(int DoorId)
@@ -33,37 +106,7 @@ namespace WebDoorCreator.UI.Controllers
result = Utils.ImageToByte2(myBmp);
}
return File(result, "image/png");
- }
+ }
#endif
-
- // GET: api/DoorImage
- [HttpGet]
- public string Get()
- {
- return "OK";
- }
-
- public DoorImageController(IConfiguration configuration, QueueDataService DataService)
- {
- Log.Info("Starting DoorImageController");
- _configuration = configuration;
- QDataServ = DataService;
- Log.Info("Avviato DoorImageController");
- }
-
-
- #region Private Fields
-
- private static IConfiguration _configuration = null!;
-
- private static Logger Log = LogManager.GetCurrentClassLogger();
-
- #endregion Private Fields
-
- #region Private Properties
-
- private QueueDataService QDataServ { get; set; } = null!;
-
- #endregion Private Properties
}
-}
+}
\ No newline at end of file
diff --git a/WebDoorCreator.UI/WebDoorCreator.UI.csproj b/WebDoorCreator.UI/WebDoorCreator.UI.csproj
index 53b5384..447bac3 100644
--- a/WebDoorCreator.UI/WebDoorCreator.UI.csproj
+++ b/WebDoorCreator.UI/WebDoorCreator.UI.csproj
@@ -3,7 +3,7 @@
net6.0
enable
- 0.9.2402.1615
+ 0.9.2402.1617
enable
aspnet-WebDoorCreator.UI-dfe95fed-1398-4144-bd43-8b3a765d6608