diff --git a/Thermo.Active/wwwroot/assets/icons/sotto-cofano/png/button-bg.png b/Thermo.Active/wwwroot/assets/icons/sotto-cofano/png/button-bg.png
new file mode 100644
index 00000000..15446a0f
Binary files /dev/null and b/Thermo.Active/wwwroot/assets/icons/sotto-cofano/png/button-bg.png differ
diff --git a/Thermo.Active/wwwroot/assets/icons/sotto-cofano/png/button-bg@2x.png b/Thermo.Active/wwwroot/assets/icons/sotto-cofano/png/button-bg@2x.png
new file mode 100644
index 00000000..2e6b509a
Binary files /dev/null and b/Thermo.Active/wwwroot/assets/icons/sotto-cofano/png/button-bg@2x.png differ
diff --git a/Thermo.Active/wwwroot/assets/icons/sotto-cofano/png/button-bg@3x.png b/Thermo.Active/wwwroot/assets/icons/sotto-cofano/png/button-bg@3x.png
new file mode 100644
index 00000000..0f490070
Binary files /dev/null and b/Thermo.Active/wwwroot/assets/icons/sotto-cofano/png/button-bg@3x.png differ
diff --git a/Thermo.Active/wwwroot/assets/icons/sotto-cofano/png/controlli-textfield.png b/Thermo.Active/wwwroot/assets/icons/sotto-cofano/png/controlli-textfield.png
new file mode 100644
index 00000000..42d6524b
Binary files /dev/null and b/Thermo.Active/wwwroot/assets/icons/sotto-cofano/png/controlli-textfield.png differ
diff --git a/Thermo.Active/wwwroot/assets/icons/sotto-cofano/png/controlli-textfield@2x.png b/Thermo.Active/wwwroot/assets/icons/sotto-cofano/png/controlli-textfield@2x.png
new file mode 100644
index 00000000..134fdbd9
Binary files /dev/null and b/Thermo.Active/wwwroot/assets/icons/sotto-cofano/png/controlli-textfield@2x.png differ
diff --git a/Thermo.Active/wwwroot/assets/icons/sotto-cofano/png/controlli-textfield@3x.png b/Thermo.Active/wwwroot/assets/icons/sotto-cofano/png/controlli-textfield@3x.png
new file mode 100644
index 00000000..a52ee339
Binary files /dev/null and b/Thermo.Active/wwwroot/assets/icons/sotto-cofano/png/controlli-textfield@3x.png differ
diff --git a/Thermo.Active/wwwroot/assets/icons/sotto-cofano/png/ico-bt-minus.png b/Thermo.Active/wwwroot/assets/icons/sotto-cofano/png/ico-bt-minus.png
new file mode 100644
index 00000000..5c66ac6d
Binary files /dev/null and b/Thermo.Active/wwwroot/assets/icons/sotto-cofano/png/ico-bt-minus.png differ
diff --git a/Thermo.Active/wwwroot/assets/icons/sotto-cofano/png/ico-bt-minus@2x.png b/Thermo.Active/wwwroot/assets/icons/sotto-cofano/png/ico-bt-minus@2x.png
new file mode 100644
index 00000000..eb31dd15
Binary files /dev/null and b/Thermo.Active/wwwroot/assets/icons/sotto-cofano/png/ico-bt-minus@2x.png differ
diff --git a/Thermo.Active/wwwroot/assets/icons/sotto-cofano/png/ico-bt-minus@3x.png b/Thermo.Active/wwwroot/assets/icons/sotto-cofano/png/ico-bt-minus@3x.png
new file mode 100644
index 00000000..0e081639
Binary files /dev/null and b/Thermo.Active/wwwroot/assets/icons/sotto-cofano/png/ico-bt-minus@3x.png differ
diff --git a/Thermo.Active/wwwroot/assets/icons/sotto-cofano/png/ico-bt-plus.png b/Thermo.Active/wwwroot/assets/icons/sotto-cofano/png/ico-bt-plus.png
new file mode 100644
index 00000000..7967dd62
Binary files /dev/null and b/Thermo.Active/wwwroot/assets/icons/sotto-cofano/png/ico-bt-plus.png differ
diff --git a/Thermo.Active/wwwroot/assets/icons/sotto-cofano/png/ico-bt-plus@2x.png b/Thermo.Active/wwwroot/assets/icons/sotto-cofano/png/ico-bt-plus@2x.png
new file mode 100644
index 00000000..b52692d8
Binary files /dev/null and b/Thermo.Active/wwwroot/assets/icons/sotto-cofano/png/ico-bt-plus@2x.png differ
diff --git a/Thermo.Active/wwwroot/assets/icons/sotto-cofano/png/ico-bt-plus@3x.png b/Thermo.Active/wwwroot/assets/icons/sotto-cofano/png/ico-bt-plus@3x.png
new file mode 100644
index 00000000..1f672292
Binary files /dev/null and b/Thermo.Active/wwwroot/assets/icons/sotto-cofano/png/ico-bt-plus@3x.png differ
diff --git a/Thermo.Active/wwwroot/assets/icons/sotto-cofano/png/ico-bt-selez-auto-pin-grey.png b/Thermo.Active/wwwroot/assets/icons/sotto-cofano/png/ico-bt-selez-auto-pin-grey.png
new file mode 100644
index 00000000..a512f9c6
Binary files /dev/null and b/Thermo.Active/wwwroot/assets/icons/sotto-cofano/png/ico-bt-selez-auto-pin-grey.png differ
diff --git a/Thermo.Active/wwwroot/assets/icons/sotto-cofano/png/ico-bt-selez-auto-pin-grey@2x.png b/Thermo.Active/wwwroot/assets/icons/sotto-cofano/png/ico-bt-selez-auto-pin-grey@2x.png
new file mode 100644
index 00000000..89041ab8
Binary files /dev/null and b/Thermo.Active/wwwroot/assets/icons/sotto-cofano/png/ico-bt-selez-auto-pin-grey@2x.png differ
diff --git a/Thermo.Active/wwwroot/assets/icons/sotto-cofano/png/ico-bt-selez-auto-pin-grey@3x.png b/Thermo.Active/wwwroot/assets/icons/sotto-cofano/png/ico-bt-selez-auto-pin-grey@3x.png
new file mode 100644
index 00000000..a217e970
Binary files /dev/null and b/Thermo.Active/wwwroot/assets/icons/sotto-cofano/png/ico-bt-selez-auto-pin-grey@3x.png differ
diff --git a/Thermo.Active/wwwroot/assets/icons/sotto-cofano/png/ico-bt-selez-auto-pin.png b/Thermo.Active/wwwroot/assets/icons/sotto-cofano/png/ico-bt-selez-auto-pin.png
new file mode 100644
index 00000000..33b12709
Binary files /dev/null and b/Thermo.Active/wwwroot/assets/icons/sotto-cofano/png/ico-bt-selez-auto-pin.png differ
diff --git a/Thermo.Active/wwwroot/assets/icons/sotto-cofano/png/ico-bt-selez-auto-pin@2x.png b/Thermo.Active/wwwroot/assets/icons/sotto-cofano/png/ico-bt-selez-auto-pin@2x.png
new file mode 100644
index 00000000..6ef40cf5
Binary files /dev/null and b/Thermo.Active/wwwroot/assets/icons/sotto-cofano/png/ico-bt-selez-auto-pin@2x.png differ
diff --git a/Thermo.Active/wwwroot/assets/icons/sotto-cofano/png/ico-bt-selez-auto-pin@3x.png b/Thermo.Active/wwwroot/assets/icons/sotto-cofano/png/ico-bt-selez-auto-pin@3x.png
new file mode 100644
index 00000000..bf6858c2
Binary files /dev/null and b/Thermo.Active/wwwroot/assets/icons/sotto-cofano/png/ico-bt-selez-auto-pin@3x.png differ
diff --git a/Thermo.Active/wwwroot/assets/icons/sotto-cofano/png/label.png b/Thermo.Active/wwwroot/assets/icons/sotto-cofano/png/label.png
new file mode 100644
index 00000000..25fe7d10
Binary files /dev/null and b/Thermo.Active/wwwroot/assets/icons/sotto-cofano/png/label.png differ
diff --git a/Thermo.Active/wwwroot/assets/icons/sotto-cofano/png/label@2x.png b/Thermo.Active/wwwroot/assets/icons/sotto-cofano/png/label@2x.png
new file mode 100644
index 00000000..70cb8d34
Binary files /dev/null and b/Thermo.Active/wwwroot/assets/icons/sotto-cofano/png/label@2x.png differ
diff --git a/Thermo.Active/wwwroot/assets/icons/sotto-cofano/png/label@3x.png b/Thermo.Active/wwwroot/assets/icons/sotto-cofano/png/label@3x.png
new file mode 100644
index 00000000..a01114ac
Binary files /dev/null and b/Thermo.Active/wwwroot/assets/icons/sotto-cofano/png/label@3x.png differ
diff --git a/Thermo.Active/wwwroot/assets/styles/base/alarms.less b/Thermo.Active/wwwroot/assets/styles/base/alarms.less
index f18199f7..b735a571 100644
--- a/Thermo.Active/wwwroot/assets/styles/base/alarms.less
+++ b/Thermo.Active/wwwroot/assets/styles/base/alarms.less
@@ -1,4 +1,3 @@
-
// out: false, sourceMap: false, main: ../style.less
@import "colors.less";
@@ -16,7 +15,9 @@
display: flex;
flex-wrap: nowrap;
overflow: hidden;
- transition: width 200ms ease-in-out, height 200ms ease-in-out, padding 200ms ease-in-out, background-color 200ms ease-in-out, box-shadow 0ms 0ms;
+ transition: width 200ms ease-in-out, height 200ms ease-in-out,
+ padding 200ms ease-in-out, background-color 200ms ease-in-out,
+ box-shadow 0ms 0ms;
&.expanded {
width: 494px;
@@ -27,7 +28,9 @@
padding: 72px 24px 24px 0px;
height: calc(~"100vh - 120px");
box-shadow: @color-alarm-list-shadow;
- transition: width 200ms ease-in-out, height 200ms ease-in-out, padding 200ms ease-in-out, background-color 200ms ease-in-out, box-shadow 20ms 180ms;
+ transition: width 200ms ease-in-out, height 200ms ease-in-out,
+ padding 200ms ease-in-out, background-color 200ms ease-in-out,
+ box-shadow 20ms 180ms;
}
&.alarm {
@@ -40,7 +43,7 @@
color: @color-greyish-brown;
}
- &>.content {
+ & > .content {
height: calc(~"100% - 60px");
padding-right: 24px;
padding-left: 24px;
@@ -52,7 +55,7 @@
margin-left: -100%;
}
- &>.general-buttons {
+ & > .general-buttons {
display: flex;
justify-content: space-between;
position: absolute;
@@ -83,7 +86,7 @@
.sources {
span.source {
- border: 1px solid @color-greyish-brown !important;
+ border: 1px solid @color-greyish-brown !important;
color: @color-greyish-brown;
}
}
@@ -195,7 +198,6 @@
margin-bottom: 8px;
&.warning {
-
.content h2,
.content .summary {
color: @color-squash;
@@ -203,7 +205,6 @@
}
&.alarm {
-
.content h2,
.content .summary {
color: @color-scarlet;
@@ -238,11 +239,11 @@
.sourcecontainer {
font-size: 14px;
display: block;
- color: @color-greyish-brown ;
+ color: @color-greyish-brown;
font-weight: 600;
.source {
- border: 1px solid @color-warm-grey !important;
+ border: 1px solid @color-warm-grey !important;
padding: 0 5px;
margin-right: 3px;
}
@@ -344,7 +345,7 @@
span {
width: 100%;
font-size: 18px;
- line-height: 1;
+ line-height: 1;
overflow-x: hidden;
overflow-y: hidden;
width: 100%;
@@ -357,7 +358,6 @@
}
&.selected {
-
span,
i {
color: #4b4b4b;
@@ -400,7 +400,7 @@
cursor: pointer;
.message-box-header {
- height: calc(~'100% - 20px');
+ height: calc(~"100% - 20px");
width: 100%;
display: flex;
flex-flow: row;
@@ -472,10 +472,8 @@
&.enablemodify {
height: 100%;
-
}
-
button.btn-hidden {
visibility: hidden;
@@ -535,7 +533,6 @@
cursor: pointer;
}
}
-
}
.addattach {
@@ -555,13 +552,21 @@
box-shadow: 0 1px 2px 0 rgba(0, 0, 0, 0.4);
padding: 14px 17px;
border: none;
- background-image: linear-gradient(to bottom, @color-white2, @color-silver);
+ background-image: linear-gradient(
+ to bottom,
+ @color-white2,
+ @color-silver
+ );
color: @color-darkish-blue;
&:active {
- background-image: linear-gradient(to bottom, @color-silver, @color-white2);
+ background-image: linear-gradient(
+ to bottom,
+ @color-silver,
+ @color-white2
+ );
border: none !important;
- box-shadow: inset @button-shadow !important;
+ box-shadow: inset @button-shadow !important;
}
&:hover {
@@ -661,7 +666,7 @@
box-shadow: 2px 2px 2px rgba(0, 0, 0, 0.2);
}
- &>.content {
+ & > .content {
height: 100%;
}
@@ -677,7 +682,6 @@
}
}
-
.alarm-history-container {
height: 100%;
width: 100%;
@@ -868,7 +872,6 @@
.checkboxesView,
.checkboxesViewUser {
width: calc(~"100% - 8px");
- ;
background-color: #fff;
display: block;
z-index: 100;
@@ -926,11 +929,11 @@
}
tr:nth-child(even) {
- background: #dddddd
+ background: #dddddd;
}
tr:nth-child(odd) {
- background: #FFF
+ background: #fff;
}
th:nth-child(1),
@@ -985,25 +988,24 @@
overflow-x: hidden;
&.without-footer {
- height: 620px
+ height: 620px;
}
&::-webkit-scrollbar {
width: 16px;
-
}
&::-webkit-scrollbar-track {
margin: 20px 0px;
- background-color: #E5E5E5;
+ background-color: #e5e5e5;
border-radius: 15px;
- box-shadow: inset 0 1px 3px 0 #9F9F9F;
+ box-shadow: inset 0 1px 3px 0 #9f9f9f;
}
&::-webkit-scrollbar-thumb {
width: 16px;
- background: #9F9F9F;
- border: 4px solid #E5E5E5;
+ background: #9f9f9f;
+ border: 4px solid #e5e5e5;
border-radius: 15px;
}
@@ -1033,7 +1035,6 @@
display: block;
margin: auto;
-
&.warning {
background-color: #f5a623;
color: #4b4b4b;
@@ -1077,7 +1078,6 @@
padding: 0;
text-align: center;
-
div.group-label-button {
text-align: center;
margin: 8px 0 8px 0;
@@ -1087,7 +1087,7 @@
padding: 0px;
&.disabled {
- opacity: .65;
+ opacity: 0.65;
cursor: default;
box-shadow: none !important;
pointer-events: none;
@@ -1107,7 +1107,6 @@
}
}
}
-
}
}
diff --git a/Thermo.Active/wwwroot/assets/styles/style.css b/Thermo.Active/wwwroot/assets/styles/style.css
index d6727752..e72655a0 100644
--- a/Thermo.Active/wwwroot/assets/styles/style.css
+++ b/Thermo.Active/wwwroot/assets/styles/style.css
@@ -24427,4 +24427,4 @@ body {
font-family: Arial, sans-serif;
font-weight: bold;
text-transform: uppercase;
-}
+}
\ No newline at end of file
diff --git a/Thermo.Active/wwwroot/config.development.json b/Thermo.Active/wwwroot/config.development.json
index f8091c43..75f97ae3 100644
--- a/Thermo.Active/wwwroot/config.development.json
+++ b/Thermo.Active/wwwroot/config.development.json
@@ -2,7 +2,7 @@
"env": "development",
"api": {
"enabled": true,
- "apiServerUrl": "http://localhost:9000/"
+ "apiServerUrl": "http://95.236.130.105:9000/"
},
"allUIVisible": false
}
\ No newline at end of file
diff --git a/Thermo.Active/wwwroot/index.html b/Thermo.Active/wwwroot/index.html
index 06c2fb9c..6966f3ba 100644
--- a/Thermo.Active/wwwroot/index.html
+++ b/Thermo.Active/wwwroot/index.html
@@ -13,7 +13,7 @@
-
+
diff --git a/Thermo.Active/wwwroot/package-lock.json b/Thermo.Active/wwwroot/package-lock.json
index 5cc9d9a3..95091f6e 100644
--- a/Thermo.Active/wwwroot/package-lock.json
+++ b/Thermo.Active/wwwroot/package-lock.json
@@ -3491,9 +3491,9 @@
}
},
"vue-loader-v16": {
- "version": "npm:vue-loader@16.0.0-rc.1",
- "resolved": "https://registry.npmjs.org/vue-loader/-/vue-loader-16.0.0-rc.1.tgz",
- "integrity": "sha512-yR+BS90EOXTNieasf8ce9J3TFCpm2DGqoqdbtiwQ33hon3FyIznLX7sKavAq1VmfBnOeV6It0Htg4aniv8ph1g==",
+ "version": "npm:vue-loader@16.1.2",
+ "resolved": "https://registry.npmjs.org/vue-loader/-/vue-loader-16.1.2.tgz",
+ "integrity": "sha512-8QTxh+Fd+HB6fiL52iEVLKqE9N1JSlMXLR92Ijm6g8PZrwIxckgpqjPDWRP5TWxdiPaHR+alUWsnu1ShQOwt+Q==",
"dev": true,
"optional": true,
"requires": {
@@ -6011,6 +6011,15 @@
"integrity": "sha1-4wOogrNCzD7oylE6eZmXNNqzriw=",
"dev": true
},
+ "copy-anything": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/copy-anything/-/copy-anything-2.0.1.tgz",
+ "integrity": "sha512-lA57e7viQHOdPQcrytv5jFeudZZOXuyk47lZym279FiDQ8jeZomXiGuVf6ffMKkJ+3TIai3J1J3yi6M+/4U35g==",
+ "dev": true,
+ "requires": {
+ "is-what": "^3.7.1"
+ }
+ },
"copy-concurrently": {
"version": "1.0.5",
"resolved": "https://registry.npmjs.org/copy-concurrently/-/copy-concurrently-1.0.5.tgz",
@@ -8942,6 +8951,16 @@
"dev": true,
"optional": true
},
+ "lru-cache": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz",
+ "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==",
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "yallist": "^4.0.0"
+ }
+ },
"schema-utils": {
"version": "2.7.0",
"resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-2.7.0.tgz",
@@ -8955,11 +8974,14 @@
}
},
"semver": {
- "version": "7.3.2",
- "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.2.tgz",
- "integrity": "sha512-OrOb32TeeambH6UrhtShmF7CRDqhL6/5XpPNp2DuRH6+9QLw/orhp72j87v8Qa1ScDkvrrBNpZcDejAirJmfXQ==",
+ "version": "7.3.4",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.4.tgz",
+ "integrity": "sha512-tCfb2WLjqFAtXn4KEdxIhalnRtoKFN7nAwj0B3ZXCbQloV2tq5eDbcTmT68JJD3nRJq24/XgxtQKFIpQdtvmVw==",
"dev": true,
- "optional": true
+ "optional": true,
+ "requires": {
+ "lru-cache": "^6.0.0"
+ }
},
"supports-color": {
"version": "7.2.0",
@@ -8970,6 +8992,13 @@
"requires": {
"has-flag": "^4.0.0"
}
+ },
+ "yallist": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz",
+ "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==",
+ "dev": true,
+ "optional": true
}
}
},
@@ -9016,16 +9045,16 @@
}
},
"fs-extra": {
- "version": "9.0.1",
- "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.0.1.tgz",
- "integrity": "sha512-h2iAoN838FqAFJY2/qVpzFXy+EBxfVE220PalAqQLDVsFOHLJrZvut5puAbCdNv6WJk+B8ihI+k0c7JK5erwqQ==",
+ "version": "9.1.0",
+ "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz",
+ "integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==",
"dev": true,
"optional": true,
"requires": {
"at-least-node": "^1.0.0",
"graceful-fs": "^4.2.0",
"jsonfile": "^6.0.1",
- "universalify": "^1.0.0"
+ "universalify": "^2.0.0"
},
"dependencies": {
"graceful-fs": {
@@ -10214,6 +10243,13 @@
"integrity": "sha512-Pgs951kaMm5GXP7MOvxERINe3gsaVjUWFm+UZPSq9xYriQAksyhg0csnS0KXSNRD5NmNdapXEpjxG49+AKh/ug==",
"dev": true
},
+ "image-size": {
+ "version": "0.5.5",
+ "resolved": "https://registry.npmjs.org/image-size/-/image-size-0.5.5.tgz",
+ "integrity": "sha1-Cd/Uq50g4p6xw+gLiZA3jfnjy5w=",
+ "dev": true,
+ "optional": true
+ },
"import-cwd": {
"version": "2.1.0",
"resolved": "https://registry.npmjs.org/import-cwd/-/import-cwd-2.1.0.tgz",
@@ -10806,6 +10842,12 @@
"integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=",
"dev": true
},
+ "is-what": {
+ "version": "3.12.0",
+ "resolved": "https://registry.npmjs.org/is-what/-/is-what-3.12.0.tgz",
+ "integrity": "sha512-2ilQz5/f/o9V7WRWJQmpFYNmQFZ9iM+OXRonZKcYgTkCzjb949Vi4h282PD1UfmgHk666rcWonbRJ++KI41VGw==",
+ "dev": true
+ },
"is-windows": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz",
@@ -10997,15 +11039,6 @@
"requires": {
"graceful-fs": "^4.1.6",
"universalify": "^2.0.0"
- },
- "dependencies": {
- "universalify": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz",
- "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==",
- "dev": true,
- "optional": true
- }
}
},
"jsprim": {
@@ -11063,6 +11096,75 @@
"invert-kv": "^2.0.0"
}
},
+ "less": {
+ "version": "3.13.1",
+ "resolved": "https://registry.npmjs.org/less/-/less-3.13.1.tgz",
+ "integrity": "sha512-SwA1aQXGUvp+P5XdZslUOhhLnClSLIjWvJhmd+Vgib5BFIr9lMNlQwmwUNOjXThF/A0x+MCYYPeWEfeWiLRnTw==",
+ "dev": true,
+ "requires": {
+ "copy-anything": "^2.0.1",
+ "errno": "^0.1.1",
+ "graceful-fs": "^4.1.2",
+ "image-size": "~0.5.0",
+ "make-dir": "^2.1.0",
+ "mime": "^1.4.1",
+ "native-request": "^1.0.5",
+ "source-map": "~0.6.0",
+ "tslib": "^1.10.0"
+ },
+ "dependencies": {
+ "make-dir": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-2.1.0.tgz",
+ "integrity": "sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==",
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "pify": "^4.0.1",
+ "semver": "^5.6.0"
+ }
+ },
+ "mime": {
+ "version": "1.6.0",
+ "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz",
+ "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==",
+ "dev": true,
+ "optional": true
+ },
+ "pify": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz",
+ "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==",
+ "dev": true,
+ "optional": true
+ }
+ }
+ },
+ "less-loader": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/less-loader/-/less-loader-5.0.0.tgz",
+ "integrity": "sha512-bquCU89mO/yWLaUq0Clk7qCsKhsF/TZpJUzETRvJa9KSVEL9SO3ovCvdEHISBhrC81OwC8QSVX7E0bzElZj9cg==",
+ "dev": true,
+ "requires": {
+ "clone": "^2.1.1",
+ "loader-utils": "^1.1.0",
+ "pify": "^4.0.1"
+ },
+ "dependencies": {
+ "clone": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npmjs.org/clone/-/clone-2.1.2.tgz",
+ "integrity": "sha1-G39Ln1kfHo+DZwQBYANFoCiHQ18=",
+ "dev": true
+ },
+ "pify": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz",
+ "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==",
+ "dev": true
+ }
+ }
+ },
"leven": {
"version": "3.1.0",
"resolved": "https://registry.npmjs.org/leven/-/leven-3.1.0.tgz",
@@ -11735,6 +11837,13 @@
}
}
},
+ "native-request": {
+ "version": "1.0.8",
+ "resolved": "https://registry.npmjs.org/native-request/-/native-request-1.0.8.tgz",
+ "integrity": "sha512-vU2JojJVelUGp6jRcLwToPoWGxSx23z/0iX+I77J3Ht17rf2INGjrhOoQnjVo60nQd8wVsgzKkPfRXBiVdD2ag==",
+ "dev": true,
+ "optional": true
+ },
"natural-compare": {
"version": "1.4.0",
"resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz",
@@ -17296,9 +17405,9 @@
}
},
"universalify": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/universalify/-/universalify-1.0.0.tgz",
- "integrity": "sha512-rb6X1W158d7pRQBg5gkR8uPaSfiids68LTJQYOtEUhoJUWBdaQHsuT/EUduxXYxcrt4r5PJ4fuHW1MHT6p0qug==",
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz",
+ "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==",
"dev": true,
"optional": true
},
diff --git a/Thermo.Active/wwwroot/package.json b/Thermo.Active/wwwroot/package.json
index 23c3b288..033fa353 100644
--- a/Thermo.Active/wwwroot/package.json
+++ b/Thermo.Active/wwwroot/package.json
@@ -53,6 +53,8 @@
"eslint": "^7.13.0",
"eventsource-polyfill": "^0.9.6",
"file-loader": "^1.1.4",
+ "less": "^3.0.4",
+ "less-loader": "^5.0.0",
"style-loader": "1.2.1",
"terser-webpack-plugin": "1.3.0",
"ts-loader": "6.2.1",
diff --git a/Thermo.Active/wwwroot/src/@types/underTheHood.d.ts b/Thermo.Active/wwwroot/src/@types/underTheHood.d.ts
new file mode 100644
index 00000000..d7d6f35e
--- /dev/null
+++ b/Thermo.Active/wwwroot/src/@types/underTheHood.d.ts
@@ -0,0 +1,25 @@
+declare module server {
+
+ export interface channels {
+ [id: string]: channel[]
+ }
+
+ export interface channel {
+ value: number;
+ id: number;
+ bank: string;
+ position: string;
+ page: string;
+ wire: string;
+ profinet: string;
+ label: string;
+ visible: boolean;
+ forceEnabled?: boolean;
+ forcedValue?: number;
+ isForced?: boolean;
+ forceZero?: boolean;
+ }
+
+}
+
+
diff --git a/Thermo.Active/wwwroot/src/App.ts b/Thermo.Active/wwwroot/src/App.ts
index b68eeac6..e197bd73 100644
--- a/Thermo.Active/wwwroot/src/App.ts
+++ b/Thermo.Active/wwwroot/src/App.ts
@@ -12,6 +12,7 @@ import { store, appModelActions, machineStatusActions } from "@/store";
import paddle from "@/app_modules_thermo/components/paddle/paddle.vue";
import Dashboard from "@/app_modules_thermo/dashboard/dashboard.vue";
import PreDashboard from "@/app_modules_thermo/preriscaldo-dashboard/preriscaldo-dashboard.vue";
+import sottoCofano from "@/app_modules_thermo/sotto-cofano/sotto-cofano.vue";
import * as iziToast from "izitoast";
@@ -38,7 +39,8 @@ declare var cmsClient;
dashboard: Dashboard,
predashboard: PreDashboard,
alarmList,
- printGantt
+ printGantt,
+ sottoCofano
}
})
export default class app extends Vue {
diff --git a/Thermo.Active/wwwroot/src/App.vue b/Thermo.Active/wwwroot/src/App.vue
index 459007fb..054a780b 100644
--- a/Thermo.Active/wwwroot/src/App.vue
+++ b/Thermo.Active/wwwroot/src/App.vue
@@ -14,7 +14,7 @@
-
+
diff --git a/Thermo.Active/wwwroot/src/app.business-logic.ts b/Thermo.Active/wwwroot/src/app.business-logic.ts
index 979c1d3c..aea533a4 100644
--- a/Thermo.Active/wwwroot/src/app.business-logic.ts
+++ b/Thermo.Active/wwwroot/src/app.business-logic.ts
@@ -4,13 +4,14 @@ import {
store, AppModel,/*, MachineStatusModel, machineStatusActions, localizationModelActions, machineInfoActions*/
machineStatusActions
} from "@/store";
-import { UserInfoDialog, MachineInfoDialog, ContactInfoDialog,CmsconnectInfoDialog } from "@/app_modules/machine";
+import { UserInfoDialog, MachineInfoDialog, ContactInfoDialog, CmsconnectInfoDialog } from "@/app_modules/machine";
import { ModalHelper } from "./components/modals/ModalHelper";
import Vue from "vue";
import { loginService, machineService, localizationService } from "./services";
import { prodService } from "./services/prodService";
import * as iziToast from "izitoast";
+import { underTheHoodService } from "./services/underTheHoodService";
// import { UsersService } from "./services/usersService";
@@ -70,6 +71,9 @@ async function loadMachineConfig() {
await prodService.GetProdPanel();
+ await underTheHoodService.getChannels();
+ await underTheHoodService.getChannelsConfig();
+
// load default language
if (!(store.state as AppModel).localization.currentLanguage) {
localizationService.changeCurrentLanguage(mcresult.defaultLanguage);
@@ -375,12 +379,12 @@ function enableScroll(element) {
function takescreenshot() {
var ricetta = (store.state as AppModel).prod.panel.nomeRicetta;
- if(!ricetta || ricetta =="")
+ if (!ricetta || ricetta == "")
ricetta = "_noRecipe";
- if (typeof cmsClient != "undefined") {
- var response = cmsClient.takeScreenshot(ricetta);
- if(response != "")
+ if (typeof cmsClient != "undefined") {
+ var response = cmsClient.takeScreenshot(ricetta);
+ if (response != "")
var resp = JSON.parse(response);
if (response != "" && resp && resp.error) {
@@ -393,7 +397,7 @@ function takescreenshot() {
transitionOut: "fadeOut",
});
}
- else{
+ else {
(iziToast as any).success({
title: "Screenshot",
message: resp.path,
@@ -401,7 +405,7 @@ function takescreenshot() {
timeout: 10000,
class: "t-error",
transitionOut: "fadeOut",
- });
+ });
}
}
diff --git a/Thermo.Active/wwwroot/src/app.routes.ts b/Thermo.Active/wwwroot/src/app.routes.ts
index d0ce8f1b..f5c4042f 100644
--- a/Thermo.Active/wwwroot/src/app.routes.ts
+++ b/Thermo.Active/wwwroot/src/app.routes.ts
@@ -31,6 +31,7 @@ import { routes as productionRoutes } from "./app_modules_thermo/processo/route"
import { routes as SetupRoutes } from "@/app_modules_thermo/setup/route.js";
import { routes as ProgrPreriscaldoRoutes } from "@/app_modules_thermo/programmazione-preriscaldo/route";
import { routes as users } from "./app_modules/users/route";
+//import { routes as ioRoutes } from "@/app_modules_thermo/sotto-cofano/route";
export let routes = [
{ path: "", component: productionRoutes[0].component, name: productionRoutes[0].name, meta: { title: "Dashboard" } },
@@ -74,6 +75,7 @@ injectRoutes(routes, ProgrPreriscaldoRoutes);
// injectRoutes(routes, scada);
// injectRoutes(routes, reports);
injectRoutes(routes, users);
+// injectRoutes(routes, ioRoutes);
diff --git a/Thermo.Active/wwwroot/src/app_modules_thermo/sotto-cofano/Assi/components/assi/assi.less b/Thermo.Active/wwwroot/src/app_modules_thermo/sotto-cofano/Assi/components/assi/assi.less
new file mode 100644
index 00000000..8fad87c5
--- /dev/null
+++ b/Thermo.Active/wwwroot/src/app_modules_thermo/sotto-cofano/Assi/components/assi/assi.less
@@ -0,0 +1 @@
+@import "../../../variable.less";
diff --git a/Thermo.Active/wwwroot/src/app_modules_thermo/sotto-cofano/Assi/components/assi/assi.ts b/Thermo.Active/wwwroot/src/app_modules_thermo/sotto-cofano/Assi/components/assi/assi.ts
new file mode 100644
index 00000000..9080b923
--- /dev/null
+++ b/Thermo.Active/wwwroot/src/app_modules_thermo/sotto-cofano/Assi/components/assi/assi.ts
@@ -0,0 +1,9 @@
+import { Component, Vue } from "vue-property-decorator";
+import Header from "../../../header/my-header.vue";
+import MenuSx from "../../../menu-sx/menu-sx.vue";
+import AssiTable from "../../../Assi/components/tables/assi-table/assi-table.vue";
+
+@Component({
+ components: { Header, MenuSx, AssiTable }
+})
+export default class Assi extends Vue {}
diff --git a/Thermo.Active/wwwroot/src/app_modules_thermo/sotto-cofano/Assi/components/assi/assi.vue b/Thermo.Active/wwwroot/src/app_modules_thermo/sotto-cofano/Assi/components/assi/assi.vue
new file mode 100644
index 00000000..e79b65b8
--- /dev/null
+++ b/Thermo.Active/wwwroot/src/app_modules_thermo/sotto-cofano/Assi/components/assi/assi.vue
@@ -0,0 +1,11 @@
+
+
+
+
+
diff --git a/Thermo.Active/wwwroot/src/app_modules_thermo/sotto-cofano/Assi/components/tables/assi-table/assi-table.less b/Thermo.Active/wwwroot/src/app_modules_thermo/sotto-cofano/Assi/components/tables/assi-table/assi-table.less
new file mode 100644
index 00000000..b172d8df
--- /dev/null
+++ b/Thermo.Active/wwwroot/src/app_modules_thermo/sotto-cofano/Assi/components/tables/assi-table/assi-table.less
@@ -0,0 +1,555 @@
+@import "../../../../variable.less";
+
+span {
+ display: inline-block;
+}
+
+.log-assi-table {
+ width: 1384px;
+ height: 886px;
+ margin: 20px 20px 0 20px;
+ tbody {
+ height: 752px;
+ }
+ thead {
+ width: 1400px;
+ height: 34px;
+ opacity: 0.5;
+ background-color: @fill-under-grey-1-2;
+ }
+ th {
+ display: inline-block;
+ }
+ tbody {
+ vertical-align: unset;
+ border-color: unset;
+ tr {
+ display: table;
+ }
+ }
+}
+.fill-under-grey-3-2 {
+ background-color: @fill-under-grey-3-2;
+}
+.fill-under-grey-1-2 {
+ background-color: @fill-under-grey-1-2;
+}
+
+.axis-assi {
+ width: 63px;
+ height: 12px;
+ margin: 10px 0px 12px 9px;
+
+ font-size: 14px;
+ font-weight: normal;
+ font-stretch: normal;
+ font-style: normal;
+ line-height: 0.86;
+ letter-spacing: normal;
+ color: @white;
+ text-align: left !important;
+ float: left;
+ &-inner {
+ }
+}
+
+.position-assi {
+ width: 63px;
+ height: 12px;
+ margin: 10px 0px 12px 111px;
+
+ font-size: 14px;
+ font-weight: normal;
+ font-stretch: normal;
+ font-style: normal;
+ line-height: 0.86;
+ letter-spacing: normal;
+ text-align: left !important;
+ float: left;
+ color: @white;
+ &-inner {
+ }
+}
+
+.velocity-assi {
+ width: 63px;
+ height: 12px;
+ margin: 10px 0 12px 60px;
+
+ font-size: 14px;
+ font-weight: normal;
+ font-stretch: normal;
+ font-style: normal;
+ line-height: 0.86;
+ letter-spacing: normal;
+ text-align: left !important;
+ float: left;
+ color: @white;
+ &-inner {
+ }
+}
+
+.torque-assi {
+ width: 114px;
+ height: 12px;
+ margin: 10px 0px 12px 34px;
+
+ font-size: 14px;
+ font-weight: normal;
+ font-stretch: normal;
+ font-style: normal;
+ line-height: 0.86;
+ letter-spacing: normal;
+ text-align: center;
+ text-align: left !important;
+ color: @white;
+ &-inner {
+ width: 253px;
+ height: 16px;
+ margin: 24px 69px 24px 142px;
+
+ font-size: 14px;
+ font-weight: normal;
+ font-stretch: normal;
+ font-style: normal;
+ line-height: normal;
+ letter-spacing: normal;
+ float: left;
+ text-align: initial;
+ color: @very-light-pink;
+ }
+}
+
+.status-assi {
+ width: 114px;
+ height: 12px;
+ margin: 10px 0px 12px 7px;
+
+ font-size: 14px;
+ font-weight: normal;
+ font-stretch: normal;
+ font-style: normal;
+ line-height: 0.86;
+ letter-spacing: normal;
+ text-align: center;
+ text-align: left !important;
+ color: @white;
+ &-inner {
+ }
+}
+
+.error-code-assi {
+ width: 114px;
+ height: 12px;
+ margin: 0 34px 0 13px;
+
+ font-size: 14px;
+ font-weight: normal;
+ font-stretch: normal;
+ font-style: normal;
+ line-height: 0.86;
+ letter-spacing: normal;
+ text-align: center;
+ text-align: left !important;
+ color: @white;
+ &-inner {
+ }
+}
+
+.fase-motion-assi {
+ width: 114px;
+ height: 12px;
+ margin: 10px 430px 12px 0px;
+
+ font-size: 14px;
+ font-weight: normal;
+ font-stretch: normal;
+ font-style: normal;
+ line-height: 0.86;
+ letter-spacing: normal;
+ text-align: center;
+ text-align: left !important;
+ color: @white;
+ &-inner {
+ }
+}
+
+.tr-zero-level {
+ width: 1400px;
+ .icon-toggle {
+ width: 16px;
+ height: 16px;
+ margin: 20px 0px 23px 7px;
+ float: left;
+ .icon-closed {
+ width: 16px;
+ height: 11px;
+ width: 0;
+ height: 0;
+ border-left: 8px solid transparent;
+ border-right: 8px solid transparent;
+ border-top: 8px solid @white;
+ cursor: pointer;
+ }
+ .icon-open {
+ width: 16px;
+ height: 11px;
+ width: 0;
+ height: 0;
+ border-top: 8px solid transparent;
+ border-bottom: 8px solid transparent;
+ border-left: 8px solid @white;
+ cursor: pointer;
+ }
+ }
+ .axis {
+ width: 21px;
+ height: 16px;
+ margin: 24px 0px 24px 10px;
+
+ font-size: 14px;
+ font-weight: bold;
+ font-stretch: normal;
+ font-style: normal;
+ line-height: normal;
+ letter-spacing: normal;
+ float: left;
+ color: @very-light-pink;
+ }
+ .position {
+ width: 42px;
+ height: 16px;
+ margin: 24px 0px 24px 133px;
+
+ font-size: 14px;
+ font-weight: normal;
+ font-stretch: normal;
+ font-style: normal;
+ line-height: normal;
+ letter-spacing: normal;
+ text-align: center;
+ float: left;
+ color: @very-light-pink;
+ }
+ .velocity {
+ width: 25px;
+ height: 16px;
+ margin: 24px 0px 24px 95px;
+
+ font-size: 14px;
+ font-weight: normal;
+ font-stretch: normal;
+ font-style: normal;
+ line-height: normal;
+ letter-spacing: normal;
+ text-align: center;
+ float: left;
+ color: @very-light-pink;
+ }
+ .torque {
+ width: 58px;
+ height: 16px;
+ margin: 24px 0px 24px 55px;
+
+ font-size: 14px;
+ font-weight: normal;
+ font-stretch: normal;
+ font-style: normal;
+ line-height: normal;
+ letter-spacing: normal;
+ text-align: center !important;
+ float: left;
+ color: @very-light-pink;
+ }
+ .status {
+ width: 58px;
+ height: 16px;
+ margin: 24px 0px 24px 42px;
+
+ font-size: 14px;
+ font-weight: normal;
+ font-stretch: normal;
+ font-style: normal;
+ line-height: normal;
+ letter-spacing: normal;
+ text-align: right;
+ float: left;
+ color: @very-light-pink;
+ }
+ .error-code {
+ width: 21px;
+ height: 16px;
+ margin: 24px 0px 24px 100px;
+
+ font-size: 14px;
+ font-weight: normal;
+ font-stretch: normal;
+ font-style: normal;
+ line-height: normal;
+ letter-spacing: normal;
+ text-align: center;
+ float: left;
+ color: @very-light-pink;
+ }
+ .fase-motion {
+ width: 21px;
+ height: 16px;
+ margin: 24px 0px 24px 119px;
+
+ font-size: 14px;
+ font-weight: normal;
+ font-stretch: normal;
+ font-style: normal;
+ line-height: normal;
+ letter-spacing: normal;
+ text-align: center;
+ float: left;
+ color: @very-light-pink;
+ }
+}
+
+.tr-n-level {
+ margin-left: 33px;
+ width: 1370px;
+ .axis {
+ width: 23px;
+ height: 16px;
+ margin: 24px 0px 24px 19px;
+
+ font-size: 14px;
+ font-weight: bold;
+ font-stretch: normal;
+ font-style: normal;
+ line-height: normal;
+ letter-spacing: normal;
+ float: left;
+ color: @very-light-pink;
+ }
+ .position {
+ width: 45px;
+ height: 16px;
+ margin: 24px 0px 24px 110px;
+
+ font-size: 14px;
+ font-weight: normal;
+ font-stretch: normal;
+ font-style: normal;
+ line-height: normal;
+ letter-spacing: normal;
+ text-align: center;
+ float: left;
+ color: @very-light-pink;
+ }
+ .velocity {
+ width: 26px;
+ height: 16px;
+ margin: 24px 0px 24px 94px;
+
+ font-size: 14px;
+ font-weight: normal;
+ font-stretch: normal;
+ font-style: normal;
+ line-height: normal;
+ letter-spacing: normal;
+ text-align: center;
+ float: left;
+ color: @very-light-pink;
+ }
+ .torque {
+ width: 55px;
+ height: 16px;
+ margin: 24px 0px 24px 55px;
+
+ font-size: 14px;
+ font-weight: normal;
+ font-stretch: normal;
+ font-style: normal;
+ line-height: normal;
+ letter-spacing: normal;
+ text-align: center;
+ float: left;
+ color: @very-light-pink;
+ }
+ .status {
+ width: 43px;
+ height: 16px;
+ margin: 24px 0px 24px 59px;
+
+ font-size: 14px;
+ font-weight: normal;
+ font-stretch: normal;
+ font-style: normal;
+ line-height: normal;
+ letter-spacing: normal;
+ text-align: right;
+ float: left;
+ color: @very-light-pink;
+ }
+ .error-code {
+ width: 21px;
+ height: 16px;
+ margin: 24px 0px 24px 100px;
+
+ font-size: 14px;
+ font-weight: normal;
+ font-stretch: normal;
+ font-style: normal;
+ line-height: normal;
+ letter-spacing: normal;
+ text-align: center;
+ float: left;
+ color: @very-light-pink;
+ }
+ .fase-motion {
+ width: 42px;
+ height: 16px;
+ margin: 24px 40px 24px 119px;
+
+ font-size: 14px;
+ font-weight: normal;
+ font-stretch: normal;
+ font-style: normal;
+ line-height: normal;
+ letter-spacing: normal;
+ text-align: center;
+ float: left;
+ color: @very-light-pink;
+ }
+}
+
+.button-align {
+ width: 81px;
+ height: 48px;
+ object-fit: contain;
+ margin: 8px 0 8px 100px;
+ border-radius: 2px;
+ box-shadow: 0 1px 2px 0 rgba(0, 0, 0, 0.4);
+ background-image: linear-gradient(to bottom, #818a8f 0%, #42494e 98%);
+ &-label {
+ width: 44px;
+ height: 21px;
+ padding: 14px 18px 13px 19px;
+ object-fit: contain;
+
+ font-size: 18px;
+ font-weight: 500;
+ font-stretch: normal;
+ font-style: normal;
+ line-height: normal;
+ letter-spacing: normal;
+ text-align: center;
+ color: @very-light-pink;
+ }
+}
+
+.button-slaves-position {
+ width: 205px;
+ height: 48px;
+ margin-left: 10px;
+ object-fit: contain;
+ border-radius: 2px;
+ box-shadow: 0 1px 2px 0 rgba(0, 0, 0, 0.4);
+ background-image: linear-gradient(to bottom, #818a8f 0%, #42494e 98%);
+ &-label {
+ width: 168px;
+ height: 21px;
+ padding: 14px 18px 13px 19px;
+ object-fit: contain;
+
+ font-size: 18px;
+ font-weight: 500;
+ font-stretch: normal;
+ font-style: normal;
+ line-height: normal;
+ letter-spacing: normal;
+ text-align: center;
+ color: @very-light-pink;
+ }
+}
+
+.button-probe {
+ width: 89px;
+ height: 48px;
+ margin: 0 18px 0 10px;
+ object-fit: contain;
+ border-radius: 2px;
+ box-shadow: 0 1px 2px 0 rgba(0, 0, 0, 0.4);
+ background-image: linear-gradient(to bottom, #818a8f 0%, #42494e 98%);
+ &-label {
+ width: 52px;
+ height: 21px;
+ padding: 14px 18px 13px 19px;
+ object-fit: contain;
+
+ font-size: 18px;
+ font-weight: 500;
+ font-stretch: normal;
+ font-style: normal;
+ line-height: normal;
+ letter-spacing: normal;
+ text-align: center;
+ color: @very-light-pink;
+ }
+}
+
+.controlli-button-group-container {
+ display: inline-block;
+ margin-left: 30px;
+ margin-right: 187px;
+
+ .controlli-button-group-n {
+ position: relative;
+ display: flex;
+ align-items: center;
+
+ .button-control-minus {
+ width: 48px;
+ height: 48px;
+ margin: 8px;
+ display: flex;
+ justify-content: center;
+ object-fit: contain;
+ border-radius: 2px;
+ box-shadow: 0 1px 2px 0 rgba(0, 0, 0, 0.4);
+ background-image: linear-gradient(to bottom, #818a8f 0%, #42494e 98%);
+ }
+
+ .button-control-plus {
+ width: 48px;
+ height: 48px;
+ margin: 8px;
+ display: flex;
+ justify-content: center;
+ object-fit: contain;
+ border-radius: 2px;
+ box-shadow: 0 1px 2px 0 rgba(0, 0, 0, 0.4);
+ background-image: linear-gradient(to bottom, #818a8f 0%, #42494e 98%);
+ }
+ .controlli-field {
+ width: 106px;
+ height: 48px;
+ display: flex;
+ justify-content: center;
+ align-items: center;
+ border-radius: 2px;
+ box-shadow: 0 1px 3px 0 @black-50;
+ background-color: @very-light-pink-two;
+ }
+ }
+}
+
+.button-control-value-label {
+ margin: 8px 8px 8px 8px;
+}
+
+.controlli-button-minus-icon {
+ margin-top: 4px;
+}
+
+.controlli-button-plus-icon {
+ margin-top: 4px;
+}
+
+.controlli {
+ object-fit: contain;
+}
diff --git a/Thermo.Active/wwwroot/src/app_modules_thermo/sotto-cofano/Assi/components/tables/assi-table/assi-table.ts b/Thermo.Active/wwwroot/src/app_modules_thermo/sotto-cofano/Assi/components/tables/assi-table/assi-table.ts
new file mode 100644
index 00000000..72ea9705
--- /dev/null
+++ b/Thermo.Active/wwwroot/src/app_modules_thermo/sotto-cofano/Assi/components/tables/assi-table/assi-table.ts
@@ -0,0 +1,110 @@
+import { Component, Vue } from "vue-property-decorator";
+
+@Component({})
+export default class AssiTable extends Vue {
+ data = [];
+ groupedData = [];
+ hon = false;
+ groupVisible: string[] = [];
+
+ mounted() {
+ this.hon = false;
+ this.data = [
+ {
+ axis: "W1",
+ group: "W",
+ level: 0,
+ position: 227.71,
+ velocity: 374,
+ torque: "0.85 Nm",
+ status: "Upper",
+ errorCode: 150,
+ faseMotion: 123654
+ },
+ {
+ axis: "W2",
+ group: "W",
+ level: 1,
+ position: 227.71,
+ velocity: 374,
+ torque: "0.85 Nm",
+ status: "Upper",
+ errorCode: 150,
+ faseMotion: 123654
+ },
+ {
+ axis: "W3",
+ group: "W",
+ level: 1,
+ position: 227.71,
+ velocity: 374,
+ torque: "0.85 Nm",
+ status: "Upper",
+ errorCode: 150,
+ faseMotion: 123654
+ },
+ {
+ axis: "Z1",
+ group: "Z",
+ level: 0,
+ position: 227.71,
+ velocity: 374,
+ torque: "0.85 Nm",
+ status: "Upper",
+ errorCode: 150,
+ faseMotion: 123654
+ },
+ {
+ axis: "Z2",
+ group: "Z",
+ level: 1,
+ position: 227.71,
+ velocity: 374,
+ torque: "0.85 Nm",
+ status: "Upper",
+ errorCode: 150,
+ faseMotion: 123654
+ }
+ ];
+ this.groupReduce(this.data);
+ }
+
+ groupReduce(data) {
+ this.groupedData = data.reduce((acc, item) => {
+ if (Object.keys(acc).length > 0 && acc[item.group]) {
+ acc[item.group].push({
+ axis: item.axis,
+ level: item.level,
+ position: item.position,
+ velocity: item.velocity,
+ torque: item.torque,
+ status: item.status,
+ errorCode: item.errorCode,
+ faseMotion: item.faseMotion,
+ group: item.group
+ });
+ } else {
+ acc[item.group] = [
+ {
+ axis: item.axis,
+ level: item.level,
+ position: item.position,
+ velocity: item.velocity,
+ torque: item.torque,
+ status: item.status,
+ errorCode: item.errorCode,
+ faseMotion: item.faseMotion,
+ group: item.group
+ }
+ ];
+ }
+ return acc;
+ }, {});
+ }
+
+ openCollapse(group: string) {
+ const idx = this.groupVisible.indexOf(group);
+ if (idx >= 0) this.groupVisible.splice(idx, 1);
+ else this.groupVisible.push(group);
+ }
+}
diff --git a/Thermo.Active/wwwroot/src/app_modules_thermo/sotto-cofano/Assi/components/tables/assi-table/assi-table.vue b/Thermo.Active/wwwroot/src/app_modules_thermo/sotto-cofano/Assi/components/tables/assi-table/assi-table.vue
new file mode 100644
index 00000000..89a14b44
--- /dev/null
+++ b/Thermo.Active/wwwroot/src/app_modules_thermo/sotto-cofano/Assi/components/tables/assi-table/assi-table.vue
@@ -0,0 +1,178 @@
+
+
+
+
+
+ | Axis |
+ Position |
+ Velocity |
+ Torque |
+ Status |
+ Error Code |
+ Fase Motion |
+
+
+
+
+
+
+ |
+
+
+
+
+ |
+
+
+ {{ item.axis }}
+
+ |
+
+
+ {{ item.position }}
+
+ |
+
+
+ {{ item.velocity }}
+
+ |
+
+
+ {{ item.torque }}
+
+ |
+
+
+ {{ item.status }}
+
+ |
+
+
+ {{ item.errorCode }}
+
+ |
+
+
+ {{ item.faseMotion }}
+
+ |
+
+
+ Align
+
+
+ Set Slaves Position
+
+
+ Probe
+
+ |
+
+
+ |
+
+ {{ item.axis }}
+
+ |
+
+
+ {{ item.position }}
+
+ |
+
+
+ {{ item.velocity }}
+
+ |
+
+
+ {{ item.torque }}
+
+ |
+
+
+ {{ item.status }}
+
+ |
+
+
+ {{ item.errorCode }}
+
+ |
+
+
+ {{ item.faseMotion }}
+
+ |
+
+
+ |
+
+
+
+
+
+
+
+
+
diff --git a/Thermo.Active/wwwroot/src/app_modules_thermo/sotto-cofano/InputOutput/components/io/io.less b/Thermo.Active/wwwroot/src/app_modules_thermo/sotto-cofano/InputOutput/components/io/io.less
new file mode 100644
index 00000000..2e1f861e
--- /dev/null
+++ b/Thermo.Active/wwwroot/src/app_modules_thermo/sotto-cofano/InputOutput/components/io/io.less
@@ -0,0 +1,43 @@
+@import "../../../variable.less";
+span {
+ display: inline-block;
+}
+
+.column-page-header {
+ width: 672px;
+ margin: 0 0 0 20px;
+ > title {
+ display: flex;
+ justify-content: center;
+ font-size: 26px;
+ font-weight: 500;
+ line-height: 1.96;
+ text-align: center;
+ color: @white;
+ }
+
+ .row-list {
+ display: flex;
+ flex-flow: row wrap;
+ a {
+ cursor: pointer;
+ height: 45px;
+ padding: 0 13px;
+ font-size: 18px;
+ font-weight: 500;
+ display: flex;
+ align-items: center;
+ text-align: center;
+ color: @white;
+ text-decoration: underline;
+
+ &.upper {
+ text-transform: uppercase;
+ }
+ }
+ }
+}
+
+.row-list-input {
+ height: 100px;
+}
diff --git a/Thermo.Active/wwwroot/src/app_modules_thermo/sotto-cofano/InputOutput/components/io/io.ts b/Thermo.Active/wwwroot/src/app_modules_thermo/sotto-cofano/InputOutput/components/io/io.ts
new file mode 100644
index 00000000..7afce795
--- /dev/null
+++ b/Thermo.Active/wwwroot/src/app_modules_thermo/sotto-cofano/InputOutput/components/io/io.ts
@@ -0,0 +1,26 @@
+import { store } from "@/store";
+import { Component, Vue } from "vue-property-decorator";
+import Header from "../../../header/my-header.vue";
+import MenuSx from "../../../menu-sx/menu-sx.vue";
+import InputTable from "../tables/inputTab/input.vue";
+import OutputTable from "../tables/outputTab/output.vue";
+
+@Component({
+ components: {
+ Header,
+ MenuSx,
+ InputTable,
+ OutputTable
+ }
+})
+export default class IO extends Vue {
+
+ get items(): server.channels {
+ return store.state.underTheHood.ioChannels;
+ }
+
+ get config(): { [id: string]: number[] } {
+ return store.state.underTheHood.ioChannelsConfig;
+ }
+
+}
diff --git a/Thermo.Active/wwwroot/src/app_modules_thermo/sotto-cofano/InputOutput/components/io/io.vue b/Thermo.Active/wwwroot/src/app_modules_thermo/sotto-cofano/InputOutput/components/io/io.vue
new file mode 100644
index 00000000..e90fdb5d
--- /dev/null
+++ b/Thermo.Active/wwwroot/src/app_modules_thermo/sotto-cofano/InputOutput/components/io/io.vue
@@ -0,0 +1,37 @@
+
+
+
+
+
diff --git a/Thermo.Active/wwwroot/src/app_modules_thermo/sotto-cofano/InputOutput/components/tables/inputTab/input-row-item.ts b/Thermo.Active/wwwroot/src/app_modules_thermo/sotto-cofano/InputOutput/components/tables/inputTab/input-row-item.ts
new file mode 100644
index 00000000..51359108
--- /dev/null
+++ b/Thermo.Active/wwwroot/src/app_modules_thermo/sotto-cofano/InputOutput/components/tables/inputTab/input-row-item.ts
@@ -0,0 +1,18 @@
+import Component from "vue-class-component";
+import Vue from "vue";
+import { Prop } from "vue-property-decorator";
+
+@Component({})
+export default class inputRow extends Vue {
+
+ @Prop()
+ pinned: boolean;
+
+ @Prop()
+ item: server.channel;
+
+ @Prop()
+ group: string;
+
+
+}
\ No newline at end of file
diff --git a/Thermo.Active/wwwroot/src/app_modules_thermo/sotto-cofano/InputOutput/components/tables/inputTab/input-row-item.vue b/Thermo.Active/wwwroot/src/app_modules_thermo/sotto-cofano/InputOutput/components/tables/inputTab/input-row-item.vue
new file mode 100644
index 00000000..156734e8
--- /dev/null
+++ b/Thermo.Active/wwwroot/src/app_modules_thermo/sotto-cofano/InputOutput/components/tables/inputTab/input-row-item.vue
@@ -0,0 +1,47 @@
+
+
+ |
+
+ |
+
+ {{ item.page }}
+ |
+
+ {{ item.wire }}
+ |
+
+ {{ item.profinet }}
+ |
+
+ {{ item.label | localize(item.label) }}
+ |
+
+
+ ON
+ OFF
+
+ |
+
+ {{item.value}}
+ |
+
+
+
\ No newline at end of file
diff --git a/Thermo.Active/wwwroot/src/app_modules_thermo/sotto-cofano/InputOutput/components/tables/inputTab/input.less b/Thermo.Active/wwwroot/src/app_modules_thermo/sotto-cofano/InputOutput/components/tables/inputTab/input.less
new file mode 100644
index 00000000..98b9e663
--- /dev/null
+++ b/Thermo.Active/wwwroot/src/app_modules_thermo/sotto-cofano/InputOutput/components/tables/inputTab/input.less
@@ -0,0 +1,58 @@
+@import "../../../../variable.less";
+
+th,
+td {
+ &.input-description {
+ width: 350px;
+ max-width: 350px;
+ }
+
+ &.ai {
+ font-weight: bold;
+ text-align: right;
+ span {
+ margin: 0 20px 0 10px;
+ }
+ }
+}
+
+.value-button-input-container-off {
+ width: 48px;
+ height: 25px;
+ margin: 20px 10px 19px 10px;
+ padding: 3px 0;
+ border-radius: 2px;
+ float: right;
+ display: flex;
+ justify-content: center;
+ align-items: center;
+ background-color: @greyish-brown;
+ &-label {
+ width: 48px;
+ height: 19px;
+ padding: 2px 0 0 0px;
+ text-shadow: 0 0 4px @black-50;
+ font-size: 16px;
+ text-align: center;
+ color: #e8e8e8;
+ }
+}
+
+.value-button-input-container-on {
+ width: 48px;
+ height: 25px;
+ margin: 20px 10px 19px 10px;
+ padding: 3px 0;
+ border-radius: 2px;
+ float: right;
+ background-color: @clear-blue;
+ &-label {
+ width: 48px;
+ height: 19px;
+ padding: 2px 0 0 0px;
+ text-shadow: 0 0 4px rgba(0, 0, 0, 0.5);
+ font-size: 16px;
+ text-align: center;
+ color: #e8e8e8;
+ }
+}
diff --git a/Thermo.Active/wwwroot/src/app_modules_thermo/sotto-cofano/InputOutput/components/tables/inputTab/input.ts b/Thermo.Active/wwwroot/src/app_modules_thermo/sotto-cofano/InputOutput/components/tables/inputTab/input.ts
new file mode 100644
index 00000000..8381f4cf
--- /dev/null
+++ b/Thermo.Active/wwwroot/src/app_modules_thermo/sotto-cofano/InputOutput/components/tables/inputTab/input.ts
@@ -0,0 +1,32 @@
+import { store } from "@/store";
+import { Component, Vue } from "vue-property-decorator";
+import inputRow from "./input-row-item.vue";
+
+@Component({
+ components: { inputRow }
+})
+export default class InputTable extends Vue {
+
+ pinned = [];
+
+
+
+ pin(item: server.channel) {
+ let found = this.pinned.findIndex(i => i == item);
+ if (found >= 0) this.pinned.splice(found, 1);
+ else
+ this.pinned.push(item);
+ }
+
+ isPinned(item: server.channel): boolean {
+ return this.pinned.findIndex(i => i == item) >= 0;
+ }
+
+ get items(): server.channels {
+ return store.state.underTheHood.ioChannels;
+ }
+
+ get config(): { [id: string]: number[] } {
+ return store.state.underTheHood.ioChannelsConfig;
+ }
+}
diff --git a/Thermo.Active/wwwroot/src/app_modules_thermo/sotto-cofano/InputOutput/components/tables/inputTab/input.vue b/Thermo.Active/wwwroot/src/app_modules_thermo/sotto-cofano/InputOutput/components/tables/inputTab/input.vue
new file mode 100644
index 00000000..a89435ae
--- /dev/null
+++ b/Thermo.Active/wwwroot/src/app_modules_thermo/sotto-cofano/InputOutput/components/tables/inputTab/input.vue
@@ -0,0 +1,52 @@
+
+
+
+
+
diff --git a/Thermo.Active/wwwroot/src/app_modules_thermo/sotto-cofano/InputOutput/components/tables/outputTab/output copy.vue b/Thermo.Active/wwwroot/src/app_modules_thermo/sotto-cofano/InputOutput/components/tables/outputTab/output copy.vue
new file mode 100644
index 00000000..968a5817
--- /dev/null
+++ b/Thermo.Active/wwwroot/src/app_modules_thermo/sotto-cofano/InputOutput/components/tables/outputTab/output copy.vue
@@ -0,0 +1,111 @@
+
+
+
+
+
+
+
+
+
+ |
+ {{ i.nome }}
+ |
+
+
+
+
+
+
+
+
+ |
+
+ {{ item.page }}
+ |
+
+ {{ item.wire }}
+ |
+
+ {{ item.profinet }}
+ |
+
+
+ {{ item.description }}
+
+ |
+
+
+ ON
+ OFF
+
+ |
+
+
+
+ 0
+
+
+ 1
+
+
+
+
+
+ ×
+
+
+ |
+
+
+
+ 1024
+
+
+ |
+ |
+
+
+
+
+
+
+
diff --git a/Thermo.Active/wwwroot/src/app_modules_thermo/sotto-cofano/InputOutput/components/tables/outputTab/output-row-item.ts b/Thermo.Active/wwwroot/src/app_modules_thermo/sotto-cofano/InputOutput/components/tables/outputTab/output-row-item.ts
new file mode 100644
index 00000000..20351c6f
--- /dev/null
+++ b/Thermo.Active/wwwroot/src/app_modules_thermo/sotto-cofano/InputOutput/components/tables/outputTab/output-row-item.ts
@@ -0,0 +1,15 @@
+import Component from "vue-class-component";
+import Vue from "vue";
+import { Prop } from "vue-property-decorator";
+
+@Component({})
+export default class inputRow extends Vue {
+
+ @Prop()
+ pinned: boolean;
+
+ @Prop()
+ item: server.channel;
+
+
+}
\ No newline at end of file
diff --git a/Thermo.Active/wwwroot/src/app_modules_thermo/sotto-cofano/InputOutput/components/tables/outputTab/output-row-item.vue b/Thermo.Active/wwwroot/src/app_modules_thermo/sotto-cofano/InputOutput/components/tables/outputTab/output-row-item.vue
new file mode 100644
index 00000000..0f7cf33c
--- /dev/null
+++ b/Thermo.Active/wwwroot/src/app_modules_thermo/sotto-cofano/InputOutput/components/tables/outputTab/output-row-item.vue
@@ -0,0 +1,45 @@
+
+
+ |
+
+ |
+
+ {{ item.page }}
+ |
+
+ {{ item.wire }}
+ |
+
+ {{ item.profinet }}
+ |
+
+ {{ item.label | localize(item.label) }}
+ |
+
+
+ ON
+ OFF
+
+ |
+ |
+
+
+
\ No newline at end of file
diff --git a/Thermo.Active/wwwroot/src/app_modules_thermo/sotto-cofano/InputOutput/components/tables/outputTab/output.less b/Thermo.Active/wwwroot/src/app_modules_thermo/sotto-cofano/InputOutput/components/tables/outputTab/output.less
new file mode 100644
index 00000000..09023be6
--- /dev/null
+++ b/Thermo.Active/wwwroot/src/app_modules_thermo/sotto-cofano/InputOutput/components/tables/outputTab/output.less
@@ -0,0 +1,14 @@
+@import "../../../../variable.less";
+
+th,
+td {
+ &.output-description {
+ width: 220px;
+ max-width: 220px;
+ }
+
+ &.force {
+ width: 130px;
+ max-width: 130px;
+ }
+}
diff --git a/Thermo.Active/wwwroot/src/app_modules_thermo/sotto-cofano/InputOutput/components/tables/outputTab/output.ts b/Thermo.Active/wwwroot/src/app_modules_thermo/sotto-cofano/InputOutput/components/tables/outputTab/output.ts
new file mode 100644
index 00000000..f3f5ddf3
--- /dev/null
+++ b/Thermo.Active/wwwroot/src/app_modules_thermo/sotto-cofano/InputOutput/components/tables/outputTab/output.ts
@@ -0,0 +1,27 @@
+import { store } from "@/store";
+import { Component, Vue } from "vue-property-decorator";
+import outputRow from "./output-row-item.vue";
+
+
+@Component({
+ components: { outputRow }
+})
+export default class OutputTable extends Vue {
+ pinned = [];
+
+
+ pin(item: server.channel) {
+ let found = this.pinned.findIndex(i => i == item);
+ if (found >= 0) this.pinned.splice(found, 1);
+ else
+ this.pinned.push(item);
+ }
+
+ isPinned(item: server.channel): boolean {
+ return this.pinned.findIndex(i => i == item) >= 0;
+ }
+
+ get items(): server.channels {
+ return store.state.underTheHood.ioChannels;
+ }
+}
diff --git a/Thermo.Active/wwwroot/src/app_modules_thermo/sotto-cofano/InputOutput/components/tables/outputTab/output.vue b/Thermo.Active/wwwroot/src/app_modules_thermo/sotto-cofano/InputOutput/components/tables/outputTab/output.vue
new file mode 100644
index 00000000..bc93d67d
--- /dev/null
+++ b/Thermo.Active/wwwroot/src/app_modules_thermo/sotto-cofano/InputOutput/components/tables/outputTab/output.vue
@@ -0,0 +1,50 @@
+
+
+
+
+
diff --git a/Thermo.Active/wwwroot/src/app_modules_thermo/sotto-cofano/LogCicloAutomatico/components/log-ciclo-automatico/log-ciclo-automatico.less b/Thermo.Active/wwwroot/src/app_modules_thermo/sotto-cofano/LogCicloAutomatico/components/log-ciclo-automatico/log-ciclo-automatico.less
new file mode 100644
index 00000000..a74c201f
--- /dev/null
+++ b/Thermo.Active/wwwroot/src/app_modules_thermo/sotto-cofano/LogCicloAutomatico/components/log-ciclo-automatico/log-ciclo-automatico.less
@@ -0,0 +1,14 @@
+@import "../../../variable.less";
+
+span {
+ display: inline-block;
+}
+
+.log-ciclo-automatico-table {
+ tbody tr:nth-child(odd) {
+ background-color: @fill-under-grey-3-2;
+ }
+ tbody tr:nth-child(even) {
+ background-color: @fill-under-grey-1-2;
+ }
+}
diff --git a/Thermo.Active/wwwroot/src/app_modules_thermo/sotto-cofano/LogCicloAutomatico/components/log-ciclo-automatico/log-ciclo-automatico.ts b/Thermo.Active/wwwroot/src/app_modules_thermo/sotto-cofano/LogCicloAutomatico/components/log-ciclo-automatico/log-ciclo-automatico.ts
new file mode 100644
index 00000000..f618fc7b
--- /dev/null
+++ b/Thermo.Active/wwwroot/src/app_modules_thermo/sotto-cofano/LogCicloAutomatico/components/log-ciclo-automatico/log-ciclo-automatico.ts
@@ -0,0 +1,9 @@
+import { Component, Vue } from "vue-property-decorator";
+import LogCicloAutomaticoTable from "../tables/log-ciclo-automatico-table/log-ciclo-automatico-table.vue";
+import Header from "../../../header/my-header.vue";
+import MenuSx from "../../../menu-sx/menu-sx.vue";
+
+@Component({
+ components: { Header, MenuSx, LogCicloAutomaticoTable }
+})
+export default class LogCicloAutomatico extends Vue {}
diff --git a/Thermo.Active/wwwroot/src/app_modules_thermo/sotto-cofano/LogCicloAutomatico/components/log-ciclo-automatico/log-ciclo-automatico.vue b/Thermo.Active/wwwroot/src/app_modules_thermo/sotto-cofano/LogCicloAutomatico/components/log-ciclo-automatico/log-ciclo-automatico.vue
new file mode 100644
index 00000000..0c7c55b4
--- /dev/null
+++ b/Thermo.Active/wwwroot/src/app_modules_thermo/sotto-cofano/LogCicloAutomatico/components/log-ciclo-automatico/log-ciclo-automatico.vue
@@ -0,0 +1,11 @@
+
+
+
+
+
diff --git a/Thermo.Active/wwwroot/src/app_modules_thermo/sotto-cofano/LogCicloAutomatico/components/tables/log-ciclo-automatico-table/log-ciclo-automatico-table.less b/Thermo.Active/wwwroot/src/app_modules_thermo/sotto-cofano/LogCicloAutomatico/components/tables/log-ciclo-automatico-table/log-ciclo-automatico-table.less
new file mode 100644
index 00000000..bdd38cce
--- /dev/null
+++ b/Thermo.Active/wwwroot/src/app_modules_thermo/sotto-cofano/LogCicloAutomatico/components/tables/log-ciclo-automatico-table/log-ciclo-automatico-table.less
@@ -0,0 +1,186 @@
+@import "../../../../variable.less";
+
+span {
+ display: inline-block;
+}
+
+.log-ciclo-automatico-table {
+ width: 1384px;
+ height: 886px;
+ margin: 20px 20px 0 20px;
+ thead {
+ height: 34px;
+ opacity: 0.5;
+ background-color: @fill-under-grey-1-2;
+ }
+ th {
+ display: inline-block;
+ }
+ tbody {
+ overflow-y: scroll;
+ height: 752px;
+ tr {
+ display: inline-block;
+ width: 1358px;
+ height: 64px;
+ float: left;
+ &-inner {
+ width: 1358px;
+ height: 64px;
+ margin: 34px 26px 0 0;
+ padding: 0 2px 0 10px;
+ }
+ }
+ }
+}
+
+.date-ciclo {
+ width: 63px;
+ height: 12px;
+ margin: 10px 149px 12px 9px;
+
+ font-size: 14px;
+ font-weight: normal;
+ font-stretch: normal;
+ font-style: normal;
+ line-height: 0.86;
+ letter-spacing: normal;
+ color: @white;
+ text-align: left !important;
+ float: left;
+ &-inner {
+ width: 177px;
+ height: 16px;
+ margin: 24px 0px 0px 10px;
+
+ font-size: 14px;
+ font-weight: normal;
+ font-stretch: normal;
+ font-style: normal;
+ line-height: normal;
+ letter-spacing: normal;
+ float: left;
+ text-align: left;
+ color: @very-light-pink;
+ }
+}
+
+.class-ciclo {
+ width: 63px;
+ height: 12px;
+ margin: 10px 36px 12px 0px;
+
+ font-size: 14px;
+ font-weight: normal;
+ font-stretch: normal;
+ font-style: normal;
+ line-height: 0.86;
+ letter-spacing: normal;
+ text-align: center;
+ float: left;
+ color: @white;
+ &-inner {
+ width: 35px;
+ height: 16px;
+ margin: 24px 0px 0px 47px;
+
+ font-size: 14px;
+ font-weight: normal;
+ font-stretch: normal;
+ font-style: normal;
+ line-height: normal;
+ letter-spacing: normal;
+ text-align: center;
+ float: left;
+ color: @very-light-pink;
+ }
+}
+
+.recipe-ciclo {
+ width: 63px;
+ height: 12px;
+ margin: 10px 108px 12px 0px;
+
+ font-size: 14px;
+ font-weight: normal;
+ font-stretch: normal;
+ font-style: normal;
+ line-height: 0.86;
+ letter-spacing: normal;
+ float: left;
+ color: @white;
+ &-inner {
+ width: 121px;
+ height: 16px;
+ margin: 24px 0px 0px 51px;
+
+ font-size: 14px;
+ font-weight: normal;
+ font-stretch: normal;
+ font-style: normal;
+ line-height: normal;
+ letter-spacing: normal;
+ text-align: center;
+ float: left;
+ color: @very-light-pink;
+ }
+}
+
+.message-ciclo {
+ width: 114px;
+ height: 12px;
+ margin: 10px 0px 12px 0px;
+
+ font-size: 14px;
+ font-weight: normal;
+ font-stretch: normal;
+ font-style: normal;
+ line-height: 0.86;
+ letter-spacing: normal;
+ float: left;
+ text-align: left !important;
+ color: @white;
+ &-inner {
+ width: 751px;
+ height: 64px;
+ margin: 18px 0px 0px 50px;
+
+ font-size: 14px;
+ font-weight: normal;
+ font-stretch: normal;
+ font-style: normal;
+ line-height: normal;
+ letter-spacing: normal;
+ float: left;
+ text-align: initial;
+ color: @very-light-pink;
+ }
+}
+
+.button-details {
+ width: 99px;
+ float: right;
+ display: flex;
+ justify-content: center;
+ padding: 14px 0px 13px 0px;
+ margin: 8px 8px 8px 8px;
+ object-fit: contain;
+ border-radius: 2px;
+ box-shadow: 0 1px 2px 0 rgba(0, 0, 0, 0.4);
+ background-image: linear-gradient(to bottom, #818a8f 0%, #42494e 98%);
+ cursor: pointer;
+ &-label {
+ width: 62px;
+ height: 21px;
+ object-fit: contain;
+
+ font-size: 18px;
+ font-weight: 500;
+ font-stretch: normal;
+ font-style: normal;
+ line-height: normal;
+ letter-spacing: normal;
+ text-align: center;
+ color: @very-light-pink;
+ }
+}
diff --git a/Thermo.Active/wwwroot/src/app_modules_thermo/sotto-cofano/LogCicloAutomatico/components/tables/log-ciclo-automatico-table/log-ciclo-automatico-table.ts b/Thermo.Active/wwwroot/src/app_modules_thermo/sotto-cofano/LogCicloAutomatico/components/tables/log-ciclo-automatico-table/log-ciclo-automatico-table.ts
new file mode 100644
index 00000000..516490e7
--- /dev/null
+++ b/Thermo.Active/wwwroot/src/app_modules_thermo/sotto-cofano/LogCicloAutomatico/components/tables/log-ciclo-automatico-table/log-ciclo-automatico-table.ts
@@ -0,0 +1,120 @@
+import { Component, Vue } from "vue-property-decorator";
+
+@Component({})
+export default class LogCicloAutomaticoTable extends Vue {
+ rowData = [];
+
+ mounted() {
+ this.rowData = [
+ {
+ date: "2020-09-16 00:23:20 UTC",
+ class: "Error",
+ recipe: "Recipe name [30]",
+ message:
+ "Donec quis orci eget orci vehicula condimentum. Curabitur in libero ut massa volutpat convallis. Morbi odio odio, elementum eu, interdum eu, tincidunt in, leo. Maecenas pulvinar lobortis est. Phasellus sit amet erat."
+ },
+ {
+ date: "2020-09-16 00:23:20 UTC",
+ class: "Error",
+ recipe: "Recipe name [30]",
+ message:
+ "Fusce lacus purus, aliquet at, feugiat non, pretium quis, lectus. Suspendisse potenti. In eleifend quam a odio. In hac habitasse platea dictumst. Maecenas ut massa quis augue luctus tincidunt."
+ },
+ {
+ date: "2020-09-16 00:23:20 UTC",
+ class: "Error",
+ recipe: "Recipe name [30]",
+ message:
+ "Fusce lacus purus, aliquet at, feugiat non, pretium quis, lectus. Suspendisse potenti. In eleifend quam a odio. In hac habitasse platea dictumst. Maecenas ut massa quis augue luctus tincidunt."
+ },
+ {
+ date: "2020-09-16 00:23:20 UTC",
+ class: "Error",
+ recipe: "Recipe name [30]",
+ message:
+ "Fusce lacus purus, aliquet at, feugiat non, pretium quis, lectus. Suspendisse potenti. In eleifend quam a odio. In hac habitasse platea dictumst. Maecenas ut massa quis augue luctus tincidunt."
+ },
+ {
+ date: "2020-09-16 00:23:20 UTC",
+ class: "Error",
+ recipe: "Recipe name [30]",
+ message:
+ "Fusce lacus purus, aliquet at, feugiat non, pretium quis, lectus. Suspendisse potenti. In eleifend quam a odio. In hac habitasse platea dictumst. Maecenas ut massa quis augue luctus tincidunt."
+ },
+ {
+ date: "2020-09-16 00:23:20 UTC",
+ class: "Error",
+ recipe: "Recipe name [30]",
+ message:
+ "Fusce lacus purus, aliquet at, feugiat non, pretium quis, lectus. Suspendisse potenti. In eleifend quam a odio. In hac habitasse platea dictumst. Maecenas ut massa quis augue luctus tincidunt."
+ },
+ {
+ date: "2020-09-16 00:23:20 UTC",
+ class: "Error",
+ recipe: "Recipe name [30]",
+ message:
+ "Fusce lacus purus, aliquet at, feugiat non, pretium quis, lectus. Suspendisse potenti. In eleifend quam a odio. In hac habitasse platea dictumst. Maecenas ut massa quis augue luctus tincidunt."
+ },
+ {
+ date: "2020-09-16 00:23:20 UTC",
+ class: "Error",
+ recipe: "Recipe name [30]",
+ message:
+ "Fusce lacus purus, aliquet at, feugiat non, pretium quis, lectus. Suspendisse potenti. In eleifend quam a odio. In hac habitasse platea dictumst. Maecenas ut massa quis augue luctus tincidunt."
+ },
+ {
+ date: "2020-09-16 00:23:20 UTC",
+ class: "Error",
+ recipe: "Recipe name [30]",
+ message:
+ "Fusce lacus purus, aliquet at, feugiat non, pretium quis, lectus. Suspendisse potenti. In eleifend quam a odio. In hac habitasse platea dictumst. Maecenas ut massa quis augue luctus tincidunt."
+ },
+ {
+ date: "2020-09-16 00:23:20 UTC",
+ class: "Error",
+ recipe: "Recipe name [30]",
+ message:
+ "Fusce lacus purus, aliquet at, feugiat non, pretium quis, lectus. Suspendisse potenti. In eleifend quam a odio. In hac habitasse platea dictumst. Maecenas ut massa quis augue luctus tincidunt."
+ },
+ {
+ date: "2020-09-16 00:23:20 UTC",
+ class: "Error",
+ recipe: "Recipe name [30]",
+ message:
+ "Fusce lacus purus, aliquet at, feugiat non, pretium quis, lectus. Suspendisse potenti. In eleifend quam a odio. In hac habitasse platea dictumst. Maecenas ut massa quis augue luctus tincidunt."
+ },
+ {
+ date: "2020-09-16 00:23:20 UTC",
+ class: "Error",
+ recipe: "Recipe name [30]",
+ message:
+ "Fusce lacus purus, aliquet at, feugiat non, pretium quis, lectus. Suspendisse potenti. In eleifend quam a odio. In hac habitasse platea dictumst. Maecenas ut massa quis augue luctus tincidunt."
+ },
+ {
+ date: "2020-09-16 00:23:20 UTC",
+ class: "Error",
+ recipe: "Recipe name [30]",
+ message:
+ "Fusce lacus purus, aliquet at, feugiat non, pretium quis, lectus. Suspendisse potenti. In eleifend quam a odio. In hac habitasse platea dictumst. Maecenas ut massa quis augue luctus tincidunt."
+ },
+ {
+ date: "2020-09-16 00:23:20 UTC",
+ class: "Error",
+ recipe: "Recipe name [30]",
+ message:
+ "Fusce lacus purus, aliquet at, feugiat non, pretium quis, lectus. Suspendisse potenti. In eleifend quam a odio. In hac habitasse platea dictumst. Maecenas ut massa quis augue luctus tincidunt."
+ },
+ {
+ date: "2020-09-16 00:23:20 UTC",
+ class: "Error",
+ recipe: "Recipe name [30]",
+ message:
+ "Fusce lacus purus, aliquet at, feugiat non, pretium quis, lectus. Suspendisse potenti. In eleifend quam a odio. In hac habitasse platea dictumst. Maecenas ut massa quis augue luctus tincidunt."
+ }
+ ];
+ }
+
+ goToDetails() {
+ this.$router.push({ path: "/io" });
+ }
+}
diff --git a/Thermo.Active/wwwroot/src/app_modules_thermo/sotto-cofano/LogCicloAutomatico/components/tables/log-ciclo-automatico-table/log-ciclo-automatico-table.vue b/Thermo.Active/wwwroot/src/app_modules_thermo/sotto-cofano/LogCicloAutomatico/components/tables/log-ciclo-automatico-table/log-ciclo-automatico-table.vue
new file mode 100644
index 00000000..105321a5
--- /dev/null
+++ b/Thermo.Active/wwwroot/src/app_modules_thermo/sotto-cofano/LogCicloAutomatico/components/tables/log-ciclo-automatico-table/log-ciclo-automatico-table.vue
@@ -0,0 +1,45 @@
+
+
+
+
+
+ | Date |
+ Class |
+ Recipe |
+ Message |
+
+
+
+
+ |
+
+ {{ item.date }}
+
+ |
+
+
+ {{ item.class }}
+
+ |
+
+
+ {{ item.recipe }}
+
+ |
+
+
+ {{ item.message }}
+
+
+ Details
+
+ |
+
+
+
+
+
+
+
diff --git a/Thermo.Active/wwwroot/src/app_modules_thermo/sotto-cofano/LogMisurazioni/components/log-misurazioni/log-misurazioni.less b/Thermo.Active/wwwroot/src/app_modules_thermo/sotto-cofano/LogMisurazioni/components/log-misurazioni/log-misurazioni.less
new file mode 100644
index 00000000..8fad87c5
--- /dev/null
+++ b/Thermo.Active/wwwroot/src/app_modules_thermo/sotto-cofano/LogMisurazioni/components/log-misurazioni/log-misurazioni.less
@@ -0,0 +1 @@
+@import "../../../variable.less";
diff --git a/Thermo.Active/wwwroot/src/app_modules_thermo/sotto-cofano/LogMisurazioni/components/log-misurazioni/log-misurazioni.ts b/Thermo.Active/wwwroot/src/app_modules_thermo/sotto-cofano/LogMisurazioni/components/log-misurazioni/log-misurazioni.ts
new file mode 100644
index 00000000..7accb43b
--- /dev/null
+++ b/Thermo.Active/wwwroot/src/app_modules_thermo/sotto-cofano/LogMisurazioni/components/log-misurazioni/log-misurazioni.ts
@@ -0,0 +1,9 @@
+import { Component, Vue } from "vue-property-decorator";
+import Header from "../../../header/my-header.vue";
+import MenuSx from "../../../menu-sx/menu-sx.vue";
+import LogMisurazioniTable from "../../../LogMisurazioni/components/tables/log-misurazioni-table/log-misurazioni-table.vue";
+
+@Component({
+ components: { Header, MenuSx, LogMisurazioniTable }
+})
+export default class LogMisurazioni extends Vue {}
diff --git a/Thermo.Active/wwwroot/src/app_modules_thermo/sotto-cofano/LogMisurazioni/components/log-misurazioni/log-misurazioni.vue b/Thermo.Active/wwwroot/src/app_modules_thermo/sotto-cofano/LogMisurazioni/components/log-misurazioni/log-misurazioni.vue
new file mode 100644
index 00000000..accfddda
--- /dev/null
+++ b/Thermo.Active/wwwroot/src/app_modules_thermo/sotto-cofano/LogMisurazioni/components/log-misurazioni/log-misurazioni.vue
@@ -0,0 +1,11 @@
+
+
+
+
+
diff --git a/Thermo.Active/wwwroot/src/app_modules_thermo/sotto-cofano/LogMisurazioni/components/tables/log-misurazioni-table/log-misurazioni-table.less b/Thermo.Active/wwwroot/src/app_modules_thermo/sotto-cofano/LogMisurazioni/components/tables/log-misurazioni-table/log-misurazioni-table.less
new file mode 100644
index 00000000..3f7c1d92
--- /dev/null
+++ b/Thermo.Active/wwwroot/src/app_modules_thermo/sotto-cofano/LogMisurazioni/components/tables/log-misurazioni-table/log-misurazioni-table.less
@@ -0,0 +1,163 @@
+@import "../../../../variable.less";
+
+span {
+ display: inline-block;
+}
+
+.log-misurazioni-table {
+ width: 1384px;
+ height: 886px;
+ margin: 20px 20px 0 20px;
+ thead {
+ height: 34px;
+ opacity: 0.5;
+ background-color: @fill-under-grey-1-2;
+ }
+ th {
+ display: inline-block;
+ }
+ tbody tr:nth-child(odd) {
+ background-color: @fill-under-grey-3-2;
+ }
+ tbody tr:nth-child(even) {
+ background-color: @fill-under-grey-1-2;
+ }
+ tbody {
+ overflow-y: scroll;
+ height: 752px;
+ tr {
+ display: inline-block;
+ width: 1358px;
+ height: 64px;
+ float: left;
+ &-inner {
+ width: 1358px;
+ height: 64px;
+ margin: 34px 26px 0 0;
+ padding: 0 2px 0 10px;
+ }
+ }
+ }
+}
+
+.date-misurazioni {
+ width: 63px;
+ height: 12px;
+ margin: 10px 0px 12px 9px;
+
+ font-size: 14px;
+ font-weight: normal;
+ font-stretch: normal;
+ font-style: normal;
+ line-height: 0.86;
+ letter-spacing: normal;
+ color: @white;
+ text-align: left !important;
+ float: left;
+ &-inner {
+ width: 164px;
+ height: 16px;
+ margin: 24px 0px 24px 10px;
+
+ font-size: 14px;
+ font-weight: normal;
+ font-stretch: normal;
+ font-style: normal;
+ line-height: normal;
+ letter-spacing: normal;
+ text-align: left !important;
+ float: left;
+ color: @very-light-pink;
+ }
+}
+
+.recipe-misurazioni {
+ width: 63px;
+ height: 12px;
+ margin: 10px 0px 12px 267px;
+
+ font-size: 14px;
+ font-weight: normal;
+ font-stretch: normal;
+ font-style: normal;
+ line-height: 0.86;
+ letter-spacing: normal;
+ text-align: left;
+ float: left;
+ color: @white;
+ &-inner {
+ width: 121px;
+ height: 16px;
+ margin: 24px 0px 24px 139px;
+
+ font-size: 14px;
+ font-weight: normal;
+ font-stretch: normal;
+ font-style: normal;
+ line-height: normal;
+ letter-spacing: normal;
+ text-align: center !important;
+ float: left;
+ color: @very-light-pink;
+ }
+}
+
+.type-misurazioni {
+ width: 63px;
+ height: 12px;
+ margin: 10px 0 12px 448px;
+
+ font-size: 14px;
+ font-weight: normal;
+ font-stretch: normal;
+ font-style: normal;
+ line-height: 0.86;
+ letter-spacing: normal;
+ text-align: left !important;
+ float: left;
+ color: @white;
+ &-inner {
+ width: 48px;
+ height: 16px;
+ margin: 24px 0px 24px 410px;
+
+ font-size: 14px;
+ font-weight: normal;
+ font-stretch: normal;
+ font-style: normal;
+ line-height: normal;
+ letter-spacing: normal;
+ float: left;
+ color: @very-light-pink;
+ }
+}
+
+.value-misurazioni {
+ width: 63px;
+ height: 12px;
+ margin: 10px 268px 12px 124px;
+
+ font-size: 14px;
+ font-weight: normal;
+ font-stretch: normal;
+ font-style: normal;
+ line-height: 0.86;
+ letter-spacing: normal;
+ text-align: left !important;
+ color: @white;
+ &-inner {
+ width: 253px;
+ height: 16px;
+ margin: 24px 69px 24px 142px;
+
+ font-size: 14px;
+ font-weight: normal;
+ font-stretch: normal;
+ font-style: normal;
+ line-height: normal;
+ letter-spacing: normal;
+ float: left;
+ text-align: initial;
+ color: @very-light-pink;
+ }
+}
diff --git a/Thermo.Active/wwwroot/src/app_modules_thermo/sotto-cofano/LogMisurazioni/components/tables/log-misurazioni-table/log-misurazioni-table.ts b/Thermo.Active/wwwroot/src/app_modules_thermo/sotto-cofano/LogMisurazioni/components/tables/log-misurazioni-table/log-misurazioni-table.ts
new file mode 100644
index 00000000..600c442a
--- /dev/null
+++ b/Thermo.Active/wwwroot/src/app_modules_thermo/sotto-cofano/LogMisurazioni/components/tables/log-misurazioni-table/log-misurazioni-table.ts
@@ -0,0 +1,83 @@
+import { Component, Vue } from "vue-property-decorator";
+
+@Component({})
+export default class LogMisurazioniTable extends Vue {
+ rowData = [];
+
+ mounted() {
+ this.rowData = [
+ {
+ date: "2020-09-16 00:23:20 UTC",
+ recipe: "Recipe name [30]",
+ type: "Lenght",
+ value: "568.08 mm [589.92 mm - 21.84 mm]"
+ },
+ {
+ date: "2020-09-16 00:23:20 UTC",
+ recipe: "Recipe name [30]",
+ type: "Lenght",
+ value: "568.08 mm [589.92 mm - 21.84 mm]"
+ },
+ {
+ date: "2020-09-16 00:23:20 UTC",
+ recipe: "Recipe name [30]",
+ type: "Lenght",
+ value: "568.08 mm [589.92 mm - 21.84 mm]"
+ },
+ {
+ date: "2020-09-16 00:23:20 UTC",
+ recipe: "Recipe name [30]",
+ type: "Lenght",
+ value: "568.08 mm [589.92 mm - 21.84 mm]"
+ },
+ {
+ date: "2020-09-16 00:23:20 UTC",
+ recipe: "Recipe name [30]",
+ type: "Lenght",
+ value: "568.08 mm [589.92 mm - 21.84 mm]"
+ },
+ {
+ date: "2020-09-16 00:23:20 UTC",
+ recipe: "Recipe name [30]",
+ type: "Lenght",
+ value: "568.08 mm [589.92 mm - 21.84 mm]"
+ },
+ {
+ date: "2020-09-16 00:23:20 UTC",
+ recipe: "Recipe name [30]",
+ type: "Lenght",
+ value: "568.08 mm [589.92 mm - 21.84 mm]"
+ },
+ {
+ date: "2020-09-16 00:23:20 UTC",
+ recipe: "Recipe name [30]",
+ type: "Lenght",
+ value: "568.08 mm [589.92 mm - 21.84 mm]"
+ },
+ {
+ date: "2020-09-16 00:23:20 UTC",
+ recipe: "Recipe name [30]",
+ type: "Lenght",
+ value: "568.08 mm [589.92 mm - 21.84 mm]"
+ },
+ {
+ date: "2020-09-16 00:23:20 UTC",
+ recipe: "Recipe name [30]",
+ type: "Lenght",
+ value: "568.08 mm [589.92 mm - 21.84 mm]"
+ },
+ {
+ date: "2020-09-16 00:23:20 UTC",
+ recipe: "Recipe name [30]",
+ type: "Lenght",
+ value: "568.08 mm [589.92 mm - 21.84 mm]"
+ },
+ {
+ date: "2020-09-16 00:23:20 UTC",
+ recipe: "Recipe name [30]",
+ type: "Lenght",
+ value: "568.08 mm [589.92 mm - 21.84 mm]"
+ }
+ ];
+ }
+}
diff --git a/Thermo.Active/wwwroot/src/app_modules_thermo/sotto-cofano/LogMisurazioni/components/tables/log-misurazioni-table/log-misurazioni-table.vue b/Thermo.Active/wwwroot/src/app_modules_thermo/sotto-cofano/LogMisurazioni/components/tables/log-misurazioni-table/log-misurazioni-table.vue
new file mode 100644
index 00000000..39ac4369
--- /dev/null
+++ b/Thermo.Active/wwwroot/src/app_modules_thermo/sotto-cofano/LogMisurazioni/components/tables/log-misurazioni-table/log-misurazioni-table.vue
@@ -0,0 +1,42 @@
+
+
+
+
+
+ | Date |
+ Recipe |
+ Type |
+ Value |
+
+
+
+
+ |
+
+ {{ item.date }}
+
+ |
+
+
+ {{ item.recipe }}
+
+ |
+
+
+ {{ item.type }}
+
+ |
+
+
+ {{ item.value }}
+
+ |
+
+
+
+
+
+
+
diff --git a/Thermo.Active/wwwroot/src/app_modules_thermo/sotto-cofano/Riscaldi/components/riscaldi/riscaldi.less b/Thermo.Active/wwwroot/src/app_modules_thermo/sotto-cofano/Riscaldi/components/riscaldi/riscaldi.less
new file mode 100644
index 00000000..8fad87c5
--- /dev/null
+++ b/Thermo.Active/wwwroot/src/app_modules_thermo/sotto-cofano/Riscaldi/components/riscaldi/riscaldi.less
@@ -0,0 +1 @@
+@import "../../../variable.less";
diff --git a/Thermo.Active/wwwroot/src/app_modules_thermo/sotto-cofano/Riscaldi/components/riscaldi/riscaldi.ts b/Thermo.Active/wwwroot/src/app_modules_thermo/sotto-cofano/Riscaldi/components/riscaldi/riscaldi.ts
new file mode 100644
index 00000000..3f718a72
--- /dev/null
+++ b/Thermo.Active/wwwroot/src/app_modules_thermo/sotto-cofano/Riscaldi/components/riscaldi/riscaldi.ts
@@ -0,0 +1,9 @@
+import { Component, Vue } from "vue-property-decorator";
+import Header from "../../../header/my-header.vue";
+import MenuSx from "../../../menu-sx/menu-sx.vue";
+import RiscaldiTable from "../../../Riscaldi/components/tables/riscaldi-table/riscaldi-table.vue";
+
+@Component({
+ components: { Header, MenuSx, RiscaldiTable }
+})
+export default class Riscaldi extends Vue {}
diff --git a/Thermo.Active/wwwroot/src/app_modules_thermo/sotto-cofano/Riscaldi/components/riscaldi/riscaldi.vue b/Thermo.Active/wwwroot/src/app_modules_thermo/sotto-cofano/Riscaldi/components/riscaldi/riscaldi.vue
new file mode 100644
index 00000000..466b86e7
--- /dev/null
+++ b/Thermo.Active/wwwroot/src/app_modules_thermo/sotto-cofano/Riscaldi/components/riscaldi/riscaldi.vue
@@ -0,0 +1,11 @@
+
+
+
+
+
diff --git a/Thermo.Active/wwwroot/src/app_modules_thermo/sotto-cofano/Riscaldi/components/tables/riscaldi-table/riscaldi-table.less b/Thermo.Active/wwwroot/src/app_modules_thermo/sotto-cofano/Riscaldi/components/tables/riscaldi-table/riscaldi-table.less
new file mode 100644
index 00000000..b58f7356
--- /dev/null
+++ b/Thermo.Active/wwwroot/src/app_modules_thermo/sotto-cofano/Riscaldi/components/tables/riscaldi-table/riscaldi-table.less
@@ -0,0 +1,268 @@
+@import "../../../../variable.less";
+
+span {
+ display: inline-block;
+}
+
+.riscaldi-table {
+ width: 1384px;
+ height: 886px;
+ margin: 20px 20px 0 20px;
+ thead {
+ height: 34px;
+ opacity: 0.5;
+ background-color: @fill-under-grey-1-2;
+ }
+ th {
+ display: inline-block;
+ }
+ tbody {
+ overflow-y: scroll;
+ height: 752px;
+ tr:nth-child(odd) {
+ background-color: @fill-under-grey-3-2;
+ }
+ tr {
+ display: inline-block;
+ width: 1358px;
+ height: 64px;
+
+ &-inner {
+ width: 1358px;
+ height: 64px;
+ margin: 34px 26px 0 0;
+ padding: 0 2px 0 10px;
+ }
+ }
+ }
+}
+
+.cell-id {
+ height: 16px;
+ margin: 10px 0px 12px 9px;
+
+ font-size: 14px;
+ font-weight: normal;
+ font-stretch: normal;
+ font-style: normal;
+ line-height: normal;
+ letter-spacing: normal;
+ text-align: left;
+ float: left;
+ color: @very-light-pink;
+ &-inner {
+ width: 6px;
+ height: 16px;
+ margin: 24px 0px 24px 10px;
+
+ font-size: 14px;
+ font-weight: normal;
+ font-stretch: normal;
+ font-style: normal;
+ line-height: normal;
+ letter-spacing: normal;
+ float: left;
+ color: @very-light-pink;
+ }
+}
+
+.current {
+ width: 63px;
+ height: 12px;
+ margin: 10px 0px 12px 173px;
+
+ font-size: 14px;
+ font-weight: normal;
+ font-stretch: normal;
+ font-style: normal;
+ line-height: 0.86;
+ letter-spacing: normal;
+ text-align: center;
+ float: left;
+ color: @white;
+ &-inner {
+ width: 44px;
+ height: 16px;
+ margin: 24px 0px 24px 216px;
+
+ font-size: 14px;
+ font-weight: normal;
+ font-stretch: normal;
+ font-style: normal;
+ line-height: normal;
+ letter-spacing: normal;
+ text-align: center;
+ float: left;
+ color: @very-light-pink;
+ }
+}
+
+.set {
+ width: 63px;
+ height: 12px;
+ margin: 10px 0px 12px 226px;
+
+ font-size: 14px;
+ font-weight: normal;
+ font-stretch: normal;
+ font-style: normal;
+ line-height: 0.86;
+ letter-spacing: normal;
+ text-align: center;
+ float: left;
+ color: @white;
+ &-inner {
+ width: 21px;
+ height: 16px;
+ margin: 24px 0px 24px 260px;
+
+ font-size: 14px;
+ font-weight: normal;
+ font-stretch: normal;
+ font-style: normal;
+ line-height: normal;
+ letter-spacing: normal;
+ text-align: center;
+ color: @very-light-pink;
+ }
+}
+
+.status {
+ width: 63px;
+ height: 12px;
+ margin: 10px 0 12px 325px;
+
+ font-size: 14px;
+ font-weight: normal;
+ font-stretch: normal;
+ font-style: normal;
+ line-height: 0.86;
+ letter-spacing: normal;
+ text-align: center;
+ float: left;
+ color: @white;
+}
+
+.button-details {
+ width: 93px;
+ float: right;
+ padding: 14px 0px 13px 0px;
+ margin: 8px 8px 8px 8px;
+ object-fit: contain;
+ border-radius: 2px;
+ box-shadow: 0 1px 2px 0 rgba(0, 0, 0, 0.4);
+ background-image: linear-gradient(to bottom, #818a8f 0%, #42494e 98%);
+ cursor: pointer;
+ &-label {
+ width: 62px;
+ height: 21px;
+ object-fit: contain;
+
+ font-size: 18px;
+ font-weight: 500;
+ font-stretch: normal;
+ font-style: normal;
+ line-height: normal;
+ letter-spacing: normal;
+ text-align: center;
+ color: @very-light-pink;
+ }
+}
+
+.ok-button {
+ width: 55px;
+ height: 25px;
+ margin: 20px 263px 19px 336px;
+ padding: 3px 16px;
+ border-radius: 2px;
+ background-color: @booger;
+ &-label {
+ width: 23px;
+ height: 19px;
+ text-shadow: 0 0 4px @black-50;
+ margin: 3px 16px 3px 16px;
+
+ font-size: 16px;
+ font-weight: normal;
+ font-stretch: normal;
+ font-style: normal;
+ line-height: normal;
+ letter-spacing: normal;
+ text-align: center;
+ color: @very-light-pink;
+ }
+}
+
+.broken-button {
+ width: 87px;
+ height: 25px;
+ margin: 20px 247px 19px 320px;
+ padding: 3px 16px;
+ border-radius: 2px;
+ background-color: @scarlet;
+ &-label {
+ width: 55px;
+ height: 19px;
+ margin: 3px 16px 3px 16px;
+ text-shadow: 0 0 4px @black-50;
+
+ font-size: 16px;
+ font-weight: normal;
+ font-stretch: normal;
+ font-style: normal;
+ line-height: normal;
+ letter-spacing: normal;
+ text-align: center;
+ color: @very-light-pink;
+ }
+}
+
+.error-button {
+ width: 96px;
+ height: 25px;
+ margin: 20px 243px 19px 315px;
+ padding: 3px 16px;
+ border-radius: 2px;
+ background-color: @scarlet;
+ &-label {
+ width: 64px;
+ height: 19px;
+ margin: 3px 16px 3px 16px;
+ text-shadow: 0 0 4px @black-50;
+
+ font-size: 16px;
+ font-weight: normal;
+ font-stretch: normal;
+ font-style: normal;
+ line-height: normal;
+ letter-spacing: normal;
+ text-align: center;
+ color: @very-light-pink;
+ }
+}
+
+.warning-button {
+ width: 96px;
+ height: 25px;
+ margin: 20px 243px 19px 315px;
+ padding: 3px 16px;
+ border-radius: 2px;
+ display: flex;
+ justify-content: center;
+ background-color: @macaroni-and-cheese;
+ &-label {
+ width: 79px;
+ height: 19px;
+ margin: 3px 0px 3px 0px;
+ text-shadow: 0 0 4px @black-50;
+
+ font-size: 16px;
+ font-weight: normal;
+ font-stretch: normal;
+ font-style: normal;
+ line-height: normal;
+ letter-spacing: normal;
+ text-align: center;
+ color: @very-light-pink;
+ }
+}
diff --git a/Thermo.Active/wwwroot/src/app_modules_thermo/sotto-cofano/Riscaldi/components/tables/riscaldi-table/riscaldi-table.ts b/Thermo.Active/wwwroot/src/app_modules_thermo/sotto-cofano/Riscaldi/components/tables/riscaldi-table/riscaldi-table.ts
new file mode 100644
index 00000000..7166631a
--- /dev/null
+++ b/Thermo.Active/wwwroot/src/app_modules_thermo/sotto-cofano/Riscaldi/components/tables/riscaldi-table/riscaldi-table.ts
@@ -0,0 +1,42 @@
+import { Component, Vue } from "vue-property-decorator";
+
+@Component({})
+export default class RiscaldiTable extends Vue {
+ rowData = [];
+ typeStatusButton: string;
+
+ mounted() {
+ this.rowData = [
+ {
+ cellId: "1",
+ current: "0.06 A",
+ set: "8%",
+ status: "broken"
+ },
+ {
+ cellId: "1",
+ current: "0.06 A",
+ set: "8%",
+ status: "ok"
+ },
+ {
+ cellId: "1",
+ current: "0.06 A",
+ set: "8%",
+ status: "error 23"
+ },
+ {
+ cellId: "1",
+ current: "0.06 A",
+ set: "8%",
+ status: "error 12"
+ },
+ {
+ cellId: "1",
+ current: "0.06 A",
+ set: "8%",
+ status: "warning 3"
+ }
+ ];
+ }
+}
diff --git a/Thermo.Active/wwwroot/src/app_modules_thermo/sotto-cofano/Riscaldi/components/tables/riscaldi-table/riscaldi-table.vue b/Thermo.Active/wwwroot/src/app_modules_thermo/sotto-cofano/Riscaldi/components/tables/riscaldi-table/riscaldi-table.vue
new file mode 100644
index 00000000..2496273d
--- /dev/null
+++ b/Thermo.Active/wwwroot/src/app_modules_thermo/sotto-cofano/Riscaldi/components/tables/riscaldi-table/riscaldi-table.vue
@@ -0,0 +1,64 @@
+
+
+
+
+
+ | Cell ID |
+ Current |
+ Set |
+ Status |
+
+
+
+
+ |
+
+ {{ item.cellId }}
+
+ |
+
+
+ {{ item.current }}
+
+ |
+
+
+ {{ item.set }}
+
+ |
+
+
+
+ OK
+
+
+ Broken
+
+
+ Error 23
+
+
+ Error 12
+
+
+ Warning 3
+
+
+ |
+
+
+ Details
+
+ |
+
+
+
+
+
+
+
diff --git a/Thermo.Active/wwwroot/src/app_modules_thermo/sotto-cofano/header/my-header.less b/Thermo.Active/wwwroot/src/app_modules_thermo/sotto-cofano/header/my-header.less
new file mode 100644
index 00000000..3006071a
--- /dev/null
+++ b/Thermo.Active/wwwroot/src/app_modules_thermo/sotto-cofano/header/my-header.less
@@ -0,0 +1,6 @@
+.header-container {
+ width: 1920px;
+ height: 193px;
+ // background-color: #657178;
+ background-color: transparent;
+}
\ No newline at end of file
diff --git a/Thermo.Active/wwwroot/src/app_modules_thermo/sotto-cofano/header/my-header.ts b/Thermo.Active/wwwroot/src/app_modules_thermo/sotto-cofano/header/my-header.ts
new file mode 100644
index 00000000..6ce22725
--- /dev/null
+++ b/Thermo.Active/wwwroot/src/app_modules_thermo/sotto-cofano/header/my-header.ts
@@ -0,0 +1,4 @@
+import { Component, Vue } from "vue-property-decorator";
+
+@Component({})
+export default class MyHeader extends Vue {}
diff --git a/Thermo.Active/wwwroot/src/app_modules_thermo/sotto-cofano/header/my-header.vue b/Thermo.Active/wwwroot/src/app_modules_thermo/sotto-cofano/header/my-header.vue
new file mode 100644
index 00000000..f7c27937
--- /dev/null
+++ b/Thermo.Active/wwwroot/src/app_modules_thermo/sotto-cofano/header/my-header.vue
@@ -0,0 +1,7 @@
+
+
+
+
+
diff --git a/Thermo.Active/wwwroot/src/app_modules_thermo/sotto-cofano/menu-sx/menu-sx.less b/Thermo.Active/wwwroot/src/app_modules_thermo/sotto-cofano/menu-sx/menu-sx.less
new file mode 100644
index 00000000..0fecd3ae
--- /dev/null
+++ b/Thermo.Active/wwwroot/src/app_modules_thermo/sotto-cofano/menu-sx/menu-sx.less
@@ -0,0 +1,27 @@
+@import "../variable.less";
+
+.rettangle {
+ width: calc(~"100% - 72px");
+ height: 72px;
+
+ background-color: @fill-under-grey-4-2;
+ display: flex;
+ flex-flow: row;
+ padding: 0 36px;
+ align-items: center;
+ justify-content: flex-start;
+ font-size: 20px;
+ font-weight: 500;
+ color: #bbbcbc;
+
+ &.white {
+ color: @white;
+ font-weight: bold;
+ }
+}
+
+.BG-fascia-sx {
+ width: 496px;
+ height: 886px;
+ background-color: @fill-under-grey-1-2;
+}
diff --git a/Thermo.Active/wwwroot/src/app_modules_thermo/sotto-cofano/menu-sx/menu-sx.ts b/Thermo.Active/wwwroot/src/app_modules_thermo/sotto-cofano/menu-sx/menu-sx.ts
new file mode 100644
index 00000000..e5c3efe8
--- /dev/null
+++ b/Thermo.Active/wwwroot/src/app_modules_thermo/sotto-cofano/menu-sx/menu-sx.ts
@@ -0,0 +1,19 @@
+import { Component, Prop, Vue } from "vue-property-decorator";
+
+@Component({})
+export default class MenuSx extends Vue {
+
+ @Prop()
+ value: string;
+
+ // get currentRoute() {
+ // return this.value;
+ // }
+ // set currentRoute( v:string ) {
+ // this.$emit("input", v);
+ // }
+
+ go(v: string) {
+ this.$emit("input", v);
+ }
+}
diff --git a/Thermo.Active/wwwroot/src/app_modules_thermo/sotto-cofano/menu-sx/menu-sx.vue b/Thermo.Active/wwwroot/src/app_modules_thermo/sotto-cofano/menu-sx/menu-sx.vue
new file mode 100644
index 00000000..350d9a8c
--- /dev/null
+++ b/Thermo.Active/wwwroot/src/app_modules_thermo/sotto-cofano/menu-sx/menu-sx.vue
@@ -0,0 +1,33 @@
+
+
+
{{'i-o' | localize("I/O")}}
+
+
+
+
+
diff --git a/Thermo.Active/wwwroot/src/app_modules_thermo/sotto-cofano/route.ts b/Thermo.Active/wwwroot/src/app_modules_thermo/sotto-cofano/route.ts
new file mode 100644
index 00000000..deeeda9d
--- /dev/null
+++ b/Thermo.Active/wwwroot/src/app_modules_thermo/sotto-cofano/route.ts
@@ -0,0 +1,33 @@
+import Io from "./InputOutput/components/io/io.vue";
+import LogCicloAutomatico from "./LogCicloAutomatico/components/log-ciclo-automatico/log-ciclo-automatico.vue";
+import LogMisurazioni from "./LogMisurazioni/components/log-misurazioni/log-misurazioni.vue";
+import Assi from "./Assi/components/assi/assi.vue";
+import Riscaldi from "./Riscaldi/components/riscaldi/riscaldi.vue";
+
+export const routes = [
+ {
+ name: 'io',
+ path: "/io",
+ component: Io
+ },
+ {
+ name: 'log-ciclo-automatico',
+ path: "/log-ciclo-automatico",
+ component: LogCicloAutomatico
+ },
+ {
+ name: 'log-misurazioni',
+ path: "/log-misurazioni",
+ component: LogMisurazioni
+ },
+ {
+ name: 'assi',
+ path: "/assi",
+ component: Assi
+ },
+ {
+ name: 'riscaldi',
+ path: "/riscaldi",
+ component: Riscaldi
+ }
+];
\ No newline at end of file
diff --git a/Thermo.Active/wwwroot/src/app_modules_thermo/sotto-cofano/sotto-cofano.less b/Thermo.Active/wwwroot/src/app_modules_thermo/sotto-cofano/sotto-cofano.less
new file mode 100644
index 00000000..f7694400
--- /dev/null
+++ b/Thermo.Active/wwwroot/src/app_modules_thermo/sotto-cofano/sotto-cofano.less
@@ -0,0 +1,133 @@
+@import url(./variable.less);
+
+// MODULES MAIN STYLE
+.main-container {
+ width: 1920px;
+ height: 1080px;
+
+ display: grid;
+ grid-template-rows: 193px 1fr;
+ grid-template-columns: 495px 1fr;
+
+ table {
+ border-collapse: collapse;
+ thead {
+ width: 674px;
+ height: 34px;
+ padding: 10px 0 0;
+
+ background-color: @fill-under-grey-1-2;
+ border-bottom: 2px solid @light-grey-blue;
+ box-sizing: border-box;
+
+ tr {
+ th {
+ background-color: @fill-under-grey-1-2;
+ position: sticky;
+ top: 0;
+ height: 12px;
+ font-size: 14px;
+ line-height: 34px;
+ text-align: left;
+ color: #ffffff;
+ min-width: 64px;
+ }
+ }
+ }
+
+ .center {
+ text-align: center;
+ }
+
+ tbody {
+ width: 100%;
+ border-collapse: collapse;
+ border-spacing: 0px;
+ margin: 0;
+
+ td {
+ height: 64px;
+ width: 64px;
+ color: #e8e8e8;
+ }
+
+ tr:nth-child(odd) {
+ background-color: @fill-under-grey-3-2;
+ }
+ tr:nth-child(even) {
+ background-color: @fill-under-grey-1-2;
+ }
+
+ &::-webkit-scrollbar {
+ width: 16px;
+ }
+
+ &::-webkit-scrollbar-track {
+ margin: 20px 0px;
+ background-color: #5a656b;
+ border-radius: 15px;
+ }
+
+ &::-webkit-scrollbar-thumb {
+ width: 16px;
+ background: #3e464a;
+ border: 4px solid #5a656b;
+ border-radius: 15px;
+ }
+ }
+ }
+}
+
+.table-container {
+ height: 600px;
+
+ tr.group-row {
+ height: 64px;
+ width: 100%;
+ background: transparent !important;
+ td {
+ text-align: center;
+ padding: 20px;
+ height: auto;
+ font-size: 16px;
+ color: #fff;
+ font-weight: bold;
+ text-transform: uppercase;
+ }
+ }
+
+ td.pointer {
+ text-align: center;
+ }
+
+ button.pointer {
+ width: 48px;
+ height: 48px;
+ // padding: 6px;
+ object-fit: contain;
+ border-radius: 2px;
+ box-shadow: 0 1px 2px 0 rgba(0, 0, 0, 0.4);
+ background-image: linear-gradient(to bottom, #818a8f 0%, #42494e 98%);
+ border: none;
+ }
+}
+
+.column-menu {
+ grid-row: 2;
+ border-top: @white 2px solid;
+}
+
+.column-page {
+ grid-row: 2;
+ grid-column: 2;
+ width: 1424px;
+ height: 885px;
+ border-top: @white 2px solid;
+ background-color: @fill-under-grey-2-2;
+ display: grid;
+ grid-template-columns: repeat(auto-fill, minmax(600px, 1fr));
+}
+
+.pointer {
+ cursor: pointer;
+}
diff --git a/Thermo.Active/wwwroot/src/app_modules_thermo/sotto-cofano/sotto-cofano.ts b/Thermo.Active/wwwroot/src/app_modules_thermo/sotto-cofano/sotto-cofano.ts
new file mode 100644
index 00000000..e7408d39
--- /dev/null
+++ b/Thermo.Active/wwwroot/src/app_modules_thermo/sotto-cofano/sotto-cofano.ts
@@ -0,0 +1,17 @@
+import Component from "vue-class-component";
+import Vue from "vue";
+import menuSx from "./menu-sx/menu-sx.vue";
+import io from "./InputOutput/components/io/io.vue";
+import logCicloAutomatico from "./LogCicloAutomatico/components/log-ciclo-automatico/log-ciclo-automatico.vue";
+import logMisurazioni from "./LogMisurazioni/components/log-misurazioni/log-misurazioni.vue";
+import assi from "./Assi/components/assi/assi.vue";
+import riscaldi from "./Riscaldi/components/riscaldi/riscaldi.vue";
+
+@Component({
+ components: { menuSx, io, logCicloAutomatico, logMisurazioni, assi, riscaldi }
+})
+export default class Sottocofano extends Vue {
+
+ panel: string = 'io';
+
+}
\ No newline at end of file
diff --git a/Thermo.Active/wwwroot/src/app_modules_thermo/sotto-cofano/sotto-cofano.vue b/Thermo.Active/wwwroot/src/app_modules_thermo/sotto-cofano/sotto-cofano.vue
new file mode 100644
index 00000000..f09f9e64
--- /dev/null
+++ b/Thermo.Active/wwwroot/src/app_modules_thermo/sotto-cofano/sotto-cofano.vue
@@ -0,0 +1,16 @@
+
+
+
+
+
diff --git a/Thermo.Active/wwwroot/src/app_modules_thermo/sotto-cofano/variable.less b/Thermo.Active/wwwroot/src/app_modules_thermo/sotto-cofano/variable.less
new file mode 100644
index 00000000..1f125763
--- /dev/null
+++ b/Thermo.Active/wwwroot/src/app_modules_thermo/sotto-cofano/variable.less
@@ -0,0 +1,31 @@
+// Colors
+@white: #ffffff;
+
+@fill-under-grey-1-2: #4e585e;
+
+@fill-under-grey-2-2: #657178;
+
+@fill-under-grey-4-2: #808e96;
+
+@light-grey-blue: #bbbcbc;
+
+@fill-under-grey-3-2: #747f85;
+
+@very-light-pink: #e8e8e8;
+
+@very-light-pink-two: #dddddd;
+
+@greyish-brown: #545454;
+
+@clear-blue: #1791ff;
+
+@black-50: rgba(0, 0, 0, 0.5);
+
+@very-light-pink-two: #dddddd;
+
+@booger: #90c03d;
+
+@scarlet: #d0021b;
+
+@macaroni-and-cheese: #e7ba2d;
+
diff --git a/Thermo.Active/wwwroot/src/modules/app-footer.ts b/Thermo.Active/wwwroot/src/modules/app-footer.ts
index c83cb114..eb7b1b8f 100644
--- a/Thermo.Active/wwwroot/src/modules/app-footer.ts
+++ b/Thermo.Active/wwwroot/src/modules/app-footer.ts
@@ -29,12 +29,12 @@ export default class AppFooter extends Vue {
}
toggleMainView() {
- // appModelActions.MainViewToggle(this.$store);
+ appModelActions.MainViewToggle(this.$store);
}
OpenMainView(direction: any) {
- // if (direction && direction == "up" && !this.$store.isMainViewLiftedUp)
- // appModelActions.MainViewLiftUp(this.$store);
+ if (direction && direction == "up" && !this.$store.isMainViewLiftedUp)
+ appModelActions.MainViewLiftUp(this.$store);
}
openProgram(path: string) {
diff --git a/Thermo.Active/wwwroot/src/modules/app-footer.vue b/Thermo.Active/wwwroot/src/modules/app-footer.vue
index 2e977d6c..2f35238f 100644
--- a/Thermo.Active/wwwroot/src/modules/app-footer.vue
+++ b/Thermo.Active/wwwroot/src/modules/app-footer.vue
@@ -95,6 +95,16 @@
+
+