diff --git a/Test.UI/Components/App.razor b/Test.UI/Components/App.razor index aa59efd..09a4c7c 100644 --- a/Test.UI/Components/App.razor +++ b/Test.UI/Components/App.razor @@ -8,6 +8,7 @@ + diff --git a/Test.UI/Components/Pages/TestComponent.razor b/Test.UI/Components/Pages/TestComponent.razor index c133321..329e019 100644 --- a/Test.UI/Components/Pages/TestComponent.razor +++ b/Test.UI/Components/Pages/TestComponent.razor @@ -6,7 +6,8 @@ + EC_OnSelectedTemplate="SetTemplate" + LiveSVG="@currSvg"> diff --git a/Test.UI/Test.UI.csproj b/Test.UI/Test.UI.csproj index 411163c..571dcf6 100644 --- a/Test.UI/Test.UI.csproj +++ b/Test.UI/Test.UI.csproj @@ -7,10 +7,12 @@ + + Always diff --git a/Test.UI/compilerconfig.json b/Test.UI/compilerconfig.json new file mode 100644 index 0000000..42a9e0b --- /dev/null +++ b/Test.UI/compilerconfig.json @@ -0,0 +1,6 @@ +[ + { + "outputFile": "wwwroot/css/site.css", + "inputFile": "wwwroot/css/site.less" + } +] \ No newline at end of file diff --git a/Test.UI/compilerconfig.json.defaults b/Test.UI/compilerconfig.json.defaults new file mode 100644 index 0000000..a5a10c0 --- /dev/null +++ b/Test.UI/compilerconfig.json.defaults @@ -0,0 +1,59 @@ +{ + "compilers": { + "less": { + "autoPrefix": "", + "cssComb": "none", + "ieCompat": true, + "math": null, + "strictMath": false, + "strictUnits": false, + "relativeUrls": true, + "rootPath": "", + "sourceMapRoot": "", + "sourceMapBasePath": "", + "sourceMap": false + }, + "sass": { + "autoPrefix": "", + "loadPaths": "", + "style": "expanded", + "relativeUrls": true, + "sourceMap": false + }, + "stylus": { + "sourceMap": false + }, + "babel": { + "sourceMap": false + }, + "coffeescript": { + "bare": false, + "runtimeMode": "node", + "sourceMap": false + }, + "handlebars": { + "root": "", + "noBOM": false, + "name": "", + "namespace": "", + "knownHelpersOnly": false, + "forcePartial": false, + "knownHelpers": [], + "commonjs": "", + "amd": false, + "sourceMap": false + } + }, + "minifiers": { + "css": { + "enabled": true, + "termSemicolons": true, + "gzip": false + }, + "javascript": { + "enabled": true, + "termSemicolons": true, + "gzip": false + } + } +} \ No newline at end of file diff --git a/Test.UI/wwwroot/css/site.css b/Test.UI/wwwroot/css/site.css new file mode 100644 index 0000000..35046ac --- /dev/null +++ b/Test.UI/wwwroot/css/site.css @@ -0,0 +1,451 @@ +h1, +h2, +h3, +h4, +h5, +h6, +b, +display-1, +display-2, +display-3, +display-4 { + /*font-family: 'Roboto', sans-serif;*/ + font-family: 'Lato', sans-serif; +} +html, +body { + /*font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif;*/ + /*font-family: 'Roboto Condensed', sans-serif;*/ + font-family: 'Roboto', sans-serif; + line-height: 1.3; +} +h1:focus { + outline: none; +} +a, +.btn-link { + color: #0071c1; +} +.btn-primary { + color: #fff; + background-color: #1b6ec2; + border-color: #1861ac; +} +.content { + padding-top: 1.1rem; +} +.valid.modified:not([type=checkbox]) { + outline: 1px solid #26b050; +} +.invalid { + outline: 1px solid red; +} +.validation-message { + color: red; +} +.regionnotclicked { + fill: white; +} +.regionclicked { + fill: red; +} +.striked { + text-decoration: line-through; +} +/* Gestione dropdown menu x week planner */ +.dropdown { + position: relative; + display: inline-block; +} +.dropdown:hover .dropdown-content, +.dropdown:hover .dropdown-content-top, +.dropdown:hover .dropdown-content-left, +.dropdown:hover .dropdown-content-top-left { + display: block; +} +.dropdown-content { + display: none; + position: absolute; + left: -10em; + min-width: 8em; + box-shadow: 0px 8px 16px 0px rgba(0, 0, 0, 0.2); + z-index: 1; +} +.dropdown-content .a { + color: black; + padding: 12px 16px; + text-decoration: none; + display: block; +} +.dropdown-content .a:hover { + background-color: #ddd; +} +.dropdown-content-top { + display: none; + position: absolute; + min-width: 8em; + box-shadow: 0px 8px 16px 0px rgba(0, 0, 0, 0.2); + z-index: 1; + top: -13em; + left: -10em; +} +.dropdown-content-top .a { + color: black; + padding: 12px 16px; + text-decoration: none; + display: block; +} +.dropdown-content-top .a:hover { + background-color: #ddd; +} +.dropdown-content-left { + display: none; + position: absolute; + left: -10em; + min-width: 8em; + box-shadow: 0px 8px 16px 0px rgba(0, 0, 0, 0.2); + z-index: 1; + left: -24em; +} +.dropdown-content-left .a { + color: black; + padding: 12px 16px; + text-decoration: none; + display: block; +} +.dropdown-content-left .a:hover { + background-color: #ddd; +} +.dropdown-content-top-left { + display: none; + position: absolute; + left: -10em; + min-width: 8em; + box-shadow: 0px 8px 16px 0px rgba(0, 0, 0, 0.2); + z-index: 1; + top: -13em; + left: -24em; +} +.dropdown-content-top-left .a { + color: black; + padding: 12px 16px; + text-decoration: none; + display: block; +} +.dropdown-content-top-left .a:hover { + background-color: #ddd; +} +.textTrim { + white-space: nowrap; + overflow: hidden; + text-overflow: ellipsis; +} +.maxChar { + white-space: nowrap; + overflow: hidden; + text-overflow: ellipsis; +} +.max5Char { + white-space: nowrap; + overflow: hidden; + text-overflow: ellipsis; + width: 5rem; +} +.max10Char { + white-space: nowrap; + overflow: hidden; + text-overflow: ellipsis; + width: 10rem; +} +.max20Char { + white-space: nowrap; + overflow: hidden; + text-overflow: ellipsis; + width: 20rem; +} +.max30Char { + white-space: nowrap; + overflow: hidden; + text-overflow: ellipsis; + width: 30rem; +} +.max40Char { + white-space: nowrap; + overflow: hidden; + text-overflow: ellipsis; + width: 40rem; +} +.max50Char { + white-space: nowrap; + overflow: hidden; + text-overflow: ellipsis; + width: 50rem; +} +.max100Char { + white-space: nowrap; + overflow: hidden; + text-overflow: ellipsis; + width: 100rem; +} +.footer { + line-height: 1.8em; +} +#blazor-error-ui { + background: lightyellow; + bottom: 0; + box-shadow: 0 -1px 2px rgba(0, 0, 0, 0.2); + display: none; + left: 0; + padding: 0.6rem 1.25rem 0.7rem 1.25rem; + position: fixed; + width: 100%; + z-index: 1000; +} +#blazor-error-ui .dismiss { + cursor: pointer; + position: absolute; + right: 0.75rem; + top: 0.5rem; +} +.blazor-error-boundary { + background: url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNTYiIGhlaWdodD0iNDkiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIG92ZXJmbG93PSJoaWRkZW4iPjxkZWZzPjxjbGlwUGF0aCBpZD0iY2xpcDAiPjxyZWN0IHg9IjIzNSIgeT0iNTEiIHdpZHRoPSI1NiIgaGVpZ2h0PSI0OSIvPjwvY2xpcFBhdGg+PC9kZWZzPjxnIGNsaXAtcGF0aD0idXJsKCNjbGlwMCkiIHRyYW5zZm9ybT0idHJhbnNsYXRlKC0yMzUgLTUxKSI+PHBhdGggZD0iTTI2My41MDYgNTFDMjY0LjcxNyA1MSAyNjUuODEzIDUxLjQ4MzcgMjY2LjYwNiA1Mi4yNjU4TDI2Ny4wNTIgNTIuNzk4NyAyNjcuNTM5IDUzLjYyODMgMjkwLjE4NSA5Mi4xODMxIDI5MC41NDUgOTIuNzk1IDI5MC42NTYgOTIuOTk2QzI5MC44NzcgOTMuNTEzIDI5MSA5NC4wODE1IDI5MSA5NC42NzgyIDI5MSA5Ny4wNjUxIDI4OS4wMzggOTkgMjg2LjYxNyA5OUwyNDAuMzgzIDk5QzIzNy45NjMgOTkgMjM2IDk3LjA2NTEgMjM2IDk0LjY3ODIgMjM2IDk0LjM3OTkgMjM2LjAzMSA5NC4wODg2IDIzNi4wODkgOTMuODA3MkwyMzYuMzM4IDkzLjAxNjIgMjM2Ljg1OCA5Mi4xMzE0IDI1OS40NzMgNTMuNjI5NCAyNTkuOTYxIDUyLjc5ODUgMjYwLjQwNyA1Mi4yNjU4QzI2MS4yIDUxLjQ4MzcgMjYyLjI5NiA1MSAyNjMuNTA2IDUxWk0yNjMuNTg2IDY2LjAxODNDMjYwLjczNyA2Ni4wMTgzIDI1OS4zMTMgNjcuMTI0NSAyNTkuMzEzIDY5LjMzNyAyNTkuMzEzIDY5LjYxMDIgMjU5LjMzMiA2OS44NjA4IDI1OS4zNzEgNzAuMDg4N0wyNjEuNzk1IDg0LjAxNjEgMjY1LjM4IDg0LjAxNjEgMjY3LjgyMSA2OS43NDc1QzI2Ny44NiA2OS43MzA5IDI2Ny44NzkgNjkuNTg3NyAyNjcuODc5IDY5LjMxNzkgMjY3Ljg3OSA2Ny4xMTgyIDI2Ni40NDggNjYuMDE4MyAyNjMuNTg2IDY2LjAxODNaTTI2My41NzYgODYuMDU0N0MyNjEuMDQ5IDg2LjA1NDcgMjU5Ljc4NiA4Ny4zMDA1IDI1OS43ODYgODkuNzkyMSAyNTkuNzg2IDkyLjI4MzcgMjYxLjA0OSA5My41Mjk1IDI2My41NzYgOTMuNTI5NSAyNjYuMTE2IDkzLjUyOTUgMjY3LjM4NyA5Mi4yODM3IDI2Ny4zODcgODkuNzkyMSAyNjcuMzg3IDg3LjMwMDUgMjY2LjExNiA4Ni4wNTQ3IDI2My41NzYgODYuMDU0N1oiIGZpbGw9IiNGRkU1MDAiIGZpbGwtcnVsZT0iZXZlbm9kZCIvPjwvZz48L3N2Zz4=) no-repeat 1rem/1.8rem, #b32121; + padding: 1rem 1rem 1rem 3.7rem; + color: white; +} +.blazor-error-boundary::after { + content: "An error has occurred."; +} +/* gestione SVG responsive */ +.table-svg { + min-height: 60rem; + display: block; +} +.responsive-svg { + /* SVG scala a fit del container */ + width: 100%; + /* Altezza massima in rem (caratteri) */ + height: 60rem; + /* Removes extra space below SVG */ + display: block; +} +/*------------------------------------------------------------------ +[ Shortcuts / .shortcuts ] +*/ +.shortcuts { + text-align: center; +} +.shortcuts .shortcut-icon { + font-size: 2rem; +} +.shortcuts .shortcut { + min-width: 10rem; + min-height: 5rem; + display: inline-block; + padding: 2rem/3 0; + margin: 0 2px 1em; + vertical-align: top; + text-decoration: none; + background: #F3F3F3; + background-image: -webkit-gradient(linear, left 0%, left 100%, from(#ffffff), to(#eeeeee)); + background-image: -webkit-linear-gradient(top, #ffffff, 0%, #eeeeee, 100%); + background-image: -moz-linear-gradient(top, #ffffff 0%, #eeeeee 100%); + background-image: linear-gradient(to bottom, #ffffff 0%, #eeeeee 100%); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff', endColorstr='#ffeeeeee', GradientType=0); + border: 1px solid #ddd; + box-sizing: border-box; + border-radius: 1rem/2; +} +.shortcuts .shortcut-sm { + min-width: 4.5rem; + min-height: 3rem; + display: inline-block; + padding: 1rem/4 0; + margin: 0 2px 1em; + vertical-align: top; + text-decoration: none; + background: #F3F3F3; + background-image: -webkit-gradient(linear, left 0%, left 100%, from(#ffffff), to(#eeeeee)); + background-image: -webkit-linear-gradient(top, #ffffff, 0%, #eeeeee, 100%); + background-image: -moz-linear-gradient(top, #ffffff 0%, #eeeeee 100%); + background-image: linear-gradient(to bottom, #ffffff 0%, #eeeeee 100%); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff', endColorstr='#ffeeeeee', GradientType=0); + border: 1px solid #ddd; + box-sizing: border-box; + border-radius: 1rem/2; +} +.shortcuts .shortcut .shortcut-icon { + width: 100%; + margin-top: 0; + margin-bottom: 0; + font-size: 2rem; + color: #333; +} +.shortcuts .shortcut-sm .shortcut-icon { + width: 100%; + margin-top: 0; + margin-bottom: 0; + font-size: 2rem; + color: #333; +} +.shortcuts .shortcut:hover { + background: #E8E8E8; + background-image: -webkit-gradient(linear, left 0%, left 100%, from(#fafafa), to(#e1e1e1)); + background-image: -webkit-linear-gradient(top, #fafafa, 0%, #e1e1e1, 100%); + background-image: -moz-linear-gradient(top, #fafafa 0%, #e1e1e1 100%); + background-image: linear-gradient(to bottom, #fafafa 0%, #e1e1e1 100%); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffafafa', endColorstr='#ffe1e1e1', GradientType=0); +} +.shortcuts .shortcut-sm:hover { + background: #E8E8E8; + background-image: -webkit-gradient(linear, left 0%, left 100%, from(#fafafa), to(#e1e1e1)); + background-image: -webkit-linear-gradient(top, #fafafa, 0%, #e1e1e1, 100%); + background-image: -moz-linear-gradient(top, #fafafa 0%, #e1e1e1 100%); + background-image: linear-gradient(to bottom, #fafafa 0%, #e1e1e1 100%); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffafafa', endColorstr='#ffe1e1e1', GradientType=0); +} +.shortcuts .shortcut:active { + box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); +} +.shortcuts .shortcut-sm:active { + box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); +} +.shortcuts .shortcut:hover .shortcut-icon { + color: #C93; +} +.shortcuts .shortcut-sm:hover .shortcut-icon { + color: #666; +} +.shortcuts .shortcut-label { + display: block; + margin-top: 0.75em; + font-weight: 400; + color: #666; +} +.wHead { + line-height: 1; +} +@media (max-width: 640px) { + .shortcuts .shortcut { + min-width: 8rem; + min-height: 4rem; + } + body { + font-size: 0.8em; + line-height: 1.1; + } +} +@media (max-width: 1650px) { + body { + font-size: 0.9em; + line-height: 1.2; + } +} +/* gestione btn report */ +.reportPivot { + background: #EFEFEF; + background-image: url(../images/PivotData.png); + background-repeat: no-repeat; + background-position: top; + background-position: left; + min-height: 250px; + height: 100%; + width: 100%; + display: block; + position: relative; +} +.reportOre { + background: #EFEFEF; + background-image: url(../images/ReportGerarchico.png); + background-repeat: no-repeat; + background-position: top; + background-position: left; + min-height: 250px; + height: 100%; + width: 100%; + display: block; + position: relative; +} +.reportFolders { + background: #EFEFEF; + background-image: url(../images/ReportFolders.png); + background-repeat: no-repeat; + background-position: top; + background-position: left; + min-height: 250px; + height: 100%; + width: 100%; + display: block; + position: relative; +} +.reportBadge { + background: #EFEFEF; + background-image: url(../images/Barcode.png); + background-repeat: no-repeat; + background-position: top; + background-position: left; + min-height: 250px; + height: 100%; + width: 100%; + display: block; + position: relative; +} +/* Text position */ +.areaTesto { + white-space: normal; + overflow: visible; + position: absolute; + left: 0; + right: 0; + bottom: 50%; + bottom: 0; + margin: 0; + padding: 0 20px; + min-height: 25%; + line-height: 1.5; + color: White; + background: #333; + background: rgba(50, 50, 50, 0.9); + -webkit-background-clip: padding; + background-clip: padding-box; + border-bottom-left-radius: inherit; + border-bottom-right-radius: inherit; +} +/* versioni small */ +.areaTestoSmall { + white-space: normal; + overflow: visible; + position: absolute; + left: 0; + right: 0; + bottom: 50%; + bottom: 0; + margin: 0; + padding: 0 3px; + min-height: 50%; + line-height: 1.5; + font-size: 7pt; + color: White; + background: #999; + background: rgba(160, 160, 160, 0.9); + -webkit-background-clip: padding; + background-clip: padding-box; + border-bottom-left-radius: inherit; + border-bottom-right-radius: inherit; +} +.reportFoldersSmall { + background: #EFEFEF; + background-image: url(../images/ReportGerarchico.png); + background-repeat: no-repeat; + background-position: left top; + background-size: 60px 60px; + min-height: 36px; + height: 100%; + width: 100%; + max-width: 100%; + display: block; + position: relative; +} \ No newline at end of file diff --git a/Test.UI/wwwroot/css/site.less b/Test.UI/wwwroot/css/site.less new file mode 100644 index 0000000..cb6ca47 --- /dev/null +++ b/Test.UI/wwwroot/css/site.less @@ -0,0 +1,460 @@ + +h1, h2, h3, h4, h5, h6, b, display-1, display-2, display-3, display-4 { + /*font-family: 'Roboto', sans-serif;*/ + font-family: 'Lato', sans-serif; +} + +html, body { + /*font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif;*/ + /*font-family: 'Roboto Condensed', sans-serif;*/ + font-family: 'Roboto', sans-serif; + line-height: 1.3; +} + + + +h1:focus { + outline: none; +} + +a, .btn-link { + color: #0071c1; +} + +.btn-primary { + color: #fff; + background-color: #1b6ec2; + border-color: #1861ac; +} + +.content { + padding-top: 1.1rem; +} + +.valid.modified:not([type=checkbox]) { + outline: 1px solid #26b050; +} + +.invalid { + outline: 1px solid red; +} + +.validation-message { + color: red; +} + +.regionnotclicked { + fill: white; +} + +.regionclicked { + fill: red; +} + +.striked { + text-decoration: line-through; +} + + +/* Gestione dropdown menu x week planner */ + +@dropTop: -13.0em; +@dropLeftL: -10em; +@dropLeftR: -24em; + +.dropdown { + position: relative; + display: inline-block; + + &:hover .dropdown-content, &:hover .dropdown-content-top, &:hover .dropdown-content-left, &:hover .dropdown-content-top-left { + display: block; + } +} + +.dropdown-content { + display: none; + position: absolute; + left: @dropLeftL; + min-width: 8em; + box-shadow: 0px 8px 16px 0px rgba(0,0,0,0.2); + z-index: 1; + + .a { + color: black; + padding: 12px 16px; + text-decoration: none; + display: block; + } + + .a:hover { + background-color: #ddd; + } +} + + +.dropdown-content-top { + .dropdown-content(); + top: @dropTop; + left: @dropLeftL; +} + +.dropdown-content-left { + .dropdown-content(); + left: @dropLeftR; +} + +.dropdown-content-top-left { + .dropdown-content(); + top: @dropTop; + left: @dropLeftR; +} + + +.textTrim { + white-space: nowrap; + overflow: hidden; + text-overflow: ellipsis; +} + + +.maxChar { + white-space: nowrap; + overflow: hidden; + text-overflow: ellipsis; +} + +.max5Char { + .maxChar; + width: 5rem; +} + +.max10Char { + .maxChar; + width: 10rem; +} + +.max20Char { + .maxChar; + width: 20rem; +} + +.max30Char { + .maxChar; + width: 30rem; +} + +.max40Char { + .maxChar; + width: 40rem; +} + +.max50Char { + .maxChar; + width: 50rem; +} + + +.max100Char { + .maxChar; + width: 100rem; +} + +.footer { + line-height: 1.8em; +} + +#blazor-error-ui { + background: lightyellow; + bottom: 0; + box-shadow: 0 -1px 2px rgba(0, 0, 0, 0.2); + display: none; + left: 0; + padding: 0.6rem 1.25rem 0.7rem 1.25rem; + position: fixed; + width: 100%; + z-index: 1000; +} + +#blazor-error-ui .dismiss { + cursor: pointer; + position: absolute; + right: 0.75rem; + top: 0.5rem; +} + +.blazor-error-boundary { + background: url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNTYiIGhlaWdodD0iNDkiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIG92ZXJmbG93PSJoaWRkZW4iPjxkZWZzPjxjbGlwUGF0aCBpZD0iY2xpcDAiPjxyZWN0IHg9IjIzNSIgeT0iNTEiIHdpZHRoPSI1NiIgaGVpZ2h0PSI0OSIvPjwvY2xpcFBhdGg+PC9kZWZzPjxnIGNsaXAtcGF0aD0idXJsKCNjbGlwMCkiIHRyYW5zZm9ybT0idHJhbnNsYXRlKC0yMzUgLTUxKSI+PHBhdGggZD0iTTI2My41MDYgNTFDMjY0LjcxNyA1MSAyNjUuODEzIDUxLjQ4MzcgMjY2LjYwNiA1Mi4yNjU4TDI2Ny4wNTIgNTIuNzk4NyAyNjcuNTM5IDUzLjYyODMgMjkwLjE4NSA5Mi4xODMxIDI5MC41NDUgOTIuNzk1IDI5MC42NTYgOTIuOTk2QzI5MC44NzcgOTMuNTEzIDI5MSA5NC4wODE1IDI5MSA5NC42NzgyIDI5MSA5Ny4wNjUxIDI4OS4wMzggOTkgMjg2LjYxNyA5OUwyNDAuMzgzIDk5QzIzNy45NjMgOTkgMjM2IDk3LjA2NTEgMjM2IDk0LjY3ODIgMjM2IDk0LjM3OTkgMjM2LjAzMSA5NC4wODg2IDIzNi4wODkgOTMuODA3MkwyMzYuMzM4IDkzLjAxNjIgMjM2Ljg1OCA5Mi4xMzE0IDI1OS40NzMgNTMuNjI5NCAyNTkuOTYxIDUyLjc5ODUgMjYwLjQwNyA1Mi4yNjU4QzI2MS4yIDUxLjQ4MzcgMjYyLjI5NiA1MSAyNjMuNTA2IDUxWk0yNjMuNTg2IDY2LjAxODNDMjYwLjczNyA2Ni4wMTgzIDI1OS4zMTMgNjcuMTI0NSAyNTkuMzEzIDY5LjMzNyAyNTkuMzEzIDY5LjYxMDIgMjU5LjMzMiA2OS44NjA4IDI1OS4zNzEgNzAuMDg4N0wyNjEuNzk1IDg0LjAxNjEgMjY1LjM4IDg0LjAxNjEgMjY3LjgyMSA2OS43NDc1QzI2Ny44NiA2OS43MzA5IDI2Ny44NzkgNjkuNTg3NyAyNjcuODc5IDY5LjMxNzkgMjY3Ljg3OSA2Ny4xMTgyIDI2Ni40NDggNjYuMDE4MyAyNjMuNTg2IDY2LjAxODNaTTI2My41NzYgODYuMDU0N0MyNjEuMDQ5IDg2LjA1NDcgMjU5Ljc4NiA4Ny4zMDA1IDI1OS43ODYgODkuNzkyMSAyNTkuNzg2IDkyLjI4MzcgMjYxLjA0OSA5My41Mjk1IDI2My41NzYgOTMuNTI5NSAyNjYuMTE2IDkzLjUyOTUgMjY3LjM4NyA5Mi4yODM3IDI2Ny4zODcgODkuNzkyMSAyNjcuMzg3IDg3LjMwMDUgMjY2LjExNiA4Ni4wNTQ3IDI2My41NzYgODYuMDU0N1oiIGZpbGw9IiNGRkU1MDAiIGZpbGwtcnVsZT0iZXZlbm9kZCIvPjwvZz48L3N2Zz4=) no-repeat 1rem/1.8rem, #b32121; + padding: 1rem 1rem 1rem 3.7rem; + color: white; +} + +.blazor-error-boundary::after { + content: "An error has occurred." +} + + + + +/* gestione SVG responsive */ +.table-svg { + min-height: 60rem; + display: block; +} +.responsive-svg { + /* SVG scala a fit del container */ + width: 100%; + /* Altezza massima in rem (caratteri) */ + height: 60rem; + /* Removes extra space below SVG */ + display: block; +} + +/*------------------------------------------------------------------ +[ Shortcuts / .shortcuts ] +*/ + +@blSCut: 1rem; + +.shortcuts { + text-align: center; +} + +.shortcuts .shortcut-icon { + font-size: 2*@blSCut; +} + +.shortcuts .shortcut { + min-width: @blSCut * 10; + min-height: @blSCut * 5; + display: inline-block; + padding: @blSCut*2/3 0; + margin: 0 2px 1em; + vertical-align: top; + text-decoration: none; + background: #F3F3F3; + background-image: -webkit-gradient(linear, left 0%, left 100%, from(#ffffff), to(#eeeeee)); + background-image: -webkit-linear-gradient(top, #ffffff, 0%, #eeeeee, 100%); + background-image: -moz-linear-gradient(top, #ffffff 0%, #eeeeee 100%); + background-image: linear-gradient(to bottom, #ffffff 0%, #eeeeee 100%); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff', endColorstr='#ffeeeeee', GradientType=0); + border: 1px solid #ddd; + box-sizing: border-box; + border-radius: @blSCut/2; +} + +.shortcuts .shortcut-sm { + min-width: @blSCut * 4.5; + min-height: @blSCut * 3; + display: inline-block; + padding: @blSCut/4 0; + margin: 0 2px 1em; + vertical-align: top; + text-decoration: none; + background: #F3F3F3; + background-image: -webkit-gradient(linear, left 0%, left 100%, from(#ffffff), to(#eeeeee)); + background-image: -webkit-linear-gradient(top, #ffffff, 0%, #eeeeee, 100%); + background-image: -moz-linear-gradient(top, #ffffff 0%, #eeeeee 100%); + background-image: linear-gradient(to bottom, #ffffff 0%, #eeeeee 100%); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff', endColorstr='#ffeeeeee', GradientType=0); + border: 1px solid #ddd; + box-sizing: border-box; + border-radius: @blSCut/2; +} + +.shortcuts .shortcut .shortcut-icon { + width: 100%; + margin-top: 0; + margin-bottom: 0; + font-size: @blSCut*2; + color: #333; +} + +.shortcuts .shortcut-sm .shortcut-icon { + width: 100%; + margin-top: 0; + margin-bottom: 0; + font-size: @blSCut*2; + color: #333; +} + +.shortcuts .shortcut:hover { + background: #E8E8E8; + background-image: -webkit-gradient(linear, left 0%, left 100%, from(#fafafa), to(#e1e1e1)); + background-image: -webkit-linear-gradient(top, #fafafa, 0%, #e1e1e1, 100%); + background-image: -moz-linear-gradient(top, #fafafa 0%, #e1e1e1 100%); + background-image: linear-gradient(to bottom, #fafafa 0%, #e1e1e1 100%); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffafafa', endColorstr='#ffe1e1e1', GradientType=0); +} + +.shortcuts .shortcut-sm:hover { + background: #E8E8E8; + background-image: -webkit-gradient(linear, left 0%, left 100%, from(#fafafa), to(#e1e1e1)); + background-image: -webkit-linear-gradient(top, #fafafa, 0%, #e1e1e1, 100%); + background-image: -moz-linear-gradient(top, #fafafa 0%, #e1e1e1 100%); + background-image: linear-gradient(to bottom, #fafafa 0%, #e1e1e1 100%); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffafafa', endColorstr='#ffe1e1e1', GradientType=0); +} + +.shortcuts .shortcut:active { + box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); +} + +.shortcuts .shortcut-sm:active { + box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); +} + +.shortcuts .shortcut:hover .shortcut-icon { + color: #C93; +} + +.shortcuts .shortcut-sm:hover .shortcut-icon { + color: #666; +} + +.shortcuts .shortcut-label { + display: block; + margin-top: .75em; + font-weight: 400; + color: #666; +} + +.wHead { + line-height: 1; +} + +@media (max-width: 640px) { + .shortcuts .shortcut { + min-width: @blSCut * 8; + min-height: @blSCut * 4; + } + + body { + font-size: 0.8em; + line-height: 1.1; + } +} + +@media (max-width: 1650px) { + + body { + font-size: 0.9em; + line-height: 1.2; + } +} + + +/* gestione btn report */ +.reportPivot { + background: #EFEFEF; + background-image: url(../images/PivotData.png); + background-repeat: no-repeat; + background-position: top; + background-position: left; + min-height: 250px; + height: 100%; + width: 100%; + display: block; + position: relative; +} + +.reportOre { + background: #EFEFEF; + background-image: url(../images/ReportGerarchico.png); + background-repeat: no-repeat; + background-position: top; + background-position: left; + min-height: 250px; + height: 100%; + width: 100%; + display: block; + position: relative; +} + +.reportFolders { + background: #EFEFEF; + background-image: url(../images/ReportFolders.png); + background-repeat: no-repeat; + background-position: top; + background-position: left; + min-height: 250px; + height: 100%; + width: 100%; + display: block; + position: relative; +} + +.reportBadge { + background: #EFEFEF; + background-image: url(../images/Barcode.png); + background-repeat: no-repeat; + background-position: top; + background-position: left; + min-height: 250px; + height: 100%; + width: 100%; + display: block; + position: relative; +} + +/* Text position */ +.areaTesto { + white-space: normal; + overflow: visible; + position: absolute; + left: 0; + right: 0; + bottom: 50%; + bottom: 0; + margin: 0; + padding: 0 20px; + min-height: 25%; + line-height: 1.5; + color: White; + background: #333; + background: rgba(50,50,50,.9); + -webkit-background-clip: padding; + background-clip: padding-box; + border-bottom-left-radius: inherit; + border-bottom-right-radius: inherit; +} + +/* versioni small */ +.areaTestoSmall { + white-space: normal; + overflow: visible; + position: absolute; + left: 0; + right: 0; + bottom: 50%; + bottom: 0; + margin: 0; + padding: 0 3px; + min-height: 50%; + line-height: 1.5; + font-size: 7pt; + color: White; + background: #999; + background: rgba(160,160,160,.9); + -webkit-background-clip: padding; + background-clip: padding-box; + border-bottom-left-radius: inherit; + border-bottom-right-radius: inherit; +} + +.reportFoldersSmall { + background: #EFEFEF; + background-image: url(../images/ReportGerarchico.png); + background-repeat: no-repeat; + background-position: left top; + background-size: 60px 60px; + min-height: 36px; + height: 100%; + width: 100%; + max-width: 100%; + display: block; + position: relative; +} diff --git a/Test.UI/wwwroot/css/site.min.css b/Test.UI/wwwroot/css/site.min.css new file mode 100644 index 0000000..56721d0 --- /dev/null +++ b/Test.UI/wwwroot/css/site.min.css @@ -0,0 +1 @@ +h1,h2,h3,h4,h5,h6,b,display-1,display-2,display-3,display-4{font-family:'Lato',sans-serif;}html,body{font-family:'Roboto',sans-serif;line-height:1.3;}h1:focus{outline:0;}a,.btn-link{color:#0071c1;}.btn-primary{color:#fff;background-color:#1b6ec2;border-color:#1861ac;}.content{padding-top:1.1rem;}.valid.modified:not([type=checkbox]){outline:1px solid #26b050;}.invalid{outline:1px solid #f00;}.validation-message{color:#f00;}.regionnotclicked{fill:white;}.regionclicked{fill:red;}.striked{text-decoration:line-through;}.dropdown{position:relative;display:inline-block;}.dropdown:hover .dropdown-content,.dropdown:hover .dropdown-content-top,.dropdown:hover .dropdown-content-left,.dropdown:hover .dropdown-content-top-left{display:block;}.dropdown-content{display:none;position:absolute;left:-10em;min-width:8em;box-shadow:0 8px 16px 0 rgba(0,0,0,.2);z-index:1;}.dropdown-content .a{color:#000;padding:12px 16px;text-decoration:none;display:block;}.dropdown-content .a:hover{background-color:#ddd;}.dropdown-content-top{display:none;position:absolute;min-width:8em;box-shadow:0 8px 16px 0 rgba(0,0,0,.2);z-index:1;top:-13em;left:-10em;}.dropdown-content-top .a{color:#000;padding:12px 16px;text-decoration:none;display:block;}.dropdown-content-top .a:hover{background-color:#ddd;}.dropdown-content-left{display:none;position:absolute;left:-10em;min-width:8em;box-shadow:0 8px 16px 0 rgba(0,0,0,.2);z-index:1;left:-24em;}.dropdown-content-left .a{color:#000;padding:12px 16px;text-decoration:none;display:block;}.dropdown-content-left .a:hover{background-color:#ddd;}.dropdown-content-top-left{display:none;position:absolute;left:-10em;min-width:8em;box-shadow:0 8px 16px 0 rgba(0,0,0,.2);z-index:1;top:-13em;left:-24em;}.dropdown-content-top-left .a{color:#000;padding:12px 16px;text-decoration:none;display:block;}.dropdown-content-top-left .a:hover{background-color:#ddd;}.textTrim{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}.maxChar{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}.max5Char{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;width:5rem;}.max10Char{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;width:10rem;}.max20Char{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;width:20rem;}.max30Char{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;width:30rem;}.max40Char{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;width:40rem;}.max50Char{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;width:50rem;}.max100Char{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;width:100rem;}.footer{line-height:1.8em;}#blazor-error-ui{background:#ffffe0;bottom:0;box-shadow:0 -1px 2px rgba(0,0,0,.2);display:none;left:0;padding:.6rem 1.25rem .7rem 1.25rem;position:fixed;width:100%;z-index:1000;}#blazor-error-ui .dismiss{cursor:pointer;position:absolute;right:.75rem;top:.5rem;}.blazor-error-boundary{background:url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNTYiIGhlaWdodD0iNDkiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIG92ZXJmbG93PSJoaWRkZW4iPjxkZWZzPjxjbGlwUGF0aCBpZD0iY2xpcDAiPjxyZWN0IHg9IjIzNSIgeT0iNTEiIHdpZHRoPSI1NiIgaGVpZ2h0PSI0OSIvPjwvY2xpcFBhdGg+PC9kZWZzPjxnIGNsaXAtcGF0aD0idXJsKCNjbGlwMCkiIHRyYW5zZm9ybT0idHJhbnNsYXRlKC0yMzUgLTUxKSI+PHBhdGggZD0iTTI2My41MDYgNTFDMjY0LjcxNyA1MSAyNjUuODEzIDUxLjQ4MzcgMjY2LjYwNiA1Mi4yNjU4TDI2Ny4wNTIgNTIuNzk4NyAyNjcuNTM5IDUzLjYyODMgMjkwLjE4NSA5Mi4xODMxIDI5MC41NDUgOTIuNzk1IDI5MC42NTYgOTIuOTk2QzI5MC44NzcgOTMuNTEzIDI5MSA5NC4wODE1IDI5MSA5NC42NzgyIDI5MSA5Ny4wNjUxIDI4OS4wMzggOTkgMjg2LjYxNyA5OUwyNDAuMzgzIDk5QzIzNy45NjMgOTkgMjM2IDk3LjA2NTEgMjM2IDk0LjY3ODIgMjM2IDk0LjM3OTkgMjM2LjAzMSA5NC4wODg2IDIzNi4wODkgOTMuODA3MkwyMzYuMzM4IDkzLjAxNjIgMjM2Ljg1OCA5Mi4xMzE0IDI1OS40NzMgNTMuNjI5NCAyNTkuOTYxIDUyLjc5ODUgMjYwLjQwNyA1Mi4yNjU4QzI2MS4yIDUxLjQ4MzcgMjYyLjI5NiA1MSAyNjMuNTA2IDUxWk0yNjMuNTg2IDY2LjAxODNDMjYwLjczNyA2Ni4wMTgzIDI1OS4zMTMgNjcuMTI0NSAyNTkuMzEzIDY5LjMzNyAyNTkuMzEzIDY5LjYxMDIgMjU5LjMzMiA2OS44NjA4IDI1OS4zNzEgNzAuMDg4N0wyNjEuNzk1IDg0LjAxNjEgMjY1LjM4IDg0LjAxNjEgMjY3LjgyMSA2OS43NDc1QzI2Ny44NiA2OS43MzA5IDI2Ny44NzkgNjkuNTg3NyAyNjcuODc5IDY5LjMxNzkgMjY3Ljg3OSA2Ny4xMTgyIDI2Ni40NDggNjYuMDE4MyAyNjMuNTg2IDY2LjAxODNaTTI2My41NzYgODYuMDU0N0MyNjEuMDQ5IDg2LjA1NDcgMjU5Ljc4NiA4Ny4zMDA1IDI1OS43ODYgODkuNzkyMSAyNTkuNzg2IDkyLjI4MzcgMjYxLjA0OSA5My41Mjk1IDI2My41NzYgOTMuNTI5NSAyNjYuMTE2IDkzLjUyOTUgMjY3LjM4NyA5Mi4yODM3IDI2Ny4zODcgODkuNzkyMSAyNjcuMzg3IDg3LjMwMDUgMjY2LjExNiA4Ni4wNTQ3IDI2My41NzYgODYuMDU0N1oiIGZpbGw9IiNGRkU1MDAiIGZpbGwtcnVsZT0iZXZlbm9kZCIvPjwvZz48L3N2Zz4=) no-repeat 1rem/1.8rem,#b32121;padding:1rem 1rem 1rem 3.7rem;color:#fff;}.blazor-error-boundary::after{content:"An error has occurred.";}.table-svg{min-height:60rem;display:block;}.responsive-svg{width:100%;height:60rem;display:block;}.shortcuts{text-align:center;}.shortcuts .shortcut-icon{font-size:2rem;}.shortcuts .shortcut{min-width:10rem;min-height:5rem;display:inline-block;padding:2rem/3 0;margin:0 2px 1em;vertical-align:top;text-decoration:none;background:#f3f3f3;background-image:-webkit-gradient(linear,left 0%,left 100%,from(#fff),to(#eee));background-image:-webkit-linear-gradient(top,#fff,0%,#eee,100%);background-image:-moz-linear-gradient(top,#fff 0%,#eee 100%);background-image:linear-gradient(to bottom,#fff 0%,#eee 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff',endColorstr='#ffeeeeee',GradientType=0);border:1px solid #ddd;box-sizing:border-box;border-radius:1rem/2;}.shortcuts .shortcut-sm{min-width:4.5rem;min-height:3rem;display:inline-block;padding:1rem/4 0;margin:0 2px 1em;vertical-align:top;text-decoration:none;background:#f3f3f3;background-image:-webkit-gradient(linear,left 0%,left 100%,from(#fff),to(#eee));background-image:-webkit-linear-gradient(top,#fff,0%,#eee,100%);background-image:-moz-linear-gradient(top,#fff 0%,#eee 100%);background-image:linear-gradient(to bottom,#fff 0%,#eee 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff',endColorstr='#ffeeeeee',GradientType=0);border:1px solid #ddd;box-sizing:border-box;border-radius:1rem/2;}.shortcuts .shortcut .shortcut-icon{width:100%;margin-top:0;margin-bottom:0;font-size:2rem;color:#333;}.shortcuts .shortcut-sm .shortcut-icon{width:100%;margin-top:0;margin-bottom:0;font-size:2rem;color:#333;}.shortcuts .shortcut:hover{background:#e8e8e8;background-image:-webkit-gradient(linear,left 0%,left 100%,from(#fafafa),to(#e1e1e1));background-image:-webkit-linear-gradient(top,#fafafa,0%,#e1e1e1,100%);background-image:-moz-linear-gradient(top,#fafafa 0%,#e1e1e1 100%);background-image:linear-gradient(to bottom,#fafafa 0%,#e1e1e1 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffafafa',endColorstr='#ffe1e1e1',GradientType=0);}.shortcuts .shortcut-sm:hover{background:#e8e8e8;background-image:-webkit-gradient(linear,left 0%,left 100%,from(#fafafa),to(#e1e1e1));background-image:-webkit-linear-gradient(top,#fafafa,0%,#e1e1e1,100%);background-image:-moz-linear-gradient(top,#fafafa 0%,#e1e1e1 100%);background-image:linear-gradient(to bottom,#fafafa 0%,#e1e1e1 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffafafa',endColorstr='#ffe1e1e1',GradientType=0);}.shortcuts .shortcut:active{box-shadow:inset 0 3px 5px rgba(0,0,0,.125);}.shortcuts .shortcut-sm:active{box-shadow:inset 0 3px 5px rgba(0,0,0,.125);}.shortcuts .shortcut:hover .shortcut-icon{color:#c93;}.shortcuts .shortcut-sm:hover .shortcut-icon{color:#666;}.shortcuts .shortcut-label{display:block;margin-top:.75em;font-weight:400;color:#666;}.wHead{line-height:1;}@media(max-width:640px){.shortcuts .shortcut{min-width:8rem;min-height:4rem;}body{font-size:.8em;line-height:1.1;}}@media(max-width:1650px){body{font-size:.9em;line-height:1.2;}}.reportPivot{background:#efefef;background-image:url(../images/PivotData.png);background-repeat:no-repeat;background-position:top;background-position:left;min-height:250px;height:100%;width:100%;display:block;position:relative;}.reportOre{background:#efefef;background-image:url(../images/ReportGerarchico.png);background-repeat:no-repeat;background-position:top;background-position:left;min-height:250px;height:100%;width:100%;display:block;position:relative;}.reportFolders{background:#efefef;background-image:url(../images/ReportFolders.png);background-repeat:no-repeat;background-position:top;background-position:left;min-height:250px;height:100%;width:100%;display:block;position:relative;}.reportBadge{background:#efefef;background-image:url(../images/Barcode.png);background-repeat:no-repeat;background-position:top;background-position:left;min-height:250px;height:100%;width:100%;display:block;position:relative;}.areaTesto{white-space:normal;overflow:visible;position:absolute;left:0;right:0;bottom:50%;bottom:0;margin:0;padding:0 20px;min-height:25%;line-height:1.5;color:#fff;background:#333;background:rgba(50,50,50,.9);-webkit-background-clip:padding;background-clip:padding-box;border-bottom-left-radius:inherit;border-bottom-right-radius:inherit;}.areaTestoSmall{white-space:normal;overflow:visible;position:absolute;left:0;right:0;bottom:50%;bottom:0;margin:0;padding:0 3px;min-height:50%;line-height:1.5;font-size:7pt;color:#fff;background:#999;background:rgba(160,160,160,.9);-webkit-background-clip:padding;background-clip:padding-box;border-bottom-left-radius:inherit;border-bottom-right-radius:inherit;}.reportFoldersSmall{background:#efefef;background-image:url(../images/ReportGerarchico.png);background-repeat:no-repeat;background-position:left top;background-size:60px 60px;min-height:36px;height:100%;width:100%;max-width:100%;display:block;position:relative;} \ No newline at end of file diff --git a/WebWindowConfigurator/WebWindowConfigurator.csproj b/WebWindowConfigurator/WebWindowConfigurator.csproj index 4206d04..df7d59b 100644 --- a/WebWindowConfigurator/WebWindowConfigurator.csproj +++ b/WebWindowConfigurator/WebWindowConfigurator.csproj @@ -6,6 +6,14 @@ enable + + + + + + + + diff --git a/WebWindowConfigurator/WebWindowMaker.razor b/WebWindowConfigurator/WebWindowMaker.razor index 33e8f42..177cd37 100644 --- a/WebWindowConfigurator/WebWindowMaker.razor +++ b/WebWindowConfigurator/WebWindowMaker.razor @@ -1,326 +1,343 @@  -
-
- -
-
-
- @if (currStep == CompileStep.Template) - { - - - - - - - - - - @foreach (var item in IN_TemplateDTOList) +
+
+
+
+
- - - - + Template } - -
#ImageDescription
@item.Index@item.Description
- @* *@ - } - else if (currStep == CompileStep.Frame) - { -
-
-
-
-
- - -
-
-
-
Dimensioni
- @foreach (FrameDimension dimension in m_Frame.DimensionList) - { -
- @dimension.nIndex - @dimension.sName - -
- } -
-
-
-
-
Giunzioni telaio
- @foreach (Joint joint in m_Frame.JointList) - { -
- - -
- } -
-
-
-
-
Bottom rail
-
-
- -
-
- -
-
-
- Quantità - -
-
-
- @* *@ -
-
-
- @*img*@ -
-
-
- } - else if (currStep == CompileStep.Split) - { -
-
-
-
- @foreach(var item in SplitList) + else + { + Template + } + + @if (SelTemplateDTO != null) + { + + + + + @* + + + *@ + } + +
+
+
+ @if (currStep == CompileStep.Template) + { + + + + + + + + + + @foreach (var item in IN_TemplateDTOList) { -
-
-
- Numero - -
-
- - -
- @foreach (var dim in item.SplitPositionList) - { -
- Altezza area inferiore - -
- } -
-
+ string colorClass = ""; + @if (SelTemplateDTO != null && item.Index == SelTemplateDTO.Index) + colorClass = "table-success"; + else + colorClass = ""; + + + + + } - @* *@ - - -
- @*img*@ -
- - - } - else if (currStep == CompileStep.Sash) - { -
-
-
-
- @foreach (var item in SashList) - { -
+
+
#ImageDescription
@item.Index@item.Description
+ @* *@ + } + else if (currStep == CompileStep.Frame) + { +
+
+
+
- Numero - + +
-
-
-
-
Orientamento
-
- - -
-
- - -
-
-
- @foreach (SashDimension sash in item.SashList) - {
-
Apertura
-
- - -
-
- Dimensione - -
+
Dimensioni
+ @foreach (FrameDimension dimension in m_Frame.DimensionList) + { +
+ @dimension.nIndex + @dimension.sName + +
+ } +
+
+
+
+
Giunzioni telaio
+ @foreach (Joint joint in m_Frame.JointList) + { +
+ + +
+ } +
+
+
+
+
Bottom rail
- +
- + +
+
+
+ Quantità + +
+
+
+ @* *@ +
+
+
+ @*img*@ +
+
+
+ } + else if (currStep == CompileStep.Split) + { +
+
+
+
+ @foreach (var item in SplitList) + { +
+
+
+ Numero + +
+
+ + +
+ @foreach (var dim in item.SplitPositionList) + { +
+ Altezza area inferiore + +
+ } +
+
+ } + @* *@ +
+
+
+ @*img*@ +
+
+
+ } + else if (currStep == CompileStep.Sash) + { +
+
+
+
+ @foreach (var item in SashList) + { +
+
+ Numero + +
+
+
+
+
Orientamento
+
+ + +
+
+ +
-
- } -
-
-
Giunzioni ante
- @foreach (Joint joint in item.JointList) + @foreach (SashDimension sash in item.SashList) { -
- - +
+
+
Apertura
+
+ + +
+
+ Dimensione + +
+
+
+ +
+
+ +
+
+
} -
-
-
-
-
Bottom rail
-
-
- -
-
- +
+
+
Giunzioni ante
+ @foreach (Joint joint in item.JointList) + { +
+ + +
+ }
-
- Quantità - +
+
+
Bottom rail
+
+
+ +
+
+ +
+
+
+ Quantità + +
+
-
+ } + + @* *@
- } - - @* *@ +
+
+ @* img *@ +
-
- @* img *@ -
-
-
- } - else if (currStep == CompileStep.Fill) - { -
-
-
-
- @foreach (var Fill in FillList) - { -
-
-
Riempimento
-
-@* +
+
+
+ @foreach (var Fill in FillList) + { +
+
+
Riempimento
+
+ @* @@ -328,11 +345,11 @@ name="@i" @onchange="@(() => FillList[i].FillType = FillTypes.WOOD)" /> *@ +
+
-
-
- } - @*
+ } + @*
@@ -340,19 +357,27 @@
*@ - @* *@ + @* *@ +
+
+
+ @*img*@ +
-
- @*img*@ -
-
+ }
- } -
-
- - +
+
+ @if (SelTemplateDTO != null) + { +
+ @outSvg +
+ }
diff --git a/WebWindowConfigurator/WebWindowMaker.razor.cs b/WebWindowConfigurator/WebWindowMaker.razor.cs index 1c06d12..30b00a6 100644 --- a/WebWindowConfigurator/WebWindowMaker.razor.cs +++ b/WebWindowConfigurator/WebWindowMaker.razor.cs @@ -15,26 +15,32 @@ namespace WebWindowConfigurator #region Public Properties [Parameter] - public EventCallback EC_OnClose { get; set; } + public string CssSvg { get; set; } = "responsive-svg"; [Parameter] - public EventCallback EC_OnUpdate { get; set; } + public EventCallback EC_OnClose { get; set; } [Parameter] public EventCallback EC_OnSelectedTemplate { get; set; } [Parameter] - public List IN_TemplateDTOList { get; set; } = null!; + public EventCallback EC_OnUpdate { get; set; } + + public List FillList + { + get => m_FillList; + } [Parameter] public Template IN_SelTemplate { get => m_SelTemplate; - set { + set + { if (value != null && (m_SelTemplate == null || (m_SelTemplate != null && value.nIndex != m_SelTemplate.nIndex)) && !string.IsNullOrEmpty(value.JWD)) { m_SelTemplate = value; - JsonWindow WindowFromJson = JsonConvert.DeserializeObject(m_SelTemplate.JWD, new PolymorphicJsonConverter()); + JsonWindow WindowFromJson = JsonConvert.DeserializeObject(m_SelTemplate.JWD, new PolymorphicJsonConverter()) ?? new JsonWindow(""); m_CurrWindow = WindowFromJson.Deserialize(); m_FillList = new List(); m_SashList = new List(); @@ -45,98 +51,32 @@ namespace WebWindowConfigurator } } + [Parameter] + public List IN_TemplateDTOList { get; set; } = null!; - private Template m_SelTemplate { get; set; } = null!; - - public TemplateSelectDTO? SelTemplateDTO { get; set; } = null; - - public string m_SelSVG { get; set; } = ""; - - #endregion Public Properties - - #region Protected Enums - - protected enum CompileStep + [Parameter] + public string LiveSVG { - Template = 0, - Frame = 1, - Split, - Sash, - Fill + get => m_SelSVG; + set => m_SelSVG = value; } - #endregion Protected Enums - - #region Protected Properties - - private Frame m_Frame; - protected Frame Frame - { - get => m_Frame; - set => m_Frame = value; - } - - #endregion Protected Properties - - #region Protected Methods - protected override void OnInitialized() - { - //base.OnInitialized(); - //m_CurrWindow = new Window(); - //Frame NewFrame = (Frame)Frame.CreateFrame(m_CurrWindow); - //m_CurrWindow.AreaList.Add(NewFrame); - //m_SelArea = NewFrame; - //Sash NewSash = Sash.CreateSash(NewFrame); - //NewFrame.AreaList.Add(NewSash); - } - - protected async void DoSelect(TemplateSelectDTO newSel) - { - SelTemplateDTO = newSel; - await EC_OnSelectedTemplate.InvokeAsync(newSel); - } - protected async Task DoSave() - { - var CurrJwd = JsonConvert.SerializeObject(m_CurrWindow.Serialize(), Formatting.Indented); - await EC_OnUpdate.InvokeAsync(CurrJwd); - } - protected async Task DoClose() - { - await EC_OnClose.InvokeAsync(true); - } - - #endregion Protected Methods - - #region Private Fields - - private CompileStep currStep = CompileStep.Template; - - #endregion Private Fields - - #region Private Properties - - private Window m_CurrWindow { get; set; } = new Window(); - - #endregion Private Properties - - #region Private Methods - - private List m_SashList = new List(); public List SashList { get => m_SashList; } - private List m_FillList = new List(); - public List FillList - { - get => m_FillList; - } - private List m_SplitList = new List(); + + public TemplateSelectDTO? SelTemplateDTO { get; set; } = null; + public List SplitList { get => m_SplitList; } + #endregion Public Properties + + #region Public Methods + public void SearchInAreaList(Area node) { if (node != null) @@ -171,11 +111,122 @@ namespace WebWindowConfigurator } } + #endregion Public Methods + + #region Protected Enums + + protected enum CompileStep + { + Template = 0, + Frame = 1, + Split, + Sash, + Fill + } + + #endregion Protected Enums + + #region Protected Properties + + protected Frame Frame + { + get => m_Frame; + set => m_Frame = value; + } + + protected string m_SelSVG { get; set; } = ""; + + /// + /// Componente SVG da mostrare + /// + protected MarkupString outSvg + { + get + { + // aggiunta gestione classe svg per posizionamento con costraints + var newSvg = LiveSVG.Replace(" m_FillList = new List(); + + private Frame m_Frame; + + private List m_SashList = new List(); + + private List m_SplitList = new List(); + + #endregion Private Fields + + #region Private Properties + + private Window m_CurrWindow { get; set; } = new Window(); + + private Template m_SelTemplate { get; set; } = null!; + + private string mainCss + { + get => (SelTemplateDTO != null && currStep != CompileStep.Template) ? "col-6" : "col-12"; + } + + #endregion Private Properties + + #region Private Methods + private void AdvStep(CompileStep newStep) { currStep = newStep; } + /// + /// Calcola il css del tab selezionato + /// + /// + /// + private string tabNavCss(CompileStep testStep) + { + return testStep.Equals(currStep) ? "nav-link active fw-bold" : "nav-link text-secondary"; + } + #endregion Private Methods } } \ No newline at end of file diff --git a/WebWindowConfigurator/WebWindowMaker.razor.css b/WebWindowConfigurator/WebWindowMaker.razor.css index c6afca4..c00ef81 100644 --- a/WebWindowConfigurator/WebWindowMaker.razor.css +++ b/WebWindowConfigurator/WebWindowMaker.razor.css @@ -4,3 +4,14 @@ margin: 1em 0; background-image: url('background.png'); } + + +/* gestione SVG responsive */ +.responsive-svg { + /* SVG scala a fit del container */ + width: 100%; + /* Altezza massima in rem (caratteri) */ + height: 40rem; + /* Removes extra space below SVG */ + display: block; +} \ No newline at end of file diff --git a/WebWindowConfigurator/compilerconfig.json b/WebWindowConfigurator/compilerconfig.json new file mode 100644 index 0000000..7b7c49e --- /dev/null +++ b/WebWindowConfigurator/compilerconfig.json @@ -0,0 +1,6 @@ +[ + { + "outputFile": "WebWindowMaker.razor.css", + "inputFile": "WebWindowMaker.razor.less" + } +] \ No newline at end of file diff --git a/WebWindowConfigurator/compilerconfig.json.defaults b/WebWindowConfigurator/compilerconfig.json.defaults new file mode 100644 index 0000000..a5a10c0 --- /dev/null +++ b/WebWindowConfigurator/compilerconfig.json.defaults @@ -0,0 +1,59 @@ +{ + "compilers": { + "less": { + "autoPrefix": "", + "cssComb": "none", + "ieCompat": true, + "math": null, + "strictMath": false, + "strictUnits": false, + "relativeUrls": true, + "rootPath": "", + "sourceMapRoot": "", + "sourceMapBasePath": "", + "sourceMap": false + }, + "sass": { + "autoPrefix": "", + "loadPaths": "", + "style": "expanded", + "relativeUrls": true, + "sourceMap": false + }, + "stylus": { + "sourceMap": false + }, + "babel": { + "sourceMap": false + }, + "coffeescript": { + "bare": false, + "runtimeMode": "node", + "sourceMap": false + }, + "handlebars": { + "root": "", + "noBOM": false, + "name": "", + "namespace": "", + "knownHelpersOnly": false, + "forcePartial": false, + "knownHelpers": [], + "commonjs": "", + "amd": false, + "sourceMap": false + } + }, + "minifiers": { + "css": { + "enabled": true, + "termSemicolons": true, + "gzip": false + }, + "javascript": { + "enabled": true, + "termSemicolons": true, + "gzip": false + } + } +} \ No newline at end of file