Merge branch 'release/AddHwOptions'
This commit is contained in:
@@ -1,93 +1,124 @@
|
||||
# WebWindowConfigurator
|
||||
|
||||
Componente per configurare un serramento partendo da un JWD.
|
||||
|
||||
Durante la configurazione ad ogni cambiamento viene aggiornata l'immagine del serramento.
|
||||
|
||||
## Requisiti
|
||||
|
||||
I requisiti per utilizzare il componente sono:
|
||||
- JWD da modificare
|
||||
- Lista delle famiglie hardware
|
||||
- Lista hardware
|
||||
- Lista dei materiali
|
||||
- Lista dei colori dei materiali
|
||||
- Lista dei vetri ammessi
|
||||
- Lista dei profili gestiti
|
||||
|
||||
## Funzionalità componente
|
||||
|
||||
Il componente permette i seguenti comportamenti principali:
|
||||
|
||||
- Aggiungere un gruppo di ante al telaio,
|
||||
- Aggiungere uno split al telaio o a un anta,
|
||||
- Copiare il contenuto di un'anta in un'altra anta,
|
||||
- Eliminare un gruppo di ante,
|
||||
- Eliminare uno split
|
||||
|
||||
## JWD
|
||||
|
||||
Il JWD descrive la struttura e le caratteristiche di un serramento.
|
||||
|
||||
Un serramento è composto da un determinato tipo di elementi:
|
||||
- Telaio (obbligatorio)
|
||||
- Divisione (facoltativa)
|
||||
- Gruppo ante (facoltativo)
|
||||
- Riempimento (obbligatorio almeno un riempimento)
|
||||
|
||||
All'intero serramento sono associate le seguenti caratteristiche:
|
||||
- Profilo;
|
||||
- Materiale;
|
||||
- Vetro;
|
||||
- Colore serramento.
|
||||
|
||||
### Telaio (Frame)
|
||||
|
||||
Al frame sono associate le seguenti caratteristiche:
|
||||
- Forma;
|
||||
- Dimensioni;
|
||||
- Soglia;
|
||||
- Giunti;
|
||||
- Quantità bottom Rail.
|
||||
|
||||
#### Forme Telaio
|
||||
|
||||
Le forme ammesse per il telaio sono le seguenti:
|
||||
- Arc
|
||||
- Circle
|
||||
- Custom
|
||||
- FullArc
|
||||
- Rectangle
|
||||
- SemiArc
|
||||
- SemiFullArc
|
||||
- Trapezoid
|
||||
|
||||
### Divisione (Split)
|
||||
|
||||
Uno split genera sempre almeno due sottoaree contenenti ognuna un riempimento (Fill) di tipo vetro.
|
||||
Se ci sono solo due sottoaree generate da uno split, si possono scambiare tra di loro.
|
||||
|
||||
Uno split può essere:
|
||||
- Orizzontale, definisco il numero di split orizzontali e l'altezza delle nuove aree orizzontali formate;
|
||||
- Verticale, definisco il numero di split verticali e la larghezza delle nuove aree verticali formate;
|
||||
- A griglia, definisco il numero di split orizzontali e verticali e l'altezza delle aree orizzontali e la larghezza delle aree verticali.
|
||||
|
||||
### Gruppo di ante (Sash group)
|
||||
|
||||
Al gruppo di ante sono associate le seguenti caratteristiche:
|
||||
- Numero di ante;
|
||||
- Orientamento;
|
||||
- Quantità bottom rail;
|
||||
- Giunti;
|
||||
- Codice hardware.
|
||||
|
||||
#### Singola anta
|
||||
|
||||
La singola anta ha associate le seguenti caratteristiche:
|
||||
- Tipologia di apertura;
|
||||
- Dimensione;
|
||||
- Se ha la maniglia.
|
||||
|
||||
#### Hardware
|
||||
|
||||
Per calcolare la lista di hardware ammessi data una famiglia di hardware servono i seguenti dati:
|
||||
- Forma del gruppo di ante (tramite richiesta al programma di calcolo);
|
||||
- Apertura dell'anta con la maniglia;
|
||||
- Numero di ante;
|
||||
- Posizione anta battente (nel caso di tre o più ante, bisogna sapere se l'anta con la maniglia è incernierata al telaio o a un'altra anta).
|
||||
|
||||
La richiesta della forma del gruppo di ante viene trasmessa se si cambiano i seguenti parametri:
|
||||
- Forma del telaio;
|
||||
- Dimensioni del telaio;
|
||||
- Aggiunta di uno split;
|
||||
- ELiminazione di uno split.
|
||||
|
||||
La lista degli hardware viene aggiornata se si cambiano i seguenti parametri:
|
||||
- Forma del gruppo di ante;
|
||||
- Numero ante nello stesso gruppo di ante;
|
||||
- Se si sposta l'anta e cambia il tipo di apertura e/o la posizione dell'anta battente.
|
||||
|
||||
### Riempimento (Fill)
|
||||
|
||||
Descrive il tipo di riempimento: vetro o pannello.
|
||||
|
||||
|
||||
## Getting started
|
||||
|
||||
To make it easy for you to get started with GitLab, here's a list of recommended next steps.
|
||||
|
||||
Already a pro? Just edit this README.md and make it your own. Want to make it easy? [Use the template at the bottom](#editing-this-readme)!
|
||||
|
||||
## Add your files
|
||||
|
||||
- [ ] [Create](https://docs.gitlab.com/ee/user/project/repository/web_editor.html#create-a-file) or [upload](https://docs.gitlab.com/ee/user/project/repository/web_editor.html#upload-a-file) files
|
||||
- [ ] [Add files using the command line](https://docs.gitlab.com/topics/git/add_files/#add-files-to-a-git-repository) or push an existing Git repository with the following command:
|
||||
|
||||
```
|
||||
cd existing_repo
|
||||
git remote add origin https://gitlab.steamware.net/etis/webwindowconfigurator.git
|
||||
git branch -M main
|
||||
git push -uf origin main
|
||||
```
|
||||
|
||||
## Integrate with your tools
|
||||
|
||||
- [ ] [Set up project integrations](https://gitlab.steamware.net/etis/webwindowconfigurator/-/settings/integrations)
|
||||
|
||||
## Collaborate with your team
|
||||
|
||||
- [ ] [Invite team members and collaborators](https://docs.gitlab.com/ee/user/project/members/)
|
||||
- [ ] [Create a new merge request](https://docs.gitlab.com/ee/user/project/merge_requests/creating_merge_requests.html)
|
||||
- [ ] [Automatically close issues from merge requests](https://docs.gitlab.com/ee/user/project/issues/managing_issues.html#closing-issues-automatically)
|
||||
- [ ] [Enable merge request approvals](https://docs.gitlab.com/ee/user/project/merge_requests/approvals/)
|
||||
- [ ] [Set auto-merge](https://docs.gitlab.com/user/project/merge_requests/auto_merge/)
|
||||
|
||||
## Test and Deploy
|
||||
|
||||
Use the built-in continuous integration in GitLab.
|
||||
|
||||
- [ ] [Get started with GitLab CI/CD](https://docs.gitlab.com/ee/ci/quick_start/)
|
||||
- [ ] [Analyze your code for known vulnerabilities with Static Application Security Testing (SAST)](https://docs.gitlab.com/ee/user/application_security/sast/)
|
||||
- [ ] [Deploy to Kubernetes, Amazon EC2, or Amazon ECS using Auto Deploy](https://docs.gitlab.com/ee/topics/autodevops/requirements.html)
|
||||
- [ ] [Use pull-based deployments for improved Kubernetes management](https://docs.gitlab.com/ee/user/clusters/agent/)
|
||||
- [ ] [Set up protected environments](https://docs.gitlab.com/ee/ci/environments/protected_environments.html)
|
||||
|
||||
***
|
||||
|
||||
# Editing this README
|
||||
|
||||
When you're ready to make this README your own, just edit this file and use the handy template below (or feel free to structure it however you want - this is just a starting point!). Thanks to [makeareadme.com](https://www.makeareadme.com/) for this template.
|
||||
|
||||
## Suggestions for a good README
|
||||
|
||||
Every project is different, so consider which of these sections apply to yours. The sections used in the template are suggestions for most open source projects. Also keep in mind that while a README can be too long and detailed, too long is better than too short. If you think your README is too long, consider utilizing another form of documentation rather than cutting out information.
|
||||
|
||||
## Name
|
||||
Choose a self-explaining name for your project.
|
||||
|
||||
## Description
|
||||
Let people know what your project can do specifically. Provide context and add a link to any reference visitors might be unfamiliar with. A list of Features or a Background subsection can also be added here. If there are alternatives to your project, this is a good place to list differentiating factors.
|
||||
|
||||
## Badges
|
||||
On some READMEs, you may see small images that convey metadata, such as whether or not all the tests are passing for the project. You can use Shields to add some to your README. Many services also have instructions for adding a badge.
|
||||
|
||||
## Visuals
|
||||
Depending on what you are making, it can be a good idea to include screenshots or even a video (you'll frequently see GIFs rather than actual videos). Tools like ttygif can help, but check out Asciinema for a more sophisticated method.
|
||||
|
||||
## Installation
|
||||
Within a particular ecosystem, there may be a common way of installing things, such as using Yarn, NuGet, or Homebrew. However, consider the possibility that whoever is reading your README is a novice and would like more guidance. Listing specific steps helps remove ambiguity and gets people to using your project as quickly as possible. If it only runs in a specific context like a particular programming language version or operating system or has dependencies that have to be installed manually, also add a Requirements subsection.
|
||||
|
||||
## Usage
|
||||
Use examples liberally, and show the expected output if you can. It's helpful to have inline the smallest example of usage that you can demonstrate, while providing links to more sophisticated examples if they are too long to reasonably include in the README.
|
||||
|
||||
## Support
|
||||
Tell people where they can go to for help. It can be any combination of an issue tracker, a chat room, an email address, etc.
|
||||
|
||||
## Roadmap
|
||||
If you have ideas for releases in the future, it is a good idea to list them in the README.
|
||||
|
||||
## Contributing
|
||||
State if you are open to contributions and what your requirements are for accepting them.
|
||||
|
||||
For people who want to make changes to your project, it's helpful to have some documentation on how to get started. Perhaps there is a script that they should run or some environment variables that they need to set. Make these steps explicit. These instructions could also be useful to your future self.
|
||||
|
||||
You can also document commands to lint the code or run tests. These steps help to ensure high code quality and reduce the likelihood that the changes inadvertently break something. Having instructions for running tests is especially helpful if it requires external setup, such as starting a Selenium server for testing in a browser.
|
||||
|
||||
## Authors and acknowledgment
|
||||
Show your appreciation to those who have contributed to the project.
|
||||
Mancano:
|
||||
- [ ] Gestione e inserimento opzioni hardware in CardSashGroup ;
|
||||
- [ ] Filtrare hardware utilizzando anche la posizione dell'anta battente.
|
||||
|
||||
## License
|
||||
For open source projects, say how it is licensed.
|
||||
|
||||
## Project status
|
||||
If you have run out of energy or time for your project, put a note at the top of the README saying that development has slowed down or stopped completely. Someone may choose to fork your project or volunteer to step in as a maintainer or owner, allowing your project to keep going. You can also make an explicit request for maintainers.
|
||||
|
||||
BIN
Binary file not shown.
@@ -27,7 +27,7 @@ namespace Test.UI.Components.Pages
|
||||
|
||||
public void Dispose()
|
||||
{
|
||||
DLService.CalcDonePipe.EA_NewMessage -= CalcDonePipe_EA_NewMessage;
|
||||
DLService.PipeSvg.EA_NewMessage -= PipeSvg_EA_NewMessage;
|
||||
}
|
||||
|
||||
protected MarkupString JsonSer
|
||||
@@ -40,7 +40,7 @@ namespace Test.UI.Components.Pages
|
||||
protected override async Task OnInitializedAsync()
|
||||
{
|
||||
ConfInit();
|
||||
DLService.CalcDonePipe.EA_NewMessage += CalcDonePipe_EA_NewMessage;
|
||||
DLService.PipeSvg.EA_NewMessage += PipeSvg_EA_NewMessage;
|
||||
//await ReloadData();
|
||||
await Task.Delay(1);
|
||||
}
|
||||
@@ -67,7 +67,7 @@ namespace Test.UI.Components.Pages
|
||||
}
|
||||
}
|
||||
|
||||
private async void CalcDonePipe_EA_NewMessage(object? sender, EventArgs e)
|
||||
private async void PipeSvg_EA_NewMessage(object? sender, EventArgs e)
|
||||
{
|
||||
// aggiorno visualizzazione
|
||||
PubSubEventArgs currArgs = (PubSubEventArgs)e;
|
||||
|
||||
@@ -28,40 +28,11 @@ namespace Test.UI.Components.Pages
|
||||
|
||||
#region Public Methods
|
||||
|
||||
/// <summary>
|
||||
/// Comparatore euqlity obj dizionario
|
||||
/// </summary>
|
||||
/// <typeparam name="TKey"></typeparam>
|
||||
/// <typeparam name="TValue"></typeparam>
|
||||
/// <param name="dict1"></param>
|
||||
/// <param name="dict2"></param>
|
||||
/// <returns></returns>
|
||||
public bool DictionariesEqual<TKey, TValue>(Dictionary<TKey, TValue> dict1, Dictionary<TKey, TValue> dict2)
|
||||
{
|
||||
// Handle null cases
|
||||
if (dict1 == null || dict2 == null)
|
||||
return dict1 == dict2;
|
||||
|
||||
// Quick size check
|
||||
if (dict1.Count != dict2.Count)
|
||||
return false;
|
||||
|
||||
// Compare each key-value pair
|
||||
foreach (var kvp in dict1)
|
||||
{
|
||||
if (!dict2.TryGetValue(kvp.Key, out TValue value))
|
||||
return false; // Key missing in dict2
|
||||
|
||||
if (!EqualityComparer<TValue>.Default.Equals(kvp.Value, value))
|
||||
return false; // Value mismatch
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
public void Dispose()
|
||||
{
|
||||
DLService.CalcDonePipe.EA_NewMessage -= CalcDonePipe_EA_NewMessage;
|
||||
DLService.PipeSvg.EA_NewMessage -= PipeSvg_EA_NewMessage;
|
||||
DLService.PipeShape.EA_NewMessage -= PipeShape_EA_NewMessage;
|
||||
DLService.PipeHwOpt.EA_NewMessage -= PipeHwOption_EA_NewMessage;
|
||||
}
|
||||
|
||||
#endregion Public Methods
|
||||
@@ -73,6 +44,8 @@ namespace Test.UI.Components.Pages
|
||||
/// </summary>
|
||||
protected LivePayload CurrData = new LivePayload();
|
||||
|
||||
protected Dictionary<int, string> currGroupShape = new Dictionary<int, string>();
|
||||
protected Dictionary<int, string> currHwOption = new Dictionary<int, string>();
|
||||
protected string currJwd = "...";
|
||||
protected Dictionary<string, string> m_CurrArgs = new Dictionary<string, string>();
|
||||
protected string prevJwd = "";
|
||||
@@ -149,10 +122,20 @@ namespace Test.UI.Components.Pages
|
||||
|
||||
#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();
|
||||
InitialJwd = File.ReadAllText("Data\\AntaSingola.jwd");
|
||||
//InitialJwd = File.ReadAllText("Data\\FinestraDueAnteSeparate.jwd");
|
||||
InitialJwd = File.ReadAllText("Data\\AntaDoppia.jwd");
|
||||
currJwd = InitialJwd;
|
||||
// rileggo altri dati
|
||||
await ReloadData();
|
||||
@@ -162,8 +145,6 @@ namespace Test.UI.Components.Pages
|
||||
ColorMaterial = AvailColorMaterialList,
|
||||
FamilyHardware = AvailFamilyHardwareList,
|
||||
Glass = AvailGlassList,
|
||||
//FamilyHardware = new List<string>(),
|
||||
//Material = new List<string>(),
|
||||
Hardware = AvailHardwareList,
|
||||
Material = AvailMaterialList,
|
||||
Profile = AvailProfileList,
|
||||
@@ -172,9 +153,13 @@ namespace Test.UI.Components.Pages
|
||||
CurrData = new LivePayload()
|
||||
{
|
||||
CurrJwd = InitialJwd,
|
||||
SvgPreview = currSvg
|
||||
SvgPreview = currSvg,
|
||||
DictShape = currGroupShape,
|
||||
DictOptionsXml = currHwOption
|
||||
};
|
||||
DLService.CalcDonePipe.EA_NewMessage += CalcDonePipe_EA_NewMessage;
|
||||
DLService.PipeSvg.EA_NewMessage += PipeSvg_EA_NewMessage;
|
||||
DLService.PipeShape.EA_NewMessage += PipeShape_EA_NewMessage;
|
||||
DLService.PipeHwOpt.EA_NewMessage += PipeHwOption_EA_NewMessage;
|
||||
}
|
||||
|
||||
#endregion Protected Methods
|
||||
@@ -182,48 +167,53 @@ namespace Test.UI.Components.Pages
|
||||
#region Private Fields
|
||||
|
||||
private string apiUrl = "";
|
||||
|
||||
private string calcTag = "";
|
||||
|
||||
private string CalcUid = "CurrWindow";
|
||||
|
||||
private string cFileHardware = "Hardware/Setup.json";
|
||||
|
||||
private string cFileTemplate = "Data/Setup.json";
|
||||
|
||||
private string colorMassUpdate;
|
||||
|
||||
private TemplateSelectDTO? currSel = null;
|
||||
|
||||
private string currSvg = "";
|
||||
|
||||
private string familyHWMassUpdate;
|
||||
private string GenericBasePath = "";
|
||||
private string glassMassUpdate;
|
||||
private Hardware hardwareMassUpdate;
|
||||
private string imgBasePath = "";
|
||||
private string materialMassUpdate;
|
||||
private string outClose = "";
|
||||
private string outSave = "";
|
||||
private string profileMassUpdate;
|
||||
private string subChannel = "";
|
||||
|
||||
private string GenericBasePath = "";
|
||||
|
||||
private string glassMassUpdate;
|
||||
|
||||
private Hardware hardwareMassUpdate;
|
||||
|
||||
private string hwOptionChannel = "";
|
||||
private string imgBasePath = "";
|
||||
|
||||
/// <summary>
|
||||
/// Semaforo x definire se sia già in modalità ionterattiva o di prerendering
|
||||
/// </summary>
|
||||
private bool isInteractive = false;
|
||||
|
||||
private string materialMassUpdate;
|
||||
|
||||
private string outClose = "";
|
||||
|
||||
private string outSave = "";
|
||||
|
||||
private string profileMassUpdate;
|
||||
|
||||
private string shapeChannel = "";
|
||||
private string svgChannel = "";
|
||||
private string windowUid = "CurrWindow";
|
||||
|
||||
#endregion Private Fields
|
||||
|
||||
#region Private Methods
|
||||
|
||||
private async void CalcDonePipe_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($"{subChannel}:{windowUid}"))
|
||||
{
|
||||
currSvg = currArgs.newMessage;
|
||||
CurrData.SvgPreview = currArgs.newMessage;
|
||||
}
|
||||
await InvokeAsync(StateHasChanged);
|
||||
}
|
||||
await Task.Delay(1);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Effettua chiusura oggetto con eventuale save
|
||||
/// </summary>
|
||||
@@ -240,30 +230,118 @@ namespace Test.UI.Components.Pages
|
||||
imgBasePath = Config.GetValue<string>("ServerConf:ImageBaseUrl") ?? "";
|
||||
GenericBasePath = Config.GetValue<string>("ServerConf:GenericBaseUrl") ?? "";
|
||||
calcTag = Config.GetValue<string>("ServerConf:CalcTag") ?? "";
|
||||
subChannel = Config.GetValue<string>("ServerConf:SvgChannel") ?? "";
|
||||
svgChannel = Config.GetValue<string>("ServerConf:SvgChannel") ?? "";
|
||||
shapeChannel = Config.GetValue<string>("ServerConf:ShapeChannel") ?? "";
|
||||
hwOptionChannel = Config.GetValue<string>("ServerConf:HwOptChannel") ?? "";
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Esecuzione richiesta
|
||||
/// </summary>
|
||||
/// <param name="CurrArgs"></param>
|
||||
/// <returns></returns>
|
||||
private async Task ExecRequest(Dictionary<string, string> CurrArgs)
|
||||
{
|
||||
outClose = "";
|
||||
outSave = "";
|
||||
// verifico se contiene JWD, lo aggiorno
|
||||
if (CurrArgs.ContainsKey("Jwd"))
|
||||
// Proseguo solo se sono in interattivo (NO prerender pagina)
|
||||
if (isInteractive)
|
||||
{
|
||||
currJwd = CurrArgs["Jwd"];
|
||||
CurrData.CurrJwd = currJwd;
|
||||
outClose = "";
|
||||
outSave = "";
|
||||
// verifico se contiene JWD, lo aggiorno
|
||||
if (CurrArgs.ContainsKey("Jwd"))
|
||||
{
|
||||
currJwd = CurrArgs["Jwd"];
|
||||
CurrData.CurrJwd = currJwd;
|
||||
}
|
||||
// se il SSE variato --> invio
|
||||
if (!currJwd.Equals(prevJwd) || !EgwCoreLib.Lux.Core.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);
|
||||
}
|
||||
}
|
||||
// se il SSE variato --> invio
|
||||
if (!currJwd.Equals(prevJwd) || !DictionariesEqual(m_CurrArgs, CurrArgs))
|
||||
}
|
||||
|
||||
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))
|
||||
{
|
||||
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);
|
||||
if (currArgs.msgUid.StartsWith($"{hwOptionChannel}:{windowUid}"))
|
||||
{
|
||||
/*--------------------------------------
|
||||
* FixMe Todo levare !!!
|
||||
* - try/catch deserializzazione
|
||||
* - se fallisse metto le stesse opzioni a ttuti i GroupId
|
||||
**--------------------------------------*/
|
||||
Dictionary<int, string> rawDict = new Dictionary<int, string>();
|
||||
try
|
||||
{
|
||||
// deserializzo il dizionario delle risposte...
|
||||
rawDict = JsonConvert.DeserializeObject<Dictionary<int, string>>(currArgs.newMessage) ?? new Dictionary<int, string>();
|
||||
}
|
||||
catch
|
||||
{ }
|
||||
if (rawDict.Count == 0)
|
||||
{
|
||||
//se il dizionario delle shape esiste uso quello...
|
||||
if (CurrData.DictShape.Count > 0)
|
||||
{
|
||||
foreach (var item in CurrData.DictShape)
|
||||
{
|
||||
rawDict.Add(item.Key, currArgs.newMessage);
|
||||
}
|
||||
}
|
||||
}
|
||||
currHwOption = rawDict ?? new Dictionary<int, string>();
|
||||
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($"{shapeChannel}:{windowUid}"))
|
||||
{
|
||||
// deserializzo il dizionario delle risposte...
|
||||
var rawDict = JsonConvert.DeserializeObject<Dictionary<int, string>>(currArgs.newMessage);
|
||||
currGroupShape = rawDict ?? new Dictionary<int, string>();
|
||||
CurrData.DictShape = currGroupShape;
|
||||
}
|
||||
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($"{svgChannel}:{windowUid}"))
|
||||
{
|
||||
currSvg = currArgs.newMessage;
|
||||
CurrData.SvgPreview = currArgs.newMessage;
|
||||
}
|
||||
await InvokeAsync(StateHasChanged);
|
||||
}
|
||||
await Task.Delay(1);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
|
||||
@@ -25,7 +25,7 @@ namespace Test.UI.Components.Pages
|
||||
|
||||
public void Dispose()
|
||||
{
|
||||
DLService.CalcDonePipe.EA_NewMessage -= CalcDonePipe_EA_NewMessage;
|
||||
DLService.PipeSvg.EA_NewMessage -= PipeSvg_EA_NewMessage;
|
||||
}
|
||||
|
||||
#endregion Public Methods
|
||||
@@ -96,7 +96,7 @@ namespace Test.UI.Components.Pages
|
||||
SelColorMaterial = "Black";
|
||||
SelMaterial = "Pine";
|
||||
SelGlass = "4T/16/4T";
|
||||
DLService.CalcDonePipe.EA_NewMessage += CalcDonePipe_EA_NewMessage;
|
||||
DLService.PipeSvg.EA_NewMessage += PipeSvg_EA_NewMessage;
|
||||
await ReloadData();
|
||||
}
|
||||
|
||||
@@ -123,7 +123,7 @@ namespace Test.UI.Components.Pages
|
||||
|
||||
#region Private Methods
|
||||
|
||||
private async void CalcDonePipe_EA_NewMessage(object? sender, EventArgs e)
|
||||
private async void PipeSvg_EA_NewMessage(object? sender, EventArgs e)
|
||||
{
|
||||
// aggiorno visualizzazione
|
||||
PubSubEventArgs currArgs = (PubSubEventArgs)e;
|
||||
|
||||
@@ -20,7 +20,7 @@ namespace Test.UI.Components.Pages
|
||||
|
||||
public void Dispose()
|
||||
{
|
||||
DLService.CalcDonePipe.EA_NewMessage -= CalcDonePipe_EA_NewMessage;
|
||||
DLService.PipeSvg.EA_NewMessage -= PipeSvg_EA_NewMessage;
|
||||
}
|
||||
|
||||
#endregion Public Methods
|
||||
@@ -62,7 +62,7 @@ namespace Test.UI.Components.Pages
|
||||
{
|
||||
isLoading = true;
|
||||
ConfInit();
|
||||
DLService.CalcDonePipe.EA_NewMessage += CalcDonePipe_EA_NewMessage;
|
||||
DLService.PipeSvg.EA_NewMessage += PipeSvg_EA_NewMessage;
|
||||
await ReloadData();
|
||||
}
|
||||
|
||||
@@ -105,7 +105,7 @@ namespace Test.UI.Components.Pages
|
||||
|
||||
#region Private Methods
|
||||
|
||||
private async void CalcDonePipe_EA_NewMessage(object? sender, EventArgs e)
|
||||
private async void PipeSvg_EA_NewMessage(object? sender, EventArgs e)
|
||||
{
|
||||
// aggiorno visualizzazione
|
||||
PubSubEventArgs currArgs = (PubSubEventArgs)e;
|
||||
|
||||
@@ -25,7 +25,7 @@ namespace Test.UI.Components.Pages
|
||||
|
||||
public void Dispose()
|
||||
{
|
||||
DLService.CalcDonePipe.EA_NewMessage -= CalcDonePipe_EA_NewMessage;
|
||||
DLService.PipeSvg.EA_NewMessage -= PipeSvg_EA_NewMessage;
|
||||
}
|
||||
|
||||
#endregion Public Methods
|
||||
@@ -98,7 +98,7 @@ namespace Test.UI.Components.Pages
|
||||
//SelGlass = "4T/16/4T";
|
||||
InitialJwd = File.ReadAllText("Data\\FinDueAnteBottomFisso.jwd");
|
||||
currJwd = InitialJwd;
|
||||
DLService.CalcDonePipe.EA_NewMessage += CalcDonePipe_EA_NewMessage;
|
||||
DLService.PipeSvg.EA_NewMessage += PipeSvg_EA_NewMessage;
|
||||
await ReloadData();
|
||||
}
|
||||
|
||||
@@ -125,7 +125,7 @@ namespace Test.UI.Components.Pages
|
||||
|
||||
#region Private Methods
|
||||
|
||||
private async void CalcDonePipe_EA_NewMessage(object? sender, EventArgs e)
|
||||
private async void PipeSvg_EA_NewMessage(object? sender, EventArgs e)
|
||||
{
|
||||
// aggiorno visualizzazione
|
||||
PubSubEventArgs currArgs = (PubSubEventArgs)e;
|
||||
|
||||
@@ -25,7 +25,7 @@ namespace Test.UI.Components.Pages
|
||||
|
||||
public void Dispose()
|
||||
{
|
||||
DLService.CalcDonePipe.EA_NewMessage -= CalcDonePipe_EA_NewMessage;
|
||||
DLService.PipeSvg.EA_NewMessage -= PipeSvg_EA_NewMessage;
|
||||
}
|
||||
|
||||
#endregion Public Methods
|
||||
@@ -96,7 +96,7 @@ namespace Test.UI.Components.Pages
|
||||
SelColorMaterial = "Black";
|
||||
SelMaterial = "Pine";
|
||||
SelGlass = "4T/16/4T";
|
||||
DLService.CalcDonePipe.EA_NewMessage += CalcDonePipe_EA_NewMessage;
|
||||
DLService.PipeSvg.EA_NewMessage += PipeSvg_EA_NewMessage;
|
||||
await ReloadData();
|
||||
}
|
||||
|
||||
@@ -123,7 +123,7 @@ namespace Test.UI.Components.Pages
|
||||
|
||||
#region Private Methods
|
||||
|
||||
private async void CalcDonePipe_EA_NewMessage(object? sender, EventArgs e)
|
||||
private async void PipeSvg_EA_NewMessage(object? sender, EventArgs e)
|
||||
{
|
||||
// aggiorno visualizzazione
|
||||
PubSubEventArgs currArgs = (PubSubEventArgs)e;
|
||||
|
||||
+70
-38
@@ -8,82 +8,114 @@
|
||||
"Shape": "RECTANGLE",
|
||||
"DimensionList": [
|
||||
{
|
||||
"nIndex": 1,
|
||||
"sName": "Width",
|
||||
"dValue": 1200.0
|
||||
"Index": 1,
|
||||
"Name": "Width",
|
||||
"Value": 800.0
|
||||
},
|
||||
{
|
||||
"nIndex": 2,
|
||||
"sName": "Height",
|
||||
"dValue": 1500.0
|
||||
"Index": 2,
|
||||
"Name": "Height",
|
||||
"Value": 1200.0
|
||||
}
|
||||
],
|
||||
"JointList": [
|
||||
{
|
||||
"nIndex": 1,
|
||||
"JointType": "FULL_V"
|
||||
"Index": 1,
|
||||
"JointType": "FULL_H"
|
||||
},
|
||||
{
|
||||
"nIndex": 2,
|
||||
"JointType": "FULL_V"
|
||||
"Index": 2,
|
||||
"JointType": "FULL_H"
|
||||
},
|
||||
{
|
||||
"nIndex": 3,
|
||||
"JointType": "FULL_V"
|
||||
"Index": 3,
|
||||
"JointType": "FULL_H"
|
||||
},
|
||||
{
|
||||
"nIndex": 4,
|
||||
"JointType": "FULL_V"
|
||||
"Index": 4,
|
||||
"JointType": "FULL_H"
|
||||
}
|
||||
],
|
||||
"BottomRail": false,
|
||||
"BottomRailQty": 0,
|
||||
"IdGroup": 1,
|
||||
"GroupId": 1,
|
||||
"AreaList": [
|
||||
{
|
||||
"bIsSashVertical": true,
|
||||
"IsSashVertical": true,
|
||||
"SashList": [
|
||||
{
|
||||
"nSashId": 1,
|
||||
"OpeningType": "TURNONLY_LEFT",
|
||||
"bHasHandle": false,
|
||||
"dDimension": 50.0
|
||||
"SashId": 1,
|
||||
"OpeningType": "TILTTURN_LEFT",
|
||||
"HasHandle": true,
|
||||
"Dimension": 50.0
|
||||
},
|
||||
{
|
||||
"nSashId": 2,
|
||||
"OpeningType": "TILTTURN_RIGHT",
|
||||
"bHasHandle": true,
|
||||
"dDimension": 50.0
|
||||
"SashId": 2,
|
||||
"OpeningType": "TURNONLY_RIGHT",
|
||||
"HasHandle": false,
|
||||
"Dimension": 50.0
|
||||
}
|
||||
],
|
||||
"SashType": "NULL",
|
||||
"JointList": [
|
||||
{
|
||||
"nIndex": 1,
|
||||
"JointType": "FULL_V"
|
||||
"Index": 1,
|
||||
"JointType": "FULL_H"
|
||||
},
|
||||
{
|
||||
"nIndex": 2,
|
||||
"JointType": "FULL_V"
|
||||
"Index": 2,
|
||||
"JointType": "FULL_H"
|
||||
},
|
||||
{
|
||||
"nIndex": 3,
|
||||
"JointType": "FULL_V"
|
||||
"Index": 3,
|
||||
"JointType": "FULL_H"
|
||||
},
|
||||
{
|
||||
"nIndex": 4,
|
||||
"JointType": "FULL_V"
|
||||
"Index": 4,
|
||||
"JointType": "FULL_H"
|
||||
}
|
||||
],
|
||||
"Hardware": "000631",
|
||||
"IdGroup": 2,
|
||||
"BottomRail": false,
|
||||
"BottomRailQty": 0,
|
||||
"Hardware": "000633",
|
||||
"HwOptionList": [
|
||||
{
|
||||
"Name": "Entrata",
|
||||
"Value": "15"
|
||||
},
|
||||
{
|
||||
"Name": "LavManigliaPassante",
|
||||
"Value": "false"
|
||||
},
|
||||
{
|
||||
"Name": "PosizioneForoCilindro",
|
||||
"Value": "sotto"
|
||||
},
|
||||
{
|
||||
"Name": "Deviatore",
|
||||
"Value": "false"
|
||||
},
|
||||
{
|
||||
"Name": "ModelloCilindro",
|
||||
"Value": "c999"
|
||||
},
|
||||
{
|
||||
"Name": "LavCilindroPassante",
|
||||
"Value": "false"
|
||||
},
|
||||
{
|
||||
"Name": "HMan",
|
||||
"Value": "400"
|
||||
}
|
||||
],
|
||||
"GroupId": 2,
|
||||
"AreaList": [
|
||||
{
|
||||
"IdGroup": 3,
|
||||
"GroupId": 4,
|
||||
"AreaList": [
|
||||
{
|
||||
"IdGroup": 4,
|
||||
"FillType": "GLASS",
|
||||
"GroupId": 3,
|
||||
"AreaList": [],
|
||||
"AreaType": "FILL"
|
||||
}
|
||||
@@ -91,11 +123,11 @@
|
||||
"AreaType": "SPLITTED"
|
||||
},
|
||||
{
|
||||
"IdGroup": 5,
|
||||
"GroupId": 5,
|
||||
"AreaList": [
|
||||
{
|
||||
"FillType": "GLASS",
|
||||
"IdGroup": 6,
|
||||
"GroupId": 6,
|
||||
"AreaList": [],
|
||||
"AreaType": "FILL"
|
||||
}
|
||||
|
||||
@@ -8,73 +8,103 @@
|
||||
"Shape": "RECTANGLE",
|
||||
"DimensionList": [
|
||||
{
|
||||
"nIndex": 1,
|
||||
"sName": "Width",
|
||||
"dValue": 800.0
|
||||
"Index": 1,
|
||||
"Name": "Width",
|
||||
"Value": 800.0
|
||||
},
|
||||
{
|
||||
"nIndex": 2,
|
||||
"sName": "Height",
|
||||
"dValue": 1200.0
|
||||
"Index": 2,
|
||||
"Name": "Height",
|
||||
"Value": 1200.0
|
||||
}
|
||||
],
|
||||
"JointList": [
|
||||
{
|
||||
"nIndex": 1,
|
||||
"Index": 1,
|
||||
"JointType": "FULL_H"
|
||||
},
|
||||
{
|
||||
"nIndex": 2,
|
||||
"Index": 2,
|
||||
"JointType": "FULL_H"
|
||||
},
|
||||
{
|
||||
"nIndex": 3,
|
||||
"Index": 3,
|
||||
"JointType": "FULL_H"
|
||||
},
|
||||
{
|
||||
"nIndex": 4,
|
||||
"Index": 4,
|
||||
"JointType": "FULL_H"
|
||||
}
|
||||
],
|
||||
"BottomRail": false,
|
||||
"BottomRailQty": 0,
|
||||
"IdGroup": 1,
|
||||
"GroupId": 1,
|
||||
"AreaList": [
|
||||
{
|
||||
"bIsSashVertical": true,
|
||||
"IsSashVertical": true,
|
||||
"SashList": [
|
||||
{
|
||||
"nSashId": 1,
|
||||
"SashId": 1,
|
||||
"OpeningType": "TILTTURN_LEFT",
|
||||
"bHasHandle": true,
|
||||
"dDimension": 100.0
|
||||
"HasHandle": true,
|
||||
"Dimension": 100.0
|
||||
}
|
||||
],
|
||||
"SashType": "NULL",
|
||||
"JointList": [
|
||||
{
|
||||
"nIndex": 1,
|
||||
"Index": 1,
|
||||
"JointType": "FULL_H"
|
||||
},
|
||||
{
|
||||
"nIndex": 2,
|
||||
"Index": 2,
|
||||
"JointType": "FULL_H"
|
||||
},
|
||||
{
|
||||
"nIndex": 3,
|
||||
"Index": 3,
|
||||
"JointType": "FULL_H"
|
||||
},
|
||||
{
|
||||
"nIndex": 4,
|
||||
"Index": 4,
|
||||
"JointType": "FULL_H"
|
||||
}
|
||||
],
|
||||
"Hardware": "000635",
|
||||
"IdGroup": 2,
|
||||
"HwOptionList": [
|
||||
{
|
||||
"Name": "Entrata",
|
||||
"Value": "15"
|
||||
},
|
||||
{
|
||||
"Name": "LavManigliaPassante",
|
||||
"Value": "false"
|
||||
},
|
||||
{
|
||||
"Name": "PosizioneForoCilindro",
|
||||
"Value": "sotto"
|
||||
},
|
||||
{
|
||||
"Name": "Deviatore",
|
||||
"Value": "false"
|
||||
},
|
||||
{
|
||||
"Name": "ModelloCilindro",
|
||||
"Value": "c999"
|
||||
},
|
||||
{
|
||||
"Name": "LavCilindroPassante",
|
||||
"Value": "false"
|
||||
},
|
||||
{
|
||||
"Name": "HMan",
|
||||
"Value": "400"
|
||||
}
|
||||
],
|
||||
"GroupId": 2,
|
||||
"AreaList": [
|
||||
{
|
||||
"FillType": "GLASS",
|
||||
"IdGroup": 3,
|
||||
"GroupId": 3,
|
||||
"AreaList": [],
|
||||
"AreaType": "FILL"
|
||||
}
|
||||
|
||||
@@ -8,37 +8,37 @@
|
||||
"Shape": "RECTANGLE",
|
||||
"DimensionList": [
|
||||
{
|
||||
"nIndex": 1,
|
||||
"sName": "Width",
|
||||
"dValue": 1500.0
|
||||
"Index": 1,
|
||||
"Name": "Width",
|
||||
"Value": 1500.0
|
||||
},
|
||||
{
|
||||
"nIndex": 2,
|
||||
"sName": "Height",
|
||||
"dValue": 2100.0
|
||||
"Index": 2,
|
||||
"Name": "Height",
|
||||
"Value": 2100.0
|
||||
}
|
||||
],
|
||||
"JointList": [
|
||||
{
|
||||
"nIndex": 1,
|
||||
"Index": 1,
|
||||
"JointType": "FULL_H"
|
||||
},
|
||||
{
|
||||
"nIndex": 2,
|
||||
"Index": 2,
|
||||
"JointType": "FULL_H"
|
||||
},
|
||||
{
|
||||
"nIndex": 3,
|
||||
"Index": 3,
|
||||
"JointType": "FULL_H"
|
||||
},
|
||||
{
|
||||
"nIndex": 4,
|
||||
"Index": 4,
|
||||
"JointType": "FULL_H"
|
||||
}
|
||||
],
|
||||
"BottomRail": false,
|
||||
"BottomRailQty": 0,
|
||||
"IdGroup": 1,
|
||||
"GroupId": 1,
|
||||
"AreaList": [
|
||||
{
|
||||
"SplitShape": "HORIZONTAL",
|
||||
@@ -46,22 +46,22 @@
|
||||
"SplitVertList": [],
|
||||
"SplitHorizList": [
|
||||
{
|
||||
"bIsRelative": true,
|
||||
"dDimension": 40.0
|
||||
"IsRelative": true,
|
||||
"Dimension": 40.0
|
||||
},
|
||||
{
|
||||
"bIsRelative": true,
|
||||
"dDimension": 60.0
|
||||
"IsRelative": true,
|
||||
"Dimension": 60.0
|
||||
}
|
||||
],
|
||||
"IdGroup": 2,
|
||||
"GroupId": 2,
|
||||
"AreaList": [
|
||||
{
|
||||
"IdGroup": 3,
|
||||
"GroupId": 3,
|
||||
"AreaList": [
|
||||
{
|
||||
"FillType": "GLASS",
|
||||
"IdGroup": 4,
|
||||
"GroupId": 4,
|
||||
"AreaList": [],
|
||||
"AreaType": "FILL"
|
||||
}
|
||||
@@ -69,52 +69,82 @@
|
||||
"AreaType": "SPLITTED"
|
||||
},
|
||||
{
|
||||
"IdGroup": 5,
|
||||
"GroupId": 5,
|
||||
"AreaList": [
|
||||
{
|
||||
"bIsSashVertical": true,
|
||||
"IsSashVertical": true,
|
||||
"SashList": [
|
||||
{
|
||||
"nSashId": 1,
|
||||
"SashId": 1,
|
||||
"OpeningType": "TURNONLY_LEFT",
|
||||
"bHasHandle": false,
|
||||
"dDimension": 50.0
|
||||
"HasHandle": false,
|
||||
"Dimension": 50.0
|
||||
},
|
||||
{
|
||||
"nSashId": 2,
|
||||
"SashId": 2,
|
||||
"OpeningType": "TILTTURN_RIGHT",
|
||||
"bHasHandle": true,
|
||||
"dDimension": 50.0
|
||||
"HasHandle": true,
|
||||
"Dimension": 50.0
|
||||
}
|
||||
],
|
||||
"SashType": "NULL",
|
||||
"JointList": [
|
||||
{
|
||||
"nIndex": 1,
|
||||
"Index": 1,
|
||||
"JointType": "FULL_H"
|
||||
},
|
||||
{
|
||||
"nIndex": 2,
|
||||
"Index": 2,
|
||||
"JointType": "FULL_H"
|
||||
},
|
||||
{
|
||||
"nIndex": 3,
|
||||
"Index": 3,
|
||||
"JointType": "FULL_H"
|
||||
},
|
||||
{
|
||||
"nIndex": 4,
|
||||
"Index": 4,
|
||||
"JointType": "FULL_H"
|
||||
}
|
||||
],
|
||||
"Hardware": "000631",
|
||||
"IdGroup": 6,
|
||||
"HwOptionList": [
|
||||
{
|
||||
"Name": "Entrata",
|
||||
"Value": "15"
|
||||
},
|
||||
{
|
||||
"Name": "LavManigliaPassante",
|
||||
"Value": "false"
|
||||
},
|
||||
{
|
||||
"Name": "PosizioneForoCilindro",
|
||||
"Value": "sotto"
|
||||
},
|
||||
{
|
||||
"Name": "Deviatore",
|
||||
"Value": "false"
|
||||
},
|
||||
{
|
||||
"Name": "ModelloCilindro",
|
||||
"Value": "c999"
|
||||
},
|
||||
{
|
||||
"Name": "LavCilindroPassante",
|
||||
"Value": "false"
|
||||
},
|
||||
{
|
||||
"Name": "HMan",
|
||||
"Value": "400"
|
||||
}
|
||||
],
|
||||
"GroupId": 6,
|
||||
"AreaList": [
|
||||
{
|
||||
"IdGroup": 7,
|
||||
"GroupId": 7,
|
||||
"AreaList": [
|
||||
{
|
||||
"FillType": "GLASS",
|
||||
"IdGroup": 8,
|
||||
"GroupId": 8,
|
||||
"AreaList": [],
|
||||
"AreaType": "FILL"
|
||||
}
|
||||
@@ -122,11 +152,11 @@
|
||||
"AreaType": "SPLITTED"
|
||||
},
|
||||
{
|
||||
"IdGroup": 9,
|
||||
"GroupId": 9,
|
||||
"AreaList": [
|
||||
{
|
||||
"FillType": "GLASS",
|
||||
"IdGroup": 10,
|
||||
"GroupId": 10,
|
||||
"AreaList": [],
|
||||
"AreaType": "FILL"
|
||||
}
|
||||
|
||||
@@ -8,99 +8,129 @@
|
||||
"Shape": "DOUBLECHAMFER",
|
||||
"DimensionList": [
|
||||
{
|
||||
"nIndex": 1,
|
||||
"sName": "Width",
|
||||
"dValue": 1500.0
|
||||
"Index": 1,
|
||||
"Name": "Width",
|
||||
"Value": 1500.0
|
||||
},
|
||||
{
|
||||
"nIndex": 2,
|
||||
"sName": "Height",
|
||||
"dValue": 1500.0
|
||||
"Index": 2,
|
||||
"Name": "Height",
|
||||
"Value": 1500.0
|
||||
},
|
||||
{
|
||||
"nIndex": 3,
|
||||
"sName": "Full Height",
|
||||
"dValue": 1800.0
|
||||
"Index": 3,
|
||||
"Name": "Full Height",
|
||||
"Value": 1800.0
|
||||
}
|
||||
],
|
||||
"JointList": [
|
||||
{
|
||||
"nIndex": 1,
|
||||
"Index": 1,
|
||||
"JointType": "FULL_H"
|
||||
},
|
||||
{
|
||||
"nIndex": 2,
|
||||
"Index": 2,
|
||||
"JointType": "FULL_H"
|
||||
},
|
||||
{
|
||||
"nIndex": 3,
|
||||
"Index": 3,
|
||||
"JointType": "FULL_H"
|
||||
},
|
||||
{
|
||||
"nIndex": 4,
|
||||
"Index": 4,
|
||||
"JointType": "FULL_H"
|
||||
}
|
||||
],
|
||||
"BottomRail": false,
|
||||
"BottomRailQty": 0,
|
||||
"IdGroup": 1,
|
||||
"GroupId": 1,
|
||||
"AreaList": [
|
||||
{
|
||||
"SplitShape": "VERTICAL",
|
||||
"SplitStartVert": true,
|
||||
"SplitVertList": [
|
||||
{
|
||||
"bIsRelative": true,
|
||||
"dDimension": 50.0
|
||||
"IsRelative": true,
|
||||
"Dimension": 50.0
|
||||
},
|
||||
{
|
||||
"bIsRelative": true,
|
||||
"dDimension": 50.0
|
||||
"IsRelative": true,
|
||||
"Dimension": 50.0
|
||||
}
|
||||
],
|
||||
"SplitHorizList": [],
|
||||
"IdGroup": 2,
|
||||
"GroupId": 2,
|
||||
"AreaList": [
|
||||
{
|
||||
"IdGroup": 3,
|
||||
"GroupId": 3,
|
||||
"AreaList": [
|
||||
{
|
||||
"bIsSashVertical": true,
|
||||
"IsSashVertical": true,
|
||||
"SashList": [
|
||||
{
|
||||
"nSashId": 1,
|
||||
"SashId": 1,
|
||||
"OpeningType": "TILTTURN_LEFT",
|
||||
"bHasHandle": true,
|
||||
"dDimension": 100.0
|
||||
"HasHandle": true,
|
||||
"Dimension": 100.0
|
||||
}
|
||||
],
|
||||
"SashType": "NULL",
|
||||
"JointList": [
|
||||
{
|
||||
"nIndex": 1,
|
||||
"Index": 1,
|
||||
"JointType": "FULL_H"
|
||||
},
|
||||
{
|
||||
"nIndex": 2,
|
||||
"Index": 2,
|
||||
"JointType": "FULL_H"
|
||||
},
|
||||
{
|
||||
"nIndex": 3,
|
||||
"Index": 3,
|
||||
"JointType": "FULL_H"
|
||||
},
|
||||
{
|
||||
"nIndex": 4,
|
||||
"Index": 4,
|
||||
"JointType": "FULL_H"
|
||||
}
|
||||
],
|
||||
"BottomRail": false,
|
||||
"BottomRailQty": 0,
|
||||
"Hardware": "000000",
|
||||
"IdGroup": 4,
|
||||
"HwOptionList": [
|
||||
{
|
||||
"Name": "Entrata",
|
||||
"Value": "15"
|
||||
},
|
||||
{
|
||||
"Name": "LavManigliaPassante",
|
||||
"Value": "false"
|
||||
},
|
||||
{
|
||||
"Name": "PosizioneForoCilindro",
|
||||
"Value": "sotto"
|
||||
},
|
||||
{
|
||||
"Name": "Deviatore",
|
||||
"Value": "false"
|
||||
},
|
||||
{
|
||||
"Name": "ModelloCilindro",
|
||||
"Value": "c999"
|
||||
},
|
||||
{
|
||||
"Name": "LavCilindroPassante",
|
||||
"Value": "false"
|
||||
},
|
||||
{
|
||||
"Name": "HMan",
|
||||
"Value": "400"
|
||||
}
|
||||
],
|
||||
"GroupId": 4,
|
||||
"AreaList": [
|
||||
{
|
||||
"FillType": "GLASS",
|
||||
"IdGroup": 5,
|
||||
"GroupId": 5,
|
||||
"AreaList": [],
|
||||
"AreaType": "FILL"
|
||||
}
|
||||
@@ -111,45 +141,75 @@
|
||||
"AreaType": "SPLITTED"
|
||||
},
|
||||
{
|
||||
"IdGroup": 6,
|
||||
"GroupId": 6,
|
||||
"AreaList": [
|
||||
{
|
||||
"bIsSashVertical": true,
|
||||
"IsSashVertical": true,
|
||||
"SashList": [
|
||||
{
|
||||
"nSashId": 1,
|
||||
"SashId": 1,
|
||||
"OpeningType": "TILTTURN_RIGHT",
|
||||
"bHasHandle": true,
|
||||
"dDimension": 100.0
|
||||
"HasHandle": true,
|
||||
"Dimension": 100.0
|
||||
}
|
||||
],
|
||||
"SashType": "NULL",
|
||||
"JointList": [
|
||||
{
|
||||
"nIndex": 1,
|
||||
"Index": 1,
|
||||
"JointType": "FULL_H"
|
||||
},
|
||||
{
|
||||
"nIndex": 2,
|
||||
"Index": 2,
|
||||
"JointType": "FULL_H"
|
||||
},
|
||||
{
|
||||
"nIndex": 3,
|
||||
"Index": 3,
|
||||
"JointType": "FULL_H"
|
||||
},
|
||||
{
|
||||
"nIndex": 4,
|
||||
"Index": 4,
|
||||
"JointType": "FULL_H"
|
||||
}
|
||||
],
|
||||
"BottomRail": false,
|
||||
"BottomRailQty": 0,
|
||||
"Hardware": "000000",
|
||||
"IdGroup": 7,
|
||||
"HwOptionList": [
|
||||
{
|
||||
"Name": "Entrata",
|
||||
"Value": "15"
|
||||
},
|
||||
{
|
||||
"Name": "LavManigliaPassante",
|
||||
"Value": "false"
|
||||
},
|
||||
{
|
||||
"Name": "PosizioneForoCilindro",
|
||||
"Value": "sotto"
|
||||
},
|
||||
{
|
||||
"Name": "Deviatore",
|
||||
"Value": "false"
|
||||
},
|
||||
{
|
||||
"Name": "ModelloCilindro",
|
||||
"Value": "c999"
|
||||
},
|
||||
{
|
||||
"Name": "LavCilindroPassante",
|
||||
"Value": "false"
|
||||
},
|
||||
{
|
||||
"Name": "HMan",
|
||||
"Value": "400"
|
||||
}
|
||||
],
|
||||
"GroupId": 7,
|
||||
"AreaList": [
|
||||
{
|
||||
"FillType": "GLASS",
|
||||
"IdGroup": 8,
|
||||
"GroupId": 8,
|
||||
"AreaList": [],
|
||||
"AreaType": "FILL"
|
||||
}
|
||||
|
||||
@@ -8,73 +8,73 @@
|
||||
"Shape": "RECTANGLE",
|
||||
"DimensionList": [
|
||||
{
|
||||
"nIndex": 1,
|
||||
"sName": "Width",
|
||||
"dValue": 1500.0
|
||||
"Index": 1,
|
||||
"Name": "Width",
|
||||
"Value": 1500.0
|
||||
},
|
||||
{
|
||||
"nIndex": 2,
|
||||
"sName": "Height",
|
||||
"dValue": 1800.0
|
||||
"Index": 2,
|
||||
"Name": "Height",
|
||||
"Value": 1800.0
|
||||
}
|
||||
],
|
||||
"JointList": [
|
||||
{
|
||||
"nIndex": 1,
|
||||
"Index": 1,
|
||||
"JointType": "FULL_H"
|
||||
},
|
||||
{
|
||||
"nIndex": 2,
|
||||
"Index": 2,
|
||||
"JointType": "FULL_H"
|
||||
},
|
||||
{
|
||||
"nIndex": 3,
|
||||
"Index": 3,
|
||||
"JointType": "FULL_H"
|
||||
},
|
||||
{
|
||||
"nIndex": 4,
|
||||
"Index": 4,
|
||||
"JointType": "FULL_H"
|
||||
}
|
||||
],
|
||||
"BottomRail": false,
|
||||
"BottomRailQty": 0,
|
||||
"IdGroup": 1,
|
||||
"GroupId": 1,
|
||||
"AreaList": [
|
||||
{
|
||||
"SplitShape": "GRID",
|
||||
"SplitStartVert": false,
|
||||
"SplitVertList": [
|
||||
{
|
||||
"bIsRelative": true,
|
||||
"dDimension": 50.0
|
||||
"IsRelative": true,
|
||||
"Dimension": 50.0
|
||||
},
|
||||
{
|
||||
"bIsRelative": true,
|
||||
"dDimension": 50.0
|
||||
"IsRelative": true,
|
||||
"Dimension": 50.0
|
||||
}
|
||||
],
|
||||
"SplitHorizList": [
|
||||
{
|
||||
"bIsRelative": true,
|
||||
"dDimension": 30.0
|
||||
"IsRelative": true,
|
||||
"Dimension": 30.0
|
||||
},
|
||||
{
|
||||
"bIsRelative": true,
|
||||
"dDimension": 40.0
|
||||
"IsRelative": true,
|
||||
"Dimension": 40.0
|
||||
},
|
||||
{
|
||||
"bIsRelative": true,
|
||||
"dDimension": 30.0
|
||||
"IsRelative": true,
|
||||
"Dimension": 30.0
|
||||
}
|
||||
],
|
||||
"IdGroup": 2,
|
||||
"GroupId": 2,
|
||||
"AreaList": [
|
||||
{
|
||||
"IdGroup": 3,
|
||||
"GroupId": 3,
|
||||
"AreaList": [
|
||||
{
|
||||
"FillType": "GLASS",
|
||||
"IdGroup": 4,
|
||||
"GroupId": 4,
|
||||
"AreaList": [],
|
||||
"AreaType": "FILL"
|
||||
}
|
||||
@@ -82,11 +82,11 @@
|
||||
"AreaType": "SPLITTED"
|
||||
},
|
||||
{
|
||||
"IdGroup": 5,
|
||||
"GroupId": 5,
|
||||
"AreaList": [
|
||||
{
|
||||
"FillType": "GLASS",
|
||||
"IdGroup": 6,
|
||||
"GroupId": 6,
|
||||
"AreaList": [],
|
||||
"AreaType": "FILL"
|
||||
}
|
||||
@@ -94,11 +94,11 @@
|
||||
"AreaType": "SPLITTED"
|
||||
},
|
||||
{
|
||||
"IdGroup": 7,
|
||||
"GroupId": 7,
|
||||
"AreaList": [
|
||||
{
|
||||
"FillType": "GLASS",
|
||||
"IdGroup": 8,
|
||||
"GroupId": 8,
|
||||
"AreaList": [],
|
||||
"AreaType": "FILL"
|
||||
}
|
||||
@@ -106,11 +106,11 @@
|
||||
"AreaType": "SPLITTED"
|
||||
},
|
||||
{
|
||||
"IdGroup": 9,
|
||||
"GroupId": 9,
|
||||
"AreaList": [
|
||||
{
|
||||
"FillType": "GLASS",
|
||||
"IdGroup": 10,
|
||||
"GroupId": 10,
|
||||
"AreaList": [],
|
||||
"AreaType": "FILL"
|
||||
}
|
||||
@@ -118,11 +118,11 @@
|
||||
"AreaType": "SPLITTED"
|
||||
},
|
||||
{
|
||||
"IdGroup": 11,
|
||||
"GroupId": 11,
|
||||
"AreaList": [
|
||||
{
|
||||
"FillType": "GLASS",
|
||||
"IdGroup": 12,
|
||||
"GroupId": 12,
|
||||
"AreaList": [],
|
||||
"AreaType": "FILL"
|
||||
}
|
||||
@@ -130,11 +130,11 @@
|
||||
"AreaType": "SPLITTED"
|
||||
},
|
||||
{
|
||||
"IdGroup": 13,
|
||||
"GroupId": 13,
|
||||
"AreaList": [
|
||||
{
|
||||
"FillType": "GLASS",
|
||||
"IdGroup": 14,
|
||||
"GroupId": 14,
|
||||
"AreaList": [],
|
||||
"AreaType": "FILL"
|
||||
}
|
||||
|
||||
@@ -8,60 +8,60 @@
|
||||
"Shape": "RECTANGLE",
|
||||
"DimensionList": [
|
||||
{
|
||||
"nIndex": 1,
|
||||
"sName": "Width",
|
||||
"dValue": 1500.0
|
||||
"Index": 1,
|
||||
"Name": "Width",
|
||||
"Value": 1500.0
|
||||
},
|
||||
{
|
||||
"nIndex": 2,
|
||||
"sName": "Height",
|
||||
"dValue": 1800.0
|
||||
"Index": 2,
|
||||
"Name": "Height",
|
||||
"Value": 1800.0
|
||||
}
|
||||
],
|
||||
"JointList": [
|
||||
{
|
||||
"nIndex": 1,
|
||||
"Index": 1,
|
||||
"JointType": "FULL_H"
|
||||
},
|
||||
{
|
||||
"nIndex": 2,
|
||||
"Index": 2,
|
||||
"JointType": "FULL_H"
|
||||
},
|
||||
{
|
||||
"nIndex": 3,
|
||||
"Index": 3,
|
||||
"JointType": "FULL_H"
|
||||
},
|
||||
{
|
||||
"nIndex": 4,
|
||||
"Index": 4,
|
||||
"JointType": "FULL_H"
|
||||
}
|
||||
],
|
||||
"BottomRail": false,
|
||||
"BottomRailQty": 0,
|
||||
"IdGroup": 1,
|
||||
"GroupId": 1,
|
||||
"AreaList": [
|
||||
{
|
||||
"SplitShape": "VERTICAL",
|
||||
"SplitStartVert": true,
|
||||
"SplitVertList": [
|
||||
{
|
||||
"bIsRelative": true,
|
||||
"dDimension": 50.0
|
||||
"IsRelative": true,
|
||||
"Dimension": 50.0
|
||||
},
|
||||
{
|
||||
"bIsRelative": true,
|
||||
"dDimension": 50.0
|
||||
"IsRelative": true,
|
||||
"Dimension": 50.0
|
||||
}
|
||||
],
|
||||
"SplitHorizList": [],
|
||||
"IdGroup": 2,
|
||||
"GroupId": 2,
|
||||
"AreaList": [
|
||||
{
|
||||
"IdGroup": 3,
|
||||
"GroupId": 3,
|
||||
"AreaList": [
|
||||
{
|
||||
"FillType": "GLASS",
|
||||
"IdGroup": 4,
|
||||
"GroupId": 4,
|
||||
"AreaList": [],
|
||||
"AreaType": "FILL"
|
||||
}
|
||||
@@ -69,11 +69,11 @@
|
||||
"AreaType": "SPLITTED"
|
||||
},
|
||||
{
|
||||
"IdGroup": 5,
|
||||
"GroupId": 5,
|
||||
"AreaList": [
|
||||
{
|
||||
"FillType": "GLASS",
|
||||
"IdGroup": 6,
|
||||
"GroupId": 6,
|
||||
"AreaList": [],
|
||||
"AreaType": "FILL"
|
||||
}
|
||||
|
||||
+38
-38
@@ -4,7 +4,7 @@
|
||||
"familyName": "ArTech",
|
||||
"description": "ArTech_Aria12",
|
||||
"openingType": "TiltTurn",
|
||||
"shape": "Rectangular",
|
||||
"shape": "Rectangle",
|
||||
"sashQty": 3,
|
||||
"sashPosition": 1
|
||||
},
|
||||
@@ -13,7 +13,7 @@
|
||||
"familyName": "ArTechPlana",
|
||||
"description": "ArTechPlana_Aria4",
|
||||
"openingType": "TurnOnly",
|
||||
"shape": "Rectangular",
|
||||
"shape": "Rectangle",
|
||||
"sashQty": 2,
|
||||
"sashPosition": 1
|
||||
},
|
||||
@@ -31,7 +31,7 @@
|
||||
"familyName": "ArTechPlana",
|
||||
"description": "ArTechPlana_Aria4",
|
||||
"openingType": "TurnOnly",
|
||||
"shape": "Rectangular",
|
||||
"shape": "Rectangle",
|
||||
"sashQty": 1,
|
||||
"sashPosition": 1
|
||||
},
|
||||
@@ -58,7 +58,7 @@
|
||||
"familyName": "ArTechPlana",
|
||||
"description": "ArTechPlana_Aria4",
|
||||
"openingType": "TiltTurn",
|
||||
"shape": "Rectangular",
|
||||
"shape": "Rectangle",
|
||||
"sashQty": 3,
|
||||
"sashPosition": 1
|
||||
},
|
||||
@@ -67,7 +67,7 @@
|
||||
"familyName": "ArTech",
|
||||
"description": "ArTech_Aria12",
|
||||
"openingType": "TurnOnly",
|
||||
"shape": "Rectangular",
|
||||
"shape": "Rectangle",
|
||||
"sashQty": 2,
|
||||
"sashPosition": 1
|
||||
},
|
||||
@@ -94,7 +94,7 @@
|
||||
"familyName": "ArTechPlana",
|
||||
"description": "ArTechPlana_Aria4",
|
||||
"openingType": "TiltTurn",
|
||||
"shape": "Rectangular",
|
||||
"shape": "Rectangle",
|
||||
"sashQty": 1,
|
||||
"sashPosition": 1
|
||||
},
|
||||
@@ -112,7 +112,7 @@
|
||||
"familyName": "ArTech",
|
||||
"description": "ArTech_Aria4",
|
||||
"openingType": "TiltTurn",
|
||||
"shape": "Rectangular",
|
||||
"shape": "Rectangle",
|
||||
"sashQty": 2,
|
||||
"sashPosition": 1
|
||||
},
|
||||
@@ -130,7 +130,7 @@
|
||||
"familyName": "ArTech",
|
||||
"description": "ArTech_Aria4_Centrale",
|
||||
"openingType": "TurnOnly",
|
||||
"shape": "Rectangular",
|
||||
"shape": "Rectangle",
|
||||
"sashQty": 3,
|
||||
"sashPosition": 2
|
||||
},
|
||||
@@ -139,7 +139,7 @@
|
||||
"familyName": "ArTech",
|
||||
"description": "ArTech_Aria12",
|
||||
"openingType": "TiltTurn",
|
||||
"shape": "Trapezoidal",
|
||||
"shape": "Trapezoid",
|
||||
"sashQty": 2,
|
||||
"sashPosition": 1
|
||||
},
|
||||
@@ -148,7 +148,7 @@
|
||||
"familyName": "ArTech",
|
||||
"description": "ArTech_Aria4_CerniereScomparsa",
|
||||
"openingType": "TiltTurn",
|
||||
"shape": "Rectangular",
|
||||
"shape": "Rectangle",
|
||||
"sashQty": 3,
|
||||
"sashPosition": 1
|
||||
},
|
||||
@@ -157,7 +157,7 @@
|
||||
"familyName": "ArTech",
|
||||
"description": "ArTech_Aria12",
|
||||
"openingType": "TiltTurn",
|
||||
"shape": "Rectangular",
|
||||
"shape": "Rectangle",
|
||||
"sashQty": 1,
|
||||
"sashPosition": 1
|
||||
},
|
||||
@@ -166,7 +166,7 @@
|
||||
"familyName": "ArTechPlana",
|
||||
"description": "ArTechPlana_Aria12",
|
||||
"openingType": "TurnOnly",
|
||||
"shape": "Rectangular",
|
||||
"shape": "Rectangle",
|
||||
"sashQty": 2,
|
||||
"sashPosition": 1
|
||||
},
|
||||
@@ -175,7 +175,7 @@
|
||||
"familyName": "ArTech",
|
||||
"description": "ArTech_Aria12",
|
||||
"openingType": "TurnOnly",
|
||||
"shape": "Rectangular",
|
||||
"shape": "Rectangle",
|
||||
"sashQty": 4,
|
||||
"sashPosition": 2
|
||||
},
|
||||
@@ -193,7 +193,7 @@
|
||||
"familyName": "ArTechPlana",
|
||||
"description": "ArTechPlana_Aria12_Centrale",
|
||||
"openingType": "TurnOnly",
|
||||
"shape": "Rectangular",
|
||||
"shape": "Rectangle",
|
||||
"sashQty": 3,
|
||||
"sashPosition": 2
|
||||
},
|
||||
@@ -220,7 +220,7 @@
|
||||
"familyName": "ArTechPlana",
|
||||
"description": "ArTechPlana_Aria12",
|
||||
"openingType": "TiltTurn",
|
||||
"shape": "Rectangular",
|
||||
"shape": "Rectangle",
|
||||
"sashQty": 1,
|
||||
"sashPosition": 1
|
||||
},
|
||||
@@ -229,7 +229,7 @@
|
||||
"familyName": "ArTechPlana",
|
||||
"description": "ArTechPlana_Aria4",
|
||||
"openingType": "TurnOnly",
|
||||
"shape": "Rectangular",
|
||||
"shape": "Rectangle",
|
||||
"sashQty": 4,
|
||||
"sashPosition": 2
|
||||
},
|
||||
@@ -238,7 +238,7 @@
|
||||
"familyName": "ArTech",
|
||||
"description": "ArTech_Aria12",
|
||||
"openingType": "TiltTurn",
|
||||
"shape": "Rectangular",
|
||||
"shape": "Rectangle",
|
||||
"sashQty": 2,
|
||||
"sashPosition": 1
|
||||
},
|
||||
@@ -247,7 +247,7 @@
|
||||
"familyName": "ArTechPlana",
|
||||
"description": "ArTechPlana_Aria4_Centrale",
|
||||
"openingType": "TurnOnly",
|
||||
"shape": "Rectangular",
|
||||
"shape": "Rectangle",
|
||||
"sashQty": 3,
|
||||
"sashPosition": 2
|
||||
},
|
||||
@@ -256,7 +256,7 @@
|
||||
"familyName": "ArTech",
|
||||
"description": "ArTech_Aria4",
|
||||
"openingType": "TiltTurn",
|
||||
"shape": "Rectangular",
|
||||
"shape": "Rectangle",
|
||||
"sashQty": 3,
|
||||
"sashPosition": 1
|
||||
},
|
||||
@@ -265,7 +265,7 @@
|
||||
"familyName": "ArTech",
|
||||
"description": "ArTech_Aria12_Centrale",
|
||||
"openingType": "TurnOnly",
|
||||
"shape": "Rectangular",
|
||||
"shape": "Rectangle",
|
||||
"sashQty": 3,
|
||||
"sashPosition": 2
|
||||
},
|
||||
@@ -292,7 +292,7 @@
|
||||
"familyName": "ArTechPlana",
|
||||
"description": "ArTechPlana_Aria12",
|
||||
"openingType": "TiltTurn",
|
||||
"shape": "Rectangular",
|
||||
"shape": "Rectangle",
|
||||
"sashQty": 2,
|
||||
"sashPosition": 1
|
||||
},
|
||||
@@ -301,7 +301,7 @@
|
||||
"familyName": "ArTechPlana",
|
||||
"description": "ArTechPlana_Aria12",
|
||||
"openingType": "TurnOnly",
|
||||
"shape": "Rectangular",
|
||||
"shape": "Rectangle",
|
||||
"sashQty": 1,
|
||||
"sashPosition": 1
|
||||
},
|
||||
@@ -337,7 +337,7 @@
|
||||
"familyName": "ArTech",
|
||||
"description": "ArTech_Aria4",
|
||||
"openingType": "TurnOnly",
|
||||
"shape": "Rectangular",
|
||||
"shape": "Rectangle",
|
||||
"sashQty": 4,
|
||||
"sashPosition": 2
|
||||
},
|
||||
@@ -346,7 +346,7 @@
|
||||
"familyName": "ArTech",
|
||||
"description": "ArTech_Aria4",
|
||||
"openingType": "TiltTurn",
|
||||
"shape": "Rectangular",
|
||||
"shape": "Rectangle",
|
||||
"sashQty": 1,
|
||||
"sashPosition": 1
|
||||
},
|
||||
@@ -373,7 +373,7 @@
|
||||
"familyName": "ArTech",
|
||||
"description": "ArTech_Aria12_Laterale",
|
||||
"openingType": "TurnOnly",
|
||||
"shape": "Rectangular",
|
||||
"shape": "Rectangle",
|
||||
"sashQty": 3,
|
||||
"sashPosition": 1
|
||||
},
|
||||
@@ -382,7 +382,7 @@
|
||||
"familyName": "ArTech",
|
||||
"description": "ArTech_Aria4",
|
||||
"openingType": "TiltTurn",
|
||||
"shape": "Trapezoidal",
|
||||
"shape": "Trapezoid",
|
||||
"sashQty": 2,
|
||||
"sashPosition": 1
|
||||
},
|
||||
@@ -391,7 +391,7 @@
|
||||
"familyName": "ArTechPlana",
|
||||
"description": "ArTechPlana_Aria4_Laterale",
|
||||
"openingType": "TurnOnly",
|
||||
"shape": "Rectangular",
|
||||
"shape": "Rectangle",
|
||||
"sashQty": 3,
|
||||
"sashPosition": 1
|
||||
},
|
||||
@@ -400,7 +400,7 @@
|
||||
"familyName": "ArTech",
|
||||
"description": "ArTech_Aria12_CernieraScomparsa",
|
||||
"openingType": "TiltTurn",
|
||||
"shape": "Rectangular",
|
||||
"shape": "Rectangle",
|
||||
"sashQty": 3,
|
||||
"sashPosition": 1
|
||||
},
|
||||
@@ -436,7 +436,7 @@
|
||||
"familyName": "ArTech",
|
||||
"description": "ArTech_Aria4_Laterale",
|
||||
"openingType": "TurnOnly",
|
||||
"shape": "Rectangular",
|
||||
"shape": "Rectangle",
|
||||
"sashQty": 3,
|
||||
"sashPosition": 1
|
||||
},
|
||||
@@ -454,7 +454,7 @@
|
||||
"familyName": "ArTech",
|
||||
"description": "ArTech_Aria4",
|
||||
"openingType": "TurnOnly",
|
||||
"shape": "Rectangular",
|
||||
"shape": "Rectangle",
|
||||
"sashQty": 2,
|
||||
"sashPosition": 1
|
||||
},
|
||||
@@ -463,7 +463,7 @@
|
||||
"familyName": "ArTech",
|
||||
"description": "ArTech_Aria4",
|
||||
"openingType": "TurnOnly",
|
||||
"shape": "Rectangular",
|
||||
"shape": "Rectangle",
|
||||
"sashQty": 1,
|
||||
"sashPosition": 1
|
||||
},
|
||||
@@ -499,7 +499,7 @@
|
||||
"familyName": "ArTechPlana",
|
||||
"description": "ArTechPlana_Aria12_Laterale",
|
||||
"openingType": "TurnOnly",
|
||||
"shape": "Rectangular",
|
||||
"shape": "Rectangle",
|
||||
"sashQty": 3,
|
||||
"sashPosition": 1
|
||||
},
|
||||
@@ -508,7 +508,7 @@
|
||||
"familyName": "ArTechPlana",
|
||||
"description": "ArTechPlana_Aria12",
|
||||
"openingType": "TurnOnly",
|
||||
"shape": "Rectangular",
|
||||
"shape": "Rectangle",
|
||||
"sashQty": 4,
|
||||
"sashPosition": 2
|
||||
},
|
||||
@@ -535,7 +535,7 @@
|
||||
"familyName": "ArTechPlana",
|
||||
"description": "ArTechPlana_Aria4",
|
||||
"openingType": "TiltTurn",
|
||||
"shape": "Rectangular",
|
||||
"shape": "Rectangle",
|
||||
"sashQty": 2,
|
||||
"sashPosition": 1
|
||||
},
|
||||
@@ -553,7 +553,7 @@
|
||||
"familyName": "ArTechPlana",
|
||||
"description": "ArTechPlana_Aria12",
|
||||
"openingType": "TiltTurn",
|
||||
"shape": "Rectangular",
|
||||
"shape": "Rectangle",
|
||||
"sashQty": 3,
|
||||
"sashPosition": 1
|
||||
},
|
||||
@@ -562,7 +562,7 @@
|
||||
"familyName": "ArTech",
|
||||
"description": "ArTech_Aria12",
|
||||
"openingType": "TurnOnly",
|
||||
"shape": "Rectangular",
|
||||
"shape": "Rectangle",
|
||||
"sashQty": 1,
|
||||
"sashPosition": 1
|
||||
},
|
||||
@@ -580,7 +580,7 @@
|
||||
"familyName": "ArTech",
|
||||
"description": "ArTech_Aria12",
|
||||
"openingType": "TiltTurn",
|
||||
"shape": "Trapezoidal",
|
||||
"shape": "Trapezoid",
|
||||
"sashQty": 1,
|
||||
"sashPosition": 1
|
||||
},
|
||||
@@ -607,7 +607,7 @@
|
||||
"familyName": "ArTech",
|
||||
"description": "ArTech_Aria4",
|
||||
"openingType": "TiltTurn",
|
||||
"shape": "Trapezoidal",
|
||||
"shape": "Trapezoid",
|
||||
"sashQty": 1,
|
||||
"sashPosition": 1
|
||||
}
|
||||
|
||||
@@ -34,8 +34,8 @@
|
||||
<ProjectReference Include="..\WebWindowComplex\WebWindowComplex.csproj" />
|
||||
<ProjectReference Include="..\WebWindowConfigurator\WebWindowConfigurator.csproj" />
|
||||
<ProjectReference Include="..\WebWindowTest\WebWindowTest.csproj" />
|
||||
<PackageReference Include="EgwCoreLib.Lux.Core" Version="1.0.2510.2109" />
|
||||
<PackageReference Include="EgwCoreLib.Lux.Data" Version="1.0.2510.2109" />
|
||||
<PackageReference Include="EgwCoreLib.Lux.Core" Version="1.0.2510.2310" />
|
||||
<PackageReference Include="EgwCoreLib.Lux.Data" Version="1.0.2510.2310" />
|
||||
<PackageReference Include="EgwCoreLib.Razor" Version="1.5.2510.610" />
|
||||
<PackageReference Include="EgwCoreLib.Utils" Version="1.5.2510.610" />
|
||||
<PackageReference Include="Microsoft.AspNetCore.Components.WebAssembly.Server" Version="8.0.21" />
|
||||
|
||||
@@ -10,16 +10,21 @@
|
||||
"Redis": "redis.ufficio:26379, serviceName=devel, DefaultDatabase=6, keepAlive=180, connectTimeout=15000, syncTimeout=15000, asyncTimeout=15000, abortConnect=false, ssl=false, allowAdmin=true"
|
||||
},
|
||||
"ServerConf": {
|
||||
"BomChannel": "Egw:bom",
|
||||
"HwListChannel": "Egw:hw:list",
|
||||
"HwOptChannel": "Egw:hw:opt",
|
||||
"ProfListChannel": "Egw:prof:list",
|
||||
"PubChannel": "EgwEngineInput",
|
||||
"ShapeChannel": "Egw:shape:curr",
|
||||
"SubChannel": "EgwEngineOutput",
|
||||
"SvgChannel": "Egw:svg:img",
|
||||
"BomChannel": "Egw:bom",
|
||||
"UpdateChannel": "Egw:update",
|
||||
"Prog.ApiUrl": "https://office.egalware.com/lux/srv/api",
|
||||
"ImageBaseUrl": "window",
|
||||
"GenericBaseUrl": "generic",
|
||||
"ImageLiveTag": "svg",
|
||||
"ImageFileTag": "svgfile",
|
||||
"ImageCalcTag": "svg-preview",
|
||||
"ImageFileTag": "svgfile",
|
||||
"ImageLiveTag": "svg",
|
||||
"CalcTag": "calc"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -8,7 +8,7 @@
|
||||
@if (CurrSashList.Count == 0 && CurrSplitList.Count == 0)
|
||||
{
|
||||
<div class="input-group mb-2 justify-content-center">
|
||||
<button class="btn btn-outline-secondary btn-sm" @onclick="RaiseAddSash">Aggiungi window</button>
|
||||
<button class="btn btn-outline-secondary btn-sm" @onclick="RaiseAddSash">Aggiungi sash</button>
|
||||
</div>
|
||||
}
|
||||
</div>
|
||||
|
||||
@@ -0,0 +1,33 @@
|
||||
@using static WebWindowComplex.Json.WindowConst
|
||||
|
||||
<div class="row mt-2">
|
||||
<div class="col d-flex justify-content-start align-items-center">
|
||||
<h6 class="fw-bold">Hardware option</h6>
|
||||
</div>
|
||||
<div class="col d-flex justify-content-md-end align-items-center">
|
||||
<button class="btn btn-primary" type="button" @onclick="() => changeCollapsed()">+</button>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row mt-2">
|
||||
@if (!hwOptCollapsed)
|
||||
{
|
||||
@foreach (var currOpt in CurrSash.HwOptionList)
|
||||
{
|
||||
switch (currOpt.Type)
|
||||
{
|
||||
case HwOptionTypes.COMBO:
|
||||
{
|
||||
AGBOptionCombo currOptCombo = (AGBOptionCombo)currOpt;
|
||||
<EditOptionCombo CurrOpt="currOptCombo" EC_Update="RaiseOptCombo"></EditOptionCombo>
|
||||
break;
|
||||
}
|
||||
case HwOptionTypes.TEXT:
|
||||
{
|
||||
AGBOptionText currOptText = (AGBOptionText)currOpt;
|
||||
<EditOptionText CurrOpt="currOptText" EC_Update="RaiseOptText"></EditOptionText>
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
</div>
|
||||
@@ -0,0 +1,67 @@
|
||||
using Microsoft.AspNetCore.Components;
|
||||
using System.Runtime.CompilerServices;
|
||||
using System.Threading.Tasks;
|
||||
using WebWindowComplex.Models;
|
||||
using static WebWindowComplex.Json.WindowConst;
|
||||
|
||||
namespace WebWindowComplex.Compo
|
||||
{
|
||||
public partial class AreaHwOption
|
||||
{
|
||||
/// <summary>
|
||||
/// Sash corrente rispetto alla lista Sash
|
||||
/// </summary>
|
||||
[Parameter]
|
||||
public Sash CurrSash { get; set; } = null!;
|
||||
|
||||
/// <summary>
|
||||
/// Evento per aggiornare gli hardware option di tipo combo
|
||||
/// </summary>
|
||||
[Parameter]
|
||||
public EventCallback<AGBOptionCombo> EC_UpdateHwOptCombo { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Evento per aggiornare gli hardware option di tipo text
|
||||
/// </summary>
|
||||
[Parameter]
|
||||
public EventCallback<AGBOptionText> EC_UpdateHwOptText { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Evento per chiamare la prima volta la lista delle opzioni
|
||||
/// </summary>
|
||||
[Parameter]
|
||||
public EventCallback<int> EC_FirstHwOptionList { get; set; }
|
||||
|
||||
private bool hwOptCollapsed = true;
|
||||
|
||||
private async Task changeCollapsed()
|
||||
{
|
||||
hwOptCollapsed = !hwOptCollapsed;
|
||||
if(CurrSash.HwOptionList.Count == 0)
|
||||
{
|
||||
await EC_FirstHwOptionList.InvokeAsync(CurrSash.GroupId);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Report aggiornamento Option Combo
|
||||
/// </summary>
|
||||
/// <param name="updRec"></param>
|
||||
/// <returns></returns>
|
||||
private async Task RaiseOptCombo(AGBOptionCombo updRec)
|
||||
{
|
||||
await EC_UpdateHwOptCombo.InvokeAsync(updRec);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Report aggiornamento Option Text
|
||||
/// </summary>
|
||||
/// <param name="updRec"></param>
|
||||
/// <returns></returns>
|
||||
private async Task RaiseOptText(AGBOptionText updRec)
|
||||
{
|
||||
await EC_UpdateHwOptText.InvokeAsync(updRec);
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
@@ -3,9 +3,13 @@
|
||||
<h6 class="fw-bold">Sash @(CurrSashGroup.SashList.Count == 1 ? "" : (IndexSash + 1))</h6>
|
||||
</div>
|
||||
<div class="input-group mb-2">
|
||||
<label class="input-group-text" for="OpeningSash@(IndexSash + 1)">Tipology</label>
|
||||
<select class="form-select" id="OpeningSash@(IndexSash + 1)" @bind="@CurrSashDim.SelOpeningTypeIndex">
|
||||
<option value="0">A bandiera sinistra</option>
|
||||
<label class="input-group-text">Tipology</label>
|
||||
<select class="form-select" @bind="@CurrSashDim.SelOpeningTypeIndex">
|
||||
@foreach (var openingType in CurrSashDim.OpeningTypeList)
|
||||
{
|
||||
<option value=@(openingType.Id)>@(openingType.Name)</option>
|
||||
}
|
||||
@* <option value="0">A bandiera sinistra</option>
|
||||
<option value="1">A bandiera destra</option>
|
||||
<option value="2">Ad anta-ribalta sinistra</option>
|
||||
<option value="3">Ad anta-ribalta destra</option>
|
||||
@@ -16,7 +20,7 @@
|
||||
<option value="8">Complanare sinistra</option>
|
||||
<option value="9">Complanare destra</option>
|
||||
<option value="10">Scorrevole sinistra</option>
|
||||
<option value="11">Scorrevole destra</option>
|
||||
<option value="11">Scorrevole destra</option> *@
|
||||
</select>
|
||||
</div>
|
||||
<div class="input-group mb-2">
|
||||
@@ -26,10 +30,10 @@
|
||||
</div>
|
||||
<div class="d-flex justify-content-start fs-5 mb-2">
|
||||
<div class="px-1">
|
||||
<input class="form-check-input ml-auto" type="checkbox" name="Handle" id="HandleSashLabel@(IndexSash + 1)" checked="@CurrSashDim.bHasHandle" @onclick="() => RaiseChangeHandle(CurrSashDim, CurrSashGroup)">
|
||||
<input class="form-check-input ml-auto" type="checkbox" name="Handle" checked="@CurrSashDim.bHasHandle" @onclick="() => RaiseChangeHandle(CurrSashDim, CurrSashGroup)">
|
||||
</div>
|
||||
<div class="px-2">
|
||||
<label class="form-check-label fs-6 text-dark" for="HandleSashLabel@(IndexSash + 1)">Handle</label>
|
||||
<label class="form-check-label fs-6 text-dark">Handle</label>
|
||||
</div>
|
||||
</div>
|
||||
@if (!(CurrAnta.AreaList[0] is Split))
|
||||
@@ -37,7 +41,7 @@
|
||||
<div class="row">
|
||||
<div class="col-sm-6">
|
||||
<div class="input-group mb-2 justify-content-center">
|
||||
<button class="btn btn-outline-secondary btn-sm" @onclick="() => CurrAnta.AddSplit(CurrAnta)">Aggiungi split</button>
|
||||
<button class="btn btn-outline-secondary btn-sm" @onclick="() => CurrAnta.AddSplit()">Aggiungi split</button>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-sm-6">
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
</div>
|
||||
<div class="col d-flex justify-content-center">
|
||||
<div class="input-group mb-2 justify-content-center">
|
||||
<button class="btn btn-outline-secondary btn-sm" @onclick="() => CurrSplitted.AddFirstSash()">Add Sash</button>
|
||||
<button class="btn btn-outline-secondary btn-sm" @onclick="() => RaiseAddSash(CurrSplitted)">Add Sash</button>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col d-flex justify-content-center">
|
||||
|
||||
@@ -32,6 +32,12 @@ namespace WebWindowComplex.Compo
|
||||
[Parameter]
|
||||
public EventCallback<DataAreaSplit> EC_CopySash { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Evento per aggiungere Sash
|
||||
/// </summary>
|
||||
[Parameter]
|
||||
public EventCallback<DataAreaSplitted> EC_AddSash { get; set; }
|
||||
|
||||
#endregion Public Properties
|
||||
|
||||
#region Private Methods
|
||||
@@ -50,6 +56,18 @@ namespace WebWindowComplex.Compo
|
||||
await EC_CopySash.InvokeAsync(Args);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Sollevo evento richiesta copia sash
|
||||
/// </summary>
|
||||
/// <returns></returns>
|
||||
private async Task RaiseAddSash(Splitted item)
|
||||
{
|
||||
var Args = new DataAreaSplitted
|
||||
{
|
||||
splitted = item
|
||||
};
|
||||
await EC_AddSash.InvokeAsync(Args);
|
||||
}
|
||||
#endregion Private Methods
|
||||
|
||||
}
|
||||
@@ -62,4 +80,12 @@ namespace WebWindowComplex.Compo
|
||||
public Splitted splitted { get; set; }
|
||||
public int index { get; set; }
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Classe per raggruppare oggetti che servono per aggiungere Sash
|
||||
/// </summary>
|
||||
public class DataAreaSplitted
|
||||
{
|
||||
public Splitted splitted { get; set; }
|
||||
}
|
||||
}
|
||||
@@ -47,7 +47,12 @@
|
||||
{
|
||||
@if (currSplitted.AreaList.First().Equals(CurrItem))
|
||||
{
|
||||
<AreaSplit CurrSashList="SashList" CurrSplittedList="SplittedList" CurrSplitted="currSplitted" EC_CopySash="CopySash"></AreaSplit>
|
||||
<AreaSplit CurrSashList="SashList"
|
||||
CurrSplittedList="SplittedList"
|
||||
CurrSplitted="currSplitted"
|
||||
EC_AddSash="AddSash"
|
||||
EC_CopySash="CopySash">
|
||||
</AreaSplit>
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -38,6 +38,12 @@ namespace WebWindowComplex.Compo
|
||||
[Parameter]
|
||||
public EventCallback<DataAreaSplit> EC_CopySash { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Evento per aggiungere sash
|
||||
/// </summary>
|
||||
[Parameter]
|
||||
public EventCallback<DataAreaSplitted> EC_AddSash { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Evento per tornare nella pagine Tree
|
||||
/// </summary>
|
||||
@@ -97,6 +103,16 @@ namespace WebWindowComplex.Compo
|
||||
await EC_CopySash.InvokeAsync(Args);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Sollevo evento per aggiungere sash
|
||||
/// </summary>
|
||||
/// <param name="Args"></param>
|
||||
/// <returns></returns>
|
||||
protected async Task AddSash(DataAreaSplitted Args)
|
||||
{
|
||||
await EC_AddSash.InvokeAsync(Args);
|
||||
}
|
||||
|
||||
#endregion Protected Methods
|
||||
|
||||
#region Private Methods
|
||||
|
||||
@@ -15,16 +15,20 @@
|
||||
<div class="row">
|
||||
<div class="col-sm-6">
|
||||
<div class="input-group my-2">
|
||||
<label class="input-group-text" for="FrameShape">Shape</label>
|
||||
<select class="form-select" id="FrameShape" @bind="@FrameWindow.SelShapeIndex">
|
||||
<option value="0">Rectangle</option>
|
||||
<label class="input-group-text">Shape</label>
|
||||
<select class="form-select" @bind="@SelShapeIndex">
|
||||
@foreach (var i in FrameWindow.ShapeList)
|
||||
{
|
||||
<option value="@(i.Id)">@(i.Name)</option>
|
||||
}
|
||||
@* <option value="0">Rectangle</option>
|
||||
<option value="1">Right Chamfer</option>
|
||||
<option value="2">Left Chamfer</option>
|
||||
<option value="3">Double Chamfer</option>
|
||||
<option value="4">Arc</option>
|
||||
<option value="5">Arc Full</option>
|
||||
<option value="6">Double Arc</option>
|
||||
<option value="7">Triangle</option>
|
||||
<option value="7">Triangle</option> *@
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
@@ -45,8 +49,8 @@
|
||||
<h6 class="fw-bold">Threshold</h6>
|
||||
</div>
|
||||
<div class="input-group mb-2">
|
||||
<label class="input-group-text" for="Threshold">Tipology</label>
|
||||
<select class="form-select" id="Threshold">
|
||||
<label class="input-group-text">Tipology</label>
|
||||
<select class="form-select">
|
||||
<option value="0">Soglia</option>
|
||||
<option value="1">Sgocciolatoio</option>
|
||||
</select>
|
||||
@@ -62,17 +66,17 @@
|
||||
</div>
|
||||
<div class="col d-flex">
|
||||
<div class="input-group mb-2 justify-content-center">
|
||||
<button class="btn btn-outline-secondary btn-sm" @onclick="() => ChangeAllJoints(WebWindowComplex.Json.WindowConst.Joints.ANGLED, FrameWindow)">Angled</button>
|
||||
<button class="btn btn-outline-secondary btn-sm" @onclick="() => ChangeAllJoints(WebWindowComplex.Json.WindowConst.Joints.ANGLED, FrameWindow)">Angled</button>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col d-flex">
|
||||
<div class="input-group mb-2 justify-content-center">
|
||||
<button class="btn btn-outline-secondary btn-sm" @onclick="() => ChangeAllJoints(WebWindowComplex.Json.WindowConst.Joints.FULL_H, FrameWindow)">Horizontal</button>
|
||||
<button class="btn btn-outline-secondary btn-sm" @onclick="() => ChangeAllJoints(WebWindowComplex.Json.WindowConst.Joints.FULL_H, FrameWindow)">Horizontal</button>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col d-flex">
|
||||
<div class="input-group mb-2 justify-content-center">
|
||||
<button class="btn btn-outline-secondary btn-sm" @onclick="() => ChangeAllJoints(WebWindowComplex.Json.WindowConst.Joints.FULL_V, FrameWindow)">Vertical</button>
|
||||
<button class="btn btn-outline-secondary btn-sm" @onclick="() => ChangeAllJoints(WebWindowComplex.Json.WindowConst.Joints.FULL_V, FrameWindow)">Vertical</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@@ -84,14 +88,14 @@
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-sm-6">
|
||||
@if (SashList.Count == 0)
|
||||
@if (SashList.Count == 0)
|
||||
{
|
||||
<div class="d-flex justify-content-start align-items-center">
|
||||
<h6 class="fw-bold">Bottom rail</h6>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="input-group mb-2">
|
||||
<span class="input-group-text" id="BottomRailQty">Quantity</span>
|
||||
<span class="input-group-text">Quantity</span>
|
||||
<input type="number" class="form-control" @bind="@FrameWindow.BottomRailQty">
|
||||
</div>
|
||||
</div>
|
||||
@@ -103,6 +107,10 @@
|
||||
|
||||
@if (!(FrameWindow.AreaList[0] is Split) || (SashList.Count == 0 && SplitList.Count == 0))
|
||||
{
|
||||
<AreaFrame CurrFrameWindow="FrameWindow" CurrSashList="SashList" CurrSplitList="SplitList" EC_AddSash="AddSash" EC_AddSplit="AddSplit"></AreaFrame>
|
||||
<AreaFrame CurrFrameWindow="FrameWindow"
|
||||
CurrSashList="SashList"
|
||||
CurrSplitList="SplitList"
|
||||
EC_AddSash="AddSash"
|
||||
EC_AddSplit="AddSplit">
|
||||
</AreaFrame>
|
||||
}
|
||||
|
||||
@@ -32,11 +32,17 @@ namespace WebWindowComplex.Compo
|
||||
public EventCallback<bool> EC_ReqClose { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Evento per cambiare tutti i Joints
|
||||
/// Evento per aggiornare info frame (es cambaire tutti i Joints)
|
||||
/// </summary>
|
||||
[Parameter]
|
||||
public EventCallback<Frame> EC_UpdateFrame { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Evento per richiesta calcolo Shape
|
||||
/// </summary>
|
||||
[Parameter]
|
||||
public EventCallback<Frame> EC_UpdateShape { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Frame corrente
|
||||
/// </summary>
|
||||
@@ -65,6 +71,7 @@ namespace WebWindowComplex.Compo
|
||||
/// <returns></returns>
|
||||
private async Task AddSash()
|
||||
{
|
||||
//await EC_UpdateShape.InvokeAsync(FrameWindow);
|
||||
await EC_AddSash.InvokeAsync(true);
|
||||
}
|
||||
|
||||
@@ -111,10 +118,26 @@ namespace WebWindowComplex.Compo
|
||||
if (updRec != null)
|
||||
{
|
||||
currRec = updRec;
|
||||
await EC_UpdateShape.InvokeAsync(FrameWindow);
|
||||
await EC_UpdateFrame.InvokeAsync(FrameWindow);
|
||||
}
|
||||
}
|
||||
|
||||
protected int SelShapeIndex
|
||||
{
|
||||
get => FrameWindow.SelShapeIndex;
|
||||
set
|
||||
{
|
||||
if (FrameWindow.SelShapeIndex != value)
|
||||
{
|
||||
//foreach(var s in SashList)
|
||||
// s.SelHardwareFromId = "000000";
|
||||
FrameWindow.SelShapeIndex = value;
|
||||
_ = EC_UpdateShape.InvokeAsync(FrameWindow);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Report aggiornamento joint
|
||||
/// </summary>
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
@using static WebWindowComplex.LayoutConst
|
||||
@using static WebWindowComplex.Json.WindowConst
|
||||
|
||||
<div class="card shadow-sm rounded mb-4">
|
||||
<div class="card-header bg-light bg-opacity-25">
|
||||
@@ -20,7 +20,7 @@
|
||||
<div class="row">
|
||||
<div class="col-sm-6">
|
||||
<div class="input-group mb-2">
|
||||
<span class="input-group-text" id="NumberSash@(SashList.IndexOf(CurrItem) + 1)">Qty sash</span>
|
||||
<span class="input-group-text">Qty sash</span>
|
||||
<input type="number" class="form-control" @bind="@CurrItem.nSashQty">
|
||||
</div>
|
||||
</div>
|
||||
@@ -28,8 +28,8 @@
|
||||
<div class="row">
|
||||
<div class="col-sm-6">
|
||||
<div class="input-group mb-2">
|
||||
<label class="input-group-text" for="OrientationSash@(SashList.IndexOf(CurrItem) + 1)">Tipology</label>
|
||||
<select class="form-select" id="OrientationSash@(SashList.IndexOf(CurrItem) + 1)" @bind="@CurrItem.SelOrientationSashTypeIndex">
|
||||
<label class="input-group-text">Tipology</label>
|
||||
<select class="form-select" @bind="@CurrItem.SelOrientationSashTypeIndex">
|
||||
<option value="0">Vertical</option>
|
||||
<option value="1">Horizontal</option>
|
||||
</select>
|
||||
@@ -37,13 +37,63 @@
|
||||
</div>
|
||||
<div class="col-sm-6">
|
||||
<div class="input-group mb-2">
|
||||
<span class="input-group-text" id="BottomRailQty@(SashList.IndexOf(CurrItem) + 1)">Qty bottom rail</span>
|
||||
<span class="input-group-text">Qty bottom rail</span>
|
||||
<input type="number" class="form-control" @bind="@CurrItem.SashBottomRailQty">
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<hr />
|
||||
<div class="row">
|
||||
<div class="col-sm-6">
|
||||
<div class="row justify-content-between align-items-center">
|
||||
<div class="col d-flex justify-content-start align-items-center">
|
||||
<h6 class="fw-bold">Hardware</h6>
|
||||
</div>
|
||||
</div>
|
||||
<div class="input-group mb-2">
|
||||
<label class="input-group-text">Family</label>
|
||||
<select class="form-select" @bind="@CurrItem.SelFamilyHardware">
|
||||
@if (Sash.s_FamilyHardwareList == null || Sash.s_FamilyHardwareList.Count == 0)
|
||||
{
|
||||
<option value="000000">CUSTOM</option>
|
||||
}
|
||||
else
|
||||
{
|
||||
@foreach (var familyHw in Sash.s_FamilyHardwareList)
|
||||
{
|
||||
<option value="@familyHw">@familyHw</option>
|
||||
}
|
||||
}
|
||||
</select>
|
||||
</div>
|
||||
@if (string.IsNullOrEmpty(CurrItem.SashShape))
|
||||
{
|
||||
<div class="input-group mb-2">
|
||||
<label class="input-group-text">Type</label>
|
||||
<select class="form-select">
|
||||
<option value="000000">Custom HW</option>
|
||||
</select>
|
||||
</div>
|
||||
}
|
||||
else
|
||||
{
|
||||
<div class="input-group mb-2">
|
||||
<label class="input-group-text">Type</label>
|
||||
<select class="form-select" @bind="SelHwType">
|
||||
<option value="000000">Custom HW</option>
|
||||
@foreach (var hlItem in CurrItem.HardwareList)
|
||||
{
|
||||
<option value="@hlItem.Id">@hlItem.Description</option>
|
||||
}
|
||||
</select>
|
||||
</div>
|
||||
<AreaHwOption CurrSash="CurrItem"
|
||||
EC_UpdateHwOptCombo="UpdateOptCombo"
|
||||
EC_UpdateHwOptText="UpdateOptText"
|
||||
EC_FirstHwOptionList="FirstHwOptionList">
|
||||
</AreaHwOption>
|
||||
}
|
||||
</div>
|
||||
<div class="col-sm-6">
|
||||
<div class="row justify-content-between align-items-center">
|
||||
<div class="col d-flex justify-content-start align-items-center">
|
||||
@@ -70,45 +120,6 @@
|
||||
<EditJoint CurrRec="joint" EC_Update="UpdateJoint"></EditJoint>
|
||||
}
|
||||
</div>
|
||||
<div class="col-sm-6">
|
||||
<div class="row">
|
||||
<div class="col d-flex justify-content-start align-items-center">
|
||||
<h6 class="fw-bold">Hardware</h6>
|
||||
</div>
|
||||
</div>
|
||||
<div class="input-group mb-2">
|
||||
<label class="input-group-text" for="FamilyHardware">Family</label>
|
||||
<select class="form-select" id="FamilyHardware" @bind="@CurrItem.SelFamilyHardware">
|
||||
@if (Sash.s_FamilyHardwareList == null || Sash.s_FamilyHardwareList.Count == 0)
|
||||
{
|
||||
<option value="000000">ERROR - Missing family HW List</option>
|
||||
}
|
||||
else
|
||||
{
|
||||
@foreach (var familyHw in Sash.s_FamilyHardwareList)
|
||||
{
|
||||
<option value="@familyHw">@familyHw</option>
|
||||
}
|
||||
}
|
||||
</select>
|
||||
</div>
|
||||
<div class="input-group mb-2">
|
||||
<label class="input-group-text" for="Hardware">Type</label>
|
||||
<select class="form-select" id="Hardware" @bind="SelHwType">
|
||||
@if (CurrItem.HardwareList == null || CurrItem.HardwareList.Count == 0)
|
||||
{
|
||||
<option value="000000">ERROR - Missing HW List</option>
|
||||
}
|
||||
else
|
||||
{
|
||||
@foreach (var hlItem in CurrItem.HardwareList)
|
||||
{
|
||||
<option value="@hlItem.Id">@hlItem.Description</option>
|
||||
}
|
||||
}
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@@ -118,7 +129,12 @@
|
||||
<div class="row">
|
||||
@for (int i = 0; i < CurrItem.SashList.Count; i++)
|
||||
{
|
||||
<AreaSash CurrSashDim="CurrItem.SashList[i]" CurrSashGroup="CurrItem" IndexSash="i" EC_ChangeHandle="ChangeHandle" EC_CopyContentSash="CopyContentSash"></AreaSash>
|
||||
<AreaSash CurrSashDim="CurrItem.SashList[i]"
|
||||
CurrSashGroup="CurrItem"
|
||||
IndexSash="i"
|
||||
EC_ChangeHandle="ChangeHandle"
|
||||
EC_CopyContentSash="CopyContentSash">
|
||||
</AreaSash>
|
||||
}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
using Microsoft.AspNetCore.Components;
|
||||
using WebWindowComplex.Models;
|
||||
using static WebWindowComplex.Json.WindowConst;
|
||||
|
||||
namespace WebWindowComplex.Compo
|
||||
{
|
||||
@@ -61,18 +62,26 @@ namespace WebWindowComplex.Compo
|
||||
[Parameter]
|
||||
public EventCallback<Sash> EC_UpdateSashHardware { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Evento per richiedere la prima volta le opzioni hardware
|
||||
/// </summary>
|
||||
[Parameter]
|
||||
public EventCallback<int> EC_CallFirstHwOpt { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Lista di sash
|
||||
/// </summary>
|
||||
[Parameter]
|
||||
public List<Sash> SashList { get; set; } = null!;
|
||||
|
||||
public AGBOption CurrAGBOpt;
|
||||
|
||||
#endregion Public Properties
|
||||
|
||||
#region Protected Properties
|
||||
|
||||
/// <summary>
|
||||
///
|
||||
/// Selezione hardware
|
||||
/// </summary>
|
||||
protected string SelHwType
|
||||
{
|
||||
@@ -162,6 +171,50 @@ namespace WebWindowComplex.Compo
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Report aggiornamento Option Combo
|
||||
/// </summary>
|
||||
/// <param name="updRec"></param>
|
||||
/// <returns></returns>
|
||||
private async Task UpdateOptCombo(AGBOptionCombo updRec)
|
||||
{
|
||||
// cerco il record
|
||||
var currRec = CurrItem.HwOptionList.FirstOrDefault(x => x.sName == updRec.sName && x.sDescription == updRec.sDescription);
|
||||
// lo aggiorno
|
||||
if (updRec != null)
|
||||
{
|
||||
currRec = updRec;
|
||||
await EC_UpdateSashHardware.InvokeAsync(CurrItem);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Report aggiornamento Option Text
|
||||
/// </summary>
|
||||
/// <param name="updRec"></param>
|
||||
/// <returns></returns>
|
||||
private async Task UpdateOptText(AGBOptionText updRec)
|
||||
{
|
||||
// cerco il record
|
||||
var currRec = CurrItem.HwOptionList.FirstOrDefault(x => x.sName == updRec.sName && x.sDescription == updRec.sDescription);
|
||||
// lo aggiorno
|
||||
if (updRec != null)
|
||||
{
|
||||
currRec = updRec;
|
||||
await EC_UpdateSashHardware.InvokeAsync(CurrItem);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Prima chiamata hw option list
|
||||
/// </summary>
|
||||
/// <param name="updRec"></param>
|
||||
/// <returns></returns>
|
||||
private async Task FirstHwOptionList(int groupId)
|
||||
{
|
||||
await EC_CallFirstHwOpt.InvokeAsync(groupId);
|
||||
}
|
||||
|
||||
#endregion Private Methods
|
||||
}
|
||||
}
|
||||
@@ -32,12 +32,16 @@
|
||||
<div class="row">
|
||||
<div class="col-sm-6">
|
||||
<div class="input-group mb-2">
|
||||
<label class="input-group-text" for="ShapeSplit@(SplitList.IndexOf(CurrItem) + 1)">Shape</label>
|
||||
<select class="form-select" id="ShapeSplit@(SplitList.IndexOf(CurrItem) + 1)" @bind="@CurrItem.SelSplitShapeIndex">
|
||||
<option value="0">Vertical</option>
|
||||
<label class="input-group-text">Shape</label>
|
||||
<select class="form-select" @bind="@CurrItem.SelSplitShapeIndex">
|
||||
@foreach (var shapeType in CurrItem.SplitShapeList)
|
||||
{
|
||||
<option value=@(shapeType.Id)>@(shapeType.Name)</option>
|
||||
}
|
||||
@* <option value="0">Vertical</option>
|
||||
<option value="1">Horizontal</option>
|
||||
<option value="2">Grid</option>
|
||||
<option value="3">Custom</option>
|
||||
<option value="3">Custom</option> *@
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
@@ -47,7 +51,7 @@
|
||||
{
|
||||
<div class="col-sm-6">
|
||||
<div class="input-group mb-2">
|
||||
<span class="input-group-text" id="SplitQty@(SplitList.IndexOf(CurrItem) + 1)">QtyVert</span>
|
||||
<span class="input-group-text">QtyVert</span>
|
||||
<input type="number" class="form-control" @bind="@CurrItem.nSplitQtyVert">
|
||||
</div>
|
||||
</div>
|
||||
@@ -56,7 +60,7 @@
|
||||
{
|
||||
<div class="col-sm-6">
|
||||
<div class="input-group mb-2">
|
||||
<span class="input-group-text" id="SplitQty@(SplitList.IndexOf(CurrItem) + 1)">QtyHoriz</span>
|
||||
<span class="input-group-text">QtyHoriz</span>
|
||||
<input type="number" class="form-control" @bind="@CurrItem.nSplitQtyHoriz">
|
||||
</div>
|
||||
</div>
|
||||
@@ -69,7 +73,7 @@
|
||||
@foreach (var dim in CurrItem.SplitVertList)
|
||||
{
|
||||
<div class="input-group mb-2">
|
||||
<span class="input-group-text" id="SplitDimension@(CurrItem.SplitVertList.IndexOf(dim) + 1)">Width</span>
|
||||
<span class="input-group-text">Width</span>
|
||||
<input type="number" class="form-control" @bind="@dim.dDimension">
|
||||
<span class="input-group-text">%</span>
|
||||
</div>
|
||||
@@ -79,7 +83,7 @@
|
||||
@foreach (var dim in CurrItem.SplitHorizList)
|
||||
{
|
||||
<div class="input-group mb-2">
|
||||
<span class="input-group-text" id="SplitDimension@(CurrItem.SplitHorizList.IndexOf(dim) + 1)">Height</span>
|
||||
<span class="input-group-text">Height</span>
|
||||
<input type="number" class="form-control" @bind="@dim.dDimension">
|
||||
<span class="input-group-text">%</span>
|
||||
</div>
|
||||
@@ -92,7 +96,7 @@
|
||||
{
|
||||
<div class="col-sm-6">
|
||||
<div class="input-group mb-2">
|
||||
<span class="input-group-text" id="SplitDimension@(CurrItem.SplitHorizList.IndexOf(dim) + 1)">Height</span>
|
||||
<span class="input-group-text">Height</span>
|
||||
<input type="number" class="form-control" @bind="@dim.dDimension">
|
||||
<span class="input-group-text">%</span>
|
||||
</div>
|
||||
@@ -105,7 +109,7 @@
|
||||
{
|
||||
<div class="col-sm-6">
|
||||
<div class="input-group mb-2">
|
||||
<span class="input-group-text" id="SplitDimension@(CurrItem.SplitVertList.IndexOf(dim) + 1)">Width</span>
|
||||
<span class="input-group-text">Width</span>
|
||||
<input type="number" class="form-control" @bind="@dim.dDimension">
|
||||
<span class="input-group-text">%</span>
|
||||
</div>
|
||||
@@ -119,10 +123,10 @@
|
||||
<div class="col-sm-6">
|
||||
<div class="d-flex justify-content-start fs-5 mb-2">
|
||||
<div class="px-1">
|
||||
<input class="form-check-input ml-auto" type="checkbox" name="SplitStartVert" id="SplitStartVert@(SplitList.IndexOf(CurrItem) + 1)" checked="@CurrItem.bSplitStartVert" @oninput="(ChangeEventArgs e) => ChangeStartVert(e, CurrItem)">
|
||||
<input class="form-check-input ml-auto" type="checkbox" name="SplitStartVert" checked="@CurrItem.bSplitStartVert" @oninput="(ChangeEventArgs e) => ChangeStartVert(e, CurrItem)">
|
||||
</div>
|
||||
<div class="px-2">
|
||||
<label class="form-check-label fs-6 text-dark" for="SplitStartVert@(SplitList.IndexOf(CurrItem) + 1)">StartVert</label>
|
||||
<label class="form-check-label fs-6 text-dark">StartVert</label>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -9,29 +9,34 @@
|
||||
{
|
||||
CompileStep cs = CompileStep.Frame;
|
||||
int ind = -1;
|
||||
string s = "Vai a step ";
|
||||
@if (j + 1 == ItemTableList[i].Col)
|
||||
{
|
||||
@if (ItemTableList[i].Type is Json.WindowConst.AreaTypes.FRAME)
|
||||
{
|
||||
cs = CompileStep.Frame;
|
||||
s = s + cs.ToString();
|
||||
}
|
||||
else if (ItemTableList[i].Type is Json.WindowConst.AreaTypes.SPLIT)
|
||||
{
|
||||
cs = CompileStep.Split;
|
||||
ind = ItemTableList[i].IndexItem;
|
||||
s = s + cs.ToString() + ((ind + 1) > 0 ? (ind + 1): "");
|
||||
}
|
||||
else if (ItemTableList[i].Type is Json.WindowConst.AreaTypes.SASH)
|
||||
{
|
||||
cs = CompileStep.Sash;
|
||||
ind = ItemTableList[i].IndexItem;
|
||||
s = s + cs.ToString() + ((ind + 1) > 0 ? (ind + 1) : "");
|
||||
}
|
||||
else if (ItemTableList[i].Type is Json.WindowConst.AreaTypes.FILL)
|
||||
{
|
||||
cs = CompileStep.Fill;
|
||||
ind = ItemTableList[i].IndexItem;
|
||||
s = s + cs.ToString() + ((ind + 1) > 0 ? (ind + 1) : "");
|
||||
}
|
||||
<td>
|
||||
<button class="btn btn-sm btn-secondary" style="font-size: 1rem;" @onclick="() => RaiseNextStep(cs, ind)" title="Vai a step @(cs)">@ItemTableList[i].Desc</button>
|
||||
<button class="btn btn-sm btn-secondary" style="font-size: 1rem;" @onclick="() => RaiseNextStep(cs, ind)" title="@(s)">@ItemTableList[i].Desc</button>
|
||||
</td>
|
||||
}
|
||||
else
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
|
||||
<div class="input-group mb-2">
|
||||
<span class="input-group-text" id="NameDimFrame@(CurrRec.nIndex)">@CurrRec.sName</span>
|
||||
<span class="input-group-text">@CurrRec.sName</span>
|
||||
<input type="number" class="form-control" @bind="@CurrVal">
|
||||
<span class="input-group-text">mm</span>
|
||||
</div>
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
@using static WebWindowComplex.LayoutConst
|
||||
<div class="input-group mb-2">
|
||||
<label class="input-group-text" for="IndexJoint@(CurrRec.nIndex)">@((PositionJoints)(CurrRec.nIndex - 1))</label>
|
||||
<select class="form-select" id="IndexJoint@(CurrRec.nIndex)" @bind="@CurrVal">
|
||||
<label class="input-group-text">@((PositionJoints)(CurrRec.nIndex - 1))</label>
|
||||
<select class="form-select" @bind="@CurrVal">
|
||||
<option value="0">Angled</option>
|
||||
<option value="1">Full H</option>
|
||||
<option value="2">Full V</option>
|
||||
|
||||
@@ -0,0 +1,9 @@
|
||||
<div class="input-group mb-2">
|
||||
<label class="input-group-text">@(CurrOpt.sName)</label>
|
||||
<select class="form-select" @bind="CurrValue">
|
||||
@foreach (var currValueCombo in CurrOpt.ValueList)
|
||||
{
|
||||
<option value="@currValueCombo.sValue">@currValueCombo.sDescription</option>
|
||||
}
|
||||
</select>
|
||||
</div>
|
||||
@@ -0,0 +1,36 @@
|
||||
using Microsoft.AspNetCore.Components;
|
||||
using WebWindowComplex.Models;
|
||||
|
||||
namespace WebWindowComplex.Compo
|
||||
{
|
||||
public partial class EditOptionCombo
|
||||
{
|
||||
#region Public Properties
|
||||
|
||||
[Parameter]
|
||||
public AGBOptionCombo CurrOpt { get; set; } = null!;
|
||||
|
||||
[Parameter]
|
||||
public EventCallback<AGBOptionCombo> EC_Update { get; set; }
|
||||
|
||||
#endregion Public Properties
|
||||
|
||||
#region Private Properties
|
||||
|
||||
private string CurrValue
|
||||
{
|
||||
get => CurrOpt.sValue.sValue;
|
||||
set
|
||||
{
|
||||
if (CurrOpt.sValue.sValue != value)
|
||||
{
|
||||
CurrOpt.sValue = CurrOpt.ValueList.FirstOrDefault(x => x.sValue == value);
|
||||
_ = EC_Update.InvokeAsync(CurrOpt);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
#endregion Private Properties
|
||||
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,9 @@
|
||||
<div class="input-group mb-2">
|
||||
<label class="input-group-text">@(CurrOpt.sName)</label>
|
||||
<select class="form-select" @bind="CurrValue">
|
||||
@foreach (var currValueCombo in CurrOpt.ValueList)
|
||||
{
|
||||
<option value="@currValueCombo">@currValueCombo</option>
|
||||
}
|
||||
</select>
|
||||
</div>
|
||||
@@ -0,0 +1,36 @@
|
||||
using Microsoft.AspNetCore.Components;
|
||||
using WebWindowComplex.Models;
|
||||
|
||||
namespace WebWindowComplex.Compo
|
||||
{
|
||||
public partial class EditOptionText
|
||||
{
|
||||
#region Public Properties
|
||||
|
||||
[Parameter]
|
||||
public AGBOptionText CurrOpt { get; set; } = null!;
|
||||
|
||||
[Parameter]
|
||||
public EventCallback<AGBOptionText> EC_Update { get; set; }
|
||||
|
||||
#endregion Public Properties
|
||||
|
||||
#region Private Properties
|
||||
|
||||
private string CurrValue
|
||||
{
|
||||
get => CurrOpt.sValue;
|
||||
set
|
||||
{
|
||||
if (CurrOpt.sValue != value)
|
||||
{
|
||||
CurrOpt.sValue = CurrOpt.ValueList.FirstOrDefault(x => x == value);
|
||||
_ = EC_Update.InvokeAsync(CurrOpt);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
#endregion Private Properties
|
||||
|
||||
}
|
||||
}
|
||||
@@ -14,8 +14,8 @@
|
||||
<div class="row">
|
||||
<div class="col-sm-6">
|
||||
<div class="input-group mb-2 justify-content-center">
|
||||
<label class="input-group-text" for="MaterialWindow">Material</label>
|
||||
<select class="form-select @(cssValid("Material"))" id="MaterialWindow" @bind="CurrMaterial">
|
||||
<label class="input-group-text">Material</label>
|
||||
<select class="form-select @(cssValid("Material"))" @bind="CurrMaterial">
|
||||
@foreach (var item in ListPayload.Material)
|
||||
{
|
||||
<option value="@item">@item</option>
|
||||
@@ -23,8 +23,8 @@
|
||||
</select>
|
||||
</div>
|
||||
<div class="input-group mb-2">
|
||||
<label class="input-group-text" for="ProfileWindow">Profile</label>
|
||||
<select class="form-select @(cssValid("Profile"))" id="ProfileWindow" @bind="@CurrProfile">
|
||||
<label class="input-group-text">Profile</label>
|
||||
<select class="form-select @(cssValid("Profile"))" @bind="@CurrProfile">
|
||||
@foreach (string profile in ListPayload.Profile)
|
||||
{
|
||||
<option value="@profile">@profile</option>
|
||||
@@ -41,8 +41,8 @@
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="input-group mb-2">
|
||||
<label class="input-group-text" for="GlassWindow">Glass</label>
|
||||
<select class="form-select @(cssValid("Glass"))" id="GlassWindow" @bind="@CurrGlass">
|
||||
<label class="input-group-text">Glass</label>
|
||||
<select class="form-select @(cssValid("Glass"))" @bind="@CurrGlass">
|
||||
@foreach (string glass in ListPayload.Glass)
|
||||
{
|
||||
<option value="@glass">@glass</option>
|
||||
@@ -50,8 +50,8 @@
|
||||
</select>
|
||||
</div>
|
||||
<div class="input-group mb-2">
|
||||
<label class="input-group-text" for="PanelWindow">Pannello</label>
|
||||
<select class="form-select" id="PanelWindow">
|
||||
<label class="input-group-text">Pannello</label>
|
||||
<select class="form-select">
|
||||
<option value="0">Liscio</option>
|
||||
<option value="1">Con venatura</option>
|
||||
<option value="2">Custom</option>
|
||||
@@ -65,8 +65,8 @@
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="input-group mb-2">
|
||||
<label class="input-group-text" for="ColorWindow">Window</label>
|
||||
<select class="form-select @(cssValid("ColorMaterial"))" id="ColorWindow" @bind="@CurrColor">
|
||||
<label class="input-group-text">Window</label>
|
||||
<select class="form-select @(cssValid("ColorMaterial"))" @bind="@CurrColor">
|
||||
@foreach (string colorMaterial in ListPayload.ColorMaterial)
|
||||
{
|
||||
<option value="@colorMaterial">@colorMaterial</option>
|
||||
@@ -74,8 +74,8 @@
|
||||
</select>
|
||||
</div>
|
||||
<div class="input-group mb-2">
|
||||
<label class="input-group-text" for="Trunking">Trunking</label>
|
||||
<select class="form-select" id="Trunking">
|
||||
<label class="input-group-text">Trunking</label>
|
||||
<select class="form-select" >
|
||||
<option value="0">Black</option>
|
||||
<option value="1">Silver</option>
|
||||
<option value="2">White</option>
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
using System;
|
||||
using EgwCoreLib.Utils;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
@@ -24,14 +25,14 @@ namespace WebWindowComplex.DTO
|
||||
public string SvgPreview { get; set; } = string.Empty;
|
||||
|
||||
/// <summary>
|
||||
/// Shape da verifica JWD
|
||||
/// Dizionario Shape da verifica JWD
|
||||
/// </summary>
|
||||
public string Shape { get; set; } = string.Empty;
|
||||
public Dictionary<int,string> DictShape { get; set; } = new Dictionary<int, string>();
|
||||
|
||||
/// <summary>
|
||||
/// XML opzioni HW da verifica JWD
|
||||
/// Dizionario XML opzioni HW da verifica JWD x GroupId
|
||||
/// </summary>
|
||||
public string OptionsXml { get; set; } = string.Empty;
|
||||
public Dictionary<int, string> DictOptionsXml { get; set; } = new Dictionary<int, string>();
|
||||
|
||||
#endregion Public Properties
|
||||
|
||||
@@ -51,9 +52,9 @@ namespace WebWindowComplex.DTO
|
||||
return false;
|
||||
if (SvgPreview != item.SvgPreview)
|
||||
return false;
|
||||
if (Shape != item.Shape)
|
||||
if (!DictUtils.DictAreEqual(DictOptionsXml, item.DictOptionsXml))
|
||||
return false;
|
||||
if (OptionsXml != item.OptionsXml)
|
||||
if (!DictUtils.DictAreEqual(DictShape, item.DictShape))
|
||||
return false;
|
||||
|
||||
return true;
|
||||
|
||||
@@ -0,0 +1,42 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace WebWindowComplex
|
||||
{
|
||||
public class DictUtils
|
||||
{
|
||||
/// <summary>
|
||||
/// Comparatore equality obj dizionario
|
||||
/// </summary>
|
||||
/// <typeparam name="TKey"></typeparam>
|
||||
/// <typeparam name="TValue"></typeparam>
|
||||
/// <param name="dict1"></param>
|
||||
/// <param name="dict2"></param>
|
||||
/// <returns></returns>
|
||||
public static bool DictAreEqual<TKey, TValue>(Dictionary<TKey, TValue> dict1, Dictionary<TKey, TValue> dict2)
|
||||
{
|
||||
// Handle null cases
|
||||
if (dict1 == null || dict2 == null)
|
||||
return dict1 == dict2;
|
||||
|
||||
// Quick size check
|
||||
if (dict1.Count != dict2.Count)
|
||||
return false;
|
||||
|
||||
// Compare each key-value pair
|
||||
foreach (var kvp in dict1)
|
||||
{
|
||||
if (!dict2.TryGetValue(kvp.Key, out TValue value))
|
||||
return false; // Key missing in dict2
|
||||
|
||||
if (!EqualityComparer<TValue>.Default.Equals(kvp.Value, value))
|
||||
return false; // Value mismatch
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -106,17 +106,17 @@ namespace WebWindowComplex.Json
|
||||
|
||||
public class JsonArea
|
||||
{
|
||||
private int m_nIdGroup;
|
||||
private int m_nGroupId;
|
||||
[JsonProperty]
|
||||
public int IdGroup
|
||||
public int GroupId
|
||||
{
|
||||
get
|
||||
{
|
||||
return m_nIdGroup;
|
||||
return m_nGroupId;
|
||||
}
|
||||
set
|
||||
{
|
||||
m_nIdGroup = value;
|
||||
m_nGroupId = value;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -233,25 +233,25 @@ namespace WebWindowComplex.Json
|
||||
{
|
||||
}
|
||||
|
||||
public JsonFrame(Shapes Shape, bool BottomRail, int BottomRailQty, int nIdGroup) : base(AreaTypes.FRAME)
|
||||
public JsonFrame(Shapes Shape, bool BottomRail, int BottomRailQty, int GroupId) : base(AreaTypes.FRAME)
|
||||
{
|
||||
m_Shape = Shape;
|
||||
m_bBottomRail = BottomRail;
|
||||
m_nBottomRailQty = BottomRailQty;
|
||||
IdGroup = nIdGroup;
|
||||
base.GroupId = GroupId;
|
||||
}
|
||||
|
||||
internal override Area Deserialize(Area ParentArea, Window ParentWindow)
|
||||
{
|
||||
Frame newFrame = new Frame(null, ParentWindow);
|
||||
newFrame.SetIdGroup(IdGroup);
|
||||
newFrame.SetGroupId(GroupId);
|
||||
newFrame.SetAreaType(AreaTypes.FRAME);
|
||||
newFrame.SetSelShape(m_Shape);
|
||||
newFrame.SetBottomRail(m_bBottomRail);
|
||||
newFrame.SetBottomRailQty(m_nBottomRailQty);
|
||||
//Frame.AppliedDone();
|
||||
for (var DimensionIndex = 0; DimensionIndex <= m_DimensionList.Count - 1; DimensionIndex++)
|
||||
newFrame.DimensionList[DimensionIndex].dValue = m_DimensionList[DimensionIndex].dValue;
|
||||
newFrame.DimensionList[DimensionIndex].dValue = m_DimensionList[DimensionIndex].Value;
|
||||
for (var JointIndex = 0; JointIndex <= m_JointList.Count - 1; JointIndex++)
|
||||
newFrame.JointList[JointIndex].SetSelJointType(m_JointList[JointIndex].JointType);
|
||||
foreach (var Area in AreaList)
|
||||
@@ -270,7 +270,7 @@ namespace WebWindowComplex.Json
|
||||
{
|
||||
private bool m_bIsSashVertical;
|
||||
[JsonProperty]
|
||||
public bool bIsSashVertical
|
||||
public bool IsSashVertical
|
||||
{
|
||||
get
|
||||
{
|
||||
@@ -367,24 +367,38 @@ namespace WebWindowComplex.Json
|
||||
}
|
||||
}
|
||||
|
||||
private List<JsonHwOption> m_HwOptionList = new List<JsonHwOption>();
|
||||
[JsonProperty]
|
||||
public List<JsonHwOption> HwOptionList
|
||||
{
|
||||
get
|
||||
{
|
||||
return m_HwOptionList;
|
||||
}
|
||||
set
|
||||
{
|
||||
m_HwOptionList = value;
|
||||
}
|
||||
}
|
||||
|
||||
public JsonSash() : base(AreaTypes.SASH)
|
||||
{
|
||||
}
|
||||
|
||||
public JsonSash(bool bIsSashVertical, SashTypes SashType, bool SashBottomRail, int SashBottomRailQty, string Hardware, int nIdGroup) : base(AreaTypes.SASH)
|
||||
public JsonSash(bool IsSashVertical, SashTypes SashType, bool SashBottomRail, int SashBottomRailQty, string Hardware, int GroupId) : base(AreaTypes.SASH)
|
||||
{
|
||||
m_bIsSashVertical = bIsSashVertical;
|
||||
m_bIsSashVertical = IsSashVertical;
|
||||
m_SashType = SashType;
|
||||
m_bBottomRail = SashBottomRail;
|
||||
m_nBottomRailQty = SashBottomRailQty;
|
||||
m_Hardware = Hardware;
|
||||
IdGroup = nIdGroup;
|
||||
base.GroupId = GroupId;
|
||||
}
|
||||
|
||||
internal override Area Deserialize(Area ParentArea, Window ParentWindow)
|
||||
{
|
||||
Sash newSash = new Sash(ParentArea, ParentWindow);
|
||||
newSash.SetIdGroup(IdGroup);
|
||||
newSash.SetGroupId(GroupId);
|
||||
newSash.SetAreaType(AreaTypes.SASH);
|
||||
newSash.SetSashQty(m_SashList.Count);
|
||||
newSash.SetIsSashVertical(m_bIsSashVertical);
|
||||
@@ -393,14 +407,18 @@ namespace WebWindowComplex.Json
|
||||
for (var SashIndex = 0; SashIndex <= m_SashList.Count - 1; SashIndex++)
|
||||
{
|
||||
newSash.SashList[SashIndex].SetOpeningType(m_SashList[SashIndex].OpeningType);
|
||||
newSash.SashList[SashIndex].SetHasHandle(m_SashList[SashIndex].bHasHandle);
|
||||
newSash.SashList[SashIndex].SetDimension(m_SashList[SashIndex].dDimension);
|
||||
newSash.SashList[SashIndex].SetHasHandle(m_SashList[SashIndex].HasHandle);
|
||||
newSash.SashList[SashIndex].SetDimension(m_SashList[SashIndex].Dimension);
|
||||
}
|
||||
foreach (var Joint in m_JointList)
|
||||
newSash.JointList.Add(Joint.Deserialize((Area)ParentArea));
|
||||
newSash.SetSelFamilyHardwareFromIndex(Hardware);
|
||||
newSash.RefreshHardwareList();
|
||||
newSash.ReqRefreshShape();
|
||||
newSash.SetSelHardwareFromId(Hardware);
|
||||
foreach (var HwOption in m_HwOptionList)
|
||||
newSash.SelHwOptionList.Add(HwOption.Name, HwOption.Value);
|
||||
//foreach (var HwOption in m_HwOptionList)
|
||||
// newSash.HwOptionList.Add(HwOption.Deserialize());
|
||||
foreach (var Area in AreaList)
|
||||
{
|
||||
var AreaDeserealized = Area.Deserialize(newSash, ParentWindow);
|
||||
@@ -476,16 +494,16 @@ namespace WebWindowComplex.Json
|
||||
{
|
||||
}
|
||||
|
||||
public JsonSplit(SplitShapes SplitShape, int nIdGroup) : base(AreaTypes.SPLIT)
|
||||
public JsonSplit(SplitShapes SplitShape, int GroupId) : base(AreaTypes.SPLIT)
|
||||
{
|
||||
m_SplitShape = SplitShape;
|
||||
IdGroup = nIdGroup;
|
||||
base.GroupId = GroupId;
|
||||
}
|
||||
|
||||
internal override Area Deserialize(Area ParentArea, Window ParentWindow)
|
||||
{
|
||||
Split Split = new Split(ParentArea, ParentWindow);
|
||||
Split.SetIdGroup(IdGroup);
|
||||
Split.SetGroupId(GroupId);
|
||||
Split.SetAreaType(AreaTypes.SPLIT);
|
||||
Split.SetSplitShape(m_SplitShape, true);
|
||||
Split.SetSplitStartVert(m_SplitStartVert);
|
||||
@@ -497,8 +515,8 @@ namespace WebWindowComplex.Json
|
||||
Split.SetSplitQtyVert(m_SplitVertList.Count - 1, true);
|
||||
for (var SplitIndex = 0; SplitIndex <= m_SplitVertList.Count - 1; SplitIndex++)
|
||||
{
|
||||
Split.SplitVertList[SplitIndex].SetIsRelative(m_SplitVertList[SplitIndex].bIsRelative);
|
||||
Split.SplitVertList[SplitIndex].SetDimension(m_SplitVertList[SplitIndex].dDimension);
|
||||
Split.SplitVertList[SplitIndex].SetIsRelative(m_SplitVertList[SplitIndex].IsRelative);
|
||||
Split.SplitVertList[SplitIndex].SetDimension(m_SplitVertList[SplitIndex].Dimension);
|
||||
}
|
||||
}
|
||||
if (m_SplitHorizList.Count == 0)
|
||||
@@ -509,8 +527,8 @@ namespace WebWindowComplex.Json
|
||||
Split.SetSplitQtyHoriz(m_SplitHorizList.Count - 1, true);
|
||||
for (var SplitIndex = 0; SplitIndex <= m_SplitHorizList.Count - 1; SplitIndex++)
|
||||
{
|
||||
Split.SplitHorizList[SplitIndex].SetIsRelative(m_SplitHorizList[SplitIndex].bIsRelative);
|
||||
Split.SplitHorizList[SplitIndex].SetDimension(m_SplitHorizList[SplitIndex].dDimension);
|
||||
Split.SplitHorizList[SplitIndex].SetIsRelative(m_SplitHorizList[SplitIndex].IsRelative);
|
||||
Split.SplitHorizList[SplitIndex].SetDimension(m_SplitHorizList[SplitIndex].Dimension);
|
||||
}
|
||||
}
|
||||
foreach (var Area in AreaList)
|
||||
@@ -530,15 +548,15 @@ namespace WebWindowComplex.Json
|
||||
public JsonSplitted() : base(AreaTypes.SPLITTED)
|
||||
{
|
||||
}
|
||||
public JsonSplitted(int nIdGroup) : base(AreaTypes.SPLITTED)
|
||||
public JsonSplitted(int GroupId) : base(AreaTypes.SPLITTED)
|
||||
{
|
||||
IdGroup = nIdGroup;
|
||||
base.GroupId = GroupId;
|
||||
}
|
||||
|
||||
internal override Area Deserialize(Area ParentArea, Window ParentWindow)
|
||||
{
|
||||
Splitted newSplitted = new Splitted(ParentArea, ParentWindow);
|
||||
newSplitted.SetIdGroup(IdGroup);
|
||||
newSplitted.SetGroupId(GroupId);
|
||||
newSplitted.SetAreaType(AreaTypes.SPLITTED);
|
||||
//Split.AppliedDone();
|
||||
foreach (var Area in AreaList)
|
||||
@@ -575,16 +593,16 @@ namespace WebWindowComplex.Json
|
||||
{
|
||||
}
|
||||
|
||||
public JsonFill(FillTypes FillType, int nIdGroup) : base(AreaTypes.FILL)
|
||||
public JsonFill(FillTypes FillType, int GroupId) : base(AreaTypes.FILL)
|
||||
{
|
||||
m_FillType = FillType;
|
||||
IdGroup = nIdGroup;
|
||||
base.GroupId = GroupId;
|
||||
}
|
||||
|
||||
internal override Area Deserialize(Area ParentArea, Window ParentWindow)
|
||||
{
|
||||
Fill Fill = new Fill(ParentArea, ParentWindow);
|
||||
Fill.SetIdGroup(IdGroup);
|
||||
Fill.SetGroupId(GroupId);
|
||||
Fill.SetAreaType(AreaTypes.FILL);
|
||||
Fill.SetFillType(m_FillType);
|
||||
//Fill.AppliedDone();
|
||||
@@ -604,7 +622,7 @@ namespace WebWindowComplex.Json
|
||||
{
|
||||
private int m_nIndex;
|
||||
[JsonProperty]
|
||||
public int nIndex
|
||||
public int Index
|
||||
{
|
||||
get
|
||||
{
|
||||
@@ -627,9 +645,9 @@ namespace WebWindowComplex.Json
|
||||
}
|
||||
}
|
||||
|
||||
public JsonJoint(int nIndex, Joints JointType)
|
||||
public JsonJoint(int Index, Joints JointType)
|
||||
{
|
||||
m_nIndex = nIndex;
|
||||
m_nIndex = Index;
|
||||
m_JointType = JointType;
|
||||
}
|
||||
|
||||
@@ -640,11 +658,55 @@ namespace WebWindowComplex.Json
|
||||
}
|
||||
}
|
||||
|
||||
public class JsonHwOption
|
||||
{
|
||||
private string m_Name;
|
||||
[JsonProperty]
|
||||
public string Name
|
||||
{
|
||||
get
|
||||
{
|
||||
return m_Name;
|
||||
}
|
||||
set
|
||||
{
|
||||
m_Name = value;
|
||||
}
|
||||
}
|
||||
|
||||
private string m_Value;
|
||||
[JsonProperty]
|
||||
public string Value
|
||||
{
|
||||
get
|
||||
{
|
||||
return m_Value;
|
||||
}
|
||||
set
|
||||
{
|
||||
m_Value = value;
|
||||
}
|
||||
}
|
||||
|
||||
public JsonHwOption(string Name, string Value)
|
||||
{
|
||||
m_Name = Name;
|
||||
m_Value = Value;
|
||||
}
|
||||
|
||||
//internal AGBOption Deserialize()
|
||||
//{
|
||||
// AGBOption newOption = new AGBOption(m_Name, m_Value);
|
||||
// return newOption;
|
||||
//}
|
||||
|
||||
}
|
||||
|
||||
public class JsonFrameDimension
|
||||
{
|
||||
private int m_nIndex;
|
||||
[JsonProperty]
|
||||
public int nIndex
|
||||
public int Index
|
||||
{
|
||||
get
|
||||
{
|
||||
@@ -654,7 +716,7 @@ namespace WebWindowComplex.Json
|
||||
|
||||
private string m_sName;
|
||||
[JsonProperty]
|
||||
public string sName
|
||||
public string Name
|
||||
{
|
||||
get
|
||||
{
|
||||
@@ -664,7 +726,7 @@ namespace WebWindowComplex.Json
|
||||
|
||||
private double m_dValue;
|
||||
[JsonProperty]
|
||||
public double dValue
|
||||
public double Value
|
||||
{
|
||||
get
|
||||
{
|
||||
@@ -676,11 +738,11 @@ namespace WebWindowComplex.Json
|
||||
}
|
||||
}
|
||||
|
||||
public JsonFrameDimension(int nIndex, string sName, double dValue)
|
||||
public JsonFrameDimension(int Index, string Name, double Value)
|
||||
{
|
||||
m_nIndex = nIndex;
|
||||
m_sName = sName;
|
||||
m_dValue = dValue;
|
||||
m_nIndex = Index;
|
||||
m_sName = Name;
|
||||
m_dValue = Value;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -688,7 +750,7 @@ namespace WebWindowComplex.Json
|
||||
{
|
||||
private int m_nSashId;
|
||||
[JsonProperty]
|
||||
public int nSashId
|
||||
public int SashId
|
||||
{
|
||||
get
|
||||
{
|
||||
@@ -709,7 +771,7 @@ namespace WebWindowComplex.Json
|
||||
|
||||
private bool m_bHasHandle;
|
||||
[JsonProperty]
|
||||
public bool bHasHandle
|
||||
public bool HasHandle
|
||||
{
|
||||
get
|
||||
{
|
||||
@@ -723,7 +785,7 @@ namespace WebWindowComplex.Json
|
||||
|
||||
private double m_dDimension;
|
||||
[JsonProperty]
|
||||
public double dDimension
|
||||
public double Dimension
|
||||
{
|
||||
get
|
||||
{
|
||||
@@ -735,12 +797,12 @@ namespace WebWindowComplex.Json
|
||||
}
|
||||
}
|
||||
|
||||
public JsonSashDimension(Openings OpeningType, bool bHasHandle, double dDimension, int nSashId)
|
||||
public JsonSashDimension(Openings OpeningType, bool HasHandle, double Dimension, int SashId)
|
||||
{
|
||||
m_OpeningType = OpeningType;
|
||||
m_bHasHandle = bHasHandle;
|
||||
m_dDimension = dDimension;
|
||||
m_nSashId = nSashId;
|
||||
m_bHasHandle = HasHandle;
|
||||
m_dDimension = Dimension;
|
||||
m_nSashId = SashId;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -748,7 +810,7 @@ namespace WebWindowComplex.Json
|
||||
{
|
||||
private bool m_bIsRelative = false;
|
||||
[JsonProperty]
|
||||
public bool bIsRelative
|
||||
public bool IsRelative
|
||||
{
|
||||
get
|
||||
{
|
||||
@@ -758,7 +820,7 @@ namespace WebWindowComplex.Json
|
||||
|
||||
private double m_dDimension;
|
||||
[JsonProperty]
|
||||
public double dDimension
|
||||
public double Dimension
|
||||
{
|
||||
get
|
||||
{
|
||||
@@ -770,10 +832,10 @@ namespace WebWindowComplex.Json
|
||||
}
|
||||
}
|
||||
|
||||
public JsonSplitDimension(bool bIsRelative, double dDimension)
|
||||
public JsonSplitDimension(bool IsRelative, double Dimension)
|
||||
{
|
||||
m_bIsRelative = bIsRelative;
|
||||
m_dDimension = dDimension;
|
||||
m_bIsRelative = IsRelative;
|
||||
m_dDimension = Dimension;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -110,6 +110,13 @@ namespace WebWindowComplex.Json
|
||||
HORIZONTAL = 2
|
||||
}
|
||||
|
||||
public enum HwOptionTypes : int
|
||||
{
|
||||
TEXT = 1,
|
||||
LENGHT = 2,
|
||||
COMBO = 3
|
||||
}
|
||||
|
||||
// Specifies the display state of an element.
|
||||
public enum Visibility
|
||||
{
|
||||
|
||||
+20
-16
@@ -3,34 +3,29 @@ using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using WebWindowComplex.Json;
|
||||
using static WebWindowComplex.Json.WindowConst;
|
||||
|
||||
namespace WebWindowComplex.Models
|
||||
{
|
||||
public partial class ParametriOpzioni
|
||||
public partial class AGBOption
|
||||
{
|
||||
#region Public Constructors
|
||||
|
||||
public ParametriOpzioni(ParametriOpzioniParametri HdwOptionParam)
|
||||
/// <summary>
|
||||
/// Costruttore partendo da xml
|
||||
/// </summary>
|
||||
/// <param name="HdwOptionParam"></param>
|
||||
public AGBOption(ParametriOpzioniParametri HdwOptionParam)
|
||||
{
|
||||
m_sName = HdwOptionParam.NomeParametro;
|
||||
m_sDescription = HdwOptionParam.DescrizioneParametro;
|
||||
m_OptVisibility = Visibility.VISIBLE; // If(HdwOptionParam.Visible.ToLower = "true", Visibility.Visible, Visibility.Collapsed)
|
||||
m_OptVisibility = Visibility.VISIBLE;
|
||||
// If(HdwOptionParam.Visible.ToLower = "true", Visibility.Visible, Visibility.Collapsed)
|
||||
}
|
||||
|
||||
#endregion Public Constructors
|
||||
|
||||
#region Public Enums
|
||||
|
||||
public enum HDWOPTIONTYPES : int
|
||||
{
|
||||
TEXT = 1,
|
||||
LENGHT = 2,
|
||||
COMBO = 3
|
||||
}
|
||||
|
||||
#endregion Public Enums
|
||||
|
||||
#region Public Properties
|
||||
|
||||
public Visibility OptVisibility
|
||||
@@ -57,7 +52,7 @@ namespace WebWindowComplex.Models
|
||||
}
|
||||
}
|
||||
|
||||
public HDWOPTIONTYPES Type
|
||||
public HwOptionTypes Type
|
||||
{
|
||||
get
|
||||
{
|
||||
@@ -67,9 +62,18 @@ namespace WebWindowComplex.Models
|
||||
|
||||
#endregion Public Properties
|
||||
|
||||
#region Internal Methods
|
||||
|
||||
internal virtual JsonHwOption Serialize()
|
||||
{
|
||||
return null;
|
||||
}
|
||||
|
||||
#endregion Internal Methods
|
||||
|
||||
#region Protected Fields
|
||||
|
||||
protected HDWOPTIONTYPES m_Type;
|
||||
protected HwOptionTypes m_Type;
|
||||
|
||||
#endregion Protected Fields
|
||||
|
||||
@@ -3,16 +3,18 @@ using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using WebWindowComplex.Json;
|
||||
using static WebWindowComplex.Json.WindowConst;
|
||||
|
||||
namespace WebWindowComplex.Models
|
||||
{
|
||||
public class AGBOptionCombo : ParametriOpzioni
|
||||
public class AGBOptionCombo : AGBOption
|
||||
{
|
||||
#region Public Constructors
|
||||
|
||||
public AGBOptionCombo(ParametriOpzioniParametri HdwOptionParam) : base(HdwOptionParam)
|
||||
{
|
||||
m_Type = HDWOPTIONTYPES.COMBO;
|
||||
m_Type = HwOptionTypes.COMBO;
|
||||
foreach (var Value in HdwOptionParam.Opzioni)
|
||||
m_ValueList.Add(new AGBOptionParameter(Value.Valore, Value.DescrizioneOpzione));
|
||||
m_sValue = m_ValueList.FirstOrDefault(x => x.sValue == HdwOptionParam.ValoreCorrente) ?? new AGBOptionParameter("", "");
|
||||
@@ -44,6 +46,16 @@ namespace WebWindowComplex.Models
|
||||
|
||||
#endregion Public Properties
|
||||
|
||||
#region Internal Methods
|
||||
|
||||
internal override JsonHwOption Serialize()
|
||||
{
|
||||
JsonHwOption JsonHwOption = new JsonHwOption(sName, m_sValue.sValue);
|
||||
return JsonHwOption;
|
||||
}
|
||||
|
||||
#endregion Internal Methods
|
||||
|
||||
#region Private Fields
|
||||
|
||||
private AGBOptionParameter m_sValue;
|
||||
|
||||
@@ -3,17 +3,56 @@ using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using WebWindowComplex.Json;
|
||||
using static WebWindowComplex.Json.WindowConst;
|
||||
|
||||
namespace WebWindowComplex.Models
|
||||
{
|
||||
public class AGBOptionText : ParametriOpzioni
|
||||
//public class AGBOptionText : AGBOption
|
||||
//{
|
||||
// #region Public Constructors
|
||||
|
||||
// public AGBOptionText(ParametriOpzioniParametri HdwOptionParam) : base(HdwOptionParam)
|
||||
// {
|
||||
// m_Type = HdwOptionTypes.TEXT;
|
||||
// m_sValue = HdwOptionParam.ValoreCorrente;
|
||||
// }
|
||||
|
||||
// #endregion Public Constructors
|
||||
|
||||
// #region Public Properties
|
||||
|
||||
// public string sValue
|
||||
// {
|
||||
// get
|
||||
// {
|
||||
// return m_sValue;
|
||||
// }
|
||||
// set
|
||||
// {
|
||||
// m_sValue = value;
|
||||
// }
|
||||
// }
|
||||
|
||||
// #endregion Public Properties
|
||||
|
||||
// #region Private Fields
|
||||
|
||||
// private string m_sValue;
|
||||
|
||||
// #endregion Private Fields
|
||||
//}
|
||||
|
||||
public class AGBOptionText : AGBOption
|
||||
{
|
||||
#region Public Constructors
|
||||
|
||||
public AGBOptionText(ParametriOpzioniParametri HdwOptionParam) : base(HdwOptionParam)
|
||||
{
|
||||
m_Type = HDWOPTIONTYPES.TEXT;
|
||||
m_sValue = HdwOptionParam.ValoreCorrente;
|
||||
m_Type = HwOptionTypes.TEXT;
|
||||
foreach (var Value in HdwOptionParam.Opzioni)
|
||||
m_ValueList.Add(Value.Valore);
|
||||
m_sValue = m_ValueList.FirstOrDefault(x => x == HdwOptionParam.ValoreCorrente) ?? "";
|
||||
}
|
||||
|
||||
#endregion Public Constructors
|
||||
@@ -32,12 +71,32 @@ namespace WebWindowComplex.Models
|
||||
}
|
||||
}
|
||||
|
||||
public List<string> ValueList
|
||||
{
|
||||
get
|
||||
{
|
||||
return m_ValueList;
|
||||
}
|
||||
}
|
||||
|
||||
#endregion Public Properties
|
||||
|
||||
#region Internal Methods
|
||||
|
||||
internal override JsonHwOption Serialize()
|
||||
{
|
||||
JsonHwOption JsonHwOption = new JsonHwOption(sName, m_sValue);
|
||||
return JsonHwOption;
|
||||
}
|
||||
|
||||
#endregion Internal Methods
|
||||
|
||||
#region Private Fields
|
||||
|
||||
private string m_sValue;
|
||||
private List<string> m_ValueList = new List<string>();
|
||||
|
||||
#endregion Private Fields
|
||||
}
|
||||
|
||||
}
|
||||
@@ -47,16 +47,16 @@ namespace WebWindowComplex.Models
|
||||
}
|
||||
}
|
||||
|
||||
public int IdGroup
|
||||
public int GroupId
|
||||
{
|
||||
get
|
||||
{
|
||||
return m_IdGroup;
|
||||
return m_GroupId;
|
||||
}
|
||||
|
||||
set
|
||||
{
|
||||
m_IdGroup = value;
|
||||
m_GroupId = value;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -98,65 +98,91 @@ namespace WebWindowComplex.Models
|
||||
m_CounterGroup++;
|
||||
}
|
||||
|
||||
public bool AddFirstSash()
|
||||
public void AddFirstSash()
|
||||
{
|
||||
bool answ = false;
|
||||
// Salvo il parent
|
||||
Area ParentArea = AreaList[0].ParentArea;
|
||||
// Creo area sash di default
|
||||
Sash SashArea = Sash.CreateSash(ParentArea);
|
||||
// ricerco tra ttuti gli hw disponibili...
|
||||
string sShape = FindSashShape();
|
||||
var listHwValid = Sash
|
||||
.m_HardwareCompleteList
|
||||
.Where(x => x.Shape == sShape && x.SashQty == 1)
|
||||
.FirstOrDefault();
|
||||
if (listHwValid != null)
|
||||
{
|
||||
// seleziono la famiglia del primo hw trovato...
|
||||
SashArea.SelFamilyHardware = listHwValid.FamilyName;
|
||||
SashArea.RefreshHardwareList();
|
||||
if (SashArea.HardwareList.Count == 0)
|
||||
{
|
||||
SashArea.Remove();
|
||||
answ = true;
|
||||
}
|
||||
else
|
||||
{
|
||||
SashArea.SetSelHardwareFromId(SashArea.HardwareList.First().Id);
|
||||
// Salvo gli oggetti già presenti e li cancello da AreaList
|
||||
List<Area> ContentArea = new List<Area>();
|
||||
ContentArea.Add(AreaList[0]);
|
||||
AreaList.Remove(AreaList[0]);
|
||||
// Aggiungo area
|
||||
AreaList.Add(SashArea);
|
||||
if (SashArea.nSashQty == 1)
|
||||
{
|
||||
// Inserisco il riempimento precedente
|
||||
AreaList[0].AreaList.Add(ContentArea[0]);
|
||||
AreaList[0].AreaList[0].SetParentArea(AreaList[0]);
|
||||
}
|
||||
else
|
||||
{
|
||||
// All'area Sash aggiunto uno Splitted per ogni anta
|
||||
for (int i = 1; i < SashArea.nSashQty; i++)
|
||||
{
|
||||
AreaList[0].AreaList.Add(Splitted.CreateSplitted(SashArea));
|
||||
}
|
||||
Fill fill2 = (Fill)ContentArea[0];
|
||||
for (int i = 1; i < SashArea.nSashQty; i++)
|
||||
{
|
||||
AreaList[0].AreaList[1].AreaList.Add(Fill.CreateFill(AreaList[0].AreaList[1], fill2.FillType));
|
||||
}
|
||||
}
|
||||
ParentWindow.OnUpdatePreview(ParentWindow.sSerialized());
|
||||
}
|
||||
}
|
||||
return answ;
|
||||
// Inserisco famiglia hardware vuota
|
||||
SashArea.SetSelFamilyHardware("");
|
||||
// Inserisco hardware di default
|
||||
SashArea.SetSelHardwareFromId("000000");
|
||||
// Salvo gli oggetti già presenti e li cancello da AreaList
|
||||
List<Area> ContentArea = new List<Area>();
|
||||
ContentArea.Add(AreaList[0]);
|
||||
AreaList.Remove(AreaList[0]);
|
||||
// Aggiungo area
|
||||
AreaList.Add(SashArea);
|
||||
// Inserisco il riempimento precedente
|
||||
AreaList[0].AreaList.Add(ContentArea[0]);
|
||||
AreaList[0].AreaList[0].SetParentArea(AreaList[0]);
|
||||
// Richiesta SVG con hardware di default
|
||||
ParentWindow.OnUpdatePreview(ParentWindow.sSerialized());
|
||||
}
|
||||
|
||||
public void AddSplit(Area ParentArea)
|
||||
// public void AddFirstSash()
|
||||
// {
|
||||
// // Salvo il parent
|
||||
// Area ParentArea = AreaList[0].ParentArea;
|
||||
// // Creo area sash di default
|
||||
// Sash SashArea = Sash.CreateSash(ParentArea);
|
||||
// // ricerco tra tutti gli hw disponibili...
|
||||
// string sShape = FindSashShape();
|
||||
// var listHwValid = Sash
|
||||
// .m_HardwareCompleteList
|
||||
// .Where(x => x.Shape == sShape && x.SashQty == 1)
|
||||
// .FirstOrDefault();
|
||||
// if (listHwValid != null)
|
||||
// {
|
||||
// // seleziono la famiglia del primo hw trovato...
|
||||
// SashArea.SetSelFamilyHardware(listHwValid.FamilyName);
|
||||
//#if false
|
||||
// SashArea.ReqRefreshShape();
|
||||
//#endif
|
||||
// SashArea.RefreshHardwareList();
|
||||
// if (SashArea.HardwareList.Count == 0)
|
||||
// {
|
||||
// //answ = true;
|
||||
// SashArea.SetSelHardwareFromId("000000");
|
||||
// }
|
||||
// else
|
||||
// {
|
||||
// SashArea.SetSelHardwareFromId(SashArea.HardwareList.First().Id);
|
||||
// }
|
||||
// // Salvo gli oggetti già presenti e li cancello da AreaList
|
||||
// List<Area> ContentArea = new List<Area>();
|
||||
// ContentArea.Add(AreaList[0]);
|
||||
// AreaList.Remove(AreaList[0]);
|
||||
// // Aggiungo area
|
||||
// AreaList.Add(SashArea);
|
||||
// if (SashArea.nSashQty == 1)
|
||||
// {
|
||||
// // Inserisco il riempimento precedente
|
||||
// AreaList[0].AreaList.Add(ContentArea[0]);
|
||||
// AreaList[0].AreaList[0].SetParentArea(AreaList[0]);
|
||||
// }
|
||||
// else
|
||||
// {
|
||||
// // All'area Sash aggiunto uno Splitted per ogni anta
|
||||
// for (int i = 1; i < SashArea.nSashQty; i++)
|
||||
// {
|
||||
// AreaList[0].AreaList.Add(Splitted.CreateSplitted(SashArea));
|
||||
// }
|
||||
// Fill fill2 = (Fill)ContentArea[0];
|
||||
// for (int i = 1; i < SashArea.nSashQty; i++)
|
||||
// {
|
||||
// AreaList[0].AreaList[1].AreaList.Add(Fill.CreateFill(AreaList[0].AreaList[1], fill2.FillType));
|
||||
// }
|
||||
// }
|
||||
// ParentWindow.OnUpdatePreview(ParentWindow.sSerialized());
|
||||
// }
|
||||
// }
|
||||
|
||||
public void AddSplit()
|
||||
{
|
||||
// Salvo il parent
|
||||
Area ParentArea = AreaList[0].ParentArea;
|
||||
List<Area> ContentArea = new List<Area>();
|
||||
// Salvo gli oggetti già presenti e li cancello da AreaList
|
||||
ContentArea.Add(AreaList[0]);
|
||||
@@ -194,9 +220,9 @@ namespace WebWindowComplex.Models
|
||||
|
||||
public abstract Area Copy(Area ParentArea);
|
||||
|
||||
public void SetIdGroup(int nIdGroup)
|
||||
public void SetGroupId(int nGroupId)
|
||||
{
|
||||
m_IdGroup = nIdGroup;
|
||||
m_GroupId = nGroupId;
|
||||
}
|
||||
|
||||
public void SwapAree()
|
||||
@@ -214,7 +240,7 @@ namespace WebWindowComplex.Models
|
||||
|
||||
#region Internal Methods
|
||||
|
||||
internal abstract JsonArea Serialize();
|
||||
internal abstract JsonArea Serialize(bool hideHw);
|
||||
|
||||
internal void SetAreaType(AreaTypes AreaType)
|
||||
{
|
||||
@@ -243,22 +269,11 @@ namespace WebWindowComplex.Models
|
||||
|
||||
private List<Area> m_AreaList = new List<Area>();
|
||||
private AreaTypes m_AreaType;
|
||||
private int m_IdGroup;
|
||||
private int m_GroupId;
|
||||
private Area m_ParentArea;
|
||||
|
||||
#endregion Private Fields
|
||||
|
||||
#region Private Methods
|
||||
|
||||
/// <summary>
|
||||
/// MockUp chiamata a c++ x scelta forma sash per Hw
|
||||
/// </summary>
|
||||
/// <returns></returns>
|
||||
private string FindSashShape()
|
||||
{
|
||||
return "Rectangular";
|
||||
}
|
||||
|
||||
#endregion Private Methods
|
||||
}
|
||||
}
|
||||
@@ -64,7 +64,7 @@ namespace WebWindowComplex.Models
|
||||
{
|
||||
Fill newFill = new Fill(newParentArea, m_ParentWindow);
|
||||
AddCounterGroup();
|
||||
newFill.SetIdGroup(nCounterGroup);
|
||||
newFill.SetGroupId(nCounterGroup);
|
||||
newFill.SetFillType(SelFillType);
|
||||
newFill.SetAreaType(AreaType);
|
||||
return newFill;
|
||||
@@ -78,26 +78,30 @@ namespace WebWindowComplex.Models
|
||||
{
|
||||
Fill Fill = new Fill(AreaParent, AreaParent.ParentWindow);
|
||||
AddCounterGroup();
|
||||
Fill.SetIdGroup(nCounterGroup);
|
||||
Fill.SetGroupId(nCounterGroup);
|
||||
Fill.SetAreaType(AreaTypes.FILL);
|
||||
Fill.SetFillType(FillType);
|
||||
return Fill;
|
||||
}
|
||||
|
||||
internal override JsonArea Serialize()
|
||||
internal override JsonArea Serialize(bool hideHw)
|
||||
{
|
||||
if (nCounterGroup < IdGroup)
|
||||
Area.nCounterGroup = IdGroup;
|
||||
JsonFill JsonFill = new JsonFill(FillType, IdGroup);
|
||||
if (nCounterGroup < GroupId)
|
||||
Area.nCounterGroup = GroupId;
|
||||
JsonFill JsonFill = new JsonFill(FillType, GroupId);
|
||||
foreach (var Area in AreaList)
|
||||
JsonFill.AreaList.Add(Area.Serialize());
|
||||
JsonFill.AreaList.Add(Area.Serialize(hideHw));
|
||||
return JsonFill;
|
||||
}
|
||||
|
||||
internal void SetSelFillType(FillTypes value)
|
||||
{
|
||||
m_SelFillType = value;
|
||||
//m_ParentWindow.OnUpdatePreview(m_ParentWindow.sSerialized());
|
||||
}
|
||||
internal void SetFillType(FillTypes value)
|
||||
{
|
||||
m_SelFillType = value;
|
||||
m_ParentWindow.OnUpdatePreview(m_ParentWindow.sSerialized());
|
||||
}
|
||||
|
||||
#endregion Internal Methods
|
||||
|
||||
@@ -79,11 +79,13 @@ namespace WebWindowComplex.Models
|
||||
{
|
||||
get
|
||||
{
|
||||
return IdNameStruct.IndFromId((int)m_Shape, m_ShapeList);
|
||||
//return IdNameStruct.IndFromId((int)m_Shape, m_ShapeList);
|
||||
return (int)m_Shape;
|
||||
}
|
||||
set
|
||||
{
|
||||
Shapes SelShape = (Shapes)IdNameStruct.IdFromInd(value, m_ShapeList);
|
||||
//Shapes SelShape = (Shapes)IdNameStruct.IdFromInd(value, m_ShapeList);
|
||||
Shapes SelShape = (Shapes)value;
|
||||
if (m_Shape != SelShape)
|
||||
{
|
||||
// salvo vecchie dimensioni
|
||||
@@ -194,7 +196,7 @@ namespace WebWindowComplex.Models
|
||||
}
|
||||
m_Shape = SelShape;
|
||||
}
|
||||
m_ParentWindow.OnUpdatePreview(m_ParentWindow.sSerialized());
|
||||
//m_ParentWindow.OnUpdatePreview(m_ParentWindow.sSerialized());
|
||||
}
|
||||
}
|
||||
|
||||
@@ -237,18 +239,18 @@ namespace WebWindowComplex.Models
|
||||
return NewFrame;
|
||||
}
|
||||
|
||||
internal override JsonArea Serialize()
|
||||
internal override JsonArea Serialize(bool hideHw)
|
||||
{
|
||||
Area.nCounterGroup = 0;
|
||||
if (nCounterGroup < IdGroup)
|
||||
Area.nCounterGroup = IdGroup;
|
||||
JsonFrame JsonFrame = new JsonFrame(m_Shape, m_bBottomRail, m_nBottomRailQty, IdGroup);
|
||||
if (nCounterGroup < GroupId)
|
||||
Area.nCounterGroup = GroupId;
|
||||
JsonFrame JsonFrame = new JsonFrame(m_Shape, m_bBottomRail, m_nBottomRailQty, GroupId);
|
||||
foreach (var Dimension in DimensionList)
|
||||
JsonFrame.DimensionList.Add(Dimension.Serialize());
|
||||
foreach (var Joint in JointList)
|
||||
JsonFrame.JointList.Add(Joint.Serialize());
|
||||
foreach (var Area in AreaList)
|
||||
JsonFrame.AreaList.Add(Area.Serialize());
|
||||
JsonFrame.AreaList.Add(Area.Serialize(hideHw));
|
||||
return JsonFrame;
|
||||
}
|
||||
|
||||
|
||||
@@ -0,0 +1,28 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace WebWindowComplex.Models
|
||||
{
|
||||
public class OnReqHwOptEventArgs : EventArgs
|
||||
{
|
||||
#region Public Fields
|
||||
|
||||
public string sJwd;
|
||||
public int nGroupId;
|
||||
|
||||
#endregion Public Fields
|
||||
|
||||
#region Public Constructors
|
||||
|
||||
public OnReqHwOptEventArgs(string sJwd, int nGroupId)
|
||||
{
|
||||
this.sJwd = sJwd;
|
||||
this.nGroupId = nGroupId;
|
||||
}
|
||||
|
||||
#endregion Public Constructors
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,28 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace WebWindowComplex.Models
|
||||
{
|
||||
public class OnReqShapeEventArgs : EventArgs
|
||||
{
|
||||
#region Public Fields
|
||||
|
||||
public string sJwd;
|
||||
public int groupId;
|
||||
|
||||
#endregion Public Fields
|
||||
|
||||
#region Public Constructors
|
||||
|
||||
public OnReqShapeEventArgs(string sJwd, int nGroupId)
|
||||
{
|
||||
this.sJwd = sJwd;
|
||||
this.groupId = nGroupId;
|
||||
}
|
||||
|
||||
#endregion Public Constructors
|
||||
}
|
||||
}
|
||||
+211
-104
@@ -1,9 +1,12 @@
|
||||
using Egw.Window.Data;
|
||||
using Newtonsoft.Json;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Data.SqlTypes;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using System.Xml.Serialization;
|
||||
using WebWindowComplex.Json;
|
||||
using static WebWindowComplex.Json.WindowConst;
|
||||
|
||||
@@ -29,6 +32,13 @@ namespace WebWindowComplex.Models
|
||||
|
||||
#endregion Public Constructors
|
||||
|
||||
#region Public Events
|
||||
|
||||
//public event EventHandler<OnReqShapeEventArgs> OnReqShape = delegate { };
|
||||
//public event EventHandler<OnReqHwOptEventArgs> OnReqHwOption = delegate { };
|
||||
|
||||
#endregion Public Events
|
||||
|
||||
#region Public Properties
|
||||
|
||||
public bool bIsMeasureGlass
|
||||
@@ -71,7 +81,7 @@ namespace WebWindowComplex.Models
|
||||
}
|
||||
}
|
||||
|
||||
public List<ParametriOpzioni> HwdOptionList
|
||||
public List<AGBOption> HwOptionList
|
||||
{
|
||||
get
|
||||
{
|
||||
@@ -79,6 +89,14 @@ namespace WebWindowComplex.Models
|
||||
}
|
||||
}
|
||||
|
||||
public Dictionary<string, string> SelHwOptionList
|
||||
{
|
||||
get
|
||||
{
|
||||
return m_SelHwdOptionList;
|
||||
}
|
||||
}
|
||||
|
||||
public List<Joint> JointList
|
||||
{
|
||||
get
|
||||
@@ -99,7 +117,7 @@ namespace WebWindowComplex.Models
|
||||
}
|
||||
set
|
||||
{
|
||||
if (value >= 0 && value <= 4)
|
||||
if (value >= 0 && value <= 3)
|
||||
{
|
||||
if (value > m_SashList.Count)
|
||||
{
|
||||
@@ -211,6 +229,7 @@ namespace WebWindowComplex.Models
|
||||
}
|
||||
}
|
||||
}
|
||||
//m_ParentWindow.OnUpdatePreview(m_ParentWindow.sSerialized(true));
|
||||
RefreshHardwareList();
|
||||
RefreshHardwareOptionList();
|
||||
SetFirstHardware();
|
||||
@@ -303,10 +322,7 @@ namespace WebWindowComplex.Models
|
||||
}
|
||||
set
|
||||
{
|
||||
m_SelFamilyHardware = value;
|
||||
RefreshHardwareList();
|
||||
RefreshHardwareOptionList();
|
||||
SetFirstHardware();
|
||||
SetSelFamilyHardware(value);
|
||||
m_ParentWindow.OnUpdatePreview(m_ParentWindow.sSerialized());
|
||||
}
|
||||
}
|
||||
@@ -320,75 +336,7 @@ namespace WebWindowComplex.Models
|
||||
set
|
||||
{
|
||||
m_SelHardware = value;
|
||||
// if (m_SelHardware != null && m_SelHardware.sId != "000000")
|
||||
// {
|
||||
// string sHwdOptPath = "";
|
||||
// var gf = EgtLuaCreateGlobTable("WDG");
|
||||
// var tft = EgtLuaSetGlobIntVar("WDG.AREAID", m_nAreaId);
|
||||
// var tfy = EgtLuaSetGlobStringVar("WDG.HDWFAVOURITE", value.sId);
|
||||
// SashDimension HandleSash = m_SashList.FirstOrDefault(x => x.bHasHandle);
|
||||
// string sHandle = "Dx";
|
||||
// switch (GetOpeningSide(HandleSash.OpeningType))
|
||||
// {
|
||||
// case object _ when OpeningSides.LEFT:
|
||||
// {
|
||||
// sHandle = "Sx";
|
||||
// break;
|
||||
// }
|
||||
|
||||
// case object _ when OpeningSides.RIGHT:
|
||||
// {
|
||||
// sHandle = "Dx";
|
||||
// break;
|
||||
// }
|
||||
// }
|
||||
// var tfd = EgtLuaSetGlobStringVar("WDG.HDWHANDLE", sHandle);
|
||||
// var tlt = EgtLuaCallFunction("WinCreate_GetHardwareOptionPath");
|
||||
// var tltf = EgtLuaGetGlobStringVar("WDG.HWDOPTPATH", sHwdOptPath);
|
||||
// if (!string.IsNullOrWhiteSpace(sHwdOptPath))
|
||||
// {
|
||||
// XmlSerializer serializer = new XmlSerializer(typeof(ParametriOpzioni));
|
||||
// ParametriOpzioni HwdOptions = null/* TODO Change to default(_) if this is not a reference type */;
|
||||
// string sHdwOptPath = Path.ChangeExtension(sHwdOptPath, ".opt");
|
||||
// bool bHdwOptFound = false;
|
||||
// for (var WaitIndex = 0; WaitIndex <= 100; WaitIndex++)
|
||||
// {
|
||||
// if (File.Exists(sHdwOptPath))
|
||||
// {
|
||||
// bHdwOptFound = true;
|
||||
// break;
|
||||
// }
|
||||
// System.Threading.Thread.Sleep(100);
|
||||
// }
|
||||
// if (bHdwOptFound)
|
||||
// {
|
||||
// string sHwdOptText = "";
|
||||
// try
|
||||
// {
|
||||
// sHwdOptText = File.ReadAllText(sHdwOptPath);
|
||||
// }
|
||||
// catch (Exception ex)
|
||||
// {
|
||||
// EgtOutLog("Hardware file opt not found or read!");
|
||||
// }
|
||||
// if (!string.IsNullOrWhiteSpace(sHwdOptText))
|
||||
// {
|
||||
// using (TextReader reader = new StringReader(sHwdOptText))
|
||||
// {
|
||||
// HwdOptions = serializer.Deserialize(reader);
|
||||
// }
|
||||
// if (!IsNothing(HwdOptions))
|
||||
// {
|
||||
// m_HwdOptionList.Clear();
|
||||
// foreach (var HdwOption in HwdOptions.Items)
|
||||
// m_HwdOptionList.Add(new AGBOption(HdwOption));
|
||||
// NotifyPropertyChanged(nameof(HwdOptionList));
|
||||
// }
|
||||
// }
|
||||
// }
|
||||
// var ud = EgtLuaResetGlobVar("WDG");
|
||||
// }
|
||||
// }
|
||||
ReqRefreshHwOption();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -400,8 +348,9 @@ namespace WebWindowComplex.Models
|
||||
}
|
||||
set
|
||||
{
|
||||
m_SelHardware = m_HardwareList.FirstOrDefault(x => !string.IsNullOrEmpty(value) && x.Id.Equals(value)) ?? new Hardware("", "", "", Enums.OpeningTypes.Null, "", 0, 0);
|
||||
ParentWindow.OnUpdatePreview(ParentWindow.sSerialized());
|
||||
m_SelHardware = m_HardwareList.FirstOrDefault(x => !string.IsNullOrEmpty(value) && x.Id.Equals(value)) ?? new Hardware(CustomHwId, "", "", Enums.OpeningTypes.Null, "", 0, 0);
|
||||
//ReqRefreshHwOption();
|
||||
//ParentWindow.OnUpdatePreview(ParentWindow.sSerialized());
|
||||
}
|
||||
}
|
||||
|
||||
@@ -438,6 +387,12 @@ namespace WebWindowComplex.Models
|
||||
}
|
||||
}
|
||||
|
||||
public string SashShape
|
||||
{
|
||||
get => m_CurrShape;
|
||||
set => m_CurrShape = value;
|
||||
}
|
||||
|
||||
#endregion Public Properties
|
||||
|
||||
#region Public Methods
|
||||
@@ -446,17 +401,17 @@ namespace WebWindowComplex.Models
|
||||
{
|
||||
Sash newSash = new Sash(newParentArea, m_ParentWindow);
|
||||
AddCounterGroup();
|
||||
newSash.SetIdGroup(nCounterGroup);
|
||||
newSash.SetGroupId(nCounterGroup);
|
||||
newSash.SetAreaType(AreaType);
|
||||
// Imposta la quantità di ante e definisce SashDimension di ogni anta ai valori di default
|
||||
newSash.SetSashQty(nSashQty);
|
||||
newSash.SetIsSashVertical(bIsSashVertical);
|
||||
newSash.SetOrientationSashType(OrientationSashType);
|
||||
newSash.SetSashBottomRailQty(SashBottomRailQty);
|
||||
newSash.SetSelFamilyHardwareFromIndex(SelHardware.Id);
|
||||
newSash.RefreshHardwareList();
|
||||
newSash.SetSelFamilyHardwareFromIndex(m_SelHardware.Id);
|
||||
newSash.ReqRefreshShape();
|
||||
newSash.RefreshHardwareOptionList();
|
||||
newSash.SetSelHardware(SelHardware);
|
||||
newSash.SetSelHardware(m_SelHardware);
|
||||
for (int i = 0; i < SashList.Count; i++)
|
||||
{
|
||||
//Cancello SashDimension di default e aggiungo la copia
|
||||
@@ -477,17 +432,19 @@ namespace WebWindowComplex.Models
|
||||
return newSash;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Update valori ammissibili x HW list
|
||||
/// </summary>
|
||||
public void RefreshHardwareList()
|
||||
{
|
||||
if (m_HardwareCompleteList != null && m_HardwareCompleteList.Count > 0)
|
||||
{
|
||||
m_HardwareList.Clear();
|
||||
string sSashShape = FindSashShape();
|
||||
Enums.OpeningTypes sOpeningType = ConvertOpeningType();
|
||||
var iComp = StringComparison.InvariantCultureIgnoreCase;
|
||||
var rawList = m_HardwareCompleteList
|
||||
.Where(x => x.Id == "000000" ||
|
||||
(!string.IsNullOrEmpty(m_SelFamilyHardware) && x.FamilyName.Equals(m_SelFamilyHardware, iComp) && x.SashQty == nSashQty && x.Shape.Equals(sSashShape, iComp) && x.OpeningType == sOpeningType)
|
||||
(!string.IsNullOrEmpty(m_SelFamilyHardware) && x.FamilyName.Equals(m_SelFamilyHardware, iComp) && x.SashQty == nSashQty && x.Shape.Equals(m_CurrShape, iComp) && x.OpeningType == sOpeningType)
|
||||
)
|
||||
.ToList();
|
||||
if (rawList != null && rawList.Count > 0)
|
||||
@@ -510,6 +467,66 @@ namespace WebWindowComplex.Models
|
||||
m_ParentWindow.OnUpdatePreview(m_ParentWindow.sSerialized());
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Richiesta calcolo shape corrente
|
||||
/// </summary>
|
||||
public void ReqRefreshShape()
|
||||
{
|
||||
if (m_HardwareCompleteList != null && m_HardwareCompleteList.Count > 0)
|
||||
{
|
||||
m_HardwareList.Clear();
|
||||
// reset shape corrente
|
||||
m_CurrShape = "";
|
||||
|
||||
// chiamata evento calcolo shape: gruppo da calcolare
|
||||
m_ParentWindow.OnReqShapePreview(m_ParentWindow.sSerialized(), GroupId);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Richiesta calcolo hardware option list
|
||||
/// </summary>
|
||||
public void ReqRefreshHwOption()
|
||||
{
|
||||
HwOptionList.Clear();
|
||||
// chiamata evento calcolo opzioni hardware
|
||||
m_ParentWindow.OnReqHwOptionPreview(m_ParentWindow.sSerialized(), GroupId );
|
||||
}
|
||||
|
||||
public void SetSelFamilyHardware(string sFamilyHw)
|
||||
{
|
||||
m_SelFamilyHardware = sFamilyHw;
|
||||
// se ho la shape aggiorno elenco HW
|
||||
if (!string.IsNullOrEmpty(m_CurrShape))
|
||||
{
|
||||
RefreshHardwareList();
|
||||
}
|
||||
RefreshHardwareOptionList();
|
||||
SetFirstHardware();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Aggiornamento HW List conseguente a ricezione nuova Shape
|
||||
/// </summary>
|
||||
/// <param name="newShape"></param>
|
||||
public void UpdateShape(string newShape)
|
||||
{
|
||||
m_CurrShape = newShape;
|
||||
// la famiglia hw è vuota seleziono il primo hardware valido e utilizzo la sua famiglia
|
||||
if(string.IsNullOrEmpty(m_SelFamilyHardware) || m_SelFamilyHardware == "")
|
||||
{
|
||||
var listHwValid = Sash
|
||||
.m_HardwareCompleteList
|
||||
.Where(x => x.Shape == m_CurrShape && x.SashQty == nSashQty && x.OpeningType == ConvertOpeningType())
|
||||
.FirstOrDefault();
|
||||
SetSelFamilyHardware(listHwValid.FamilyName);
|
||||
}
|
||||
RefreshHardwareList();
|
||||
// se il vecchio hw selezionato non va più bene viene selezionato il primo della lista
|
||||
if(!HardwareList.Contains(m_SelHardware) || m_SelHardware.Shape != m_CurrShape)
|
||||
SetFirstHardware();
|
||||
}
|
||||
|
||||
#endregion Public Methods
|
||||
|
||||
#region Internal Methods
|
||||
@@ -518,7 +535,7 @@ namespace WebWindowComplex.Models
|
||||
{
|
||||
Sash newSash = new Sash(Area, Area.ParentWindow);
|
||||
AddCounterGroup();
|
||||
newSash.SetIdGroup(nCounterGroup);
|
||||
newSash.SetGroupId(nCounterGroup);
|
||||
newSash.SetAreaType(AreaTypes.SASH);
|
||||
newSash.SetSashQty(1);
|
||||
newSash.SetOrientationSashType(OrientationSash.VERTICAL);
|
||||
@@ -527,8 +544,8 @@ namespace WebWindowComplex.Models
|
||||
newSash.JointList.Add(new Joint(newSash, JointIndex + 1, Joints.FULL_H));
|
||||
newSash.SetSashBottomRail(false);
|
||||
newSash.SetSashBottomRailQty(0);
|
||||
newSash.SelFamilyHardware = Sash.s_FamilyHardwareList.First();
|
||||
newSash.RefreshHardwareList();
|
||||
newSash.SetSelFamilyHardware(Sash.s_FamilyHardwareList.First());
|
||||
//newSash.ReqRefreshShape();
|
||||
newSash.RefreshHardwareOptionList();
|
||||
newSash.SetFirstHardware();
|
||||
return newSash;
|
||||
@@ -614,22 +631,54 @@ namespace WebWindowComplex.Models
|
||||
}
|
||||
}
|
||||
|
||||
//internal void OnReqShapePreview(string sJwd, int groupId)
|
||||
//{
|
||||
// OnReqShapeEventArgs e = new OnReqShapeEventArgs(sJwd, groupId);
|
||||
// EventHandler<OnReqShapeEventArgs> handler = OnReqShape;
|
||||
// if (handler != null)
|
||||
// {
|
||||
// handler(this, e);
|
||||
// }
|
||||
//}
|
||||
|
||||
//internal void OnReqHwOptionPreview(string sJwd, int groupId)
|
||||
//{
|
||||
// OnReqHwOptEventArgs e = new OnReqHwOptEventArgs(sJwd, groupId);
|
||||
// EventHandler<OnReqHwOptEventArgs> handler = OnReqHwOption;
|
||||
// if (handler != null)
|
||||
// {
|
||||
// handler(this, e);
|
||||
// }
|
||||
//}
|
||||
|
||||
internal void RefreshHardwareOptionList()
|
||||
{
|
||||
m_HwdOptionList.Clear();
|
||||
//ReqRefreshHwOption();
|
||||
}
|
||||
|
||||
internal override JsonArea Serialize()
|
||||
internal override JsonArea Serialize(bool hideHw)
|
||||
{
|
||||
if (nCounterGroup < IdGroup)
|
||||
Area.nCounterGroup = IdGroup;
|
||||
JsonSash JsonSash = new JsonSash(m_bIsSashVertical, m_SashType, m_bSashBottomRail, m_nSashBottomRailQty, m_SelHardware.Id, IdGroup);
|
||||
if (nCounterGroup < GroupId)
|
||||
Area.nCounterGroup = GroupId;
|
||||
string currHwId = hideHw ? CustomHwId : m_SelHardware.Id;
|
||||
JsonSash JsonSash = new JsonSash(m_bIsSashVertical, m_SashType, m_bSashBottomRail, m_nSashBottomRailQty, currHwId, GroupId);
|
||||
foreach (var SashDimension in SashList)
|
||||
JsonSash.SashList.Add(SashDimension.Serialize());
|
||||
foreach (var Joint in JointList)
|
||||
JsonSash.JointList.Add(Joint.Serialize());
|
||||
if(HwOptionList.Count > 0)
|
||||
{
|
||||
foreach (var HwOption in HwOptionList)
|
||||
JsonSash.HwOptionList.Add(HwOption.Serialize());
|
||||
}
|
||||
else
|
||||
{
|
||||
foreach (var HwOption in SelHwOptionList)
|
||||
JsonSash.HwOptionList.Add(new JsonHwOption(HwOption.Key, HwOption.Value));
|
||||
}
|
||||
foreach (var Area in AreaList)
|
||||
JsonSash.AreaList.Add(Area.Serialize());
|
||||
JsonSash.AreaList.Add(Area.Serialize(hideHw));
|
||||
return JsonSash;
|
||||
}
|
||||
|
||||
@@ -638,6 +687,7 @@ namespace WebWindowComplex.Models
|
||||
if (m_HardwareList.Count > 0)
|
||||
{
|
||||
m_SelHardware = m_HardwareList.First();
|
||||
//ReqRefreshHwOption();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -659,6 +709,60 @@ namespace WebWindowComplex.Models
|
||||
}
|
||||
}
|
||||
|
||||
internal void SetHardwareOption(string OptionXml)
|
||||
{
|
||||
if (!string.IsNullOrEmpty(OptionXml))
|
||||
{
|
||||
ParametriOpzioni HwOptions = null;
|
||||
XmlSerializer serializer = new XmlSerializer(typeof(ParametriOpzioni));
|
||||
StringReader reader = new StringReader(OptionXml);
|
||||
HwOptions = (ParametriOpzioni)serializer.Deserialize(reader);
|
||||
if (HwOptions.Items != null)
|
||||
{
|
||||
m_HwdOptionList.Clear();
|
||||
foreach (var HwOption in HwOptions.Items)
|
||||
{
|
||||
switch (HwOption.Tipo)
|
||||
{
|
||||
case "Text":
|
||||
{
|
||||
m_HwdOptionList.Add(new AGBOptionText(HwOption));
|
||||
break;
|
||||
}
|
||||
case "List":
|
||||
{
|
||||
m_HwdOptionList.Add(new AGBOptionCombo(HwOption));
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
if (SelHwOptionList.Count > 0)
|
||||
{
|
||||
foreach (var selHwOption in SelHwOptionList)
|
||||
{
|
||||
var HwOption = HwOptionList.Where(x => x.sName == selHwOption.Key).First();
|
||||
switch (HwOption.Type)
|
||||
{
|
||||
case HwOptionTypes.COMBO:
|
||||
{
|
||||
AGBOptionCombo OptCombo = (AGBOptionCombo)HwOption;
|
||||
var selValue = OptCombo.ValueList.Where(x => x.sValue == selHwOption.Value).First();
|
||||
OptCombo.sValue = selValue;
|
||||
break;
|
||||
}
|
||||
case HwOptionTypes.TEXT:
|
||||
{
|
||||
AGBOptionText OptText = (AGBOptionText)HwOption;
|
||||
OptText.sValue = selHwOption.Value;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
internal void SetOrientationSashType(OrientationSash value)
|
||||
{
|
||||
m_SelOrientationSashType = value;
|
||||
@@ -710,13 +814,14 @@ namespace WebWindowComplex.Models
|
||||
|
||||
internal string SetSelFamilyHardwareFromIndex(string codHardware)
|
||||
{
|
||||
string? item = "";
|
||||
if (string.IsNullOrEmpty(m_SelFamilyHardware))
|
||||
{
|
||||
var item = m_HardwareCompleteList
|
||||
item = m_HardwareCompleteList
|
||||
.Where(x => x.Id == codHardware)
|
||||
.Select(x => x.FamilyName)
|
||||
.ToList();
|
||||
SelFamilyHardware = item.First();
|
||||
.FirstOrDefault();
|
||||
SetSelFamilyHardware(item ?? "");
|
||||
}
|
||||
return SelFamilyHardware;
|
||||
}
|
||||
@@ -729,18 +834,23 @@ namespace WebWindowComplex.Models
|
||||
internal void SetSelHardwareFromId(string sId)
|
||||
{
|
||||
if (m_HardwareList.Count == 0)
|
||||
SelHardware = m_HardwareCompleteList.FirstOrDefault(x => x.Id.Equals(sId)) ?? new Hardware("", "", "", Enums.OpeningTypes.Null, "", 0, 0);
|
||||
m_SelHardware = m_HardwareCompleteList.FirstOrDefault(x => x.Id.Equals(sId)) ?? new Hardware(CustomHwId, "", "", Enums.OpeningTypes.Null, "", 0, 0);
|
||||
else
|
||||
SelHardware = m_HardwareList.FirstOrDefault(x => x.Id.Equals(sId)) ?? new Hardware("", "", "", Enums.OpeningTypes.Null, "", 0, 0);
|
||||
m_SelHardware = m_HardwareList.FirstOrDefault(x => x.Id.Equals(sId)) ?? new Hardware(CustomHwId, "", "", Enums.OpeningTypes.Null, "", 0, 0);
|
||||
if (SelHardware.Id == "")
|
||||
SelHardware = m_HardwareList.First();
|
||||
//SelFamilyHardware = m_SelHardware.FamilyName;
|
||||
m_SelHardware = m_HardwareList.First();
|
||||
//ReqRefreshHwOption();
|
||||
}
|
||||
|
||||
#endregion Internal Methods
|
||||
|
||||
#region Private Fields
|
||||
|
||||
/// <summary>
|
||||
/// Codice HW custom x gestione casi non risolvibili di selezione
|
||||
/// </summary>
|
||||
private const string CustomHwId = "000000";
|
||||
|
||||
private bool m_bIsMeasureGlass;
|
||||
|
||||
private bool m_bIsPercentage = true;
|
||||
@@ -749,9 +859,11 @@ namespace WebWindowComplex.Models
|
||||
|
||||
private bool m_bSashBottomRail;
|
||||
|
||||
private string m_CurrShape = "";
|
||||
private List<Hardware> m_HardwareList = new List<Hardware>();
|
||||
|
||||
private List<ParametriOpzioni> m_HwdOptionList = new List<ParametriOpzioni>();
|
||||
private List<AGBOption> m_HwdOptionList = new List<AGBOption>();
|
||||
private Dictionary<string, string> m_SelHwdOptionList = new Dictionary<string, string>();
|
||||
|
||||
private List<Joint> m_JointList = new List<Joint>();
|
||||
|
||||
@@ -793,11 +905,6 @@ namespace WebWindowComplex.Models
|
||||
return answ;
|
||||
}
|
||||
|
||||
private string FindSashShape()
|
||||
{
|
||||
return "Rectangular";
|
||||
}
|
||||
|
||||
#endregion Private Methods
|
||||
}
|
||||
}
|
||||
@@ -106,7 +106,7 @@ namespace WebWindowComplex.Models
|
||||
set
|
||||
{
|
||||
m_bHasHandle = value;
|
||||
m_Parent.ParentWindow.OnUpdatePreview(m_Parent.ParentWindow.sSerialized());
|
||||
//m_Parent.ParentWindow.OnUpdatePreview(m_Parent.ParentWindow.sSerialized());
|
||||
}
|
||||
}
|
||||
|
||||
@@ -229,7 +229,7 @@ namespace WebWindowComplex.Models
|
||||
set
|
||||
{
|
||||
m_SelOpeningType = value;
|
||||
m_Parent.RefreshHardwareList();
|
||||
m_Parent.ReqRefreshShape();
|
||||
m_Parent.RefreshHardwareOptionList();
|
||||
m_Parent.SetFirstHardware();
|
||||
}
|
||||
@@ -239,15 +239,23 @@ namespace WebWindowComplex.Models
|
||||
{
|
||||
get
|
||||
{
|
||||
return IdNameStruct.IndFromId((int)m_SelOpeningType, m_OpeningTypeList);
|
||||
//return IdNameStruct.IndFromId((int)m_SelOpeningType, m_OpeningTypeList);
|
||||
return (int)m_SelOpeningType;
|
||||
}
|
||||
set
|
||||
{
|
||||
m_SelOpeningType = (Openings)IdNameStruct.IdFromInd(value, m_OpeningTypeList);
|
||||
m_Parent.RefreshHardwareList();
|
||||
m_Parent.RefreshHardwareOptionList();
|
||||
m_Parent.SetFirstHardware();
|
||||
m_Parent.ParentWindow.OnUpdatePreview(m_Parent.ParentWindow.sSerialized());
|
||||
//Openings newOpening = (Openings)IdNameStruct.IdFromInd(value, m_OpeningTypeList);
|
||||
Openings newOpening = (Openings)value;
|
||||
if ((newOpening != Openings.TILTTURN_LEFT && newOpening != Openings.TILTTURN_RIGHT) ||
|
||||
(newOpening == Openings.TILTTURN_LEFT && m_bHasHandle) ||
|
||||
(newOpening == Openings.TILTTURN_RIGHT && m_bHasHandle))
|
||||
{
|
||||
m_SelOpeningType = newOpening;
|
||||
m_Parent.ReqRefreshShape();
|
||||
m_Parent.RefreshHardwareOptionList();
|
||||
m_Parent.SetFirstHardware();
|
||||
m_Parent.ParentWindow.OnUpdatePreview(m_Parent.ParentWindow.sSerialized());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -302,18 +310,31 @@ namespace WebWindowComplex.Models
|
||||
|
||||
private List<IdNameStruct> m_OpeningTypeList = new List<IdNameStruct>
|
||||
{
|
||||
new IdNameStruct((int)Openings.TURNONLY_LEFT, ">"),
|
||||
new IdNameStruct((int)Openings.TURNONLY_RIGHT, "<"),
|
||||
new IdNameStruct((int)Openings.TILTTURN_LEFT, ">*"),
|
||||
new IdNameStruct((int)Openings.TILTTURN_RIGHT, "<*"),
|
||||
new IdNameStruct((int)Openings.TILTONLY_TOP, "˄"),
|
||||
new IdNameStruct((int)Openings.TILTONLY_BOTTOM, "˅"),
|
||||
new IdNameStruct((int)Openings.PIVOT, "◊"),
|
||||
new IdNameStruct((int)Openings.FIXED, "X"),
|
||||
new IdNameStruct((int)Openings.COMPLANARSLIDE_LEFT, "-→"),
|
||||
new IdNameStruct((int)Openings.COMPLANARSLIDE_RIGHT, "←-"),
|
||||
new IdNameStruct((int)Openings.LIFTSLIDE_LEFT, "┌→"),
|
||||
new IdNameStruct((int)Openings.LIFTSLIDE_RIGHT, "←┐")
|
||||
new IdNameStruct((int)Openings.TURNONLY_LEFT, "A bandiera sinistra"),
|
||||
new IdNameStruct((int)Openings.TURNONLY_RIGHT, "A bandiera destra"),
|
||||
new IdNameStruct((int)Openings.TILTTURN_LEFT, "Ad anta-ribalta sinistra"),
|
||||
new IdNameStruct((int)Openings.TILTTURN_RIGHT, "Ad anta-ribalta destra"),
|
||||
new IdNameStruct((int)Openings.TILTONLY_TOP, "Solo verso alto"),
|
||||
new IdNameStruct((int)Openings.TILTONLY_BOTTOM, "Solo verso basso"),
|
||||
new IdNameStruct((int)Openings.PIVOT, "Pivot"),
|
||||
new IdNameStruct((int)Openings.FIXED, "Fissa"),
|
||||
new IdNameStruct((int)Openings.COMPLANARSLIDE_LEFT, "Complanare sinistra"),
|
||||
new IdNameStruct((int)Openings.COMPLANARSLIDE_RIGHT, "Complanare destra"),
|
||||
new IdNameStruct((int)Openings.LIFTSLIDE_LEFT, "Scorrevole sinistra"),
|
||||
new IdNameStruct((int)Openings.LIFTSLIDE_RIGHT, "Scorrevole destra")
|
||||
|
||||
//new IdNameStruct((int)Openings.TURNONLY_LEFT, ">"),
|
||||
//new IdNameStruct((int)Openings.TURNONLY_RIGHT, "<"),
|
||||
//new IdNameStruct((int)Openings.TILTTURN_LEFT, ">*"),
|
||||
//new IdNameStruct((int)Openings.TILTTURN_RIGHT, "<*"),
|
||||
//new IdNameStruct((int)Openings.TILTONLY_TOP, "˄"),
|
||||
//new IdNameStruct((int)Openings.TILTONLY_BOTTOM, "˅"),
|
||||
//new IdNameStruct((int)Openings.PIVOT, "◊"),
|
||||
//new IdNameStruct((int)Openings.FIXED, "X"),
|
||||
//new IdNameStruct((int)Openings.COMPLANARSLIDE_LEFT, "-→"),
|
||||
//new IdNameStruct((int)Openings.COMPLANARSLIDE_RIGHT, "←-"),
|
||||
//new IdNameStruct((int)Openings.LIFTSLIDE_LEFT, "┌→"),
|
||||
//new IdNameStruct((int)Openings.LIFTSLIDE_RIGHT, "←┐")
|
||||
};
|
||||
|
||||
// reference
|
||||
|
||||
@@ -222,11 +222,13 @@ namespace WebWindowComplex.Models
|
||||
{
|
||||
get
|
||||
{
|
||||
return IdNameStruct.IndFromId((int)m_SelSplitShape, m_SplitShapeList);
|
||||
//return IdNameStruct.IndFromId((int)m_SelSplitShape, m_SplitShapeList);
|
||||
return (int)m_SelSplitShape;
|
||||
}
|
||||
set
|
||||
{
|
||||
m_SelSplitShape = (SplitShapes)IdNameStruct.IdFromInd(value, m_SplitShapeList);
|
||||
//m_SelSplitShape = (SplitShapes)IdNameStruct.IdFromInd(value, m_SplitShapeList);
|
||||
m_SelSplitShape = (SplitShapes)value;
|
||||
// Cancello elementi nello split e azzero quantità orizzontale e verticale
|
||||
AreaList.Clear();
|
||||
SetSplitQtyVert(0);
|
||||
@@ -316,7 +318,7 @@ namespace WebWindowComplex.Models
|
||||
{
|
||||
Split newSplit = new Split(newParentArea, ParentWindow);
|
||||
AddCounterGroup();
|
||||
newSplit.SetIdGroup(nCounterGroup);
|
||||
newSplit.SetGroupId(nCounterGroup);
|
||||
newSplit.SetSplitStartVert(bSplitStartVert);
|
||||
newSplit.SetSplitQtyVert(nSplitQtyVert);
|
||||
for (int i = 0; i < SplitVertList.Count; i++)
|
||||
@@ -363,17 +365,17 @@ namespace WebWindowComplex.Models
|
||||
{
|
||||
Split Split = new Split(Area, Area.ParentWindow);
|
||||
AddCounterGroup();
|
||||
Split.SetIdGroup(nCounterGroup);
|
||||
Split.SetGroupId(nCounterGroup);
|
||||
Split.SetAreaType(AreaTypes.SPLIT);
|
||||
Split.SetSplitShape(SplitShape, true);
|
||||
return Split;
|
||||
}
|
||||
|
||||
internal override JsonArea Serialize()
|
||||
internal override JsonArea Serialize(bool hideHw)
|
||||
{
|
||||
if (nCounterGroup < IdGroup)
|
||||
Area.nCounterGroup = IdGroup;
|
||||
JsonSplit JsonSplit = new JsonSplit(m_SelSplitShape, IdGroup);
|
||||
if (nCounterGroup < GroupId)
|
||||
Area.nCounterGroup = GroupId;
|
||||
JsonSplit JsonSplit = new JsonSplit(m_SelSplitShape, GroupId);
|
||||
//foreach (var SplitPosition in m_SplitPositionList)
|
||||
// JsonSplit.SplitPositionList.Add(SplitPosition.Serialize());
|
||||
JsonSplit.SplitStartVert = bSplitStartVert;
|
||||
@@ -382,7 +384,7 @@ namespace WebWindowComplex.Models
|
||||
foreach (var SplitHoriz in m_SplitHorizList)
|
||||
JsonSplit.SplitHorizList.Add(SplitHoriz.Serialize());
|
||||
foreach (var Area in AreaList)
|
||||
JsonSplit.AreaList.Add(Area.Serialize());
|
||||
JsonSplit.AreaList.Add(Area.Serialize(hideHw));
|
||||
return JsonSplit;
|
||||
}
|
||||
|
||||
@@ -445,7 +447,7 @@ namespace WebWindowComplex.Models
|
||||
|
||||
internal void SetSplitStartVert(bool SplitStartVert)
|
||||
{
|
||||
bSplitStartVert = SplitStartVert;
|
||||
m_bSplitStartVert = SplitStartVert;
|
||||
}
|
||||
|
||||
#endregion Internal Methods
|
||||
|
||||
@@ -19,7 +19,7 @@ namespace WebWindowComplex.Models
|
||||
{
|
||||
Splitted newSplitted = new Splitted(newParentArea, ParentWindow);
|
||||
AddCounterGroup();
|
||||
newSplitted.SetIdGroup(nCounterGroup);
|
||||
newSplitted.SetGroupId(nCounterGroup);
|
||||
newSplitted.SetAreaType(AreaType);
|
||||
foreach (var item in AreaList)
|
||||
{
|
||||
@@ -37,18 +37,18 @@ namespace WebWindowComplex.Models
|
||||
{
|
||||
Splitted Splitted = new Splitted(ParentArea, ParentArea.ParentWindow);
|
||||
AddCounterGroup();
|
||||
Splitted.SetIdGroup(nCounterGroup);
|
||||
Splitted.SetGroupId(nCounterGroup);
|
||||
Splitted.SetAreaType(AreaTypes.SPLITTED);
|
||||
return Splitted;
|
||||
}
|
||||
|
||||
internal override JsonArea Serialize()
|
||||
internal override JsonArea Serialize(bool hideHw)
|
||||
{
|
||||
if (nCounterGroup < IdGroup)
|
||||
Area.nCounterGroup = IdGroup;
|
||||
JsonSplitted JsonSplitted = new JsonSplitted(IdGroup);
|
||||
if (nCounterGroup < GroupId)
|
||||
Area.nCounterGroup = GroupId;
|
||||
JsonSplitted JsonSplitted = new JsonSplitted(GroupId);
|
||||
foreach (var Area in AreaList)
|
||||
JsonSplitted.AreaList.Add(Area.Serialize());
|
||||
JsonSplitted.AreaList.Add(Area.Serialize(hideHw));
|
||||
return JsonSplitted;
|
||||
}
|
||||
|
||||
|
||||
@@ -20,6 +20,8 @@ namespace WebWindowComplex.Models
|
||||
#region Public Events
|
||||
|
||||
public event EventHandler<OnPreviewEventArgs> OnPreview = delegate { };
|
||||
public event EventHandler<OnReqShapeEventArgs> OnReqShape = delegate { };
|
||||
public event EventHandler<OnReqHwOptEventArgs> OnReqHwOption = delegate { };
|
||||
|
||||
#endregion Public Events
|
||||
|
||||
@@ -103,17 +105,42 @@ namespace WebWindowComplex.Models
|
||||
}
|
||||
}
|
||||
|
||||
internal JsonWindow Serialize()
|
||||
internal void OnReqShapePreview(string sJwd, int groupId)
|
||||
{
|
||||
OnReqShapeEventArgs e = new OnReqShapeEventArgs(sJwd, groupId);
|
||||
EventHandler<OnReqShapeEventArgs> handler = OnReqShape;
|
||||
if (handler != null)
|
||||
{
|
||||
handler(this, e);
|
||||
}
|
||||
}
|
||||
|
||||
internal void OnReqHwOptionPreview(string sJwd, int groupId)
|
||||
{
|
||||
OnReqHwOptEventArgs e = new OnReqHwOptEventArgs(sJwd, groupId);
|
||||
EventHandler<OnReqHwOptEventArgs> handler = OnReqHwOption;
|
||||
if (handler != null)
|
||||
{
|
||||
handler(this, e);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Serializzazione dell'oggetto windows
|
||||
/// </summary>
|
||||
/// <param name="hideHw">Hide hw x preview SVG veloci</param>
|
||||
/// <returns></returns>
|
||||
internal JsonWindow Serialize(bool hideHw = false)
|
||||
{
|
||||
JsonWindow JsonWindow = new JsonWindow(sProfilePath, sMaterial, sColorMaterial, sGlass);
|
||||
foreach (var Area in AreaList)
|
||||
JsonWindow.AreaList.Add(Area.Serialize());
|
||||
JsonWindow.AreaList.Add(Area.Serialize(hideHw));
|
||||
return JsonWindow;
|
||||
}
|
||||
|
||||
internal string sSerialized()
|
||||
internal string sSerialized(bool hideHw = false)
|
||||
{
|
||||
return JsonConvert.SerializeObject(Serialize(), Formatting.Indented);
|
||||
return JsonConvert.SerializeObject(Serialize(hideHw), Formatting.Indented);
|
||||
}
|
||||
|
||||
#endregion Internal Methods
|
||||
|
||||
@@ -11,7 +11,7 @@ namespace WebWindowComplex
|
||||
private ParametriOpzioniParametri[] itemsField;
|
||||
|
||||
/// <remarks/>
|
||||
//[System.Xml.Serialization.XmlElementAttribute("Parametri", Form = System.Xml.Schema.XmlSchemaForm.Unqualified)]
|
||||
[System.Xml.Serialization.XmlElementAttribute("Parametri", Form = System.Xml.Schema.XmlSchemaForm.Unqualified)]
|
||||
public ParametriOpzioniParametri[] Items
|
||||
{
|
||||
get
|
||||
@@ -42,7 +42,7 @@ namespace WebWindowComplex
|
||||
private ParametriOpzioniParametriOpzioni[] opzioniField;
|
||||
|
||||
/// <remarks/>
|
||||
//[System.Xml.Serialization.XmlElementAttribute(Form = System.Xml.Schema.XmlSchemaForm.Unqualified)]
|
||||
[System.Xml.Serialization.XmlElementAttribute(Form = System.Xml.Schema.XmlSchemaForm.Unqualified)]
|
||||
public string NomeParametro
|
||||
{
|
||||
get
|
||||
@@ -56,7 +56,7 @@ namespace WebWindowComplex
|
||||
}
|
||||
|
||||
/// <remarks/>
|
||||
//[System.Xml.Serialization.XmlElementAttribute(Form = System.Xml.Schema.XmlSchemaForm.Unqualified)]
|
||||
[System.Xml.Serialization.XmlElementAttribute(Form = System.Xml.Schema.XmlSchemaForm.Unqualified)]
|
||||
public string DescrizioneParametro
|
||||
{
|
||||
get
|
||||
@@ -70,7 +70,7 @@ namespace WebWindowComplex
|
||||
}
|
||||
|
||||
/// <remarks/>
|
||||
//[System.Xml.Serialization.XmlElementAttribute(Form = System.Xml.Schema.XmlSchemaForm.Unqualified)]
|
||||
[System.Xml.Serialization.XmlElementAttribute(Form = System.Xml.Schema.XmlSchemaForm.Unqualified)]
|
||||
public string ValoreCorrente
|
||||
{
|
||||
get
|
||||
@@ -84,7 +84,7 @@ namespace WebWindowComplex
|
||||
}
|
||||
|
||||
/// <remarks/>
|
||||
//[System.Xml.Serialization.XmlElementAttribute(Form = System.Xml.Schema.XmlSchemaForm.Unqualified)]
|
||||
[System.Xml.Serialization.XmlElementAttribute(Form = System.Xml.Schema.XmlSchemaForm.Unqualified)]
|
||||
public string Tipo
|
||||
{
|
||||
get
|
||||
@@ -98,7 +98,7 @@ namespace WebWindowComplex
|
||||
}
|
||||
|
||||
/// <remarks/>
|
||||
//[System.Xml.Serialization.XmlElementAttribute(Form = System.Xml.Schema.XmlSchemaForm.Unqualified)]
|
||||
[System.Xml.Serialization.XmlElementAttribute(Form = System.Xml.Schema.XmlSchemaForm.Unqualified)]
|
||||
public string Visible
|
||||
{
|
||||
get
|
||||
@@ -112,7 +112,7 @@ namespace WebWindowComplex
|
||||
}
|
||||
|
||||
/// <remarks/>
|
||||
//[System.Xml.Serialization.XmlElementAttribute(Form = System.Xml.Schema.XmlSchemaForm.Unqualified)]
|
||||
[System.Xml.Serialization.XmlElementAttribute(Form = System.Xml.Schema.XmlSchemaForm.Unqualified)]
|
||||
public string RicalcolaSeModificato
|
||||
{
|
||||
get
|
||||
@@ -126,7 +126,7 @@ namespace WebWindowComplex
|
||||
}
|
||||
|
||||
/// <remarks/>
|
||||
//[System.Xml.Serialization.XmlElementAttribute("Opzioni", Form = System.Xml.Schema.XmlSchemaForm.Unqualified)]
|
||||
[System.Xml.Serialization.XmlElementAttribute("Opzioni", Form = System.Xml.Schema.XmlSchemaForm.Unqualified)]
|
||||
public ParametriOpzioniParametriOpzioni[] Opzioni
|
||||
{
|
||||
get
|
||||
@@ -149,7 +149,7 @@ namespace WebWindowComplex
|
||||
private string valoreField;
|
||||
|
||||
/// <remarks/>
|
||||
//[System.Xml.Serialization.XmlElementAttribute(Form = System.Xml.Schema.XmlSchemaForm.Unqualified)]
|
||||
[System.Xml.Serialization.XmlElementAttribute(Form = System.Xml.Schema.XmlSchemaForm.Unqualified)]
|
||||
public string NomeParametro
|
||||
{
|
||||
get
|
||||
@@ -163,7 +163,7 @@ namespace WebWindowComplex
|
||||
}
|
||||
|
||||
/// <remarks/>
|
||||
//[System.Xml.Serialization.XmlElementAttribute(Form = System.Xml.Schema.XmlSchemaForm.Unqualified)]
|
||||
[System.Xml.Serialization.XmlElementAttribute(Form = System.Xml.Schema.XmlSchemaForm.Unqualified)]
|
||||
public string DescrizioneOpzione
|
||||
{
|
||||
get
|
||||
@@ -177,7 +177,7 @@ namespace WebWindowComplex
|
||||
}
|
||||
|
||||
/// <remarks/>
|
||||
//[System.Xml.Serialization.XmlElementAttribute(Form = System.Xml.Schema.XmlSchemaForm.Unqualified)]
|
||||
[System.Xml.Serialization.XmlElementAttribute(Form = System.Xml.Schema.XmlSchemaForm.Unqualified)]
|
||||
public string Valore
|
||||
{
|
||||
get
|
||||
|
||||
@@ -116,7 +116,10 @@
|
||||
}
|
||||
@if (currStep == CompileStep.Tree)
|
||||
{
|
||||
<CardTree ItemTableList="m_ItemTableList" maxCol="m_maxCol" EC_NextStep="NextStepArgs"></CardTree>
|
||||
<CardTree ItemTableList="m_ItemTableList"
|
||||
maxCol="m_maxCol"
|
||||
EC_NextStep="NextStepArgs">
|
||||
</CardTree>
|
||||
}
|
||||
else if (currStep == CompileStep.Frame)
|
||||
{
|
||||
@@ -124,7 +127,16 @@
|
||||
{
|
||||
m_PreviousWindow = m_CurrWindow;
|
||||
}
|
||||
<CardFrame FrameWindow="m_Frame" SashList="m_SashList" SplitList="m_SplitList" EC_ChangeAllJoints="ChangeAllJoints" EC_AddSash="() => AddSashToFrame(FrameWindow)" EC_AddSplit="() => FrameWindow.AddSplit(FrameWindow)" EC_ReqClose="ReturnTree" EC_UpdateFrame="UpdateFrame"></CardFrame>
|
||||
<CardFrame FrameWindow="m_Frame"
|
||||
SashList="m_SashList"
|
||||
SplitList="m_SplitList"
|
||||
EC_ChangeAllJoints="ChangeAllJoints"
|
||||
EC_AddSash="() => AddSashToFrame(FrameWindow!)"
|
||||
EC_AddSplit="() => AddSplitToFrame(FrameWindow!)"
|
||||
EC_ReqClose="ReturnTree"
|
||||
EC_UpdateShape="UpdateShape"
|
||||
EC_UpdateFrame="UpdateFrame">
|
||||
</CardFrame>
|
||||
}
|
||||
else if (currStep == CompileStep.Split)
|
||||
{
|
||||
@@ -134,7 +146,15 @@
|
||||
}
|
||||
else
|
||||
{
|
||||
<CardSplit SashList="m_SashList" SplitList="m_SplitList" CurrIndex="currSplit" CurrItem="SplitList[currSplit]" EC_SwapTwoAree="SwapTwoAree" EC_RemoveArea="RemoveArea" EC_ChangeStartVert="changeStartVert" EC_ReqClose="ReturnTree"></CardSplit>
|
||||
<CardSplit SashList="m_SashList"
|
||||
SplitList="m_SplitList"
|
||||
CurrIndex="currSplit"
|
||||
CurrItem="SplitList[currSplit]"
|
||||
EC_SwapTwoAree="SwapTwoAree"
|
||||
EC_RemoveArea="RemoveArea"
|
||||
EC_ChangeStartVert="changeStartVert"
|
||||
EC_ReqClose="ReturnTree">
|
||||
</CardSplit>
|
||||
}
|
||||
}
|
||||
else if (currStep == CompileStep.Sash)
|
||||
@@ -154,6 +174,7 @@
|
||||
EC_RemoveArea="RemoveArea"
|
||||
EC_UpdateSash="UpdateSash"
|
||||
EC_UpdateSashHardware="UpdateHwOptions"
|
||||
EC_CallFirstHwOpt="CallFirstHwOpt"
|
||||
EC_ReqClose="ReturnTree">
|
||||
</CardSashGroup>
|
||||
}
|
||||
@@ -166,12 +187,30 @@
|
||||
}
|
||||
else
|
||||
{
|
||||
<CardFill CurrIndex="currFill" CurrItem="FillList[currFill]" FillList="m_FillList" SashList="m_SashList" SplittedList="m_SplittedList" EC_ChangeAllType="ChangeAllFill" EC_ChangeType="ChangeOneFill" EC_CopySash="CopySash" EC_ReqClose="ReturnTree"></CardFill>
|
||||
<CardFill CurrIndex="currFill"
|
||||
CurrItem="FillList[currFill]"
|
||||
FillList="m_FillList"
|
||||
SashList="m_SashList"
|
||||
SplittedList="m_SplittedList"
|
||||
EC_ChangeAllType="ChangeAllFill"
|
||||
EC_ChangeType="ChangeOneFill"
|
||||
EC_AddSash="AddSashIntoSplit"
|
||||
EC_CopySash="CopySash"
|
||||
EC_ReqClose="ReturnTree">
|
||||
</CardFill>
|
||||
}
|
||||
}
|
||||
else if (currStep == CompileStep.General)
|
||||
{
|
||||
<General CurrWindow="@m_CurrWindow" ListPayload="ListPayload" ListWarnings="listWarnings" EC_SelColor="SelectColor" EC_SelGlass="SelectGlass" EC_SelWindMat="SelectMat" EC_SelProfile="SelectProfile" EC_ReqClose="ReturnTree"></General>
|
||||
<General CurrWindow="@m_CurrWindow"
|
||||
ListPayload="ListPayload"
|
||||
ListWarnings="listWarnings"
|
||||
EC_SelColor="SelectColor"
|
||||
EC_SelGlass="SelectGlass"
|
||||
EC_SelWindMat="SelectMat"
|
||||
EC_SelProfile="SelectProfile"
|
||||
EC_ReqClose="ReturnTree">
|
||||
</General>
|
||||
}
|
||||
</div>
|
||||
</div>
|
||||
@@ -198,11 +237,4 @@
|
||||
}
|
||||
}
|
||||
}
|
||||
</div>
|
||||
|
||||
@if (bError)
|
||||
{
|
||||
<div class="alert alert-danger" role="alert">
|
||||
Aggiunta finestra non possibile.
|
||||
</div>
|
||||
}
|
||||
</div>
|
||||
+278
-123
@@ -27,6 +27,12 @@ namespace WebWindowComplex
|
||||
[Parameter]
|
||||
public SelectPayload? CurrSelection { get; set; } = null;
|
||||
|
||||
/// <summary>
|
||||
/// Richiesta update da JWD (SVG, calcoli vari...)
|
||||
/// </summary>
|
||||
[Parameter]
|
||||
public EventCallback<Dictionary<string, string>> EC_DoUpdate { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Richiesta chiusura JWD (+ refresh)
|
||||
/// se torna true --> richiesta salvataggio
|
||||
@@ -41,12 +47,6 @@ namespace WebWindowComplex
|
||||
[Parameter]
|
||||
public EventCallback<TemplateSelectDTO> EC_OnSelectedTemplate { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Richiesta update da JWD (SVG, calcoli vari...)
|
||||
/// </summary>
|
||||
[Parameter]
|
||||
public EventCallback<Dictionary<string, string>> EC_DoUpdate { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Sollevo evento errore validazione con una lista di errori rilevati
|
||||
/// </summary>
|
||||
@@ -74,10 +74,37 @@ namespace WebWindowComplex
|
||||
if (m_CurrWindow != null)
|
||||
{
|
||||
m_CurrWindow.OnPreview -= M_CurrWindow_OnPreview;
|
||||
m_CurrWindow.OnReqHwOption -= M_CurrWindow_OnHwOption;
|
||||
m_CurrWindow.OnReqShape -= M_CurrWindow_OnShape;
|
||||
m_CurrWindow = null;
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Cerca e aggiorna la sash
|
||||
/// </summary>
|
||||
/// <param name="currentArea"> area corrente che si sta valutando </param>
|
||||
/// <param name="idSearch"> id della sash che si sta cercando </param>
|
||||
/// <param name="newSash"> nuova sash </param>
|
||||
/// <returns></returns>
|
||||
public Area SearchSash(Area currentArea, int idSearch, Sash newSash)
|
||||
{
|
||||
if (currentArea.GroupId == idSearch && currentArea.AreaType.Equals(AreaTypes.SASH))
|
||||
{
|
||||
currentArea = newSash;
|
||||
return currentArea;
|
||||
}
|
||||
foreach (Area child in currentArea.AreaList)
|
||||
{
|
||||
Area found = SearchSash(child, idSearch, newSash);
|
||||
if (found != null)
|
||||
{
|
||||
return found;
|
||||
}
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
#endregion Public Methods
|
||||
|
||||
#region Protected Fields
|
||||
@@ -107,8 +134,6 @@ namespace WebWindowComplex
|
||||
get => m_ItemTableList;
|
||||
}
|
||||
|
||||
protected string m_SelSVG { get; set; } = "";
|
||||
|
||||
/// <summary>
|
||||
/// Componente SVG da mostrare
|
||||
/// </summary>
|
||||
@@ -130,10 +155,8 @@ namespace WebWindowComplex
|
||||
protected string SelColorMaterial { get; set; } = "";
|
||||
protected string SelFamilyHardware { get; set; } = "";
|
||||
protected string SelGlass { get; set; } = "";
|
||||
protected string SelProfile { get; set; } = "";
|
||||
|
||||
protected string SelMaterial { get; set; } = ""!;
|
||||
|
||||
protected string SelProfile { get; set; } = "";
|
||||
protected TemplateSelectDTO? SelTemplateDTO { get; set; } = null;
|
||||
|
||||
protected List<Split> SplitList
|
||||
@@ -164,7 +187,7 @@ namespace WebWindowComplex
|
||||
{
|
||||
if (s.Equals(currSash))
|
||||
{
|
||||
// Per ogni anta della Sash setto bHasHandle
|
||||
// Per ogni anta della Sash setto HasHandle
|
||||
foreach (SashDimension item in s.SashList)
|
||||
{
|
||||
if (item.Equals(sashDim))
|
||||
@@ -178,15 +201,19 @@ namespace WebWindowComplex
|
||||
switch (item.SelOpeningType)
|
||||
{
|
||||
case Openings.TILTTURN_LEFT:
|
||||
item.SetOpeningType(Openings.TURNONLY_LEFT);
|
||||
break;
|
||||
|
||||
{
|
||||
item.SetOpeningType(Openings.TURNONLY_LEFT);
|
||||
break;
|
||||
}
|
||||
case Openings.TILTTURN_RIGHT:
|
||||
item.SetOpeningType(Openings.TURNONLY_RIGHT);
|
||||
break;
|
||||
|
||||
{
|
||||
item.SetOpeningType(Openings.TURNONLY_RIGHT);
|
||||
break;
|
||||
}
|
||||
default:
|
||||
break;
|
||||
{
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
item.bHasHandle = false;
|
||||
@@ -194,6 +221,9 @@ namespace WebWindowComplex
|
||||
}
|
||||
}
|
||||
}
|
||||
currSash.RefreshHardwareList();
|
||||
currSash.SetFirstHardware();
|
||||
_ = DoPreviewSvg();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
@@ -431,23 +461,27 @@ namespace WebWindowComplex
|
||||
/// <summary>
|
||||
/// Richiesta update anteprima SVG
|
||||
/// </summary>
|
||||
/// <param name="doForce">Forza richiesta anche con JWD invariato</param>
|
||||
/// <param name="hideHw">Nasconde hw (def. false) poiché senza è piu rapido</param>
|
||||
/// <returns></returns>
|
||||
protected async Task DoPreviewSvg()
|
||||
protected async Task DoPreviewSvg(bool doForce = false, bool hideHw = false)
|
||||
{
|
||||
if (m_CurrWindow != null)
|
||||
{
|
||||
#if DEBUG
|
||||
var CurrJwd = JsonConvert.SerializeObject(m_CurrWindow.Serialize(), Formatting.Indented);
|
||||
var CurrJwd = JsonConvert.SerializeObject(m_CurrWindow.Serialize(false), Formatting.Indented);
|
||||
var CalcJwd = JsonConvert.SerializeObject(m_CurrWindow.Serialize(hideHw), Formatting.Indented);
|
||||
#else
|
||||
var CurrJwd = JsonConvert.SerializeObject(m_CurrWindow.Serialize());
|
||||
var CurrJwd = JsonConvert.SerializeObject(m_CurrWindow.Serialize(false));
|
||||
var CalcJwd = JsonConvert.SerializeObject(m_CurrWindow.Serialize(hideHw));
|
||||
#endif
|
||||
// verifico variazione JWD
|
||||
if (!prevJwd.Equals(CurrJwd))
|
||||
if (!prevJwd.Equals(CurrJwd) || doForce)
|
||||
{
|
||||
prevJwd = CurrJwd;
|
||||
Dictionary<string, string> Args = new Dictionary<string, string>();
|
||||
Args.Add("Mode", $"{(int)Enums.QuestionModes.PREVIEW}");
|
||||
Args.Add("Jwd", CurrJwd);
|
||||
Args.Add("Jwd", CalcJwd);
|
||||
await EC_DoUpdate.InvokeAsync(Args);
|
||||
}
|
||||
}
|
||||
@@ -456,8 +490,9 @@ namespace WebWindowComplex
|
||||
/// <summary>
|
||||
/// Richiesta calcolo Options HW da JWD
|
||||
/// </summary>
|
||||
/// <param name="groupIdList">Lista degli ID numerici dei gruppi da valutare</param>
|
||||
/// <returns></returns>
|
||||
protected async Task DoReqOptHardware()
|
||||
protected async Task DoReqOptHardware(List<int> groupIdList, bool isFirst = false)
|
||||
{
|
||||
if (m_CurrWindow != null)
|
||||
{
|
||||
@@ -467,13 +502,15 @@ namespace WebWindowComplex
|
||||
var CurrJwd = JsonConvert.SerializeObject(m_CurrWindow.Serialize());
|
||||
#endif
|
||||
// verifico variazione JWD
|
||||
if (!prevJwd.Equals(CurrJwd))
|
||||
if (!prevJwd.Equals(CurrJwd) || isFirst)
|
||||
{
|
||||
prevJwd = CurrJwd;
|
||||
Dictionary<string, string> Args = new Dictionary<string, string>();
|
||||
Args.Add("Mode", $"{(int)Enums.QuestionModes.HARDWARE}");
|
||||
Args.Add("SubMode", $"{(int)Enums.QuestionHwSubModes.HARDWAREOPTIONS}");
|
||||
Args.Add("Jwd", CurrJwd);
|
||||
string listGroupId = JsonConvert.SerializeObject(groupIdList);
|
||||
Args.Add("GroupId", listGroupId);
|
||||
await EC_DoUpdate.InvokeAsync(Args);
|
||||
}
|
||||
}
|
||||
@@ -482,8 +519,9 @@ namespace WebWindowComplex
|
||||
/// <summary>
|
||||
/// Richiesta Shape compatibile da JWD
|
||||
/// </summary>
|
||||
/// <param name="groupIdList">Lista degli ID numerici dei gruppi da valutare</param>
|
||||
/// <returns></returns>
|
||||
protected async Task DoReqShape()
|
||||
protected async Task DoReqShape(List<int> groupIdList)
|
||||
{
|
||||
if (m_CurrWindow != null)
|
||||
{
|
||||
@@ -500,6 +538,8 @@ namespace WebWindowComplex
|
||||
Args.Add("Mode", $"{(int)Enums.QuestionModes.HARDWARE}");
|
||||
Args.Add("SubMode", $"{(int)Enums.QuestionHwSubModes.SASHSHAPE}");
|
||||
Args.Add("Jwd", CurrJwd);
|
||||
string listGroupId = JsonConvert.SerializeObject(groupIdList);
|
||||
Args.Add("GroupId", listGroupId);
|
||||
await EC_DoUpdate.InvokeAsync(Args);
|
||||
}
|
||||
}
|
||||
@@ -537,7 +577,7 @@ namespace WebWindowComplex
|
||||
|
||||
protected override void OnAfterRender(bool firstRender)
|
||||
{
|
||||
isLoading = false;
|
||||
isRendered = true;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
@@ -547,13 +587,13 @@ namespace WebWindowComplex
|
||||
{
|
||||
// reset editLock...
|
||||
editLock = false;
|
||||
// reset variabile errori
|
||||
bError = false;
|
||||
listErrPre = new Dictionary<string, string>();
|
||||
listErrLink = new Dictionary<string, string>();
|
||||
listWarnings = new Dictionary<string, string>();
|
||||
}
|
||||
|
||||
private bool firstDisplay = true;
|
||||
|
||||
/// <summary>
|
||||
/// Gestione update post ricezione parametri da controllo chiamante
|
||||
/// </summary>
|
||||
@@ -563,81 +603,88 @@ namespace WebWindowComplex
|
||||
// SOLO SE sono presenti...
|
||||
if (ListPayload.IsPopulated() && LiveData.IsValid())
|
||||
{
|
||||
bool updateSvg = false;
|
||||
bool updRequested = false;
|
||||
listErrPre = new Dictionary<string, string>();
|
||||
listErrLink = new Dictionary<string, string>();
|
||||
listWarnings = new Dictionary<string, string>();
|
||||
// controllo elenchi BasePayload siano validi...
|
||||
if (ListPayload.IsValid())
|
||||
{
|
||||
// controllo sia popolato anche per la componente LIVE
|
||||
if (LiveData.IsValid())
|
||||
// SOLO SE modificato live data...
|
||||
if (prevLiveData == null || !prevLiveData.Equals(LiveData))
|
||||
{
|
||||
// SOLO SE modificato live data...
|
||||
if (prevLiveData == null || !prevLiveData.Equals(LiveData))
|
||||
updRequested = true;
|
||||
prevLiveData = new LivePayload()
|
||||
{
|
||||
prevLiveData = new LivePayload()
|
||||
{
|
||||
CurrJwd = LiveData.CurrJwd,
|
||||
OptionsXml = LiveData.OptionsXml,
|
||||
Shape = LiveData.Shape,
|
||||
SvgPreview = LiveData.SvgPreview
|
||||
};
|
||||
m_SelSVG = LiveData.SvgPreview;
|
||||
// Aggiornati parametri di ingresso selezionati
|
||||
UpdateSelParameter();
|
||||
JsonWindow WindowFromJson = new JsonWindow("", "", "", "");
|
||||
// provo a deserializzare
|
||||
try
|
||||
{
|
||||
WindowFromJson = JsonConvert.DeserializeObject<JsonWindow>(LiveData.CurrJwd, new PolymorphicJsonConverter()) ?? new JsonWindow("", "", "", "");
|
||||
setCurrWindow(WindowFromJson);
|
||||
//SOLO SE non sono in edit...
|
||||
if (!editLock)
|
||||
{
|
||||
currStep = CompileStep.Tree;
|
||||
}
|
||||
}
|
||||
// altrimenti errore!
|
||||
catch (Exception ex)
|
||||
{
|
||||
listErrLink.Add("Window", $"Deserializing Error:{Environment.NewLine}{ex}");
|
||||
}
|
||||
updateSvg = true;
|
||||
}
|
||||
checkWarnings();
|
||||
}
|
||||
else if (CurrSelection != null && CurrSelection.Template != null)
|
||||
{
|
||||
// Se viene passato il template selezionato oppure se non è ancora stato selezionato un template oppure se si cambia template di selezione
|
||||
if (m_SelTemplate == null || (m_SelTemplate != null && CurrSelection.Template.nIndex != m_SelTemplate.nIndex) && !string.IsNullOrEmpty(CurrSelection.Template.JWD))
|
||||
CurrJwd = LiveData.CurrJwd,
|
||||
DictOptionsXml = LiveData.DictOptionsXml,
|
||||
DictShape = LiveData.DictShape,
|
||||
SvgPreview = LiveData.SvgPreview
|
||||
};
|
||||
|
||||
// Aggiornati parametri di ingresso selezionati
|
||||
UpdateSelParameter();
|
||||
JsonWindow WindowFromJson = new JsonWindow("", "", "", "");
|
||||
// provo a deserializzare
|
||||
try
|
||||
{
|
||||
m_SelTemplate = CurrSelection.Template;
|
||||
// Aggiornamento parametri di ingresso selezionati
|
||||
UpdateSelParameter();
|
||||
JsonWindow WindowFromJson = new JsonWindow("", "", "", "");
|
||||
// provo a deserializzare
|
||||
try
|
||||
WindowFromJson = JsonConvert.DeserializeObject<JsonWindow>(LiveData.CurrJwd, new PolymorphicJsonConverter()) ?? new JsonWindow("", "", "", "");
|
||||
setCurrWindow(WindowFromJson);
|
||||
//SOLO SE non sono in edit...
|
||||
if (!editLock)
|
||||
{
|
||||
WindowFromJson = JsonConvert.DeserializeObject<JsonWindow>(m_SelTemplate.JWD, new PolymorphicJsonConverter()) ?? new JsonWindow("", "", "", "");
|
||||
setCurrWindow(WindowFromJson);
|
||||
currStep = CompileStep.Template;
|
||||
}
|
||||
// altrimenti errore!
|
||||
catch (Exception ex)
|
||||
{
|
||||
listErrLink.Add("Window", $"Deserializing Error:{Environment.NewLine}{ex}");
|
||||
currStep = CompileStep.Tree;
|
||||
}
|
||||
}
|
||||
updateSvg = true;
|
||||
// altrimenti errore!
|
||||
catch (Exception ex)
|
||||
{
|
||||
listErrLink.Add("Window", $"Deserializing Error:{Environment.NewLine}{ex}");
|
||||
}
|
||||
}
|
||||
checkWarnings();
|
||||
if (SashList.Count > 0)
|
||||
{
|
||||
currAnta = 0;
|
||||
}
|
||||
if (updateSvg)
|
||||
if (updRequested)
|
||||
{
|
||||
await DoPreviewSvg();
|
||||
|
||||
// se mancasse dizionario forme chiamo quello
|
||||
if (LiveData.DictShape.Count == 0)
|
||||
{
|
||||
if (firstDisplay && isRendered)
|
||||
{
|
||||
firstDisplay = false;
|
||||
// preview SVG senza HW
|
||||
await DoPreviewSvg(true, true);
|
||||
}
|
||||
List<int> reqList = SashList.Select(x => x.GroupId).ToList();
|
||||
if (reqList.Count > 0)
|
||||
{
|
||||
await DoReqShape(reqList);
|
||||
}
|
||||
}
|
||||
//// se mancasse xml opzioni hardware lo chiedo
|
||||
//else if (LiveData.DictOptionsXml.Count == 0)
|
||||
//{
|
||||
// if (firstDisplay && isRendered)
|
||||
// {
|
||||
// firstDisplay = false;
|
||||
// // preview SVG senza HW
|
||||
// await DoPreviewSvg(true, true);
|
||||
// }
|
||||
// List<int> reqList = SashList.Select(x => x.GroupId).ToList();
|
||||
// if (reqList.Count > 0)
|
||||
// {
|
||||
// await DoReqOptHardware(reqList);
|
||||
// }
|
||||
//}
|
||||
else
|
||||
{
|
||||
// chiedo SVG
|
||||
await DoPreviewSvg(true);
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
@@ -648,15 +695,23 @@ namespace WebWindowComplex
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Metodo per costruire oggetti della Window
|
||||
/// </summary>
|
||||
/// <param name="WindowFromJson"></param>
|
||||
protected void setCurrWindow(JsonWindow WindowFromJson)
|
||||
{
|
||||
if (m_CurrWindow != null)
|
||||
{
|
||||
m_CurrWindow.OnPreview -= M_CurrWindow_OnPreview;
|
||||
m_CurrWindow.OnReqHwOption -= M_CurrWindow_OnHwOption;
|
||||
m_CurrWindow.OnReqShape -= M_CurrWindow_OnShape;
|
||||
m_CurrWindow = null;
|
||||
}
|
||||
m_CurrWindow = WindowFromJson.Deserialize();
|
||||
m_CurrWindow.OnPreview += M_CurrWindow_OnPreview;
|
||||
m_CurrWindow.OnReqHwOption += M_CurrWindow_OnHwOption;
|
||||
m_CurrWindow.OnReqShape += M_CurrWindow_OnShape;
|
||||
// Recupero dimensioni Frame e Joint del frame della finestra precedente
|
||||
if (m_PreviousWindow != null)
|
||||
{
|
||||
@@ -672,6 +727,32 @@ namespace WebWindowComplex
|
||||
}
|
||||
if (SashList.Count > 0)
|
||||
currAnta = 0;
|
||||
// se ho i dizionari delle forme le aggiungo
|
||||
if (LiveData.DictShape.Count > 0)
|
||||
{
|
||||
// Inserisco le forme ricevuto nei sash group
|
||||
foreach (var item in LiveData.DictShape)
|
||||
{
|
||||
//if (LiveData.DictShape.ContainsKey(item.GroupId))
|
||||
//{
|
||||
// item.UpdateShape(LiveData.DictOptionsXml[item.GroupId]);
|
||||
//}
|
||||
Sash sashFromGroupId = SashList.Where(x => x.GroupId == item.Key).ToList().First();
|
||||
sashFromGroupId.SashShape = item.Value;
|
||||
sashFromGroupId.UpdateShape(item.Value);
|
||||
}
|
||||
}
|
||||
// se ho le opzioni hw le aggiungo
|
||||
if (LiveData.DictOptionsXml.Count > 0)
|
||||
{
|
||||
foreach (var item in SashList)
|
||||
{
|
||||
if (LiveData.DictOptionsXml.ContainsKey(item.GroupId))
|
||||
{
|
||||
item.SetHardwareOption(LiveData.DictOptionsXml[item.GroupId]);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
@@ -711,8 +792,6 @@ namespace WebWindowComplex
|
||||
|
||||
#region Private Fields
|
||||
|
||||
private bool bError = false;
|
||||
|
||||
private int currAnta = 0;
|
||||
|
||||
private int currFill = -1;
|
||||
@@ -729,6 +808,7 @@ namespace WebWindowComplex
|
||||
/// Booleana fase loading
|
||||
/// </summary>
|
||||
private bool isLoading = false;
|
||||
private bool isRendered = false;
|
||||
|
||||
/// <summary>
|
||||
/// ELenco errori di coerenza/link dati (vanno risolti per disegnare/procedere)
|
||||
@@ -782,9 +862,43 @@ namespace WebWindowComplex
|
||||
|
||||
#region Private Methods
|
||||
|
||||
/// <summary>
|
||||
/// Metodo per aggiungere una Sash
|
||||
/// </summary>
|
||||
/// <param name="Args"></param>
|
||||
/// <returns></returns>
|
||||
private void AddSashIntoSplit(DataAreaSplitted Args)
|
||||
{
|
||||
Splitted currSplitted = Args.splitted;
|
||||
currSplitted.AddFirstSash();
|
||||
// ricalcolo liste
|
||||
UpdateLists();
|
||||
// richiedo update shape
|
||||
List<int> reqList = SashList.Select(x => x.GroupId).ToList();
|
||||
_ = DoReqShape(reqList);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Metodo per aggiungere una sash di default al Frame
|
||||
/// </summary>
|
||||
/// <param name="f"></param>
|
||||
private void AddSashToFrame(Frame f)
|
||||
{
|
||||
bError = f.AddFirstSash();
|
||||
f.AddFirstSash();
|
||||
// ricalcolo liste
|
||||
UpdateLists();
|
||||
// richiedo update shape
|
||||
List<int> reqList = SashList.Select(x => x.GroupId).ToList();
|
||||
_ = DoReqShape(reqList);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Metodo per aggiungere uno split di default al Frame
|
||||
/// </summary>
|
||||
/// <param name="f"></param>
|
||||
private void AddSplitToFrame(Frame f)
|
||||
{
|
||||
f.AddSplit();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
@@ -829,7 +943,7 @@ namespace WebWindowComplex
|
||||
{
|
||||
foreach (Fill currFill in FillList)
|
||||
{
|
||||
currFill.SetFillType(type);
|
||||
currFill.SetSelFillType(type);
|
||||
}
|
||||
await DoPreviewSvg();
|
||||
}
|
||||
@@ -869,7 +983,7 @@ namespace WebWindowComplex
|
||||
private async Task ChangeOneFill(FillTypes type)
|
||||
{
|
||||
Fill fillChange = FillList.ElementAt(currFill);
|
||||
fillChange.SetFillType(type);
|
||||
fillChange.SetSelFillType(type);
|
||||
await DoPreviewSvg();
|
||||
}
|
||||
|
||||
@@ -996,6 +1110,28 @@ namespace WebWindowComplex
|
||||
_ = EC_DoUpdate.InvokeAsync(Args);
|
||||
}
|
||||
|
||||
private void M_CurrWindow_OnHwOption(object? sender, OnReqHwOptEventArgs e)
|
||||
{
|
||||
Dictionary<string, string> Args = new Dictionary<string, string>();
|
||||
Args.Add("Mode", $"{(int)Enums.QuestionModes.HARDWARE}");
|
||||
Args.Add("SubMode", $"{(int)Enums.QuestionHwSubModes.HARDWAREOPTIONS}");
|
||||
Args.Add("Jwd", e.sJwd);
|
||||
string listGroupId = JsonConvert.SerializeObject(new List<int> { e.nGroupId });
|
||||
Args.Add("GroupId", listGroupId);
|
||||
_ = EC_DoUpdate.InvokeAsync(Args);
|
||||
}
|
||||
|
||||
private void M_CurrWindow_OnShape(object? sender, OnReqShapeEventArgs e)
|
||||
{
|
||||
Dictionary<string, string> Args = new Dictionary<string, string>();
|
||||
Args.Add("Mode", $"{(int)Enums.QuestionModes.HARDWARE}");
|
||||
Args.Add("SubMode", $"{(int)Enums.QuestionHwSubModes.SASHSHAPE}");
|
||||
Args.Add("Jwd", e.sJwd);
|
||||
string listGroupId = JsonConvert.SerializeObject(new List<int> { e.groupId });
|
||||
Args.Add("GroupId", listGroupId);
|
||||
_ = EC_DoUpdate.InvokeAsync(Args);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Calcola larghezza colonna contenente nav da mostrare
|
||||
/// </summary>
|
||||
@@ -1057,6 +1193,7 @@ namespace WebWindowComplex
|
||||
/// <returns></returns>
|
||||
private void RemoveArea(Area currArea)
|
||||
{
|
||||
//LiveData.DictShape.Clear();
|
||||
if (currArea is Split)
|
||||
((Split)currArea).Remove();
|
||||
else if (currArea is Sash)
|
||||
@@ -1176,17 +1313,6 @@ namespace WebWindowComplex
|
||||
await DoPreviewSvg();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Aggiornamento Sash e Frame
|
||||
/// </summary>
|
||||
/// <param name="newSash"> nuova sash </param>
|
||||
/// <returns></returns>
|
||||
private async Task UpdateSash(Sash newSash)
|
||||
{
|
||||
SearchSash(m_Frame, newSash.IdGroup, newSash);
|
||||
await DoPreviewSvg();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Aggiornamento opzioni dato update sash
|
||||
/// </summary>
|
||||
@@ -1194,34 +1320,63 @@ namespace WebWindowComplex
|
||||
/// <returns></returns>
|
||||
private async Task UpdateHwOptions(Sash newSash)
|
||||
{
|
||||
await DoReqOptHardware();
|
||||
// richiesta calcolo opzioni hardware per la singola sash group
|
||||
//string req = newSash.SelHardware.Id;
|
||||
List<int> reqList = new List<int>() { newSash.GroupId };
|
||||
// chiamo con gruppo della nuova sash
|
||||
await DoReqOptHardware(reqList);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Cerca e aggiorna la sash
|
||||
/// Prima chiamata alle opzioni hardware
|
||||
/// </summary>
|
||||
/// <param name="currentArea"> area corrente che si sta valutando </param>
|
||||
/// <param name="idSearch"> id della sash che si sta cercando </param>
|
||||
/// <param name="newSash"> nuova sash </param>
|
||||
/// <param name="groupId"> Group Id del sash group di cui si vuole Hw option </param>
|
||||
/// <returns></returns>
|
||||
public Area SearchSash(Area currentArea, int idSearch, Sash newSash)
|
||||
private async Task CallFirstHwOpt(int groupId)
|
||||
{
|
||||
if (currentArea.IdGroup == idSearch && currentArea.AreaType.Equals(AreaTypes.SASH))
|
||||
{
|
||||
currentArea = newSash;
|
||||
return currentArea;
|
||||
}
|
||||
foreach (Area child in currentArea.AreaList)
|
||||
{
|
||||
Area found = SearchSash(child, idSearch, newSash);
|
||||
if (found != null)
|
||||
{
|
||||
return found;
|
||||
}
|
||||
}
|
||||
return null;
|
||||
bool isFirst = true;
|
||||
List<int> reqList = new List<int>() { groupId };
|
||||
await DoReqOptHardware(reqList, isFirst);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Aggiornamento Sash e Frame
|
||||
/// </summary>
|
||||
/// <param name="newSash"> nuova sash </param>
|
||||
/// <returns></returns>
|
||||
private async Task UpdateSash(Sash newSash)
|
||||
{
|
||||
SearchSash(FrameWindow, newSash.GroupId, newSash);
|
||||
await DoPreviewSvg();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Aggiornamento Shape x ogni Group di Sash della finestra
|
||||
/// </summary>
|
||||
/// <param name="newFrame"></param>
|
||||
/// <returns></returns>
|
||||
private async Task UpdateShape(Frame newFrame)
|
||||
{
|
||||
//LiveData.DictShape.Clear();
|
||||
FrameWindow = newFrame;
|
||||
// ciclo x ogni group della mia frame
|
||||
List<int> reqList = SashList.Select(x => x.GroupId).ToList();
|
||||
await DoReqShape(reqList);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Aggiornamento shape dato GroupId
|
||||
/// </summary>
|
||||
/// <param name="groupId"> nuova sash </param>
|
||||
/// <returns></returns>
|
||||
private async Task UpdateShape(int groupId)
|
||||
{
|
||||
List<int> reqList = new List<int>() { groupId };
|
||||
await DoReqShape(reqList);
|
||||
#if false
|
||||
await DoReqShape(groupId);
|
||||
#endif
|
||||
}
|
||||
|
||||
#endregion Private Methods
|
||||
}
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
<TargetFramework>net8.0</TargetFramework>
|
||||
<Nullable>enable</Nullable>
|
||||
<ImplicitUsings>enable</ImplicitUsings>
|
||||
<Version>2.7.10.2117</Version>
|
||||
<Version>2.7.11.315</Version>
|
||||
<Authors>Annamaria Sassi</Authors>
|
||||
<Company>Egalware</Company>
|
||||
<Description>Componente gestione Configurazioni avanzate Window per LUX</Description>
|
||||
@@ -39,3 +39,226 @@
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
<TargetFramework>net8.0</TargetFramework>
|
||||
<Nullable>enable</Nullable>
|
||||
<ImplicitUsings>enable</ImplicitUsings>
|
||||
<Version>2.7.10.2117</Version>
|
||||
<Version>2.7.11.315</Version>
|
||||
<Authors>Annamaria Sassi</Authors>
|
||||
<Company>Egalware</Company>
|
||||
<Description>Componente gestione JWD per LUX</Description>
|
||||
@@ -98,6 +98,263 @@
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -1222,7 +1222,7 @@ namespace WebWindowTest
|
||||
}
|
||||
private string FindSashShape()
|
||||
{
|
||||
return "Rectangular";
|
||||
return "Rectangle";
|
||||
}
|
||||
internal Enums.OpeningTypes GetOpeningType(Openings OpeningType)
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user