Merge remote-tracking branch 'teamdev/develop' into develop
This commit is contained in:
@@ -5,39 +5,83 @@
|
||||
|
||||
|
||||
.dashboard {
|
||||
font-family: "Work Sans";
|
||||
height: calc(~'100% - 60px');
|
||||
width: 100%;
|
||||
background-image: url("../../assets/icons/png/bg.png");
|
||||
position: fixed;
|
||||
z-index: 1001;
|
||||
display: grid;
|
||||
grid-template-rows: 144px 1fr;
|
||||
font-family : "Work Sans";
|
||||
height : calc(~'100% - 60px');
|
||||
width : 100%;
|
||||
background-image : url("../../assets/icons/png/bg.png");
|
||||
position : fixed;
|
||||
z-index : 1001;
|
||||
display : grid;
|
||||
grid-template-rows : 144px 1fr;
|
||||
grid-template-columns: 152px 1fr 610px 1fr 152px;
|
||||
grid-row-gap: 40px;
|
||||
padding-top: 20px;
|
||||
padding-bottom: 40px;
|
||||
color: #4b4b4b;
|
||||
grid-row-gap : 40px;
|
||||
padding-top : 20px;
|
||||
padding-bottom : 40px;
|
||||
color : #4b4b4b;
|
||||
|
||||
header {
|
||||
grid-row: 1;
|
||||
grid-row : 1;
|
||||
grid-column-start: 1;
|
||||
grid-column-end: -1;
|
||||
width: 100% !important;
|
||||
justify-content: space-between;
|
||||
height: 144px !important;
|
||||
position: relative !important;
|
||||
grid-column-end : -1;
|
||||
width : 100% !important;
|
||||
justify-content : space-between;
|
||||
height : 144px !important;
|
||||
position : relative !important;
|
||||
|
||||
.arch{
|
||||
justify-content: center;
|
||||
|
||||
.box-gauge{
|
||||
width: 126px;
|
||||
|
||||
div {
|
||||
|
||||
&:last-of-type {
|
||||
|
||||
label {
|
||||
color: #4b4b4b;
|
||||
|
||||
&:first-of-type{
|
||||
font-size: 18px;
|
||||
}
|
||||
|
||||
&:last-of-type{
|
||||
font-size: 26px;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
.gauge-container{
|
||||
width: 126px;
|
||||
height: 126px;
|
||||
}
|
||||
|
||||
.gauge-container>.gauge>.value {
|
||||
stroke: #1791ff;
|
||||
}
|
||||
|
||||
.gauge-container.three>.gauge>.value-text {
|
||||
fill: #4b4b4b;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
.ribbon-container,
|
||||
.app-ribbon {
|
||||
height: 144px;
|
||||
width: 152px;
|
||||
border-top-right-radius: 72px;
|
||||
height : 144px;
|
||||
width : 152px;
|
||||
border-top-right-radius : 72px;
|
||||
border-bottom-right-radius: 72px;
|
||||
|
||||
.status-icon {
|
||||
width: 114px;
|
||||
height: 114px;
|
||||
width : 114px;
|
||||
height : 114px;
|
||||
border-radius: 57px;
|
||||
|
||||
* {
|
||||
@@ -48,12 +92,12 @@
|
||||
}
|
||||
|
||||
.header-buttons {
|
||||
padding-right: 21px;
|
||||
display: flex;
|
||||
flex-flow: column;
|
||||
align-items: flex-end;
|
||||
padding-right : 21px;
|
||||
display : flex;
|
||||
flex-flow : column;
|
||||
align-items : flex-end;
|
||||
justify-content: space-between;
|
||||
height: 100%;
|
||||
height : 100%;
|
||||
|
||||
.user-info {
|
||||
font-size: 14px;
|
||||
@@ -64,43 +108,43 @@
|
||||
}
|
||||
|
||||
button.modal-close {
|
||||
box-shadow: none;
|
||||
box-shadow : none;
|
||||
background-color: @color-darkish-blue;
|
||||
color: white;
|
||||
color : white;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.first_col {
|
||||
grid-row: 2;
|
||||
grid-row : 2;
|
||||
grid-column: 2;
|
||||
height: 100%;
|
||||
display: flex;
|
||||
flex-flow: column;
|
||||
height : 100%;
|
||||
display : flex;
|
||||
flex-flow : column;
|
||||
|
||||
.timing-area {
|
||||
display: grid;
|
||||
display : grid;
|
||||
grid-template-rows: 1fr 1fr 1fr;
|
||||
height: 610px;
|
||||
height : 610px;
|
||||
|
||||
.start,
|
||||
.current,
|
||||
.end {
|
||||
display: flex;
|
||||
flex-flow: column;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
background-color: rgba(153, 207, 255, 0.6);
|
||||
border-top-left-radius: 100px;
|
||||
display : flex;
|
||||
flex-flow : column;
|
||||
align-items : center;
|
||||
justify-content : center;
|
||||
background-color : rgba(153, 207, 255, 0.6);
|
||||
border-top-left-radius : 100px;
|
||||
border-bottom-left-radius: 100px;
|
||||
|
||||
small {
|
||||
font-size: 26px;
|
||||
font-size : 26px;
|
||||
text-transform: uppercase;
|
||||
}
|
||||
|
||||
time {
|
||||
font-size: 120px;
|
||||
font-size : 120px;
|
||||
font-weight: 300;
|
||||
}
|
||||
}
|
||||
@@ -109,68 +153,68 @@
|
||||
background-color: transparent;
|
||||
|
||||
time {
|
||||
font-size: 54px;
|
||||
font-size : 54px;
|
||||
font-weight: 500;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.setpoint {
|
||||
margin: auto;
|
||||
display: grid;
|
||||
grid-template-rows: 1fr 1fr;
|
||||
margin : auto;
|
||||
display : grid;
|
||||
grid-template-rows : 1fr 1fr;
|
||||
grid-template-columns: 65px 125px 65px;
|
||||
grid-row-gap: 1rem;
|
||||
grid-row-gap : 1rem;
|
||||
|
||||
img {
|
||||
grid-row: 1;
|
||||
grid-row : 1;
|
||||
grid-column: 1;
|
||||
margin: auto;
|
||||
height: 41px;
|
||||
width: 41px;
|
||||
margin : auto;
|
||||
height : 41px;
|
||||
width : 41px;
|
||||
}
|
||||
|
||||
label {
|
||||
margin: auto;
|
||||
grid-row: 1;
|
||||
margin : auto;
|
||||
grid-row : 1;
|
||||
grid-column-start: 2;
|
||||
grid-column-end: -1;
|
||||
grid-column-end : -1;
|
||||
|
||||
font-size: 54px;
|
||||
font-size : 54px;
|
||||
text-align: right;
|
||||
}
|
||||
|
||||
div {
|
||||
display: flex;
|
||||
display : flex;
|
||||
flex-flow: column;
|
||||
|
||||
font-weight: 500;
|
||||
align-items: center;
|
||||
|
||||
small {
|
||||
font-size: 12px;
|
||||
line-height: 25px;
|
||||
font-size : 12px;
|
||||
line-height : 25px;
|
||||
text-transform: uppercase;
|
||||
}
|
||||
|
||||
span {
|
||||
line-height: 25px;
|
||||
font-size: 25px;
|
||||
font-size : 25px;
|
||||
}
|
||||
}
|
||||
|
||||
button {
|
||||
border: 2px solid #4b4b4b;
|
||||
border-radius: 50%;
|
||||
width: 65px;
|
||||
height: 65px;
|
||||
font-size: 36px;
|
||||
box-shadow: 0 2px 10px 0 rgba(0, 0, 0, 0.5);
|
||||
font-size: 28px;
|
||||
border : 2px solid #4b4b4b;
|
||||
border-radius : 50%;
|
||||
width : 65px;
|
||||
height : 65px;
|
||||
font-size : 36px;
|
||||
box-shadow : 0 2px 10px 0 rgba(0, 0, 0, 0.5);
|
||||
font-size : 28px;
|
||||
justify-content: center;
|
||||
align-items: center;
|
||||
display: flex;
|
||||
color: #4b4b4b;
|
||||
align-items : center;
|
||||
display : flex;
|
||||
color : #4b4b4b;
|
||||
}
|
||||
|
||||
}
|
||||
@@ -178,40 +222,49 @@
|
||||
}
|
||||
|
||||
.second_col {
|
||||
grid-row: 2;
|
||||
grid-row : 2;
|
||||
grid-column: 3;
|
||||
height: 100%;
|
||||
display: flex;
|
||||
flex-flow: column;
|
||||
height : 100%;
|
||||
display : flex;
|
||||
flex-flow : column;
|
||||
|
||||
.remaining_time {
|
||||
margin: auto;
|
||||
display: flex;
|
||||
margin : auto;
|
||||
display : flex;
|
||||
flex-flow: column;
|
||||
|
||||
align-items: center;
|
||||
|
||||
small {
|
||||
font-size: 26px;
|
||||
font-weight: 500;
|
||||
font-size : 26px;
|
||||
font-weight : 500;
|
||||
text-transform: uppercase;
|
||||
}
|
||||
|
||||
time {
|
||||
font-size: 120px;
|
||||
font-size : 120px;
|
||||
font-weight: 300;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.third_col {
|
||||
grid-row: 2;
|
||||
grid-row : 2;
|
||||
grid-column-start: 4;
|
||||
grid-column-end: -1;
|
||||
height: 100%;
|
||||
display: flex;
|
||||
flex-flow: column;
|
||||
justify-content: flex-end;
|
||||
grid-column-end : -1;
|
||||
height : 100%;
|
||||
display : flex;
|
||||
flex-flow : column;
|
||||
|
||||
.pieces {
|
||||
height: 400px;
|
||||
|
||||
aside {
|
||||
margin-top: 10px;
|
||||
height : 100%;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
@@ -3,6 +3,7 @@
|
||||
@import "colors.less";
|
||||
@import "modals.less";
|
||||
@import "dashboard-gauge.less";
|
||||
@import "piece.less";
|
||||
@import "dashboard.less";
|
||||
@import "riscaldi.less";
|
||||
@import "slider.less";
|
||||
|
||||
@@ -0,0 +1,79 @@
|
||||
// out: false, sourceMap: false, main: ../style.less
|
||||
|
||||
.piece_info{
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: space-evenly;
|
||||
height: 84px;
|
||||
border-bottom: 2px solid black;
|
||||
|
||||
label{
|
||||
font-size: 54px;
|
||||
font-weight: 500;
|
||||
text-align: right;
|
||||
color: #4b4b4b;
|
||||
}
|
||||
|
||||
div{
|
||||
display: flex;
|
||||
flex-flow: column;
|
||||
|
||||
span{
|
||||
font-family: "Work Sans";
|
||||
font-weight: 500;
|
||||
line-height: 1;
|
||||
letter-spacing: normal;
|
||||
text-align: center;
|
||||
color: #4b4b4b;
|
||||
|
||||
&:first-of-type{
|
||||
font-size: 12px;
|
||||
text-transform: uppercase;
|
||||
}
|
||||
|
||||
&:last-of-type{
|
||||
font-size: 25px;
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
button{
|
||||
height: 16px;
|
||||
width: 16px;
|
||||
background-color: black;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
.sub_menu{
|
||||
margin-left: 250px;
|
||||
display: grid;
|
||||
grid-template-rows: repeat(3,60px);
|
||||
|
||||
.piece_info{
|
||||
height: 60px;
|
||||
|
||||
button{
|
||||
background-color: white;
|
||||
border-color: black;
|
||||
border-radius: 50%;
|
||||
width: 50px;
|
||||
height: 50px;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
.row_1{
|
||||
grid-row: 1;
|
||||
}
|
||||
|
||||
.row_2{
|
||||
grid-row: 2;
|
||||
}
|
||||
|
||||
.row_3{
|
||||
grid-row: 3;
|
||||
}
|
||||
|
||||
}
|
||||
@@ -4102,6 +4102,67 @@ article .box .body {
|
||||
stroke: #4caaff;
|
||||
stroke-width: 1;
|
||||
}
|
||||
.piece_info {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: space-evenly;
|
||||
height: 84px;
|
||||
border-bottom: 2px solid black;
|
||||
}
|
||||
.piece_info label {
|
||||
font-size: 54px;
|
||||
font-weight: 500;
|
||||
text-align: right;
|
||||
color: #4b4b4b;
|
||||
}
|
||||
.piece_info div {
|
||||
display: flex;
|
||||
flex-flow: column;
|
||||
}
|
||||
.piece_info div span {
|
||||
font-family: "Work Sans";
|
||||
font-weight: 500;
|
||||
line-height: 1;
|
||||
letter-spacing: normal;
|
||||
text-align: center;
|
||||
color: #4b4b4b;
|
||||
}
|
||||
.piece_info div span:first-of-type {
|
||||
font-size: 12px;
|
||||
text-transform: uppercase;
|
||||
}
|
||||
.piece_info div span:last-of-type {
|
||||
font-size: 25px;
|
||||
}
|
||||
.piece_info button {
|
||||
height: 16px;
|
||||
width: 16px;
|
||||
background-color: black;
|
||||
}
|
||||
.sub_menu {
|
||||
margin-left: 250px;
|
||||
display: grid;
|
||||
grid-template-rows: repeat(3, 60px);
|
||||
}
|
||||
.sub_menu .piece_info {
|
||||
height: 60px;
|
||||
}
|
||||
.sub_menu .piece_info button {
|
||||
background-color: white;
|
||||
border-color: black;
|
||||
border-radius: 50%;
|
||||
width: 50px;
|
||||
height: 50px;
|
||||
}
|
||||
.sub_menu .row_1 {
|
||||
grid-row: 1;
|
||||
}
|
||||
.sub_menu .row_2 {
|
||||
grid-row: 2;
|
||||
}
|
||||
.sub_menu .row_3 {
|
||||
grid-row: 3;
|
||||
}
|
||||
.dashboard {
|
||||
font-family: "Work Sans";
|
||||
height: calc(100% - 60px);
|
||||
@@ -4126,6 +4187,31 @@ article .box .body {
|
||||
height: 144px !important;
|
||||
position: relative !important;
|
||||
}
|
||||
.dashboard header .arch {
|
||||
justify-content: center;
|
||||
}
|
||||
.dashboard header .arch .box-gauge {
|
||||
width: 126px;
|
||||
}
|
||||
.dashboard header .arch .box-gauge div:last-of-type label {
|
||||
color: #4b4b4b;
|
||||
}
|
||||
.dashboard header .arch .box-gauge div:last-of-type label:first-of-type {
|
||||
font-size: 18px;
|
||||
}
|
||||
.dashboard header .arch .box-gauge div:last-of-type label:last-of-type {
|
||||
font-size: 26px;
|
||||
}
|
||||
.dashboard header .arch .box-gauge .gauge-container {
|
||||
width: 126px;
|
||||
height: 126px;
|
||||
}
|
||||
.dashboard header .arch .box-gauge .gauge-container > .gauge > .value {
|
||||
stroke: #1791ff;
|
||||
}
|
||||
.dashboard header .arch .box-gauge .gauge-container.three > .gauge > .value-text {
|
||||
fill: #4b4b4b;
|
||||
}
|
||||
.dashboard header .ribbon-container,
|
||||
.dashboard header .app-ribbon {
|
||||
height: 144px;
|
||||
@@ -4283,7 +4369,13 @@ article .box .body {
|
||||
height: 100%;
|
||||
display: flex;
|
||||
flex-flow: column;
|
||||
justify-content: flex-end;
|
||||
}
|
||||
.dashboard .third_col .pieces {
|
||||
height: 400px;
|
||||
}
|
||||
.dashboard .third_col .pieces aside {
|
||||
margin-top: 10px;
|
||||
height: 100%;
|
||||
}
|
||||
.warmers {
|
||||
position: relative;
|
||||
|
||||
@@ -10,7 +10,8 @@
|
||||
<style scoped>
|
||||
.clock {
|
||||
display: grid;
|
||||
grid-template-columns: 1fr 1fr;
|
||||
/* grid-template-columns: 1fr 1fr; */
|
||||
grid-template-columns: 500px 500px;
|
||||
grid-column-gap: 1rem;
|
||||
width: fit-content;
|
||||
}
|
||||
|
||||
+26
@@ -0,0 +1,26 @@
|
||||
import Vue from 'vue';
|
||||
import Component from 'vue-class-component';
|
||||
import { Prop } from 'vue-property-decorator';
|
||||
|
||||
|
||||
@Component({})
|
||||
export default class PieceSubMenu extends Vue{
|
||||
|
||||
@Prop({default:0})
|
||||
blowing_time:number;
|
||||
@Prop({default:0})
|
||||
cycle_time_gross:number;
|
||||
@Prop({default:0})
|
||||
mould_temp:number;
|
||||
@Prop({default:0})
|
||||
t_mat_end_heat:number;
|
||||
@Prop({default:0})
|
||||
t_mat_end_blowing:number;
|
||||
@Prop({default:0})
|
||||
vacuum_time:number;
|
||||
@Prop({default:0})
|
||||
energy_in:number;
|
||||
@Prop({default:0})
|
||||
energy_out:number;
|
||||
|
||||
}
|
||||
+44
@@ -0,0 +1,44 @@
|
||||
<template>
|
||||
<div class="sub_menu">
|
||||
<div class="piece_info row_1">
|
||||
<button><img src="assets/icons/png/bt.png"></button>
|
||||
<div>
|
||||
<span>{{'dashboard-blowing-time' | localize('tempo ventilazione')}}</span>
|
||||
<span>{{blowing_time}}</span>
|
||||
</div>
|
||||
<div>
|
||||
<span>{{'dashboard-cycle-time-gross' | localize('tempo ciclo lordo')}}</span>
|
||||
<span>{{cycle_time_gross}}</span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="piece_info row_2">
|
||||
<div>
|
||||
<span>{{'dashboard-mould-temp' | localize('temperatura stampo')}}</span>
|
||||
<span>{{mould_temp}}</span>
|
||||
</div>
|
||||
<div>
|
||||
<span>{{'dashboard-t-mat-end-heat' | localize('t. materiale fine riscaldo')}}</span>
|
||||
<span>{{t_mat_end_heat}}</span>
|
||||
</div>
|
||||
<div>
|
||||
<span>{{'dashboard-t-mat-end-blowing' | localize('t. materiale fine ventilazione')}}</span>
|
||||
<span>{{t_mat_end_blowing}}</span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="piece_info row_3">
|
||||
<div>
|
||||
<span>{{'dashboard-vacuum-time' | localize('tempo vuoto')}}</span>
|
||||
<span>{{vacuum_time}}</span>
|
||||
</div>
|
||||
<div>
|
||||
<span>{{'dashboard-energy-in' | localize('energia utilizzata in')}}</span>
|
||||
<span>{{energy_in}}</span>
|
||||
</div>
|
||||
<div>
|
||||
<span>{{'dashboard-energy-out' | localize('energia utilizzata out')}}</span>
|
||||
<span>{{energy_out}}</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
<script lang="ts" src="./piece-sub-menu.ts"></script>
|
||||
@@ -0,0 +1,20 @@
|
||||
import Vue from 'vue';
|
||||
import Component from 'vue-class-component';
|
||||
import { Prop } from 'vue-property-decorator';
|
||||
import PieceSubMenu from "./piece-sub-menu.vue";
|
||||
|
||||
@Component({components:{submenu:PieceSubMenu}})
|
||||
export default class Piece extends Vue{
|
||||
|
||||
@Prop({default:0})
|
||||
number:number;
|
||||
@Prop({default:0})
|
||||
heat_time:number;
|
||||
@Prop({default:0})
|
||||
vacuum:number;
|
||||
@Prop({default:0})
|
||||
cycle_time_net:number;
|
||||
|
||||
submenu:boolean=false;
|
||||
|
||||
}
|
||||
@@ -0,0 +1,22 @@
|
||||
<template>
|
||||
<div>
|
||||
<div class="piece_info">
|
||||
<label>{{number}}</label>
|
||||
<div>
|
||||
<span>{{'dashboard-heat-time' | localize('tempo riscaldo')}}</span>
|
||||
<span>{{heat_time}}</span>
|
||||
</div>
|
||||
<div>
|
||||
<span>{{'dashboard-vacuum' | localize('vuoto')}}</span>
|
||||
<span>{{vacuum}}</span>
|
||||
</div>
|
||||
<div>
|
||||
<span>{{'dashboard-cycle-time-netto' | localize('tempo ciclo netto')}}</span>
|
||||
<span>{{cycle_time_net}}</span>
|
||||
</div>
|
||||
<button @click="submenu=!submenu"></button>
|
||||
</div>
|
||||
<submenu v-if="submenu"></submenu>
|
||||
</div>
|
||||
</template>
|
||||
<script lang="ts" src="./piece.ts"></script>
|
||||
@@ -9,18 +9,21 @@ import { getColorFromName, isDarkColor } from "@/_base/utils";
|
||||
import ArchInterface from "../components/arch-interface/arch-interface.vue";
|
||||
import gauge from "./base-components/gauge.vue";
|
||||
import clock from "./base-components/clock.vue";
|
||||
import Piece from "./base-components/piece.vue";
|
||||
|
||||
@Component({
|
||||
components: {
|
||||
appRibbon: AppRibbon,
|
||||
archInterface: ArchInterface,
|
||||
alarmList,
|
||||
gauge, clock
|
||||
gauge, clock,
|
||||
piece:Piece
|
||||
}
|
||||
})
|
||||
export default class Dashboard extends Vue {
|
||||
|
||||
|
||||
@Prop({ default: 10 })
|
||||
pieces:number;
|
||||
@Prop({ default: 280 })
|
||||
temperature: number;
|
||||
@Prop({ default: 0 })
|
||||
|
||||
@@ -1,128 +1,137 @@
|
||||
<template>
|
||||
<div class="dashboard">
|
||||
<header>
|
||||
<app-ribbon
|
||||
:status="{'alarm': ribbonStatus == 3, 'working': ribbonStatus == 1, 'warning': ribbonStatus == 2}"
|
||||
:has-service="serviceRequired"
|
||||
>
|
||||
<i
|
||||
class="fa fa-check"
|
||||
slot="icon"
|
||||
v-if="ribbonStatus == 0"
|
||||
:title="'header_tooltip_nc_idle' | localize('Nc in Idle state')"
|
||||
></i>
|
||||
<i
|
||||
class="fa fa-play"
|
||||
slot="icon"
|
||||
v-if="ribbonStatus == 1"
|
||||
:title="'header_tooltip_nc_running' | localize('Nc in Running state')"
|
||||
></i>
|
||||
<i
|
||||
class="fa fa-exclamation"
|
||||
slot="icon"
|
||||
v-if="ribbonStatus >1"
|
||||
:title="'header_tooltip_nc_error' | localize('Open/Close alarm list')"
|
||||
></i>
|
||||
<div
|
||||
slot="content"
|
||||
class="content"
|
||||
v-if="ribbonStatus>1"
|
||||
:title="'header_tooltip_nc_error' | localize('Open/Close alarm list')"
|
||||
>
|
||||
<strong v-if="!showDetails">{{alarmTitle | localize(alarmTitle,alarmCount)}}</strong>
|
||||
<strong v-if="showDetails && alarms[0].title">{{alarms[0].title}}</strong>
|
||||
<strong
|
||||
v-if="showDetails && !alarms[0].title"
|
||||
>{{'alarm_'+ alarms[0].id | localize('alarm_'+ alarms[0].id)}}</strong>
|
||||
<div v-if="showDetails">
|
||||
<span class="processes">{{alarms[0].source}}</span>
|
||||
<span class="processes" v-if="alarms[0].source === 'PLC' && alarms[0].process.length>0">
|
||||
<span v-for="p in alarms[0].process" :key="p">{{ p }}</span>
|
||||
</span>
|
||||
<span
|
||||
class="processes"
|
||||
v-if="alarms[0].source !== 'PLC' && alarms[0].process"
|
||||
>{{ alarms[0].process }}</span>
|
||||
</div>
|
||||
</div>
|
||||
<div slot="service" class="content" v-if="serviceRequired">
|
||||
<strong>{{'header_maintainance_request' | localize('Effettuare manutenzione')}}</strong>
|
||||
<span>{{'header_maintainance_request_explanation' | localize('C\'è una procedura da effettuare')}}</span>
|
||||
</div>
|
||||
</app-ribbon>
|
||||
<div class="dashboard">
|
||||
<header>
|
||||
<app-ribbon
|
||||
:status="{'alarm': ribbonStatus == 3, 'working': ribbonStatus == 1, 'warning': ribbonStatus == 2}"
|
||||
:has-service="serviceRequired"
|
||||
>
|
||||
<i
|
||||
class="fa fa-check"
|
||||
slot="icon"
|
||||
v-if="ribbonStatus == 0"
|
||||
:title="'header_tooltip_nc_idle' | localize('Nc in Idle state')"
|
||||
></i>
|
||||
<i
|
||||
class="fa fa-play"
|
||||
slot="icon"
|
||||
v-if="ribbonStatus == 1"
|
||||
:title="'header_tooltip_nc_running' | localize('Nc in Running state')"
|
||||
></i>
|
||||
<i
|
||||
class="fa fa-exclamation"
|
||||
slot="icon"
|
||||
v-if="ribbonStatus >1"
|
||||
:title="'header_tooltip_nc_error' | localize('Open/Close alarm list')"
|
||||
></i>
|
||||
<div
|
||||
slot="content"
|
||||
class="content"
|
||||
v-if="ribbonStatus>1"
|
||||
:title="'header_tooltip_nc_error' | localize('Open/Close alarm list')"
|
||||
>
|
||||
<strong v-if="!showDetails">{{alarmTitle | localize(alarmTitle,alarmCount)}}</strong>
|
||||
<strong v-if="showDetails && alarms[0].title">{{alarms[0].title}}</strong>
|
||||
<strong
|
||||
v-if="showDetails && !alarms[0].title"
|
||||
>{{'alarm_'+ alarms[0].id | localize('alarm_'+ alarms[0].id)}}</strong>
|
||||
<div v-if="showDetails">
|
||||
<span class="processes">{{alarms[0].source}}</span>
|
||||
<span class="processes" v-if="alarms[0].source === 'PLC' && alarms[0].process.length>0">
|
||||
<span v-for="p in alarms[0].process" :key="p">{{ p }}</span>
|
||||
</span>
|
||||
<span
|
||||
class="processes"
|
||||
v-if="alarms[0].source !== 'PLC' && alarms[0].process"
|
||||
>{{ alarms[0].process }}</span>
|
||||
</div>
|
||||
</div>
|
||||
<div slot="service" class="content" v-if="serviceRequired">
|
||||
<strong>{{'header_maintainance_request' | localize('Effettuare manutenzione')}}</strong>
|
||||
<span>{{'header_maintainance_request_explanation' | localize('C\'è una procedura da effettuare')}}</span>
|
||||
</div>
|
||||
</app-ribbon>
|
||||
|
||||
<clock></clock>
|
||||
<clock></clock>
|
||||
|
||||
<div class="header-buttons">
|
||||
<button class="modal-close" @click="close()">
|
||||
<i class="fa fa-remove"></i>
|
||||
</button>
|
||||
<archInterface></archInterface>
|
||||
|
||||
<div class="user-info">
|
||||
<div class="name">
|
||||
{{currentUser.firstName}}
|
||||
<br />
|
||||
{{currentUser.lastName}}
|
||||
</div>
|
||||
<button
|
||||
class="profile dark-blue"
|
||||
v-if="currentUser"
|
||||
@click="sendMessage('show-user-info')"
|
||||
:title="'header_tooltip_btn_usrinfo' | localize('Show User Info')"
|
||||
:class="{'colorWhite':isDarkColor(getColor(currentUser.lastName,currentUser.firstName))}"
|
||||
></button>
|
||||
<button
|
||||
class="profile dark-blue colorWhite"
|
||||
v-else
|
||||
@click="sendMessage('show-user-info')"
|
||||
:title="'header_tooltip_btn_usrinfo' | localize('Show User Info')"
|
||||
></button>
|
||||
</div>
|
||||
</div>
|
||||
</header>
|
||||
<div class="header-buttons">
|
||||
<button class="modal-close" @click="close()">
|
||||
<i class="fa fa-remove"></i>
|
||||
</button>
|
||||
|
||||
<div class="first_col">
|
||||
<div class="timing-area">
|
||||
<div class="start">
|
||||
<small>{{'dashboard-timing-start' | localize('inizio')}}</small>
|
||||
<time>10:53</time>
|
||||
</div>
|
||||
<div class="current">
|
||||
<small>{{'dashboard-timing-elapsed' | localize('tempo trascorso')}}</small>
|
||||
<time>10:53</time>
|
||||
</div>
|
||||
<div class="end">
|
||||
<small>{{'dashboard-timing-end' | localize('fine')}}</small>
|
||||
<time>~10:53</time>
|
||||
</div>
|
||||
</div>
|
||||
<div class="user-info">
|
||||
<div class="name">
|
||||
{{currentUser.firstName}}
|
||||
<br />
|
||||
{{currentUser.lastName}}
|
||||
</div>
|
||||
<button
|
||||
class="profile dark-blue"
|
||||
v-if="currentUser"
|
||||
@click="sendMessage('show-user-info')"
|
||||
:title="'header_tooltip_btn_usrinfo' | localize('Show User Info')"
|
||||
:class="{'colorWhite':isDarkColor(getColor(currentUser.lastName,currentUser.firstName))}"
|
||||
></button>
|
||||
<button
|
||||
class="profile dark-blue colorWhite"
|
||||
v-else
|
||||
@click="sendMessage('show-user-info')"
|
||||
:title="'header_tooltip_btn_usrinfo' | localize('Show User Info')"
|
||||
></button>
|
||||
</div>
|
||||
</div>
|
||||
</header>
|
||||
|
||||
<div class="setpoint">
|
||||
<img src="assets/icons/png/inv.png" />
|
||||
<label>{{temperature}}°C</label>
|
||||
<button>
|
||||
<i class="fa fa-minus"></i>
|
||||
</button>
|
||||
<div>
|
||||
<small>{{'dashboard-setpoint' | localize('set point')}}</small>
|
||||
<span>{{t_setpoint}}°C</span>
|
||||
</div>
|
||||
<button>
|
||||
<i class="fa fa-plus"></i>
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
<div class="first_col">
|
||||
<div class="timing-area">
|
||||
<div class="start">
|
||||
<small>{{'dashboard-timing-start' | localize('inizio')}}</small>
|
||||
<time>10:53</time>
|
||||
</div>
|
||||
<div class="current">
|
||||
<small>{{'dashboard-timing-elapsed' | localize('tempo trascorso')}}</small>
|
||||
<time>10:53</time>
|
||||
</div>
|
||||
<div class="end">
|
||||
<small>{{'dashboard-timing-end' | localize('fine')}}</small>
|
||||
<time>~10:53</time>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="second_col">
|
||||
<gauge></gauge>
|
||||
<div class="remaining_time">
|
||||
<small>{{'dashboard-remaining-time' | localize('tempo rimanente')}}</small>
|
||||
<time>{{remaining_time | date('HH:mm:ss')}}</time>
|
||||
</div>
|
||||
</div>
|
||||
<div class="setpoint">
|
||||
<img src="assets/icons/png/inv.png" />
|
||||
<label>{{temperature}}°C</label>
|
||||
<button>
|
||||
<i class="fa fa-minus"></i>
|
||||
</button>
|
||||
<div>
|
||||
<small>{{'dashboard-setpoint' | localize('set point')}}</small>
|
||||
<span>{{t_setpoint}}°C</span>
|
||||
</div>
|
||||
<button>
|
||||
<i class="fa fa-plus"></i>
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="third_col"></div>
|
||||
</div>
|
||||
<div class="second_col">
|
||||
<gauge></gauge>
|
||||
<div class="remaining_time">
|
||||
<small>{{'dashboard-remaining-time' | localize('tempo rimanente')}}</small>
|
||||
<time>{{remaining_time | date('HH:mm:ss')}}</time>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="third_col">
|
||||
<div class="pieces">
|
||||
<piece></piece>
|
||||
<aside class="scrollable auto">
|
||||
<piece v-for="p in pieces" :key="p" :number="p"></piece>
|
||||
</aside>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script lang="ts" src="./dashboard.ts"></script>
|
||||
Reference in New Issue
Block a user