Compare commits
365 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 55935e6809 | |||
| f4072faedb | |||
| fd143bc5ec | |||
| cfed9635b7 | |||
| 61996b4db7 | |||
| a2302094f1 | |||
| 396cecf492 | |||
| 8f0b54e30f | |||
| ffe15c59a6 | |||
| f2ad83fd09 | |||
| 8f56f2e2a6 | |||
| 832c2ee304 | |||
| 1e212ed3e1 | |||
| 1e2dc2bae1 | |||
| baa2ced4b6 | |||
| 5e4907479b | |||
| d5fe7645dd | |||
| 6fbb12ac94 | |||
| 88a2ab66d1 | |||
| 635197055f | |||
| 7449dd50c8 | |||
| 030fd93895 | |||
| 7eb42d2ee1 | |||
| 2c2e314797 | |||
| 8b1d39663c | |||
| 1eb79fd20d | |||
| c5042a2d2b | |||
| 69a862961d | |||
| 056f2f8978 | |||
| 7566597475 | |||
| 59beafef78 | |||
| 5d11a30e45 | |||
| a25a559364 | |||
| aac150615c | |||
| a73268ed88 | |||
| d8ac7d4122 | |||
| 114d946818 | |||
| cbfbe59c91 | |||
| df34efbcda | |||
| d5aee28e8a | |||
| c9e6c759aa | |||
| 3bdb64cd90 | |||
| 96f9ba262a | |||
| 35393c7254 | |||
| 41eac04af8 | |||
| 57160cd18c | |||
| c7a8fa9e99 | |||
| e0d1d76260 | |||
| 2d015ecf98 | |||
| 662b504530 | |||
| 33f613b61f | |||
| b662cf2d9c | |||
| 3315022da3 | |||
| e727018602 | |||
| 1708911a6b | |||
| 81cfc8d57c | |||
| 10f8bbcf55 | |||
| ddb3cedd24 | |||
| fa6fe1600c | |||
| d4f6fddba8 | |||
| 429006b889 | |||
| 52bdaec430 | |||
| c3fcfad641 | |||
| 410aa5103e | |||
| 83a1c62d26 | |||
| f0e9ef706a | |||
| 398e990430 | |||
| d031563e69 | |||
| b1fe7dc02e | |||
| 5cbd973c22 | |||
| 4f83692336 | |||
| 1518005f06 | |||
| 3137e96225 | |||
| 6faaa74359 | |||
| ae45bd5429 | |||
| 10e1a79b0a | |||
| 83161fd2c4 | |||
| 171cc8cb90 | |||
| cc7bf34ec1 | |||
| 63c8c83143 | |||
| 36c16e58bf | |||
| 01ec96e16f | |||
| 1bb8251de8 | |||
| 8c59d127d9 | |||
| 4055915efe | |||
| ad751d2dfa | |||
| 3e6ab70807 | |||
| bab6831f71 | |||
| 0cbbb3290a | |||
| b16d98966c | |||
| 1dda6a7221 | |||
| 424357ffab | |||
| 197c7e277a | |||
| 2478fd0d8e | |||
| 2de7c431d7 | |||
| b0f08318de | |||
| 6aaaa3e4d2 | |||
| a49429eecd | |||
| 97191f8a03 | |||
| c57b2bf2e3 | |||
| 5c3506b0fd | |||
| b6991be6bc | |||
| bb140410ca | |||
| 63abe7a022 | |||
| 4e75db06f1 | |||
| df44ae4bf2 | |||
| ff8e65ecef | |||
| 001f17f15c | |||
| 80d7da0830 | |||
| 2aa207d0d7 | |||
| 76b11e7ba1 | |||
| 71775a48fb | |||
| ada0fc2ce5 | |||
| 224bac0947 | |||
| 0ffaa38d12 | |||
| e3cdc7c0eb | |||
| 522625710e | |||
| 96b6deda20 | |||
| 36573dfa4e | |||
| 940d6de755 | |||
| 8b918929bc | |||
| 82df3857fb | |||
| e0bb0ddb20 | |||
| 5fc60445ac | |||
| d49655bee3 | |||
| 4848f11994 | |||
| 4a5c6654cc | |||
| 7c836e3fbf | |||
| 44b68627e9 | |||
| 80a8d44172 | |||
| 3baec4170a | |||
| 07a068d8e5 | |||
| 60bcd0c554 | |||
| e692d8249f | |||
| 39d5cb4367 | |||
| ca64e6e595 | |||
| c59585e25b | |||
| 9cbe6df807 | |||
| a886e7f324 | |||
| 44b1b8bbd3 | |||
| a898ccced5 | |||
| 3d092b53fb | |||
| 5db36307da | |||
| 62d9d2f5c8 | |||
| 7fbc1a5598 | |||
| 133575c38b | |||
| a6bdaf184f | |||
| 154d969ef4 | |||
| f99dd90713 | |||
| de8dd09890 | |||
| c0ceb8f4e9 | |||
| 5182fc2247 | |||
| 4080f99b7d | |||
| 3a87536ad3 | |||
| 36a777a4b4 | |||
| 7de4c7d9e0 | |||
| 5afb1c8842 | |||
| dff06ff704 | |||
| d43d1b6470 | |||
| bb61341924 | |||
| 8e11dc48b0 | |||
| 31adc74841 | |||
| e1ab802bbb | |||
| cb98adaa11 | |||
| 5d5ee71bb5 | |||
| 2248581045 | |||
| 52f886ecbf | |||
| fb69d47f62 | |||
| 6636eacc04 | |||
| 2f71c72ff4 | |||
| 662b309cde | |||
| 41cd75cdf8 | |||
| be0ea6e42d | |||
| 3c5b6b0418 | |||
| e9e66a204b | |||
| 955b9cd6b2 | |||
| f4762f402a | |||
| 576b5316f5 | |||
| ce8bd4fafc | |||
| db524a7c26 | |||
| 5e10c8aca9 | |||
| 3f96d71c30 | |||
| f18f2bb05a | |||
| 25c39470a0 | |||
| 8a968c6ff0 | |||
| 9a460ace4f | |||
| bb1b24422c | |||
| 404fcd2760 | |||
| 93889a3aff | |||
| 34a41ca85b | |||
| e9fce48b37 | |||
| 144aad50f5 | |||
| 41bbc6278b | |||
| 6c8035320c | |||
| bff5daec02 | |||
| 5cde8ae3f6 | |||
| 4d0671e06d | |||
| fd599e28b0 | |||
| 73f790378a | |||
| d650a30091 | |||
| 97eab06e76 | |||
| 943051e73b | |||
| 5a6c91f9ca | |||
| 04d2b8201e | |||
| edf2e2d068 | |||
| 2b120f2813 | |||
| f9df19961a | |||
| c0fd981d45 | |||
| e1ba401353 | |||
| db317ccd77 | |||
| bd48a52479 | |||
| a0b9f9d4a8 | |||
| d689675ec7 | |||
| 115268816b | |||
| 220b29b4b7 | |||
| 10f0574e37 | |||
| aae2fa5ba7 | |||
| bc96177d74 | |||
| 8ef408c244 | |||
| 372dfd6f52 | |||
| b5d629c3d9 | |||
| cc2263404d | |||
| 5cf6b3d870 | |||
| c2aee51edb | |||
| fa993cea8b | |||
| 1a5192d613 | |||
| 9dbde84a2c | |||
| 3961275dfc | |||
| 9f615a9a82 | |||
| cb2fa4cf4f | |||
| 703931868a | |||
| 36db2cf282 | |||
| c1bd6cac5d | |||
| 73a338e599 | |||
| 10b63ff6b6 | |||
| 5ad4baa471 | |||
| 94c8124425 | |||
| b1c1afdf09 | |||
| 2c9a7ac9c1 | |||
| 2b3f858422 | |||
| 75261bb770 | |||
| 623b5e80e1 | |||
| 8949762c34 | |||
| 5ddaa52e92 | |||
| 409de844fe | |||
| a8047f4ca8 | |||
| 7e125dbb52 | |||
| dae7ee80d9 | |||
| 8e7bdb235f | |||
| 8db91ae95a | |||
| d32939e748 | |||
| aac5c06bc2 | |||
| 1eb40dc91c | |||
| b43071ceec | |||
| 5e3e535139 | |||
| ba80c4eca0 | |||
| dfe4ecd9d1 | |||
| 5a7987d02b | |||
| de2f4ed9e9 | |||
| afa394acec | |||
| 5f227241f8 | |||
| 30e69bde86 | |||
| f56ed1052d | |||
| 69eb70d5a6 | |||
| 1fed423ab0 | |||
| cf912c8f21 | |||
| 8c906a7b00 | |||
| d823112bed | |||
| 576404e6f1 | |||
| 254f9c75aa | |||
| 3c0f8a27f5 | |||
| d63ec149b0 | |||
| 39a8634627 | |||
| cf7eccb3ba | |||
| d0a55fdeed | |||
| a931d7f5d8 | |||
| ea44092919 | |||
| 6b06ec861e | |||
| 1d3edf121c | |||
| ca17ed3ea8 | |||
| 1345dcfe19 | |||
| 4edcef86fc | |||
| 0e95f51b2b | |||
| b57e7e1efb | |||
| 4e21a36fef | |||
| a08b8d4eb5 | |||
| b8829ab77d | |||
| 38c9a90e5f | |||
| 68b5baf317 | |||
| e8cecb3113 | |||
| c11c82d880 | |||
| ddd339fe74 | |||
| ea2044c863 | |||
| d4e1a73d57 | |||
| 15acb8936f | |||
| c2cf25fcd8 | |||
| d384b9d5ed | |||
| 86f3d59a98 | |||
| 0caf3ef83b | |||
| 64a2019b6d | |||
| fe1e7735e3 | |||
| 16cf5eda54 | |||
| 2e4bc8b4d3 | |||
| 9d4d6128c3 | |||
| 1525dd1da1 | |||
| 86fe130edf | |||
| 3f8f97c29e | |||
| eaea52f45d | |||
| 960d20e256 | |||
| f187bbe5c5 | |||
| c7a151e530 | |||
| d8da5ed827 | |||
| d477fb9319 | |||
| 1ed1658195 | |||
| f3ad3e4ce4 | |||
| e68847318f | |||
| 38ab3eee81 | |||
| 6b9ab0421c | |||
| aa956217eb | |||
| fad95d22b6 | |||
| b7a3497019 | |||
| 39bfd3889e | |||
| adfb9b551f | |||
| eba2921522 | |||
| b3eda12449 | |||
| 764cc634f0 | |||
| a658f12aff | |||
| fa23038e6f | |||
| 00687d33e5 | |||
| ff5bf48fc5 | |||
| 22764917e9 | |||
| ad5977eb0f | |||
| 025c7f584c | |||
| d1ad8fac6a | |||
| cfc019c8e7 | |||
| 1b57d2826a | |||
| d1bc2a2fe0 | |||
| 0a659b1729 | |||
| 5dcb723a99 | |||
| 0b01ee68d9 | |||
| 90e6bc799a | |||
| 0d8effa120 | |||
| 0fb44da4c7 | |||
| 9fd167e34e | |||
| a3112a9929 | |||
| 36eca36cee | |||
| 698cc69b4c | |||
| d7cfc9de29 | |||
| bd0e3536fb | |||
| 566dc8cf04 | |||
| 89bcf9e396 | |||
| 01f7e5b072 | |||
| c6867f4c0d | |||
| c5003bd644 | |||
| 17db9b16c6 | |||
| 0a904e9292 | |||
| 0bdcefedcd | |||
| 3f9d919969 | |||
| 0852e61f3b | |||
| dd2f6dcaa8 | |||
| 55a84780a8 | |||
| bd8aa4b025 | |||
| e3042e7d9e | |||
| 6a35c5c871 | |||
| 843f043c12 |
@@ -5,7 +5,7 @@ variables:
|
||||
NUM_REL: '0.1.2.3'
|
||||
NU_TYPE: 'Debug'
|
||||
APP_NAME: 'Test.UI'
|
||||
SOL_NAME: 'Test.UI'
|
||||
SOL_NAME: 'WebWindowConfigurator'
|
||||
NUGET_PATH: 'C:\Tools\nuget.exe'
|
||||
DEST: 'install'
|
||||
|
||||
@@ -146,7 +146,7 @@ Test.UI:build:
|
||||
- win
|
||||
variables:
|
||||
APP_NAME: Test.UI
|
||||
SOL_NAME: Test.UI
|
||||
SOL_NAME: WebWindowConfigurator
|
||||
rules:
|
||||
- if: $CI_COMMIT_BRANCH == 'develop'
|
||||
- if: $CI_COMMIT_BRANCH == 'main'
|
||||
@@ -169,7 +169,7 @@ Test.UI:IIS01:deploy:
|
||||
- win
|
||||
variables:
|
||||
APP_NAME: Test.UI
|
||||
SOL_NAME: Test.UI
|
||||
SOL_NAME: WebWindowConfigurator
|
||||
before_script:
|
||||
- *nuget-fix
|
||||
- dotnet restore "$env:SOL_NAME.sln"
|
||||
@@ -188,7 +188,7 @@ WebWindow.Base:SDK:deploy:
|
||||
- win
|
||||
variables:
|
||||
APP_NAME: WebWindow.Base
|
||||
SOL_NAME: Test.UI
|
||||
SOL_NAME: WebWindowConfigurator
|
||||
NU_TYPE: Debug
|
||||
before_script:
|
||||
- *nuget-fix
|
||||
@@ -211,7 +211,7 @@ WebWindowConfigurator:SDK:deploy:
|
||||
- win
|
||||
variables:
|
||||
APP_NAME: WebWindowConfigurator
|
||||
SOL_NAME: Test.UI
|
||||
SOL_NAME: WebWindowConfigurator
|
||||
NU_TYPE: Debug
|
||||
before_script:
|
||||
- *nuget-fix
|
||||
@@ -234,7 +234,7 @@ WebWindowComplex:SDK:deploy:
|
||||
- win
|
||||
variables:
|
||||
APP_NAME: WebWindowComplex
|
||||
SOL_NAME: Test.UI
|
||||
SOL_NAME: WebWindowConfigurator
|
||||
NU_TYPE: Debug
|
||||
before_script:
|
||||
- *nuget-fix
|
||||
@@ -260,7 +260,7 @@ WebWindowComplex:SDK:deploy:
|
||||
# - win
|
||||
# variables:
|
||||
# APP_NAME: Test.UI
|
||||
# SOL_NAME: Test.UI
|
||||
# SOL_NAME: WebWindowConfigurator
|
||||
# before_script:
|
||||
# - *nuget-fix
|
||||
# - dotnet restore "$env:SOL_NAME.sln"
|
||||
@@ -281,7 +281,7 @@ WebWindowComplex:SDK:deploy:
|
||||
# - win
|
||||
# variables:
|
||||
# APP_NAME: Test.UI
|
||||
# SOL_NAME: Test.UI
|
||||
# SOL_NAME: WebWindowConfigurator
|
||||
# NEXUS_PATH: MP-LAND
|
||||
# before_script:
|
||||
# - *nuget-fix
|
||||
@@ -307,7 +307,7 @@ WebWindowComplex:SDK:deploy:
|
||||
# - win
|
||||
# variables:
|
||||
# APP_NAME: Test.UI
|
||||
# SOL_NAME: Test.UI
|
||||
# SOL_NAME: WebWindowConfigurator
|
||||
# NEXUS_PATH: MP-LAND
|
||||
# before_script:
|
||||
# - *nuget-fix
|
||||
@@ -328,7 +328,7 @@ WebWindow.Base:SDK:release:
|
||||
- win
|
||||
variables:
|
||||
APP_NAME: WebWindow.Base
|
||||
SOL_NAME: Test.UI
|
||||
SOL_NAME: WebWindowConfigurator
|
||||
NU_TYPE: Release
|
||||
before_script:
|
||||
- *nuget-fix
|
||||
@@ -349,7 +349,7 @@ WebWindowConfigurator:SDK:release:
|
||||
- win
|
||||
variables:
|
||||
APP_NAME: WebWindowConfigurator
|
||||
SOL_NAME: Test.UI
|
||||
SOL_NAME: WebWindowConfigurator
|
||||
NU_TYPE: Release
|
||||
before_script:
|
||||
- *nuget-fix
|
||||
@@ -370,7 +370,7 @@ WebWindowComplex:SDK:release:
|
||||
- win
|
||||
variables:
|
||||
APP_NAME: WebWindowComplex
|
||||
SOL_NAME: Test.UI
|
||||
SOL_NAME: WebWindowConfigurator
|
||||
NU_TYPE: Release
|
||||
before_script:
|
||||
- *nuget-fix
|
||||
|
||||
@@ -0,0 +1,24 @@
|
||||
<Project>
|
||||
<PropertyGroup>
|
||||
<ManagePackageVersionsCentrally>true</ManagePackageVersionsCentrally>
|
||||
<CentralPackageTransitivePinningEnabled>false</CentralPackageTransitivePinningEnabled>
|
||||
</PropertyGroup>
|
||||
<ItemGroup>
|
||||
<PackageVersion Include="AsyncFixer" Version="2.1.0">
|
||||
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
|
||||
<PrivateAssets>all</PrivateAssets>
|
||||
</PackageVersion>
|
||||
<PackageVersion Include="Egw.Window.Data" Version="2.8.1.2611" />
|
||||
<PackageVersion Include="EgwCoreLib.Lux.Core" Version="1.0.2603.2112" />
|
||||
<PackageVersion Include="EgwCoreLib.Lux.Data" Version="1.0.2603.2112" />
|
||||
<PackageVersion Include="EgwCoreLib.Razor" Version="1.5.2511.312" />
|
||||
<PackageVersion Include="EgwCoreLib.Utils" Version="1.5.2511.312" />
|
||||
<PackageVersion Include="Microsoft.AspNetCore.Components.Web" Version="8.0.21" />
|
||||
<PackageVersion Include="Microsoft.AspNetCore.Components.WebAssembly" Version="8.0.21" />
|
||||
<PackageVersion Include="Microsoft.AspNetCore.Components.WebAssembly.Server" Version="8.0.21" />
|
||||
<PackageVersion Include="Newtonsoft.Json" Version="13.0.4" />
|
||||
<PackageVersion Include="NLog" Version="6.0.7" />
|
||||
<PackageVersion Include="NLog.Web.AspNetCore" Version="6.1.0" />
|
||||
<PackageVersion Include="RestSharp" Version="113.1.0" />
|
||||
</ItemGroup>
|
||||
</Project>
|
||||
@@ -1,93 +1,137 @@
|
||||
# WebWindowConfigurator
|
||||
|
||||
Componente per configurare un serramento partendo da un JWD.
|
||||
|
||||
Durante la configurazione ad ogni cambiamento viene aggiornata l'immagine del serramento.
|
||||
|
||||
## Getting started
|
||||
## Requisiti
|
||||
|
||||
To make it easy for you to get started with GitLab, here's a list of recommended next steps.
|
||||
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;
|
||||
- Lista delle soglie associate al profilo selezionato.
|
||||
|
||||
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)!
|
||||
## Funzionalità componente
|
||||
|
||||
## Add your files
|
||||
Il componente permette i seguenti comportamenti principali:
|
||||
|
||||
- [ ] [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:
|
||||
- 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;
|
||||
- Cambiare le caratteristiche dei gruppi di ante, delle singole ante, degli split e del frame.
|
||||
|
||||
```
|
||||
cd existing_repo
|
||||
git remote add origin https://gitlab.steamware.net/etis/webwindowconfigurator.git
|
||||
git branch -M main
|
||||
git push -uf origin main
|
||||
```
|
||||
## JWD
|
||||
|
||||
## Integrate with your tools
|
||||
Il JWD descrive la struttura e le caratteristiche di un serramento.
|
||||
|
||||
- [ ] [Set up project integrations](https://gitlab.steamware.net/etis/webwindowconfigurator/-/settings/integrations)
|
||||
Un serramento è composto da un determinato tipo di elementi:
|
||||
- Telaio (obbligatorio)
|
||||
- Divisione (facoltativa)
|
||||
- Gruppo ante (facoltativo)
|
||||
- Riempimento (obbligatorio almeno un riempimento)
|
||||
|
||||
## Collaborate with your team
|
||||
Al serramento sono associate le seguenti caratteristiche:
|
||||
- Profilo;
|
||||
- Materiale;
|
||||
- Vetro;
|
||||
- Colore serramento.
|
||||
|
||||
- [ ] [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/)
|
||||
### Telaio (Frame)
|
||||
|
||||
## Test and Deploy
|
||||
Al frame sono associate le seguenti caratteristiche:
|
||||
- Forma;
|
||||
- Dimensioni;
|
||||
- Soglia;
|
||||
- Giunti;
|
||||
- Quantità bottom Rail.
|
||||
|
||||
Use the built-in continuous integration in GitLab.
|
||||
#### Forme Telaio
|
||||
|
||||
- [ ] [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)
|
||||
Le forme ammesse per il telaio sono le seguenti:
|
||||
- Rectangle;
|
||||
- Right Chamfer;
|
||||
- Left Chamfer;
|
||||
- Double Chamfer;
|
||||
- Arc;
|
||||
- Full Arc;
|
||||
- Fillet;
|
||||
- Double Arc;
|
||||
- Three Center Arc;
|
||||
- Triangle;
|
||||
- Custom.
|
||||
|
||||
***
|
||||
### Divisione (Split)
|
||||
|
||||
# Editing this README
|
||||
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.
|
||||
|
||||
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.
|
||||
Uno split può essere:
|
||||
- Orizzontale, viene definito il numero di split orizzontali e l'altezza delle nuove aree orizzontali formate;
|
||||
- Verticale, viene definito il numero di split verticali e la larghezza delle nuove aree verticali formate;
|
||||
- A griglia, viene definito il numero di split orizzontali e verticali e l'altezza delle aree orizzontali e la larghezza delle aree verticali; in questo caso si può scegliere se hanno la precedenza gli split orizzontali o verticali (cambia il modo in cui si esegue l'incrocio tra gli split).
|
||||
|
||||
## Suggestions for a good README
|
||||
### Gruppo di ante (Sash group)
|
||||
|
||||
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.
|
||||
Al gruppo di ante sono associate le seguenti caratteristiche:
|
||||
- Numero di ante;
|
||||
- Orientamento;
|
||||
- Quantità bottom rail;
|
||||
- Codice hardware.
|
||||
|
||||
## Name
|
||||
Choose a self-explaining name for your project.
|
||||
#### Singola anta
|
||||
|
||||
## 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.
|
||||
La singola anta ha associate le seguenti caratteristiche:
|
||||
- Tipologia di apertura;
|
||||
- Dimensione;
|
||||
- Tipo di misura della dimensione (assoluta, percentuale o proporzionale);
|
||||
- Presenza maniglia;
|
||||
- Giunti.
|
||||
|
||||
## 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.
|
||||
#### Hardware
|
||||
|
||||
## 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.
|
||||
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);
|
||||
- Tipo di 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).
|
||||
|
||||
## 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.
|
||||
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 nel frame se già presente un gruppo di ante;
|
||||
- Se si effettua lo scambio delle aree di uno split e una delle aree contiene una sash;
|
||||
- Eliminazione di uno split.
|
||||
|
||||
## 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.
|
||||
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 la maniglia e cambia il tipo di apertura e/o la posizione dell'anta battente.
|
||||
|
||||
## 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.
|
||||
#### Opzioni Hardware
|
||||
Le opzioni hardware vengono ricevute in formato xml.
|
||||
|
||||
## Roadmap
|
||||
If you have ideas for releases in the future, it is a good idea to list them in the README.
|
||||
Vengono richieste nei seguenti casi:
|
||||
- Click sul pulsante per visualizzarle;
|
||||
- Cambiamento nel numero di ante;
|
||||
- Cambiamento nella selezione dell'hardware;
|
||||
- Cambiamento nella selezione della famiglia hardware;
|
||||
- Cambiamento di un valore delle opzioni hardware.
|
||||
|
||||
## Contributing
|
||||
State if you are open to contributions and what your requirements are for accepting them.
|
||||
### Riempimento (Fill)
|
||||
|
||||
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.
|
||||
Descrive il tipo di riempimento: vetro o pannello.
|
||||
|
||||
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.
|
||||
## Richieste di informazioni a EgwMultiEnginManager
|
||||
|
||||
## Authors and acknowledgment
|
||||
Show your appreciation to those who have contributed to the project.
|
||||
|
||||
## 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.
|
||||
Nel componente sono presenti quattro tipi di richieste al programma EgwMultiEngineManager:
|
||||
1. SVG: serve per avere SVG dato il JWD per poter rappresentare il disegno. La domanda è costituita dal JWD e la risposta contiene il SVG;
|
||||
2. Forma del telaio: la forma serve per poter determinare la lista degli hardware coerenti con le caratteristiche scelte. La domanda è costituita dal JWD e dalla lista di groupId interessati. La risposta contiene un dizionario di valori interi-stringa che rappresentano groupId-forma;
|
||||
3. Hardware option: serve per avere le opzioni relative all'hardware selezionato. La domanda è costituita dal JWD e la lista di groupId interessati. La risposta contiene un dizionario interi-stringa che rappresentano groupId-opzioni hardware. Le opzioni hardware sono restituite in formato xml;
|
||||
4. Profili degli elementi: serve per avere i profili degli elementi del groupId richiesto (nel caso di gruppi di ante gli elemeneti sono specificati per ogni anta). La domanda è costituita dal JWD e dalla lista di groupId interessati. La risposta contiene una lisra di oggetti AreaProfiles.
|
||||
@@ -9,7 +9,7 @@
|
||||
</PropertyGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<PackageReference Include="Microsoft.AspNetCore.Components.WebAssembly" Version="8.0.17" />
|
||||
<PackageReference Include="Microsoft.AspNetCore.Components.WebAssembly" />
|
||||
</ItemGroup>
|
||||
|
||||
</Project>
|
||||
|
||||
@@ -4,18 +4,27 @@
|
||||
<head>
|
||||
<meta charset="utf-8" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||
<base href="/" />
|
||||
<link rel="stylesheet" href="bootstrap/bootstrap.min.css" />
|
||||
<meta name="description" content="Lux UI Test Component" />
|
||||
<meta name="author" content="EgalWare" />
|
||||
<link rel="shortcut icon" type="image/x-icon" href="images/favicon.ico" />
|
||||
|
||||
<link rel="stylesheet" href="lib/bootstrap/css/bootstrap.min.css" />
|
||||
<link rel="stylesheet" href="lib/font-awesome/css/all.min.css" />
|
||||
<link rel="stylesheet" href="lib/bootstrap-icons/font/bootstrap-icons.min.css" />
|
||||
@* <link rel="stylesheet" href="bootstrap/bootstrap.min.css" /> *@
|
||||
<link rel="stylesheet" href="app.css" />
|
||||
<link rel="stylesheet" href="Test.UI.styles.css" />
|
||||
<link rel="stylesheet" href="css/site.min.css" />
|
||||
<link rel="icon" type="image/png" href="favicon.png" />
|
||||
<HeadOutlet />
|
||||
@* <HeadOutlet /> *@
|
||||
<HeadOutlet @rendermode="@(new InteractiveServerRenderMode(prerender: false))" />
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<Routes />
|
||||
@* <Routes /> *@
|
||||
@* <Routes @rendermode=RenderMode.InteractiveServer /> *@
|
||||
<Routes @rendermode="@(new InteractiveServerRenderMode(prerender: false))" />
|
||||
<script src="_framework/blazor.web.js"></script>
|
||||
<script type="text/javascript" src="lib/bootstrap/js/bootstrap.min.js"></script>
|
||||
</body>
|
||||
|
||||
</html>
|
||||
|
||||
@@ -0,0 +1,13 @@
|
||||
|
||||
<div class="card my-2">
|
||||
<div class="card-header @CssClass">
|
||||
<h3>@Name</h3>
|
||||
</div>
|
||||
<div class="card-body">
|
||||
<div class="fs-3">@Message</div>
|
||||
<small>@LocalInfo</small>
|
||||
<Test.UI.Components.Compo.ChildObj Name="@SubName" CssClass="bg bg-primary" Message="load OPT" LoadPar="loadHwOpt"></Test.UI.Components.Compo.ChildObj>
|
||||
<Test.UI.Components.Compo.ChildObj Name="@SubName" CssClass="bg bg-primary" Message="load PNG" LoadPar="loadPng"></Test.UI.Components.Compo.ChildObj>
|
||||
<Test.UI.Components.Compo.ChildObj Name="@SubName" CssClass="bg bg-primary" Message="load SVG" LoadPar="loadSvg"></Test.UI.Components.Compo.ChildObj>
|
||||
</div>
|
||||
</div>
|
||||
@@ -0,0 +1,38 @@
|
||||
using Microsoft.AspNetCore.Components;
|
||||
|
||||
namespace Test.UI.Components.Compo
|
||||
{
|
||||
public partial class ChildNoLoad
|
||||
{
|
||||
#region Public Properties
|
||||
|
||||
[Parameter]
|
||||
public string CssClass { get; set; } = "";
|
||||
|
||||
[Parameter]
|
||||
public string Message { get; set; } = "";
|
||||
|
||||
[Parameter]
|
||||
public string Name { get; set; } = "NONE";
|
||||
|
||||
|
||||
#endregion Public Properties
|
||||
|
||||
#region Protected Fields
|
||||
|
||||
protected string LocalInfo = "";
|
||||
protected string SubName = "";
|
||||
|
||||
#endregion Protected Fields
|
||||
|
||||
#region Protected Methods
|
||||
|
||||
protected override void OnParametersSet()
|
||||
{
|
||||
LocalInfo = $"Updated on {DateTime.Now:HH:ss.fff}";
|
||||
SubName = $"Child of {Name}";
|
||||
}
|
||||
|
||||
#endregion Protected Methods
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,24 @@
|
||||
@if (IsLoading)
|
||||
{
|
||||
<div class="card my-2">
|
||||
<div class="card-header @CssClass placeholder-glow">
|
||||
<h3 class="placeholder col-3"></h3>
|
||||
</div>
|
||||
<div class="card-body">
|
||||
<div class="fs-3 placeholder col-6"></div>
|
||||
<small class="placeholder col-8"></small>
|
||||
</div>
|
||||
</div>
|
||||
}
|
||||
else
|
||||
{
|
||||
<div class="card my-2">
|
||||
<div class="card-header @CssClass">
|
||||
<h3>@Name</h3>
|
||||
</div>
|
||||
<div class="card-body">
|
||||
<div class="fs-3">@Message</div>
|
||||
<small>@LocalInfo</small>
|
||||
</div>
|
||||
</div>
|
||||
}
|
||||
@@ -0,0 +1,46 @@
|
||||
using Microsoft.AspNetCore.Components;
|
||||
|
||||
namespace Test.UI.Components.Compo
|
||||
{
|
||||
public partial class ChildObj
|
||||
{
|
||||
#region Public Properties
|
||||
|
||||
[Parameter]
|
||||
public string CssClass { get; set; } = "";
|
||||
|
||||
[Parameter]
|
||||
public string Message { get; set; } = "";
|
||||
|
||||
[Parameter]
|
||||
public string Name { get; set; } = "NONE";
|
||||
|
||||
[Parameter]
|
||||
public string LoadPar { get; set; } = "";
|
||||
|
||||
[CascadingParameter(Name = "CurrLoading")]
|
||||
public List<string> CurrLoading { get; set; } = new List<string>();
|
||||
|
||||
#endregion Public Properties
|
||||
|
||||
#region Protected Fields
|
||||
|
||||
protected string LocalInfo = "";
|
||||
|
||||
#endregion Protected Fields
|
||||
|
||||
#region Protected Methods
|
||||
|
||||
protected override void OnParametersSet()
|
||||
{
|
||||
LocalInfo = $"Updated on {DateTime.Now:HH:ss.fff}";
|
||||
}
|
||||
|
||||
private bool IsLoading
|
||||
{
|
||||
get => CurrLoading != null && CurrLoading.Count > 0 && CurrLoading.Contains(LoadPar);
|
||||
}
|
||||
|
||||
#endregion Protected Methods
|
||||
}
|
||||
}
|
||||
@@ -6,14 +6,16 @@
|
||||
</div>
|
||||
|
||||
<main>
|
||||
<div class="top-row px-4">
|
||||
<a href="https://learn.microsoft.com/aspnet/core/" target="_blank">About</a>
|
||||
<div class="top-row justify-content-between">
|
||||
<div>WebWindowConfigurator Test site</div>
|
||||
<div>
|
||||
<a class="btn btn-primary text-light" href="https://iis01.egalware.com/Lux/UI/" target="_blank">Lux Dev Site</a>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<article class="content px-4">
|
||||
@Body
|
||||
</article>
|
||||
|
||||
|
||||
</main>
|
||||
</div>
|
||||
|
||||
|
||||
@@ -7,7 +7,7 @@
|
||||
protected void UpdateNavDisplay()
|
||||
{
|
||||
navLarge = !navLarge;
|
||||
sideClass = navLarge ? "sidebar" : "sidebarSmall";
|
||||
sideClass = navLarge ? "sidebar shadow-sm" : "sidebarSmall shadow-sm";
|
||||
}
|
||||
|
||||
private bool navLarge = true;
|
||||
|
||||
@@ -5,14 +5,13 @@
|
||||
}
|
||||
main {
|
||||
flex: 1;
|
||||
margin-left: 14rem;
|
||||
}
|
||||
.sidebar,
|
||||
.sidebarSmall {
|
||||
/*background-image: linear-gradient(180deg, rgb(5, 39, 103) 20%, #3aa6ff 90%);*/
|
||||
background: -webkit-linear-gradient(to bottom, #d5f1f2, #d5f1f2);
|
||||
background: -webkit-linear-gradient(to bottom, #c5d6ed, #c5d6ed);
|
||||
/* Chrome 10-25, Safari 5.1-6 */
|
||||
background: linear-gradient(to bottom, #d5f1f2, #d5f1f2);
|
||||
background: linear-gradient(to bottom, #c5d6ed, #c5d6ed);
|
||||
/* W3C, IE 10+/ Edge, Firefox 16+, Chrome 26+, Opera 12+, Safari 7+ */
|
||||
}
|
||||
.top-row {
|
||||
@@ -57,14 +56,12 @@ main {
|
||||
.sidebar {
|
||||
width: 13.5rem;
|
||||
height: 100vh;
|
||||
position: fixed;
|
||||
position: sticky;
|
||||
top: 0;
|
||||
left: 0;
|
||||
border-radius: 30px;
|
||||
z-index: 1000;
|
||||
}
|
||||
.sidebarSmall {
|
||||
width: 4.5rem;
|
||||
width: 5.5rem;
|
||||
height: 100vh;
|
||||
position: sticky;
|
||||
top: 0;
|
||||
@@ -73,7 +70,7 @@ main {
|
||||
.top-row {
|
||||
position: sticky;
|
||||
top: 0;
|
||||
z-index: 1;
|
||||
z-index: 1000;
|
||||
}
|
||||
.top-row,
|
||||
article {
|
||||
|
||||
@@ -6,14 +6,13 @@
|
||||
|
||||
main {
|
||||
flex: 1;
|
||||
margin-left: 14rem;
|
||||
}
|
||||
|
||||
.sidebar,
|
||||
.sidebarSmall {
|
||||
/*background-image: linear-gradient(180deg, rgb(5, 39, 103) 20%, #3aa6ff 90%);*/
|
||||
background: -webkit-linear-gradient(to bottom, #d5f1f2, #d5f1f2); /* Chrome 10-25, Safari 5.1-6 */
|
||||
background: linear-gradient(to bottom, #d5f1f2, #d5f1f2); /* W3C, IE 10+/ Edge, Firefox 16+, Chrome 26+, Opera 12+, Safari 7+ */
|
||||
background: -webkit-linear-gradient(to bottom, #c5d6ed, #c5d6ed); /* Chrome 10-25, Safari 5.1-6 */
|
||||
background: linear-gradient(to bottom, #c5d6ed, #c5d6ed); /* W3C, IE 10+/ Edge, Firefox 16+, Chrome 26+, Opera 12+, Safari 7+ */
|
||||
}
|
||||
|
||||
.top-row {
|
||||
@@ -64,15 +63,13 @@ main {
|
||||
.sidebar {
|
||||
width: 13.5rem;
|
||||
height: 100vh;
|
||||
position: fixed;
|
||||
position: sticky;
|
||||
top: 0;
|
||||
left: 0;
|
||||
border-radius: 30px;
|
||||
z-index:1000;
|
||||
}
|
||||
|
||||
.sidebarSmall {
|
||||
width: 4.5rem;
|
||||
width: 5.5rem;
|
||||
height: 100vh;
|
||||
position: sticky;
|
||||
top: 0;
|
||||
@@ -82,7 +79,7 @@ main {
|
||||
.top-row {
|
||||
position: sticky;
|
||||
top: 0;
|
||||
z-index: 1;
|
||||
z-index: 1000;
|
||||
}
|
||||
|
||||
.top-row, article {
|
||||
|
||||
@@ -1 +1 @@
|
||||
.page{position:relative;display:flex;flex-direction:column;}main{flex:1;margin-left:14rem;}.sidebar,.sidebarSmall{background:-webkit-linear-gradient(to bottom,#d5f1f2,#d5f1f2);background:linear-gradient(to bottom,#d5f1f2,#d5f1f2);}.top-row{background-color:#f7f7f7;border-bottom:1px solid #d6d5d5;height:3.5rem;display:flex;align-items:center;}.top-row ::deep a,.top-row .btn-link{white-space:nowrap;margin-left:1.5rem;}.top-row a:first-child{overflow:hidden;text-overflow:ellipsis;}.bottom-row{color:#dedede;background-color:#000;height:1.6rem;align-items:center;}@media(max-width:640.98px){.top-row:not(.auth){display:none;}.top-row.auth{justify-content:space-between;}.top-row a,.top-row .btn-link{margin-left:0;}}@media(min-width:641px){.page{flex-direction:row;}.sidebar{width:13.5rem;height:100vh;position:fixed;top:0;left:0;border-radius:30px;z-index:1000;}.sidebarSmall{width:4.5rem;height:100vh;position:sticky;top:0;border-radius:30px;}.top-row{position:sticky;top:0;z-index:1;}.top-row,article{padding-left:.5rem!important;padding-right:.5rem!important;}}
|
||||
.page{position:relative;display:flex;flex-direction:column;}main{flex:1;}.sidebar,.sidebarSmall{background:-webkit-linear-gradient(to bottom,#c5d6ed,#c5d6ed);background:linear-gradient(to bottom,#c5d6ed,#c5d6ed);}.top-row{background-color:#f7f7f7;border-bottom:1px solid #d6d5d5;height:3.5rem;display:flex;align-items:center;}.top-row ::deep a,.top-row .btn-link{white-space:nowrap;margin-left:1.5rem;}.top-row a:first-child{overflow:hidden;text-overflow:ellipsis;}.bottom-row{color:#dedede;background-color:#000;height:1.6rem;align-items:center;}@media(max-width:640.98px){.top-row:not(.auth){display:none;}.top-row.auth{justify-content:space-between;}.top-row a,.top-row .btn-link{margin-left:0;}}@media(min-width:641px){.page{flex-direction:row;}.sidebar{width:13.5rem;height:100vh;position:sticky;top:0;border-radius:30px;}.sidebarSmall{width:5.5rem;height:100vh;position:sticky;top:0;border-radius:30px;}.top-row{position:sticky;top:0;z-index:1000;}.top-row,article{padding-left:.5rem!important;padding-right:.5rem!important;}}
|
||||
@@ -2,7 +2,7 @@
|
||||
|
||||
@inject NavigationManager NavigationManager
|
||||
|
||||
<div class="top-row ps-3 navbar navbar-dark">
|
||||
<div class="top-row ps-3 navbar navbar-dark shadow-sm">
|
||||
<div class="container-fluid px-0 text-center">
|
||||
@if (!showText)
|
||||
{
|
||||
@@ -12,41 +12,38 @@
|
||||
{
|
||||
<a class="navbar-brand text-center" @onclick="() => ToggleCompress()">Window <i class="fas fa-caret-square-left"></i></a>
|
||||
}
|
||||
<button title="Navigation menu" class="navbar-toggler" @onclick="ToggleNavMenu">
|
||||
<span class="navbar-toggler-icon"></span>
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="@NavMenuCssClass" @onclick="ToggleNavMenu">
|
||||
<nav class="flex-column">
|
||||
<div class="nav-item px-3">
|
||||
<NavLink class="nav-link" href="Home" Match="NavLinkMatch.All">
|
||||
<span class="bi bi-house-fill px-2 fs-4" aria-hidden="true"></span> Home
|
||||
<NavLink class="nav-link" href="EditJWD" Match="NavLinkMatch.All">
|
||||
<span class="fa-solid fa-gear px-2 fs-4" aria-hidden="true"></span>
|
||||
@if (showText)
|
||||
{
|
||||
<span class="@hideText">EditJWD</span>
|
||||
}
|
||||
</NavLink>
|
||||
</div>
|
||||
<div class="nav-item px-3">
|
||||
<NavLink class="nav-link" href="TestComponentTemplate">
|
||||
<span class="bi bi-house-fill px-2 fs-4" aria-hidden="true"></span> <span class="@hideText">TestTemplate</span>
|
||||
<NavLink class="nav-link" href="BaseEdit">
|
||||
<span class="fa-solid fa-pencil px-2 fs-4" aria-hidden="true"></span> <span class="@hideText">BaseEdit</span>
|
||||
</NavLink>
|
||||
</div>
|
||||
<div class="nav-item px-3">
|
||||
<NavLink class="nav-link" href="TestComponentJWD">
|
||||
<span class="bi bi-house-fill px-2 fs-4" aria-hidden="true"></span> <span class="@hideText">TestJWD</span>
|
||||
<NavLink class="nav-link" href="TestError">
|
||||
<span class="fa-solid fa-pencil px-2 fs-4" aria-hidden="true"></span> <span class="@hideText">TestError</span>
|
||||
</NavLink>
|
||||
</div>
|
||||
<div class="nav-item px-3">
|
||||
<NavLink class="nav-link" href="Gerarchia">
|
||||
<span class="bi bi-house-fill px-2 fs-4" aria-hidden="true"></span> <span class="@hideText"> Gerarchia</span>
|
||||
</NavLink>
|
||||
</div>
|
||||
<div class="nav-item px-3">
|
||||
@* <div class="nav-item px-3">
|
||||
<NavLink class="nav-link" href="EditJWD">
|
||||
<span class="bi bi-house-fill px-2 fs-4" aria-hidden="true"></span> <span class="@hideText">EditJWD</span>
|
||||
<span class="fa-solid fa-gear px-2 fs-4" aria-hidden="true"></span> <span class="@hideText">EditJWD</span>
|
||||
</NavLink>
|
||||
</div>
|
||||
<div class="nav-item px-3">
|
||||
<NavLink class="nav-link" href="Aedifica">
|
||||
<span class="bi bi-house-fill px-2 fs-4" aria-hidden="true"></span> <span class="@hideText">Aedifica</span>
|
||||
</NavLink>
|
||||
</div>
|
||||
</div> *@
|
||||
</nav>
|
||||
</div>
|
||||
|
||||
|
||||
@@ -13,7 +13,7 @@ namespace Test.UI.Components.Layout
|
||||
NavigationManager.LocationChanged -= OnLocationChanged;
|
||||
}
|
||||
|
||||
protected string hideText { get => showText ? "" : "invisible"; }
|
||||
protected string hideText { get => showText ? "px-2" : "invisible"; }
|
||||
|
||||
protected string? NavMenuCssClass => collapseNavMenu ? "collapse" : null;
|
||||
|
||||
|
||||
@@ -9,7 +9,7 @@ namespace Test.UI.Components.Pages
|
||||
public partial class Aedifica : IDisposable
|
||||
{
|
||||
|
||||
private string subChannel = "";
|
||||
private string channelSub = "";
|
||||
private string CalcUid = "TestBeam";
|
||||
private string currSvg = "";
|
||||
private string apiUrl = "";
|
||||
@@ -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
|
||||
@@ -37,12 +37,12 @@ namespace Test.UI.Components.Pages
|
||||
|
||||
protected Dictionary<string, string> m_CurrArgs = new Dictionary<string, string>();
|
||||
|
||||
protected override async Task OnInitializedAsync()
|
||||
protected override Task OnInitializedAsync()
|
||||
{
|
||||
ConfInit();
|
||||
DLService.CalcDonePipe.EA_NewMessage += CalcDonePipe_EA_NewMessage;
|
||||
DLService.PipeSvg.EA_NewMessage += PipeSvg_EA_NewMessage;
|
||||
//await ReloadData();
|
||||
await Task.Delay(1);
|
||||
return Task.Delay(1);
|
||||
}
|
||||
|
||||
private void ConfInit()
|
||||
@@ -51,7 +51,7 @@ namespace Test.UI.Components.Pages
|
||||
GenericBasePath = Config.GetValue<string>("ServerConf:GenericBaseUrl") ?? "";
|
||||
//imgTag = Config.GetValue<string>("ServerConf:ImageFileTag") ?? "";
|
||||
calcTag = Config.GetValue<string>("ServerConf:CalcTag") ?? "";
|
||||
subChannel = Config.GetValue<string>("ServerConf:SvgChannel") ?? "";
|
||||
channelSub = Config.GetValue<string>("ServerConf:ChannelSvg") ?? "";
|
||||
}
|
||||
|
||||
private async Task SendBtlRequest(Dictionary<string, string> CurrArgs)
|
||||
@@ -67,14 +67,14 @@ 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;
|
||||
// conversione on-the-fly SVG da mostrare
|
||||
if (!string.IsNullOrEmpty(currArgs.newMessage))
|
||||
{
|
||||
if (currArgs.msgUid.Equals($"{subChannel}:{CalcUid}"))
|
||||
if (currArgs.msgUid.Equals($"{channelSub}:{CalcUid}"))
|
||||
{
|
||||
currSvg = currArgs.newMessage;
|
||||
}
|
||||
|
||||
@@ -0,0 +1,32 @@
|
||||
@page "/BaseEdit"
|
||||
@rendermode InteractiveServer
|
||||
|
||||
<PageTitle>BaseEdit</PageTitle>
|
||||
|
||||
<WebWindowComplex.TableComp ListPayload="SetupList"
|
||||
LiveData="CurrData"
|
||||
baseUser="User"
|
||||
EC_ActionReq="DoAction"
|
||||
EC_DoUpdate="ExecRequest"
|
||||
EC_OnClose="CloseObj">
|
||||
</WebWindowComplex.TableComp>
|
||||
|
||||
|
||||
@if (!string.IsNullOrEmpty(outClose))
|
||||
{
|
||||
<div class="alert alert-danger fs-4">
|
||||
@outClose
|
||||
</div>
|
||||
}
|
||||
else if (!string.IsNullOrEmpty(outSave))
|
||||
{
|
||||
<div class="alert alert-success fs-4">
|
||||
@outSave
|
||||
</div>
|
||||
}
|
||||
|
||||
<div class="card">
|
||||
<div class="card-body small">
|
||||
@JsonSer
|
||||
</div>
|
||||
</div>
|
||||
@@ -0,0 +1,555 @@
|
||||
using Egw.Window.Data;
|
||||
using EgwCoreLib.Lux.Core;
|
||||
using EgwCoreLib.Lux.Core.RestPayload;
|
||||
using EgwCoreLib.Lux.Data.Services;
|
||||
using Microsoft.AspNetCore.Components;
|
||||
using Newtonsoft.Json;
|
||||
using WebWindowComplex;
|
||||
using WebWindowComplex.DTO;
|
||||
using static WebWindowComplex.LayoutConst;
|
||||
|
||||
namespace Test.UI.Components.Pages
|
||||
{
|
||||
public partial class BaseEdit
|
||||
{
|
||||
#region Public Fields
|
||||
|
||||
public string InitialJwd = "";
|
||||
|
||||
#endregion Public Fields
|
||||
|
||||
#region Public Methods
|
||||
|
||||
public void Dispose()
|
||||
{
|
||||
DLService.PipeSvg.EA_NewMessage -= PipeSvg_EA_NewMessage;
|
||||
DLService.PipeShape.EA_NewMessage -= PipeShape_EA_NewMessage;
|
||||
DLService.PipeHwOpt.EA_NewMessage -= PipeHwOption_EA_NewMessage;
|
||||
}
|
||||
|
||||
#endregion Public Methods
|
||||
|
||||
#region Protected Fields
|
||||
|
||||
/// <summary>
|
||||
/// Predisposizione valori live SVG/JWD
|
||||
/// </summary>
|
||||
protected LivePayload CurrData = new LivePayload();
|
||||
|
||||
/// <summary>
|
||||
/// Livello di accesso
|
||||
/// -- true: utente base (versione semplificata)
|
||||
/// -- false: utente avanzato (versione completa)
|
||||
/// </summary>
|
||||
protected bool User = false;
|
||||
|
||||
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 = "";
|
||||
|
||||
/// <summary>
|
||||
/// Configurazione elenchi anagrafiche
|
||||
/// </summary>
|
||||
protected BaseListPayload SetupList = new BaseListPayload();
|
||||
|
||||
#endregion Protected Fields
|
||||
|
||||
#region Protected Properties
|
||||
|
||||
protected List<string> AvailColorMaterialList { get; set; } = new List<string>()
|
||||
{
|
||||
new string("White"),
|
||||
new string("Black"),
|
||||
new string("Blu")
|
||||
};
|
||||
|
||||
protected List<string> AvailFamilyHardwareList { get; set; } = new List<string>()
|
||||
{
|
||||
new string("ArTech"),
|
||||
new string("ArTechPlana")
|
||||
};
|
||||
|
||||
protected List<string> AvailGlassList { get; set; } = new List<string>()
|
||||
{
|
||||
new string("Vetro BE 2S 4/12/4"),
|
||||
new string("Vetro BE 2S 4/16/4"),
|
||||
new string("Vetro BE 3S 4/12/4/12/4"),
|
||||
new string("Vetro BE 3S 4/16/4/16/4"),
|
||||
new string("Vetro BE 2S 4T/12/4T"),
|
||||
new string("Vetro BE 2S 4T/16/4T")
|
||||
};
|
||||
|
||||
protected List<Hardware> AvailHardwareList { get; set; } = new List<Hardware>();
|
||||
|
||||
protected List<string> AvailMaterialList { get; set; } = new List<string>()
|
||||
{
|
||||
new string("Pino"),
|
||||
new string("Abete")
|
||||
};
|
||||
|
||||
/// <summary>
|
||||
/// Lista profili da DB
|
||||
/// </summary>
|
||||
private List<ProfilePayload> AvailProfileList = new List<ProfilePayload>();
|
||||
|
||||
private List<Threshold> ThresholdProfilo78 = new List<Threshold>()
|
||||
{
|
||||
{ new Threshold(3, "Bottom") },
|
||||
{ new Threshold(1, "Threshold") }
|
||||
};
|
||||
|
||||
private List<Threshold> ThresholdProfiloSaomad = new List<Threshold>()
|
||||
{
|
||||
{ new Threshold(3, "Bottom") },
|
||||
{ new Threshold(2, "BottomWaterdrip") },
|
||||
{ new Threshold(1, "Threshold") }
|
||||
};
|
||||
|
||||
private Dictionary<string, double> ParamProfilo78 = new Dictionary<string, double>()
|
||||
{
|
||||
{"Frame_Fill_Rail_DimMax", 85},
|
||||
{"Frame_Fill_Rail_DimMin", 70},
|
||||
{"Frame_Fill_Rail_DimStd", 72},
|
||||
{"Frame_Fixed_Bottom_DimMax", 80},
|
||||
{"Frame_Fixed_Bottom_DimMin", 70},
|
||||
{"Frame_Fixed_Bottom_DimStd", 78},
|
||||
{"Frame_Fixed_Top_DimMax", 80},
|
||||
{"Frame_Fixed_Top_DimMin", 70},
|
||||
{"Frame_Fixed_Top_DimStd", 78},
|
||||
{"Frame_Frame_Split_DimMax", 85},
|
||||
{"Frame_Frame_Split_DimMin", 55},
|
||||
{"Frame_Frame_Split_DimStd", 60},
|
||||
{"Frame_Mixed_Bottom_DimMax", 80},
|
||||
{"Frame_Mixed_Bottom_DimMin", 70},
|
||||
{"Frame_Mixed_Bottom_DimStd", 78},
|
||||
{"Frame_Mixed_Split_DimMax", 110},
|
||||
{"Frame_Mixed_Split_DimMin", 70},
|
||||
{"Frame_Mixed_Split_DimStd", 90},
|
||||
{"Frame_Mixed_Top_DimMax", 80},
|
||||
{"Frame_Mixed_Top_DimMin", 70},
|
||||
{"Frame_Mixed_Top_DimStd", 78},
|
||||
{"Frame_Rail_Bottom_DimMax", 80},
|
||||
{"Frame_Rail_Bottom_DimMin", 70},
|
||||
{"Frame_Rail_Bottom_DimStd", 78},
|
||||
{"Frame_Rail_DimMax", 78},
|
||||
{"Frame_Rail_DimMin", 68},
|
||||
{"Frame_Rail_DimStd", 72},
|
||||
{"Frame_Sash_Bottom_DimMax", 80},
|
||||
{"Frame_Sash_Bottom_DimMin", 70},
|
||||
{"Frame_Sash_Bottom_DimStd", 78},
|
||||
{"Frame_Sash_Horizontal_DimMax", 110},
|
||||
{"Frame_Sash_Horizontal_DimMin", 75},
|
||||
{"Frame_Sash_Horizontal_DimStd", 95},
|
||||
{"Frame_Sash_Threshold_DimMax", 26},
|
||||
{"Frame_Sash_Threshold_DimMin", 24},
|
||||
{"Frame_Sash_Threshold_DimStd", 25},
|
||||
{"Frame_Sash_Top_DimMax", 80},
|
||||
{"Frame_Sash_Top_DimMin", 70},
|
||||
{"Frame_Sash_Top_DimStd", 78},
|
||||
{"Frame_Sash_Vertical_DimMax", 110},
|
||||
{"Frame_Sash_Vertical_DimMin", 75},
|
||||
{"Frame_Sash_Vertical_DimStd", 95},
|
||||
{"Frame_Slide_Bottom_DimMax", 60},
|
||||
{"Frame_Slide_Bottom_DimMin", 50},
|
||||
{"Frame_Slide_Bottom_DimStd", 55},
|
||||
{"Frame_Slide_Fixed_DimMax", 60},
|
||||
{"Frame_Slide_Fixed_DimMin", 50},
|
||||
{"Frame_Slide_Fixed_DimStd", 55},
|
||||
{"Frame_Slide_MovableBack_Bottom_DimMax", 60},
|
||||
{"Frame_Slide_MovableBack_Bottom_DimMin", 50},
|
||||
{"Frame_Slide_MovableBack_Bottom_DimStd", 55},
|
||||
{"Frame_Slide_MovableBack_Threshold_DimMax", 10},
|
||||
{"Frame_Slide_MovableBack_Threshold_DimMin", 3},
|
||||
{"Frame_Slide_MovableBack_Threshold_DimStd", 4},
|
||||
{"Frame_Slide_Movable_DimMax", 60},
|
||||
{"Frame_Slide_Movable_DimMin", 50},
|
||||
{"Frame_Slide_Movable_DimStd", 55},
|
||||
{"Frame_Slide_Threshold_DimMax", 10},
|
||||
{"Frame_Slide_Threshold_DimMin", 3},
|
||||
{"Frame_Slide_Threshold_DimStd", 4},
|
||||
{"Frame_Slide_Top_DimMax", 60},
|
||||
{"Frame_Slide_Top_DimMin", 50},
|
||||
{"Frame_Slide_Top_DimStd", 55},
|
||||
{"Sash_Fill_Rail_DimMax", 80},
|
||||
{"Sash_Fill_Rail_DimMin", 70},
|
||||
{"Sash_Fill_Rail_DimStd", 78},
|
||||
{"Sash_Frame_Bottom_DimMax", 80},
|
||||
{"Sash_Frame_Bottom_DimMin", 70},
|
||||
{"Sash_Frame_Bottom_DimStd", 78},
|
||||
{"Sash_Frame_Top_DimMax", 80},
|
||||
{"Sash_Frame_Top_DimMin", 70},
|
||||
{"Sash_Frame_Top_DimStd", 78},
|
||||
{"Sash_French_In_DimMax", 80},
|
||||
{"Sash_French_In_DimMin", 70},
|
||||
{"Sash_French_In_DimStd", 78},
|
||||
{"Sash_French_Out_DimMax", 80},
|
||||
{"Sash_French_Out_DimMin", 70},
|
||||
{"Sash_French_Out_DimStd", 78},
|
||||
{"Sash_Rail_Bottom_DimMax", 80},
|
||||
{"Sash_Rail_Bottom_DimMin", 70},
|
||||
{"Sash_Rail_Bottom_DimStd", 78},
|
||||
{"Sash_Rail_DimMax", 80},
|
||||
{"Sash_Rail_DimMin", 70},
|
||||
{"Sash_Rail_DimStd", 78},
|
||||
{"Sash_Sash_Active_DimMax", 80},
|
||||
{"Sash_Sash_Active_DimMin", 70},
|
||||
{"Sash_Sash_Active_DimStd", 78},
|
||||
{"Sash_Sash_Inactive_DimMax", 80},
|
||||
{"Sash_Sash_Inactive_DimMin", 70},
|
||||
{"Sash_Sash_Inactive_DimStd", 78},
|
||||
{"Sash_Sash_Split_DimMax", 70},
|
||||
{"Sash_Sash_Split_DimMin", 50},
|
||||
{"Sash_Sash_Split_DimStd", 60},
|
||||
{"Sash_Slide_Active_DimMax", 90},
|
||||
{"Sash_Slide_Active_DimMin", 70},
|
||||
{"Sash_Slide_Active_DimStd", 80},
|
||||
{"Sash_Slide_Active_In_DimMax", 90},
|
||||
{"Sash_Slide_Active_In_DimMin", 70},
|
||||
{"Sash_Slide_Active_In_DimStd", 80},
|
||||
{"Sash_Slide_Fixed_Bottom_DimMax", 150},
|
||||
{"Sash_Slide_Fixed_Bottom_DimMin", 120},
|
||||
{"Sash_Slide_Fixed_Bottom_DimStd", 135},
|
||||
{"Sash_Slide_Fixed_Side_DimMax", 90},
|
||||
{"Sash_Slide_Fixed_Side_DimMin", 70},
|
||||
{"Sash_Slide_Fixed_Side_DimStd", 80},
|
||||
{"Sash_Slide_Fixed_Top_DimMax", 90},
|
||||
{"Sash_Slide_Fixed_Top_DimMin", 70},
|
||||
{"Sash_Slide_Fixed_Top_DimStd", 80},
|
||||
{"Sash_Slide_Inactive_DimMax", 90},
|
||||
{"Sash_Slide_Inactive_DimMin", 70},
|
||||
{"Sash_Slide_Inactive_DimStd", 80},
|
||||
{"Sash_Slide_MovableBack_Bottom_DimMax", 150},
|
||||
{"Sash_Slide_MovableBack_Bottom_DimMin", 120},
|
||||
{"Sash_Slide_MovableBack_Bottom_DimStd", 135},
|
||||
{"Sash_Slide_MovableBack_Side_DimMax", 90},
|
||||
{"Sash_Slide_MovableBack_Side_DimMin", 70},
|
||||
{"Sash_Slide_MovableBack_Side_DimStd", 80},
|
||||
{"Sash_Slide_MovableBack_Top_DimMax", 90},
|
||||
{"Sash_Slide_MovableBack_Top_DimMin", 70},
|
||||
{"Sash_Slide_MovableBack_Top_DimStd", 80},
|
||||
{"Sash_Slide_Movable_Bottom_DimMax", 150},
|
||||
{"Sash_Slide_Movable_Bottom_DimMin", 120},
|
||||
{"Sash_Slide_Movable_Bottom_DimStd", 135},
|
||||
{"Sash_Slide_Movable_Side_DimMax", 90},
|
||||
{"Sash_Slide_Movable_Side_DimMin", 70},
|
||||
{"Sash_Slide_Movable_Side_DimStd", 80},
|
||||
{"Sash_Slide_Movable_Top_DimMax", 90},
|
||||
{"Sash_Slide_Movable_Top_DimMin", 70},
|
||||
{"Sash_Slide_Movable_Top_DimStd", 80}
|
||||
};
|
||||
|
||||
private Dictionary<string, double> ParamProfiloSaomad = new Dictionary<string, double>()
|
||||
{
|
||||
{"Frame_Frame_Split_DimMax", 85},
|
||||
{"Frame_Frame_Split_DimMin", 55},
|
||||
{"Frame_Frame_Split_DimStd", 60},
|
||||
{"Frame_Mixed_Bottom_DimMax", 80},
|
||||
{"Frame_Mixed_Bottom_DimMin", 70},
|
||||
{"Frame_Mixed_Bottom_DimStd", 78},
|
||||
{"Frame_Mixed_Split_DimMax", 110},
|
||||
{"Frame_Mixed_Split_DimMin", 70},
|
||||
{"Frame_Mixed_Split_DimStd", 90},
|
||||
{"Frame_Mixed_Top_DimMax", 80},
|
||||
{"Frame_Mixed_Top_DimMin", 70},
|
||||
{"Frame_Mixed_Top_DimStd", 78},
|
||||
{"Frame_Rail_Bottom_DimMax", 80}
|
||||
};
|
||||
|
||||
[Inject]
|
||||
protected IConfiguration Config { get; set; } = null!;
|
||||
|
||||
[Inject]
|
||||
protected DataLayerServices DLService { get; set; } = null!;
|
||||
|
||||
[Inject]
|
||||
protected ImageCacheService ICService { get; set; } = null!;
|
||||
|
||||
protected MarkupString JsonSer
|
||||
{
|
||||
get => (MarkupString)currJwd.Replace(Environment.NewLine, "<br/>").Replace(" ", " ");
|
||||
}
|
||||
|
||||
protected string SelColorMaterial { get; set; } = "";
|
||||
protected string SelFamilyHardware { get; set; } = "";
|
||||
protected string SelGlass { get; set; } = "";
|
||||
protected string SelMaterial { get; set; } = "";
|
||||
|
||||
#endregion Protected Properties
|
||||
|
||||
#region Protected Methods
|
||||
|
||||
protected override void OnAfterRender(bool firstRender)
|
||||
{
|
||||
if (firstRender)
|
||||
{
|
||||
// JS interop or data fetches go here
|
||||
isInteractive = true;
|
||||
}
|
||||
}
|
||||
|
||||
protected override async Task OnInitializedAsync()
|
||||
{
|
||||
ConfInit();
|
||||
User = true;
|
||||
Random random = new Random();
|
||||
CalcUid = Convert.ToString(random.Next(1000, 10000));
|
||||
windowUid = CalcUid;
|
||||
//initialJwd = File.ReadAllText("Data\\FinestraSplitGrid.jwd");
|
||||
InitialJwd = File.ReadAllText("Data\\AntaDoppia.jwd");
|
||||
//initialJwd = File.ReadAllText("Data\\ArcoAntaDoppia.jwd");
|
||||
currJwd = InitialJwd;
|
||||
// rileggo altri dati
|
||||
await ReloadData();
|
||||
// costruisco lista profili
|
||||
ProfilePayload pp1 = new ProfilePayload()
|
||||
{
|
||||
ProfileName = "Profilo78",
|
||||
ThresholdList = ThresholdProfilo78,
|
||||
ParameterDict = ParamProfilo78
|
||||
};
|
||||
ProfilePayload pp2 = new ProfilePayload()
|
||||
{
|
||||
ProfileName = "ProfiloSaomad",
|
||||
ThresholdList = ThresholdProfiloSaomad,
|
||||
ParameterDict = ParamProfiloSaomad
|
||||
};
|
||||
AvailProfileList = new List<ProfilePayload> { pp1, pp2 };
|
||||
// preparo conf oggetti x controllo
|
||||
SetupList = new BaseListPayload()
|
||||
{
|
||||
ColorMaterial = AvailColorMaterialList,
|
||||
FamilyHardware = AvailFamilyHardwareList,
|
||||
Glass = AvailGlassList,
|
||||
Hardware = AvailHardwareList,
|
||||
Wood = AvailMaterialList,
|
||||
ProfileList = AvailProfileList
|
||||
};
|
||||
CurrData = new LivePayload()
|
||||
{
|
||||
CurrJwd = InitialJwd,
|
||||
SvgPreview = currSvg,
|
||||
DictShape = currGroupShape,
|
||||
DictOptionsXml = currHwOption
|
||||
};
|
||||
DLService.PipeSvg.EA_NewMessage += PipeSvg_EA_NewMessage;
|
||||
DLService.PipeShape.EA_NewMessage += PipeShape_EA_NewMessage;
|
||||
DLService.PipeHwOpt.EA_NewMessage += PipeHwOption_EA_NewMessage;
|
||||
}
|
||||
|
||||
#endregion Protected Methods
|
||||
|
||||
#region Private Fields
|
||||
|
||||
private string apiUrl = "";
|
||||
private string calcTag = "";
|
||||
private string CalcUid = "CurrWindow";
|
||||
private string windowUid = "CurrWindow";
|
||||
private string cFileHardware = "Hardware/Setup.json";
|
||||
private string currSvg = "";
|
||||
private string GenericBasePath = "";
|
||||
|
||||
//private string colorMassUpdate;
|
||||
//private string familyHWMassUpdate;
|
||||
//private string glassMassUpdate;
|
||||
//private Hardware hardwareMassUpdate;
|
||||
//private string materialMassUpdate;
|
||||
//private string profileMassUpdate;
|
||||
|
||||
/// <summary>
|
||||
/// Semaforo x definire se sia già in modalità ionterattiva o di prerendering
|
||||
/// </summary>
|
||||
private bool isInteractive = false;
|
||||
|
||||
private string outClose = "";
|
||||
private string outSave = "";
|
||||
|
||||
private string imgBasePath = "";
|
||||
|
||||
private string channelHwOpt = "";
|
||||
private string channelShape = "";
|
||||
private string channelSvg = "";
|
||||
|
||||
#endregion Private Fields
|
||||
|
||||
#region Private Methods
|
||||
|
||||
/// <summary>
|
||||
/// Effettua chiusura oggetto con eventuale save
|
||||
/// </summary>
|
||||
/// <param name="reqSave"></param>
|
||||
private void CloseObj(DataSave reqSave)
|
||||
{
|
||||
currJwd = reqSave.currJwd;
|
||||
outClose = !reqSave.ForceSave ? "Richiesto chiusura!" : "";
|
||||
outSave = reqSave.ForceSave ? "Richiesto salvataggio!" : "";
|
||||
}
|
||||
|
||||
private void ConfInit()
|
||||
{
|
||||
apiUrl = Config.GetValue<string>("ServerConf:Prog.ApiUrl") ?? "";
|
||||
imgBasePath = Config.GetValue<string>("ServerConf:ImageBaseUrl") ?? "";
|
||||
GenericBasePath = Config.GetValue<string>("ServerConf:GenericBaseUrl") ?? "";
|
||||
calcTag = Config.GetValue<string>("ServerConf:CalcTag") ?? "";
|
||||
channelSvg = Config.GetValue<string>("ServerConf:ChannelSvg") ?? "";
|
||||
channelShape = Config.GetValue<string>("ServerConf:ChannelShape") ?? "";
|
||||
channelHwOpt = Config.GetValue<string>("ServerConf:ChannelHwOpt") ?? "";
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Esecuzione azione richiesta
|
||||
/// </summary>
|
||||
/// <param name="actReq">Azione richiesta</param>
|
||||
private void DoAction(DataAction actReq)
|
||||
{
|
||||
switch (actReq)
|
||||
{
|
||||
case DataAction.None:
|
||||
break;
|
||||
|
||||
case DataAction.ResetDictShape:
|
||||
CurrData.DictShape = new Dictionary<int, string>();
|
||||
break;
|
||||
|
||||
case DataAction.ResetHwOpt:
|
||||
CurrData.DictOptionsXml = new Dictionary<int, string>();
|
||||
break;
|
||||
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Esecuzione richiesta
|
||||
/// </summary>
|
||||
/// <param name="CurrArgs"></param>
|
||||
/// <returns></returns>
|
||||
private async Task ExecRequest(Dictionary<string, string> CurrArgs)
|
||||
{
|
||||
// Proseguo solo se sono in interattivo (NO prerender pagina)
|
||||
if (isInteractive)
|
||||
{
|
||||
outClose = "";
|
||||
outSave = "";
|
||||
// verifico se contiene JWD, lo aggiorno
|
||||
if (CurrArgs.ContainsKey("SerializedData"))
|
||||
{
|
||||
currJwd = CurrArgs["SerializedData"];
|
||||
CurrData.CurrJwd = currJwd;
|
||||
}
|
||||
// se il SSE variato --> invio
|
||||
if (!currJwd.Equals(prevJwd) || !EgwCoreLib.Utils.DictUtils.DictAreEqual(m_CurrArgs, CurrArgs))
|
||||
{
|
||||
m_CurrArgs = CurrArgs;
|
||||
prevJwd = currJwd;
|
||||
CalcRequestDTO calcRequestDTO = new CalcRequestDTO();
|
||||
calcRequestDTO.EnvType = EgwMultiEngineManager.Data.Constants.EXECENVIRONMENTS.WINDOW;
|
||||
calcRequestDTO.DictExec = m_CurrArgs;
|
||||
// chiamo la chiamata POST alla API, che manda la richiesta via REDIS
|
||||
await ICService.CallRestPost($"{apiUrl}/{GenericBasePath}", $"{calcTag}/{CalcUid}", calcRequestDTO);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private async void PipeHwOption_EA_NewMessage(object? sender, EventArgs e)
|
||||
{
|
||||
// aggiorno visualizzazione
|
||||
PubSubEventArgs currArgs = (PubSubEventArgs)e;
|
||||
// conversione on-the-fly SVG da mostrare
|
||||
if (!string.IsNullOrEmpty(currArgs.newMessage))
|
||||
{
|
||||
if (currArgs.msgUid.StartsWith($"{channelHwOpt}:{windowUid}") && currArgs.newMessage.Length > 2)
|
||||
{
|
||||
// deserializzo il dizionario delle risposte...
|
||||
Dictionary<int, string> rawDict = JsonConvert.DeserializeObject<Dictionary<int, string>>(currArgs.newMessage) ?? new Dictionary<int, string>();
|
||||
if (rawDict.Count > 0)
|
||||
{
|
||||
currHwOption = rawDict;
|
||||
CurrData.DictOptionsXml = currHwOption;
|
||||
}
|
||||
}
|
||||
await InvokeAsync(StateHasChanged);
|
||||
}
|
||||
await Task.Delay(1);
|
||||
}
|
||||
|
||||
private async void PipeShape_EA_NewMessage(object? sender, EventArgs e)
|
||||
{
|
||||
// aggiorno visualizzazione
|
||||
PubSubEventArgs currArgs = (PubSubEventArgs)e;
|
||||
// conversione on-the-fly SVG da mostrare
|
||||
if (!string.IsNullOrEmpty(currArgs.newMessage) && currArgs.newMessage.Length > 2)
|
||||
{
|
||||
if (currArgs.msgUid.StartsWith($"{channelShape}:{windowUid}"))
|
||||
{
|
||||
// deserializzo il dizionario delle risposte...
|
||||
var rawDict = JsonConvert.DeserializeObject<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($"{channelSvg}:{windowUid}"))
|
||||
{
|
||||
currSvg = currArgs.newMessage;
|
||||
CurrData.SvgPreview = currArgs.newMessage;
|
||||
}
|
||||
await InvokeAsync(StateHasChanged);
|
||||
}
|
||||
await Task.Delay(1);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Rilettura dati
|
||||
/// </summary>
|
||||
/// <returns></returns>
|
||||
private Task ReloadData()
|
||||
{
|
||||
//return base.OnInitializedAsync();
|
||||
AvailHardwareList = new List<Hardware>();
|
||||
if (File.Exists(cFileHardware))
|
||||
{
|
||||
string rawValHW = File.ReadAllText(cFileHardware);
|
||||
var rawListHW = JsonConvert.DeserializeObject<List<Hardware>>(rawValHW) ?? new List<Hardware>();
|
||||
foreach (var item in rawListHW)
|
||||
{
|
||||
AvailHardwareList.Add(item);
|
||||
}
|
||||
}
|
||||
return Task.Delay(100);
|
||||
}
|
||||
|
||||
private void updateInfoJwd(string currSer, string? newFamilyHardware, Hardware? newHardware, string? newColorMaterial, string? newMaterial, string? newGlass, string? newProfile)
|
||||
{
|
||||
Dictionary<string, string> DictParam = new Dictionary<string, string>();
|
||||
if (!string.IsNullOrEmpty(newFamilyHardware))
|
||||
DictParam.Add("FamilyHardware", newFamilyHardware!);
|
||||
if (!string.IsNullOrEmpty(newColorMaterial))
|
||||
DictParam.Add("Color", newColorMaterial!);
|
||||
if (!string.IsNullOrEmpty(newMaterial))
|
||||
DictParam.Add("Material", newMaterial!);
|
||||
if (!string.IsNullOrEmpty(newGlass))
|
||||
DictParam.Add("Glass", newGlass!);
|
||||
if (!string.IsNullOrEmpty(newProfile))
|
||||
DictParam.Add("Profile", newProfile!);
|
||||
var dp = SerialMan.MassUpdate(currSer, DictParam);
|
||||
CurrData.CurrJwd = dp.serializeStruct;
|
||||
//var newJwd = SerialMan.MassUpdate(currSer, shape, newFamilyHardware, newHardware, newColorMaterial, newMaterial, newGlass, newProfile);
|
||||
//CurrData.CurrJwd = newJwd;
|
||||
}
|
||||
|
||||
#endregion Private Methods
|
||||
}
|
||||
}
|
||||
@@ -1,14 +1,95 @@
|
||||
@page "/EditJWD"
|
||||
@page "/"
|
||||
@page "/EditJWD"
|
||||
@rendermode InteractiveServer
|
||||
|
||||
<PageTitle>EditJWD</PageTitle>
|
||||
|
||||
@* <div class="row mb-2">
|
||||
<div class="col-6">
|
||||
<div class="input-group mb-2 justify-content-center">
|
||||
<span class="input-group-text">FamilyHw</span>
|
||||
<select class="form-select" @bind="familyHWMassUpdate">
|
||||
@foreach (var item in AvailFamilyHardwareList)
|
||||
{
|
||||
<option value="@item">@item</option>
|
||||
}
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-6">
|
||||
<div class="input-group mb-2 justify-content-center">
|
||||
<span class="input-group-text">Color</span>
|
||||
<select class="form-select" @bind="colorMassUpdate">
|
||||
@foreach (var item in AvailColorMaterialList)
|
||||
{
|
||||
<option value="@item">@item</option>
|
||||
}
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-6">
|
||||
<div class="input-group mb-2 justify-content-center">
|
||||
<span class="input-group-text">Wood</span>
|
||||
<select class="form-select" @bind="woodMassUpdate">
|
||||
@foreach (var item in AvailWoodList)
|
||||
{
|
||||
<option value="@item">@item</option>
|
||||
}
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-6">
|
||||
<div class="input-group mb-2 justify-content-center">
|
||||
<span class="input-group-text">Glass</span>
|
||||
<select class="form-select" @bind="glassMassUpdate">
|
||||
@foreach (var item in AvailGlassList)
|
||||
{
|
||||
<option value="@item">@item</option>
|
||||
}
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-6">
|
||||
<div class="input-group mb-2 justify-content-center">
|
||||
<span class="input-group-text">Profile</span>
|
||||
<select class="form-select" @bind="profileMassUpdate">
|
||||
@foreach (var item in DescriptionProfileList)
|
||||
{
|
||||
<option value="@item">@item</option>
|
||||
}
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row mb-2">
|
||||
<div class="col-2">
|
||||
<button class="btn btn-outline-secondary btn-sm" @onclick="() => UpdateInfoJwdAsync(CurrData.CurrJwd, familyHWMassUpdate, colorMassUpdate, woodMassUpdate, glassMassUpdate, profileMassUpdate)">Save</button>
|
||||
</div>
|
||||
</div> *@
|
||||
|
||||
<WebWindowComplex.TableComp ListPayload="SetupList"
|
||||
LiveData="CurrData"
|
||||
EC_OnUpdate="SaveJWD"
|
||||
EC_OnClose="CloseObj">
|
||||
</WebWindowComplex.TableComp>
|
||||
@if (doEdit)
|
||||
{
|
||||
<WebWindowComplex.TableComp ListPayload="SetupList"
|
||||
LiveData="CurrData"
|
||||
PendReq="DictPendReq"
|
||||
baseUser="User"
|
||||
EC_ActionReq="DoAction"
|
||||
EC_DoUpdate="ExecRequest"
|
||||
EC_OnClose="CloseObj"
|
||||
EC_UpdateReqPend="PendAction">
|
||||
</WebWindowComplex.TableComp>
|
||||
}
|
||||
else
|
||||
{
|
||||
<div class="d-flex justify-content-between">
|
||||
<div class="px-0">
|
||||
<button class="btn btn-primary" @onclick="SetEdit">Click per editare</button>
|
||||
</div>
|
||||
<div class="px-0">
|
||||
<button class="btn btn-primary" @onclick="() => ToggleJwd()">Toggle JWD</button>
|
||||
</div>
|
||||
</div>
|
||||
}
|
||||
|
||||
@if (!string.IsNullOrEmpty(outClose))
|
||||
{
|
||||
@@ -22,6 +103,9 @@ else if (!string.IsNullOrEmpty(outSave))
|
||||
@outSave
|
||||
</div>
|
||||
}
|
||||
<p>
|
||||
@currJwd
|
||||
</p>
|
||||
|
||||
<div class="card">
|
||||
<div class="card-body small">
|
||||
@JsonSer
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -1,86 +1,56 @@
|
||||
using EgwCoreLib.Lux.Core;
|
||||
using Egw.Window.Data;
|
||||
using EgwCoreLib.Lux.Core;
|
||||
using EgwCoreLib.Lux.Core.RestPayload;
|
||||
using EgwCoreLib.Lux.Data.DbModel.Config;
|
||||
using EgwCoreLib.Lux.Data.DbModel.Utils;
|
||||
using EgwCoreLib.Lux.Data.Services;
|
||||
using EgwCoreLib.Lux.Data.Services.Config;
|
||||
using EgwCoreLib.Lux.Data.Services.Utils;
|
||||
using Microsoft.AspNetCore.Components;
|
||||
using Newtonsoft.Json;
|
||||
using NLog;
|
||||
using System.Diagnostics;
|
||||
using System.Security.AccessControl;
|
||||
using Egw.Window.Data;
|
||||
using WebWindowComplex;
|
||||
using WebWindowComplex.DTO;
|
||||
using static WebWindowComplex.LayoutConst;
|
||||
|
||||
namespace Test.UI.Components.Pages
|
||||
{
|
||||
public partial class EditJWD : IDisposable
|
||||
{
|
||||
#region Public Properties
|
||||
|
||||
public string InitialJwd = "";
|
||||
public Template SelTemplate { get; set; } = new Template(0, "---SELECT---", "", "");
|
||||
|
||||
#endregion Public Properties
|
||||
|
||||
#region Public Methods
|
||||
|
||||
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;
|
||||
DLService.PipeProfElement.EA_NewMessage -= PipeProfElement_EA_NewMessage;
|
||||
}
|
||||
|
||||
#endregion Public Methods
|
||||
|
||||
#region Protected Fields
|
||||
|
||||
protected string currJwd = "...";
|
||||
protected string prevJwd = "";
|
||||
protected Dictionary<string, string> m_CurrArgs = new Dictionary<string, string>();
|
||||
/// <summary>
|
||||
/// Configurazione elenchi anagrafiche
|
||||
/// </summary>
|
||||
protected BaseListPayload SetupList = new BaseListPayload();
|
||||
|
||||
/// <summary>
|
||||
/// Dizionario richieste pendenti
|
||||
/// </summary>
|
||||
protected Dictionary<string, string> DictPendReq = new();
|
||||
|
||||
/// <summary>
|
||||
/// Livello di accesso
|
||||
/// -- true: utente base (versione semplificata)
|
||||
/// -- false: utente avanzato (versione completa)
|
||||
/// </summary>
|
||||
protected bool User = false;
|
||||
|
||||
#endregion Protected Fields
|
||||
|
||||
#region Protected Properties
|
||||
|
||||
protected List<TemplateSelectDTO> AvailTemplateList { get; set; } = new List<TemplateSelectDTO>();
|
||||
protected List<Hardware> AvailHardwareList { get; set; } = new List<Hardware>();
|
||||
protected List<string> AvailFamilyHardwareList { get; set; } = new List<string>()
|
||||
{
|
||||
new string("Profilo78"),
|
||||
new string("Arc")
|
||||
};
|
||||
protected List<string> AvailColorMaterialList { get; set; } = new List<string>()
|
||||
{
|
||||
new string("White"),
|
||||
new string("Black"),
|
||||
new string("Blu")
|
||||
};
|
||||
protected List<string> AvailMaterialList { get; set; } = new List<string>()
|
||||
{
|
||||
new string("Pino"),
|
||||
new string("Abete")
|
||||
};
|
||||
protected List<string> AvailGlassList { get; set; } = new List<string>()
|
||||
{
|
||||
new string("Vetro BE 2S 4/12/4"),
|
||||
new string("Vetro BE 2S 4/16/4"),
|
||||
new string("Vetro BE 3S 4/12/4/12/4"),
|
||||
new string("Vetro BE 3S 4/16/4/16/4"),
|
||||
new string("Vetro BE 2S 4T/12/4T"),
|
||||
new string("Vetro BE 2S 4T/16/4T")
|
||||
};
|
||||
protected string SelFamilyHardware { get; set; } = "";
|
||||
protected string SelColorMaterial { get; set; } = "";
|
||||
protected string SelMaterial { get; set; } = "";
|
||||
protected string SelGlass { get; set; } = "";
|
||||
|
||||
[Inject]
|
||||
protected IConfiguration Config { get; set; } = null!;
|
||||
|
||||
[Inject]
|
||||
protected DataLayerServices DLService { get; set; } = null!;
|
||||
|
||||
[Inject]
|
||||
protected ImageCacheService ICService { get; set; } = null!;
|
||||
|
||||
protected MarkupString JsonSer
|
||||
{
|
||||
get => (MarkupString)currJwd.Replace(Environment.NewLine, "<br/>").Replace(" ", " ");
|
||||
@@ -90,72 +60,409 @@ 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\\AntaDoppia.jwd");
|
||||
currJwd = InitialJwd;
|
||||
await ReloadBaseList();
|
||||
User = false;
|
||||
Random random = new Random();
|
||||
CalcUid = Convert.ToString(random.Next(1000, 10000));
|
||||
windowUid = CalcUid;
|
||||
currJwd = initialJwd;
|
||||
// rileggo altri dati
|
||||
await ReloadData();
|
||||
//await ReloadData();
|
||||
// converto i profili nel nuovo formato x payload...
|
||||
var profList = AvailProfileList.Select(x => new ProfilePayload()
|
||||
{
|
||||
ProfileName = x.Code,
|
||||
ThresholdList = x.ThresholdList,
|
||||
ParameterDict = x.ProfileDataDict
|
||||
}).ToList();
|
||||
// preparo conf oggetti x controllo
|
||||
SetupList = SetupList = new BaseListPayload()
|
||||
SetupList = new BaseListPayload()
|
||||
{
|
||||
ColorMaterial = AvailColorMaterialList,
|
||||
FamilyHardware = AvailFamilyHardwareList,
|
||||
Glass = AvailGlassList,
|
||||
Hardware = AvailHardwareList,
|
||||
Material = AvailMaterialList,
|
||||
TemplateDTO = null
|
||||
Wood = AvailWoodList,
|
||||
ProfileList = profList
|
||||
};
|
||||
CurrData = new LivePayload()
|
||||
{
|
||||
InitJwd = InitialJwd,
|
||||
SvgPreview = currSvg
|
||||
CurrJwd = currJwd,
|
||||
SvgPreview = currSvg,
|
||||
DictShape = currGroupShape,
|
||||
DictOptionsXml = currHwOption
|
||||
};
|
||||
DLService.CalcDonePipe.EA_NewMessage += CalcDonePipe_EA_NewMessage;
|
||||
DescriptionProfileList = profList.Select(x => x.ProfileName).ToList();
|
||||
DLService.PipeSvg.EA_NewMessage += PipeSvg_EA_NewMessage;
|
||||
DLService.PipeShape.EA_NewMessage += PipeShape_EA_NewMessage;
|
||||
DLService.PipeHwOpt.EA_NewMessage += PipeHwOption_EA_NewMessage;
|
||||
DLService.PipeProfElement.EA_NewMessage += PipeProfElement_EA_NewMessage;
|
||||
}
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// Configurazione elenchi anagrafiche
|
||||
/// </summary>
|
||||
protected BaseListPayload SetupList = new BaseListPayload();
|
||||
/// <summary>
|
||||
/// Predisposizione valori live SVG/JWD
|
||||
/// </summary>
|
||||
protected LivePayload CurrData = new LivePayload();
|
||||
|
||||
#endregion Protected Methods
|
||||
|
||||
#region Private Properties
|
||||
|
||||
[Inject]
|
||||
private ConfigDataService CDService { get; set; } = default!;
|
||||
|
||||
[Inject]
|
||||
private IConfGlassService CGService { get; set; } = null!;
|
||||
|
||||
[Inject]
|
||||
private IConfProfileService CPService { get; set; } = null!;
|
||||
|
||||
[Inject]
|
||||
private IConfWoodService CWService { get; set; } = null!;
|
||||
|
||||
[Inject]
|
||||
private IGenValService GVService { get; set; } = default!;
|
||||
|
||||
[Inject]
|
||||
private IConfiguration Config { get; set; } = null!;
|
||||
|
||||
[Inject]
|
||||
private DataLayerServices DLService { get; set; } = null!;
|
||||
|
||||
[Inject]
|
||||
private ImageCacheService ICService { get; set; } = null!;
|
||||
|
||||
private string SelColorMaterial { get; set; } = "";
|
||||
|
||||
private string SelFamilyHardware { get; set; } = "";
|
||||
|
||||
private string SelGlass { get; set; } = "";
|
||||
|
||||
private string SelWood { get; set; } = "";
|
||||
|
||||
#endregion Private Properties
|
||||
|
||||
#region Private Fields
|
||||
|
||||
private List<GlassModel> AllConfGlass = new();
|
||||
private List<GenValueModel> AllColors = new();
|
||||
private List<HardwareModel> AllConfHardware = new();
|
||||
private List<WoodModel> AllConfWood = new();
|
||||
private List<string> AvailColorMaterialList = new List<string>();
|
||||
private List<string> AvailFamilyHardwareList = new List<string>();
|
||||
private List<string> AvailGlassList = new List<string>();
|
||||
private List<Hardware> AvailHardwareList = new();
|
||||
private List<string> AvailWoodList = new List<string>();
|
||||
private List<ProfileModel> AvailProfileList = new();
|
||||
|
||||
private List<string> DescriptionProfileList = new();
|
||||
|
||||
private EgwMultiEngineManager.Data.Constants.EXECENVIRONMENTS cEnvir = EgwMultiEngineManager.Data.Constants.EXECENVIRONMENTS.WINDOW;
|
||||
|
||||
/// <summary>
|
||||
/// Predisposizione valori live SVG/JWD
|
||||
/// </summary>
|
||||
private LivePayload CurrData = new LivePayload();
|
||||
|
||||
private List<AreaProfiles> currElement = new List<AreaProfiles>();
|
||||
|
||||
private Dictionary<int, string> currGroupShape = new Dictionary<int, string>();
|
||||
|
||||
private Dictionary<int, string> currHwOption = new Dictionary<int, string>();
|
||||
|
||||
private string currJwd = "...";
|
||||
|
||||
private Dictionary<string, string> m_CurrArgs = new Dictionary<string, string>();
|
||||
|
||||
private string prevJwd = "";
|
||||
|
||||
private string apiUrl = "";
|
||||
|
||||
///// <summary>
|
||||
///// Lista profili da DB
|
||||
///// </summary>
|
||||
//private List<ProfilePayload> AvailProfileList = new List<ProfilePayload>();
|
||||
|
||||
private string calcTag = "";
|
||||
|
||||
private string CalcUid = "CurrWindow";
|
||||
private string cFileTemplate = "Data/Setup.json";
|
||||
|
||||
private string cFileHardware = "Hardware/Setup.json";
|
||||
private TemplateSelectDTO? currSel = null;
|
||||
|
||||
private string channelHwOpt = "";
|
||||
|
||||
private string channelProfElem = "";
|
||||
|
||||
private string channelProfList = "";
|
||||
|
||||
private string channelShape = "";
|
||||
|
||||
private string channelSvg = "";
|
||||
|
||||
private string currSvg = "";
|
||||
|
||||
private string imgBasePath = "";
|
||||
private bool doEdit = false;
|
||||
|
||||
private string GenericBasePath = "";
|
||||
|
||||
private string subChannel = "";
|
||||
private string imgBasePath = "";
|
||||
|
||||
/// <summary>
|
||||
/// Semaforo x definire se sia già in modalità ionterattiva o di prerendering
|
||||
/// </summary>
|
||||
private bool isInteractive = false;
|
||||
|
||||
private string colorMassUpdate;
|
||||
private string familyHWMassUpdate;
|
||||
private string glassMassUpdate;
|
||||
private Hardware hardwareMassUpdate;
|
||||
private string woodMassUpdate;
|
||||
private string profileMassUpdate;
|
||||
|
||||
private string outClose = "";
|
||||
|
||||
private string outSave = "";
|
||||
|
||||
private bool startEmpty = true;
|
||||
|
||||
private string windowUid = "CurrWindow";
|
||||
|
||||
#endregion Private Fields
|
||||
|
||||
#region Private Properties
|
||||
|
||||
private string initialJwd
|
||||
{
|
||||
get
|
||||
{
|
||||
if (startEmpty)
|
||||
{
|
||||
return "{}";
|
||||
}
|
||||
else
|
||||
{
|
||||
string fullPath = Path.Combine("Data", "AntaDoppia.jwd");
|
||||
return File.ReadAllText(fullPath);
|
||||
//return File.ReadAllText("Data\\AntaDoppiaInglesine.jwd");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
#endregion Private Properties
|
||||
|
||||
#region Private Methods
|
||||
|
||||
private async void CalcDonePipe_EA_NewMessage(object? sender, EventArgs e)
|
||||
/// <summary>
|
||||
/// Init classi configurazione
|
||||
/// </summary>
|
||||
/// <returns></returns>
|
||||
private async Task ReloadBaseList()
|
||||
{
|
||||
// lettura config setup varie da DB/Cache Redis
|
||||
AllConfGlass = await CGService.GetAllAsync();
|
||||
AvailProfileList = await CPService.GetAllAsync();
|
||||
|
||||
// FixMe Todo: eliminare da REDIS e usare elenco DB solamente...
|
||||
var rawProfiles = CDService.ProfileList(cEnvir, "Default");
|
||||
// se fosse vuoto chiamo update...
|
||||
if (rawProfiles == null || rawProfiles.Count == 0)
|
||||
{
|
||||
rawProfiles = CDService.ProfileList(cEnvir, "Default");
|
||||
}
|
||||
var rawHw = CDService.HwModelList(cEnvir, "HW.AGB");
|
||||
// hw filtro solo validi...
|
||||
AllConfHardware = rawHw
|
||||
.Where(x => !x.FamilyName.Equals(x.Description, StringComparison.OrdinalIgnoreCase))
|
||||
.ToList();
|
||||
AllConfWood = await CWService.GetAllAsync();
|
||||
AllColors = await GVService.GetFiltAsync("WoodCol");
|
||||
// conversione tipi
|
||||
AvailGlassList = AllConfGlass
|
||||
.Select(x => x.Description)
|
||||
.ToList();
|
||||
AvailFamilyHardwareList = AllConfHardware
|
||||
.DistinctBy(x => x.FamilyName)
|
||||
.OrderBy(x => x.FamilyName)
|
||||
.Select(x => x.FamilyName)
|
||||
.ToList();
|
||||
AvailHardwareList = AllConfHardware
|
||||
.Select(x => new Egw.Window.Data.Hardware(x.Id, x.FamilyName, x.Description, x.OpeningType, x.Shape, x.SashQty, x.SashPosition))
|
||||
.ToList();
|
||||
AvailWoodList = AllConfWood
|
||||
.Select(x => x.Description)
|
||||
.ToList();
|
||||
AvailColorMaterialList = AllColors
|
||||
.OrderBy(x => x.Index)
|
||||
.Select(x => x.ValString)
|
||||
.ToList();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Effettua chiusura oggetto con eventuale save
|
||||
/// </summary>
|
||||
/// <param name="reqSave"></param>
|
||||
private void CloseObj(DataSave reqSave)
|
||||
{
|
||||
currJwd = reqSave.ForceSave ? reqSave.currJwd : initialJwd;
|
||||
outClose = !reqSave.ForceSave ? "Richiesto Close!" : "";
|
||||
outSave = reqSave.ForceSave ? "Richiesto Close + Save!" : "";
|
||||
doEdit = false;
|
||||
}
|
||||
private void PendAction(Dictionary<string, string> args)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
private void ConfInit()
|
||||
{
|
||||
apiUrl = Config.GetValue<string>("ServerConf:Prog.ApiUrl") ?? "";
|
||||
imgBasePath = Config.GetValue<string>("ServerConf:ImageBaseUrl") ?? "";
|
||||
GenericBasePath = Config.GetValue<string>("ServerConf:GenericBaseUrl") ?? "";
|
||||
calcTag = Config.GetValue<string>("ServerConf:CalcTag") ?? "";
|
||||
channelSvg = Config.GetValue<string>("ServerConf:ChannelSvg") ?? "";
|
||||
channelShape = Config.GetValue<string>("ServerConf:ChannelShape") ?? "";
|
||||
channelHwOpt = Config.GetValue<string>("ServerConf:ChannelHwOpt") ?? "";
|
||||
channelProfElem = Config.GetValue<string>("ServerConf:ChannelProfElem") ?? "";
|
||||
channelProfList = Config.GetValue<string>("ServerConf:ChannelProfList") ?? "";
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Esecuzione azione richiesta
|
||||
/// </summary>
|
||||
/// <param name="actReq">Azione richiesta</param>
|
||||
private void DoAction(DataAction actReq)
|
||||
{
|
||||
switch (actReq)
|
||||
{
|
||||
case DataAction.None:
|
||||
break;
|
||||
|
||||
case DataAction.ResetDictShape:
|
||||
CurrData.DictShape = new Dictionary<int, string>();
|
||||
break;
|
||||
|
||||
case DataAction.ResetHwOpt:
|
||||
CurrData.DictOptionsXml = new Dictionary<int, string>();
|
||||
break;
|
||||
|
||||
case DataAction.ResetDimElem:
|
||||
CurrData.ProfElementList = new List<AreaProfiles>();
|
||||
break;
|
||||
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Esecuzione richiesta
|
||||
/// </summary>
|
||||
/// <param name="CurrArgs"></param>
|
||||
/// <returns></returns>
|
||||
private async Task ExecRequest(Dictionary<string, string> CurrArgs)
|
||||
{
|
||||
// Proseguo solo se sono in interattivo (NO prerender pagina)
|
||||
if (isInteractive)
|
||||
{
|
||||
outClose = "";
|
||||
outSave = "";
|
||||
// verifico se contiene JWD, lo aggiorno
|
||||
if (CurrArgs.ContainsKey("SerializedData"))
|
||||
{
|
||||
currJwd = CurrArgs["SerializedData"];
|
||||
CurrData.CurrJwd = currJwd;
|
||||
}
|
||||
// se il SSE variato --> invio
|
||||
if (!currJwd.Equals(prevJwd) || !EgwCoreLib.Utils.DictUtils.DictAreEqual(m_CurrArgs, CurrArgs))
|
||||
{
|
||||
m_CurrArgs = CurrArgs;
|
||||
prevJwd = currJwd;
|
||||
CalcRequestDTO calcRequestDTO = new CalcRequestDTO();
|
||||
calcRequestDTO.EnvType = EgwMultiEngineManager.Data.Constants.EXECENVIRONMENTS.WINDOW;
|
||||
calcRequestDTO.DictExec = m_CurrArgs;
|
||||
// chiamo la chiamata POST alla API, che manda la richiesta via REDIS
|
||||
await ICService.CallRestPost($"{apiUrl}/{GenericBasePath}", $"{calcTag}/{CalcUid}", calcRequestDTO);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private async void PipeHwOption_EA_NewMessage(object? sender, EventArgs e)
|
||||
{
|
||||
// aggiorno visualizzazione
|
||||
PubSubEventArgs currArgs = (PubSubEventArgs)e;
|
||||
// conversione on-the-fly SVG da mostrare
|
||||
if (!string.IsNullOrEmpty(currArgs.newMessage))
|
||||
{
|
||||
if (currArgs.msgUid.Equals($"{subChannel}:{windowUid}"))
|
||||
if (currArgs.msgUid.StartsWith($"{channelHwOpt}:{windowUid}") && currArgs.newMessage.Length > 2)
|
||||
{
|
||||
// deserializzo il dizionario delle risposte...
|
||||
Dictionary<int, string> rawDict = JsonConvert.DeserializeObject<Dictionary<int, string>>(currArgs.newMessage) ?? new Dictionary<int, string>();
|
||||
if (rawDict.Count > 0)
|
||||
currHwOption = rawDict;
|
||||
}
|
||||
else
|
||||
{
|
||||
currHwOption = new Dictionary<int, string>();
|
||||
}
|
||||
CurrData.DictOptionsXml = currHwOption;
|
||||
await InvokeAsync(StateHasChanged);
|
||||
}
|
||||
await Task.Delay(1);
|
||||
}
|
||||
|
||||
private async void PipeProfElement_EA_NewMessage(object? sender, EventArgs e)
|
||||
{
|
||||
// aggiorno visualizzazione
|
||||
PubSubEventArgs currArgs = (PubSubEventArgs)e;
|
||||
// conversione on-the-fly SVG da mostrare
|
||||
if (!string.IsNullOrEmpty(currArgs.newMessage) && currArgs.newMessage.Length > 2)
|
||||
{
|
||||
if (currArgs.msgUid.StartsWith($"{channelProfElem}:{windowUid}"))
|
||||
{
|
||||
// deserializzo il dizionario delle risposte...
|
||||
var rawDict = JsonConvert.DeserializeObject<List<AreaProfiles>>(currArgs.newMessage);
|
||||
currElement = rawDict ?? new List<AreaProfiles>();
|
||||
CurrData.ProfElementList = currElement;
|
||||
}
|
||||
await InvokeAsync(StateHasChanged);
|
||||
}
|
||||
await Task.Delay(1);
|
||||
}
|
||||
|
||||
private async void PipeShape_EA_NewMessage(object? sender, EventArgs e)
|
||||
{
|
||||
// aggiorno visualizzazione
|
||||
PubSubEventArgs currArgs = (PubSubEventArgs)e;
|
||||
// conversione on-the-fly SVG da mostrare
|
||||
if (!string.IsNullOrEmpty(currArgs.newMessage) && currArgs.newMessage.Length > 2)
|
||||
{
|
||||
if (currArgs.msgUid.StartsWith($"{channelShape}:{windowUid}"))
|
||||
{
|
||||
// deserializzo il dizionario delle risposte...
|
||||
var rawDict = JsonConvert.DeserializeObject<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($"{channelSvg}:{windowUid}"))
|
||||
{
|
||||
currSvg = currArgs.newMessage;
|
||||
CurrData.SvgPreview = currArgs.newMessage;
|
||||
@@ -165,101 +472,42 @@ namespace Test.UI.Components.Pages
|
||||
await Task.Delay(1);
|
||||
}
|
||||
|
||||
private void ConfInit()
|
||||
private void SetEdit(Microsoft.AspNetCore.Components.Web.MouseEventArgs args)
|
||||
{
|
||||
apiUrl = Config.GetValue<string>("ServerConf:Prog.ApiUrl") ?? "";
|
||||
imgBasePath = Config.GetValue<string>("ServerConf:ImageBaseUrl") ?? "";
|
||||
GenericBasePath = Config.GetValue<string>("ServerConf:GenericBaseUrl") ?? "";
|
||||
calcTag = Config.GetValue<string>("ServerConf:CalcTag") ?? "";
|
||||
subChannel = Config.GetValue<string>("ServerConf:SvgChannel") ?? "";
|
||||
doEdit = true;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Rilettura dati
|
||||
/// </summary>
|
||||
/// <returns></returns>
|
||||
private async Task ReloadData()
|
||||
private Task ToggleJwd()
|
||||
{
|
||||
//return base.OnInitializedAsync();
|
||||
AvailTemplateList = new List<TemplateSelectDTO>();
|
||||
AvailHardwareList = new List<Hardware>();
|
||||
// brutale, da rivedere...
|
||||
if (string.IsNullOrEmpty(InitialJwd))
|
||||
{
|
||||
if (File.Exists(cFileTemplate))
|
||||
{
|
||||
string rawVal = File.ReadAllText(cFileTemplate);
|
||||
var rawList = JsonConvert.DeserializeObject<List<TemplateSelectDTO>>(rawVal) ?? new List<TemplateSelectDTO>();
|
||||
|
||||
// calcolo URL immagini... DTO interno da rivedere?
|
||||
foreach (var item in rawList)
|
||||
{
|
||||
item.ImageUrl = ICService.ImageUrl($"{apiUrl}/{imgBasePath}", false, item.SVGFileName);
|
||||
AvailTemplateList.Add(item);
|
||||
}
|
||||
}
|
||||
}
|
||||
if (File.Exists(cFileHardware))
|
||||
{
|
||||
string rawValHW = File.ReadAllText(cFileHardware);
|
||||
var rawListHW = JsonConvert.DeserializeObject<List<Hardware>>(rawValHW) ?? new List<Hardware>();
|
||||
foreach (var item in rawListHW)
|
||||
{
|
||||
AvailHardwareList.Add(item);
|
||||
}
|
||||
}
|
||||
await Task.Delay(100);
|
||||
startEmpty = !startEmpty;
|
||||
currJwd = initialJwd;
|
||||
currSvg = "";
|
||||
CurrData.CurrJwd = currJwd;
|
||||
CurrData.SvgPreview = currSvg;
|
||||
return InvokeAsync(StateHasChanged);
|
||||
}
|
||||
|
||||
private async Task SaveJWD(Dictionary<string, string> CurrArgs)
|
||||
private async Task UpdateInfoJwdAsync(string currSer, string? newFamilyHardware, string? newColorMaterial, string? newWood, string? newGlass, string? newProfile)
|
||||
{
|
||||
outClose = "";
|
||||
outSave = "";
|
||||
m_CurrArgs = CurrArgs;
|
||||
// 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))
|
||||
{
|
||||
prevJwd = currJwd;
|
||||
CalcRequestDTO calcRequestDTO = new CalcRequestDTO();
|
||||
calcRequestDTO.EnvType = EgwMultiEngineManager.Data.Constants.EXECENVIRONMENTS.WINDOW;
|
||||
calcRequestDTO.DictExec = m_CurrArgs;
|
||||
// chiamo la chiamata POST alla API, che manda la richiesta via REDIS
|
||||
await ICService.CallRestPost($"{apiUrl}/{GenericBasePath}", $"{calcTag}/{CalcUid}", calcRequestDTO);
|
||||
}
|
||||
}
|
||||
|
||||
private void SetTemplate(TemplateSelectDTO selTemp)
|
||||
{
|
||||
string rawVal = "";
|
||||
currSel = selTemp;
|
||||
// brutale,d a rivedere...
|
||||
if (File.Exists(selTemp.JwdFileName))
|
||||
{
|
||||
rawVal = File.ReadAllText(selTemp.JwdFileName);
|
||||
}
|
||||
SelTemplate = new Template(selTemp.Index, selTemp.Description, selTemp.SVGFileName, rawVal);
|
||||
Dictionary<string, string> DictParam = new Dictionary<string, string>();
|
||||
if (!string.IsNullOrEmpty(newFamilyHardware))
|
||||
DictParam.Add("FamilyHardware", newFamilyHardware!);
|
||||
if (!string.IsNullOrEmpty(newColorMaterial))
|
||||
DictParam.Add("Color", newColorMaterial!);
|
||||
if (!string.IsNullOrEmpty(newWood))
|
||||
DictParam.Add("Wood", newWood!);
|
||||
if (!string.IsNullOrEmpty(newGlass))
|
||||
DictParam.Add("Glass", newGlass!);
|
||||
if (!string.IsNullOrEmpty(newProfile))
|
||||
DictParam.Add("Profile", newProfile!);
|
||||
var dp = SerialMan.MassUpdate(currSer, DictParam);
|
||||
CurrData.CurrJwd = dp.serializeStruct;
|
||||
if (dp.DictParameter.Count > 0)
|
||||
DictPendReq = DictParam;
|
||||
//var newJwd = SerialMan.MassUpdate(currSer, newFamilyHardware, newHardware, newColorMaterial, newMaterial, newGlass, newProfile);
|
||||
//CurrData.CurrJwd = newJwd;
|
||||
}
|
||||
|
||||
#endregion Private Methods
|
||||
|
||||
/// <summary>
|
||||
/// Effettua chiusura oggetto con eventuale save
|
||||
/// </summary>
|
||||
/// <param name="reqSave"></param>
|
||||
private void CloseObj(bool reqSave)
|
||||
{
|
||||
outClose = !reqSave ? "Richiesto chiusura!" : "";
|
||||
outSave = reqSave ? "Richiesto salvataggio!" : "";
|
||||
}
|
||||
|
||||
private string outClose = "";
|
||||
private string outSave = "";
|
||||
}
|
||||
}
|
||||
@@ -1,36 +0,0 @@
|
||||
@page "/Error"
|
||||
@using System.Diagnostics
|
||||
|
||||
<PageTitle>Error</PageTitle>
|
||||
|
||||
<h1 class="text-danger">Error.</h1>
|
||||
<h2 class="text-danger">An error occurred while processing your request.</h2>
|
||||
|
||||
@if (ShowRequestId)
|
||||
{
|
||||
<p>
|
||||
<strong>Request ID:</strong> <code>@RequestId</code>
|
||||
</p>
|
||||
}
|
||||
|
||||
<h3>Development Mode</h3>
|
||||
<p>
|
||||
Swapping to <strong>Development</strong> environment will display more detailed information about the error that occurred.
|
||||
</p>
|
||||
<p>
|
||||
<strong>The Development environment shouldn't be enabled for deployed applications.</strong>
|
||||
It can result in displaying sensitive information from exceptions to end users.
|
||||
For local debugging, enable the <strong>Development</strong> environment by setting the <strong>ASPNETCORE_ENVIRONMENT</strong> environment variable to <strong>Development</strong>
|
||||
and restarting the app.
|
||||
</p>
|
||||
|
||||
@code{
|
||||
[CascadingParameter]
|
||||
private HttpContext? HttpContext { get; set; }
|
||||
|
||||
private string? RequestId { get; set; }
|
||||
private bool ShowRequestId => !string.IsNullOrEmpty(RequestId);
|
||||
|
||||
protected override void OnInitialized() =>
|
||||
RequestId = Activity.Current?.Id ?? HttpContext?.TraceIdentifier;
|
||||
}
|
||||
@@ -1,35 +0,0 @@
|
||||
@page "/Gerarchia"
|
||||
@rendermode InteractiveServer
|
||||
|
||||
<PageTitle>Gerarchia</PageTitle>
|
||||
|
||||
<WebWindowComplex.TableComp ListPayload="SetupList"
|
||||
LiveDaListPayloadta="CurrData"
|
||||
CurrSelection="SelectData"
|
||||
EC_OnUpdate="SaveJWD"
|
||||
EC_OnClose="CloseObj"
|
||||
EC_OnSelectedTemplate="SetTemplate">
|
||||
</WebWindowComplex.TableComp>
|
||||
|
||||
|
||||
@if (!string.IsNullOrEmpty(outClose))
|
||||
{
|
||||
<div class="alert alert-danger fs-4">
|
||||
@outClose
|
||||
</div>
|
||||
}
|
||||
else if (!string.IsNullOrEmpty(outSave))
|
||||
{
|
||||
<div class="alert alert-success fs-4">
|
||||
@outSave
|
||||
</div>
|
||||
}
|
||||
<p>
|
||||
|
||||
@(temp);
|
||||
</p>
|
||||
|
||||
@*
|
||||
<p>
|
||||
@m_CurrArgs.GetValueOrDefault("Jwd")
|
||||
</p> *@
|
||||
@@ -1,280 +0,0 @@
|
||||
using Egw.Window.Data;
|
||||
using EgwCoreLib.Lux.Core;
|
||||
using EgwCoreLib.Lux.Core.RestPayload;
|
||||
using EgwCoreLib.Lux.Data.Services;
|
||||
using Microsoft.AspNetCore.Components;
|
||||
using Newtonsoft.Json;
|
||||
using NLog;
|
||||
using System.Diagnostics;
|
||||
using System.Numerics;
|
||||
using System.Security.AccessControl;
|
||||
using WebWindowComplex;
|
||||
using WebWindowComplex.DTO;
|
||||
|
||||
namespace Test.UI.Components.Pages
|
||||
{
|
||||
public partial class Gerarchia : IDisposable
|
||||
{
|
||||
#region Public Properties
|
||||
|
||||
string temp = "";
|
||||
|
||||
public string InitialJwd = "";
|
||||
public Template SelTemplate { get; set; } = new Template(0, "---SELECT---", "", "");
|
||||
|
||||
#endregion Public Properties
|
||||
|
||||
#region Public Methods
|
||||
|
||||
public void Dispose()
|
||||
{
|
||||
DLService.CalcDonePipe.EA_NewMessage -= CalcDonePipe_EA_NewMessage;
|
||||
}
|
||||
|
||||
#endregion Public Methods
|
||||
|
||||
#region Protected Fields
|
||||
|
||||
protected string currJwd = "...";
|
||||
protected string prevJwd = "";
|
||||
protected Dictionary<string, string> m_CurrArgs = new Dictionary<string, string>();
|
||||
|
||||
#endregion Protected Fields
|
||||
|
||||
#region Protected Properties
|
||||
|
||||
protected List<TemplateSelectDTO> AvailTemplateList { get; set; } = new List<TemplateSelectDTO>();
|
||||
protected List<Hardware> AvailHardwareList { get; set; } = new List<Hardware>();
|
||||
protected List<string> AvailFamilyHardwareList { get; set; } = new List<string>()
|
||||
{
|
||||
new string("Profilo78"),
|
||||
new string("Arc")
|
||||
};
|
||||
protected List<string> AvailColorMaterialList { get; set; } = new List<string>()
|
||||
{
|
||||
new string("White"),
|
||||
new string("Black"),
|
||||
new string("Blu")
|
||||
};
|
||||
protected List<string> AvailMaterialList { get; set; } = new List<string>()
|
||||
{
|
||||
new string("Pino"),
|
||||
new string("Abete")
|
||||
};
|
||||
protected List<string> AvailGlassList { get; set; } = new List<string>()
|
||||
{
|
||||
new string("Vetro BE 2S 4/12/4"),
|
||||
new string("Vetro BE 2S 4/16/4"),
|
||||
new string("Vetro BE 3S 4/12/4/12/4"),
|
||||
new string("Vetro BE 3S 4/16/4/16/4"),
|
||||
new string("Vetro BE 2S 4T/12/4T"),
|
||||
new string("Vetro BE 2S 4T/16/4T")
|
||||
};
|
||||
protected string SelFamilyHardware { get; set; } = "";
|
||||
protected string SelColorMaterial { get; set; } = "";
|
||||
protected string SelMaterial { get; set; } = "";
|
||||
protected string SelGlass { get; set; } = "";
|
||||
|
||||
[Inject]
|
||||
protected IConfiguration Config { get; set; } = null!;
|
||||
|
||||
[Inject]
|
||||
protected DataLayerServices DLService { get; set; } = null!;
|
||||
|
||||
[Inject]
|
||||
protected ImageCacheService ICService { get; set; } = null!;
|
||||
|
||||
protected MarkupString JsonSer
|
||||
{
|
||||
get => (MarkupString)currJwd.Replace(Environment.NewLine, "<br/>").Replace(" ", " ");
|
||||
}
|
||||
|
||||
#endregion Protected Properties
|
||||
|
||||
#region Protected Methods
|
||||
|
||||
protected override async Task OnInitializedAsync()
|
||||
{
|
||||
ConfInit();
|
||||
// rileggo altri dati
|
||||
await ReloadData();
|
||||
// preparo conf oggetti x controllo
|
||||
SetupList = new BaseListPayload()
|
||||
{
|
||||
ColorMaterial = AvailColorMaterialList,
|
||||
FamilyHardware = AvailFamilyHardwareList,
|
||||
Glass = AvailGlassList,
|
||||
Hardware = AvailHardwareList,
|
||||
Material = AvailMaterialList,
|
||||
TemplateDTO = AvailTemplateList
|
||||
};
|
||||
CurrData = new LivePayload()
|
||||
{
|
||||
//CurrJwd = InitialJwd,
|
||||
CurrJwd = "",
|
||||
SvgPreview = currSvg
|
||||
};
|
||||
SelectData = new SelectPayload()
|
||||
{
|
||||
FamilyHardware = "Profilo78",
|
||||
ColorMaterial = "Black",
|
||||
Material = "Pino",
|
||||
Glass = "Vetro BE 2S 4T / 16 / 4T",
|
||||
Template = null,
|
||||
};
|
||||
DLService.CalcDonePipe.EA_NewMessage += CalcDonePipe_EA_NewMessage;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Configurazione elenchi anagrafiche
|
||||
/// </summary>
|
||||
protected BaseListPayload SetupList = new BaseListPayload();
|
||||
/// <summary>
|
||||
/// Predisposizione valori live SVG/JWD
|
||||
/// </summary>
|
||||
protected LivePayload CurrData = new LivePayload();
|
||||
/// <summary>
|
||||
/// Predisposizione elementi selezionati
|
||||
/// </summary>
|
||||
protected SelectPayload SelectData = new SelectPayload();
|
||||
|
||||
#endregion Protected Methods
|
||||
|
||||
#region Private Fields
|
||||
|
||||
private string apiUrl = "";
|
||||
private string calcTag = "";
|
||||
private string CalcUid = "CurrWindow";
|
||||
private string cFileTemplate = "Data/Setup.json";
|
||||
private string cFileHardware = "Hardware/Setup.json";
|
||||
private TemplateSelectDTO? currSel = null;
|
||||
private string currSvg = "";
|
||||
|
||||
private string imgBasePath = "";
|
||||
private string GenericBasePath = "";
|
||||
|
||||
private string subChannel = "";
|
||||
|
||||
private string windowUid = "CurrWindow";
|
||||
|
||||
private string outClose = "";
|
||||
private string outSave = "";
|
||||
|
||||
#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;
|
||||
m_CurrArgs.TryGetValue("Jwd", out temp);
|
||||
}
|
||||
await InvokeAsync(StateHasChanged);
|
||||
}
|
||||
await Task.Delay(1);
|
||||
}
|
||||
|
||||
private void ConfInit()
|
||||
{
|
||||
apiUrl = Config.GetValue<string>("ServerConf:Prog.ApiUrl") ?? "";
|
||||
imgBasePath = Config.GetValue<string>("ServerConf:ImageBaseUrl") ?? "";
|
||||
GenericBasePath = Config.GetValue<string>("ServerConf:GenericBaseUrl") ?? "";
|
||||
calcTag = Config.GetValue<string>("ServerConf:CalcTag") ?? "";
|
||||
subChannel = Config.GetValue<string>("ServerConf:SvgChannel") ?? "";
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Rilettura dati
|
||||
/// </summary>
|
||||
/// <returns></returns>
|
||||
private async Task ReloadData()
|
||||
{
|
||||
//return base.OnInitializedAsync();
|
||||
AvailTemplateList = new List<TemplateSelectDTO>();
|
||||
AvailHardwareList = new List<Hardware>();
|
||||
// brutale, da rivedere...
|
||||
if (string.IsNullOrEmpty(InitialJwd))
|
||||
{
|
||||
if (File.Exists(cFileTemplate))
|
||||
{
|
||||
string rawVal = File.ReadAllText(cFileTemplate);
|
||||
var rawList = JsonConvert.DeserializeObject<List<TemplateSelectDTO>>(rawVal) ?? new List<TemplateSelectDTO>();
|
||||
|
||||
// calcolo URL immagini... DTO interno da rivedere?
|
||||
foreach (var item in rawList)
|
||||
{
|
||||
item.ImageUrl = ICService.ImageUrl($"{apiUrl}/{imgBasePath}", false, item.SVGFileName);
|
||||
AvailTemplateList.Add(item);
|
||||
}
|
||||
}
|
||||
}
|
||||
if (File.Exists(cFileHardware))
|
||||
{
|
||||
string rawValHW = File.ReadAllText(cFileHardware);
|
||||
var rawListHW = JsonConvert.DeserializeObject<List<Hardware>>(rawValHW) ?? new List<Hardware>();
|
||||
foreach (var item in rawListHW)
|
||||
{
|
||||
AvailHardwareList.Add(item);
|
||||
}
|
||||
}
|
||||
await Task.Delay(100);
|
||||
}
|
||||
|
||||
private async Task SaveJWD(Dictionary<string, string> CurrArgs)
|
||||
{
|
||||
outClose = "";
|
||||
outSave = "";
|
||||
m_CurrArgs = CurrArgs;
|
||||
// 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))
|
||||
{
|
||||
prevJwd = currJwd;
|
||||
CalcRequestDTO calcRequestDTO = new CalcRequestDTO();
|
||||
calcRequestDTO.EnvType = EgwMultiEngineManager.Data.Constants.EXECENVIRONMENTS.WINDOW;
|
||||
calcRequestDTO.DictExec = m_CurrArgs;
|
||||
// chiamo la chiamata POST alla API, che manda la richiesta via REDIS
|
||||
await ICService.CallRestPost($"{apiUrl}/{GenericBasePath}", $"{calcTag}/{CalcUid}", calcRequestDTO);
|
||||
}
|
||||
}
|
||||
|
||||
private void SetTemplate(TemplateSelectDTO selTemp)
|
||||
{
|
||||
string rawVal = "";
|
||||
currSel = selTemp;
|
||||
// brutale,da rivedere...
|
||||
if (File.Exists(selTemp.JwdFileName))
|
||||
{
|
||||
rawVal = File.ReadAllText(selTemp.JwdFileName);
|
||||
}
|
||||
SelTemplate = new Template(selTemp.Index, selTemp.Description, selTemp.SVGFileName, rawVal);
|
||||
SelectData.Template = SelTemplate;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Effettua chiusura oggetto con eventuale save
|
||||
/// </summary>
|
||||
/// <param name="reqSave"></param>
|
||||
private void CloseObj(bool reqSave)
|
||||
{
|
||||
outClose = !reqSave ? "Richiesto chiusura!" : "";
|
||||
outSave = reqSave ? "Richiesto salvataggio!" : "";
|
||||
}
|
||||
|
||||
#endregion Private Methods
|
||||
|
||||
}
|
||||
}
|
||||
@@ -1,23 +1,39 @@
|
||||
@page "/"
|
||||
@page "/Home"
|
||||
@page "/Home"
|
||||
@rendermode InteractiveServer
|
||||
|
||||
<PageTitle>Home</PageTitle>
|
||||
<PageTitle>Select template</PageTitle>
|
||||
|
||||
@if (isLoading)
|
||||
@if(SelTemplate == null)
|
||||
{
|
||||
<EgwCoreLib.Razor.LoadingData></EgwCoreLib.Razor.LoadingData>
|
||||
<WebWindowMaker TemplateDTOList="@AvailTemplateList"
|
||||
EC_OnSelectedTemplate="SetTemplate">
|
||||
</WebWindowMaker>
|
||||
}
|
||||
else
|
||||
{
|
||||
<WebWindowMaker IN_TemplateDTOList="@AvailTemplateList"
|
||||
IN_SelTemplate="@SelTemplate"
|
||||
EC_OnUpdate="SaveJWD"
|
||||
EC_OnSelectedTemplate="SetTemplate"
|
||||
LiveSVG="@currSvg">
|
||||
</WebWindowMaker>
|
||||
<TableComp ListPayload="SetupList"
|
||||
LiveData="CurrData"
|
||||
EC_ActionReq="DoAction"
|
||||
EC_DoUpdate="ExecRequest"
|
||||
EC_OnClose="CloseObj">
|
||||
</TableComp>
|
||||
<div class="card">
|
||||
<div class="card-body small">
|
||||
@JsonSer
|
||||
</div>
|
||||
</div>
|
||||
}
|
||||
@if (!string.IsNullOrEmpty(outClose))
|
||||
{
|
||||
<div class="alert alert-danger fs-4">
|
||||
@outClose
|
||||
</div>
|
||||
}
|
||||
else if (!string.IsNullOrEmpty(outSave))
|
||||
{
|
||||
<div class="alert alert-success fs-4">
|
||||
@outSave
|
||||
</div>
|
||||
}
|
||||
|
||||
@* <p>
|
||||
@m_CurrArgs.GetValueOrDefault("Jwd")
|
||||
</p> *@
|
||||
|
||||
|
||||
@@ -4,6 +4,9 @@ using EgwCoreLib.Lux.Data.Services;
|
||||
using Microsoft.AspNetCore.Components;
|
||||
using Newtonsoft.Json;
|
||||
using WebWindowConfigurator;
|
||||
using WebWindowComplex;
|
||||
using Egw.Window.Data;
|
||||
using WebWindowComplex.DTO;
|
||||
using WebWindowConfigurator.DTO;
|
||||
|
||||
namespace Test.UI.Components.Pages
|
||||
@@ -12,7 +15,7 @@ namespace Test.UI.Components.Pages
|
||||
{
|
||||
#region Public Properties
|
||||
|
||||
public Template SelTemplate { get; set; } = new Template(0, "---SELECT---", "", "");
|
||||
public Template SelTemplate { get; set; } = new Template(0, "", "", "") ;
|
||||
|
||||
#endregion Public Properties
|
||||
|
||||
@@ -20,15 +23,30 @@ namespace Test.UI.Components.Pages
|
||||
|
||||
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
|
||||
|
||||
#region Protected Fields
|
||||
|
||||
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 = "";
|
||||
|
||||
/// <summary>
|
||||
/// Configurazione elenchi anagrafiche
|
||||
/// </summary>
|
||||
protected BaseListPayload SetupList = new BaseListPayload();
|
||||
|
||||
/// <summary>
|
||||
/// Predisposizione valori live SVG/JWD
|
||||
/// </summary>
|
||||
protected LivePayload CurrData = new LivePayload();
|
||||
|
||||
#endregion Protected Fields
|
||||
|
||||
@@ -36,6 +54,37 @@ namespace Test.UI.Components.Pages
|
||||
|
||||
protected List<TemplateSelectDTO> AvailTemplateList { get; set; } = new List<TemplateSelectDTO>();
|
||||
|
||||
protected List<string> AvailColorMaterialList { get; set; } = new List<string>()
|
||||
{
|
||||
new string("White"),
|
||||
new string("Black"),
|
||||
new string("Blu")
|
||||
};
|
||||
|
||||
protected List<string> AvailFamilyHardwareList { get; set; } = new List<string>()
|
||||
{
|
||||
new string("ArTech"),
|
||||
new string("ArTechPlana")
|
||||
};
|
||||
|
||||
protected List<string> AvailGlassList { get; set; } = new List<string>()
|
||||
{
|
||||
new string("Vetro BE 2S 4/12/4"),
|
||||
new string("Vetro BE 2S 4/16/4"),
|
||||
new string("Vetro BE 3S 4/12/4/12/4"),
|
||||
new string("Vetro BE 3S 4/16/4/16/4"),
|
||||
new string("Vetro BE 2S 4T/12/4T"),
|
||||
new string("Vetro BE 2S 4T/16/4T")
|
||||
};
|
||||
|
||||
protected List<Hardware> AvailHardwareList { get; set; } = new List<Hardware>();
|
||||
|
||||
protected List<string> AvailMaterialList { get; set; } = new List<string>()
|
||||
{
|
||||
new string("Pino"),
|
||||
new string("Abete")
|
||||
};
|
||||
|
||||
[Inject]
|
||||
protected IConfiguration Config { get; set; } = null!;
|
||||
|
||||
@@ -58,15 +107,25 @@ namespace Test.UI.Components.Pages
|
||||
|
||||
#region Protected Methods
|
||||
|
||||
protected override async Task OnInitializedAsync()
|
||||
protected override void OnAfterRender(bool firstRender)
|
||||
{
|
||||
isLoading = true;
|
||||
ConfInit();
|
||||
DLService.CalcDonePipe.EA_NewMessage += CalcDonePipe_EA_NewMessage;
|
||||
await ReloadData();
|
||||
if (firstRender)
|
||||
{
|
||||
// JS interop or data fetches go here
|
||||
isInteractive = true;
|
||||
}
|
||||
}
|
||||
protected override Task OnInitializedAsync()
|
||||
{
|
||||
ConfInit();
|
||||
Random random = new Random();
|
||||
CalcUid = Convert.ToString(random.Next(1000, 10000));
|
||||
windowUid = CalcUid;
|
||||
DLService.PipeSvg.EA_NewMessage += PipeSvg_EA_NewMessage;
|
||||
DLService.PipeShape.EA_NewMessage += PipeShape_EA_NewMessage;
|
||||
DLService.PipeHwOpt.EA_NewMessage += PipeHwOption_EA_NewMessage;
|
||||
return ReloadData();
|
||||
}
|
||||
|
||||
private bool isLoading = false;
|
||||
|
||||
#endregion Protected Methods
|
||||
|
||||
@@ -75,50 +134,41 @@ namespace Test.UI.Components.Pages
|
||||
private string apiUrl = "";
|
||||
private string calcTag = "";
|
||||
private string CalcUid = "CurrWindow";
|
||||
private string cFile = "Data/Setup.json";
|
||||
private string cFileTemplate = "Data/Setup.json";
|
||||
private TemplateSelectDTO? currSel = null;
|
||||
private string currSvg = "";
|
||||
private string channelHwOpt = "";
|
||||
private string channelShape = "";
|
||||
private string channelSvg = "";
|
||||
|
||||
private string imgBasePath = "";
|
||||
private string GenericBasePath = "";
|
||||
|
||||
private string subChannel = "";
|
||||
private string cFileHardware = "Hardware/Setup.json";
|
||||
|
||||
private string outClose = "";
|
||||
private string outSave = "";
|
||||
|
||||
private string windowUid = "CurrWindow";
|
||||
|
||||
/// <summary>
|
||||
/// Semaforo x definire se sia già in modalità ionterattiva o di prerendering
|
||||
/// </summary>
|
||||
private bool isInteractive = false;
|
||||
|
||||
#endregion Private Fields
|
||||
|
||||
#region Private Properties
|
||||
|
||||
private string windowUid = "CurrWindow";
|
||||
//{
|
||||
// get
|
||||
// {
|
||||
// string answ = "";
|
||||
// if (currSel != null)
|
||||
// {
|
||||
// answ = currSel.SVGFileName.Replace(".svg", "");
|
||||
// }
|
||||
// return answ;
|
||||
// }
|
||||
//}
|
||||
|
||||
#endregion Private Properties
|
||||
|
||||
#region Private Methods
|
||||
|
||||
private async void CalcDonePipe_EA_NewMessage(object? sender, EventArgs e)
|
||||
/// <summary>
|
||||
/// Effettua chiusura oggetto con eventuale save
|
||||
/// </summary>
|
||||
/// <param name="reqSave"></param>
|
||||
private void CloseObj(DataSave reqSave)
|
||||
{
|
||||
// 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;
|
||||
}
|
||||
await InvokeAsync(StateHasChanged);
|
||||
}
|
||||
await Task.Delay(1);
|
||||
currJwd = reqSave.currJwd;
|
||||
outClose = !reqSave.ForceSave ? "Richiesto chiusura!" : "";
|
||||
outSave = reqSave.ForceSave ? "Richiesto salvataggio!" : "";
|
||||
}
|
||||
|
||||
private void ConfInit()
|
||||
@@ -127,7 +177,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") ?? "";
|
||||
channelSvg = Config.GetValue<string>("ServerConf:ChannelSvg") ?? "";
|
||||
channelShape = Config.GetValue<string>("ServerConf:ChannelShape") ?? "";
|
||||
channelHwOpt = Config.GetValue<string>("ServerConf:ChannelHwOpt") ?? "";
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Esecuzione azione richiesta
|
||||
/// </summary>
|
||||
/// <param name="actReq">Azione richiesta</param>
|
||||
private void DoAction(LayoutConst.DataAction actReq)
|
||||
{
|
||||
switch (actReq)
|
||||
{
|
||||
case LayoutConst.DataAction.None:
|
||||
break;
|
||||
|
||||
case LayoutConst.DataAction.ResetDictShape:
|
||||
CurrData.DictShape = new Dictionary<int, string>();
|
||||
break;
|
||||
|
||||
case LayoutConst.DataAction.ResetHwOpt:
|
||||
CurrData.DictOptionsXml = new Dictionary<int, string>();
|
||||
break;
|
||||
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
private async Task ExecRequest(Dictionary<string, string> CurrArgs)
|
||||
{
|
||||
// Proseguo solo se sono in interattivo (NO prerender pagina)
|
||||
if (isInteractive)
|
||||
{
|
||||
outClose = "";
|
||||
outSave = "";
|
||||
// verifico se contiene JWD, lo aggiorno
|
||||
if (CurrArgs.ContainsKey("SerializedData"))
|
||||
{
|
||||
currJwd = CurrArgs["SerializedData"];
|
||||
CurrData.CurrJwd = currJwd;
|
||||
}
|
||||
// se il SSE variato --> invio
|
||||
if (!currJwd.Equals(prevJwd) || !EgwCoreLib.Utils.DictUtils.DictAreEqual(m_CurrArgs, CurrArgs))
|
||||
{
|
||||
m_CurrArgs = CurrArgs;
|
||||
prevJwd = currJwd;
|
||||
CalcRequestDTO calcRequestDTO = new CalcRequestDTO();
|
||||
calcRequestDTO.EnvType = EgwMultiEngineManager.Data.Constants.EXECENVIRONMENTS.WINDOW;
|
||||
calcRequestDTO.DictExec = m_CurrArgs;
|
||||
// chiamo la chiamata POST alla API, che manda la richiesta via REDIS
|
||||
await ICService.CallRestPost($"{apiUrl}/{GenericBasePath}", $"{calcTag}/{CalcUid}", calcRequestDTO);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private async void PipeHwOption_EA_NewMessage(object? sender, EventArgs e)
|
||||
{
|
||||
// aggiorno visualizzazione
|
||||
PubSubEventArgs currArgs = (PubSubEventArgs)e;
|
||||
// conversione on-the-fly SVG da mostrare
|
||||
if (!string.IsNullOrEmpty(currArgs.newMessage))
|
||||
{
|
||||
if (currArgs.msgUid.StartsWith($"{channelHwOpt}:{windowUid}") && currArgs.newMessage.Length > 2)
|
||||
{
|
||||
// deserializzo il dizionario delle risposte...
|
||||
Dictionary<int, string> rawDict = JsonConvert.DeserializeObject<Dictionary<int, string>>(currArgs.newMessage) ?? new Dictionary<int, string>();
|
||||
if (rawDict.Count > 0)
|
||||
{
|
||||
currHwOption = rawDict;
|
||||
CurrData.DictOptionsXml = currHwOption;
|
||||
}
|
||||
}
|
||||
await InvokeAsync(StateHasChanged);
|
||||
}
|
||||
await Task.Delay(1);
|
||||
}
|
||||
|
||||
private async void PipeSvg_EA_NewMessage(object? sender, EventArgs e)
|
||||
{
|
||||
// aggiorno visualizzazione
|
||||
PubSubEventArgs currArgs = (PubSubEventArgs)e;
|
||||
// conversione on-the-fly SVG da mostrare
|
||||
if (!string.IsNullOrEmpty(currArgs.newMessage))
|
||||
{
|
||||
if (currArgs.msgUid.Equals($"{channelSvg}:{windowUid}"))
|
||||
{
|
||||
currSvg = currArgs.newMessage;
|
||||
CurrData.SvgPreview = currArgs.newMessage;
|
||||
}
|
||||
await InvokeAsync(StateHasChanged);
|
||||
}
|
||||
await Task.Delay(1);
|
||||
}
|
||||
|
||||
private async void PipeShape_EA_NewMessage(object? sender, EventArgs e)
|
||||
{
|
||||
// aggiorno visualizzazione
|
||||
PubSubEventArgs currArgs = (PubSubEventArgs)e;
|
||||
// conversione on-the-fly SVG da mostrare
|
||||
if (!string.IsNullOrEmpty(currArgs.newMessage) && currArgs.newMessage.Length > 2)
|
||||
{
|
||||
if (currArgs.msgUid.StartsWith($"{channelShape}:{windowUid}"))
|
||||
{
|
||||
// deserializzo il dizionario delle risposte...
|
||||
var rawDict = JsonConvert.DeserializeObject<Dictionary<int, string>>(currArgs.newMessage);
|
||||
currGroupShape = rawDict ?? new Dictionary<int, string>();
|
||||
CurrData.DictShape = currGroupShape;
|
||||
}
|
||||
await InvokeAsync(StateHasChanged);
|
||||
}
|
||||
await Task.Delay(1);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
@@ -136,13 +297,13 @@ namespace Test.UI.Components.Pages
|
||||
/// <returns></returns>
|
||||
private async Task ReloadData()
|
||||
{
|
||||
//return base.OnInitializedAsync();
|
||||
// Caricamento lista Template
|
||||
AvailTemplateList = new List<TemplateSelectDTO>();
|
||||
await Task.Delay(100);
|
||||
// brutale, da rivedere...
|
||||
if (File.Exists(cFile))
|
||||
if (File.Exists(cFileTemplate))
|
||||
{
|
||||
string rawVal = File.ReadAllText(cFile);
|
||||
string rawVal = File.ReadAllText(cFileTemplate);
|
||||
var rawList = JsonConvert.DeserializeObject<List<TemplateSelectDTO>>(rawVal) ?? new List<TemplateSelectDTO>();
|
||||
|
||||
// calcolo URL immagini... DTO interno da rivedere?
|
||||
@@ -153,19 +314,16 @@ namespace Test.UI.Components.Pages
|
||||
AvailTemplateList.Add(item);
|
||||
}
|
||||
}
|
||||
isLoading = false;
|
||||
}
|
||||
|
||||
private async Task SaveJWD(Dictionary<string,string> CurrArgs)
|
||||
{
|
||||
m_CurrArgs = CurrArgs;
|
||||
// chiamo la chiamata POST alla API, che manda la richiesta via REDIS
|
||||
if (currSel != null)
|
||||
// Caricamento lista hardware
|
||||
AvailHardwareList = new List<Hardware>();
|
||||
if (File.Exists(cFileHardware))
|
||||
{
|
||||
CalcRequestDTO calcRequestDTO = new CalcRequestDTO();
|
||||
calcRequestDTO.EnvType = EgwMultiEngineManager.Data.Constants.EXECENVIRONMENTS.WINDOW;
|
||||
calcRequestDTO.DictExec = m_CurrArgs;
|
||||
await ICService.CallRestPost($"{apiUrl}/{GenericBasePath}", $"{calcTag}/{CalcUid}", calcRequestDTO);
|
||||
string rawValHW = File.ReadAllText(cFileHardware);
|
||||
var rawListHW = JsonConvert.DeserializeObject<List<Hardware>>(rawValHW) ?? new List<Hardware>();
|
||||
foreach (var item in rawListHW)
|
||||
{
|
||||
AvailHardwareList.Add(item);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -179,6 +337,15 @@ namespace Test.UI.Components.Pages
|
||||
rawVal = File.ReadAllText(selTemp.JwdFileName);
|
||||
}
|
||||
SelTemplate = new Template(selTemp.Index, selTemp.Description, selTemp.SVGFileName, rawVal);
|
||||
CurrData.CurrJwd = rawVal;
|
||||
SetupList = new BaseListPayload()
|
||||
{
|
||||
ColorMaterial = AvailColorMaterialList,
|
||||
FamilyHardware = AvailFamilyHardwareList,
|
||||
Glass = AvailGlassList,
|
||||
Hardware = AvailHardwareList,
|
||||
Wood = AvailMaterialList
|
||||
};
|
||||
}
|
||||
|
||||
#endregion Private Methods
|
||||
|
||||
@@ -0,0 +1,31 @@
|
||||
@page "/SimpleEditOld"
|
||||
@rendermode InteractiveServer
|
||||
|
||||
<PageTitle>SimpleEditOld</PageTitle>
|
||||
|
||||
<WebWindowTest.Test ListPayload="SetupList"
|
||||
LiveData="CurrData"
|
||||
EC_ActionReq="DoAction"
|
||||
EC_DoUpdate="ExecRequest"
|
||||
EC_OnClose="CloseObj">
|
||||
</WebWindowTest.Test>
|
||||
|
||||
|
||||
@if (!string.IsNullOrEmpty(outClose))
|
||||
{
|
||||
<div class="alert alert-danger fs-4">
|
||||
@outClose
|
||||
</div>
|
||||
}
|
||||
else if (!string.IsNullOrEmpty(outSave))
|
||||
{
|
||||
<div class="alert alert-success fs-4">
|
||||
@outSave
|
||||
</div>
|
||||
}
|
||||
|
||||
<div class="card">
|
||||
<div class="card-body small">
|
||||
@JsonSer
|
||||
</div>
|
||||
</div>
|
||||
@@ -0,0 +1,350 @@
|
||||
using Egw.Window.Data;
|
||||
using EgwCoreLib.Lux.Core;
|
||||
using EgwCoreLib.Lux.Core.RestPayload;
|
||||
using EgwCoreLib.Lux.Data.Services;
|
||||
using Microsoft.AspNetCore.Components;
|
||||
using Newtonsoft.Json;
|
||||
using WebWindowTest.DTO;
|
||||
using static WebWindowTest.LayoutConst;
|
||||
|
||||
namespace Test.UI.Components.Pages
|
||||
{
|
||||
public partial class SimpleEditOld : IDisposable
|
||||
{
|
||||
#region Public Fields
|
||||
|
||||
public string InitialJwd = "";
|
||||
|
||||
#endregion Public Fields
|
||||
|
||||
#region Public Methods
|
||||
|
||||
public void Dispose()
|
||||
{
|
||||
DLService.PipeSvg.EA_NewMessage -= PipeSvg_EA_NewMessage;
|
||||
DLService.PipeShape.EA_NewMessage -= PipeShape_EA_NewMessage;
|
||||
DLService.PipeHwOpt.EA_NewMessage -= PipeHwOption_EA_NewMessage;
|
||||
}
|
||||
|
||||
#endregion Public Methods
|
||||
|
||||
#region Protected Fields
|
||||
|
||||
/// <summary>
|
||||
/// Predisposizione valori live SVG/JWD
|
||||
/// </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 = "";
|
||||
|
||||
/// <summary>
|
||||
/// Configurazione elenchi anagrafiche
|
||||
/// </summary>
|
||||
protected BaseListPayload SetupList = new BaseListPayload();
|
||||
|
||||
#endregion Protected Fields
|
||||
|
||||
#region Protected Properties
|
||||
|
||||
protected List<string> AvailColorMaterialList { get; set; } = new List<string>()
|
||||
{
|
||||
new string("White"),
|
||||
new string("Wood"),
|
||||
new string("Black"),
|
||||
new string("Blu")
|
||||
};
|
||||
|
||||
protected List<string> AvailFamilyHardwareList { get; set; } = new List<string>()
|
||||
{
|
||||
new string("ArTech"),
|
||||
new string("ArTechPlana")
|
||||
};
|
||||
|
||||
protected List<string> AvailGlassList { get; set; } = new List<string>()
|
||||
{
|
||||
new string("Vetro BE 2S 4/12/4"),
|
||||
new string("Vetro BE 2S 4/16/4"),
|
||||
new string("Vetro BE 3S 4/12/4/12/4"),
|
||||
new string("Vetro BE 3S 4/16/4/16/4"),
|
||||
new string("Vetro BE 2S 4T/12/4T"),
|
||||
new string("Vetro BE 2S 4T/16/4T")
|
||||
};
|
||||
|
||||
protected List<Hardware> AvailHardwareList { get; set; } = new List<Hardware>();
|
||||
|
||||
protected List<string> AvailMaterialList { get; set; } = new List<string>()
|
||||
{
|
||||
new string("Pino"),
|
||||
new string("Abete")
|
||||
};
|
||||
|
||||
protected List<string> AvailProfileList { get; set; } = new List<string>()
|
||||
{
|
||||
new string("Profilo78"),
|
||||
new string("ProfiloSaomad")
|
||||
};
|
||||
|
||||
protected Dictionary<string, List<Threshold>> AvailThreshold { get; set; } = new Dictionary<string, List<Threshold>>()
|
||||
{
|
||||
{"Profilo78", new List<Threshold>() { new Threshold(3, "Bottom"), new Threshold(1, "Threshold")}},
|
||||
{"ProfiloSaomad", new List<Threshold>(){ new Threshold(3, "Bottom"), new Threshold(2, "BottomWaterdrip"), new Threshold(1, "Threshold")}}
|
||||
};
|
||||
|
||||
[Inject]
|
||||
protected IConfiguration Config { get; set; } = null!;
|
||||
|
||||
[Inject]
|
||||
protected DataLayerServices DLService { get; set; } = null!;
|
||||
|
||||
[Inject]
|
||||
protected ImageCacheService ICService { get; set; } = null!;
|
||||
|
||||
protected MarkupString JsonSer
|
||||
{
|
||||
get => (MarkupString)currJwd.Replace(Environment.NewLine, "<br/>").Replace(" ", " ");
|
||||
}
|
||||
|
||||
protected string SelColorMaterial { get; set; } = "";
|
||||
protected string SelFamilyHardware { get; set; } = "";
|
||||
protected string SelGlass { get; set; } = "";
|
||||
protected string SelMaterial { get; set; } = "";
|
||||
|
||||
#endregion Protected Properties
|
||||
|
||||
#region Protected Methods
|
||||
|
||||
protected override void OnAfterRender(bool firstRender)
|
||||
{
|
||||
if (firstRender)
|
||||
{
|
||||
// JS interop or data fetches go here
|
||||
isInteractive = true;
|
||||
}
|
||||
}
|
||||
|
||||
protected override async Task OnInitializedAsync()
|
||||
{
|
||||
ConfInit();
|
||||
Random random = new Random();
|
||||
CalcUid = Convert.ToString(random.Next(1000, 10000));
|
||||
windowUid = CalcUid;
|
||||
InitialJwd = File.ReadAllText("Data\\FinestraSplitGrid.jwd");
|
||||
//initialJwd = File.ReadAllText("Data\\AntaDoppia.jwd");
|
||||
currJwd = InitialJwd;
|
||||
// rileggo altri dati
|
||||
await ReloadData();
|
||||
// preparo conf oggetti x controllo
|
||||
SetupList = new BaseListPayload()
|
||||
{
|
||||
ColorMaterial = AvailColorMaterialList,
|
||||
FamilyHardware = AvailFamilyHardwareList,
|
||||
Glass = AvailGlassList,
|
||||
Hardware = AvailHardwareList,
|
||||
Material = AvailMaterialList,
|
||||
Profile = AvailProfileList,
|
||||
Threshold = AvailThreshold
|
||||
};
|
||||
CurrData = new LivePayload()
|
||||
{
|
||||
CurrJwd = InitialJwd,
|
||||
SvgPreview = currSvg,
|
||||
DictShape = currGroupShape,
|
||||
DictOptionsXml = currHwOption
|
||||
};
|
||||
DLService.PipeSvg.EA_NewMessage += PipeSvg_EA_NewMessage;
|
||||
DLService.PipeShape.EA_NewMessage += PipeShape_EA_NewMessage;
|
||||
DLService.PipeHwOpt.EA_NewMessage += PipeHwOption_EA_NewMessage;
|
||||
}
|
||||
|
||||
#endregion Protected Methods
|
||||
|
||||
#region Private Fields
|
||||
|
||||
private string apiUrl = "";
|
||||
private string calcTag = "";
|
||||
private string CalcUid = "CurrWindow";
|
||||
private string windowUid = "CurrWindow";
|
||||
private string cFileHardware = "Hardware/Setup.json";
|
||||
private string currSvg = "";
|
||||
private string GenericBasePath = "";
|
||||
|
||||
/// <summary>
|
||||
/// Semaforo x definire se sia già in modalità ionterattiva o di prerendering
|
||||
/// </summary>
|
||||
private bool isInteractive = false;
|
||||
|
||||
private string outClose = "";
|
||||
private string outSave = "";
|
||||
|
||||
private string imgBasePath = "";
|
||||
|
||||
private string channelHwOpt = "";
|
||||
private string channelShape = "";
|
||||
private string channelSvg = "";
|
||||
|
||||
#endregion Private Fields
|
||||
|
||||
#region Private Methods
|
||||
|
||||
/// <summary>
|
||||
/// Effettua chiusura oggetto con eventuale save
|
||||
/// </summary>
|
||||
/// <param name="reqSave"></param>
|
||||
private void CloseObj(bool reqSave)
|
||||
{
|
||||
outClose = !reqSave ? "Richiesto chiusura!" : "";
|
||||
outSave = reqSave ? "Richiesto salvataggio!" : "";
|
||||
}
|
||||
|
||||
private void ConfInit()
|
||||
{
|
||||
apiUrl = Config.GetValue<string>("ServerConf:Prog.ApiUrl") ?? "";
|
||||
imgBasePath = Config.GetValue<string>("ServerConf:ImageBaseUrl") ?? "";
|
||||
GenericBasePath = Config.GetValue<string>("ServerConf:GenericBaseUrl") ?? "";
|
||||
calcTag = Config.GetValue<string>("ServerConf:CalcTag") ?? "";
|
||||
channelSvg = Config.GetValue<string>("ServerConf:ChannelSvg") ?? "";
|
||||
channelShape = Config.GetValue<string>("ServerConf:ChannelShape") ?? "";
|
||||
channelHwOpt = Config.GetValue<string>("ServerConf:ChannelHwOpt") ?? "";
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Esecuzione azione richiesta
|
||||
/// </summary>
|
||||
/// <param name="actReq">Azione richiesta</param>
|
||||
private void DoAction(DataAction actReq)
|
||||
{
|
||||
switch (actReq)
|
||||
{
|
||||
case DataAction.None:
|
||||
break;
|
||||
|
||||
case DataAction.ResetDictShape:
|
||||
CurrData.DictShape = new Dictionary<int, string>();
|
||||
break;
|
||||
|
||||
case DataAction.ResetHwOpt:
|
||||
CurrData.DictOptionsXml = new Dictionary<int, string>();
|
||||
break;
|
||||
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Esecuzione richiesta
|
||||
/// </summary>
|
||||
/// <param name="CurrArgs"></param>
|
||||
/// <returns></returns>
|
||||
private async Task ExecRequest(Dictionary<string, string> CurrArgs)
|
||||
{
|
||||
// Proseguo solo se sono in interattivo (NO prerender pagina)
|
||||
if (isInteractive)
|
||||
{
|
||||
outClose = "";
|
||||
outSave = "";
|
||||
// verifico se contiene JWD, lo aggiorno
|
||||
if (CurrArgs.ContainsKey("SerializedData"))
|
||||
{
|
||||
currJwd = CurrArgs["SerializedData"];
|
||||
CurrData.CurrJwd = currJwd;
|
||||
}
|
||||
// se il SSE variato --> invio
|
||||
if (!currJwd.Equals(prevJwd) || !EgwCoreLib.Utils.DictUtils.DictAreEqual(m_CurrArgs, CurrArgs))
|
||||
{
|
||||
m_CurrArgs = CurrArgs;
|
||||
prevJwd = currJwd;
|
||||
CalcRequestDTO calcRequestDTO = new CalcRequestDTO();
|
||||
calcRequestDTO.EnvType = EgwMultiEngineManager.Data.Constants.EXECENVIRONMENTS.WINDOW;
|
||||
calcRequestDTO.DictExec = m_CurrArgs;
|
||||
// chiamo la chiamata POST alla API, che manda la richiesta via REDIS
|
||||
await ICService.CallRestPost($"{apiUrl}/{GenericBasePath}", $"{calcTag}/{CalcUid}", calcRequestDTO);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private async void PipeHwOption_EA_NewMessage(object? sender, EventArgs e)
|
||||
{
|
||||
// aggiorno visualizzazione
|
||||
PubSubEventArgs currArgs = (PubSubEventArgs)e;
|
||||
// conversione on-the-fly SVG da mostrare
|
||||
if (!string.IsNullOrEmpty(currArgs.newMessage))
|
||||
{
|
||||
if (currArgs.msgUid.StartsWith($"{channelHwOpt}:{windowUid}") && currArgs.newMessage.Length > 2)
|
||||
{
|
||||
// deserializzo il dizionario delle risposte...
|
||||
Dictionary<int, string> rawDict = JsonConvert.DeserializeObject<Dictionary<int, string>>(currArgs.newMessage) ?? new Dictionary<int, string>();
|
||||
if (rawDict.Count > 0)
|
||||
{
|
||||
currHwOption = rawDict;
|
||||
CurrData.DictOptionsXml = currHwOption;
|
||||
}
|
||||
}
|
||||
await InvokeAsync(StateHasChanged);
|
||||
}
|
||||
await Task.Delay(1);
|
||||
}
|
||||
|
||||
private async void PipeShape_EA_NewMessage(object? sender, EventArgs e)
|
||||
{
|
||||
// aggiorno visualizzazione
|
||||
PubSubEventArgs currArgs = (PubSubEventArgs)e;
|
||||
// conversione on-the-fly SVG da mostrare
|
||||
if (!string.IsNullOrEmpty(currArgs.newMessage) && currArgs.newMessage.Length > 2)
|
||||
{
|
||||
if (currArgs.msgUid.StartsWith($"{channelShape}:{windowUid}"))
|
||||
{
|
||||
// deserializzo il dizionario delle risposte...
|
||||
var rawDict = JsonConvert.DeserializeObject<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($"{channelSvg}:{windowUid}"))
|
||||
{
|
||||
currSvg = currArgs.newMessage;
|
||||
CurrData.SvgPreview = currArgs.newMessage;
|
||||
}
|
||||
await InvokeAsync(StateHasChanged);
|
||||
}
|
||||
await Task.Delay(1);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Rilettura dati
|
||||
/// </summary>
|
||||
/// <returns></returns>
|
||||
private Task ReloadData()
|
||||
{
|
||||
//return base.OnInitializedAsync();
|
||||
AvailHardwareList = new List<Hardware>();
|
||||
if (File.Exists(cFileHardware))
|
||||
{
|
||||
string rawValHW = File.ReadAllText(cFileHardware);
|
||||
var rawListHW = JsonConvert.DeserializeObject<List<Hardware>>(rawValHW) ?? new List<Hardware>();
|
||||
foreach (var item in rawListHW)
|
||||
{
|
||||
AvailHardwareList.Add(item);
|
||||
}
|
||||
}
|
||||
return Task.Delay(100);
|
||||
}
|
||||
|
||||
#endregion Private Methods
|
||||
}
|
||||
}
|
||||
@@ -1,25 +0,0 @@
|
||||
@page "/TestComponentJWD"
|
||||
@rendermode InteractiveServer
|
||||
|
||||
<PageTitle>TestComponent</PageTitle>
|
||||
|
||||
<WebWindowTest.Test IN_FamilyHardwareList="@AvailFamilyHardwareList"
|
||||
IN_HardwareList="@AvailHardwareList"
|
||||
IN_ColorMaterialList="@AvailColorMaterialList"
|
||||
IN_MaterialList="@AvailMaterialList"
|
||||
IN_GlassList="@AvailGlassList"
|
||||
EC_OnUpdate="SaveJWD"
|
||||
LiveSVG="@currSvg"
|
||||
CurrJwd="@InitialJwd">
|
||||
</WebWindowTest.Test>
|
||||
|
||||
@*
|
||||
IN_SelGlass="@SelGlass"
|
||||
IN_SelFamilyHardware="@SelFamilyHardware"
|
||||
IN_SelColorMaterial="@SelColorMaterial"
|
||||
IN_SelMaterial="@SelMaterial"
|
||||
*@
|
||||
|
||||
<p>
|
||||
@m_CurrArgs.GetValueOrDefault("Jwd")
|
||||
</p>
|
||||
@@ -1,217 +0,0 @@
|
||||
using EgwCoreLib.Lux.Core;
|
||||
using EgwCoreLib.Lux.Core.RestPayload;
|
||||
using EgwCoreLib.Lux.Data.Services;
|
||||
using Microsoft.AspNetCore.Components;
|
||||
using Newtonsoft.Json;
|
||||
using NLog;
|
||||
using System.Diagnostics;
|
||||
using System.Security.AccessControl;
|
||||
using Egw.Window.Data;
|
||||
using WebWindowTest;
|
||||
using WebWindowTest.DTO;
|
||||
|
||||
namespace Test.UI.Components.Pages
|
||||
{
|
||||
public partial class TestComponentJWD : IDisposable
|
||||
{
|
||||
#region Public Properties
|
||||
|
||||
public string InitialJwd = "";
|
||||
public Template SelTemplate { get; set; } = new Template(0, "---SELECT---", "", "");
|
||||
|
||||
#endregion Public Properties
|
||||
|
||||
#region Public Methods
|
||||
|
||||
public void Dispose()
|
||||
{
|
||||
DLService.CalcDonePipe.EA_NewMessage -= CalcDonePipe_EA_NewMessage;
|
||||
}
|
||||
|
||||
#endregion Public Methods
|
||||
|
||||
#region Protected Fields
|
||||
|
||||
protected string currJwd = "...";
|
||||
protected Dictionary<string, string> m_CurrArgs = new Dictionary<string, string>();
|
||||
|
||||
#endregion Protected Fields
|
||||
|
||||
#region Protected Properties
|
||||
|
||||
protected List<TemplateSelectDTO> AvailTemplateList { get; set; } = new List<TemplateSelectDTO>();
|
||||
protected List<Hardware> AvailHardwareList { get; set; } = new List<Hardware>();
|
||||
protected List<string> AvailFamilyHardwareList { get; set; } = new List<string>()
|
||||
{
|
||||
new string("Natura"),
|
||||
new string("Optima")
|
||||
};
|
||||
protected List<string> AvailColorMaterialList { get; set; } = new List<string>()
|
||||
{
|
||||
new string("White"),
|
||||
new string("Black"),
|
||||
new string("Blu")
|
||||
};
|
||||
protected List<string> AvailMaterialList { get; set; } = new List<string>()
|
||||
{
|
||||
new string("Pine"),
|
||||
new string("Fir")
|
||||
};
|
||||
protected List<string> AvailGlassList { get; set; } = new List<string>()
|
||||
{
|
||||
new string("4/12/4"),
|
||||
new string("4/16/4"),
|
||||
new string("4/12/4/12/4"),
|
||||
new string("4/16/4/16/4"),
|
||||
new string("4T/12/4T"),
|
||||
new string("4T/16/4T")
|
||||
};
|
||||
protected string SelFamilyHardware { get; set; } = "";
|
||||
protected string SelColorMaterial { get; set; } = "";
|
||||
protected string SelMaterial { get; set; } = "";
|
||||
protected string SelGlass { get; set; } = "";
|
||||
|
||||
[Inject]
|
||||
protected IConfiguration Config { get; set; } = null!;
|
||||
|
||||
[Inject]
|
||||
protected DataLayerServices DLService { get; set; } = null!;
|
||||
|
||||
[Inject]
|
||||
protected ImageCacheService ICService { get; set; } = null!;
|
||||
|
||||
protected MarkupString JsonSer
|
||||
{
|
||||
get => (MarkupString)currJwd.Replace(Environment.NewLine, "<br/>").Replace(" ", " ");
|
||||
}
|
||||
|
||||
#endregion Protected Properties
|
||||
|
||||
#region Protected Methods
|
||||
|
||||
protected override async Task OnInitializedAsync()
|
||||
{
|
||||
ConfInit();
|
||||
SelFamilyHardware = "Natura";
|
||||
//SelColorMaterial = "Black";
|
||||
//SelColorMaterial = "Pine";
|
||||
//SelGlass = "4T/16/4T";
|
||||
InitialJwd = File.ReadAllText("Data\\FinDueAnteBottomFisso.jwd");
|
||||
currJwd = InitialJwd;
|
||||
DLService.CalcDonePipe.EA_NewMessage += CalcDonePipe_EA_NewMessage;
|
||||
await ReloadData();
|
||||
}
|
||||
|
||||
#endregion Protected Methods
|
||||
|
||||
#region Private Fields
|
||||
|
||||
private string apiUrl = "";
|
||||
private string calcTag = "";
|
||||
private string CalcUid = "CurrWindow";
|
||||
private string cFileTemplate = "Data/Setup.json";
|
||||
private string cFileHardware = "Hardware/Setup.json";
|
||||
private TemplateSelectDTO? currSel = null;
|
||||
private string currSvg = "";
|
||||
|
||||
private string imgBasePath = "";
|
||||
private string GenericBasePath = "";
|
||||
|
||||
private string subChannel = "";
|
||||
|
||||
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;
|
||||
}
|
||||
await InvokeAsync(StateHasChanged);
|
||||
}
|
||||
await Task.Delay(1);
|
||||
}
|
||||
|
||||
private void ConfInit()
|
||||
{
|
||||
apiUrl = Config.GetValue<string>("ServerConf:Prog.ApiUrl") ?? "";
|
||||
imgBasePath = Config.GetValue<string>("ServerConf:ImageBaseUrl") ?? "";
|
||||
GenericBasePath = Config.GetValue<string>("ServerConf:GenericBaseUrl") ?? "";
|
||||
calcTag = Config.GetValue<string>("ServerConf:CalcTag") ?? "";
|
||||
subChannel = Config.GetValue<string>("ServerConf:SvgChannel") ?? "";
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Rilettura dati
|
||||
/// </summary>
|
||||
/// <returns></returns>
|
||||
private async Task ReloadData()
|
||||
{
|
||||
//return base.OnInitializedAsync();
|
||||
AvailTemplateList = new List<TemplateSelectDTO>();
|
||||
AvailHardwareList = new List<Hardware>();
|
||||
// brutale, da rivedere...
|
||||
if (string.IsNullOrEmpty(InitialJwd))
|
||||
{
|
||||
if (File.Exists(cFileTemplate))
|
||||
{
|
||||
string rawVal = File.ReadAllText(cFileTemplate);
|
||||
var rawList = JsonConvert.DeserializeObject<List<TemplateSelectDTO>>(rawVal) ?? new List<TemplateSelectDTO>();
|
||||
|
||||
// calcolo URL immagini... DTO interno da rivedere?
|
||||
foreach (var item in rawList)
|
||||
{
|
||||
item.ImageUrl = ICService.ImageUrl($"{apiUrl}/{imgBasePath}", false, item.SVGFileName);
|
||||
AvailTemplateList.Add(item);
|
||||
}
|
||||
}
|
||||
}
|
||||
if (File.Exists(cFileHardware))
|
||||
{
|
||||
string rawValHW = File.ReadAllText(cFileHardware);
|
||||
var rawListHW = JsonConvert.DeserializeObject<List<Hardware>>(rawValHW) ?? new List<Hardware>();
|
||||
foreach (var item in rawListHW)
|
||||
{
|
||||
AvailHardwareList.Add(item);
|
||||
}
|
||||
}
|
||||
await Task.Delay(100);
|
||||
}
|
||||
|
||||
private async Task SaveJWD(Dictionary<string, string> CurrArgs)
|
||||
{
|
||||
m_CurrArgs = CurrArgs;
|
||||
// chiamo la chiamata POST alla API, che manda la richiesta via REDIS
|
||||
if (currJwd != null)
|
||||
{
|
||||
CalcRequestDTO calcRequestDTO = new CalcRequestDTO();
|
||||
calcRequestDTO.EnvType = EgwMultiEngineManager.Data.Constants.EXECENVIRONMENTS.WINDOW;
|
||||
calcRequestDTO.DictExec = m_CurrArgs;
|
||||
await ICService.CallRestPost($"{apiUrl}/{GenericBasePath}", $"{calcTag}/{CalcUid}", calcRequestDTO);
|
||||
}
|
||||
}
|
||||
|
||||
private void SetTemplate(TemplateSelectDTO selTemp)
|
||||
{
|
||||
string rawVal = "";
|
||||
currSel = selTemp;
|
||||
// brutale,d a rivedere...
|
||||
if (File.Exists(selTemp.JwdFileName))
|
||||
{
|
||||
rawVal = File.ReadAllText(selTemp.JwdFileName);
|
||||
}
|
||||
SelTemplate = new Template(selTemp.Index, selTemp.Description, selTemp.SVGFileName, rawVal);
|
||||
}
|
||||
|
||||
#endregion Private Methods
|
||||
}
|
||||
}
|
||||
@@ -1,24 +0,0 @@
|
||||
@page "/TestComponentTemplate"
|
||||
@rendermode InteractiveServer
|
||||
|
||||
<PageTitle>TestComponent</PageTitle>
|
||||
|
||||
<WebWindowTest.Test IN_TemplateDTOList="@AvailTemplateList"
|
||||
IN_SelTemplate="@SelTemplate"
|
||||
IN_FamilyHardwareList="@AvailFamilyHardwareList"
|
||||
IN_SelFamilyHardware="@SelFamilyHardware"
|
||||
IN_HardwareList="@AvailHardwareList"
|
||||
IN_ColorMaterialList="@AvailColorMaterialList"
|
||||
IN_SelColorMaterial="@SelColorMaterial"
|
||||
IN_MaterialList="@AvailMaterialList"
|
||||
IN_SelMaterial="@SelMaterial"
|
||||
IN_GlassList="@AvailGlassList"
|
||||
IN_SelGlass="@SelGlass"
|
||||
EC_OnUpdate="SaveJWD"
|
||||
EC_OnSelectedTemplate="SetTemplate"
|
||||
LiveSVG="@currSvg">
|
||||
</WebWindowTest.Test>
|
||||
|
||||
<p>
|
||||
@m_CurrArgs.GetValueOrDefault("Jwd")
|
||||
</p>
|
||||
@@ -1,215 +0,0 @@
|
||||
using EgwCoreLib.Lux.Core;
|
||||
using EgwCoreLib.Lux.Core.RestPayload;
|
||||
using EgwCoreLib.Lux.Data.Services;
|
||||
using Microsoft.AspNetCore.Components;
|
||||
using Newtonsoft.Json;
|
||||
using NLog;
|
||||
using System.Diagnostics;
|
||||
using System.Security.AccessControl;
|
||||
using Egw.Window.Data;
|
||||
using WebWindowTest;
|
||||
using WebWindowTest.DTO;
|
||||
|
||||
namespace Test.UI.Components.Pages
|
||||
{
|
||||
public partial class TestComponentTemplate : IDisposable
|
||||
{
|
||||
#region Public Properties
|
||||
|
||||
public string InitialJwd = "";
|
||||
public Template SelTemplate { get; set; } = new Template(0, "---SELECT---", "", "");
|
||||
|
||||
#endregion Public Properties
|
||||
|
||||
#region Public Methods
|
||||
|
||||
public void Dispose()
|
||||
{
|
||||
DLService.CalcDonePipe.EA_NewMessage -= CalcDonePipe_EA_NewMessage;
|
||||
}
|
||||
|
||||
#endregion Public Methods
|
||||
|
||||
#region Protected Fields
|
||||
|
||||
protected string currJwd = "...";
|
||||
protected Dictionary<string, string> m_CurrArgs = new Dictionary<string, string>();
|
||||
|
||||
#endregion Protected Fields
|
||||
|
||||
#region Protected Properties
|
||||
|
||||
protected List<TemplateSelectDTO> AvailTemplateList { get; set; } = new List<TemplateSelectDTO>();
|
||||
protected List<Hardware> AvailHardwareList { get; set; } = new List<Hardware>();
|
||||
protected List<string> AvailFamilyHardwareList { get; set; } = new List<string>()
|
||||
{
|
||||
new string("Natura"),
|
||||
new string("Optima")
|
||||
};
|
||||
protected List<string> AvailColorMaterialList { get; set; } = new List<string>()
|
||||
{
|
||||
new string("White"),
|
||||
new string("Black"),
|
||||
new string("Blu")
|
||||
};
|
||||
protected List<string> AvailMaterialList { get; set; } = new List<string>()
|
||||
{
|
||||
new string("Pine"),
|
||||
new string("Fir")
|
||||
};
|
||||
protected List<string> AvailGlassList { get; set; } = new List<string>()
|
||||
{
|
||||
new string("4/12/4"),
|
||||
new string("4/16/4"),
|
||||
new string("4/12/4/12/4"),
|
||||
new string("4/16/4/16/4"),
|
||||
new string("4T/12/4T"),
|
||||
new string("4T/16/4T")
|
||||
};
|
||||
protected string SelFamilyHardware { get; set; } = "";
|
||||
protected string SelColorMaterial { get; set; } = "";
|
||||
protected string SelMaterial { get; set; } = "";
|
||||
protected string SelGlass { get; set; } = "";
|
||||
|
||||
[Inject]
|
||||
protected IConfiguration Config { get; set; } = null!;
|
||||
|
||||
[Inject]
|
||||
protected DataLayerServices DLService { get; set; } = null!;
|
||||
|
||||
[Inject]
|
||||
protected ImageCacheService ICService { get; set; } = null!;
|
||||
|
||||
protected MarkupString JsonSer
|
||||
{
|
||||
get => (MarkupString)currJwd.Replace(Environment.NewLine, "<br/>").Replace(" ", " ");
|
||||
}
|
||||
|
||||
#endregion Protected Properties
|
||||
|
||||
#region Protected Methods
|
||||
|
||||
protected override async Task OnInitializedAsync()
|
||||
{
|
||||
ConfInit();
|
||||
SelFamilyHardware = "Natura";
|
||||
SelColorMaterial = "Black";
|
||||
SelMaterial = "Pine";
|
||||
SelGlass = "4T/16/4T";
|
||||
DLService.CalcDonePipe.EA_NewMessage += CalcDonePipe_EA_NewMessage;
|
||||
await ReloadData();
|
||||
}
|
||||
|
||||
#endregion Protected Methods
|
||||
|
||||
#region Private Fields
|
||||
|
||||
private string apiUrl = "";
|
||||
private string calcTag = "";
|
||||
private string CalcUid = "CurrWindow";
|
||||
private string cFileTemplate = "Data/Setup.json";
|
||||
private string cFileHardware = "Hardware/Setup.json";
|
||||
private TemplateSelectDTO? currSel = null;
|
||||
private string currSvg = "";
|
||||
|
||||
private string imgBasePath = "";
|
||||
private string GenericBasePath = "";
|
||||
|
||||
private string subChannel = "";
|
||||
|
||||
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;
|
||||
}
|
||||
await InvokeAsync(StateHasChanged);
|
||||
}
|
||||
await Task.Delay(1);
|
||||
}
|
||||
|
||||
private void ConfInit()
|
||||
{
|
||||
apiUrl = Config.GetValue<string>("ServerConf:Prog.ApiUrl") ?? "";
|
||||
imgBasePath = Config.GetValue<string>("ServerConf:ImageBaseUrl") ?? "";
|
||||
GenericBasePath = Config.GetValue<string>("ServerConf:GenericBaseUrl") ?? "";
|
||||
calcTag = Config.GetValue<string>("ServerConf:CalcTag") ?? "";
|
||||
subChannel = Config.GetValue<string>("ServerConf:SvgChannel") ?? "";
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Rilettura dati
|
||||
/// </summary>
|
||||
/// <returns></returns>
|
||||
private async Task ReloadData()
|
||||
{
|
||||
//return base.OnInitializedAsync();
|
||||
AvailTemplateList = new List<TemplateSelectDTO>();
|
||||
AvailHardwareList = new List<Hardware>();
|
||||
// brutale, da rivedere...
|
||||
if(string.IsNullOrEmpty(InitialJwd))
|
||||
{
|
||||
if (File.Exists(cFileTemplate))
|
||||
{
|
||||
string rawVal = File.ReadAllText(cFileTemplate);
|
||||
var rawList = JsonConvert.DeserializeObject<List<TemplateSelectDTO>>(rawVal) ?? new List<TemplateSelectDTO>();
|
||||
|
||||
// calcolo URL immagini... DTO interno da rivedere?
|
||||
foreach (var item in rawList)
|
||||
{
|
||||
item.ImageUrl = ICService.ImageUrl($"{apiUrl}/{imgBasePath}", false, item.SVGFileName);
|
||||
AvailTemplateList.Add(item);
|
||||
}
|
||||
}
|
||||
}
|
||||
if (File.Exists(cFileHardware))
|
||||
{
|
||||
string rawValHW = File.ReadAllText(cFileHardware);
|
||||
var rawListHW = JsonConvert.DeserializeObject<List<Hardware>>(rawValHW) ?? new List<Hardware>();
|
||||
foreach (var item in rawListHW)
|
||||
{
|
||||
AvailHardwareList.Add(item);
|
||||
}
|
||||
}
|
||||
await Task.Delay(100);
|
||||
}
|
||||
|
||||
private async Task SaveJWD(Dictionary<string, string> CurrArgs)
|
||||
{
|
||||
m_CurrArgs = CurrArgs;
|
||||
// chiamo la chiamata POST alla API, che manda la richiesta via REDIS
|
||||
if (currJwd != null)
|
||||
{
|
||||
CalcRequestDTO calcRequestDTO = new CalcRequestDTO();
|
||||
calcRequestDTO.EnvType = EgwMultiEngineManager.Data.Constants.EXECENVIRONMENTS.WINDOW;
|
||||
calcRequestDTO.DictExec = m_CurrArgs;
|
||||
await ICService.CallRestPost($"{apiUrl}/{GenericBasePath}", $"{calcTag}/{CalcUid}", calcRequestDTO);
|
||||
}
|
||||
}
|
||||
|
||||
private void SetTemplate(TemplateSelectDTO selTemp)
|
||||
{
|
||||
string rawVal = "";
|
||||
currSel = selTemp;
|
||||
// brutale,d a rivedere...
|
||||
if (File.Exists(selTemp.JwdFileName))
|
||||
{
|
||||
rawVal = File.ReadAllText(selTemp.JwdFileName);
|
||||
}
|
||||
SelTemplate = new Template(selTemp.Index, selTemp.Description, selTemp.SVGFileName, rawVal);
|
||||
}
|
||||
|
||||
#endregion Private Methods
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,40 @@
|
||||
@page "/TestError"
|
||||
@rendermode InteractiveServer
|
||||
|
||||
<PageTitle>EditJWD</PageTitle>
|
||||
|
||||
<div class="row">
|
||||
<div class="col-3"><button class="btn btn-primary" @onclick="() => RemoveJwd()">No JWD</button></div>
|
||||
<div class="col-3"><button class="btn btn-primary" @onclick="RemoveParams">No Parameters</button></div>
|
||||
</div>
|
||||
|
||||
<WebWindowComplex.TableComp ListPayload="SetupList"
|
||||
LiveData="CurrData"
|
||||
baseUser="User"
|
||||
EC_ActionReq="DoAction"
|
||||
EC_DoUpdate="ExecRequest"
|
||||
EC_OnClose="CloseObj">
|
||||
</WebWindowComplex.TableComp>
|
||||
|
||||
|
||||
@if (!string.IsNullOrEmpty(outClose))
|
||||
{
|
||||
<div class="alert alert-danger fs-4">
|
||||
@outClose
|
||||
</div>
|
||||
}
|
||||
else if (!string.IsNullOrEmpty(outSave))
|
||||
{
|
||||
<div class="alert alert-success fs-4">
|
||||
@outSave
|
||||
</div>
|
||||
}
|
||||
|
||||
<div class="card">
|
||||
<div class="card-body small">
|
||||
@JsonSer
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
@@ -0,0 +1,630 @@
|
||||
using Egw.Window.Data;
|
||||
using EgwCoreLib.Lux.Core;
|
||||
using EgwCoreLib.Lux.Core.RestPayload;
|
||||
using EgwCoreLib.Lux.Data.Services;
|
||||
using Microsoft.AspNetCore.Components;
|
||||
using Newtonsoft.Json;
|
||||
using WebWindowComplex;
|
||||
using WebWindowComplex.DTO;
|
||||
using static WebWindowComplex.LayoutConst;
|
||||
|
||||
namespace Test.UI.Components.Pages
|
||||
{
|
||||
public partial class TestError
|
||||
{
|
||||
|
||||
#region Public Fields
|
||||
|
||||
public string InitialJwd = "";
|
||||
|
||||
#endregion Public Fields
|
||||
|
||||
#region Public Methods
|
||||
|
||||
public void Dispose()
|
||||
{
|
||||
DLService.PipeSvg.EA_NewMessage -= PipeSvg_EA_NewMessage;
|
||||
DLService.PipeShape.EA_NewMessage -= PipeShape_EA_NewMessage;
|
||||
DLService.PipeHwOpt.EA_NewMessage -= PipeHwOption_EA_NewMessage;
|
||||
DLService.PipeProfElement.EA_NewMessage -= PipeProfElement_EA_NewMessage;
|
||||
}
|
||||
|
||||
#endregion Public Methods
|
||||
|
||||
#region Protected Fields
|
||||
|
||||
/// <summary>
|
||||
/// Predisposizione valori live SVG/JWD
|
||||
/// </summary>
|
||||
protected LivePayload CurrData = new LivePayload();
|
||||
|
||||
/// <summary>
|
||||
/// Livello di accesso
|
||||
/// -- true: utente base (versione semplificata)
|
||||
/// -- false: utente avanzato (versione completa)
|
||||
/// </summary>
|
||||
protected bool User = false;
|
||||
|
||||
protected Dictionary<int, string> currGroupShape = new Dictionary<int, string>();
|
||||
protected List<AreaProfiles> currElement = new List<AreaProfiles>();
|
||||
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 = "";
|
||||
|
||||
/// <summary>
|
||||
/// Configurazione elenchi anagrafiche
|
||||
/// </summary>
|
||||
protected BaseListPayload SetupList = new BaseListPayload();
|
||||
|
||||
#endregion Protected Fields
|
||||
|
||||
#region Protected Properties
|
||||
|
||||
protected List<string> AvailColorMaterialList { get; set; } = new List<string>()
|
||||
{
|
||||
new string("White"),
|
||||
new string("Black"),
|
||||
new string("Blu"),
|
||||
new string("Wood")
|
||||
};
|
||||
|
||||
protected List<string> AvailFamilyHardwareList { get; set; } = new List<string>()
|
||||
{
|
||||
new string("ArTech"),
|
||||
new string("ArTechPlana")
|
||||
};
|
||||
|
||||
protected List<string> AvailGlassList { get; set; } = new List<string>()
|
||||
{
|
||||
new string("Vetro BE 2S 4/12/4"),
|
||||
new string("Vetro BE 2S 4/16/4"),
|
||||
new string("Vetro BE 3S 4/12/4/12/4"),
|
||||
new string("Vetro BE 3S 4/16/4/16/4"),
|
||||
new string("Vetro BE 2S 4T/12/4T"),
|
||||
new string("Vetro BE 2S 4T/16/4T")
|
||||
};
|
||||
|
||||
protected List<Hardware> AvailHardwareList { get; set; } = new List<Hardware>();
|
||||
|
||||
protected List<string> AvailMaterialList { get; set; } = new List<string>()
|
||||
{
|
||||
new string("Pino"),
|
||||
new string("Abete")
|
||||
};
|
||||
|
||||
/// <summary>
|
||||
/// Lista profili da DB
|
||||
/// </summary>
|
||||
private List<ProfilePayload> AvailProfileList = new List<ProfilePayload>();
|
||||
|
||||
|
||||
private List<Threshold> ThresholdProfilo78 = new List<Threshold>()
|
||||
{
|
||||
{ new Threshold(3, "Bottom") },
|
||||
{ new Threshold(1, "Threshold") }
|
||||
};
|
||||
|
||||
private List<Threshold> ThresholdProfiloSaomad = new List<Threshold>()
|
||||
{
|
||||
{ new Threshold(3, "Bottom") },
|
||||
{ new Threshold(2, "BottomWaterdrip") },
|
||||
{ new Threshold(1, "Threshold") }
|
||||
};
|
||||
|
||||
private Dictionary<string, double> ParamProfilo78 = new Dictionary<string, double>()
|
||||
{
|
||||
{"Frame_Fill_Rail_DimMax", 85},
|
||||
{"Frame_Fill_Rail_DimMin", 70},
|
||||
{"Frame_Fill_Rail_DimStd", 72},
|
||||
{"Frame_Fixed_Bottom_DimMax", 80},
|
||||
{"Frame_Fixed_Bottom_DimMin", 70},
|
||||
{"Frame_Fixed_Bottom_DimStd", 78},
|
||||
{"Frame_Fixed_Top_DimMax", 80},
|
||||
{"Frame_Fixed_Top_DimMin", 70},
|
||||
{"Frame_Fixed_Top_DimStd", 78},
|
||||
{"Frame_Frame_Split_DimMax", 85},
|
||||
{"Frame_Frame_Split_DimMin", 55},
|
||||
{"Frame_Frame_Split_DimStd", 60},
|
||||
{"Frame_Mixed_Bottom_DimMax", 80},
|
||||
{"Frame_Mixed_Bottom_DimMin", 70},
|
||||
{"Frame_Mixed_Bottom_DimStd", 78},
|
||||
{"Frame_Mixed_Split_DimMax", 110},
|
||||
{"Frame_Mixed_Split_DimMin", 70},
|
||||
{"Frame_Mixed_Split_DimStd", 90},
|
||||
{"Frame_Mixed_Top_DimMax", 80},
|
||||
{"Frame_Mixed_Top_DimMin", 70},
|
||||
{"Frame_Mixed_Top_DimStd", 78},
|
||||
{"Frame_Rail_Bottom_DimMax", 80},
|
||||
{"Frame_Rail_Bottom_DimMin", 70},
|
||||
{"Frame_Rail_Bottom_DimStd", 78},
|
||||
{"Frame_Rail_DimMax", 78},
|
||||
{"Frame_Rail_DimMin", 68},
|
||||
{"Frame_Rail_DimStd", 72},
|
||||
{"Frame_Sash_Bottom_DimMax", 80},
|
||||
{"Frame_Sash_Bottom_DimMin", 70},
|
||||
{"Frame_Sash_Bottom_DimStd", 78},
|
||||
{"Frame_Sash_Horizontal_DimMax", 110},
|
||||
{"Frame_Sash_Horizontal_DimMin", 75},
|
||||
{"Frame_Sash_Horizontal_DimStd", 95},
|
||||
{"Frame_Sash_Threshold_DimMax", 26},
|
||||
{"Frame_Sash_Threshold_DimMin", 24},
|
||||
{"Frame_Sash_Threshold_DimStd", 25},
|
||||
{"Frame_Sash_Top_DimMax", 80},
|
||||
{"Frame_Sash_Top_DimMin", 70},
|
||||
{"Frame_Sash_Top_DimStd", 78},
|
||||
{"Frame_Sash_Vertical_DimMax", 110},
|
||||
{"Frame_Sash_Vertical_DimMin", 85},
|
||||
{"Frame_Sash_Vertical_DimStd", 95},
|
||||
{"Frame_Slide_Bottom_DimMax", 60},
|
||||
{"Frame_Slide_Bottom_DimMin", 50},
|
||||
{"Frame_Slide_Bottom_DimStd", 55},
|
||||
{"Frame_Slide_Fixed_DimMax", 60},
|
||||
{"Frame_Slide_Fixed_DimMin", 50},
|
||||
{"Frame_Slide_Fixed_DimStd", 55},
|
||||
{"Frame_Slide_MovableBack_Bottom_DimMax", 60},
|
||||
{"Frame_Slide_MovableBack_Bottom_DimMin", 50},
|
||||
{"Frame_Slide_MovableBack_Bottom_DimStd", 55},
|
||||
{"Frame_Slide_MovableBack_Threshold_DimMax", 10},
|
||||
{"Frame_Slide_MovableBack_Threshold_DimMin", 3},
|
||||
{"Frame_Slide_MovableBack_Threshold_DimStd", 4},
|
||||
{"Frame_Slide_Movable_DimMax", 60},
|
||||
{"Frame_Slide_Movable_DimMin", 50},
|
||||
{"Frame_Slide_Movable_DimStd", 55},
|
||||
{"Frame_Slide_Threshold_DimMax", 10},
|
||||
{"Frame_Slide_Threshold_DimMin", 3},
|
||||
{"Frame_Slide_Threshold_DimStd", 4},
|
||||
{"Frame_Slide_Top_DimMax", 60},
|
||||
{"Frame_Slide_Top_DimMin", 50},
|
||||
{"Frame_Slide_Top_DimStd", 55},
|
||||
{"Sash_Fill_Rail_DimMax", 80},
|
||||
{"Sash_Fill_Rail_DimMin", 70},
|
||||
{"Sash_Fill_Rail_DimStd", 78},
|
||||
{"Sash_Frame_Bottom_DimMax", 80},
|
||||
{"Sash_Frame_Bottom_DimMin", 70},
|
||||
{"Sash_Frame_Bottom_DimStd", 78},
|
||||
{"Sash_Frame_Top_DimMax", 80},
|
||||
{"Sash_Frame_Top_DimMin", 70},
|
||||
{"Sash_Frame_Top_DimStd", 78},
|
||||
{"Sash_French_In_DimMax", 80},
|
||||
{"Sash_French_In_DimMin", 70},
|
||||
{"Sash_French_In_DimStd", 78},
|
||||
{"Sash_French_Out_DimMax", 80},
|
||||
{"Sash_French_Out_DimMin", 70},
|
||||
{"Sash_French_Out_DimStd", 78},
|
||||
{"Sash_Rail_Bottom_DimMax", 80},
|
||||
{"Sash_Rail_Bottom_DimMin", 70},
|
||||
{"Sash_Rail_Bottom_DimStd", 78},
|
||||
{"Sash_Rail_DimMax", 80},
|
||||
{"Sash_Rail_DimMin", 70},
|
||||
{"Sash_Rail_DimStd", 78},
|
||||
{"Sash_Sash_Active_DimMax", 80},
|
||||
{"Sash_Sash_Active_DimMin", 70},
|
||||
{"Sash_Sash_Active_DimStd", 78},
|
||||
{"Sash_Sash_Inactive_DimMax", 80},
|
||||
{"Sash_Sash_Inactive_DimMin", 70},
|
||||
{"Sash_Sash_Inactive_DimStd", 78},
|
||||
{"Sash_Sash_Split_DimMax", 70},
|
||||
{"Sash_Sash_Split_DimMin", 50},
|
||||
{"Sash_Sash_Split_DimStd", 60},
|
||||
{"Sash_Slide_Active_DimMax", 90},
|
||||
{"Sash_Slide_Active_DimMin", 70},
|
||||
{"Sash_Slide_Active_DimStd", 80},
|
||||
{"Sash_Slide_Active_In_DimMax", 90},
|
||||
{"Sash_Slide_Active_In_DimMin", 70},
|
||||
{"Sash_Slide_Active_In_DimStd", 80},
|
||||
{"Sash_Slide_Fixed_Bottom_DimMax", 150},
|
||||
{"Sash_Slide_Fixed_Bottom_DimMin", 120},
|
||||
{"Sash_Slide_Fixed_Bottom_DimStd", 135},
|
||||
{"Sash_Slide_Fixed_Side_DimMax", 90},
|
||||
{"Sash_Slide_Fixed_Side_DimMin", 70},
|
||||
{"Sash_Slide_Fixed_Side_DimStd", 80},
|
||||
{"Sash_Slide_Fixed_Top_DimMax", 90},
|
||||
{"Sash_Slide_Fixed_Top_DimMin", 70},
|
||||
{"Sash_Slide_Fixed_Top_DimStd", 80},
|
||||
{"Sash_Slide_Inactive_DimMax", 90},
|
||||
{"Sash_Slide_Inactive_DimMin", 70},
|
||||
{"Sash_Slide_Inactive_DimStd", 80},
|
||||
{"Sash_Slide_MovableBack_Bottom_DimMax", 150},
|
||||
{"Sash_Slide_MovableBack_Bottom_DimMin", 120},
|
||||
{"Sash_Slide_MovableBack_Bottom_DimStd", 135},
|
||||
{"Sash_Slide_MovableBack_Side_DimMax", 90},
|
||||
{"Sash_Slide_MovableBack_Side_DimMin", 70},
|
||||
{"Sash_Slide_MovableBack_Side_DimStd", 80},
|
||||
{"Sash_Slide_MovableBack_Top_DimMax", 90},
|
||||
{"Sash_Slide_MovableBack_Top_DimMin", 70},
|
||||
{"Sash_Slide_MovableBack_Top_DimStd", 80},
|
||||
{"Sash_Slide_Movable_Bottom_DimMax", 150},
|
||||
{"Sash_Slide_Movable_Bottom_DimMin", 120},
|
||||
{"Sash_Slide_Movable_Bottom_DimStd", 135},
|
||||
{"Sash_Slide_Movable_Side_DimMax", 90},
|
||||
{"Sash_Slide_Movable_Side_DimMin", 70},
|
||||
{"Sash_Slide_Movable_Side_DimStd", 80},
|
||||
{"Sash_Slide_Movable_Top_DimMax", 90},
|
||||
{"Sash_Slide_Movable_Top_DimMin", 70},
|
||||
{"Sash_Slide_Movable_Top_DimStd", 80},
|
||||
{"Frame_BottomRail_Overlap", 33.2},
|
||||
{"French_In_Overlap", 26},
|
||||
{"French_Out_Overlap", 26},
|
||||
{"Mixed_Bottom_Overlap", 26},
|
||||
{"Mixed_Split_Bottom_Overlap", 41},
|
||||
{"Mixed_Split_Top_Overlap", 41},
|
||||
{"Mixed_Top_Overlap", 41},
|
||||
{"NO_Mixed_Bottom_Overlap", 26},
|
||||
{"NO_Mixed_Split_Bottom_Overlap", 41},
|
||||
{"NO_Mixed_Split_Top_Overlap", 41},
|
||||
{"NO_Slide_MovableBack_Threshold_Overlap", 0},
|
||||
{"NO_Slide_Threshold_Overlap", 0},
|
||||
{"Sash_Active_Overlap", 26},
|
||||
{"Sash_Inactive_Overlap", 26},
|
||||
{"Sash_BottomRail_Overlap", 24.5},
|
||||
{"Sash_Bottom_Overlap", 26},
|
||||
{"Sash_Horizontal_Bottom_Overlap", 26},
|
||||
{"Sash_Horizontal_Top_Overlap", 41},
|
||||
{"Sash_Threshold_Overlap", 18},
|
||||
{"Sash_Top_Overlap", 41},
|
||||
{"Sash_Vertical_Overlap", 41},
|
||||
{"Slide_Active_Overlap", 80},
|
||||
{"Slide_Bottom_Overlap", 0},
|
||||
{"Slide_Fixed_Overlap", -5},
|
||||
{"Slide_MovableBack_Bottom_Overlap", 0},
|
||||
{"Slide_MovableBack_Threshold_Overlap", 0},
|
||||
{"Slide_Movable_Overlap", -5},
|
||||
{"Slide_Threshold_Overlap", 0},
|
||||
{"Slide_Top_Overlap", -12}
|
||||
};
|
||||
|
||||
private Dictionary<string, double> ParamProfiloSaomad = new Dictionary<string, double>()
|
||||
{
|
||||
{"Frame_Frame_Split_DimMax", 85},
|
||||
{"Frame_Frame_Split_DimMin", 55},
|
||||
{"Frame_Frame_Split_DimStd", 60},
|
||||
{"Frame_Mixed_Bottom_DimMax", 80},
|
||||
{"Frame_Mixed_Bottom_DimMin", 70},
|
||||
{"Frame_Mixed_Bottom_DimStd", 78},
|
||||
{"Frame_Mixed_Split_DimMax", 110},
|
||||
{"Frame_Mixed_Split_DimMin", 70},
|
||||
{"Frame_Mixed_Split_DimStd", 90},
|
||||
{"Frame_Mixed_Top_DimMax", 80},
|
||||
{"Frame_Mixed_Top_DimMin", 70},
|
||||
{"Frame_Mixed_Top_DimStd", 78},
|
||||
{"Frame_Rail_Bottom_DimMax", 80}
|
||||
};
|
||||
|
||||
[Inject]
|
||||
protected IConfiguration Config { get; set; } = null!;
|
||||
|
||||
[Inject]
|
||||
protected DataLayerServices DLService { get; set; } = null!;
|
||||
|
||||
[Inject]
|
||||
protected ImageCacheService ICService { get; set; } = null!;
|
||||
|
||||
protected MarkupString JsonSer
|
||||
{
|
||||
get => (MarkupString)currJwd.Replace(Environment.NewLine, "<br/>").Replace(" ", " ");
|
||||
}
|
||||
|
||||
protected string SelColorMaterial { get; set; } = "";
|
||||
protected string SelFamilyHardware { get; set; } = "";
|
||||
protected string SelGlass { get; set; } = "";
|
||||
protected string SelMaterial { get; set; } = "";
|
||||
|
||||
#endregion Protected Properties
|
||||
|
||||
#region Protected Methods
|
||||
|
||||
protected override void OnAfterRender(bool firstRender)
|
||||
{
|
||||
if (firstRender)
|
||||
{
|
||||
// JS interop or data fetches go here
|
||||
isInteractive = true;
|
||||
}
|
||||
}
|
||||
|
||||
protected override async Task OnInitializedAsync()
|
||||
{
|
||||
ConfInit();
|
||||
User = false;
|
||||
Random random = new Random();
|
||||
CalcUid = Convert.ToString(random.Next(1000, 10000));
|
||||
windowUid = CalcUid;
|
||||
//initialJwd = File.ReadAllText("Data\\AntaDoppiaInglesine.jwd");
|
||||
InitialJwd = File.ReadAllText("Data\\AntaDoppia.jwd");
|
||||
currJwd = InitialJwd;
|
||||
// rileggo altri dati
|
||||
await ReloadData();
|
||||
// costruisco lista profili
|
||||
ProfilePayload pp1 = new ProfilePayload()
|
||||
{
|
||||
ProfileName = "Profilo78",
|
||||
ThresholdList = ThresholdProfilo78,
|
||||
ParameterDict = ParamProfilo78
|
||||
};
|
||||
ProfilePayload pp2 = new ProfilePayload()
|
||||
{
|
||||
ProfileName = "ProfiloSaomad",
|
||||
ThresholdList = ThresholdProfiloSaomad,
|
||||
ParameterDict = ParamProfiloSaomad
|
||||
};
|
||||
AvailProfileList = new List<ProfilePayload> { pp1, pp2 };
|
||||
// preparo conf oggetti x controllo
|
||||
SetupList = new BaseListPayload()
|
||||
{
|
||||
ColorMaterial = AvailColorMaterialList,
|
||||
FamilyHardware = AvailFamilyHardwareList,
|
||||
Glass = AvailGlassList,
|
||||
Hardware = AvailHardwareList,
|
||||
Wood = AvailMaterialList,
|
||||
ProfileList = AvailProfileList
|
||||
};
|
||||
CurrData = new LivePayload()
|
||||
{
|
||||
CurrJwd = InitialJwd,
|
||||
SvgPreview = currSvg,
|
||||
DictShape = currGroupShape,
|
||||
DictOptionsXml = currHwOption
|
||||
};
|
||||
DLService.PipeSvg.EA_NewMessage += PipeSvg_EA_NewMessage;
|
||||
DLService.PipeShape.EA_NewMessage += PipeShape_EA_NewMessage;
|
||||
DLService.PipeHwOpt.EA_NewMessage += PipeHwOption_EA_NewMessage;
|
||||
DLService.PipeProfElement.EA_NewMessage += PipeProfElement_EA_NewMessage;
|
||||
}
|
||||
|
||||
#endregion Protected Methods
|
||||
|
||||
#region Private Fields
|
||||
|
||||
private string apiUrl = "";
|
||||
private string calcTag = "";
|
||||
private string CalcUid = "CurrWindow";
|
||||
private string windowUid = "CurrWindow";
|
||||
private string cFileHardware = "Hardware/Setup.json";
|
||||
private string currSvg = "";
|
||||
private string GenericBasePath = "";
|
||||
|
||||
//private string colorMassUpdate;
|
||||
//private string familyHWMassUpdate;
|
||||
//private string glassMassUpdate;
|
||||
//private Hardware hardwareMassUpdate;
|
||||
//private string materialMassUpdate;
|
||||
//private string profileMassUpdate;
|
||||
|
||||
/// <summary>
|
||||
/// Semaforo x definire se sia già in modalità ionterattiva o di prerendering
|
||||
/// </summary>
|
||||
private bool isInteractive = false;
|
||||
|
||||
private string outClose = "";
|
||||
private string outSave = "";
|
||||
|
||||
private string imgBasePath = "";
|
||||
|
||||
private string channelHwOpt = "";
|
||||
private string channelShape = "";
|
||||
private string channelProfList = "";
|
||||
private string channelProfElem = "";
|
||||
private string channelSvg = "";
|
||||
|
||||
|
||||
#endregion Private Fields
|
||||
|
||||
#region Private Methods
|
||||
|
||||
/// <summary>
|
||||
/// Effettua chiusura oggetto con eventuale save
|
||||
/// </summary>
|
||||
/// <param name="reqSave"></param>
|
||||
private void CloseObj(DataSave reqSave)
|
||||
{
|
||||
currJwd = reqSave.currJwd;
|
||||
outClose = !reqSave.ForceSave ? "Richiesto chiusura!" : "";
|
||||
outSave = reqSave.ForceSave ? "Richiesto salvataggio!" : "";
|
||||
}
|
||||
|
||||
private void ConfInit()
|
||||
{
|
||||
apiUrl = Config.GetValue<string>("ServerConf:Prog.ApiUrl") ?? "";
|
||||
imgBasePath = Config.GetValue<string>("ServerConf:ImageBaseUrl") ?? "";
|
||||
GenericBasePath = Config.GetValue<string>("ServerConf:GenericBaseUrl") ?? "";
|
||||
calcTag = Config.GetValue<string>("ServerConf:CalcTag") ?? "";
|
||||
channelSvg = Config.GetValue<string>("ServerConf:ChannelSvg") ?? "";
|
||||
channelShape = Config.GetValue<string>("ServerConf:ChannelShape") ?? "";
|
||||
channelHwOpt = Config.GetValue<string>("ServerConf:ChannelHwOpt") ?? "";
|
||||
channelProfElem = Config.GetValue<string>("ServerConf:ChannelProfElem") ?? "";
|
||||
channelProfList = Config.GetValue<string>("ServerConf:ChannelProfList") ?? "";
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Esecuzione azione richiesta
|
||||
/// </summary>
|
||||
/// <param name="actReq">Azione richiesta</param>
|
||||
private void DoAction(DataAction actReq)
|
||||
{
|
||||
switch (actReq)
|
||||
{
|
||||
case DataAction.None:
|
||||
break;
|
||||
|
||||
case DataAction.ResetDictShape:
|
||||
CurrData.DictShape = new Dictionary<int, string>();
|
||||
break;
|
||||
|
||||
case DataAction.ResetHwOpt:
|
||||
CurrData.DictOptionsXml = new Dictionary<int, string>();
|
||||
break;
|
||||
|
||||
case DataAction.ResetDimElem:
|
||||
CurrData.ProfElementList = new List<AreaProfiles>();
|
||||
break;
|
||||
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Esecuzione richiesta
|
||||
/// </summary>
|
||||
/// <param name="CurrArgs"></param>
|
||||
/// <returns></returns>
|
||||
private async Task ExecRequest(Dictionary<string, string> CurrArgs)
|
||||
{
|
||||
// Proseguo solo se sono in interattivo (NO prerender pagina)
|
||||
if (isInteractive)
|
||||
{
|
||||
outClose = "";
|
||||
outSave = "";
|
||||
// verifico se contiene JWD, lo aggiorno
|
||||
if (CurrArgs.ContainsKey("SerializedData"))
|
||||
{
|
||||
currJwd = CurrArgs["SerializedData"];
|
||||
CurrData.CurrJwd = currJwd;
|
||||
}
|
||||
// se il SSE variato --> invio
|
||||
if (!currJwd.Equals(prevJwd) || !EgwCoreLib.Utils.DictUtils.DictAreEqual(m_CurrArgs, CurrArgs))
|
||||
{
|
||||
m_CurrArgs = CurrArgs;
|
||||
prevJwd = currJwd;
|
||||
CalcRequestDTO calcRequestDTO = new CalcRequestDTO();
|
||||
calcRequestDTO.EnvType = EgwMultiEngineManager.Data.Constants.EXECENVIRONMENTS.WINDOW;
|
||||
calcRequestDTO.DictExec = m_CurrArgs;
|
||||
// chiamo la chiamata POST alla API, che manda la richiesta via REDIS
|
||||
await ICService.CallRestPost($"{apiUrl}/{GenericBasePath}", $"{calcTag}/{CalcUid}", calcRequestDTO);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private async void PipeHwOption_EA_NewMessage(object? sender, EventArgs e)
|
||||
{
|
||||
// aggiorno visualizzazione
|
||||
PubSubEventArgs currArgs = (PubSubEventArgs)e;
|
||||
// conversione on-the-fly SVG da mostrare
|
||||
if (!string.IsNullOrEmpty(currArgs.newMessage))
|
||||
{
|
||||
if (currArgs.msgUid.StartsWith($"{channelHwOpt}:{windowUid}") && currArgs.newMessage.Length > 2)
|
||||
{
|
||||
// deserializzo il dizionario delle risposte...
|
||||
Dictionary<int, string> rawDict = JsonConvert.DeserializeObject<Dictionary<int, string>>(currArgs.newMessage) ?? new Dictionary<int, string>();
|
||||
if (rawDict.Count > 0)
|
||||
currHwOption = rawDict;
|
||||
}
|
||||
else
|
||||
{
|
||||
currHwOption = 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($"{channelShape}:{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 PipeProfElement_EA_NewMessage(object? sender, EventArgs e)
|
||||
{
|
||||
// aggiorno visualizzazione
|
||||
PubSubEventArgs currArgs = (PubSubEventArgs)e;
|
||||
// conversione on-the-fly SVG da mostrare
|
||||
if (!string.IsNullOrEmpty(currArgs.newMessage) && currArgs.newMessage.Length > 2)
|
||||
{
|
||||
if (currArgs.msgUid.StartsWith($"{channelProfElem}:{windowUid}"))
|
||||
{
|
||||
// deserializzo il dizionario delle risposte...
|
||||
var rawDict = JsonConvert.DeserializeObject<List<AreaProfiles>>(currArgs.newMessage);
|
||||
currElement = rawDict ?? new List<AreaProfiles>();
|
||||
CurrData.ProfElementList = currElement;
|
||||
}
|
||||
await InvokeAsync(StateHasChanged);
|
||||
}
|
||||
await Task.Delay(1);
|
||||
}
|
||||
|
||||
private async void PipeSvg_EA_NewMessage(object? sender, EventArgs e)
|
||||
{
|
||||
// aggiorno visualizzazione
|
||||
PubSubEventArgs currArgs = (PubSubEventArgs)e;
|
||||
// conversione on-the-fly SVG da mostrare
|
||||
if (!string.IsNullOrEmpty(currArgs.newMessage))
|
||||
{
|
||||
if (currArgs.msgUid.Equals($"{channelSvg}:{windowUid}"))
|
||||
{
|
||||
currSvg = currArgs.newMessage;
|
||||
CurrData.SvgPreview = currArgs.newMessage;
|
||||
}
|
||||
await InvokeAsync(StateHasChanged);
|
||||
}
|
||||
await Task.Delay(1);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Rilettura dati
|
||||
/// </summary>
|
||||
/// <returns></returns>
|
||||
private Task ReloadData()
|
||||
{
|
||||
AvailHardwareList = new List<Hardware>();
|
||||
if (File.Exists(cFileHardware))
|
||||
{
|
||||
string rawValHW = File.ReadAllText(cFileHardware);
|
||||
var rawListHW = JsonConvert.DeserializeObject<List<Hardware>>(rawValHW) ?? new List<Hardware>();
|
||||
foreach (var item in rawListHW)
|
||||
{
|
||||
AvailHardwareList.Add(item);
|
||||
}
|
||||
}
|
||||
return Task.Delay(100);
|
||||
}
|
||||
|
||||
private void updateInfoJwd(string currSer, string? newFamilyHardware, Hardware? newHardware, string? newColorMaterial, string? newMaterial, string? newGlass, string? newProfile)
|
||||
{
|
||||
Dictionary<string, string> DictParam = new Dictionary<string, string>();
|
||||
if (!string.IsNullOrEmpty(newFamilyHardware))
|
||||
DictParam.Add("FamilyHardware", newFamilyHardware!);
|
||||
if (!string.IsNullOrEmpty(newColorMaterial))
|
||||
DictParam.Add("Color", newColorMaterial!);
|
||||
if (!string.IsNullOrEmpty(newMaterial))
|
||||
DictParam.Add("Material", newMaterial!);
|
||||
if (!string.IsNullOrEmpty(newGlass))
|
||||
DictParam.Add("Glass", newGlass!);
|
||||
if (!string.IsNullOrEmpty(newProfile))
|
||||
DictParam.Add("Profile", newProfile!);
|
||||
var dp = SerialMan.MassUpdate(currSer, DictParam);
|
||||
CurrData.CurrJwd = dp.serializeStruct;
|
||||
//var newJwd = SerialMan.MassUpdate(currSer, shape, newFamilyHardware, newHardware, newColorMaterial, newMaterial, newGlass, newProfile);
|
||||
//CurrData.CurrJwd = newJwd;
|
||||
}
|
||||
|
||||
private void RemoveParams(Microsoft.AspNetCore.Components.Web.MouseEventArgs args)
|
||||
{
|
||||
SetupList = new BaseListPayload();
|
||||
}
|
||||
private Task RemoveJwd()
|
||||
{
|
||||
//initialJwd = "{}";
|
||||
//currJwd = initialJwd;
|
||||
CurrData.CurrJwd = "{}";
|
||||
// rileggo altri dati
|
||||
return ReloadData();
|
||||
}
|
||||
#endregion Private Methods
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,50 @@
|
||||
@page "/uitest"
|
||||
@* @attribute [StreamRendering] *@
|
||||
@rendermode InteractiveServer
|
||||
|
||||
<PageTitle>UI test</PageTitle>
|
||||
|
||||
<div class="row">
|
||||
<div class="col-12">
|
||||
<CascadingValue Value="isLoading" Name="CurrLoading">
|
||||
<div class="row">
|
||||
<div class="col-12 ">
|
||||
<Test.UI.Components.Compo.ChildObj Name="A" CssClass="bg bg-primary" Message="BLOCK A - SVG" LoadPar="loadSvg"></Test.UI.Components.Compo.ChildObj>
|
||||
</div>
|
||||
<div class="col-6">
|
||||
<Test.UI.Components.Compo.ChildNoLoad Name="B" CssClass="bg bg-secondary" Message="BLOCK B (multi)"></Test.UI.Components.Compo.ChildNoLoad>
|
||||
</div>
|
||||
<div class="col-6">
|
||||
<Test.UI.Components.Compo.ChildObj Name="C" CssClass="bg bg-primary" Message="BLOCK C - Shape" LoadPar="loadShape"></Test.UI.Components.Compo.ChildObj>
|
||||
</div>
|
||||
</div>
|
||||
</CascadingValue>
|
||||
</div>
|
||||
<div class="col-6">
|
||||
<button class="btn btn-success btn-lg w-100" @onclick="DoReload">Reload!</button>
|
||||
</div>
|
||||
<div class="col-6">
|
||||
<div class="form-check">
|
||||
<input class="form-check-input" type="checkbox" @bind="loadPng">
|
||||
<label class="form-check-label">Reload PNG</label>
|
||||
</div>
|
||||
<div class="form-check">
|
||||
<input class="form-check-input" type="checkbox" @bind="loadSvg">
|
||||
<label class="form-check-label">Reload SVG</label>
|
||||
</div>
|
||||
<div class="form-check">
|
||||
<input class="form-check-input" type="checkbox" @bind="loadShape">
|
||||
<label class="form-check-label">Reload SHAPE</label>
|
||||
</div>
|
||||
<div class="form-check">
|
||||
<input class="form-check-input" type="checkbox" @bind="loadHwOpt">
|
||||
<label class="form-check-label">Reload HW OPT</label>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-12">
|
||||
@if (isLoading.Count > 0)
|
||||
{
|
||||
<EgwCoreLib.Razor.LoadingData DisplayMode="EgwCoreLib.Razor.LoadingData.SpinMode.BounceLine" Title="@($"...wating {delay}ms")"></EgwCoreLib.Razor.LoadingData>
|
||||
}
|
||||
</div>
|
||||
</div>
|
||||
@@ -0,0 +1,51 @@
|
||||
namespace Test.UI.Components.Pages
|
||||
{
|
||||
public partial class UiTest
|
||||
{
|
||||
#region Protected Fields
|
||||
|
||||
protected List<string> isLoading = new List<string>();
|
||||
|
||||
#endregion Protected Fields
|
||||
|
||||
#region Protected Methods
|
||||
|
||||
protected async Task DoReload()
|
||||
{
|
||||
isLoading = new List<string>();
|
||||
if (loadHwOpt)
|
||||
isLoading.Add("loadHwOpt");
|
||||
if (loadPng)
|
||||
isLoading.Add("loadPng");
|
||||
if (loadShape)
|
||||
isLoading.Add("loadShape");
|
||||
if (loadSvg)
|
||||
isLoading.Add("loadSvg");
|
||||
|
||||
while (isLoading.Count > 0)
|
||||
{
|
||||
delay = rnd.Next(600, 1000);
|
||||
await Task.Delay(delay);
|
||||
int i2rem = rnd.Next(isLoading.Count);
|
||||
isLoading.RemoveAt(i2rem);
|
||||
await InvokeAsync(StateHasChanged);
|
||||
}
|
||||
isLoading = new List<string>();
|
||||
}
|
||||
|
||||
#endregion Protected Methods
|
||||
|
||||
#region Private Fields
|
||||
|
||||
private int delay = 0;
|
||||
|
||||
private Random rnd = new Random();
|
||||
|
||||
private bool loadSvg = false;
|
||||
private bool loadPng = false;
|
||||
private bool loadShape = false;
|
||||
private bool loadHwOpt = false;
|
||||
|
||||
#endregion Private Fields
|
||||
}
|
||||
}
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"ProfilePath": "Profilo78",
|
||||
"Material": "Pino",
|
||||
"Wood": "Pino",
|
||||
"ColorMaterial": "Black",
|
||||
"Glass": "Vetro BE 2S 4T/16/4T",
|
||||
"AreaList": [
|
||||
@@ -8,82 +8,163 @@
|
||||
"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
|
||||
}
|
||||
],
|
||||
"ElementDimensionList": [
|
||||
{
|
||||
"Index": 1,
|
||||
"Value": 78.0
|
||||
},
|
||||
{
|
||||
"Index": 2,
|
||||
"Value": 78.0
|
||||
},
|
||||
{
|
||||
"Index": 3,
|
||||
"Value": 78.0
|
||||
},
|
||||
{
|
||||
"Index": 4,
|
||||
"Value": 78.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"
|
||||
}
|
||||
],
|
||||
"Threshold": "Bottom",
|
||||
"BottomRail": false,
|
||||
"BottomRailQty": 0,
|
||||
"IdGroup": 1,
|
||||
"BottomRailElemDimList": [],
|
||||
"GroupId": 1,
|
||||
"AreaList": [
|
||||
{
|
||||
"bIsSashVertical": true,
|
||||
"IsSashVertical": true,
|
||||
"IsDimensionLight": true,
|
||||
"SashList": [
|
||||
{
|
||||
"nSashId": 1,
|
||||
"OpeningType": "TURNONLY_LEFT",
|
||||
"bHasHandle": false,
|
||||
"dDimension": 50.0
|
||||
"SashId": 1,
|
||||
"OpeningType": "TILTTURN_LEFT",
|
||||
"MeasureType": "PROPORTIONAL",
|
||||
"Dimension": 1,
|
||||
"HasHandle": true,
|
||||
"ElementDimensionList": [
|
||||
{
|
||||
"Index": 1,
|
||||
"Value": 78.0
|
||||
},
|
||||
{
|
||||
"Index": 2,
|
||||
"Value": 78.0
|
||||
},
|
||||
{
|
||||
"Index": 3,
|
||||
"Value": 78.0
|
||||
},
|
||||
{
|
||||
"Index": 4,
|
||||
"Value": 78.0
|
||||
}
|
||||
],
|
||||
"JointList": [
|
||||
{
|
||||
"Index": 1,
|
||||
"JointType": "FULL_V"
|
||||
},
|
||||
{
|
||||
"Index": 2,
|
||||
"JointType": "FULL_V"
|
||||
},
|
||||
{
|
||||
"Index": 3,
|
||||
"JointType": "FULL_V"
|
||||
},
|
||||
{
|
||||
"Index": 4,
|
||||
"JointType": "FULL_V"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"nSashId": 2,
|
||||
"OpeningType": "TILTTURN_RIGHT",
|
||||
"bHasHandle": true,
|
||||
"dDimension": 50.0
|
||||
"SashId": 2,
|
||||
"OpeningType": "TURNONLY_RIGHT",
|
||||
"MeasureType": "PROPORTIONAL",
|
||||
"Dimension": 1,
|
||||
"HasHandle": false,
|
||||
"ElementDimensionList": [
|
||||
{
|
||||
"Index": 1,
|
||||
"Value": 78.0
|
||||
},
|
||||
{
|
||||
"Index": 2,
|
||||
"Value": 78.0
|
||||
},
|
||||
{
|
||||
"Index": 3,
|
||||
"Value": 78.0
|
||||
},
|
||||
{
|
||||
"Index": 4,
|
||||
"Value": 78.0
|
||||
}
|
||||
],
|
||||
"JointList": [
|
||||
{
|
||||
"Index": 1,
|
||||
"JointType": "FULL_V"
|
||||
},
|
||||
{
|
||||
"Index": 2,
|
||||
"JointType": "FULL_V"
|
||||
},
|
||||
{
|
||||
"Index": 3,
|
||||
"JointType": "FULL_V"
|
||||
},
|
||||
{
|
||||
"Index": 4,
|
||||
"JointType": "FULL_V"
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"SashType": "NULL",
|
||||
"JointList": [
|
||||
{
|
||||
"nIndex": 1,
|
||||
"JointType": "FULL_V"
|
||||
},
|
||||
{
|
||||
"nIndex": 2,
|
||||
"JointType": "FULL_V"
|
||||
},
|
||||
{
|
||||
"nIndex": 3,
|
||||
"JointType": "FULL_V"
|
||||
},
|
||||
{
|
||||
"nIndex": 4,
|
||||
"JointType": "FULL_V"
|
||||
}
|
||||
],
|
||||
"Hardware": "000559",
|
||||
"IdGroup": 2,
|
||||
"BottomRail": false,
|
||||
"BottomRailQty": 0,
|
||||
"BottomRailElemDimList": [],
|
||||
"Hardware": "000631",
|
||||
"HwOptionList": [],
|
||||
"GroupId": 2,
|
||||
"AreaList": [
|
||||
{
|
||||
"IdGroup": 3,
|
||||
"GroupId": 3,
|
||||
"AreaList": [
|
||||
{
|
||||
"IdGroup": 4,
|
||||
"FillType": "GLASS",
|
||||
"GroupId": 4,
|
||||
"AreaList": [],
|
||||
"AreaType": "FILL"
|
||||
}
|
||||
@@ -91,11 +172,11 @@
|
||||
"AreaType": "SPLITTED"
|
||||
},
|
||||
{
|
||||
"IdGroup": 5,
|
||||
"GroupId": 5,
|
||||
"AreaList": [
|
||||
{
|
||||
"FillType": "GLASS",
|
||||
"IdGroup": 6,
|
||||
"GroupId": 6,
|
||||
"AreaList": [],
|
||||
"AreaType": "FILL"
|
||||
}
|
||||
|
||||
@@ -0,0 +1,367 @@
|
||||
{
|
||||
"ProfilePath": "Profilo78",
|
||||
"Wood": "Pino",
|
||||
"ColorMaterial": "Black",
|
||||
"Glass": "Vetro BE 2S 4T/16/4T",
|
||||
"AreaList": [
|
||||
{
|
||||
"Shape": "RECTANGLE",
|
||||
"DimensionList": [
|
||||
{
|
||||
"Index": 1,
|
||||
"Name": "Width",
|
||||
"Value": 1400.0
|
||||
},
|
||||
{
|
||||
"Index": 2,
|
||||
"Name": "Height",
|
||||
"Value": 2000.0
|
||||
}
|
||||
],
|
||||
"ElementDimensionList": [
|
||||
{
|
||||
"Index": 1,
|
||||
"Value": 0.0
|
||||
},
|
||||
{
|
||||
"Index": 2,
|
||||
"Value": 78.0
|
||||
},
|
||||
{
|
||||
"Index": 3,
|
||||
"Value": 78.0
|
||||
},
|
||||
{
|
||||
"Index": 4,
|
||||
"Value": 78.0
|
||||
}
|
||||
],
|
||||
"JointList": [
|
||||
{
|
||||
"Index": 1,
|
||||
"JointType": "FULL_H"
|
||||
},
|
||||
{
|
||||
"Index": 2,
|
||||
"JointType": "FULL_H"
|
||||
},
|
||||
{
|
||||
"Index": 3,
|
||||
"JointType": "FULL_H"
|
||||
},
|
||||
{
|
||||
"Index": 4,
|
||||
"JointType": "FULL_H"
|
||||
}
|
||||
],
|
||||
"Threshold": "Threshold",
|
||||
"BottomRail": false,
|
||||
"BottomRailQty": 0,
|
||||
"BottomRailElemDimList": [],
|
||||
"GroupId": 1,
|
||||
"AreaList": [
|
||||
{
|
||||
"IsSashVertical": true,
|
||||
"IsDimensionLight": true,
|
||||
"SashList": [
|
||||
{
|
||||
"SashId": 1,
|
||||
"OpeningType": "TILTTURN_LEFT",
|
||||
"MeasureType": "PROPORTIONAL",
|
||||
"Dimension": 1.0,
|
||||
"HasHandle": true,
|
||||
"ElementDimensionList": [
|
||||
{
|
||||
"Index": 1,
|
||||
"Value": 78.0
|
||||
},
|
||||
{
|
||||
"Index": 2,
|
||||
"Value": 78.0
|
||||
},
|
||||
{
|
||||
"Index": 3,
|
||||
"Value": 78.0
|
||||
},
|
||||
{
|
||||
"Index": 4,
|
||||
"Value": 78.0
|
||||
}
|
||||
],
|
||||
"JointList": [
|
||||
{
|
||||
"Index": 1,
|
||||
"JointType": "FULL_V"
|
||||
},
|
||||
{
|
||||
"Index": 2,
|
||||
"JointType": "FULL_V"
|
||||
},
|
||||
{
|
||||
"Index": 3,
|
||||
"JointType": "FULL_V"
|
||||
},
|
||||
{
|
||||
"Index": 4,
|
||||
"JointType": "FULL_V"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"SashId": 2,
|
||||
"OpeningType": "TURNONLY_RIGHT",
|
||||
"MeasureType": "PROPORTIONAL",
|
||||
"Dimension": 1.0,
|
||||
"HasHandle": false,
|
||||
"ElementDimensionList": [
|
||||
{
|
||||
"Index": 1,
|
||||
"Value": 78.0
|
||||
},
|
||||
{
|
||||
"Index": 2,
|
||||
"Value": 78.0
|
||||
},
|
||||
{
|
||||
"Index": 3,
|
||||
"Value": 78.0
|
||||
},
|
||||
{
|
||||
"Index": 4,
|
||||
"Value": 78.0
|
||||
}
|
||||
],
|
||||
"JointList": [
|
||||
{
|
||||
"Index": 1,
|
||||
"JointType": "FULL_V"
|
||||
},
|
||||
{
|
||||
"Index": 2,
|
||||
"JointType": "FULL_V"
|
||||
},
|
||||
{
|
||||
"Index": 3,
|
||||
"JointType": "FULL_V"
|
||||
},
|
||||
{
|
||||
"Index": 4,
|
||||
"JointType": "FULL_V"
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"SashType": "NULL",
|
||||
"BottomRail": false,
|
||||
"BottomRailQty": 0,
|
||||
"BottomRailElemDimList": [],
|
||||
"Hardware": "000631",
|
||||
"HwOptionList": [],
|
||||
"GroupId": 2,
|
||||
"AreaList": [
|
||||
{
|
||||
"GroupId": 3,
|
||||
"AreaList": [
|
||||
{
|
||||
"FillType": "GLASS",
|
||||
"GroupId": 4,
|
||||
"AreaList": [
|
||||
{
|
||||
"Side": "BOTH",
|
||||
"SplitShape": "GRID",
|
||||
"SplitStartVert": true,
|
||||
"SplitVertList": [
|
||||
{
|
||||
"IsRelative": true,
|
||||
"Dimension": 1.0,
|
||||
"MeasureType": "PROPORTIONAL"
|
||||
},
|
||||
{
|
||||
"IsRelative": true,
|
||||
"Dimension": 1.0,
|
||||
"MeasureType": "PROPORTIONAL"
|
||||
},
|
||||
{
|
||||
"IsRelative": true,
|
||||
"Dimension": 1.0,
|
||||
"MeasureType": "PROPORTIONAL"
|
||||
}
|
||||
],
|
||||
"SplitHorizList": [
|
||||
{
|
||||
"IsRelative": true,
|
||||
"Dimension": 1.0,
|
||||
"MeasureType": "PROPORTIONAL"
|
||||
},
|
||||
{
|
||||
"IsRelative": true,
|
||||
"Dimension": 1.0,
|
||||
"MeasureType": "PROPORTIONAL"
|
||||
},
|
||||
{
|
||||
"IsRelative": true,
|
||||
"Dimension": 1.0,
|
||||
"MeasureType": "PROPORTIONAL"
|
||||
},
|
||||
{
|
||||
"IsRelative": true,
|
||||
"Dimension": 1.0,
|
||||
"MeasureType": "PROPORTIONAL"
|
||||
},
|
||||
{
|
||||
"IsRelative": true,
|
||||
"Dimension": 1.0,
|
||||
"MeasureType": "PROPORTIONAL"
|
||||
}
|
||||
],
|
||||
"ElementDimVertList": [
|
||||
{
|
||||
"Index": 1,
|
||||
"Value": 35.0,
|
||||
"Area": 0
|
||||
},
|
||||
{
|
||||
"Index": 2,
|
||||
"Value": 35.0,
|
||||
"Area": 0
|
||||
}
|
||||
],
|
||||
"ElementDimHorizList": [
|
||||
{
|
||||
"Index": 1,
|
||||
"Value": 35.0,
|
||||
"Area": 1
|
||||
},
|
||||
{
|
||||
"Index": 2,
|
||||
"Value": 35.0,
|
||||
"Area": 1
|
||||
},
|
||||
{
|
||||
"Index": 3,
|
||||
"Value": 35.0,
|
||||
"Area": 1
|
||||
},
|
||||
{
|
||||
"Index": 4,
|
||||
"Value": 35.0,
|
||||
"Area": 1
|
||||
}
|
||||
],
|
||||
"GroupId": 7,
|
||||
"AreaList": [],
|
||||
"AreaType": "INGLESINA"
|
||||
}
|
||||
],
|
||||
"AreaType": "FILL"
|
||||
}
|
||||
],
|
||||
"AreaType": "SPLITTED"
|
||||
},
|
||||
{
|
||||
"GroupId": 5,
|
||||
"AreaList": [
|
||||
{
|
||||
"FillType": "GLASS",
|
||||
"GroupId": 8,
|
||||
"AreaList": [
|
||||
{
|
||||
"Side": "EXTERNAL",
|
||||
"SplitShape": "GRID",
|
||||
"SplitStartVert": true,
|
||||
"SplitVertList": [
|
||||
{
|
||||
"IsRelative": true,
|
||||
"Dimension": 1.0,
|
||||
"MeasureType": "PROPORTIONAL"
|
||||
},
|
||||
{
|
||||
"IsRelative": true,
|
||||
"Dimension": 1.0,
|
||||
"MeasureType": "PROPORTIONAL"
|
||||
},
|
||||
{
|
||||
"IsRelative": true,
|
||||
"Dimension": 1.0,
|
||||
"MeasureType": "PROPORTIONAL"
|
||||
}
|
||||
],
|
||||
"SplitHorizList": [
|
||||
{
|
||||
"IsRelative": true,
|
||||
"Dimension": 1.0,
|
||||
"MeasureType": "PROPORTIONAL"
|
||||
},
|
||||
{
|
||||
"IsRelative": true,
|
||||
"Dimension": 1.0,
|
||||
"MeasureType": "PROPORTIONAL"
|
||||
},
|
||||
{
|
||||
"IsRelative": true,
|
||||
"Dimension": 1.0,
|
||||
"MeasureType": "PROPORTIONAL"
|
||||
},
|
||||
{
|
||||
"IsRelative": true,
|
||||
"Dimension": 1.0,
|
||||
"MeasureType": "PROPORTIONAL"
|
||||
},
|
||||
{
|
||||
"IsRelative": true,
|
||||
"Dimension": 1.0,
|
||||
"MeasureType": "PROPORTIONAL"
|
||||
}
|
||||
],
|
||||
"ElementDimVertList": [
|
||||
{
|
||||
"Index": 1,
|
||||
"Value": 35.0,
|
||||
"Area": 0
|
||||
},
|
||||
{
|
||||
"Index": 2,
|
||||
"Value": 35.0,
|
||||
"Area": 0
|
||||
}
|
||||
],
|
||||
"ElementDimHorizList": [
|
||||
{
|
||||
"Index": 1,
|
||||
"Value": 35.0,
|
||||
"Area": 1
|
||||
},
|
||||
{
|
||||
"Index": 2,
|
||||
"Value": 35.0,
|
||||
"Area": 1
|
||||
},
|
||||
{
|
||||
"Index": 3,
|
||||
"Value": 35.0,
|
||||
"Area": 1
|
||||
},
|
||||
{
|
||||
"Index": 4,
|
||||
"Value": 35.0,
|
||||
"Area": 1
|
||||
}
|
||||
],
|
||||
"GroupId": 9,
|
||||
"AreaList": [],
|
||||
"AreaType": "INGLESINA"
|
||||
}
|
||||
],
|
||||
"AreaType": "FILL"
|
||||
}
|
||||
],
|
||||
"AreaType": "SPLITTED"
|
||||
}
|
||||
],
|
||||
"AreaType": "SASH"
|
||||
}
|
||||
],
|
||||
"AreaType": "FRAME"
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"ProfilePath": "Profilo78",
|
||||
"Material": "Pino",
|
||||
"Wood": "Pino",
|
||||
"ColorMaterial": "Black",
|
||||
"Glass": "Vetro BE 2S 4T/16/4T",
|
||||
"AreaList": [
|
||||
@@ -8,73 +8,142 @@
|
||||
"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
|
||||
}
|
||||
],
|
||||
"ElementDimensionList": [
|
||||
{
|
||||
"Index": 1,
|
||||
"Value": 78.0
|
||||
},
|
||||
{
|
||||
"Index": 2,
|
||||
"Value": 78.0
|
||||
},
|
||||
{
|
||||
"Index": 3,
|
||||
"Value": 78.0
|
||||
},
|
||||
{
|
||||
"Index": 4,
|
||||
"Value": 78.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"
|
||||
}
|
||||
],
|
||||
"Threshold": "Bottom",
|
||||
"BottomRail": false,
|
||||
"BottomRailQty": 0,
|
||||
"IdGroup": 1,
|
||||
"BottomRailElemDimList": [],
|
||||
"GroupId": 1,
|
||||
"AreaList": [
|
||||
{
|
||||
"bIsSashVertical": true,
|
||||
"IsSashVertical": true,
|
||||
"IsDimensionLight": true,
|
||||
"SashList": [
|
||||
{
|
||||
"nSashId": 1,
|
||||
"SashId": 1,
|
||||
"OpeningType": "TILTTURN_LEFT",
|
||||
"bHasHandle": true,
|
||||
"dDimension": 100.0
|
||||
"MeasureType": "PROPORTIONAL",
|
||||
"Dimension": 1.0,
|
||||
"HasHandle": true,
|
||||
"ElementDimensionList": [
|
||||
{
|
||||
"Index": 1,
|
||||
"Value": 78.0
|
||||
},
|
||||
{
|
||||
"Index": 2,
|
||||
"Value": 78.0
|
||||
},
|
||||
{
|
||||
"Index": 3,
|
||||
"Value": 78.0
|
||||
},
|
||||
{
|
||||
"Index": 4,
|
||||
"Value": 78.0
|
||||
}
|
||||
],
|
||||
"JointList": [
|
||||
{
|
||||
"Index": 1,
|
||||
"JointType": "FULL_V"
|
||||
},
|
||||
{
|
||||
"Index": 2,
|
||||
"JointType": "FULL_V"
|
||||
},
|
||||
{
|
||||
"Index": 3,
|
||||
"JointType": "FULL_V"
|
||||
},
|
||||
{
|
||||
"Index": 4,
|
||||
"JointType": "FULL_V"
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"SashType": "NULL",
|
||||
"JointList": [
|
||||
"BottomRail": false,
|
||||
"BottomRailQty": 0,
|
||||
"BottomRailElemDimList": [],
|
||||
"Hardware": "000623",
|
||||
"HwOptionList": [
|
||||
{
|
||||
"nIndex": 1,
|
||||
"JointType": "FULL_H"
|
||||
"Name": "Entrata",
|
||||
"Value": "15"
|
||||
},
|
||||
{
|
||||
"nIndex": 2,
|
||||
"JointType": "FULL_H"
|
||||
"Name": "LavManigliaPassante",
|
||||
"Value": "false"
|
||||
},
|
||||
{
|
||||
"nIndex": 3,
|
||||
"JointType": "FULL_H"
|
||||
"Name": "PosizioneForoCilindro",
|
||||
"Value": "sopra"
|
||||
},
|
||||
{
|
||||
"nIndex": 4,
|
||||
"JointType": "FULL_H"
|
||||
"Name": "ModelloCilindro",
|
||||
"Value": "c999"
|
||||
},
|
||||
{
|
||||
"Name": "LavCilindroPassante",
|
||||
"Value": "false"
|
||||
},
|
||||
{
|
||||
"Name": "HMan",
|
||||
"Value": "500"
|
||||
}
|
||||
],
|
||||
"Hardware": "000558",
|
||||
"IdGroup": 2,
|
||||
"GroupId": 2,
|
||||
"AreaList": [
|
||||
{
|
||||
"FillType": "GLASS",
|
||||
"IdGroup": 3,
|
||||
"GroupId": 4,
|
||||
"AreaList": [],
|
||||
"AreaType": "FILL"
|
||||
}
|
||||
|
||||
@@ -0,0 +1,198 @@
|
||||
{
|
||||
"ProfilePath": "Profilo78",
|
||||
"Wood": "Pino",
|
||||
"ColorMaterial": "Black",
|
||||
"Glass": "Vetro BE 2S 4T/16/4T",
|
||||
"AreaList": [
|
||||
{
|
||||
"Shape": "ARC",
|
||||
"DimensionList": [
|
||||
{
|
||||
"Index": 1,
|
||||
"Name": "Width",
|
||||
"Value": 800.0
|
||||
},
|
||||
{
|
||||
"Index": 2,
|
||||
"Name": "Height",
|
||||
"Value": 1480.0
|
||||
},
|
||||
{
|
||||
"Index": 3,
|
||||
"Name": "Full Height",
|
||||
"Value": 1800.0
|
||||
}
|
||||
],
|
||||
"ElementDimensionList": [
|
||||
{
|
||||
"Index": 1,
|
||||
"Value": 78.0
|
||||
},
|
||||
{
|
||||
"Index": 2,
|
||||
"Value": 78.0
|
||||
},
|
||||
{
|
||||
"Index": 3,
|
||||
"Value": 78.0
|
||||
},
|
||||
{
|
||||
"Index": 4,
|
||||
"Value": 78.0
|
||||
}
|
||||
],
|
||||
"JointList": [
|
||||
{
|
||||
"Index": 1,
|
||||
"JointType": "FULL_H"
|
||||
},
|
||||
{
|
||||
"Index": 2,
|
||||
"JointType": "FULL_H"
|
||||
},
|
||||
{
|
||||
"Index": 3,
|
||||
"JointType": "ANGLED"
|
||||
},
|
||||
{
|
||||
"Index": 4,
|
||||
"JointType": "ANGLED"
|
||||
}
|
||||
],
|
||||
"Threshold": "Bottom",
|
||||
"BottomRail": false,
|
||||
"BottomRailQty": 0,
|
||||
"BottomRailElemDimList": [],
|
||||
"GroupId": 1,
|
||||
"AreaList": [
|
||||
{
|
||||
"IsSashVertical": true,
|
||||
"IsDimensionLight": true,
|
||||
"SashList": [
|
||||
{
|
||||
"SashId": 1,
|
||||
"OpeningType": "TILTTURN_LEFT",
|
||||
"MeasureType": "PROPORTIONAL",
|
||||
"Dimension": 1.0,
|
||||
"HasHandle": true,
|
||||
"ElementDimensionList": [
|
||||
{
|
||||
"Index": 1,
|
||||
"Value": 78.0
|
||||
},
|
||||
{
|
||||
"Index": 2,
|
||||
"Value": 78.0
|
||||
},
|
||||
{
|
||||
"Index": 3,
|
||||
"Value": 78.0
|
||||
},
|
||||
{
|
||||
"Index": 4,
|
||||
"Value": 78.0
|
||||
}
|
||||
],
|
||||
"JointList": [
|
||||
{
|
||||
"Index": 1,
|
||||
"JointType": "FULL_V"
|
||||
},
|
||||
{
|
||||
"Index": 2,
|
||||
"JointType": "FULL_V"
|
||||
},
|
||||
{
|
||||
"Index": 3,
|
||||
"JointType": "FULL_V"
|
||||
},
|
||||
{
|
||||
"Index": 4,
|
||||
"JointType": "ANGLED"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"SashId": 2,
|
||||
"OpeningType": "TURNONLY_RIGHT",
|
||||
"MeasureType": "PROPORTIONAL",
|
||||
"Dimension": 1.0,
|
||||
"HasHandle": false,
|
||||
"ElementDimensionList": [
|
||||
{
|
||||
"Index": 1,
|
||||
"Value": 78.0
|
||||
},
|
||||
{
|
||||
"Index": 2,
|
||||
"Value": 78.0
|
||||
},
|
||||
{
|
||||
"Index": 3,
|
||||
"Value": 78.0
|
||||
},
|
||||
{
|
||||
"Index": 4,
|
||||
"Value": 78.0
|
||||
}
|
||||
],
|
||||
"JointList": [
|
||||
{
|
||||
"Index": 1,
|
||||
"JointType": "FULL_V"
|
||||
},
|
||||
{
|
||||
"Index": 2,
|
||||
"JointType": "FULL_V"
|
||||
},
|
||||
{
|
||||
"Index": 3,
|
||||
"JointType": "ANGLED"
|
||||
},
|
||||
{
|
||||
"Index": 4,
|
||||
"JointType": "FULL_V"
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"SashType": "NULL",
|
||||
"BottomRail": false,
|
||||
"BottomRailQty": 0,
|
||||
"BottomRailElemDimList": [],
|
||||
"Hardware": "000644",
|
||||
"HwOptionList": [],
|
||||
"GroupId": 2,
|
||||
"AreaList": [
|
||||
{
|
||||
"GroupId": 3,
|
||||
"AreaList": [
|
||||
{
|
||||
"FillType": "GLASS",
|
||||
"GroupId": 4,
|
||||
"AreaList": [],
|
||||
"AreaType": "FILL"
|
||||
}
|
||||
],
|
||||
"AreaType": "SPLITTED"
|
||||
},
|
||||
{
|
||||
"GroupId": 5,
|
||||
"AreaList": [
|
||||
{
|
||||
"FillType": "GLASS",
|
||||
"GroupId": 6,
|
||||
"AreaList": [],
|
||||
"AreaType": "FILL"
|
||||
}
|
||||
],
|
||||
"AreaType": "SPLITTED"
|
||||
}
|
||||
],
|
||||
"AreaType": "SASH"
|
||||
}
|
||||
],
|
||||
"AreaType": "FRAME"
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"ProfilePath": "Profilo78",
|
||||
"Material": "Pino",
|
||||
"Wood": "Pino",
|
||||
"ColorMaterial": "Black",
|
||||
"Glass": "Vetro BE 2S 4T/16/4T",
|
||||
"AreaList": [
|
||||
@@ -8,37 +8,57 @@
|
||||
"Shape": "RECTANGLE",
|
||||
"DimensionList": [
|
||||
{
|
||||
"nIndex": 1,
|
||||
"sName": "Width",
|
||||
"dValue": 1500.0
|
||||
"Index": 1,
|
||||
"Name": "Width",
|
||||
"Value": 800.0
|
||||
},
|
||||
{
|
||||
"nIndex": 2,
|
||||
"sName": "Height",
|
||||
"dValue": 2100.0
|
||||
"Index": 2,
|
||||
"Name": "Height",
|
||||
"Value": 1200.0
|
||||
}
|
||||
],
|
||||
"ElementDimensionList": [
|
||||
{
|
||||
"Index": 1,
|
||||
"Value": 78.0
|
||||
},
|
||||
{
|
||||
"Index": 2,
|
||||
"Value": 78.0
|
||||
},
|
||||
{
|
||||
"Index": 3,
|
||||
"Value": 78.0
|
||||
},
|
||||
{
|
||||
"Index": 4,
|
||||
"Value": 78.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"
|
||||
}
|
||||
],
|
||||
"Threshold": "Bottom",
|
||||
"BottomRail": false,
|
||||
"BottomRailQty": 0,
|
||||
"IdGroup": 1,
|
||||
"BottomRailElemDimList": [],
|
||||
"GroupId": 1,
|
||||
"AreaList": [
|
||||
{
|
||||
"SplitShape": "HORIZONTAL",
|
||||
@@ -46,22 +66,32 @@
|
||||
"SplitVertList": [],
|
||||
"SplitHorizList": [
|
||||
{
|
||||
"bIsRelative": true,
|
||||
"dDimension": 40.0
|
||||
"IsRelative": true,
|
||||
"Dimension": 50.0,
|
||||
"MeasureType": "PERCENTAGE"
|
||||
},
|
||||
{
|
||||
"bIsRelative": true,
|
||||
"dDimension": 60.0
|
||||
"IsRelative": true,
|
||||
"Dimension": 50.0,
|
||||
"MeasureType": "PERCENTAGE"
|
||||
}
|
||||
],
|
||||
"IdGroup": 2,
|
||||
"ElementDimVertList": [],
|
||||
"ElementDimHorizList": [
|
||||
{
|
||||
"Index": 1,
|
||||
"Value": 78.0,
|
||||
"Area": 0
|
||||
}
|
||||
],
|
||||
"GroupId": 7,
|
||||
"AreaList": [
|
||||
{
|
||||
"IdGroup": 3,
|
||||
"GroupId": 9,
|
||||
"AreaList": [
|
||||
{
|
||||
"FillType": "GLASS",
|
||||
"IdGroup": 4,
|
||||
"GroupId": 10,
|
||||
"AreaList": [],
|
||||
"AreaType": "FILL"
|
||||
}
|
||||
@@ -69,52 +99,142 @@
|
||||
"AreaType": "SPLITTED"
|
||||
},
|
||||
{
|
||||
"IdGroup": 5,
|
||||
"GroupId": 8,
|
||||
"AreaList": [
|
||||
{
|
||||
"bIsSashVertical": true,
|
||||
"IsSashVertical": true,
|
||||
"IsDimensionLight": true,
|
||||
"SashList": [
|
||||
{
|
||||
"nSashId": 1,
|
||||
"OpeningType": "TURNONLY_LEFT",
|
||||
"bHasHandle": false,
|
||||
"dDimension": 50.0
|
||||
"SashId": 1,
|
||||
"OpeningType": "TILTTURN_LEFT",
|
||||
"MeasureType": "PROPORTIONAL",
|
||||
"Dimension": 1.0,
|
||||
"HasHandle": true,
|
||||
"ElementDimensionList": [
|
||||
{
|
||||
"Index": 1,
|
||||
"Value": 78.0
|
||||
},
|
||||
{
|
||||
"Index": 2,
|
||||
"Value": 78.0
|
||||
},
|
||||
{
|
||||
"Index": 3,
|
||||
"Value": 78.0
|
||||
},
|
||||
{
|
||||
"Index": 4,
|
||||
"Value": 78.0
|
||||
}
|
||||
],
|
||||
"JointList": [
|
||||
{
|
||||
"Index": 1,
|
||||
"JointType": "FULL_V"
|
||||
},
|
||||
{
|
||||
"Index": 2,
|
||||
"JointType": "FULL_V"
|
||||
},
|
||||
{
|
||||
"Index": 3,
|
||||
"JointType": "FULL_V"
|
||||
},
|
||||
{
|
||||
"Index": 4,
|
||||
"JointType": "FULL_V"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"nSashId": 2,
|
||||
"OpeningType": "TILTTURN_RIGHT",
|
||||
"bHasHandle": true,
|
||||
"dDimension": 50.0
|
||||
"SashId": 2,
|
||||
"OpeningType": "TURNONLY_RIGHT",
|
||||
"MeasureType": "PROPORTIONAL",
|
||||
"Dimension": 1.0,
|
||||
"HasHandle": false,
|
||||
"ElementDimensionList": [
|
||||
{
|
||||
"Index": 1,
|
||||
"Value": 78.0
|
||||
},
|
||||
{
|
||||
"Index": 2,
|
||||
"Value": 78.0
|
||||
},
|
||||
{
|
||||
"Index": 3,
|
||||
"Value": 78.0
|
||||
},
|
||||
{
|
||||
"Index": 4,
|
||||
"Value": 78.0
|
||||
}
|
||||
],
|
||||
"JointList": [
|
||||
{
|
||||
"Index": 1,
|
||||
"JointType": "FULL_V"
|
||||
},
|
||||
{
|
||||
"Index": 2,
|
||||
"JointType": "FULL_V"
|
||||
},
|
||||
{
|
||||
"Index": 3,
|
||||
"JointType": "FULL_V"
|
||||
},
|
||||
{
|
||||
"Index": 4,
|
||||
"JointType": "FULL_V"
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"SashType": "NULL",
|
||||
"JointList": [
|
||||
"BottomRail": false,
|
||||
"BottomRailQty": 0,
|
||||
"BottomRailElemDimList": [],
|
||||
"Hardware": "000631",
|
||||
"HwOptionList": [
|
||||
{
|
||||
"nIndex": 1,
|
||||
"JointType": "FULL_H"
|
||||
"Name": "Entrata",
|
||||
"Value": "15"
|
||||
},
|
||||
{
|
||||
"nIndex": 2,
|
||||
"JointType": "FULL_H"
|
||||
"Name": "LavManigliaPassante",
|
||||
"Value": "false"
|
||||
},
|
||||
{
|
||||
"nIndex": 3,
|
||||
"JointType": "FULL_H"
|
||||
"Name": "PosizioneForoCilindro",
|
||||
"Value": "sopra"
|
||||
},
|
||||
{
|
||||
"nIndex": 4,
|
||||
"JointType": "FULL_H"
|
||||
"Name": "Deviatore",
|
||||
"Value": "false"
|
||||
},
|
||||
{
|
||||
"Name": "ModelloCilindro",
|
||||
"Value": "c999"
|
||||
},
|
||||
{
|
||||
"Name": "LavCilindroPassante",
|
||||
"Value": "false"
|
||||
},
|
||||
{
|
||||
"Name": "HMan",
|
||||
"Value": "170"
|
||||
}
|
||||
],
|
||||
"Hardware": "000559",
|
||||
"IdGroup": 6,
|
||||
"GroupId": 2,
|
||||
"AreaList": [
|
||||
{
|
||||
"IdGroup": 7,
|
||||
"GroupId": 3,
|
||||
"AreaList": [
|
||||
{
|
||||
"FillType": "GLASS",
|
||||
"IdGroup": 8,
|
||||
"GroupId": 4,
|
||||
"AreaList": [],
|
||||
"AreaType": "FILL"
|
||||
}
|
||||
@@ -122,11 +242,11 @@
|
||||
"AreaType": "SPLITTED"
|
||||
},
|
||||
{
|
||||
"IdGroup": 9,
|
||||
"GroupId": 5,
|
||||
"AreaList": [
|
||||
{
|
||||
"FillType": "GLASS",
|
||||
"IdGroup": 10,
|
||||
"GroupId": 6,
|
||||
"AreaList": [],
|
||||
"AreaType": "FILL"
|
||||
}
|
||||
|
||||
@@ -1,106 +1,178 @@
|
||||
{
|
||||
"ProfilePath": "Profilo78",
|
||||
"Material": "Pino",
|
||||
"Wood": "Pino",
|
||||
"ColorMaterial": "Black",
|
||||
"Glass": "Vetro BE 2S 4T/16/4T",
|
||||
"AreaList": [
|
||||
{
|
||||
"Shape": "DOUBLECHAMFER",
|
||||
"Shape": "RECTANGLE",
|
||||
"DimensionList": [
|
||||
{
|
||||
"nIndex": 1,
|
||||
"sName": "Width",
|
||||
"dValue": 1500.0
|
||||
"Index": 1,
|
||||
"Name": "Width",
|
||||
"Value": 800.0
|
||||
},
|
||||
{
|
||||
"nIndex": 2,
|
||||
"sName": "Height",
|
||||
"dValue": 1500.0
|
||||
"Index": 2,
|
||||
"Name": "Height",
|
||||
"Value": 1200.0
|
||||
}
|
||||
],
|
||||
"ElementDimensionList": [
|
||||
{
|
||||
"Index": 1,
|
||||
"Value": 78.0
|
||||
},
|
||||
{
|
||||
"nIndex": 3,
|
||||
"sName": "Full Height",
|
||||
"dValue": 1800.0
|
||||
"Index": 2,
|
||||
"Value": 78.0
|
||||
},
|
||||
{
|
||||
"Index": 3,
|
||||
"Value": 78.0
|
||||
},
|
||||
{
|
||||
"Index": 4,
|
||||
"Value": 78.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"
|
||||
}
|
||||
],
|
||||
"Threshold": "Bottom",
|
||||
"BottomRail": false,
|
||||
"BottomRailQty": 0,
|
||||
"IdGroup": 1,
|
||||
"BottomRailElemDimList": [],
|
||||
"GroupId": 1,
|
||||
"AreaList": [
|
||||
{
|
||||
"SplitShape": "VERTICAL",
|
||||
"SplitStartVert": true,
|
||||
"SplitVertList": [
|
||||
{
|
||||
"bIsRelative": true,
|
||||
"dDimension": 50.0
|
||||
"IsRelative": true,
|
||||
"Dimension": 50.0,
|
||||
"MeasureType": "PERCENTAGE"
|
||||
},
|
||||
{
|
||||
"bIsRelative": true,
|
||||
"dDimension": 50.0
|
||||
"IsRelative": true,
|
||||
"Dimension": 50.0,
|
||||
"MeasureType": "PERCENTAGE"
|
||||
}
|
||||
],
|
||||
"SplitHorizList": [],
|
||||
"IdGroup": 2,
|
||||
"ElementDimVertList": [
|
||||
{
|
||||
"Index": 1,
|
||||
"Value": 85.0,
|
||||
"Area": 0
|
||||
}
|
||||
],
|
||||
"ElementDimHorizList": [],
|
||||
"GroupId": 5,
|
||||
"AreaList": [
|
||||
{
|
||||
"IdGroup": 3,
|
||||
"GroupId": 6,
|
||||
"AreaList": [
|
||||
{
|
||||
"bIsSashVertical": true,
|
||||
"IsSashVertical": true,
|
||||
"IsDimensionLight": true,
|
||||
"SashList": [
|
||||
{
|
||||
"nSashId": 1,
|
||||
"SashId": 1,
|
||||
"OpeningType": "TILTTURN_LEFT",
|
||||
"bHasHandle": true,
|
||||
"dDimension": 100.0
|
||||
"MeasureType": "PROPORTIONAL",
|
||||
"Dimension": 1.0,
|
||||
"HasHandle": true,
|
||||
"ElementDimensionList": [
|
||||
{
|
||||
"Index": 1,
|
||||
"Value": 78.0
|
||||
},
|
||||
{
|
||||
"Index": 2,
|
||||
"Value": 78.0
|
||||
},
|
||||
{
|
||||
"Index": 3,
|
||||
"Value": 78.0
|
||||
},
|
||||
{
|
||||
"Index": 4,
|
||||
"Value": 78.0
|
||||
}
|
||||
],
|
||||
"JointList": [
|
||||
{
|
||||
"Index": 1,
|
||||
"JointType": "FULL_V"
|
||||
},
|
||||
{
|
||||
"Index": 2,
|
||||
"JointType": "FULL_V"
|
||||
},
|
||||
{
|
||||
"Index": 3,
|
||||
"JointType": "FULL_V"
|
||||
},
|
||||
{
|
||||
"Index": 4,
|
||||
"JointType": "FULL_V"
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"SashType": "NULL",
|
||||
"JointList": [
|
||||
{
|
||||
"nIndex": 1,
|
||||
"JointType": "FULL_H"
|
||||
},
|
||||
{
|
||||
"nIndex": 2,
|
||||
"JointType": "FULL_H"
|
||||
},
|
||||
{
|
||||
"nIndex": 3,
|
||||
"JointType": "FULL_H"
|
||||
},
|
||||
{
|
||||
"nIndex": 4,
|
||||
"JointType": "FULL_H"
|
||||
}
|
||||
],
|
||||
"BottomRail": false,
|
||||
"BottomRailQty": 0,
|
||||
"Hardware": "000558",
|
||||
"IdGroup": 4,
|
||||
"BottomRailElemDimList": [],
|
||||
"Hardware": "000635",
|
||||
"HwOptionList": [
|
||||
{
|
||||
"Name": "Entrata",
|
||||
"Value": "15"
|
||||
},
|
||||
{
|
||||
"Name": "LavManigliaPassante",
|
||||
"Value": "false"
|
||||
},
|
||||
{
|
||||
"Name": "PosizioneForoCilindro",
|
||||
"Value": "sopra"
|
||||
},
|
||||
{
|
||||
"Name": "ModelloCilindro",
|
||||
"Value": "c999"
|
||||
},
|
||||
{
|
||||
"Name": "LavCilindroPassante",
|
||||
"Value": "false"
|
||||
},
|
||||
{
|
||||
"Name": "HMan",
|
||||
"Value": "500"
|
||||
}
|
||||
],
|
||||
"GroupId": 2,
|
||||
"AreaList": [
|
||||
{
|
||||
"FillType": "GLASS",
|
||||
"IdGroup": 5,
|
||||
"GroupId": 4,
|
||||
"AreaList": [],
|
||||
"AreaType": "FILL"
|
||||
}
|
||||
@@ -111,45 +183,67 @@
|
||||
"AreaType": "SPLITTED"
|
||||
},
|
||||
{
|
||||
"IdGroup": 6,
|
||||
"GroupId": 7,
|
||||
"AreaList": [
|
||||
{
|
||||
"bIsSashVertical": true,
|
||||
"IsSashVertical": true,
|
||||
"IsDimensionLight": false,
|
||||
"SashList": [
|
||||
{
|
||||
"nSashId": 1,
|
||||
"OpeningType": "TILTTURN_RIGHT",
|
||||
"bHasHandle": true,
|
||||
"dDimension": 100.0
|
||||
"SashId": 1,
|
||||
"OpeningType": "TILTTURN_LEFT",
|
||||
"MeasureType": "PERCENTAGE",
|
||||
"Dimension": 100.0,
|
||||
"HasHandle": true,
|
||||
"ElementDimensionList": [
|
||||
{
|
||||
"Index": 1,
|
||||
"Value": 78.0
|
||||
},
|
||||
{
|
||||
"Index": 2,
|
||||
"Value": 78.0
|
||||
},
|
||||
{
|
||||
"Index": 3,
|
||||
"Value": 78.0
|
||||
},
|
||||
{
|
||||
"Index": 4,
|
||||
"Value": 78.0
|
||||
}
|
||||
],
|
||||
"JointList": [
|
||||
{
|
||||
"Index": 1,
|
||||
"JointType": "FULL_V"
|
||||
},
|
||||
{
|
||||
"Index": 2,
|
||||
"JointType": "FULL_V"
|
||||
},
|
||||
{
|
||||
"Index": 3,
|
||||
"JointType": "FULL_V"
|
||||
},
|
||||
{
|
||||
"Index": 4,
|
||||
"JointType": "FULL_V"
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"SashType": "NULL",
|
||||
"JointList": [
|
||||
{
|
||||
"nIndex": 1,
|
||||
"JointType": "FULL_H"
|
||||
},
|
||||
{
|
||||
"nIndex": 2,
|
||||
"JointType": "FULL_H"
|
||||
},
|
||||
{
|
||||
"nIndex": 3,
|
||||
"JointType": "FULL_H"
|
||||
},
|
||||
{
|
||||
"nIndex": 4,
|
||||
"JointType": "FULL_H"
|
||||
}
|
||||
],
|
||||
"BottomRail": false,
|
||||
"BottomRailQty": 0,
|
||||
"Hardware": "000558",
|
||||
"IdGroup": 7,
|
||||
"BottomRailElemDimList": [],
|
||||
"Hardware": "000635",
|
||||
"HwOptionList": [],
|
||||
"GroupId": 9,
|
||||
"AreaList": [
|
||||
{
|
||||
"FillType": "GLASS",
|
||||
"IdGroup": 8,
|
||||
"GroupId": 8,
|
||||
"AreaList": [],
|
||||
"AreaType": "FILL"
|
||||
}
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"ProfilePath": "Profilo78",
|
||||
"Material": "Pino",
|
||||
"Wood": "Pino",
|
||||
"ColorMaterial": "Black",
|
||||
"Glass": "Vetro BE 2S 4T/16/4T",
|
||||
"AreaList": [
|
||||
@@ -8,73 +8,117 @@
|
||||
"Shape": "RECTANGLE",
|
||||
"DimensionList": [
|
||||
{
|
||||
"nIndex": 1,
|
||||
"sName": "Width",
|
||||
"dValue": 1500.0
|
||||
"Index": 1,
|
||||
"Name": "Width",
|
||||
"Value": 800.0
|
||||
},
|
||||
{
|
||||
"nIndex": 2,
|
||||
"sName": "Height",
|
||||
"dValue": 1800.0
|
||||
"Index": 2,
|
||||
"Name": "Height",
|
||||
"Value": 1200.0
|
||||
}
|
||||
],
|
||||
"ElementDimensionList": [
|
||||
{
|
||||
"Index": 1,
|
||||
"Value": 78.0
|
||||
},
|
||||
{
|
||||
"Index": 2,
|
||||
"Value": 78.0
|
||||
},
|
||||
{
|
||||
"Index": 3,
|
||||
"Value": 78.0
|
||||
},
|
||||
{
|
||||
"Index": 4,
|
||||
"Value": 78.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"
|
||||
}
|
||||
],
|
||||
"Threshold": "Bottom",
|
||||
"BottomRail": false,
|
||||
"BottomRailQty": 0,
|
||||
"IdGroup": 1,
|
||||
"BottomRailElemDimList": [],
|
||||
"GroupId": 1,
|
||||
"AreaList": [
|
||||
{
|
||||
"SplitShape": "GRID",
|
||||
"SplitStartVert": false,
|
||||
"SplitVertList": [
|
||||
{
|
||||
"bIsRelative": true,
|
||||
"dDimension": 50.0
|
||||
"IsRelative": true,
|
||||
"Dimension": 1.0,
|
||||
"MeasureType": "PROPORTIONAL"
|
||||
},
|
||||
{
|
||||
"bIsRelative": true,
|
||||
"dDimension": 50.0
|
||||
"IsRelative": true,
|
||||
"Dimension": 1.0,
|
||||
"MeasureType": "PROPORTIONAL"
|
||||
}
|
||||
],
|
||||
"SplitHorizList": [
|
||||
{
|
||||
"bIsRelative": true,
|
||||
"dDimension": 30.0
|
||||
"IsRelative": true,
|
||||
"Dimension": 1.0,
|
||||
"MeasureType": "PROPORTIONAL"
|
||||
},
|
||||
{
|
||||
"bIsRelative": true,
|
||||
"dDimension": 40.0
|
||||
"IsRelative": true,
|
||||
"Dimension": 1.0,
|
||||
"MeasureType": "PROPORTIONAL"
|
||||
},
|
||||
{
|
||||
"bIsRelative": true,
|
||||
"dDimension": 30.0
|
||||
"IsRelative": true,
|
||||
"Dimension": 1.0,
|
||||
"MeasureType": "PROPORTIONAL"
|
||||
}
|
||||
],
|
||||
"IdGroup": 2,
|
||||
"ElementDimVertList": [
|
||||
{
|
||||
"Index": 1,
|
||||
"Value": 78.0,
|
||||
"Area": 1
|
||||
}
|
||||
],
|
||||
"ElementDimHorizList": [
|
||||
{
|
||||
"Index": 1,
|
||||
"Value": 78.0,
|
||||
"Area": 0
|
||||
},
|
||||
{
|
||||
"Index": 2,
|
||||
"Value": 78.0,
|
||||
"Area": 0
|
||||
}
|
||||
],
|
||||
"GroupId": 8,
|
||||
"AreaList": [
|
||||
{
|
||||
"IdGroup": 3,
|
||||
"GroupId": 12,
|
||||
"AreaList": [
|
||||
{
|
||||
"FillType": "GLASS",
|
||||
"IdGroup": 4,
|
||||
"GroupId": 13,
|
||||
"AreaList": [],
|
||||
"AreaType": "FILL"
|
||||
}
|
||||
@@ -82,11 +126,11 @@
|
||||
"AreaType": "SPLITTED"
|
||||
},
|
||||
{
|
||||
"IdGroup": 5,
|
||||
"GroupId": 14,
|
||||
"AreaList": [
|
||||
{
|
||||
"FillType": "GLASS",
|
||||
"IdGroup": 6,
|
||||
"GroupId": 15,
|
||||
"AreaList": [],
|
||||
"AreaType": "FILL"
|
||||
}
|
||||
@@ -94,11 +138,11 @@
|
||||
"AreaType": "SPLITTED"
|
||||
},
|
||||
{
|
||||
"IdGroup": 7,
|
||||
"GroupId": 16,
|
||||
"AreaList": [
|
||||
{
|
||||
"FillType": "GLASS",
|
||||
"IdGroup": 8,
|
||||
"GroupId": 17,
|
||||
"AreaList": [],
|
||||
"AreaType": "FILL"
|
||||
}
|
||||
@@ -106,11 +150,11 @@
|
||||
"AreaType": "SPLITTED"
|
||||
},
|
||||
{
|
||||
"IdGroup": 9,
|
||||
"GroupId": 18,
|
||||
"AreaList": [
|
||||
{
|
||||
"FillType": "GLASS",
|
||||
"IdGroup": 10,
|
||||
"GroupId": 19,
|
||||
"AreaList": [],
|
||||
"AreaType": "FILL"
|
||||
}
|
||||
@@ -118,11 +162,11 @@
|
||||
"AreaType": "SPLITTED"
|
||||
},
|
||||
{
|
||||
"IdGroup": 11,
|
||||
"GroupId": 20,
|
||||
"AreaList": [
|
||||
{
|
||||
"FillType": "GLASS",
|
||||
"IdGroup": 12,
|
||||
"GroupId": 21,
|
||||
"AreaList": [],
|
||||
"AreaType": "FILL"
|
||||
}
|
||||
@@ -130,11 +174,11 @@
|
||||
"AreaType": "SPLITTED"
|
||||
},
|
||||
{
|
||||
"IdGroup": 13,
|
||||
"GroupId": 22,
|
||||
"AreaList": [
|
||||
{
|
||||
"FillType": "GLASS",
|
||||
"IdGroup": 14,
|
||||
"GroupId": 23,
|
||||
"AreaList": [],
|
||||
"AreaType": "FILL"
|
||||
}
|
||||
|
||||
@@ -0,0 +1,120 @@
|
||||
{
|
||||
"ProfilePath": "Profilo78",
|
||||
"Wood": "Pino",
|
||||
"ColorMaterial": "Black",
|
||||
"Glass": "Vetro BE 2S 4T/16/4T",
|
||||
"AreaList": [
|
||||
{
|
||||
"Shape": "RECTANGLE",
|
||||
"DimensionList": [
|
||||
{
|
||||
"Index": 1,
|
||||
"Name": "Width",
|
||||
"Value": 800.0
|
||||
},
|
||||
{
|
||||
"Index": 2,
|
||||
"Name": "Height",
|
||||
"Value": 1200.0
|
||||
}
|
||||
],
|
||||
"ElementDimensionList": [
|
||||
{
|
||||
"Index": 1,
|
||||
"Value": 78.0
|
||||
},
|
||||
{
|
||||
"Index": 2,
|
||||
"Value": 78.0
|
||||
},
|
||||
{
|
||||
"Index": 3,
|
||||
"Value": 78.0
|
||||
},
|
||||
{
|
||||
"Index": 4,
|
||||
"Value": 78.0
|
||||
}
|
||||
],
|
||||
"JointList": [
|
||||
{
|
||||
"Index": 1,
|
||||
"JointType": "FULL_H"
|
||||
},
|
||||
{
|
||||
"Index": 2,
|
||||
"JointType": "FULL_H"
|
||||
},
|
||||
{
|
||||
"Index": 3,
|
||||
"JointType": "FULL_H"
|
||||
},
|
||||
{
|
||||
"Index": 4,
|
||||
"JointType": "FULL_H"
|
||||
}
|
||||
],
|
||||
"Threshold": "Bottom",
|
||||
"BottomRail": false,
|
||||
"BottomRailQty": 0,
|
||||
"BottomRailElemDimList": [],
|
||||
"GroupId": 1,
|
||||
"AreaList": [
|
||||
{
|
||||
"SplitShape": "HORIZONTAL",
|
||||
"SplitStartVert": false,
|
||||
"SplitVertList": [],
|
||||
"SplitHorizList": [
|
||||
{
|
||||
"IsRelative": true,
|
||||
"Dimension": 50.0,
|
||||
"MeasureType": "PERCENTAGE"
|
||||
},
|
||||
{
|
||||
"IsRelative": true,
|
||||
"Dimension": 50.0,
|
||||
"MeasureType": "PERCENTAGE"
|
||||
}
|
||||
],
|
||||
"ElementDimVertList": [],
|
||||
"ElementDimHorizList": [
|
||||
{
|
||||
"Index": 1,
|
||||
"Value": 78.0,
|
||||
"Area": 0
|
||||
}
|
||||
],
|
||||
"GroupId": 8,
|
||||
"AreaList": [
|
||||
{
|
||||
"GroupId": 9,
|
||||
"AreaList": [
|
||||
{
|
||||
"FillType": "GLASS",
|
||||
"GroupId": 7,
|
||||
"AreaList": [],
|
||||
"AreaType": "FILL"
|
||||
}
|
||||
],
|
||||
"AreaType": "SPLITTED"
|
||||
},
|
||||
{
|
||||
"GroupId": 10,
|
||||
"AreaList": [
|
||||
{
|
||||
"FillType": "GLASS",
|
||||
"GroupId": 11,
|
||||
"AreaList": [],
|
||||
"AreaType": "FILL"
|
||||
}
|
||||
],
|
||||
"AreaType": "SPLITTED"
|
||||
}
|
||||
],
|
||||
"AreaType": "SPLIT"
|
||||
}
|
||||
],
|
||||
"AreaType": "FRAME"
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"ProfilePath": "Profilo78",
|
||||
"Material": "Pino",
|
||||
"Wood": "Pino",
|
||||
"ColorMaterial": "Black",
|
||||
"Glass": "Vetro BE 2S 4T/16/4T",
|
||||
"AreaList": [
|
||||
@@ -8,60 +8,90 @@
|
||||
"Shape": "RECTANGLE",
|
||||
"DimensionList": [
|
||||
{
|
||||
"nIndex": 1,
|
||||
"sName": "Width",
|
||||
"dValue": 1500.0
|
||||
"Index": 1,
|
||||
"Name": "Width",
|
||||
"Value": 800.0
|
||||
},
|
||||
{
|
||||
"nIndex": 2,
|
||||
"sName": "Height",
|
||||
"dValue": 1800.0
|
||||
"Index": 2,
|
||||
"Name": "Height",
|
||||
"Value": 1200.0
|
||||
}
|
||||
],
|
||||
"ElementDimensionList": [
|
||||
{
|
||||
"Index": 1,
|
||||
"Value": 78.0
|
||||
},
|
||||
{
|
||||
"Index": 2,
|
||||
"Value": 78.0
|
||||
},
|
||||
{
|
||||
"Index": 3,
|
||||
"Value": 78.0
|
||||
},
|
||||
{
|
||||
"Index": 4,
|
||||
"Value": 78.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"
|
||||
}
|
||||
],
|
||||
"Threshold": "Bottom",
|
||||
"BottomRail": false,
|
||||
"BottomRailQty": 0,
|
||||
"IdGroup": 1,
|
||||
"BottomRailElemDimList": [],
|
||||
"GroupId": 1,
|
||||
"AreaList": [
|
||||
{
|
||||
"SplitShape": "VERTICAL",
|
||||
"SplitStartVert": true,
|
||||
"SplitVertList": [
|
||||
{
|
||||
"bIsRelative": true,
|
||||
"dDimension": 50.0
|
||||
"IsRelative": true,
|
||||
"Dimension": 50.0,
|
||||
"MeasureType": "PERCENTAGE"
|
||||
},
|
||||
{
|
||||
"bIsRelative": true,
|
||||
"dDimension": 50.0
|
||||
"IsRelative": true,
|
||||
"Dimension": 50.0,
|
||||
"MeasureType": "PERCENTAGE"
|
||||
}
|
||||
],
|
||||
"SplitHorizList": [],
|
||||
"IdGroup": 2,
|
||||
"ElementDimVertList": [
|
||||
{
|
||||
"Index": 1,
|
||||
"Value": 78.0,
|
||||
"Area": 0
|
||||
}
|
||||
],
|
||||
"ElementDimHorizList": [],
|
||||
"GroupId": 8,
|
||||
"AreaList": [
|
||||
{
|
||||
"IdGroup": 3,
|
||||
"GroupId": 9,
|
||||
"AreaList": [
|
||||
{
|
||||
"FillType": "GLASS",
|
||||
"IdGroup": 4,
|
||||
"GroupId": 7,
|
||||
"AreaList": [],
|
||||
"AreaType": "FILL"
|
||||
}
|
||||
@@ -69,11 +99,11 @@
|
||||
"AreaType": "SPLITTED"
|
||||
},
|
||||
{
|
||||
"IdGroup": 5,
|
||||
"GroupId": 10,
|
||||
"AreaList": [
|
||||
{
|
||||
"FillType": "GLASS",
|
||||
"IdGroup": 6,
|
||||
"GroupId": 11,
|
||||
"AreaList": [],
|
||||
"AreaType": "FILL"
|
||||
}
|
||||
|
||||
@@ -0,0 +1,368 @@
|
||||
{
|
||||
"ProfilePath": "Profilo78",
|
||||
"Wood": "Pino",
|
||||
"ColorMaterial": "Wood",
|
||||
"Glass": "Vetro BE 2S 4T/16/4T",
|
||||
"AreaList": [
|
||||
{
|
||||
"Shape": "THREECENTERARC",
|
||||
"DimensionList": [
|
||||
{
|
||||
"Index": 1,
|
||||
"Name": "Width",
|
||||
"Value": 2000.0
|
||||
},
|
||||
{
|
||||
"Index": 2,
|
||||
"Name": "Height",
|
||||
"Value": 2080.0
|
||||
},
|
||||
{
|
||||
"Index": 3,
|
||||
"Name": "Full Height",
|
||||
"Value": 2400.0
|
||||
},
|
||||
{
|
||||
"Index": 4,
|
||||
"Name": "Radius",
|
||||
"Value": 200.0
|
||||
}
|
||||
],
|
||||
"ElementDimensionList": [
|
||||
{
|
||||
"Index": 1,
|
||||
"Value": 0.0
|
||||
},
|
||||
{
|
||||
"Index": 2,
|
||||
"Value": 78.0
|
||||
},
|
||||
{
|
||||
"Index": 3,
|
||||
"Value": 78.0
|
||||
},
|
||||
{
|
||||
"Index": 4,
|
||||
"Value": 78.0
|
||||
},
|
||||
{
|
||||
"Index": 5,
|
||||
"Value": 78.0
|
||||
},
|
||||
{
|
||||
"Index": 6,
|
||||
"Value": 78.0
|
||||
}
|
||||
],
|
||||
"JointList": [
|
||||
{
|
||||
"Index": 1,
|
||||
"JointType": "FULL_H"
|
||||
},
|
||||
{
|
||||
"Index": 2,
|
||||
"JointType": "FULL_H"
|
||||
},
|
||||
{
|
||||
"Index": 3,
|
||||
"JointType": "ANGLED"
|
||||
},
|
||||
{
|
||||
"Index": 4,
|
||||
"JointType": "ANGLED"
|
||||
}
|
||||
],
|
||||
"Threshold": "Threshold",
|
||||
"BottomRail": false,
|
||||
"BottomRailQty": 0,
|
||||
"BottomRailElemDimList": [],
|
||||
"GroupId": 1,
|
||||
"AreaList": [
|
||||
{
|
||||
"IsSashVertical": true,
|
||||
"IsDimensionLight": false,
|
||||
"SashList": [
|
||||
{
|
||||
"SashId": 1,
|
||||
"OpeningType": "TURNONLY_LEFT",
|
||||
"MeasureType": "PROPORTIONAL",
|
||||
"Dimension": 1.0,
|
||||
"HasHandle": false,
|
||||
"ElementDimensionList": [
|
||||
{
|
||||
"Index": 1,
|
||||
"Value": 78.0
|
||||
},
|
||||
{
|
||||
"Index": 2,
|
||||
"Value": 78.0
|
||||
},
|
||||
{
|
||||
"Index": 3,
|
||||
"Value": 78.0
|
||||
},
|
||||
{
|
||||
"Index": 4,
|
||||
"Value": 78.0
|
||||
},
|
||||
{
|
||||
"Index": 5,
|
||||
"Value": 78.0
|
||||
}
|
||||
],
|
||||
"JointList": [
|
||||
{
|
||||
"Index": 1,
|
||||
"JointType": "FULL_V"
|
||||
},
|
||||
{
|
||||
"Index": 2,
|
||||
"JointType": "FULL_V"
|
||||
},
|
||||
{
|
||||
"Index": 3,
|
||||
"JointType": "FULL_V"
|
||||
},
|
||||
{
|
||||
"Index": 4,
|
||||
"JointType": "FULL_V"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"SashId": 2,
|
||||
"OpeningType": "TURNONLY_RIGHT",
|
||||
"MeasureType": "PROPORTIONAL",
|
||||
"Dimension": 1.0,
|
||||
"HasHandle": true,
|
||||
"ElementDimensionList": [
|
||||
{
|
||||
"Index": 1,
|
||||
"Value": 78.0
|
||||
},
|
||||
{
|
||||
"Index": 2,
|
||||
"Value": 78.0
|
||||
},
|
||||
{
|
||||
"Index": 3,
|
||||
"Value": 78.0
|
||||
},
|
||||
{
|
||||
"Index": 4,
|
||||
"Value": 78.0
|
||||
}
|
||||
],
|
||||
"JointList": [
|
||||
{
|
||||
"Index": 1,
|
||||
"JointType": "FULL_V"
|
||||
},
|
||||
{
|
||||
"Index": 2,
|
||||
"JointType": "FULL_V"
|
||||
},
|
||||
{
|
||||
"Index": 3,
|
||||
"JointType": "FULL_V"
|
||||
},
|
||||
{
|
||||
"Index": 4,
|
||||
"JointType": "FULL_V"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"SashId": 3,
|
||||
"OpeningType": "TURNONLY_RIGHT",
|
||||
"MeasureType": "PROPORTIONAL",
|
||||
"Dimension": 1.0,
|
||||
"HasHandle": false,
|
||||
"ElementDimensionList": [
|
||||
{
|
||||
"Index": 1,
|
||||
"Value": 78.0
|
||||
},
|
||||
{
|
||||
"Index": 2,
|
||||
"Value": 78.0
|
||||
},
|
||||
{
|
||||
"Index": 3,
|
||||
"Value": 78.0
|
||||
},
|
||||
{
|
||||
"Index": 4,
|
||||
"Value": 78.0
|
||||
},
|
||||
{
|
||||
"Index": 5,
|
||||
"Value": 78.0
|
||||
}
|
||||
],
|
||||
"JointList": [
|
||||
{
|
||||
"Index": 1,
|
||||
"JointType": "FULL_V"
|
||||
},
|
||||
{
|
||||
"Index": 2,
|
||||
"JointType": "FULL_V"
|
||||
},
|
||||
{
|
||||
"Index": 3,
|
||||
"JointType": "FULL_V"
|
||||
},
|
||||
{
|
||||
"Index": 4,
|
||||
"JointType": "FULL_V"
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"SashType": "NULL",
|
||||
"BottomRail": false,
|
||||
"BottomRailQty": 0,
|
||||
"BottomRailElemDimList": [],
|
||||
"Hardware": "000000",
|
||||
"HwOptionList": [],
|
||||
"GroupId": 3,
|
||||
"AreaList": [
|
||||
{
|
||||
"GroupId": 9,
|
||||
"AreaList": [
|
||||
{
|
||||
"SplitShape": "HORIZONTAL",
|
||||
"SplitStartVert": false,
|
||||
"SplitVertList": [],
|
||||
"SplitHorizList": [
|
||||
{
|
||||
"IsRelative": true,
|
||||
"Dimension": 30.0,
|
||||
"MeasureType": "PERCENTAGE"
|
||||
},
|
||||
{
|
||||
"IsRelative": true,
|
||||
"Dimension": 70.0,
|
||||
"MeasureType": "PERCENTAGE"
|
||||
}
|
||||
],
|
||||
"ElementDimVertList": [],
|
||||
"ElementDimHorizList": [
|
||||
{
|
||||
"Index": 1,
|
||||
"Value": 60.0,
|
||||
"Area": 0
|
||||
}
|
||||
],
|
||||
"GroupId": 13,
|
||||
"AreaList": [
|
||||
{
|
||||
"GroupId": 14,
|
||||
"AreaList": [
|
||||
{
|
||||
"FillType": "GLASS",
|
||||
"GroupId": 2,
|
||||
"AreaList": [],
|
||||
"AreaType": "FILL"
|
||||
}
|
||||
],
|
||||
"AreaType": "SPLITTED"
|
||||
},
|
||||
{
|
||||
"GroupId": 15,
|
||||
"AreaList": [
|
||||
{
|
||||
"FillType": "GLASS",
|
||||
"GroupId": 16,
|
||||
"AreaList": [],
|
||||
"AreaType": "FILL"
|
||||
}
|
||||
],
|
||||
"AreaType": "SPLITTED"
|
||||
}
|
||||
],
|
||||
"AreaType": "SPLIT"
|
||||
}
|
||||
],
|
||||
"AreaType": "SPLITTED"
|
||||
},
|
||||
{
|
||||
"GroupId": 10,
|
||||
"AreaList": [
|
||||
{
|
||||
"FillType": "GLASS",
|
||||
"GroupId": 6,
|
||||
"AreaList": [],
|
||||
"AreaType": "FILL"
|
||||
}
|
||||
],
|
||||
"AreaType": "SPLITTED"
|
||||
},
|
||||
{
|
||||
"GroupId": 11,
|
||||
"AreaList": [
|
||||
{
|
||||
"SplitShape": "HORIZONTAL",
|
||||
"SplitStartVert": false,
|
||||
"SplitVertList": [],
|
||||
"SplitHorizList": [
|
||||
{
|
||||
"IsRelative": true,
|
||||
"Dimension": 30.0,
|
||||
"MeasureType": "PERCENTAGE"
|
||||
},
|
||||
{
|
||||
"IsRelative": true,
|
||||
"Dimension": 70.0,
|
||||
"MeasureType": "PERCENTAGE"
|
||||
}
|
||||
],
|
||||
"ElementDimVertList": [],
|
||||
"ElementDimHorizList": [
|
||||
{
|
||||
"Index": 1,
|
||||
"Value": 60.0,
|
||||
"Area": 0
|
||||
}
|
||||
],
|
||||
"GroupId": 17,
|
||||
"AreaList": [
|
||||
{
|
||||
"GroupId": 18,
|
||||
"AreaList": [
|
||||
{
|
||||
"FillType": "GLASS",
|
||||
"GroupId": 19,
|
||||
"AreaList": [],
|
||||
"AreaType": "FILL"
|
||||
}
|
||||
],
|
||||
"AreaType": "SPLITTED"
|
||||
},
|
||||
{
|
||||
"GroupId": 20,
|
||||
"AreaList": [
|
||||
{
|
||||
"FillType": "GLASS",
|
||||
"GroupId": 21,
|
||||
"AreaList": [],
|
||||
"AreaType": "FILL"
|
||||
}
|
||||
],
|
||||
"AreaType": "SPLITTED"
|
||||
}
|
||||
],
|
||||
"AreaType": "SPLIT"
|
||||
}
|
||||
],
|
||||
"AreaType": "SPLITTED"
|
||||
}
|
||||
],
|
||||
"AreaType": "SASH"
|
||||
}
|
||||
],
|
||||
"AreaType": "FRAME"
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -13,26 +13,38 @@
|
||||
},
|
||||
{
|
||||
"Index": 3,
|
||||
"Description": "Arco anta doppia",
|
||||
"SVGFileName": "ArcoAntaDoppia.svg",
|
||||
"JwdFileName": "Data/ArcoAntaDoppia.jwd"
|
||||
},
|
||||
{
|
||||
"Index": 4,
|
||||
"Description": "Finestra due ante bottom fisso",
|
||||
"SVGFileName": "FinDueAnteBottomFisso.svg",
|
||||
"JwdFileName": "Data/FinDueAnteBottomFisso.jwd"
|
||||
},
|
||||
{
|
||||
"Index": 5,
|
||||
"Description": "Finestra con due ante separate",
|
||||
"SVGFileName": "FinestraDueAnteSeparate.svg",
|
||||
"JwdFileName": "Data/FinestraDueAnteSeparate.jwd"
|
||||
},
|
||||
{
|
||||
"Index": 4,
|
||||
"Index": 6,
|
||||
"Description": "Finestra con split a griglia",
|
||||
"SVGFileName": "FinestraSplitGrid.svg",
|
||||
"JwdFileName": "Data/FinestraSplitGrid.jwd"
|
||||
},
|
||||
{
|
||||
"Index": 7,
|
||||
"Description": "Finestra con split verticale",
|
||||
"SVGFileName": "FinestraSplitVert.svg",
|
||||
"JwdFileName": "Data/FinestraSplitVert.jwd"
|
||||
},
|
||||
{
|
||||
"Index": 5,
|
||||
"Description": "Finestra con split grid",
|
||||
"SVGFileName": "FinestraSplitGrid.svg",
|
||||
"JwdFileName": "Data/FinestraSplitGrid.jwd"
|
||||
},
|
||||
{
|
||||
"Index": 6,
|
||||
"Description": "Finestra con split orizzontale (sopra due ante e sotto vetro fisso)",
|
||||
"SVGFileName": "FinDueAnteBottomFisso.svg",
|
||||
"JwdFileName": "Data/FinDueAnteBottomFisso.jwd"
|
||||
"Index": 8,
|
||||
"Description": "Finestra con split orizzontale",
|
||||
"SVGFileName": "FinestraSplitHoriz.svg",
|
||||
"JwdFileName": "Data/FinestraSplitHoriz.jwd"
|
||||
}
|
||||
]
|
||||
@@ -1,5 +1,9 @@
|
||||
using EgwCoreLib.Lux.Data;
|
||||
using EgwCoreLib.Lux.Data.Services;
|
||||
using Microsoft.EntityFrameworkCore;
|
||||
using Microsoft.Extensions.Configuration;
|
||||
using NLog;
|
||||
using NLog.Web;
|
||||
using StackExchange.Redis;
|
||||
using System.Reflection;
|
||||
using Test.UI.Client.Pages;
|
||||
@@ -7,10 +11,14 @@ using Test.UI.Components;
|
||||
|
||||
var builder = WebApplication.CreateBuilder(args);
|
||||
|
||||
|
||||
var assemblyVersion = Assembly.GetExecutingAssembly().GetName().Version?.ToString();
|
||||
|
||||
var logger = LogManager.Setup()
|
||||
.LoadConfigurationFromAppSettings()
|
||||
.GetCurrentClassLogger();
|
||||
|
||||
ConfigurationManager configuration = builder.Configuration;
|
||||
logger.Info("Program.cs: startup");
|
||||
|
||||
// Add services to the container.
|
||||
builder.Services.AddRazorComponents()
|
||||
@@ -20,6 +28,20 @@ builder.Services.AddRazorComponents()
|
||||
// costruzione connectionMultiplexer redis...
|
||||
string connStr = configuration.GetConnectionString("Redis") ?? "localhost";
|
||||
ConnectionMultiplexer redisConn = ConnectionMultiplexer.Connect(connStr);
|
||||
// registrazione in blocco servizi con metodo extension custom
|
||||
var connectionString = builder.Configuration.GetConnectionString("Lux.All") ?? throw new InvalidOperationException("Connection string 'DefaultConnection' not found.");
|
||||
builder.Services.AddDbContextFactory<DataLayerContext>(options =>
|
||||
{
|
||||
var conn = builder.Configuration.GetConnectionString("Lux.All");
|
||||
options.UseMySql(conn, ServerVersion.AutoDetect(conn), mySqlOptions =>
|
||||
{
|
||||
mySqlOptions.EnableStringComparisonTranslations();
|
||||
})
|
||||
.EnableSensitiveDataLogging(false)
|
||||
.EnableDetailedErrors(false)
|
||||
.LogTo(_ => { }); // disabilita EF logging;
|
||||
});
|
||||
builder.Services.AddLuxData(connectionString);
|
||||
// registro connMultiplexer REDIS
|
||||
builder.Services.AddSingleton<IConnectionMultiplexer>(redisConn);
|
||||
// registro wrapper servizi REDIS
|
||||
@@ -28,10 +50,16 @@ builder.Services.AddSingleton<RedisSubscriptionManager>();
|
||||
// Aggiunta servizi specifici
|
||||
builder.Services.AddSingleton<DataLayerServices>();
|
||||
builder.Services.AddSingleton<ImageCacheService>();
|
||||
|
||||
builder.Services.AddSingleton<ConfigDataService>();
|
||||
|
||||
var app = builder.Build();
|
||||
|
||||
|
||||
// aggiunt base URL x routing corretto
|
||||
string baseUrl = configuration.GetValue<string>("ServerConf:BaseUrl") ?? "";
|
||||
app.UsePathBase(baseUrl);
|
||||
logger.Info($"BaseUrl: {baseUrl}");
|
||||
|
||||
// Configure the HTTP request pipeline.
|
||||
if (app.Environment.IsDevelopment())
|
||||
{
|
||||
|
||||
@@ -0,0 +1,25 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!-- https://go.microsoft.com/fwlink/?LinkID=208121. -->
|
||||
<Project>
|
||||
<PropertyGroup>
|
||||
<WebPublishMethod>MSDeploy</WebPublishMethod>
|
||||
<LaunchSiteAfterPublish>true</LaunchSiteAfterPublish>
|
||||
<LastUsedBuildConfiguration>Release</LastUsedBuildConfiguration>
|
||||
<LastUsedPlatform>Any CPU</LastUsedPlatform>
|
||||
<SiteUrlToLaunchAfterPublish>https://iis01.egalware.com/Lux/test/</SiteUrlToLaunchAfterPublish>
|
||||
<ExcludeApp_Data>false</ExcludeApp_Data>
|
||||
<ProjectGuid>8f1d6298-c1e6-44e6-82bd-4128ae17c0c7</ProjectGuid>
|
||||
<SelfContained>false</SelfContained>
|
||||
<MSDeployServiceURL>https://IIS01.egalware.com:8172/MsDeploy.axd</MSDeployServiceURL>
|
||||
<DeployIisAppPath>Default Web Site/Lux/test</DeployIisAppPath>
|
||||
<RemoteSitePhysicalPath />
|
||||
<SkipExtraFilesOnServer>true</SkipExtraFilesOnServer>
|
||||
<MSDeployPublishMethod>WMSVC</MSDeployPublishMethod>
|
||||
<EnableMSDeployBackup>true</EnableMSDeployBackup>
|
||||
<EnableMsDeployAppOffline>true</EnableMsDeployAppOffline>
|
||||
<UserName>jenkins</UserName>
|
||||
<_SavePWD>true</_SavePWD>
|
||||
<_TargetId>IISWebDeploy</_TargetId>
|
||||
<TargetFramework>net8.0</TargetFramework>
|
||||
</PropertyGroup>
|
||||
</Project>
|
||||
@@ -1,4 +1,4 @@
|
||||
<Project Sdk="Microsoft.NET.Sdk.Web">
|
||||
<Project Sdk="Microsoft.NET.Sdk.Web">
|
||||
|
||||
<PropertyGroup>
|
||||
<TargetFramework>net8.0</TargetFramework>
|
||||
@@ -29,20 +29,32 @@
|
||||
</ItemGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<PackageReference Include="AsyncFixer">
|
||||
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
|
||||
<PrivateAssets>all</PrivateAssets>
|
||||
</PackageReference>
|
||||
<PackageReference Include="NLog" />
|
||||
<PackageReference Include="NLog.Web.AspNetCore" />
|
||||
<ProjectReference Include="..\Test.UI.Client\Test.UI.Client.csproj" />
|
||||
<ProjectReference Include="..\WebAedificaConfigurator\WebAedificaConfigurator.csproj" />
|
||||
<ProjectReference Include="..\WebWindowComplex\WebWindowComplex.csproj" />
|
||||
<ProjectReference Include="..\WebWindowConfigurator\WebWindowConfigurator.csproj" />
|
||||
<ProjectReference Include="..\WebWindowTest\WebWindowTest.csproj" />
|
||||
<PackageReference Include="EgwCoreLib.Lux.Core" Version="0.9.2509.1718" />
|
||||
<PackageReference Include="EgwCoreLib.Lux.Data" Version="0.9.2509.1718" />
|
||||
<PackageReference Include="EgwCoreLib.Razor" Version="1.5.2507.1815" />
|
||||
<PackageReference Include="EgwCoreLib.Utils" Version="1.5.2507.1815" />
|
||||
<PackageReference Include="Microsoft.AspNetCore.Components.WebAssembly.Server" Version="8.0.17" />
|
||||
<PackageReference Include="RestSharp" Version="112.1.0" />
|
||||
<PackageReference Include="EgwCoreLib.Lux.Core" />
|
||||
<PackageReference Include="EgwCoreLib.Lux.Data" />
|
||||
<PackageReference Include="EgwCoreLib.Razor" />
|
||||
<PackageReference Include="EgwCoreLib.Utils" />
|
||||
<PackageReference Include="Microsoft.AspNetCore.Components.WebAssembly.Server" />
|
||||
<PackageReference Include="RestSharp" />
|
||||
</ItemGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<None Update="Data\AntaDoppiaInglesine.jwd">
|
||||
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
|
||||
</None>
|
||||
<None Update="Data\ArcoAntaDoppia.jwd">
|
||||
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
|
||||
</None>
|
||||
<None Update="Data\AntaDoppia.jwd">
|
||||
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
|
||||
</None>
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
{
|
||||
"DetailedErrors": true,
|
||||
"Logging": {
|
||||
"LogLevel": {
|
||||
"Default": "Information",
|
||||
|
||||
@@ -1,24 +1,81 @@
|
||||
{
|
||||
"DetailedErrors": true,
|
||||
"Logging": {
|
||||
"LogLevel": {
|
||||
"Default": "Information",
|
||||
"Microsoft.AspNetCore": "Warning"
|
||||
}
|
||||
},
|
||||
"NLog": {
|
||||
"variables": {
|
||||
"baseFileDir": "${basedir}/logs/",
|
||||
"layout": "${longdate} | ${uppercase:${level}} | ${logger:shortName=false} | ${message}"
|
||||
},
|
||||
// "internalLogLevel": "Info",
|
||||
// "internalLogFile": "c:\\temp\\internal-nlog.txt",
|
||||
"extensions": [
|
||||
{ "assembly": "NLog.Extensions.Logging" },
|
||||
{ "assembly": "NLog.Web.AspNetCore" }
|
||||
],
|
||||
"throwConfigExceptions": true,
|
||||
"targets": {
|
||||
"async": true,
|
||||
"logfile": {
|
||||
"type": "File",
|
||||
"fileName": "${basedir}/logs/${shortdate}.log",
|
||||
"layout": "${layout}",
|
||||
"archiveEvery": "Day",
|
||||
"archiveFileName": "${basedir}/logs/old/${shortdate}_{#}.log",
|
||||
"archiveNumbering": "DateAndSequence",
|
||||
"archiveAboveSize": "1024000",
|
||||
"archiveDateFormat": "HH",
|
||||
"maxArchiveFiles": "60",
|
||||
"maxArchiveDays": "30"
|
||||
},
|
||||
"logconsole": {
|
||||
"type": "ColoredConsole",
|
||||
"layout": "${longdate} | ${uppercase:${level}} | ${logger:shortName=true} | ${message}"
|
||||
}
|
||||
},
|
||||
"rules": [
|
||||
{
|
||||
"logger": "*",
|
||||
"minLevel": "Trace",
|
||||
"writeTo": "logconsole"
|
||||
},
|
||||
{
|
||||
"logger": "*",
|
||||
"minLevel": "Info",
|
||||
"writeTo": "logfile"
|
||||
}
|
||||
]
|
||||
},
|
||||
"AllowedHosts": "*",
|
||||
"ConnectionStrings": {
|
||||
"Redis": "redis.ufficio:26379, serviceName=devel, DefaultDatabase=6, keepAlive=180, connectTimeout=15000, syncTimeout=15000, asyncTimeout=15000, abortConnect=false, ssl=false, allowAdmin=true"
|
||||
"Redis": "redis.ufficio:26379, serviceName=devel, DefaultDatabase=6, keepAlive=180, connectTimeout=15000, syncTimeout=15000, asyncTimeout=15000, abortConnect=false, ssl=false, allowAdmin=true",
|
||||
"DefaultConnection": "Server=mdb.ufficio;port=3306;database=Lux_000;uid=lux_user;pwd=Egal_pwd!;sslmode=None;",
|
||||
"Lux.All": "Server=mdb.ufficio;port=3306;database=Lux_000;uid=lux_user;pwd=Egal_pwd!;sslmode=None;"
|
||||
},
|
||||
"ServerConf": {
|
||||
"PubChannel": "EgwEngineInput",
|
||||
"SubChannel": "EgwEngineOutput",
|
||||
"SvgChannel": "svg:img",
|
||||
"Prog.ApiUrl": "https://office.egalware.com/lux/srv/api",
|
||||
"ImageBaseUrl": "window",
|
||||
"GenericBaseUrl": "generic",
|
||||
"ImageLiveTag": "svg",
|
||||
"ImageFileTag": "svgfile",
|
||||
"ImageCalcTag": "svg-preview",
|
||||
"CalcTag": "calc"
|
||||
}
|
||||
"ServerConf": {
|
||||
"BaseUrl": "/lux/test/",
|
||||
"ChannelPng": "lux:png:img",
|
||||
"ChannelSvg": "lux:svg:img",
|
||||
"ChannelShape": "lux:shape:curr",
|
||||
"ChannelHwList": "lux:hw:list",
|
||||
"ChannelHwOpt": "lux:hw:opt",
|
||||
"ChannelProfElem": "lux:prof:elem",
|
||||
"ChannelProfList": "lux:prof:list",
|
||||
"ChannelBom": "lux:bom",
|
||||
"ChannelUpdate": "lux:update",
|
||||
"ChannelPub": "EgwEngineInput",
|
||||
"ChannelSub": "EgwEngineOutput",
|
||||
|
||||
"Prog.ApiUrl": "https://office.egalware.com/lux/srv/api",
|
||||
"ImageBaseUrl": "window",
|
||||
"GenericBaseUrl": "generic",
|
||||
"ImageCalcTag": "svg-preview",
|
||||
"ImageFileTag": "svgfile",
|
||||
"ImageLiveTag": "svg",
|
||||
"CalcTag": "calc"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,21 @@
|
||||
{
|
||||
"version": "3.0",
|
||||
"defaultProvider": "cdnjs",
|
||||
"libraries": [
|
||||
{
|
||||
"provider": "cdnjs",
|
||||
"library": "bootstrap@5.3.8",
|
||||
"destination": "wwwroot/lib/bootstrap/"
|
||||
},
|
||||
{
|
||||
"provider": "cdnjs",
|
||||
"library": "font-awesome@7.0.1",
|
||||
"destination": "wwwroot/lib/font-awesome/"
|
||||
},
|
||||
{
|
||||
"provider": "cdnjs",
|
||||
"library": "bootstrap-icons@1.13.1",
|
||||
"destination": "wwwroot/lib/bootstrap-icons/"
|
||||
}
|
||||
]
|
||||
}
|
||||
|
After Width: | Height: | Size: 295 B |
|
After Width: | Height: | Size: 8.3 KiB |
|
After Width: | Height: | Size: 1.1 MiB |
@@ -0,0 +1,4 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-0-circle-fill" viewBox="0 0 16 16">
|
||||
<path d="M8 4.951c-1.008 0-1.629 1.09-1.629 2.895v.31c0 1.81.627 2.895 1.629 2.895s1.623-1.09 1.623-2.895v-.31c0-1.8-.621-2.895-1.623-2.895"/>
|
||||
<path d="M16 8A8 8 0 1 1 0 8a8 8 0 0 1 16 0m-8.012 4.158c1.858 0 2.96-1.582 2.96-3.99V7.84c0-2.426-1.079-3.996-2.936-3.996-1.864 0-2.965 1.588-2.965 3.996v.328c0 2.42 1.09 3.99 2.941 3.99"/>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 476 B |
@@ -0,0 +1,4 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-0-circle" viewBox="0 0 16 16">
|
||||
<path d="M7.988 12.158c-1.851 0-2.941-1.57-2.941-3.99V7.84c0-2.408 1.101-3.996 2.965-3.996 1.857 0 2.935 1.57 2.935 3.996v.328c0 2.408-1.101 3.99-2.959 3.99M8 4.951c-1.008 0-1.629 1.09-1.629 2.895v.31c0 1.81.627 2.895 1.629 2.895s1.623-1.09 1.623-2.895v-.31c0-1.8-.621-2.895-1.623-2.895"/>
|
||||
<path d="M16 8A8 8 0 1 1 0 8a8 8 0 0 1 16 0M1 8a7 7 0 1 0 14 0A7 7 0 0 0 1 8"/>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 507 B |
@@ -0,0 +1,4 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-0-square-fill" viewBox="0 0 16 16">
|
||||
<path d="M8 4.951c-1.008 0-1.629 1.09-1.629 2.895v.31c0 1.81.627 2.895 1.629 2.895s1.623-1.09 1.623-2.895v-.31c0-1.8-.621-2.895-1.623-2.895"/>
|
||||
<path d="M2 0a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V2a2 2 0 0 0-2-2zm5.988 12.158c-1.851 0-2.941-1.57-2.941-3.99V7.84c0-2.408 1.101-3.996 2.965-3.996 1.857 0 2.935 1.57 2.935 3.996v.328c0 2.408-1.101 3.99-2.959 3.99"/>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 514 B |
@@ -0,0 +1,4 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-0-square" viewBox="0 0 16 16">
|
||||
<path d="M7.988 12.158c-1.851 0-2.941-1.57-2.941-3.99V7.84c0-2.408 1.101-3.996 2.965-3.996 1.857 0 2.935 1.57 2.935 3.996v.328c0 2.408-1.101 3.99-2.959 3.99M8 4.951c-1.008 0-1.629 1.09-1.629 2.895v.31c0 1.81.627 2.895 1.629 2.895s1.623-1.09 1.623-2.895v-.31c0-1.8-.621-2.895-1.623-2.895"/>
|
||||
<path d="M0 2a2 2 0 0 1 2-2h12a2 2 0 0 1 2 2v12a2 2 0 0 1-2 2H2a2 2 0 0 1-2-2zm15 0a1 1 0 0 0-1-1H2a1 1 0 0 0-1 1v12a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1z"/>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 579 B |
@@ -0,0 +1,3 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-1-circle-fill" viewBox="0 0 16 16">
|
||||
<path d="M16 8A8 8 0 1 1 0 8a8 8 0 0 1 16 0M9.283 4.002H7.971L6.072 5.385v1.271l1.834-1.318h.065V12h1.312z"/>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 250 B |
@@ -0,0 +1,3 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-1-circle" viewBox="0 0 16 16">
|
||||
<path d="M1 8a7 7 0 1 0 14 0A7 7 0 0 0 1 8m15 0A8 8 0 1 1 0 8a8 8 0 0 1 16 0M9.283 4.002V12H7.971V5.338h-.065L6.072 6.656V5.385l1.899-1.383z"/>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 279 B |
@@ -0,0 +1,3 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-1-square-fill" viewBox="0 0 16 16">
|
||||
<path d="M2 0a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V2a2 2 0 0 0-2-2zm7.283 4.002V12H7.971V5.338h-.065L6.072 6.656V5.385l1.899-1.383z"/>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 286 B |
@@ -0,0 +1,4 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-1-square" viewBox="0 0 16 16">
|
||||
<path d="M9.283 4.002V12H7.971V5.338h-.065L6.072 6.656V5.385l1.899-1.383z"/>
|
||||
<path d="M0 2a2 2 0 0 1 2-2h12a2 2 0 0 1 2 2v12a2 2 0 0 1-2 2H2a2 2 0 0 1-2-2zm15 0a1 1 0 0 0-1-1H2a1 1 0 0 0-1 1v12a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1z"/>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 366 B |
@@ -0,0 +1,3 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-123" viewBox="0 0 16 16">
|
||||
<path d="M2.873 11.297V4.142H1.699L0 5.379v1.137l1.64-1.18h.06v5.961zm3.213-5.09v-.063c0-.618.44-1.169 1.196-1.169.676 0 1.174.44 1.174 1.106 0 .624-.42 1.101-.807 1.526L4.99 10.553v.744h4.78v-.99H6.643v-.069L8.41 8.252c.65-.724 1.237-1.332 1.237-2.27C9.646 4.849 8.723 4 7.308 4c-1.573 0-2.36 1.064-2.36 2.15v.057zm6.559 1.883h.786c.823 0 1.374.481 1.379 1.179.01.707-.55 1.216-1.421 1.21-.77-.005-1.326-.419-1.379-.953h-1.095c.042 1.053.938 1.918 2.464 1.918 1.478 0 2.642-.839 2.62-2.144-.02-1.143-.922-1.651-1.551-1.714v-.063c.535-.09 1.347-.66 1.326-1.678-.026-1.053-.933-1.855-2.359-1.845-1.5.005-2.317.88-2.348 1.898h1.116c.032-.498.498-.944 1.206-.944.703 0 1.206.435 1.206 1.07.005.64-.504 1.106-1.2 1.106h-.75z"/>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 854 B |
@@ -0,0 +1,3 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-2-circle-fill" viewBox="0 0 16 16">
|
||||
<path d="M16 8A8 8 0 1 1 0 8a8 8 0 0 1 16 0M6.646 6.24c0-.691.493-1.306 1.336-1.306.756 0 1.313.492 1.313 1.236 0 .697-.469 1.23-.902 1.705l-2.971 3.293V12h5.344v-1.107H7.268v-.077l1.974-2.22.096-.107c.688-.763 1.287-1.428 1.287-2.43 0-1.266-1.031-2.215-2.613-2.215-1.758 0-2.637 1.19-2.637 2.402v.065h1.271v-.07Z"/>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 457 B |
@@ -0,0 +1,3 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-2-circle" viewBox="0 0 16 16">
|
||||
<path d="M1 8a7 7 0 1 0 14 0A7 7 0 0 0 1 8m15 0A8 8 0 1 1 0 8a8 8 0 0 1 16 0M6.646 6.24v.07H5.375v-.064c0-1.213.879-2.402 2.637-2.402 1.582 0 2.613.949 2.613 2.215 0 1.002-.6 1.667-1.287 2.43l-.096.107-1.974 2.22v.077h3.498V12H5.422v-.832l2.97-3.293c.434-.475.903-1.008.903-1.705 0-.744-.557-1.236-1.313-1.236-.843 0-1.336.615-1.336 1.306"/>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 477 B |
@@ -0,0 +1,3 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-2-square-fill" viewBox="0 0 16 16">
|
||||
<path d="M2 0a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V2a2 2 0 0 0-2-2zm4.646 6.24v.07H5.375v-.064c0-1.213.879-2.402 2.637-2.402 1.582 0 2.613.949 2.613 2.215 0 1.002-.6 1.667-1.287 2.43l-.096.107-1.974 2.22v.077h3.498V12H5.422v-.832l2.97-3.293c.434-.475.903-1.008.903-1.705 0-.744-.557-1.236-1.313-1.236-.843 0-1.336.615-1.336 1.306"/>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 484 B |
@@ -0,0 +1,4 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-2-square" viewBox="0 0 16 16">
|
||||
<path d="M6.646 6.24v.07H5.375v-.064c0-1.213.879-2.402 2.637-2.402 1.582 0 2.613.949 2.613 2.215 0 1.002-.6 1.667-1.287 2.43l-.096.107-1.974 2.22v.077h3.498V12H5.422v-.832l2.97-3.293c.434-.475.903-1.008.903-1.705 0-.744-.557-1.236-1.313-1.236-.843 0-1.336.615-1.336 1.306"/>
|
||||
<path d="M0 2a2 2 0 0 1 2-2h12a2 2 0 0 1 2 2v12a2 2 0 0 1-2 2H2a2 2 0 0 1-2-2zm15 0a1 1 0 0 0-1-1H2a1 1 0 0 0-1 1v12a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1z"/>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 564 B |
@@ -0,0 +1,3 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-3-circle-fill" viewBox="0 0 16 16">
|
||||
<path d="M16 8A8 8 0 1 1 0 8a8 8 0 0 1 16 0m-8.082.414c.92 0 1.535.54 1.541 1.318.012.791-.615 1.36-1.588 1.354-.861-.006-1.482-.469-1.54-1.066H5.104c.047 1.177 1.05 2.144 2.754 2.144 1.653 0 2.954-.937 2.93-2.396-.023-1.278-1.031-1.846-1.734-1.916v-.07c.597-.1 1.505-.739 1.482-1.876-.03-1.177-1.043-2.074-2.637-2.062-1.675.006-2.59.984-2.625 2.12h1.248c.036-.556.557-1.054 1.348-1.054.785 0 1.348.486 1.348 1.195.006.715-.563 1.237-1.342 1.237h-.838v1.072h.879Z"/>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 607 B |
@@ -0,0 +1,4 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-3-circle" viewBox="0 0 16 16">
|
||||
<path d="M7.918 8.414h-.879V7.342h.838c.78 0 1.348-.522 1.342-1.237 0-.709-.563-1.195-1.348-1.195-.79 0-1.312.498-1.348 1.055H5.275c.036-1.137.95-2.115 2.625-2.121 1.594-.012 2.608.885 2.637 2.062.023 1.137-.885 1.776-1.482 1.875v.07c.703.07 1.71.64 1.734 1.917.024 1.459-1.277 2.396-2.93 2.396-1.705 0-2.707-.967-2.754-2.144H6.33c.059.597.68 1.06 1.541 1.066.973.006 1.6-.563 1.588-1.354-.006-.779-.621-1.318-1.541-1.318"/>
|
||||
<path d="M16 8A8 8 0 1 1 0 8a8 8 0 0 1 16 0M1 8a7 7 0 1 0 14 0A7 7 0 0 0 1 8"/>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 642 B |
@@ -0,0 +1,3 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-3-square-fill" viewBox="0 0 16 16">
|
||||
<path d="M2 0a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V2a2 2 0 0 0-2-2zm5.918 8.414h-.879V7.342h.838c.78 0 1.348-.522 1.342-1.237 0-.709-.563-1.195-1.348-1.195-.79 0-1.312.498-1.348 1.055H5.275c.036-1.137.95-2.115 2.625-2.121 1.594-.012 2.608.885 2.637 2.062.023 1.137-.885 1.776-1.482 1.875v.07c.703.07 1.71.64 1.734 1.917.024 1.459-1.277 2.396-2.93 2.396-1.705 0-2.707-.967-2.754-2.144H6.33c.059.597.68 1.06 1.541 1.066.973.006 1.6-.563 1.588-1.354-.006-.779-.621-1.318-1.541-1.318"/>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 634 B |
@@ -0,0 +1,4 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-3-square" viewBox="0 0 16 16">
|
||||
<path d="M7.918 8.414h-.879V7.342h.838c.78 0 1.348-.522 1.342-1.237 0-.709-.563-1.195-1.348-1.195-.79 0-1.312.498-1.348 1.055H5.275c.036-1.137.95-2.115 2.625-2.121 1.594-.012 2.608.885 2.637 2.062.023 1.137-.885 1.776-1.482 1.875v.07c.703.07 1.71.64 1.734 1.917.024 1.459-1.277 2.396-2.93 2.396-1.705 0-2.707-.967-2.754-2.144H6.33c.059.597.68 1.06 1.541 1.066.973.006 1.6-.563 1.588-1.354-.006-.779-.621-1.318-1.541-1.318"/>
|
||||
<path d="M0 2a2 2 0 0 1 2-2h12a2 2 0 0 1 2 2v12a2 2 0 0 1-2 2H2a2 2 0 0 1-2-2zm15 0a1 1 0 0 0-1-1H2a1 1 0 0 0-1 1v12a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1z"/>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 714 B |
@@ -0,0 +1,3 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-4-circle-fill" viewBox="0 0 16 16">
|
||||
<path d="M16 8A8 8 0 1 1 0 8a8 8 0 0 1 16 0M7.519 5.057c-.886 1.418-1.772 2.838-2.542 4.265v1.12H8.85V12h1.26v-1.559h1.007V9.334H10.11V4.002H8.176zM6.225 9.281v.053H8.85V5.063h-.065c-.867 1.33-1.787 2.806-2.56 4.218"/>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 359 B |
@@ -0,0 +1,4 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-4-circle" viewBox="0 0 16 16">
|
||||
<path d="M7.519 5.057q.33-.527.657-1.055h1.933v5.332h1.008v1.107H10.11V12H8.85v-1.559H4.978V9.322c.77-1.427 1.656-2.847 2.542-4.265ZM6.225 9.281v.053H8.85V5.063h-.065c-.867 1.33-1.787 2.806-2.56 4.218"/>
|
||||
<path d="M16 8A8 8 0 1 1 0 8a8 8 0 0 1 16 0M1 8a7 7 0 1 0 14 0A7 7 0 0 0 1 8"/>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 421 B |
@@ -0,0 +1,4 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-4-square-fill" viewBox="0 0 16 16">
|
||||
<path d="M6.225 9.281v.053H8.85V5.063h-.065c-.867 1.33-1.787 2.806-2.56 4.218"/>
|
||||
<path d="M2 0a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V2a2 2 0 0 0-2-2zm5.519 5.057q.33-.527.657-1.055h1.933v5.332h1.008v1.107H10.11V12H8.85v-1.559H4.978V9.322c.77-1.427 1.656-2.847 2.542-4.265Z"/>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 428 B |
@@ -0,0 +1,4 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-4-square" viewBox="0 0 16 16">
|
||||
<path d="M7.519 5.057q.33-.527.657-1.055h1.933v5.332h1.008v1.107H10.11V12H8.85v-1.559H4.978V9.322c.77-1.427 1.656-2.847 2.542-4.265ZM6.225 9.281v.053H8.85V5.063h-.065c-.867 1.33-1.787 2.806-2.56 4.218"/>
|
||||
<path d="M0 2a2 2 0 0 1 2-2h12a2 2 0 0 1 2 2v12a2 2 0 0 1-2 2H2a2 2 0 0 1-2-2zm15 0a1 1 0 0 0-1-1H2a1 1 0 0 0-1 1v12a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1z"/>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 493 B |
@@ -0,0 +1,3 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-5-circle-fill" viewBox="0 0 16 16">
|
||||
<path d="M16 8A8 8 0 1 1 0 8a8 8 0 0 1 16 0m-8.006 4.158c1.74 0 2.924-1.119 2.924-2.806 0-1.641-1.178-2.584-2.56-2.584-.897 0-1.442.421-1.612.68h-.064l.193-2.344h3.621V4.002H5.791L5.445 8.63h1.149c.193-.358.668-.809 1.435-.809.85 0 1.582.604 1.582 1.57 0 1.085-.779 1.682-1.57 1.682-.697 0-1.389-.31-1.53-1.031H5.276c.065 1.213 1.149 2.115 2.72 2.115Z"/>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 495 B |
@@ -0,0 +1,3 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-5-circle" viewBox="0 0 16 16">
|
||||
<path d="M1 8a7 7 0 1 1 14 0A7 7 0 0 1 1 8m15 0A8 8 0 1 0 0 8a8 8 0 0 0 16 0m-8.006 4.158c-1.57 0-2.654-.902-2.719-2.115h1.237c.14.72.832 1.031 1.529 1.031.791 0 1.57-.597 1.57-1.681 0-.967-.732-1.57-1.582-1.57-.767 0-1.242.45-1.435.808H5.445L5.791 4h4.705v1.103H6.875l-.193 2.343h.064c.17-.258.715-.68 1.611-.68 1.383 0 2.561.944 2.561 2.585 0 1.687-1.184 2.806-2.924 2.806Z"/>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 514 B |
@@ -0,0 +1,3 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-5-square-fill" viewBox="0 0 16 16">
|
||||
<path d="M2 0a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V2a2 2 0 0 0-2-2zm5.994 12.158c-1.57 0-2.654-.902-2.719-2.115h1.237c.14.72.832 1.031 1.529 1.031.791 0 1.57-.597 1.57-1.681 0-.967-.732-1.57-1.582-1.57-.767 0-1.242.45-1.435.808H5.445L5.791 4h4.705v1.103H6.875l-.193 2.343h.064c.17-.258.715-.68 1.611-.68 1.383 0 2.561.944 2.561 2.585 0 1.687-1.184 2.806-2.924 2.806Z"/>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 521 B |
@@ -0,0 +1,4 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-5-square" viewBox="0 0 16 16">
|
||||
<path d="M7.994 12.158c-1.57 0-2.654-.902-2.719-2.115h1.237c.14.72.832 1.031 1.529 1.031.791 0 1.57-.597 1.57-1.681 0-.967-.732-1.57-1.582-1.57-.767 0-1.242.45-1.435.808H5.445L5.791 4h4.705v1.103H6.875l-.193 2.343h.064c.17-.258.715-.68 1.611-.68 1.383 0 2.561.944 2.561 2.585 0 1.687-1.184 2.806-2.924 2.806Z"/>
|
||||
<path d="M0 2a2 2 0 0 1 2-2h12a2 2 0 0 1 2 2v12a2 2 0 0 1-2 2H2a2 2 0 0 1-2-2zm15 0a1 1 0 0 0-1-1H2a1 1 0 0 0-1 1v12a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1z"/>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 601 B |
@@ -0,0 +1,3 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-6-circle-fill" viewBox="0 0 16 16">
|
||||
<path d="M16 8A8 8 0 1 1 0 8a8 8 0 0 1 16 0M8.21 3.855c-1.868 0-3.116 1.395-3.116 4.407 0 1.183.228 2.039.597 2.642.569.926 1.477 1.254 2.409 1.254 1.629 0 2.847-1.013 2.847-2.783 0-1.676-1.254-2.555-2.508-2.555-1.125 0-1.752.61-1.98 1.155h-.082c-.012-1.946.727-3.036 1.805-3.036.802 0 1.213.457 1.312.815h1.29c-.06-.908-.962-1.899-2.573-1.899Zm-.099 4.008c-.92 0-1.564.65-1.564 1.576 0 1.032.703 1.635 1.558 1.635.868 0 1.553-.533 1.553-1.629 0-1.06-.744-1.582-1.547-1.582"/>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 617 B |
@@ -0,0 +1,3 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-6-circle" viewBox="0 0 16 16">
|
||||
<path d="M1 8a7 7 0 1 0 14 0A7 7 0 0 0 1 8m15 0A8 8 0 1 1 0 8a8 8 0 0 1 16 0M8.21 3.855c1.612 0 2.515.99 2.573 1.899H9.494c-.1-.358-.51-.815-1.312-.815-1.078 0-1.817 1.09-1.805 3.036h.082c.229-.545.855-1.155 1.98-1.155 1.254 0 2.508.88 2.508 2.555 0 1.77-1.218 2.783-2.847 2.783-.932 0-1.84-.328-2.409-1.254-.369-.603-.597-1.459-.597-2.642 0-3.012 1.248-4.407 3.117-4.407Zm-.099 4.008c-.92 0-1.564.65-1.564 1.576 0 1.032.703 1.635 1.558 1.635.868 0 1.553-.533 1.553-1.629 0-1.06-.744-1.582-1.547-1.582"/>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 640 B |
@@ -0,0 +1,4 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-6-square-fill" viewBox="0 0 16 16">
|
||||
<path d="M8.111 7.863c-.92 0-1.564.65-1.564 1.576 0 1.032.703 1.635 1.558 1.635.868 0 1.553-.533 1.553-1.629 0-1.06-.744-1.582-1.547-1.582"/>
|
||||
<path d="M2 0a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V2a2 2 0 0 0-2-2zm6.21 3.855c1.612 0 2.515.99 2.573 1.899H9.494c-.1-.358-.51-.815-1.312-.815-1.078 0-1.817 1.09-1.805 3.036h.082c.229-.545.855-1.155 1.98-1.155 1.254 0 2.508.88 2.508 2.555 0 1.77-1.218 2.783-2.847 2.783-.932 0-1.84-.328-2.409-1.254-.369-.603-.597-1.459-.597-2.642 0-3.012 1.248-4.407 3.117-4.407Z"/>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 662 B |
@@ -0,0 +1,4 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-6-square" viewBox="0 0 16 16">
|
||||
<path d="M8.21 3.855c1.612 0 2.515.99 2.573 1.899H9.494c-.1-.358-.51-.815-1.312-.815-1.078 0-1.817 1.09-1.805 3.036h.082c.229-.545.855-1.155 1.98-1.155 1.254 0 2.508.88 2.508 2.555 0 1.77-1.218 2.783-2.847 2.783-.932 0-1.84-.328-2.409-1.254-.369-.603-.597-1.459-.597-2.642 0-3.012 1.248-4.407 3.117-4.407Zm-.099 4.008c-.92 0-1.564.65-1.564 1.576 0 1.032.703 1.635 1.558 1.635.868 0 1.553-.533 1.553-1.629 0-1.06-.744-1.582-1.547-1.582"/>
|
||||
<path d="M0 2a2 2 0 0 1 2-2h12a2 2 0 0 1 2 2v12a2 2 0 0 1-2 2H2a2 2 0 0 1-2-2zm15 0a1 1 0 0 0-1-1H2a1 1 0 0 0-1 1v12a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1z"/>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 727 B |
@@ -0,0 +1,3 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-7-circle-fill" viewBox="0 0 16 16">
|
||||
<path d="M16 8A8 8 0 1 1 0 8a8 8 0 0 1 16 0M5.37 5.11h3.972v.07L6.025 12H7.42l3.258-6.85V4.002H5.369v1.107Z"/>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 251 B |
@@ -0,0 +1,3 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-7-circle" viewBox="0 0 16 16">
|
||||
<path d="M1 8a7 7 0 1 0 14 0A7 7 0 0 0 1 8m15 0A8 8 0 1 1 0 8a8 8 0 0 1 16 0M5.37 5.11V4.001h5.308V5.15L7.42 12H6.025l3.317-6.82v-.07H5.369Z"/>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 279 B |
@@ -0,0 +1,3 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-7-square-fill" viewBox="0 0 16 16">
|
||||
<path d="M2 0a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V2a2 2 0 0 0-2-2zm3.37 5.11V4.001h5.308V5.15L7.42 12H6.025l3.317-6.82v-.07H5.369Z"/>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 286 B |
@@ -0,0 +1,4 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-7-square" viewBox="0 0 16 16">
|
||||
<path d="M5.37 5.11V4.001h5.308V5.15L7.42 12H6.025l3.317-6.82v-.07H5.369Z"/>
|
||||
<path d="M0 2a2 2 0 0 1 2-2h12a2 2 0 0 1 2 2v12a2 2 0 0 1-2 2H2a2 2 0 0 1-2-2zm15 0a1 1 0 0 0-1-1H2a1 1 0 0 0-1 1v12a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1z"/>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 366 B |
@@ -0,0 +1,3 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-8-circle-fill" viewBox="0 0 16 16">
|
||||
<path d="M16 8A8 8 0 1 1 0 8a8 8 0 0 1 16 0m-5.03 1.803c0-1.248-.943-1.84-1.646-1.992v-.065c.598-.187 1.336-.72 1.336-1.781 0-1.225-1.084-2.121-2.654-2.121s-2.66.896-2.66 2.12c0 1.044.709 1.589 1.33 1.782v.065c-.697.152-1.647.732-1.647 2.003 0 1.39 1.19 2.344 2.953 2.344 1.77 0 2.989-.96 2.989-2.355Zm-4.347-3.71c0 .739.586 1.255 1.383 1.255s1.377-.516 1.377-1.254c0-.733-.58-1.23-1.377-1.23s-1.383.497-1.383 1.23Zm-.281 3.645c0 .838.72 1.412 1.664 1.412.943 0 1.658-.574 1.658-1.412 0-.843-.715-1.424-1.658-1.424-.944 0-1.664.58-1.664 1.424"/>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 686 B |
@@ -0,0 +1,3 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-8-circle" viewBox="0 0 16 16">
|
||||
<path d="M1 8a7 7 0 1 0 14 0A7 7 0 0 0 1 8m15 0A8 8 0 1 1 0 8a8 8 0 0 1 16 0m-5.03 1.803c0 1.394-1.218 2.355-2.988 2.355-1.763 0-2.953-.955-2.953-2.344 0-1.271.95-1.851 1.647-2.003v-.065c-.621-.193-1.33-.738-1.33-1.781 0-1.225 1.09-2.121 2.66-2.121s2.654.896 2.654 2.12c0 1.061-.738 1.595-1.336 1.782v.065c.703.152 1.647.744 1.647 1.992Zm-4.347-3.71c0 .739.586 1.255 1.383 1.255s1.377-.516 1.377-1.254c0-.733-.58-1.23-1.377-1.23s-1.383.497-1.383 1.23Zm-.281 3.645c0 .838.72 1.412 1.664 1.412.943 0 1.658-.574 1.658-1.412 0-.843-.715-1.424-1.658-1.424-.944 0-1.664.58-1.664 1.424"/>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 717 B |
@@ -0,0 +1,4 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-8-square-fill" viewBox="0 0 16 16">
|
||||
<path d="M6.623 6.094c0 .738.586 1.254 1.383 1.254s1.377-.516 1.377-1.254c0-.733-.58-1.23-1.377-1.23s-1.383.497-1.383 1.23m-.281 3.644c0 .838.72 1.412 1.664 1.412.943 0 1.658-.574 1.658-1.412 0-.843-.715-1.424-1.658-1.424-.944 0-1.664.58-1.664 1.424"/>
|
||||
<path d="M2 0a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V2a2 2 0 0 0-2-2zm8.97 9.803c0 1.394-1.218 2.355-2.988 2.355-1.763 0-2.953-.955-2.953-2.344 0-1.271.95-1.851 1.647-2.003v-.065c-.621-.193-1.33-.738-1.33-1.781 0-1.225 1.09-2.121 2.66-2.121s2.654.896 2.654 2.12c0 1.061-.738 1.595-1.336 1.782v.065c.703.152 1.647.744 1.647 1.992Z"/>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 737 B |
@@ -0,0 +1,4 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-8-square" viewBox="0 0 16 16">
|
||||
<path d="M10.97 9.803c0 1.394-1.218 2.355-2.988 2.355-1.763 0-2.953-.955-2.953-2.344 0-1.271.95-1.851 1.647-2.003v-.065c-.621-.193-1.33-.738-1.33-1.781 0-1.225 1.09-2.121 2.66-2.121s2.654.896 2.654 2.12c0 1.061-.738 1.595-1.336 1.782v.065c.703.152 1.647.744 1.647 1.992Zm-4.347-3.71c0 .739.586 1.255 1.383 1.255s1.377-.516 1.377-1.254c0-.733-.58-1.23-1.377-1.23s-1.383.497-1.383 1.23Zm-.281 3.645c0 .838.72 1.412 1.664 1.412.943 0 1.658-.574 1.658-1.412 0-.843-.715-1.424-1.658-1.424-.944 0-1.664.58-1.664 1.424"/>
|
||||
<path d="M0 2a2 2 0 0 1 2-2h12a2 2 0 0 1 2 2v12a2 2 0 0 1-2 2H2a2 2 0 0 1-2-2zm15 0a1 1 0 0 0-1-1H2a1 1 0 0 0-1 1v12a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1z"/>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 804 B |