using Egw.Window.Data; using EgwCoreLib.Lux.Core; using EgwCoreLib.Lux.Core.RestPayload; using EgwCoreLib.Lux.Data.Services; using Microsoft.AspNetCore.Components; using Newtonsoft.Json; using WebWindowComplex; using WebWindowComplex.DTO; using static WebWindowComplex.LayoutConst; namespace Test.UI.Components.Pages { public partial class TestError { #region Public Fields public string InitialJwd = ""; #endregion Public Fields #region Public Methods public void Dispose() { DLService.PipeSvg.EA_NewMessage -= PipeSvg_EA_NewMessage; DLService.PipeShape.EA_NewMessage -= PipeShape_EA_NewMessage; DLService.PipeHwOpt.EA_NewMessage -= PipeHwOption_EA_NewMessage; DLService.PipeProfElement.EA_NewMessage -= PipeProfElement_EA_NewMessage; } #endregion Public Methods #region Protected Fields /// /// Predisposizione valori live SVG/JWD /// protected LivePayload CurrData = new LivePayload(); /// /// Livello di accesso /// -- true: utente base (versione semplificata) /// -- false: utente avanzato (versione completa) /// protected bool User = false; protected Dictionary currGroupShape = new Dictionary(); protected List currElement = new List(); protected Dictionary currHwOption = new Dictionary(); protected string currJwd = "..."; protected Dictionary m_CurrArgs = new Dictionary(); protected string prevJwd = ""; /// /// Configurazione elenchi anagrafiche /// protected BaseListPayload SetupList = new BaseListPayload(); #endregion Protected Fields #region Protected Properties protected List AvailColorMaterialList { get; set; } = new List() { new string("White"), new string("Black"), new string("Blu"), new string("Wood") }; protected List AvailFamilyHardwareList { get; set; } = new List() { new string("ArTech"), new string("ArTechPlana") }; protected List AvailGlassList { get; set; } = new List() { new string("Vetro BE 2S 4/12/4"), new string("Vetro BE 2S 4/16/4"), new string("Vetro BE 3S 4/12/4/12/4"), new string("Vetro BE 3S 4/16/4/16/4"), new string("Vetro BE 2S 4T/12/4T"), new string("Vetro BE 2S 4T/16/4T") }; protected List AvailHardwareList { get; set; } = new List(); protected List AvailMaterialList { get; set; } = new List() { new string("Pino"), new string("Abete") }; /// /// Lista profili da DB /// private List AvailProfileList = new List(); private List ThresholdProfilo78 = new List() { { new Threshold(3, "Bottom") }, { new Threshold(1, "Threshold") } }; private List ThresholdProfiloSaomad = new List() { { new Threshold(3, "Bottom") }, { new Threshold(2, "BottomWaterdrip") }, { new Threshold(1, "Threshold") } }; private Dictionary ParamProfilo78 = new Dictionary() { {"Frame_Fill_Rail_DimMax", 85}, {"Frame_Fill_Rail_DimMin", 70}, {"Frame_Fill_Rail_DimStd", 72}, {"Frame_Fixed_Bottom_DimMax", 80}, {"Frame_Fixed_Bottom_DimMin", 70}, {"Frame_Fixed_Bottom_DimStd", 78}, {"Frame_Fixed_Top_DimMax", 80}, {"Frame_Fixed_Top_DimMin", 70}, {"Frame_Fixed_Top_DimStd", 78}, {"Frame_Frame_Split_DimMax", 85}, {"Frame_Frame_Split_DimMin", 55}, {"Frame_Frame_Split_DimStd", 60}, {"Frame_Mixed_Bottom_DimMax", 80}, {"Frame_Mixed_Bottom_DimMin", 70}, {"Frame_Mixed_Bottom_DimStd", 78}, {"Frame_Mixed_Split_DimMax", 110}, {"Frame_Mixed_Split_DimMin", 70}, {"Frame_Mixed_Split_DimStd", 90}, {"Frame_Mixed_Top_DimMax", 80}, {"Frame_Mixed_Top_DimMin", 70}, {"Frame_Mixed_Top_DimStd", 78}, {"Frame_Rail_Bottom_DimMax", 80}, {"Frame_Rail_Bottom_DimMin", 70}, {"Frame_Rail_Bottom_DimStd", 78}, {"Frame_Rail_DimMax", 78}, {"Frame_Rail_DimMin", 68}, {"Frame_Rail_DimStd", 72}, {"Frame_Sash_Bottom_DimMax", 80}, {"Frame_Sash_Bottom_DimMin", 70}, {"Frame_Sash_Bottom_DimStd", 78}, {"Frame_Sash_Horizontal_DimMax", 110}, {"Frame_Sash_Horizontal_DimMin", 75}, {"Frame_Sash_Horizontal_DimStd", 95}, {"Frame_Sash_Threshold_DimMax", 26}, {"Frame_Sash_Threshold_DimMin", 24}, {"Frame_Sash_Threshold_DimStd", 25}, {"Frame_Sash_Top_DimMax", 80}, {"Frame_Sash_Top_DimMin", 70}, {"Frame_Sash_Top_DimStd", 78}, {"Frame_Sash_Vertical_DimMax", 110}, {"Frame_Sash_Vertical_DimMin", 85}, {"Frame_Sash_Vertical_DimStd", 95}, {"Frame_Slide_Bottom_DimMax", 60}, {"Frame_Slide_Bottom_DimMin", 50}, {"Frame_Slide_Bottom_DimStd", 55}, {"Frame_Slide_Fixed_DimMax", 60}, {"Frame_Slide_Fixed_DimMin", 50}, {"Frame_Slide_Fixed_DimStd", 55}, {"Frame_Slide_MovableBack_Bottom_DimMax", 60}, {"Frame_Slide_MovableBack_Bottom_DimMin", 50}, {"Frame_Slide_MovableBack_Bottom_DimStd", 55}, {"Frame_Slide_MovableBack_Threshold_DimMax", 10}, {"Frame_Slide_MovableBack_Threshold_DimMin", 3}, {"Frame_Slide_MovableBack_Threshold_DimStd", 4}, {"Frame_Slide_Movable_DimMax", 60}, {"Frame_Slide_Movable_DimMin", 50}, {"Frame_Slide_Movable_DimStd", 55}, {"Frame_Slide_Threshold_DimMax", 10}, {"Frame_Slide_Threshold_DimMin", 3}, {"Frame_Slide_Threshold_DimStd", 4}, {"Frame_Slide_Top_DimMax", 60}, {"Frame_Slide_Top_DimMin", 50}, {"Frame_Slide_Top_DimStd", 55}, {"Sash_Fill_Rail_DimMax", 80}, {"Sash_Fill_Rail_DimMin", 70}, {"Sash_Fill_Rail_DimStd", 78}, {"Sash_Frame_Bottom_DimMax", 80}, {"Sash_Frame_Bottom_DimMin", 70}, {"Sash_Frame_Bottom_DimStd", 78}, {"Sash_Frame_Top_DimMax", 80}, {"Sash_Frame_Top_DimMin", 70}, {"Sash_Frame_Top_DimStd", 78}, {"Sash_French_In_DimMax", 80}, {"Sash_French_In_DimMin", 70}, {"Sash_French_In_DimStd", 78}, {"Sash_French_Out_DimMax", 80}, {"Sash_French_Out_DimMin", 70}, {"Sash_French_Out_DimStd", 78}, {"Sash_Rail_Bottom_DimMax", 80}, {"Sash_Rail_Bottom_DimMin", 70}, {"Sash_Rail_Bottom_DimStd", 78}, {"Sash_Rail_DimMax", 80}, {"Sash_Rail_DimMin", 70}, {"Sash_Rail_DimStd", 78}, {"Sash_Sash_Active_DimMax", 80}, {"Sash_Sash_Active_DimMin", 70}, {"Sash_Sash_Active_DimStd", 78}, {"Sash_Sash_Inactive_DimMax", 80}, {"Sash_Sash_Inactive_DimMin", 70}, {"Sash_Sash_Inactive_DimStd", 78}, {"Sash_Sash_Split_DimMax", 70}, {"Sash_Sash_Split_DimMin", 50}, {"Sash_Sash_Split_DimStd", 60}, {"Sash_Slide_Active_DimMax", 90}, {"Sash_Slide_Active_DimMin", 70}, {"Sash_Slide_Active_DimStd", 80}, {"Sash_Slide_Active_In_DimMax", 90}, {"Sash_Slide_Active_In_DimMin", 70}, {"Sash_Slide_Active_In_DimStd", 80}, {"Sash_Slide_Fixed_Bottom_DimMax", 150}, {"Sash_Slide_Fixed_Bottom_DimMin", 120}, {"Sash_Slide_Fixed_Bottom_DimStd", 135}, {"Sash_Slide_Fixed_Side_DimMax", 90}, {"Sash_Slide_Fixed_Side_DimMin", 70}, {"Sash_Slide_Fixed_Side_DimStd", 80}, {"Sash_Slide_Fixed_Top_DimMax", 90}, {"Sash_Slide_Fixed_Top_DimMin", 70}, {"Sash_Slide_Fixed_Top_DimStd", 80}, {"Sash_Slide_Inactive_DimMax", 90}, {"Sash_Slide_Inactive_DimMin", 70}, {"Sash_Slide_Inactive_DimStd", 80}, {"Sash_Slide_MovableBack_Bottom_DimMax", 150}, {"Sash_Slide_MovableBack_Bottom_DimMin", 120}, {"Sash_Slide_MovableBack_Bottom_DimStd", 135}, {"Sash_Slide_MovableBack_Side_DimMax", 90}, {"Sash_Slide_MovableBack_Side_DimMin", 70}, {"Sash_Slide_MovableBack_Side_DimStd", 80}, {"Sash_Slide_MovableBack_Top_DimMax", 90}, {"Sash_Slide_MovableBack_Top_DimMin", 70}, {"Sash_Slide_MovableBack_Top_DimStd", 80}, {"Sash_Slide_Movable_Bottom_DimMax", 150}, {"Sash_Slide_Movable_Bottom_DimMin", 120}, {"Sash_Slide_Movable_Bottom_DimStd", 135}, {"Sash_Slide_Movable_Side_DimMax", 90}, {"Sash_Slide_Movable_Side_DimMin", 70}, {"Sash_Slide_Movable_Side_DimStd", 80}, {"Sash_Slide_Movable_Top_DimMax", 90}, {"Sash_Slide_Movable_Top_DimMin", 70}, {"Sash_Slide_Movable_Top_DimStd", 80}, {"Frame_BottomRail_Overlap", 33.2}, {"French_In_Overlap", 26}, {"French_Out_Overlap", 26}, {"Mixed_Bottom_Overlap", 26}, {"Mixed_Split_Bottom_Overlap", 41}, {"Mixed_Split_Top_Overlap", 41}, {"Mixed_Top_Overlap", 41}, {"NO_Mixed_Bottom_Overlap", 26}, {"NO_Mixed_Split_Bottom_Overlap", 41}, {"NO_Mixed_Split_Top_Overlap", 41}, {"NO_Slide_MovableBack_Threshold_Overlap", 0}, {"NO_Slide_Threshold_Overlap", 0}, {"Sash_Active_Overlap", 26}, {"Sash_Inactive_Overlap", 26}, {"Sash_BottomRail_Overlap", 24.5}, {"Sash_Bottom_Overlap", 26}, {"Sash_Horizontal_Bottom_Overlap", 26}, {"Sash_Horizontal_Top_Overlap", 41}, {"Sash_Threshold_Overlap", 18}, {"Sash_Top_Overlap", 41}, {"Sash_Vertical_Overlap", 41}, {"Slide_Active_Overlap", 80}, {"Slide_Bottom_Overlap", 0}, {"Slide_Fixed_Overlap", -5}, {"Slide_MovableBack_Bottom_Overlap", 0}, {"Slide_MovableBack_Threshold_Overlap", 0}, {"Slide_Movable_Overlap", -5}, {"Slide_Threshold_Overlap", 0}, {"Slide_Top_Overlap", -12} }; private Dictionary ParamProfiloSaomad = new Dictionary() { {"Frame_Frame_Split_DimMax", 85}, {"Frame_Frame_Split_DimMin", 55}, {"Frame_Frame_Split_DimStd", 60}, {"Frame_Mixed_Bottom_DimMax", 80}, {"Frame_Mixed_Bottom_DimMin", 70}, {"Frame_Mixed_Bottom_DimStd", 78}, {"Frame_Mixed_Split_DimMax", 110}, {"Frame_Mixed_Split_DimMin", 70}, {"Frame_Mixed_Split_DimStd", 90}, {"Frame_Mixed_Top_DimMax", 80}, {"Frame_Mixed_Top_DimMin", 70}, {"Frame_Mixed_Top_DimStd", 78}, {"Frame_Rail_Bottom_DimMax", 80} }; [Inject] protected IConfiguration Config { get; set; } = null!; [Inject] protected DataLayerServices DLService { get; set; } = null!; [Inject] protected ImageCacheService ICService { get; set; } = null!; protected MarkupString JsonSer { get => (MarkupString)currJwd.Replace(Environment.NewLine, "
").Replace(" ", " "); } protected string SelColorMaterial { get; set; } = ""; protected string SelFamilyHardware { get; set; } = ""; protected string SelGlass { get; set; } = ""; protected string SelMaterial { get; set; } = ""; #endregion Protected Properties #region Protected Methods protected override void OnAfterRender(bool firstRender) { if (firstRender) { // JS interop or data fetches go here isInteractive = true; } } protected override async Task OnInitializedAsync() { ConfInit(); User = false; Random random = new Random(); CalcUid = Convert.ToString(random.Next(1000, 10000)); windowUid = CalcUid; //initialJwd = File.ReadAllText("Data\\AntaDoppiaInglesine.jwd"); InitialJwd = File.ReadAllText("Data\\AntaDoppia.jwd"); currJwd = InitialJwd; // rileggo altri dati await ReloadData(); // costruisco lista profili ProfilePayload pp1 = new ProfilePayload() { ProfileName = "Profilo78", ThresholdList = ThresholdProfilo78, ParameterDict = ParamProfilo78 }; ProfilePayload pp2 = new ProfilePayload() { ProfileName = "ProfiloSaomad", ThresholdList = ThresholdProfiloSaomad, ParameterDict = ParamProfiloSaomad }; AvailProfileList = new List { pp1, pp2 }; // preparo conf oggetti x controllo SetupList = new BaseListPayload() { ColorMaterial = AvailColorMaterialList, FamilyHardware = AvailFamilyHardwareList, Glass = AvailGlassList, Hardware = AvailHardwareList, Wood = AvailMaterialList, ProfileList = AvailProfileList }; CurrData = new LivePayload() { CurrJwd = InitialJwd, SvgPreview = currSvg, DictShape = currGroupShape, DictOptionsXml = currHwOption }; DLService.PipeSvg.EA_NewMessage += PipeSvg_EA_NewMessage; DLService.PipeShape.EA_NewMessage += PipeShape_EA_NewMessage; DLService.PipeHwOpt.EA_NewMessage += PipeHwOption_EA_NewMessage; DLService.PipeProfElement.EA_NewMessage += PipeProfElement_EA_NewMessage; } #endregion Protected Methods #region Private Fields private string apiUrl = ""; private string calcTag = ""; private string CalcUid = "CurrWindow"; private string windowUid = "CurrWindow"; private string cFileHardware = "Hardware/Setup.json"; private string currSvg = ""; private string GenericBasePath = ""; //private string colorMassUpdate; //private string familyHWMassUpdate; //private string glassMassUpdate; //private Hardware hardwareMassUpdate; //private string materialMassUpdate; //private string profileMassUpdate; /// /// Semaforo x definire se sia già in modalità ionterattiva o di prerendering /// private bool isInteractive = false; private string outClose = ""; private string outSave = ""; private string imgBasePath = ""; private string channelHwOpt = ""; private string channelShape = ""; private string channelProfList = ""; private string channelProfElem = ""; private string channelSvg = ""; #endregion Private Fields #region Private Methods /// /// Effettua chiusura oggetto con eventuale save /// /// private void CloseObj(DataSave reqSave) { currJwd = reqSave.currJwd; outClose = !reqSave.ForceSave ? "Richiesto chiusura!" : ""; outSave = reqSave.ForceSave ? "Richiesto salvataggio!" : ""; } private void ConfInit() { apiUrl = Config.GetValue("ServerConf:Prog.ApiUrl") ?? ""; imgBasePath = Config.GetValue("ServerConf:ImageBaseUrl") ?? ""; GenericBasePath = Config.GetValue("ServerConf:GenericBaseUrl") ?? ""; calcTag = Config.GetValue("ServerConf:CalcTag") ?? ""; channelSvg = Config.GetValue("ServerConf:ChannelSvg") ?? ""; channelShape = Config.GetValue("ServerConf:ChannelShape") ?? ""; channelHwOpt = Config.GetValue("ServerConf:ChannelHwOpt") ?? ""; channelProfElem = Config.GetValue("ServerConf:ChannelProfElem") ?? ""; channelProfList = Config.GetValue("ServerConf:ChannelProfList") ?? ""; } /// /// Esecuzione azione richiesta /// /// Azione richiesta private void DoAction(DataAction actReq) { switch (actReq) { case DataAction.None: break; case DataAction.ResetDictShape: CurrData.DictShape = new Dictionary(); break; case DataAction.ResetHwOpt: CurrData.DictOptionsXml = new Dictionary(); break; case DataAction.ResetDimElem: CurrData.ProfElementList = new List(); break; default: break; } } /// /// Esecuzione richiesta /// /// /// private async Task ExecRequest(Dictionary CurrArgs) { // Proseguo solo se sono in interattivo (NO prerender pagina) if (isInteractive) { outClose = ""; outSave = ""; // verifico se contiene JWD, lo aggiorno if (CurrArgs.ContainsKey("SerializedData")) { currJwd = CurrArgs["SerializedData"]; CurrData.CurrJwd = currJwd; } // se il SSE variato --> invio if (!currJwd.Equals(prevJwd) || !EgwCoreLib.Utils.DictUtils.DictAreEqual(m_CurrArgs, CurrArgs)) { m_CurrArgs = CurrArgs; prevJwd = currJwd; CalcRequestDTO calcRequestDTO = new CalcRequestDTO(); calcRequestDTO.EnvType = EgwMultiEngineManager.Data.Constants.EXECENVIRONMENTS.WINDOW; calcRequestDTO.DictExec = m_CurrArgs; // chiamo la chiamata POST alla API, che manda la richiesta via REDIS await ICService.CallRestPost($"{apiUrl}/{GenericBasePath}", $"{calcTag}/{CalcUid}", calcRequestDTO); } } } private async void PipeHwOption_EA_NewMessage(object? sender, EventArgs e) { // aggiorno visualizzazione PubSubEventArgs currArgs = (PubSubEventArgs)e; // conversione on-the-fly SVG da mostrare if (!string.IsNullOrEmpty(currArgs.newMessage)) { if (currArgs.msgUid.StartsWith($"{channelHwOpt}:{windowUid}") && currArgs.newMessage.Length > 2) { // deserializzo il dizionario delle risposte... Dictionary rawDict = JsonConvert.DeserializeObject>(currArgs.newMessage) ?? new Dictionary(); if (rawDict.Count > 0) currHwOption = rawDict; } else { currHwOption = new Dictionary(); } CurrData.DictOptionsXml = currHwOption; await InvokeAsync(StateHasChanged); } await Task.Delay(1); } private async void PipeShape_EA_NewMessage(object? sender, EventArgs e) { // aggiorno visualizzazione PubSubEventArgs currArgs = (PubSubEventArgs)e; // conversione on-the-fly SVG da mostrare if (!string.IsNullOrEmpty(currArgs.newMessage) && currArgs.newMessage.Length > 2) { if (currArgs.msgUid.StartsWith($"{channelShape}:{windowUid}")) { // deserializzo il dizionario delle risposte... var rawDict = JsonConvert.DeserializeObject>(currArgs.newMessage); currGroupShape = rawDict ?? new Dictionary(); CurrData.DictShape = currGroupShape; } await InvokeAsync(StateHasChanged); } await Task.Delay(1); } private async void PipeProfElement_EA_NewMessage(object? sender, EventArgs e) { // aggiorno visualizzazione PubSubEventArgs currArgs = (PubSubEventArgs)e; // conversione on-the-fly SVG da mostrare if (!string.IsNullOrEmpty(currArgs.newMessage) && currArgs.newMessage.Length > 2) { if (currArgs.msgUid.StartsWith($"{channelProfElem}:{windowUid}")) { // deserializzo il dizionario delle risposte... var rawDict = JsonConvert.DeserializeObject>(currArgs.newMessage); currElement = rawDict ?? new List(); CurrData.ProfElementList = currElement; } await InvokeAsync(StateHasChanged); } await Task.Delay(1); } private async void PipeSvg_EA_NewMessage(object? sender, EventArgs e) { // aggiorno visualizzazione PubSubEventArgs currArgs = (PubSubEventArgs)e; // conversione on-the-fly SVG da mostrare if (!string.IsNullOrEmpty(currArgs.newMessage)) { if (currArgs.msgUid.Equals($"{channelSvg}:{windowUid}")) { currSvg = currArgs.newMessage; CurrData.SvgPreview = currArgs.newMessage; } await InvokeAsync(StateHasChanged); } await Task.Delay(1); } /// /// Rilettura dati /// /// private Task ReloadData() { AvailHardwareList = new List(); if (File.Exists(cFileHardware)) { string rawValHW = File.ReadAllText(cFileHardware); var rawListHW = JsonConvert.DeserializeObject>(rawValHW) ?? new List(); foreach (var item in rawListHW) { AvailHardwareList.Add(item); } } return Task.Delay(100); } private void updateInfoJwd(string currSer, string? newFamilyHardware, Hardware? newHardware, string? newColorMaterial, string? newMaterial, string? newGlass, string? newProfile) { Dictionary DictParam = new Dictionary(); if (!string.IsNullOrEmpty(newFamilyHardware)) DictParam.Add("FamilyHardware", newFamilyHardware!); if (!string.IsNullOrEmpty(newColorMaterial)) DictParam.Add("Color", newColorMaterial!); if (!string.IsNullOrEmpty(newMaterial)) DictParam.Add("Material", newMaterial!); if (!string.IsNullOrEmpty(newGlass)) DictParam.Add("Glass", newGlass!); if (!string.IsNullOrEmpty(newProfile)) DictParam.Add("Profile", newProfile!); var dp = SerialMan.MassUpdate(currSer, DictParam); CurrData.CurrJwd = dp.serializeStruct; //var newJwd = SerialMan.MassUpdate(currSer, shape, newFamilyHardware, newHardware, newColorMaterial, newMaterial, newGlass, newProfile); //CurrData.CurrJwd = newJwd; } private void RemoveParams(Microsoft.AspNetCore.Components.Web.MouseEventArgs args) { SetupList = new BaseListPayload(); } private Task RemoveJwd() { //initialJwd = "{}"; //currJwd = initialJwd; CurrData.CurrJwd = "{}"; // rileggo altri dati return ReloadData(); } #endregion Private Methods } }