Commit bugfix grafica WP10

This commit is contained in:
Giacomo Canonico
2019-03-26 18:17:27 +01:00
parent 2b5ec22f94
commit c53d08fce4
19 changed files with 2098 additions and 1263 deletions
File diff suppressed because it is too large Load Diff
+64 -9
View File
@@ -2393,8 +2393,31 @@
tbody {
display: block;
height: 560px;
width: 1431px;
height: 552px;
width: 1420px;
overflow-y: auto;
padding-right: 10px;
&::-webkit-scrollbar{
width: 16px;
}
&::-webkit-scrollbar-track{
margin-bottom: 4px;
margin-top: 4px;
background-color: #E5E5E5;
border-radius: 15px;
box-shadow: inset 0 1px 3px 0 #9F9F9F;
}
&::-webkit-scrollbar-thumb{
width: 16px;
background: #9F9F9F;
border: 4px solid #E5E5E5;
border-radius: 15px;
}
tr {
// cursor: pointer;
@@ -2464,6 +2487,17 @@
button {
width: 60px;
padding: 0px;
&.disabled {
opacity: .65;
cursor: default;
box-shadow: none !important;
pointer-events: none;
i.fa {
color: #838383;
}
}
}
.freespace {
@@ -4874,10 +4908,21 @@
padding-left: 16px;
cursor: pointer;
span {
width: 100%;
div.title {
display: flex;
flex-direction: row;
flex-wrap: wrap;
span {
display: block;
flex: 0 1 auto;
align-content: center;
text-align: left;
margin-right: 7px;
}
}
.expander {
margin: 0 12px;
line-height: 28px;
@@ -4929,7 +4974,7 @@
.custom-checkbox {
label {
background-color: @color-background-white !important;
background-color: @color-background-white !important;
border: solid 1px @color-clear-blue;
}
}
@@ -5042,16 +5087,15 @@
.timeline-chart-header-item {
flex: 1 1 auto;
// font-family: WorkSans;
font-size: 12px;
font-weight: normal;
font-style: normal;
font-stretch: normal;
line-height: 1.43;
letter-spacing: normal;
text-align: center;
color: @color-greyish-brown;
overflow: hidden;
position: relative;
&:first-child {
border-right: solid 1px #dddddd;
@@ -5062,11 +5106,22 @@
}
label {
position: relative;
line-height: 164px;
display: block;
overflow: hidden;
text-align: center;
position: absolute;
bottom: 4px;
left: 0px;
width: 100%;
&.rotate {
display: block;
width: 50px;
overflow: hidden;
text-align: left;
position: absolute;
bottom: 20px;
left: -10px;
transform: rotate(-78deg);
filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=3);
}
+3 -1
View File
@@ -35,6 +35,8 @@
@import "scada.less";
@import "report.less";
@import "users.less";
@import "tooltip.less";
@background-color: rgb(216, 216, 216);
@handle-width: 48px;
@@ -210,7 +212,7 @@ body {
width: @spinner-loading-height;
height: @spinner-loading-width;
top: calc(~'50%' - @spinner-loading-height /2);
left: calc(~'50%' - @spinner-loading-width /2);
left: calc(~'50%' - @spinner-loading-width /2);
text-align: center;
line-height: @spinner-loading-height;
font-size: @spinner-loading-height/2;
+10 -71
View File
@@ -159,11 +159,10 @@
color: @color-warm-grey;
padding: 0;
.header {
height: 63px;
height: 62px;
display: flex;
align-items: center;
padding-left: 16px;
font-size: 20px;
padding-left: 14px;
font-size: 16px;
font-weight: normal;
font-style: normal;
@@ -173,7 +172,6 @@
text-align: left;
color: @color-darkish-blue;
label {
width: 234px;
}
@@ -191,9 +189,9 @@
cursor: pointer;
z-index: 1000;
.fa {
display: flex;
margin-left: auto;
margin-right: auto;
margin: auto;
margin-right: auto;
margin-top: -1px;
}
&:active{
@@ -388,11 +386,10 @@
}
.header {
height: 63px;
height: 62px;
display: flex;
align-items: center;
padding-left: 16px;
font-size: 20px;
padding-left: 14px;
font-size: 16px;
font-weight: normal;
font-style: normal;
@@ -420,9 +417,9 @@
cursor: pointer;
z-index: 1000;
.fa {
display: flex;
margin-left: auto;
margin-right: auto;
margin: auto;
margin-right: auto;
margin-top: -1px;
}
&:active{
@@ -478,61 +475,3 @@
}
}
}
// .card-report-tooltip-header{
// height: 63px;
// border-bottom: 2px solid #d8d8d8;
// display: flex;
// align-items: center;
// padding-left: 16px;
// font-size: 20px;
// color: @color-darkish-blue;
// label{
// width: 234px;
// }
// button.close {
// display: flex;
// width: 28px;
// height: 28px;
// border-radius: 50%;
// border: none;
// background-color: #002680;
// color: #fff;
// font-size: 16px;
// float: right;
// cursor: pointer;
// .fa {
// display: flex;
// margin-left: auto;
// margin-right: auto;
// }
// }
// button.close:active {
// background-color: @color-clear-blue ;
// color: #fff;
// }
// }
// .card-report-tooltip-body{
// height: calc(~"100% - 65px");
// display: flex;
// flex-flow: row;
// background-color: @color-white2;
// }
// .card-report-tooltip-body-left, .card-report-tooltip-body-right{
// display: flex;
// flex-flow: column;
// width: 50%;
// align-items: center;
// justify-content: center;
// label:first-child{
// font-size: 18px;
// font-weight: normal;
// color: @color-warm-grey;
// }
// label{
// font-size: 18px;
// font-weight: 800;
// color: @color-greyish-brown;
// }
// }
/**END - TOOLTIP COLUMN CHART PRODUZIONE**/
+469 -9
View File
@@ -5017,8 +5017,27 @@ footer .container button.big:before {
max-height: 64px;
}
.alarm-history-container .alarm-history-body .alarm-history-body-left .alarm-history-table tbody {
height: 560px;
width: 1241px;
display: block;
height: 552px;
width: 1230px;
overflow-y: auto;
padding-right: 10px;
}
.alarm-history-container .alarm-history-body .alarm-history-body-left .alarm-history-table tbody::-webkit-scrollbar {
width: 16px;
}
.alarm-history-container .alarm-history-body .alarm-history-body-left .alarm-history-table tbody::-webkit-scrollbar-track {
margin-bottom: 4px;
margin-top: 4px;
background-color: #E5E5E5;
border-radius: 15px;
box-shadow: inset 0 1px 3px 0 #9F9F9F;
}
.alarm-history-container .alarm-history-body .alarm-history-body-left .alarm-history-table tbody::-webkit-scrollbar-thumb {
width: 16px;
background: #9F9F9F;
border: 4px solid #E5E5E5;
border-radius: 15px;
}
.alarm-history-container .alarm-history-body .alarm-history-body-left .alarm-history-table tbody tr {
cursor: pointer;
@@ -5087,6 +5106,15 @@ footer .container button.big:before {
width: 60px;
padding: 0px;
}
.alarm-history-container .alarm-history-body .alarm-history-body-left .alarm-history-table tfoot tr td div.group-label-button button.disabled {
opacity: .65;
cursor: default;
box-shadow: none !important;
pointer-events: none;
}
.alarm-history-container .alarm-history-body .alarm-history-body-left .alarm-history-table tfoot tr td div.group-label-button button.disabled i.fa {
color: #838383;
}
.alarm-history-container .alarm-history-body .alarm-history-body-left .alarm-history-table tfoot tr td div.group-label-button .freespace {
width: 60px;
display: inline-block;
@@ -8784,8 +8812,26 @@ footer .container button.big:before {
}
.card-report-production .reports-box-body-left .body-left-center .body-left-center-container tbody {
display: block;
height: 560px;
width: 1431px;
height: 552px;
width: 1420px;
overflow-y: auto;
padding-right: 10px;
}
.card-report-production .reports-box-body-left .body-left-center .body-left-center-container tbody::-webkit-scrollbar {
width: 16px;
}
.card-report-production .reports-box-body-left .body-left-center .body-left-center-container tbody::-webkit-scrollbar-track {
margin-bottom: 4px;
margin-top: 4px;
background-color: #E5E5E5;
border-radius: 15px;
box-shadow: inset 0 1px 3px 0 #9F9F9F;
}
.card-report-production .reports-box-body-left .body-left-center .body-left-center-container tbody::-webkit-scrollbar-thumb {
width: 16px;
background: #9F9F9F;
border: 4px solid #E5E5E5;
border-radius: 15px;
}
.card-report-production .reports-box-body-left .body-left-center .body-left-center-container tbody tr {
height: 64px;
@@ -8844,6 +8890,15 @@ footer .container button.big:before {
width: 60px;
padding: 0px;
}
.card-report-production .reports-box-body-left .body-left-center .body-left-center-container tfoot tr td div.group-label-button button.disabled {
opacity: .65;
cursor: default;
box-shadow: none !important;
pointer-events: none;
}
.card-report-production .reports-box-body-left .body-left-center .body-left-center-container tfoot tr td div.group-label-button button.disabled i.fa {
color: #838383;
}
.card-report-production .reports-box-body-left .body-left-center .body-left-center-container tfoot tr td div.group-label-button .freespace {
width: 60px;
display: inline-block;
@@ -10925,8 +10980,17 @@ footer .container button.big:before {
padding-left: 16px;
cursor: pointer;
}
.card-report-timeline .reports-box-body-left .body-left-center .body-left-center-header .body-left-center-left .accordion-dropdown header span {
width: 100%;
.card-report-timeline .reports-box-body-left .body-left-center .body-left-center-header .body-left-center-left .accordion-dropdown header div.title {
display: flex;
flex-direction: row;
flex-wrap: wrap;
}
.card-report-timeline .reports-box-body-left .body-left-center .body-left-center-header .body-left-center-left .accordion-dropdown header div.title span {
display: block;
flex: 0 1 auto;
align-content: center;
text-align: left;
margin-right: 7px;
}
.card-report-timeline .reports-box-body-left .body-left-center .body-left-center-header .body-left-center-left .accordion-dropdown header .expander {
margin: 0 12px;
@@ -11069,11 +11133,11 @@ footer .container button.big:before {
font-weight: normal;
font-style: normal;
font-stretch: normal;
line-height: 1.43;
letter-spacing: normal;
text-align: center;
color: #4b4b4b;
overflow: hidden;
position: relative;
}
.card-report-timeline .reports-box-body-left .body-left-center .body-left-center-header .body-left-center-right .timeline-chart-header .timeline-chart-header-items .timeline-chart-header-item:first-child {
border-right: solid 1px #dddddd;
@@ -11082,11 +11146,22 @@ footer .container button.big:before {
border-left: solid 1px #dddddd;
}
.card-report-timeline .reports-box-body-left .body-left-center .body-left-center-header .body-left-center-right .timeline-chart-header .timeline-chart-header-items .timeline-chart-header-item label {
position: relative;
line-height: 164px;
display: block;
overflow: hidden;
text-align: center;
position: absolute;
bottom: 4px;
left: 0px;
width: 100%;
}
.card-report-timeline .reports-box-body-left .body-left-center .body-left-center-header .body-left-center-right .timeline-chart-header .timeline-chart-header-items .timeline-chart-header-item label.rotate {
display: block;
width: 50px;
overflow: hidden;
text-align: left;
position: absolute;
bottom: 20px;
left: -10px;
transform: rotate(-78deg);
filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=3);
}
@@ -19543,6 +19618,391 @@ footer .container button.big:before {
width: 100%;
display: table;
}
.tooltip {
display: block !important;
z-index: 10000;
}
.tooltip .wrapper {
width: 100%;
height: 100%;
border: solid 2px #1791ff;
background-color: #fff;
border-radius: 2px;
}
.tooltip .wrapper .tooltip-arrow {
width: 0;
height: 0;
border-style: solid;
position: absolute;
margin: 5px;
border-color: #1791ff;
z-index: 1;
}
.tooltip .wrapper .tooltip-inner {
color: #878787;
padding: 5px 10px 4px;
}
.tooltip[x-placement^="top"] {
margin-bottom: 5px;
}
.tooltip[x-placement^="top"] .tooltip-arrow {
border-width: 18px 18px 0 18px;
border-left-color: transparent !important;
border-right-color: transparent !important;
border-bottom-color: transparent !important;
bottom: -16px;
left: calc(45%);
margin-top: 0;
margin-bottom: 0;
}
.tooltip[x-placement^="top"] .tooltip-arrow::before {
border-color: #f1f1f1 !important;
border-width: 15px 14px 0 14px;
border-left-color: transparent !important;
border-right-color: transparent !important;
border-bottom-color: transparent !important;
bottom: 3px;
left: -14px;
margin-top: 0;
margin-bottom: 0;
}
.tooltip[x-placement^="bottom"] {
margin-top: 5px;
}
.tooltip[x-placement^="bottom"] .tooltip-arrow {
border-width: 0 18px 18px 18px;
border-left-color: transparent !important;
border-right-color: transparent !important;
border-top-color: transparent !important;
top: -16px;
left: calc(45%);
margin-top: 0;
margin-bottom: 0;
}
.tooltip[x-placement^="bottom"] .tooltip-arrow::before {
border-width: 0 14px 15px 14px;
border-left-color: transparent !important;
border-right-color: transparent !important;
border-top-color: transparent !important;
top: 3px;
left: -14px;
margin-top: 0;
margin-bottom: 0;
}
.tooltip.popover .wrapper {
width: 100%;
height: 100%;
border: solid 2px #1791ff;
background-color: #fff;
border-radius: 2px;
}
.tooltip.popover .wrapper .popover-arrow {
border-color: #1791ff;
}
.tooltip.popover .wrapper .popover-arrow::before {
content: '';
width: 0;
height: 0;
border-style: solid;
position: absolute;
border-color: #fff;
z-index: 1;
}
.tooltip.popover .wrapper .popover-inner {
background: #fff;
color: #878787;
padding: 0;
}
.tooltip.popover .wrapper .popover-inner .header {
height: 62px;
display: flex;
align-items: center;
padding-left: 14px;
font-size: 16px;
font-weight: normal;
font-style: normal;
font-stretch: normal;
line-height: normal;
letter-spacing: normal;
text-align: left;
color: #002680;
}
.tooltip.popover .wrapper .popover-inner .header label {
width: 234px;
}
.tooltip.popover .wrapper .popover-inner .header button.close {
display: flex;
width: 28px;
height: 28px;
border-radius: 50%;
border: none;
background-color: #002680;
color: #fff;
font-size: 16px;
float: right;
cursor: pointer;
z-index: 1000;
}
.tooltip.popover .wrapper .popover-inner .header button.close .fa {
margin: auto;
margin-right: auto;
margin-top: -1px;
}
.tooltip.popover .wrapper .popover-inner .header button.close:active {
background-color: #1791ff;
color: #fff;
}
.tooltip.popover .wrapper .popover-inner .body {
color: #878787;
border-top: 2px solid #d8d8d8;
}
.tooltip.popover .wrapper .popover-inner .body .date {
display: flex;
flex-flow: row;
padding: 15px 0px;
color: #878787;
}
.tooltip.popover .wrapper .popover-inner .body .date .column {
display: flex;
flex-flow: column;
flex: 1 1 auto;
width: 50%;
align-items: center;
justify-content: center;
}
.tooltip.popover .wrapper .popover-inner .body .date .column span.title {
display: block;
font-size: 12px;
font-weight: normal;
font-style: normal;
font-stretch: normal;
line-height: normal;
letter-spacing: normal;
text-align: center;
color: #878787;
}
.tooltip.popover .wrapper .popover-inner .body .date .column span.value {
display: block;
font-size: 14px;
font-weight: normal;
font-style: normal;
font-stretch: normal;
line-height: 1.43;
letter-spacing: normal;
text-align: left;
color: #4b4b4b;
}
.tooltip.popover .wrapper .popover-inner .body .footer {
padding: 15px 0px;
display: flex;
flex-flow: row;
background-color: #f1f1f1;
color: #878787;
}
.tooltip.popover .wrapper .popover-inner .body .footer .column {
display: flex;
flex-flow: column;
flex: 1 1 auto;
width: 50%;
align-items: center;
justify-content: center;
}
.tooltip.popover .wrapper .popover-inner .body .footer .column span.title {
display: block;
font-size: 12px;
font-weight: normal;
font-style: normal;
font-stretch: normal;
line-height: normal;
letter-spacing: normal;
text-align: center;
color: #878787;
}
.tooltip.popover .wrapper .popover-inner .body .footer .column span.value {
display: block;
font-size: 20px;
font-weight: normal;
font-style: normal;
font-stretch: normal;
line-height: 0.9;
letter-spacing: normal;
text-align: center;
color: #4b4b4b;
}
.tooltip[aria-hidden='true'] {
visibility: hidden;
opacity: 0;
transition: opacity .15s, visibility .15s;
}
.tooltip[aria-hidden='false'] {
visibility: visible;
opacity: 1;
transition: opacity .15s;
}
/**START - TOOLTIP COLUMN CHART PRODUZIONE**/
.card-report-tooltip-top {
opacity: 1;
position: absolute;
width: 288px;
border: solid 2px #1791ff;
border-radius: 2px;
background-color: #fff;
z-index: 100;
}
.card-report-tooltip-top:before {
content: '';
display: block;
position: absolute;
left: 138px;
bottom: 100%;
width: 4px;
height: 0px;
border: 14px solid transparent;
border-bottom-color: #1791ff;
}
.card-report-tooltip-top:after {
content: '';
display: block;
position: absolute;
left: 141px;
bottom: 100%;
width: 0;
height: 0;
border: 13px solid transparent;
border-bottom-color: white;
}
.card-report-tooltip-bottom {
opacity: 1;
position: absolute;
width: 288px;
border: solid 2px #1791ff;
border-radius: 2px;
background-color: #fff;
z-index: 100;
}
.card-report-tooltip-bottom:before {
content: '';
display: block;
position: absolute;
left: 132px;
top: 100%;
width: 4px;
height: 0px;
border: 14px solid transparent;
border-top-color: #1791ff;
}
.card-report-tooltip-bottom:after {
content: '';
display: block;
position: absolute;
left: 135px;
top: 100%;
width: 0;
height: 0;
border: 13px solid transparent;
border-top-color: #f1f1f1;
}
.card-report-tooltip-bottom,
.card-report-tooltip-top {
pointer-events: all !important;
background: #fff;
color: #878787;
padding: 0;
}
.card-report-tooltip-bottom.hidden,
.card-report-tooltip-top.hidden {
visibility: hidden;
}
.card-report-tooltip-bottom .header,
.card-report-tooltip-top .header {
height: 62px;
display: flex;
align-items: center;
padding-left: 14px;
font-size: 16px;
font-weight: normal;
font-style: normal;
font-stretch: normal;
line-height: normal;
letter-spacing: normal;
text-align: left;
color: #002680;
}
.card-report-tooltip-bottom .header label,
.card-report-tooltip-top .header label {
width: 234px;
}
.card-report-tooltip-bottom .header button.close,
.card-report-tooltip-top .header button.close {
display: flex;
width: 28px;
height: 28px;
border-radius: 50%;
border: none;
background-color: #002680;
color: #fff;
font-size: 16px;
float: right;
cursor: pointer;
z-index: 1000;
}
.card-report-tooltip-bottom .header button.close .fa,
.card-report-tooltip-top .header button.close .fa {
margin: auto;
margin-right: auto;
margin-top: -1px;
}
.card-report-tooltip-bottom .header button.close:active,
.card-report-tooltip-top .header button.close:active {
background-color: #1791ff;
color: #fff;
}
.card-report-tooltip-bottom .body,
.card-report-tooltip-top .body {
color: #878787;
border-top: 2px solid #d8d8d8;
}
.card-report-tooltip-bottom .body .footer,
.card-report-tooltip-top .body .footer {
padding: 15px 0px;
display: flex;
flex-flow: row;
background-color: #f1f1f1;
color: #878787;
}
.card-report-tooltip-bottom .body .footer .column,
.card-report-tooltip-top .body .footer .column {
display: flex;
flex-flow: column;
flex: 1 1 auto;
width: 50%;
align-items: center;
justify-content: center;
}
.card-report-tooltip-bottom .body .footer .column span.title,
.card-report-tooltip-top .body .footer .column span.title {
display: block;
font-size: 12px;
font-weight: normal;
font-style: normal;
font-stretch: normal;
line-height: normal;
letter-spacing: normal;
text-align: center;
color: #878787;
}
.card-report-tooltip-bottom .body .footer .column span.value,
.card-report-tooltip-top .body .footer .column span.value {
display: block;
font-size: 20px;
font-weight: normal;
font-style: normal;
font-stretch: normal;
line-height: 0.9;
letter-spacing: normal;
text-align: center;
color: #4b4b4b;
}
a,
a:visited,
a:hover,
+1 -2
View File
@@ -13,9 +13,8 @@
<script src="Scripts/jquery.mousewheel.js"></script>
<script src="Scripts/jquery.signalR-2.2.2.min.js"></script>
<script src="Scripts/raphael-2.1.4.min.js"></script>
<script src="Scripts/justgage.js"></script>
<script src="signalr/hubs"></script>
<link href="assets/styles/style.css" rel="stylesheet" />
</head>
+63 -64
View File
@@ -1,65 +1,64 @@
{
"name": "step",
"version": "1.0.0",
"description": "step",
"author": "Paolo Possanzini <paolo@teamdev.it>",
"private": true,
"scripts": {
"build": "webpack",
"dev": "webpack --watch"
},
"dependencies": {
"axios": "0.17.1",
"brace": "0.11.1",
"chart.js": "^2.7.3",
"izitoast": "1.2.0",
"justgage": "^1.2.2",
"moment": "2.20.1",
"raphael": "^2.2.7",
"sprintf-js": "1.1.1",
"v-tooltip": "^2.0.0-rc.33",
"vee-validate": "2.0.3",
"vue": "^2.5.2",
"vue-chartjs": "^3.4.0",
"vue-class-component": "6.1.0",
"vue-drag-drop": "1.1.0",
"vue-property-decorator": "6.0.0",
"vue-router": "^3.0.1",
"vue-smooth-dnd": "0.2.1",
"vue2-ace-editor": "0.0.11",
"vue2-datepicker": "2.6.2",
"vuex": "3.0.1"
},
"devDependencies": {
"autoprefixer": "^7.1.2",
"babel-core": "^6.0.0",
"babel-loader": "7.1.1",
"babel-plugin-transform-decorators-legacy": "^1.3.4",
"babel-plugin-transform-runtime": "^6.0.0",
"babel-polyfill": "^6.23.0",
"babel-preset-es2015": "^6.0.0",
"babel-preset-stage-2": "^6.0.0",
"babel-runtime": "^6.0.0",
"babelify": "^7.2.0",
"chalk": "^2.0.1",
"copy-webpack-plugin": "^4.0.1",
"css-loader": "^0.28.0",
"eventsource-polyfill": "^0.9.6",
"file-loader": "^1.1.4",
"url-loader": "^0.5.8",
"ts-loader": "3.1.1",
"typescript": "2.6.1",
"vue-loader": "^13.3.0",
"vue-template-compiler": "^2.5.2",
"webpack": "^3.6.0"
},
"engines": {
"node": ">= 4.0.0",
"npm": ">= 3.0.0"
},
"browserslist": [
"> 1%",
"last 2 versions",
"not ie <= 8"
]
}
"name": "step",
"version": "1.0.0",
"description": "step",
"author": "Paolo Possanzini <paolo@teamdev.it>",
"private": true,
"scripts": {
"build": "webpack",
"dev": "webpack --watch"
},
"dependencies": {
"axios": "0.17.1",
"brace": "0.11.1",
"chart.js": "^2.7.3",
"izitoast": "1.2.0",
"moment": "2.20.1",
"raphael": "^2.2.7",
"sprintf-js": "1.1.1",
"v-tooltip": "^2.0.0-rc.33",
"vee-validate": "2.0.3",
"vue": "^2.5.2",
"vue-chartjs": "^3.4.0",
"vue-class-component": "6.1.0",
"vue-drag-drop": "1.1.0",
"vue-property-decorator": "6.0.0",
"vue-router": "^3.0.1",
"vue-smooth-dnd": "0.2.1",
"vue2-ace-editor": "0.0.11",
"vue2-datepicker": "2.6.2",
"vuex": "3.0.1"
},
"devDependencies": {
"autoprefixer": "^7.1.2",
"babel-core": "^6.0.0",
"babel-loader": "7.1.1",
"babel-plugin-transform-decorators-legacy": "^1.3.4",
"babel-plugin-transform-runtime": "^6.0.0",
"babel-polyfill": "^6.23.0",
"babel-preset-es2015": "^6.0.0",
"babel-preset-stage-2": "^6.0.0",
"babel-runtime": "^6.0.0",
"babelify": "^7.2.0",
"chalk": "^2.0.1",
"copy-webpack-plugin": "^4.0.1",
"css-loader": "^0.28.0",
"eventsource-polyfill": "^0.9.6",
"file-loader": "^1.1.4",
"url-loader": "^0.5.8",
"ts-loader": "3.1.1",
"typescript": "2.6.1",
"vue-loader": "^13.3.0",
"vue-template-compiler": "^2.5.2",
"webpack": "^3.6.0"
},
"engines": {
"node": ">= 4.0.0",
"npm": ">= 3.0.0"
},
"browserslist": [
"> 1%",
"last 2 versions",
"not ie <= 8"
]
}
@@ -108,19 +108,18 @@
<span v-for="(iduser) in row.users" class="users" :key="iduser">{{user(iduser).username}}</span>
</td>
</tr>
</tbody>
<tfoot>
<tr>
<td colspan="4">
<div class="group-label-button">
<button class="btn" @click="selectPage(paginator.min)"><i class="fa fa-angle-double-left"></i></button>
<div class="group-label-button" v-if="data && data.length > 0">
<button class="btn" :class="{'disabled': paginator.count <= 1}" @click="selectPage(paginator.min)"><i class="fa fa-angle-double-left"></i></button>
<div class="freespace" v-for="(p, idx) in freeSpaseMinus" :key="'fakeMinus' + idx" >&nbsp;</div>
<button class="btn" :class="{'btn-success': selectedPage == paginator.min + p}"
v-for="(p, idx) in paginator.count" :key="'page' + idx"
@click="selectPage(paginator.min + p)">{{paginator.min + p}}</button>
<div class="freespace" v-for="(p, idx) in freeSpasePlus" :key="'fakePlus' + idx" >&nbsp;</div>
<button class="btn" @click="selectPage(paginator.max)"><i class="fa fa-angle-double-right"></i></button>
<button class="btn" :class="{'disabled': paginator.count <= 1}" @click="selectPage(paginator.max)"><i class="fa fa-angle-double-right"></i></button>
</div>
</td>
</tr>
@@ -1,8 +1,8 @@
import Vue from "vue";
import Component from "vue-class-component";
import { cardReport } from "../../../modules/base-components/cards/index";
import accordionDropdown from "../../../modules/base-components/accordion-dropdown.vue";
import modalReportSelectColumn from "../../../modules/base-components/modal-report-select-column.vue";
import { cardReport } from "src/modules/base-components/cards/index";
import accordionDropdown from "src/modules/base-components/accordion-dropdown.vue";
import modalReportSelectColumn from "src/modules/base-components/modal-report-select-column.vue";
import { Accordion } from "src/modules/base-components";
import { loginService } from "src/services";
import DatePicker from "vue2-datepicker";
@@ -12,12 +12,12 @@ import { ReportGetters } from "@/src/store/report.store";
import Chart from "chart.js";
declare var JustGage: any;
import { reportService } from "../../../services/reportService";
import { reportService } from "src/services/reportService";
import { Watch } from "vue-property-decorator";
import { DoughnutChart } from "src/components/doughnut-chart";
declare let $: any;
@Component({ components: { datePicker: DatePicker, cardReport: cardReport, accordionDropdown: accordionDropdown, accordion: Accordion } })
@Component({ components: { datePicker: DatePicker, cardReport: cardReport, accordionDropdown: accordionDropdown, accordion: Accordion, DoughnutChart } })
export default class CardReportMachineStatus extends Vue {
lang = {
@@ -87,7 +87,7 @@ export default class CardReportMachineStatus extends Vue {
this.users.unshift({ id: -1, username: this.$options.filters.localize("alarm_history_users_not_user", "Nessun utente") });
this.filter.multiUser.push(this.currentUser.username);
await reportService.PieChart(this.filter.interval);
this.buildGage();
this.buildChart();
}
@@ -109,9 +109,8 @@ export default class CardReportMachineStatus extends Vue {
async openModalSelectField() {
this.visibleColumns = await ModalHelper.ShowModalAsync(modalReportSelectColumn, this.visibleColumns);
console.log(this.visibleColumns);
}
public openSelectStateU() {
if (!$('.checkboxesU').hasClass('checkboxesViewUser'))
$('.checkboxesU').addClass('checkboxesViewUser');
@@ -123,18 +122,6 @@ export default class CardReportMachineStatus extends Vue {
this.selectedPage = Math.min(Math.max(page, 1), this.paginationData.pages);
}
buildGage() {
let p = new JustGage({
id: "gauge",
value: this.dataPieces.absoluteValue,
min: 0,
max: 100
});
}
buildChart() {
let $this = this;
let dataNumber: Array<number> = [];
@@ -193,9 +180,9 @@ export default class CardReportMachineStatus extends Vue {
// import Vue from "vue";
// import Component from "vue-class-component";
// import {cardReport} from "../../../modules/base-components/cards/index";
// import accordionDropdown from "../../../modules/base-components/accordion-dropdown.vue";
// import modalReportSelectColumn from "../../../modules/base-components/modal-report-select-column.vue";
// import {cardReport} from "src/modules/base-components/cards/index";
// import accordionDropdown from "src/modules/base-components/accordion-dropdown.vue";
// import modalReportSelectColumn from "src/modules/base-components/modal-report-select-column.vue";
// import { Accordion } from "src/modules/base-components";
// import { loginService } from "src/services";
// import DatePicker from "vue2-datepicker";
@@ -34,7 +34,7 @@
</div>
<div class="body-right-card">
<card-report :title="'Valore assoluto (%)'">
<div id="gauge" class="gauge"></div>
<doughnut-chart :value="dataPieces.absoluteValue" :angle-size="270" :interval="5"></doughnut-chart>
</card-report>
<card-report :title="'Valore assoluto'">
<div class="rectangle_gray">
@@ -96,4 +96,4 @@
</template>
<script src="./card-report-machine-status.ts" lang="ts"></script>
<script src="./card-report-machine-status.ts" lang="ts"></script>
@@ -1,8 +1,8 @@
import Vue from "vue";
import Component from "vue-class-component";
import { cardReport } from "../../../modules/base-components/cards/index";
import accordionDropdown from "../../../modules/base-components/accordion-dropdown.vue";
import modalReportSelectColumn from "../../../modules/base-components/modal-report-select-column.vue";
import { cardReport } from "src/modules/base-components/cards/index";
import accordionDropdown from "src/modules/base-components/accordion-dropdown.vue";
import modalReportSelectColumn from "src/modules/base-components/modal-report-select-column.vue";
import { Accordion } from "src/modules/base-components";
import { loginService } from "src/services";
import DatePicker from "vue2-datepicker";
@@ -12,14 +12,11 @@ import { ReportGetters } from "@/src/store/report.store";
import { Watch } from "vue-property-decorator";
import Chart from "chart.js";
import { reportService } from "../../../services/reportService";
import { awaiter } from "../../../_base";
import { toolingStore } from "@/src/store/tooling.store";
declare var JustGage: any;
import { reportService } from "src/services/reportService";
import { DoughnutChart } from "src/components/doughnut-chart";
declare let $: any;
@Component({ components: { datePicker: DatePicker, cardReport: cardReport, accordionDropdown: accordionDropdown, accordion: Accordion } })
@Component({ components: { datePicker: DatePicker, cardReport: cardReport, accordionDropdown: accordionDropdown, accordion: Accordion, DoughnutChart } })
export default class CardReportProduction extends Vue {
lang = {
@@ -117,7 +114,6 @@ export default class CardReportProduction extends Vue {
// this.resultPrograms = await reportService.ProgramsReport(9,this.selectedPage,this.filter.nameProgram, this.filter.interval);
// this.paginationData.pages = this.resultPrograms.pages;
this.buildChart();
this.buildGage();
}
public selectTab(value) {
@@ -127,16 +123,6 @@ export default class CardReportProduction extends Vue {
return (moment() as any)._locale._longDateFormat.LT;
}
buildGage() {
let p = new JustGage({
id: "gauge",
value: this.dataPieces.absoluteValue,
min: 0,
max: 100
});
}
viewDiagram() {
if (!this.selectDiagram) {
this.selectDiagram = true;
@@ -226,7 +212,7 @@ export default class CardReportProduction extends Vue {
(_self.$refs.tooltip_executed as HTMLElement).innerHTML = barSelected.quantity.toString();
(_self.$refs.tooltip_frequency as HTMLElement).innerHTML = barSelected.frequency.toString();
debugger;
var positionY = this._chart.canvas.offsetTop;
var positionX = this._chart.canvas.offsetLeft;
if(tooltip.caretY > 350){
@@ -88,14 +88,14 @@
<tfoot>
<tr>
<td colspan="4">
<div class="group-label-button">
<button class="btn" @click="selectPage(paginator.min)"><i class="fa fa-angle-double-left"></i></button>
<div class="group-label-button" v-if="programs && programs.length > 0">
<button class="btn" :class="{'disabled': paginator.count <= 1}" @click="selectPage(paginator.min)"><i class="fa fa-angle-double-left"></i></button>
<div class="freespace" v-for="(p, idx) in freeSpaseMinus" :key="'fakeMinus' + idx" >&nbsp;</div>
<button class="btn" :class="{'btn-success': selectedPage == paginator.min + p}"
v-for="(p, idx) in paginator.count" :key="'page' + idx"
@click="selectPage(paginator.min + p)">{{paginator.min + p}}</button>
<div class="freespace" v-for="(p, idx) in freeSpasePlus" :key="'fakePlus' + idx" >&nbsp;</div>
<button class="btn" @click="selectPage(paginator.max)"><i class="fa fa-angle-double-right"></i></button>
<button class="btn" :class="{'disabled': paginator.count <= 1}" @click="selectPage(paginator.max)"><i class="fa fa-angle-double-right"></i></button>
</div>
</td>
</tr>
@@ -149,7 +149,7 @@
</div>
<div class="body-right-card">
<card-report :title="'Valore assoluto (%)'">
<div id="gauge" class="gauge"></div>
<doughnut-chart :value="dataPieces.absoluteValue" :angle-size="270" :interval="5"></doughnut-chart>
</card-report>
<card-report :title="'Valore assoluto'">
<div class="rectangle_gray">
@@ -6,17 +6,17 @@ import DatePicker from "vue2-datepicker";
import { ReportGetters } from "src/store/report.store";
import { reportService } from "src/services/reportService";
import { TimeLineChartHeader, TimeLineChartRow } from "src/components/timeline-chart";
import { DoughnutChart } from "src/components/doughnut-chart";
declare let $: any;
declare var JustGage: any;
@Component({
components: {
datePicker: DatePicker,
cardReport: cardReport,
accordionDropdown: accordionDropdown,
"timeline-chart-row": TimeLineChartRow,
"timeline-chart-header": TimeLineChartHeader
"timeline-chart-header": TimeLineChartHeader,
DoughnutChart
}
})
export default class CardReportTimeline extends Vue {
@@ -61,8 +61,8 @@ export default class CardReportTimeline extends Vue {
}
};
private defaultStartDate: Date = new Date(2019, 1, 1); //new Date(new Date().setDate(new Date().getDate() - 6));
private defaultEndDate: Date = new Date(2019, 1, 28); //new Date(new Date().setDate(new Date().getDate() + 1));
private defaultStartDate: Date = new Date(new Date().setDate(new Date().getDate() - 6));
private defaultEndDate: Date = new Date(new Date().setDate(new Date().getDate() + 1));
filter: {
name: string,
@@ -81,14 +81,13 @@ export default class CardReportTimeline extends Vue {
startTime: Date;
endTime: Date;
} = {
date: [new Date(2019, 1, 1), new Date(2019, 1, 28)],
date: [new Date(new Date().setDate(new Date().getDate() - 6)), new Date(new Date().setDate(new Date().getDate() + 1))],
startTime: null,
endTime: null,
};
async mounted() {
this.filterIntervalChange(this.interval.date, null);
this.buildGage();
}
@Watch("filter.name", { immediate: true })
@@ -139,15 +138,6 @@ export default class CardReportTimeline extends Vue {
this.interval.date = [start, end];
}
buildGage() {
let p = new JustGage({
id: "gauge",
value: this.dataPieces.absoluteValue,
min: 0,
max: 100
});
}
async getData() {
let occurrences = await reportService.TimeLine(this.filter.interval.map(x => x.toString()), this.filter.name);
this.occurrences = {
@@ -31,9 +31,11 @@
<div class="body-left-center-left">
<accordion-dropdown>
<template slot="header" v-if="filter.timelineMacro.length > 0">
<div class="title">
<span v-for="(item, index) in filter.timelineMacro" :key="item" >
{{'report_state_'+item | localize(item)}}{{(index==filter.timelineMacro.length-1)?'':', '}}
</span>
</div>
</template>
<template slot="header" v-else>
<i>{{'report_timeline_filter_required' | localize("Abilita almeno un filtro di ricerca")}}</i>
@@ -163,7 +165,7 @@
</div>
<div class="body-right-card">
<card-report :title="'Valore assoluto (%)'">
<div id="gauge" class="gauge"></div>
<doughnut-chart :value="dataPieces.absoluteValue" :angle-size="270" :interval="5"></doughnut-chart>
</card-report>
<card-report :title="'Valore assoluto'">
<div class="rectangle_gray">
@@ -0,0 +1,136 @@
import Vue from "vue";
import { Component, Prop, Watch } from "vue-property-decorator";
@Component({})
export default class DoughnutChart extends Vue {
@Prop({ required: true, default: 0 })
value: number;
@Prop({ required: false, default: "#1791ff" })
valueColor: string;
@Prop({ required: false, default: 8 })
valueWidth: number;
@Prop({ required: false, default: "%" })
valueMisure: string;
@Prop({ required: false, default: 300 })
angleSize: number;
@Prop({ required: false, default: 5 })
interval: number;
@Prop({ required: false, default: 2 })
intervalSpace: number;
@Prop({ required: false, default: "#bbbcbc" })
intervalColor: string;
@Prop({ required: false, default: 4 })
intervalWidth: number;
cx: number = 56;
cy: number = 54;
radius: number = 40;
gtorad: number = 0.0174533;
// totalSize: number = 360 - 62;
get totalSize(){
return this.angleSize;
}
get differenceAngleSize(){
return (360 - this.angleSize);
}
get zeroAngle()
{
return 90 + (this.angleSize / 2);
}
get fullAngle()
{
return 90 - (this.angleSize / 2);
}
get middleIntervalSpace(){
return this.intervalSpace / 2;
}
get getValue(){
let radius = (this.radius - (this.valueWidth - (this.intervalWidth - 2)));
let size = this.size(this.value);
let longArc = size >= 180;
return this.getArcPath(this.cx, this.cy, radius, this.zeroAngle * this.gtorad, (this.zeroAngle - size) * this.gtorad, longArc, true);
}
get intervals(){
if(this.interval <= 0)
return null
let intervals: string[] = [];
let step = (this.angleSize / this.interval);
let current = this.fullAngle;
while(current < (this.zeroAngle))
{
let start = current + this.middleIntervalSpace;
let end = ((current + step) - this.middleIntervalSpace);
intervals.push(this.getArcPath(this.cx, this.cy, this.radius, start * this.gtorad, end * this.gtorad, false, false));
current = (current + step);
// this.intervals.push(this.getArcPath(this.cx, this.cy, this.radius, -59 * this.gtorad, -1 * this.gtorad, false, false));
// this.intervals.push(this.getArcPath(this.cx, this.cy, this.radius, 1 * this.gtorad, 59 * this.gtorad, false, false));
// this.intervals.push(this.getArcPath(this.cx, this.cy, this.radius, 61 * this.gtorad, 119 * this.gtorad, false, false));
// this.intervals.push(this.getArcPath(this.cx, this.cy, this.radius, 121 * this.gtorad, 179 * this.gtorad, false, false));
// this.intervals.push(this.getArcPath(this.cx, this.cy, this.radius, 181 * this.gtorad, 239 * this.gtorad, false, false));
}
return intervals;
}
get steps(){
if(this.interval <= 0)
return null
let intervals: {x: number, y: number, value: number}[] = [];
let step = (this.angleSize / this.interval);
let current = this.fullAngle;
for (let index = (this.interval); index >= 0; index--) {
let point = this.getPoint(this.cx, this.cy, current * this.gtorad, this.radius + (this.intervalWidth * 2));
intervals.push({x: point[0], y: point[1], value: Math.floor((100 / this.interval) * index)});
current += step
}
return intervals;
}
size(percentage){
return (this.totalSize * percentage / 100);
}
getArcPath(cx: number, cy: number, radius: number, from: number, to:number, largeArcFlag: boolean = false, clockWise: boolean = true) : string{
radius = radius - this.intervalWidth;
let result: string = `M${this.getPoint(cx, cy, from, radius).join(" ")} `; //start point
result += `A ${radius} ${radius} `; //radius
result += `0 `; //x-axis-rotation
result += `${largeArcFlag ? 1 : 0} `; //large-arc-flag
result += `${clockWise ? 1 : 0} `; //sweep-flag
result += `${this.getPoint(cx, cy, to, radius).join(" ")}`; //end point;
return result;
}
getPoint(x: number, y: number, angle: number, radius: number)
{
return [((radius * Math.cos(angle)) + x), (y - (radius * Math.sin(angle)))];
}
}
@@ -0,0 +1,46 @@
<template>
<svg :viewBox="`0 0 116 100`" class="donut-chart" width="100%" height="100%">
<g>
<path
v-for="(interval, index) in intervals"
:key="`${index}-interval`"
:d="interval"
:stroke="intervalColor"
:stroke-width="intervalWidth"
fill="rgba(0,0,0,0)"
class="donut-chart-interval"
></path>
<text
:x="step.x"
:y="step.y"
font-size="10"
v-for="(step, index) in steps"
:key="`${index}-interval-label`"
text-anchor="middle"
:fill="intervalColor"
:stroke="intervalColor"
stroke-width="0"
dy=".3em"
>{{step.value}}</text>
</g>
<g>
<path
:d="getValue"
:stroke="valueColor"
:stroke-width="valueWidth"
fill="rgba(0,0,0,0)"
class="donut-chart-value"
></path>
<text
:x="cx"
:y="cy"
text-anchor="middle"
:fill="valueColor"
:stroke="valueColor"
dy=".3em"
>{{value}}{{valueMisure}}</text>
</g>
</svg>
</template>
<script src="./doughnut-chart.ts" lang="ts"></script>
@@ -0,0 +1,5 @@
import DoughnutChart from "./doughnut-chart.vue";
export {
DoughnutChart
}
@@ -84,6 +84,7 @@ export default class TimeLineChartRow extends Vue {
let diffDays = this.diffDays;
let diffHours = this.diffHours;
debugger;
if (diffDays <= 1) {
step = this.oneHour;
let check = Math.ceil(diffHours / this.interval);
-2
View File
@@ -10,8 +10,6 @@ import { Factory, MessageService } from "src/_base";
// import VueDragDrop from 'vue-drag-drop';
// Vue.use(VueDragDrop);
// var JustGage = require("justgage/justgage.js");
const App = () =>
import ("./App.vue");