Merge branch 'feature/wp10' into develop

This commit is contained in:
Alessandro
2019-01-25 09:32:09 +01:00
18 changed files with 8272 additions and 1904 deletions
+3 -1
View File
@@ -854,7 +854,9 @@
color: @color-white;
}
.pagination button:hover:not(.active) {background-color: @color-whitegrey;}
.pagination button:hover:not(.active) {
background-color: @color-whitegrey;
}
}
}
File diff suppressed because it is too large Load Diff
-625
View File
@@ -81,631 +81,6 @@
padding: 0 24px 24px 24px;
display: flex;
flex-flow: row;
.reports-box-body-left {
width: 1455px;
height: 100%;
.body-left-header, .body-left-header-machinestatus{
width: 100%;
height: 70px;
display: flex;
flex-flow: row;
margin-top: 18px;
border-right: solid 2px @color-whitegrey;
position: relative;
margin-bottom: 16px;
.mx-datepicker-range{
width: 170px;
height: 70px;
.mx-input-wrapper{
margin-right: 24px;
width: 253px;
.mx-input{
width: 253px;
height: 50px;
border-radius: 2px;
box-shadow: 0 1px 2px 0 @color-black-40;
border: solid 1px @color-silver;
font-size: 18px;
line-height: 1.11;
color: @color-greyish-brown;
padding-left: 16px;
}
}
}
> div {
display: flex;
flex-flow: column;
height: 70px;
margin-right: 24px;
label.intervaldate{
width: 253px;
}
select{
width: 192px;
height: 48px;
border-radius: 2px;
box-shadow: 0 1px 2px 0 @color-black-40;
border: solid 1px @color-silver;
font-size: 18px;
line-height: 1.11;
color: @color-greyish-brown;
padding-left: 16px;
}
div.interval-time{
display: flex;
flex-flow: row;
input[type="time"]{
width: 112px;
height: 48px;
border-radius: 2px;
box-shadow: inset 0 1px 3px 0 @color-black-50;
font-size: 18px;
line-height: 1.11;
color: @color-silver;
border: none;
}
input[type="time"]:first-child{
margin-right: 16px;
}
input[type="time"]::-webkit-inner-spin-button {
-webkit-appearance: none;
display: none;
border:none;
}
}
input.program{
width: 256px;
height: 48px;
border-radius: 2px;
box-shadow: inset 0 1px 3px 0 @color-black-50;
font-size: 18px;
line-height: 1.11;
color: @color-silver;
padding-left: 16px;
border: none;
}
.reports-select-operator{
width: 192px;
height: 48px;
border-radius: 2px;
box-shadow: 0 1px 2px 0 @color-black-40;
font-size: 18px;
line-height: 1.11;
color: @color-greyish-brown;
}
.reports-select-shift{
width: 144px;
height: 48px;
border-radius: 2px;
box-shadow: 0 1px 2px 0 @color-black-40;
}
label.label_advanced_filters{
margin-top: 35px;
font-size: 18px;
line-height: 1;
color: @color-darkish-blue;
cursor: pointer;
span{
text-decoration-line: underline;
text-decoration-color: @color-darkish-blue;
text-decoration-style: solid;
}
}
}
div.advanced-filters{
z-index: 100;
height: 80px;
width: 100%;
display: flex;
flex-flow: row;
background-color: @color-background-white;
position: absolute;
top: 80px;
> div {
display: flex;
flex-flow: column;
height: 70px;
margin-right: 24px;
label.intervaldate{
width: 253px;
}
select{
width: 192px;
height: 48px;
border-radius: 2px;
box-shadow: 0 1px 2px 0 @color-black-40;
border: solid 1px @color-silver;
font-size: 18px;
line-height: 1.11;
color: @color-greyish-brown;
padding-left: 16px;
}
div.interval-time{
display: flex;
flex-flow: row;
input[type="time"]{
width: 112px;
height: 48px;
border-radius: 2px;
box-shadow: inset 0 1px 3px 0 @color-black-50;
font-size: 18px;
line-height: 1.11;
color: @color-silver;
border: none;
}
input[type="time"]:first-child{
margin-right: 16px;
}
input[type="time"]::-webkit-inner-spin-button {
-webkit-appearance: none;
display: none;
border:none;
}
}
input.program{
width: 256px;
height: 48px;
border-radius: 2px;
box-shadow: inset 0 1px 3px 0 @color-black-50;
font-size: 18px;
line-height: 1.11;
color: @color-silver;
padding-left: 16px;
border: none;
}
.reports-select-operator{
width: 192px;
height: 48px;
border-radius: 2px;
box-shadow: 0 1px 2px 0 @color-black-40;
font-size: 18px;
line-height: 1.11;
color: @color-greyish-brown;
}
.reports-select-shift{
width: 144px;
height: 48px;
border-radius: 2px;
box-shadow: 0 1px 2px 0 @color-black-40;
}
label.label_advanced_filters{
margin-top: 35px;
font-size: 18px;
line-height: 1;
color: @color-darkish-blue;
span{
text-decoration-line: underline;
text-decoration-color: @color-darkish-blue;
text-decoration-style: solid;
}
}
}
}
}
.body-left-header-machinestatus{
border-right: 0px;
}
.body-left-center {
width: 1448px;
max-height: 681px;
display: flex;
flex-flow: column;
.body-left-center-container{
width: 100%;
table{
table-layout: fixed;
width: 100%;
border-collapse: collapse;
}
thead{
border-bottom: solid 2px @color-label-grey;
font-size: 14px;
line-height: 1.29;
color: @color-darkish-blue;
display: block;
width: 1431px;
}
thead tr th{
height: 48px;
}
tr:nth-child(even) {background: #FFF }
tr:nth-child(odd) {background: #dddddd }
// thead tr{
// width: 1448px;
// }
thead tr:nth-child(odd){
background: #FFF
}
th:nth-child(1), td:nth-child(1){
width:162px;
max-width: 162px;
text-align: center;
}
th:nth-child(2), td:nth-child(2){
width:139px;
max-width: 139px;
text-align: center;
}
th:nth-child(3), td:nth-child(3){
width:83px;
max-width:83px;
text-align: center;
}
th:nth-child(4), td:nth-child(4){
width:83px;
max-width:83px;
text-align: center;
}
th:nth-child(5), td:nth-child(5){
width:83px;
max-width:83px;
text-align: center;
}
th:nth-child(6), td:nth-child(6){
width:83px;
max-width:83px;
text-align: center;
}
th:nth-child(7), td:nth-child(7){
width:97px;
max-width:97px;
text-align: center;
}
th:nth-child(8), td:nth-child(8){
width:97px;
max-width:97px;
text-align: center;
}
th:nth-child(9), td:nth-child(9){
width:97px;
max-width:97px;
text-align: center;
}
th:nth-child(10), td:nth-child(10){
width:115px;
max-width:115px;
text-align: center;
}
th:nth-child(11), td:nth-child(11){
width:97px;
max-width:97px;
text-align: center;
}
th:nth-child(12), td:nth-child(12){
width:148px;
max-width:148px;
text-align: center;
}
th:nth-child(13), td:nth-child(13){
width:97px;
max-width:97px;
text-align: center;
}
th:last-child{
font-size: 23px;
font-weight: bold;
cursor: pointer;
}
th, td{
overflow: hidden;
div{
overflow: hidden;
max-height: 64px;
}
}
tbody{
display: block;
height: 631px;
width: 1448px;
overflow: scroll;
tr{
cursor: pointer;
height: 64px;
padding: 10px;
font-size: 14px;
line-height: 1.29;
color: @color-greyish-brown;
td{
text-align: center;
&.green{
color: @color-apple-green;
}
&.red{
color: @color-scarlet;
}
}
td:last-child{
width: 10px;
}
&.selected{
background-color: rgba(23, 145, 255, 0.75);
color: @color-white;
font-weight: 600;
}
}
}
.body-left-center-left{
width: 360px;
height: 616px;
display: flex;
flex-flow: column;
align-items: center;
border: solid 1px @color-whitegrey;
overflow-y: auto;
.multiselect{
z-index: 100;
margin-bottom: 24px;
margin-top: 16px;
label{
font-size: 14px;
line-height: 1.29;
color: @color-warm-grey;
}
}
.selectBox{
position: relative;
width: 328px;
height: 64px;
}
.selectBox select{
width: 100%;
padding: 8px;
cursor: pointer;
height: 64px;
font-size: 18px;
line-height: 1.11;
color: @color-greyish-brown;
margin-bottom: 0;
margin-top: 0;
option{
display: none;
}
}
.overSelect{
position: absolute;
left: 0;
right: 0;
top: 0;
bottom: 0;
}
.checkboxes, .checkboxesU{
display: none;
}
.checkboxesView, .checkboxesViewUser{
width: calc(~"100% - 8px");;
background-color: #fff;
display: block;
z-index: 100;
padding: 6px 4px;
box-shadow: 0 3px 5px 0 @color-black-40;
label{
font-size: 18px;
margin:2px;
display: flex;
flex-flow: row;
}
.label-state{
margin-left: 12px;
}
}
div{
select{
width: 328px;
height: 48px;
border-radius: 2px;
box-shadow: 0 1px 2px 0 @color-black-40;
margin-bottom: 24px;
margin-top: 16px;
padding-left: 16px;
font-size: 18px;
line-height: 1.11;
color: @color-greyish-brown;
}
.accordion-dropdown{
header {
height: 64px;
width: 312px;
border-radius: 2px;
box-shadow: 0 1px 2px 0 rgba(0, 0, 0, 0.4);
display: flex;
justify-content: space-between;
align-items: center;
color: @color-darkish-blue;
line-height: 1;
font-size: 18px;
padding-left: 16px;
cursor: pointer;
span {
width: 100%;
}
.expander {
margin: 0 12px;
line-height: 28px;
height: 28px;
width: 28px;
font-size: 28px;
}
}
section {
width: 328px;
min-height: 0;
max-height: 0;
transition: max-height 100ms ease-in-out, min-height 200ms ease-in-out;
overflow: hidden;
&.expanded {
min-height: 64px;
background-color: rgba(255, 255, 255, 0.1);
max-height: 1000px;
}
.item {
height: 64px;
width: 100%;
line-height: 64px;
background-color: @color-white2;
}
.dropdown{
// background-color: @color-white2;
height: 100%;
margin-top: 2px;
.filename{
display: flex;
height: 64px;
align-items: center;
cursor: pointer;
i{
color: @color-cyan-blue;
margin: 0 20px 0 20px;
}
span{
width: 100%;
font-size: 18px;
line-height: 1;
color: @color-darkish-blue;
}
&.selected{
span, i{
color:#4b4b4b;
}
}
}
.filename.selected{
background-color: rgba(255, 255, 255, 0.8);
}
}
}
}
}
}
}
.body-left-center-footer{
height: 64px;
width: 100%;
border: solid 1px @color-whitegrey;
.header-title{
width: 360px;
height: 64px;
display: flex;
flex-flow: column;
align-items: center;
justify-content: center;
.title{
font-size: 14px;
color: @color-warm-grey;
}
.data-temporal{
font-size: 18px;
line-height: 1;
color: @color-greyish-brown;
}
}
}
}
}
.reports-box-body-right {
width: 327px;
height: 100%;
.body-right-header{
width: 100%;
height: 70px;
display: flex;
flex-flow: row;
margin-top: 18px;
justify-content: flex-end;
.body-right-header-left {
width: 158px;
height: 100%;
display: flex;
align-items: center;
justify-content: center;
border-right: solid 2px @color-whitegrey;
button{
width: 48px;
height: 48px;
border-radius: 2px;
box-shadow: 0 1px 2px 0 @color-black-40;
background-image: linear-gradient(to bottom,@color-white2, @color-silver);
border: none;
}
button.active{
width: 48px;
height: 48px;
border-radius: 2px;
box-shadow: inset 0 1px 3px 0 @color-black-40;
background-image: linear-gradient(to bottom, @color-silver, @color-white2 );
color: @color-clear-blue;
border: none;
}
}
.body-right-header-right {
width: calc(~"100% - 158px");
height: 100%;
display: flex;
align-items: center;
justify-content: center;
button{
width: 48px;
height: 48px;
border-radius: 2px;
box-shadow: 0 1px 2px 0 @color-black-40;
background-image: linear-gradient(to bottom,@color-white2, @color-silver);
border:none;
}
button:first-child{
margin-right: 16px;
}
button:active{
width: 48px;
height: 48px;
border-radius: 2px;
box-shadow: inset 0 1px 3px 0 @color-black-40;
background-image: linear-gradient(to bottom, @color-silver, @color-white2 );
border: none;
}
}
}
.body-right-card{
width: 100%;
height: calc(~"100% - 70px");
display: flex;
flex-flow: column;
align-items: center;
.card-report{
> section {
display: flex;
align-items: center;
justify-content: center;
.rectangle_gray{
width: 256px;
height: 120px;
border-radius: 2px;
display: flex;
flex-flow: column;
align-items: center;
justify-content: center;
background-color: @color-white2;
label{
font-size: 18px;
color: @color-warm-grey;
margin-bottom: 30px;
}
span{
font-size: 48px;
font-weight: bold;
line-height: 0.38;
color: @color-clear-blue;
}
}
}
}
}
}
}
}
}
File diff suppressed because it is too large Load Diff
@@ -0,0 +1,94 @@
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 { Accordion } from "src/modules/base-components";
import { loginService } from "src/services";
import DatePicker from "vue2-datepicker";
import moment from "moment";
import { ModalHelper } from "src/components/modals";
declare let $: any;
@Component({ components: { datePicker: DatePicker, cardReport: cardReport, accordionDropdown: accordionDropdown, accordion: Accordion } })
export default class CardReportAlarms extends Vue {
lang = {
days: ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'],
months: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'],
pickers: ['next 7 days', 'next 30 days', 'previous 7 days', 'previous 30 days'],
placeholder: {
date: 'Select Date',
dateRange: 'Select Date Range'
}
}
filter: {
interval?: Date[],
timelineMacro: Array<string>,
multiUser: Array<any>
} = {
timelineMacro: ["Eventi","Allarmi","Stato macchina","Programmi"],
multiUser: [],
interval: [new Date(new Date().setDate(new Date().getDate() - 6)), new Date(new Date().setDate(new Date().getDate() + 1))]
};
public selectedTab: string = "Production";
selectDiagram: boolean = false;
selectMoreFilter: boolean = false;
selectTable: boolean = true;
users: Array<any> = [];
get currentUser() {
return this.$store.state.currentUser;
}
async mounted() {
this.users = await loginService.getAllUsers();
this.users.unshift({ id: -1, username: this.$options.filters.localize("alarm_history_users_not_user", "Nessun utente") });
this.filter.multiUser.push(this.currentUser.username);
}
public selectTab(value){
this.selectedTab = value;
}
timeformat() {
return (moment() as any)._locale._longDateFormat.LT;
}
viewDiagram(){
if(!this.selectDiagram){
this.selectDiagram = true;
this.selectTable = false;
}
console.log("Diagram active");
}
viewTable(){
if(!this.selectTable){
this.selectDiagram = false;
this.selectTable = true;
}
console.log("Diagram active");
}
viewMoreFilter(){
if(!this.selectMoreFilter){
this.selectMoreFilter = true;
}
else{
this.selectMoreFilter = false;
}
}
openModalSelectField(){
ModalHelper.ShowModal(modalReportSelectColumn);
}
public openSelectStateU() {
if (!$('.checkboxesU').hasClass('checkboxesViewUser'))
$('.checkboxesU').addClass('checkboxesViewUser');
else
$('.checkboxesU').removeClass('checkboxesViewUser');
}
}
@@ -0,0 +1,155 @@
<template>
<div class="card-report-alarms">
<div class="reports-box-body-left">
<div class="body-left-header" v-if="selectDiagram">
<div>
<label class="intervaldate">{{'reports_body_header_date_range' | localize("Intervallo date")}}</label>
<date-picker v-model="filter.interval" range type="daterange" :lang="lang"></date-picker>
</div>
<div>
<label>{{'reports_body_header_axes_x' | localize("Asse X")}}</label>
<select><option>{{'reports_body_header_option_axes_x_program_name' | localize("Nome Programma")}}</option></select>
</div>
<div>
<label>{{'reports_body_header_axes_y' | localize("Asse Y")}}</label>
<select><option>{{'reports_body_header_option_axes_y_frequency' | localize("Frequenza")}}</option></select>
</div>
</div>
<div class="body-left-header" v-if="!selectDiagram">
<div>
<label class="intervaldate">{{'reports_body_header_date_range' | localize("Intervallo date")}}</label>
<date-picker v-model="filter.interval" range type="daterange" :lang="lang"></date-picker>
</div>
<div>
<label>{{'reports_body_header_label_hour' | localize("Intervallo orario")}}</label>
<div class="interval-time">
<input type="time"/>
<input type="time"/>
</div>
</div>
<div>
<label>{{'reports_body_header_label_program' | localize("Programma")}}</label>
<input type="text" class="program" :placeholder="'reports_body_header_placeholder_program' | localize('Nome del programma')" />
</div>
<div class="multiselect">
<label>{{'reports_body_header_label_operator' | localize("Operatore")}}</label>
<div class="selectBoxU" @click="openSelectStateU()">
<select id="selectListCheckboxes">
<option><span v-for="(item, index) in filter.multiUser" :key="item" >{{'reports_filter_operator_'+item | localize(item)}}{{(index==filter.multiUser.length-1)?'':', '}}</span></option>
<div class="overSelect"></div>
</select>
</div>
<div class="checkboxesU">
<div v-for="item in users" :key="item.id">
<label :for="item.username">
<div class="custom-checkbox">
<input type="checkbox" v-model="filter.multiUser" :value="item.username" :id="item.username" />
<label :for="item.username"></label>
</div>
<label class="label-state">{{item.username}}</label>
</label>
</div>
</div>
</div>
<!-- <div>
<label>{{'reports_body_header_label_operator' | localize("Operatore")}}</label>
<select class="reports-select-operator"><option>{{'reports_body_header_option_operator_all' | localize("tutti")}}</option></select>
</div> -->
<div>
<label>{{'reports_body_header_label_shift' | localize("Turno")}}</label>
<select class="reports-select-shift"><option>{{'reports_body_header_option_shift_first' | localize("1°")}}</option></select>
</div>
</div>
<div class="body-left-center">
<div class="body-left-center-container">
<table>
<thead>
<tr>
<th>{{'reports_table_program_name' | localize("Nome programma")}}</th>
<th>{{'reports_table_dimensions' | localize("Dimensioni")}}</th>
<th>{{'reports_table_quantity' | localize("Quantity")}}</th>
<th>{{'reports_table_start_now' | localize("Ora inizio")}}</th>
<th>{{'reports_table_end_time' | localize("Ora fine")}}</th>
<th>{{'reports_table_date' | localize("Data")}}</th>
<th>{{'reports_table_effective_time' | localize("T effettivo")}}</th>
<th>{{'reports_table_average_time' | localize("T medio")}}</th>
<th>{{'reports_table_theoretical_time' | localize("T teorico")}}</th>
<th>{{'reports_table_deviation' | localize("Scostamento")}}</th>
<th>{{'reports_table_quality' | localize("Qualità")}}</th>
<th>{{'reports_table_operator_name' | localize("Nome operatore")}}</th>
<th>{{'reports_table_shift' | localize("Turno")}}</th>
<th @click="openModalSelectField()"><i class="fa fa-angle-double-right"></i></th>
</tr>
</thead>
<tbody>
<tr>
<td colspan="1">Finestra02.pgm</td>
<td colspan="1">X: 1210; Y:900; Z: 63</td>
<td colspan="1">1</td>
<td colspan="1">11:25:00</td>
<td colspan="1">13:10:00</td>
<td colspan="1">12/04/2017</td>
<td colspan="1">01:45:00</td>
<td colspan="1">01:25:00</td>
<td colspan="1">01:20:00</td>
<td colspan="1" :class="{'green': false, 'red': true}">+00:20:00</td>
<td colspan="1">Buono</td>
<td colspan="1">Nome utente</td>
<td colspan="1">1°</td>
<td></td>
</tr>
<tr>
<td colspan="1">Finestra02.pgm</td>
<td colspan="1">X: 1210; Y:900; Z: 63</td>
<td colspan="1">1</td>
<td colspan="1">11:25:00</td>
<td colspan="1">13:10:00</td>
<td colspan="1">12/04/2017</td>
<td colspan="1">01:45:00</td>
<td colspan="1">01:25:00</td>
<td colspan="1">01:20:00</td>
<td colspan="1" :class="{'green': false, 'red': true}">+00:20:00</td>
<td colspan="1">Buono</td>
<td colspan="1">Nome utente</td>
<td colspan="1">1°</td>
<td></td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
<div class="reports-box-body-right">
<div class="body-right-header">
<div class="body-right-header-left">
<button :class="{'active': selectTable}" @click="viewTable()"><i class="fa fa-bars fa-2x"></i></button>
<button :class="{'active': selectDiagram}" @click="viewDiagram()"><i class="fa fa-signal fa-2x"></i></button>
</div>
<div class="body-right-header-right">
<button><i class="fa fa-print fa-2x"></i></button>
<button><i class="fa fa-upload fa-2x"></i></button>
</div>
</div>
<div class="body-right-card">
<card-report :title="'Valore assoluto (%)'">
</card-report>
<card-report :title="'Valore assoluto'">
<div class="rectangle_gray">
<label>{{'reports_body_rectangle_label_pieces produced' | localize("Pezzi prodotti")}}</label>
<span>10.000</span>
</div>
</card-report>
<card-report :title="'Valore assoluto'">
<div class="rectangle_gray">
<label>{{'reports_body_rectangle_label_discarded_pieces' | localize("Pezzi scartati")}}</label>
<span>4</span>
</div>
</card-report>
</div>
</div>
</div>
</template>
<script src="./card-report-alarms.ts" lang="ts"></script>
@@ -0,0 +1,118 @@
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 { Accordion } from "src/modules/base-components";
import { loginService } from "src/services";
import DatePicker from "vue2-datepicker";
import moment from "moment";
import { ModalHelper } from "src/components/modals";
declare let $: any;
@Component({ components: { datePicker: DatePicker, cardReport: cardReport, accordionDropdown: accordionDropdown, accordion: Accordion } })
export default class CardReportEvents extends Vue {
lang = {
days: ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'],
months: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'],
pickers: ['next 7 days', 'next 30 days', 'previous 7 days', 'previous 30 days'],
placeholder: {
date: 'Select Date',
dateRange: 'Select Date Range'
}
}
filter: {
interval?: Date[],
timelineMacro: Array<string>,
multiUser: Array<any>
} = {
timelineMacro: ["Eventi", "Allarmi", "Stato macchina", "Programmi"],
multiUser: [],
interval: [new Date(new Date().setDate(new Date().getDate() - 6)), new Date(new Date().setDate(new Date().getDate() + 1))]
};
visibleColumns: string[] = ["ProgramName","Date","Deviation","Dimensions","EffectiveTime","Quality","Quantity","AverageTime","OperatorName","StartTime","TheoreticalTime","EndTime",];
isVisible(value){
return this.visibleColumns.some(c => c == value);
}
public selectedTab: string = "Production";
selectDiagram: boolean = false;
selectMoreFilter: boolean = false;
selectTable: boolean = true;
users: Array<any> = [];
selectedPage = 1;
paginationData: { firstDate: any, pages: number } = {firstDate: new Date(), pages: 6};
get paginator() {
let min = Math.max(this.selectedPage - 4, 0);
let max = Math.min(this.selectedPage + 5, this.paginationData.pages);
return { min: min, max: max, count: (max - min) }
}
get currentUser() {
return this.$store.state.currentUser;
}
async mounted() {
this.users = await loginService.getAllUsers();
this.users.unshift({ id: -1, username: this.$options.filters.localize("alarm_history_users_not_user", "Nessun utente") });
this.filter.multiUser.push(this.currentUser.username);
}
public selectTab(value) {
this.selectedTab = value;
}
timeformat() {
return (moment() as any)._locale._longDateFormat.LT;
}
viewDiagram() {
if (!this.selectDiagram) {
this.selectDiagram = true;
this.selectTable = false;
}
console.log("Diagram active");
}
viewTable() {
if (!this.selectTable) {
this.selectDiagram = false;
this.selectTable = true;
}
console.log("Diagram active");
}
viewMoreFilter() {
if (!this.selectMoreFilter) {
this.selectMoreFilter = true;
}
else {
this.selectMoreFilter = false;
}
}
async openModalSelectField() {
this.visibleColumns = await ModalHelper.ShowModalAsync(modalReportSelectColumn, this.visibleColumns);
console.log(this.visibleColumns);
}
public openSelectStateU() {
if (!$('.checkboxesU').hasClass('checkboxesViewUser'))
$('.checkboxesU').addClass('checkboxesViewUser');
else
$('.checkboxesU').removeClass('checkboxesViewUser');
}
public selectPage(page) {
debugger
this.selectedPage = Math.min(Math.max(page,1), this.paginationData.pages);
}
}
@@ -0,0 +1,146 @@
<template>
<div class="card-report-events">
<div class="reports-box-body-left">
<div class="body-left-header" v-if="selectDiagram">
<div>
<label class="intervaldate">{{'reports_body_header_date_range' | localize("Intervallo date")}}</label>
<date-picker v-model="filter.interval" range type="daterange" :lang="lang"></date-picker>
</div>
<div>
<label>{{'reports_body_header_axes_x' | localize("Asse X")}}</label>
<select><option>{{'reports_body_header_option_axes_x_program_name' | localize("Nome Programma")}}</option></select>
</div>
<div>
<label>{{'reports_body_header_axes_y' | localize("Asse Y")}}</label>
<select><option>{{'reports_body_header_option_axes_y_frequency' | localize("Frequenza")}}</option></select>
</div>
</div>
<div class="body-left-header" v-if="!selectDiagram">
<div>
<label class="intervaldate">{{'reports_body_header_date_range' | localize("Intervallo date")}}</label>
<date-picker v-model="filter.interval" range type="daterange" :lang="lang"></date-picker>
</div>
<div>
<label>{{'reports_body_header_label_hour' | localize("Intervallo orario")}}</label>
<div class="interval-time">
<input type="time"/>
<input type="time"/>
</div>
</div>
<div>
<label>{{'reports_body_header_label_program' | localize("Programma")}}</label>
<input type="text" class="program" :placeholder="'reports_body_header_placeholder_program' | localize('Nome del programma')" />
</div>
<div class="multiselect">
<label>{{'reports_body_header_label_operator' | localize("Operatore")}}</label>
<div class="selectBoxU" @click="openSelectStateU()">
<select id="selectListCheckboxes">
<option><span v-for="(item, index) in filter.multiUser" :key="item" >{{'reports_filter_operator_'+item | localize(item)}}{{(index==filter.multiUser.length-1)?'':', '}}</span></option>
<div class="overSelect"></div>
</select>
</div>
<div class="checkboxesU">
<div v-for="item in users" :key="item.id">
<label :for="item.username">
<div class="custom-checkbox">
<input type="checkbox" v-model="filter.multiUser" :value="item.username" :id="item.username" />
<label :for="item.username"></label>
</div>
<label class="label-state">{{item.username}}</label>
</label>
</div>
</div>
</div>
<!-- <div>
<label>{{'reports_body_header_label_operator' | localize("Operatore")}}</label>
<select class="reports-select-operator"><option>{{'reports_body_header_option_operator_all' | localize("tutti")}}</option></select>
</div> -->
<!-- <div>
<label>{{'reports_body_header_label_shift' | localize("Turno")}}</label>
<select class="reports-select-shift"><option>{{'reports_body_header_option_shift_first' | localize("1°")}}</option></select>
</div> -->
</div>
<div class="body-left-center">
<div class="body-left-center-container">
<table>
<thead>
<tr>
<th :style="{width:(100/visibleColumns.length)+'%'}" v-if="isVisible('ProgramName')">{{'reports_table_program_name' | localize("Nome programma")}}</th>
<th :style="{width:(100/visibleColumns.length)+'%'}" v-if="isVisible('Dimensions')">{{'reports_table_dimensions' | localize("Dimensioni")}}</th>
<th :style="{width:(100/visibleColumns.length)+'%'}" v-if="isVisible('Quantity')">{{'reports_table_quantity' | localize("Quantity")}}</th>
<th :style="{width:(100/visibleColumns.length)+'%'}" v-if="isVisible('StartTime')">{{'reports_table_start_now' | localize("Ora inizio")}}</th>
<th :style="{width:(100/visibleColumns.length)+'%'}" v-if="isVisible('EndTime')">{{'reports_table_end_time' | localize("Ora fine")}}</th>
<th :style="{width:(100/visibleColumns.length)+'%'}" v-if="isVisible('Date')">{{'reports_table_date' | localize("Data")}}</th>
<th :style="{width:(100/visibleColumns.length)+'%'}" v-if="isVisible('EffectiveTime')">{{'reports_table_effective_time' | localize("T effettivo")}}</th>
<th :style="{width:(100/visibleColumns.length)+'%'}" v-if="isVisible('AverageTime')">{{'reports_table_average_time' | localize("T medio")}}</th>
<th :style="{width:(100/visibleColumns.length)+'%'}" v-if="isVisible('TheoreticalTime')">{{'reports_table_theoretical_time' | localize("T teorico")}}</th>
<th :style="{width:(100/visibleColumns.length)+'%'}" v-if="isVisible('Deviation')">{{'reports_table_deviation' | localize("Scostamento")}}</th>
<th :style="{width:(100/visibleColumns.length)+'%'}" v-if="isVisible('Quality')">{{'reports_table_quality' | localize("Qualità")}}</th>
<th :style="{width:(100/visibleColumns.length)+'%'}" v-if="isVisible('OperatorName')">{{'reports_table_operator_name' | localize("Nome operatore")}}</th>
<!-- <th v-if="isVisible('Shift')">{{'reports_table_shift' | localize("Turno")}}</th> -->
<th @click="openModalSelectField()"><i class="fa fa-angle-double-right"></i></th>
</tr>
</thead>
<tbody>
<tr>
<td :style="{width:(100/visibleColumns.length)+'%'}" v-if="isVisible('ProgramName')">Finestra02.pgm</td>
<td :style="{width:(100/visibleColumns.length)+'%'}" v-if="isVisible('Dimensions')">X: 1210; Y:900; Z: 63</td>
<td :style="{width:(100/visibleColumns.length)+'%'}" v-if="isVisible('Quantity')">1</td>
<td :style="{width:(100/visibleColumns.length)+'%'}" v-if="isVisible('StartTime')">11:25:00</td>
<td :style="{width:(100/visibleColumns.length)+'%'}" v-if="isVisible('EndTime')">13:10:00</td>
<td :style="{width:(100/visibleColumns.length)+'%'}" v-if="isVisible('Date')">12/04/2017</td>
<td :style="{width:(100/visibleColumns.length)+'%'}" v-if="isVisible('EffectiveTime')">01:45:00</td>
<td :style="{width:(100/visibleColumns.length)+'%'}" v-if="isVisible('AverageTime')">01:25:00</td>
<td :style="{width:(100/visibleColumns.length)+'%'}" v-if="isVisible('TheoreticalTime')">01:20:00</td>
<td :style="{width:(100/visibleColumns.length)+'%'}" v-if="isVisible('Deviation')" :class="{'green': false, 'red': true}">+00:20:00</td>
<td :style="{width:(100/visibleColumns.length)+'%'}" v-if="isVisible('Quality')">Buono</td>
<td :style="{width:(100/visibleColumns.length)+'%'}" v-if="isVisible('OperatorName')">Nome utente</td>
<!-- <td v-if="isVisible('Shift')">1°</td> -->
<td></td>
</tr>
</tbody>
</table>
<div class="pagination">
<button @click="selectPage(selectedPage-1)"><i class="fa fa-angle-double-left"></i></button>
<button class="page" :class="{active: selectedPage == paginator.min + p}"
v-for="(p, idx) in paginator.count" :key="'page' + idx"
@click="selectPage(paginator.min + p)">{{paginator.min + p}}</button>
<button @click="selectPage(selectedPage+1)"><i class="fa fa-angle-double-right"></i></button>
</div>
</div>
</div>
</div>
<div class="reports-box-body-right">
<div class="body-right-header">
<div class="body-right-header-left">
<button :class="{'active': selectTable}" @click="viewTable()"><i class="fa fa-bars fa-2x"></i></button>
<button :class="{'active': selectDiagram}" @click="viewDiagram()"><i class="fa fa-signal fa-2x"></i></button>
</div>
<div class="body-right-header-right">
<button><i class="fa fa-print fa-2x"></i></button>
<button><i class="fa fa-upload fa-2x"></i></button>
</div>
</div>
<div class="body-right-card">
<card-report :title="'Valore assoluto (%)'">
</card-report>
<card-report :title="'Valore assoluto'">
<div class="rectangle_gray">
<label>{{'reports_body_rectangle_label_pieces produced' | localize("Pezzi prodotti")}}</label>
<span>10.000</span>
</div>
</card-report>
<card-report :title="'Valore assoluto'">
<div class="rectangle_gray">
<label>{{'reports_body_rectangle_label_discarded_pieces' | localize("Pezzi scartati")}}</label>
<span>4</span>
</div>
</card-report>
</div>
</div>
</div>
</template>
<script src="./card-report-events.ts" lang="ts"></script>
@@ -0,0 +1,219 @@
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 { Accordion } from "src/modules/base-components";
import { loginService } from "src/services";
import DatePicker from "vue2-datepicker";
import moment from "moment";
import { ModalHelper } from "src/components/modals";
declare let $: any;
@Component({ components: { datePicker: DatePicker, cardReport: cardReport, accordionDropdown: accordionDropdown, accordion: Accordion } })
export default class CardReportMachineStatus extends Vue {
lang = {
days: ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'],
months: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'],
pickers: ['next 7 days', 'next 30 days', 'previous 7 days', 'previous 30 days'],
placeholder: {
date: 'Select Date',
dateRange: 'Select Date Range'
}
}
filter: {
interval?: Date[],
timelineMacro: Array<string>,
multiUser: Array<any>
} = {
timelineMacro: ["Eventi", "Allarmi", "Stato macchina", "Programmi"],
multiUser: [],
interval: [new Date(new Date().setDate(new Date().getDate() - 6)), new Date(new Date().setDate(new Date().getDate() + 1))]
};
visibleColumns: string[] = ["ProgramName","Date","Deviation","Dimensions","EffectiveTime","Quality","Quantity","AverageTime","OperatorName","StartTime","TheoreticalTime","EndTime",];
isVisible(value){
return this.visibleColumns.some(c => c == value);
}
public selectedTab: string = "Production";
selectDiagram: boolean = false;
selectMoreFilter: boolean = false;
selectTable: boolean = true;
users: Array<any> = [];
selectedPage = 1;
paginationData: { firstDate: any, pages: number } = {firstDate: new Date(), pages: 6};
get paginator() {
let min = Math.max(this.selectedPage - 4, 0);
let max = Math.min(this.selectedPage + 5, this.paginationData.pages);
return { min: min, max: max, count: (max - min) }
}
get currentUser() {
return this.$store.state.currentUser;
}
async mounted() {
this.users = await loginService.getAllUsers();
this.users.unshift({ id: -1, username: this.$options.filters.localize("alarm_history_users_not_user", "Nessun utente") });
this.filter.multiUser.push(this.currentUser.username);
}
public selectTab(value) {
this.selectedTab = value;
}
timeformat() {
return (moment() as any)._locale._longDateFormat.LT;
}
viewDiagram() {
if (!this.selectDiagram) {
this.selectDiagram = true;
this.selectTable = false;
}
console.log("Diagram active");
}
viewTable() {
if (!this.selectTable) {
this.selectDiagram = false;
this.selectTable = true;
}
console.log("Diagram active");
}
viewMoreFilter() {
if (!this.selectMoreFilter) {
this.selectMoreFilter = true;
}
else {
this.selectMoreFilter = false;
}
}
async openModalSelectField() {
this.visibleColumns = await ModalHelper.ShowModalAsync(modalReportSelectColumn, this.visibleColumns);
console.log(this.visibleColumns);
}
public openSelectStateU() {
if (!$('.checkboxesU').hasClass('checkboxesViewUser'))
$('.checkboxesU').addClass('checkboxesViewUser');
else
$('.checkboxesU').removeClass('checkboxesViewUser');
}
public selectPage(page) {
debugger
this.selectedPage = Math.min(Math.max(page,1), this.paginationData.pages);
}
}
/** versione zeplin non cancellare */
// 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 { Accordion } from "src/modules/base-components";
// import { loginService } from "src/services";
// import DatePicker from "vue2-datepicker";
// import moment from "moment";
// import { ModalHelper } from "src/components/modals";
// declare let $: any;
// @Component({ components: { datePicker: DatePicker, cardReport: cardReport, accordionDropdown: accordionDropdown, accordion: Accordion } })
// export default class CardReportMachineStatus extends Vue {
// lang = {
// days: ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'],
// months: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'],
// pickers: ['next 7 days', 'next 30 days', 'previous 7 days', 'previous 30 days'],
// placeholder: {
// date: 'Select Date',
// dateRange: 'Select Date Range'
// }
// }
// filter: {
// interval?: Date[],
// timelineMacro: Array<string>,
// multiUser: Array<any>
// } = {
// timelineMacro: ["Eventi","Allarmi","Stato macchina","Programmi"],
// multiUser: [],
// interval: [new Date(new Date().setDate(new Date().getDate() - 6)), new Date(new Date().setDate(new Date().getDate() + 1))]
// };
// public selectedTab: string = "Production";
// selectDiagram: boolean = false;
// selectMoreFilter: boolean = false;
// selectTable: boolean = true;
// users: Array<any> = [];
// get currentUser() {
// return this.$store.state.currentUser;
// }
// async mounted() {
// this.users = await loginService.getAllUsers();
// this.users.unshift({ id: -1, username: this.$options.filters.localize("alarm_history_users_not_user", "Nessun utente") });
// this.filter.multiUser.push(this.currentUser.username);
// }
// public selectTab(value){
// this.selectedTab = value;
// }
// timeformat() {
// return (moment() as any)._locale._longDateFormat.LT;
// }
// viewDiagram(){
// if(!this.selectDiagram){
// this.selectDiagram = true;
// this.selectTable = false;
// }
// console.log("Diagram active");
// }
// viewTable(){
// if(!this.selectTable){
// this.selectDiagram = false;
// this.selectTable = true;
// }
// console.log("Diagram active");
// }
// viewMoreFilter(){
// if(!this.selectMoreFilter){
// this.selectMoreFilter = true;
// }
// else{
// this.selectMoreFilter = false;
// }
// }
// openModalSelectField(){
// ModalHelper.ShowModal(modalReportSelectColumn);
// }
// public openSelectStateU() {
// if (!$('.checkboxesU').hasClass('checkboxesViewUser'))
// $('.checkboxesU').addClass('checkboxesViewUser');
// else
// $('.checkboxesU').removeClass('checkboxesViewUser');
// }
// }
@@ -0,0 +1,188 @@
<template>
<div class="card-report-machine-status">
<div class="reports-box-body-left">
<div class="body-left-header" v-if="selectDiagram">
<div>
<label class="intervaldate">{{'reports_body_header_date_range' | localize("Intervallo date")}}</label>
<date-picker v-model="filter.interval" range type="daterange" :lang="lang"></date-picker>
</div>
<div>
<label>{{'reports_body_header_axes_x' | localize("Asse X")}}</label>
<select><option>{{'reports_body_header_option_axes_x_program_name' | localize("Nome Programma")}}</option></select>
</div>
<div>
<label>{{'reports_body_header_axes_y' | localize("Asse Y")}}</label>
<select><option>{{'reports_body_header_option_axes_y_frequency' | localize("Frequenza")}}</option></select>
</div>
</div>
<div class="body-left-header" v-if="!selectDiagram">
<div>
<label class="intervaldate">{{'reports_body_header_date_range' | localize("Intervallo date")}}</label>
<date-picker v-model="filter.interval" range type="daterange" :lang="lang"></date-picker>
</div>
<div>
<label>{{'reports_body_header_label_hour' | localize("Intervallo orario")}}</label>
<div class="interval-time">
<input type="time"/>
<input type="time"/>
</div>
</div>
<div>
<label>{{'reports_body_header_label_program' | localize("Programma")}}</label>
<input type="text" class="program" :placeholder="'reports_body_header_placeholder_program' | localize('Nome del programma')" />
</div>
<div class="multiselect">
<label>{{'reports_body_header_label_operator' | localize("Operatore")}}</label>
<div class="selectBoxU" @click="openSelectStateU()">
<select id="selectListCheckboxes">
<option><span v-for="(item, index) in filter.multiUser" :key="item" >{{'reports_filter_operator_'+item | localize(item)}}{{(index==filter.multiUser.length-1)?'':', '}}</span></option>
<div class="overSelect"></div>
</select>
</div>
<div class="checkboxesU">
<div v-for="item in users" :key="item.id">
<label :for="item.username">
<div class="custom-checkbox">
<input type="checkbox" v-model="filter.multiUser" :value="item.username" :id="item.username" />
<label :for="item.username"></label>
</div>
<label class="label-state">{{item.username}}</label>
</label>
</div>
</div>
</div>
<!-- <div>
<label>{{'reports_body_header_label_operator' | localize("Operatore")}}</label>
<select class="reports-select-operator"><option>{{'reports_body_header_option_operator_all' | localize("tutti")}}</option></select>
</div> -->
<!-- <div>
<label>{{'reports_body_header_label_shift' | localize("Turno")}}</label>
<select class="reports-select-shift"><option>{{'reports_body_header_option_shift_first' | localize("1°")}}</option></select>
</div> -->
</div>
<div class="body-left-center">
<div class="body-left-center-container">
<table>
<thead>
<tr>
<th :style="{width:(100/visibleColumns.length)+'%'}" v-if="isVisible('ProgramName')">{{'reports_table_program_name' | localize("Nome programma")}}</th>
<th :style="{width:(100/visibleColumns.length)+'%'}" v-if="isVisible('Dimensions')">{{'reports_table_dimensions' | localize("Dimensioni")}}</th>
<th :style="{width:(100/visibleColumns.length)+'%'}" v-if="isVisible('Quantity')">{{'reports_table_quantity' | localize("Quantity")}}</th>
<th :style="{width:(100/visibleColumns.length)+'%'}" v-if="isVisible('StartTime')">{{'reports_table_start_now' | localize("Ora inizio")}}</th>
<th :style="{width:(100/visibleColumns.length)+'%'}" v-if="isVisible('EndTime')">{{'reports_table_end_time' | localize("Ora fine")}}</th>
<th :style="{width:(100/visibleColumns.length)+'%'}" v-if="isVisible('Date')">{{'reports_table_date' | localize("Data")}}</th>
<th :style="{width:(100/visibleColumns.length)+'%'}" v-if="isVisible('EffectiveTime')">{{'reports_table_effective_time' | localize("T effettivo")}}</th>
<th :style="{width:(100/visibleColumns.length)+'%'}" v-if="isVisible('AverageTime')">{{'reports_table_average_time' | localize("T medio")}}</th>
<th :style="{width:(100/visibleColumns.length)+'%'}" v-if="isVisible('TheoreticalTime')">{{'reports_table_theoretical_time' | localize("T teorico")}}</th>
<th :style="{width:(100/visibleColumns.length)+'%'}" v-if="isVisible('Deviation')">{{'reports_table_deviation' | localize("Scostamento")}}</th>
<th :style="{width:(100/visibleColumns.length)+'%'}" v-if="isVisible('Quality')">{{'reports_table_quality' | localize("Qualità")}}</th>
<th :style="{width:(100/visibleColumns.length)+'%'}" v-if="isVisible('OperatorName')">{{'reports_table_operator_name' | localize("Nome operatore")}}</th>
<!-- <th v-if="isVisible('Shift')">{{'reports_table_shift' | localize("Turno")}}</th> -->
<th @click="openModalSelectField()"><i class="fa fa-angle-double-right"></i></th>
</tr>
</thead>
<tbody>
<tr>
<td :style="{width:(100/visibleColumns.length)+'%'}" v-if="isVisible('ProgramName')">Finestra02.pgm</td>
<td :style="{width:(100/visibleColumns.length)+'%'}" v-if="isVisible('Dimensions')">X: 1210; Y:900; Z: 63</td>
<td :style="{width:(100/visibleColumns.length)+'%'}" v-if="isVisible('Quantity')">1</td>
<td :style="{width:(100/visibleColumns.length)+'%'}" v-if="isVisible('StartTime')">11:25:00</td>
<td :style="{width:(100/visibleColumns.length)+'%'}" v-if="isVisible('EndTime')">13:10:00</td>
<td :style="{width:(100/visibleColumns.length)+'%'}" v-if="isVisible('Date')">12/04/2017</td>
<td :style="{width:(100/visibleColumns.length)+'%'}" v-if="isVisible('EffectiveTime')">01:45:00</td>
<td :style="{width:(100/visibleColumns.length)+'%'}" v-if="isVisible('AverageTime')">01:25:00</td>
<td :style="{width:(100/visibleColumns.length)+'%'}" v-if="isVisible('TheoreticalTime')">01:20:00</td>
<td :style="{width:(100/visibleColumns.length)+'%'}" v-if="isVisible('Deviation')" :class="{'green': false, 'red': true}">+00:20:00</td>
<td :style="{width:(100/visibleColumns.length)+'%'}" v-if="isVisible('Quality')">Buono</td>
<td :style="{width:(100/visibleColumns.length)+'%'}" v-if="isVisible('OperatorName')">Nome utente</td>
<!-- <td v-if="isVisible('Shift')">1°</td> -->
<td></td>
</tr>
</tbody>
</table>
<div class="pagination">
<button @click="selectPage(selectedPage-1)"><i class="fa fa-angle-double-left"></i></button>
<button class="page" :class="{active: selectedPage == paginator.min + p}"
v-for="(p, idx) in paginator.count" :key="'page' + idx"
@click="selectPage(paginator.min + p)">{{paginator.min + p}}</button>
<button @click="selectPage(selectedPage+1)"><i class="fa fa-angle-double-right"></i></button>
</div>
</div>
</div>
</div>
<div class="reports-box-body-right">
<div class="body-right-header">
<div class="body-right-header-left">
<button :class="{'active': selectTable}" @click="viewTable()"><i class="fa fa-bars fa-2x"></i></button>
<button :class="{'active': selectDiagram}" @click="viewDiagram()"><i class="fa fa-signal fa-2x"></i></button>
</div>
<div class="body-right-header-right">
<button><i class="fa fa-print fa-2x"></i></button>
<button><i class="fa fa-upload fa-2x"></i></button>
</div>
</div>
<div class="body-right-card">
<card-report :title="'Valore assoluto (%)'">
</card-report>
<card-report :title="'Valore assoluto'">
<div class="rectangle_gray">
<label>{{'reports_body_rectangle_label_pieces produced' | localize("Pezzi prodotti")}}</label>
<span>10.000</span>
</div>
</card-report>
<card-report :title="'Valore assoluto'">
<div class="rectangle_gray">
<label>{{'reports_body_rectangle_label_discarded_pieces' | localize("Pezzi scartati")}}</label>
<span>4</span>
</div>
</card-report>
</div>
</div>
</div>
<!-- VERSIONE ZEPLIN non cancellare -->
<!-- <div class="card-report-machine-status">
<div class="reports-box-body-left">
<div class="body-left-header-machinestatus">
<div>
<label class="intervaldate">{{'reports_body_header_date_range' | localize("Intervallo date")}}</label>
<date-picker v-model="filter.interval" range type="daterange" :lang="lang"></date-picker>
</div>
</div>
<div class="body-left-center">
MachineStatus
</div>
</div>
<div class="reports-box-body-right">
<div class="body-right-header">
<div class="body-right-header-right">
<button><i class="fa fa-print fa-2x"></i></button>
<button><i class="fa fa-upload fa-2x"></i></button>
</div>
</div>
<div class="body-right-card">
<card-report :title="'Valore assoluto (%)'">
</card-report>
<card-report :title="'Valore assoluto'">
<div class="rectangle_gray">
<label>{{'reports_body_rectangle_label_pieces produced' | localize("Pezzi prodotti")}}</label>
<span>10.000</span>
</div>
</card-report>
<card-report :title="'Valore assoluto'">
<div class="rectangle_gray">
<label>{{'reports_body_rectangle_label_discarded_pieces' | localize("Pezzi scartati")}}</label>
<span>4</span>
</div>
</card-report>
</div>
</div>
</div> -->
</template>
<script src="./card-report-machine-status.ts" lang="ts"></script>
@@ -0,0 +1,118 @@
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 { Accordion } from "src/modules/base-components";
import { loginService } from "src/services";
import DatePicker from "vue2-datepicker";
import moment from "moment";
import { ModalHelper } from "src/components/modals";
declare let $: any;
@Component({ components: { datePicker: DatePicker, cardReport: cardReport, accordionDropdown: accordionDropdown, accordion: Accordion } })
export default class CardReportProduction extends Vue {
lang = {
days: ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'],
months: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'],
pickers: ['next 7 days', 'next 30 days', 'previous 7 days', 'previous 30 days'],
placeholder: {
date: 'Select Date',
dateRange: 'Select Date Range'
}
}
filter: {
interval?: Date[],
timelineMacro: Array<string>,
multiUser: Array<any>
} = {
timelineMacro: ["Eventi", "Allarmi", "Stato macchina", "Programmi"],
multiUser: [],
interval: [new Date(new Date().setDate(new Date().getDate() - 6)), new Date(new Date().setDate(new Date().getDate() + 1))]
};
visibleColumns: string[] = ["ProgramName","Date","Deviation","Dimensions","EffectiveTime","Quality","Quantity","AverageTime","OperatorName","StartTime","TheoreticalTime","EndTime",];
isVisible(value){
return this.visibleColumns.some(c => c == value);
}
public selectedTab: string = "Production";
selectDiagram: boolean = false;
selectMoreFilter: boolean = false;
selectTable: boolean = true;
users: Array<any> = [];
selectedPage = 1;
paginationData: { firstDate: any, pages: number } = {firstDate: new Date(), pages: 6};
get paginator() {
let min = Math.max(this.selectedPage - 4, 0);
let max = Math.min(this.selectedPage + 5, this.paginationData.pages);
return { min: min, max: max, count: (max - min) }
}
get currentUser() {
return this.$store.state.currentUser;
}
async mounted() {
this.users = await loginService.getAllUsers();
this.users.unshift({ id: -1, username: this.$options.filters.localize("alarm_history_users_not_user", "Nessun utente") });
this.filter.multiUser.push(this.currentUser.username);
}
public selectTab(value) {
this.selectedTab = value;
}
timeformat() {
return (moment() as any)._locale._longDateFormat.LT;
}
viewDiagram() {
if (!this.selectDiagram) {
this.selectDiagram = true;
this.selectTable = false;
}
console.log("Diagram active");
}
viewTable() {
if (!this.selectTable) {
this.selectDiagram = false;
this.selectTable = true;
}
console.log("Diagram active");
}
viewMoreFilter() {
if (!this.selectMoreFilter) {
this.selectMoreFilter = true;
}
else {
this.selectMoreFilter = false;
}
}
async openModalSelectField() {
this.visibleColumns = await ModalHelper.ShowModalAsync(modalReportSelectColumn, this.visibleColumns);
console.log(this.visibleColumns);
}
public openSelectStateU() {
if (!$('.checkboxesU').hasClass('checkboxesViewUser'))
$('.checkboxesU').addClass('checkboxesViewUser');
else
$('.checkboxesU').removeClass('checkboxesViewUser');
}
public selectPage(page) {
debugger
this.selectedPage = Math.min(Math.max(page,1), this.paginationData.pages);
}
}
@@ -0,0 +1,146 @@
<template>
<div class="card-report-production">
<div class="reports-box-body-left">
<div class="body-left-header" v-if="selectDiagram">
<div>
<label class="intervaldate">{{'reports_body_header_date_range' | localize("Intervallo date")}}</label>
<date-picker v-model="filter.interval" range type="daterange" :lang="lang"></date-picker>
</div>
<div>
<label>{{'reports_body_header_axes_x' | localize("Asse X")}}</label>
<select><option>{{'reports_body_header_option_axes_x_program_name' | localize("Nome Programma")}}</option></select>
</div>
<div>
<label>{{'reports_body_header_axes_y' | localize("Asse Y")}}</label>
<select><option>{{'reports_body_header_option_axes_y_frequency' | localize("Frequenza")}}</option></select>
</div>
</div>
<div class="body-left-header" v-if="!selectDiagram">
<div>
<label class="intervaldate">{{'reports_body_header_date_range' | localize("Intervallo date")}}</label>
<date-picker v-model="filter.interval" range type="daterange" :lang="lang"></date-picker>
</div>
<div>
<label>{{'reports_body_header_label_hour' | localize("Intervallo orario")}}</label>
<div class="interval-time">
<input type="time"/>
<input type="time"/>
</div>
</div>
<div>
<label>{{'reports_body_header_label_program' | localize("Programma")}}</label>
<input type="text" class="program" :placeholder="'reports_body_header_placeholder_program' | localize('Nome del programma')" />
</div>
<div class="multiselect">
<label>{{'reports_body_header_label_operator' | localize("Operatore")}}</label>
<div class="selectBoxU" @click="openSelectStateU()">
<select id="selectListCheckboxes">
<option><span v-for="(item, index) in filter.multiUser" :key="item" >{{'reports_filter_operator_'+item | localize(item)}}{{(index==filter.multiUser.length-1)?'':', '}}</span></option>
<div class="overSelect"></div>
</select>
</div>
<div class="checkboxesU">
<div v-for="item in users" :key="item.id">
<label :for="item.username">
<div class="custom-checkbox">
<input type="checkbox" v-model="filter.multiUser" :value="item.username" :id="item.username" />
<label :for="item.username"></label>
</div>
<label class="label-state">{{item.username}}</label>
</label>
</div>
</div>
</div>
<!-- <div>
<label>{{'reports_body_header_label_operator' | localize("Operatore")}}</label>
<select class="reports-select-operator"><option>{{'reports_body_header_option_operator_all' | localize("tutti")}}</option></select>
</div> -->
<!-- <div>
<label>{{'reports_body_header_label_shift' | localize("Turno")}}</label>
<select class="reports-select-shift"><option>{{'reports_body_header_option_shift_first' | localize("1°")}}</option></select>
</div> -->
</div>
<div class="body-left-center">
<div class="body-left-center-container">
<table>
<thead>
<tr>
<th :style="{width:(100/visibleColumns.length)+'%'}" v-if="isVisible('ProgramName')">{{'reports_table_program_name' | localize("Nome programma")}}</th>
<th :style="{width:(100/visibleColumns.length)+'%'}" v-if="isVisible('Dimensions')">{{'reports_table_dimensions' | localize("Dimensioni")}}</th>
<th :style="{width:(100/visibleColumns.length)+'%'}" v-if="isVisible('Quantity')">{{'reports_table_quantity' | localize("Quantity")}}</th>
<th :style="{width:(100/visibleColumns.length)+'%'}" v-if="isVisible('StartTime')">{{'reports_table_start_now' | localize("Ora inizio")}}</th>
<th :style="{width:(100/visibleColumns.length)+'%'}" v-if="isVisible('EndTime')">{{'reports_table_end_time' | localize("Ora fine")}}</th>
<th :style="{width:(100/visibleColumns.length)+'%'}" v-if="isVisible('Date')">{{'reports_table_date' | localize("Data")}}</th>
<th :style="{width:(100/visibleColumns.length)+'%'}" v-if="isVisible('EffectiveTime')">{{'reports_table_effective_time' | localize("T effettivo")}}</th>
<th :style="{width:(100/visibleColumns.length)+'%'}" v-if="isVisible('AverageTime')">{{'reports_table_average_time' | localize("T medio")}}</th>
<th :style="{width:(100/visibleColumns.length)+'%'}" v-if="isVisible('TheoreticalTime')">{{'reports_table_theoretical_time' | localize("T teorico")}}</th>
<th :style="{width:(100/visibleColumns.length)+'%'}" v-if="isVisible('Deviation')">{{'reports_table_deviation' | localize("Scostamento")}}</th>
<th :style="{width:(100/visibleColumns.length)+'%'}" v-if="isVisible('Quality')">{{'reports_table_quality' | localize("Qualità")}}</th>
<th :style="{width:(100/visibleColumns.length)+'%'}" v-if="isVisible('OperatorName')">{{'reports_table_operator_name' | localize("Nome operatore")}}</th>
<!-- <th v-if="isVisible('Shift')">{{'reports_table_shift' | localize("Turno")}}</th> -->
<th @click="openModalSelectField()"><i class="fa fa-angle-double-right"></i></th>
</tr>
</thead>
<tbody>
<tr>
<td :style="{width:(100/visibleColumns.length)+'%'}" v-if="isVisible('ProgramName')">Finestra02.pgm</td>
<td :style="{width:(100/visibleColumns.length)+'%'}" v-if="isVisible('Dimensions')">X: 1210; Y:900; Z: 63</td>
<td :style="{width:(100/visibleColumns.length)+'%'}" v-if="isVisible('Quantity')">1</td>
<td :style="{width:(100/visibleColumns.length)+'%'}" v-if="isVisible('StartTime')">11:25:00</td>
<td :style="{width:(100/visibleColumns.length)+'%'}" v-if="isVisible('EndTime')">13:10:00</td>
<td :style="{width:(100/visibleColumns.length)+'%'}" v-if="isVisible('Date')">12/04/2017</td>
<td :style="{width:(100/visibleColumns.length)+'%'}" v-if="isVisible('EffectiveTime')">01:45:00</td>
<td :style="{width:(100/visibleColumns.length)+'%'}" v-if="isVisible('AverageTime')">01:25:00</td>
<td :style="{width:(100/visibleColumns.length)+'%'}" v-if="isVisible('TheoreticalTime')">01:20:00</td>
<td :style="{width:(100/visibleColumns.length)+'%'}" v-if="isVisible('Deviation')" :class="{'green': false, 'red': true}">+00:20:00</td>
<td :style="{width:(100/visibleColumns.length)+'%'}" v-if="isVisible('Quality')">Buono</td>
<td :style="{width:(100/visibleColumns.length)+'%'}" v-if="isVisible('OperatorName')">Nome utente</td>
<!-- <td v-if="isVisible('Shift')">1°</td> -->
<td></td>
</tr>
</tbody>
</table>
<div class="pagination">
<button @click="selectPage(selectedPage-1)"><i class="fa fa-angle-double-left"></i></button>
<button class="page" :class="{active: selectedPage == paginator.min + p}"
v-for="(p, idx) in paginator.count" :key="'page' + idx"
@click="selectPage(paginator.min + p)">{{paginator.min + p}}</button>
<button @click="selectPage(selectedPage+1)"><i class="fa fa-angle-double-right"></i></button>
</div>
</div>
</div>
</div>
<div class="reports-box-body-right">
<div class="body-right-header">
<div class="body-right-header-left">
<button :class="{'active': selectTable}" @click="viewTable()"><i class="fa fa-bars fa-2x"></i></button>
<button :class="{'active': selectDiagram}" @click="viewDiagram()"><i class="fa fa-signal fa-2x"></i></button>
</div>
<div class="body-right-header-right">
<button><i class="fa fa-print fa-2x"></i></button>
<button><i class="fa fa-upload fa-2x"></i></button>
</div>
</div>
<div class="body-right-card">
<card-report :title="'Valore assoluto (%)'">
</card-report>
<card-report :title="'Valore assoluto'">
<div class="rectangle_gray">
<label>{{'reports_body_rectangle_label_pieces produced' | localize("Pezzi prodotti")}}</label>
<span>10.000</span>
</div>
</card-report>
<card-report :title="'Valore assoluto'">
<div class="rectangle_gray">
<label>{{'reports_body_rectangle_label_discarded_pieces' | localize("Pezzi scartati")}}</label>
<span>4</span>
</div>
</card-report>
</div>
</div>
</div>
</template>
<script src="./card-report-production.ts" lang="ts"></script>
@@ -0,0 +1,47 @@
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 { Accordion } from "src/modules/base-components";
import { loginService } from "src/services";
import DatePicker from "vue2-datepicker";
import moment from "moment";
import { ModalHelper } from "src/components/modals";
declare let $: any;
@Component({ components: { datePicker: DatePicker, cardReport: cardReport, accordionDropdown: accordionDropdown } })
export default class CardReportTimeline extends Vue {
lang = {
days: ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'],
months: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'],
pickers: ['next 7 days', 'next 30 days', 'previous 7 days', 'previous 30 days'],
placeholder: {
date: 'Select Date',
dateRange: 'Select Date Range'
}
}
filter: {
interval?: Date[],
timelineMacro: Array<string>,
} = {
timelineMacro: ["Eventi", "Allarmi", "Stato macchina", "Programmi"],
interval: [new Date(new Date().setDate(new Date().getDate() - 6)), new Date(new Date().setDate(new Date().getDate() + 1))]
};
isVisible(value){
return this.filter.timelineMacro.some(c => c == value);
}
public openSelectState() {
if (!$('.checkboxes').hasClass('checkboxesView'))
$('.checkboxes').addClass('checkboxesView');
else
$('.checkboxes').removeClass('checkboxesView');
}
}
@@ -0,0 +1,152 @@
<template>
<div class="card-report-timeline">
<div class="reports-box-body-left">
<div class="body-left-header">
<div>
<label class="intervaldate">{{'reports_body_header_date_range' | localize("Intervallo date")}}</label>
<date-picker v-model="filter.interval" range type="daterange" :lang="lang"></date-picker>
</div>
<div>
<label>{{'reports_body_header_label_hour' | localize("Intervallo orario")}}</label>
<div class="interval-time">
<input type="time"/>
<input type="time"/>
</div>
</div>
<div>
<label>{{'reports_body_header_label_program' | localize("Programma")}}</label>
<input type="text" class="program" :placeholder="'reports_body_header_placeholder_program' | localize('Nome del programma')" />
</div>
</div>
<div class="body-left-center">
<div class="body-left-center-container">
<div class="body-left-center-left">
<div class="multiselect">
<div class="selectBox" @click="openSelectState()">
<select id="selectListCheckboxes">
<option><span v-for="(item, index) in filter.timelineMacro" :key="item" >{{'report_state_'+item | localize(item)}}{{(index==filter.timelineMacro.length-1)?'':', '}}</span></option>
<div class="overSelect"></div>
</select>
</div>
<div class="checkboxes">
<div>
<label for="Eventi">
<div class="custom-checkbox">
<input type="checkbox" v-model="filter.timelineMacro" value="Eventi" id="Eventi" />
<label for="Eventi"></label>
</div>
<label class="label-state">{{'report_timeline_filter_events' | localize("Eventi")}}</label>
</label>
</div>
<div>
<label for="Allarmi">
<div class="custom-checkbox">
<input type="checkbox" v-model="filter.timelineMacro" value="Allarmi" id="Allarmi" />
<label for="Allarmi"></label>
</div>
<label class="label-state">{{'report_timeline_filter_alarms' | localize("Allarmi")}}</label>
</label>
</div>
<div>
<label for="Stato macchina">
<div class="custom-checkbox">
<input type="checkbox" v-model="filter.timelineMacro" value="Stato macchina" id="Stato macchina" />
<label for="Stato macchina"></label>
</div>
<label class="label-state">{{'report_timeline_filter_machine_status' | localize("Stato macchina")}}</label>
</label>
</div>
<div>
<label for="Programmi">
<div class="custom-checkbox">
<input type="checkbox" v-model="filter.timelineMacro" value="Programmi" id="Programmi" />
<label for="Programmi"></label>
</div>
<label class="label-state">{{'report_timeline_filter_programs' | localize("Programmi")}}</label>
</label>
</div>
</div>
</div>
<div v-if="isVisible('Eventi')">
<accordion-dropdown :title="'reports_body_left_center_left_dropdown_title_events' | localize('Eventi')">
<div class="dropdown">
<div class="item">
<div class="filename"><i class="fa fa-file"></i><span>Test</span></div>
</div>
</div>
</accordion-dropdown>
</div>
<div v-if="isVisible('Allarmi')">
<accordion-dropdown :title="'reports_body_left_center_left_dropdown_title_alarms' | localize('Allarmi')">
<div class="dropdown">
<div class="item">
<div class="filename"><i class="fa fa-file"></i><span>Test</span></div>
</div>
</div>
</accordion-dropdown>
</div>
<div v-if="isVisible('Stato macchina')">
<accordion-dropdown :title="'reports_body_left_center_left_dropdown_title_machine_status' | localize('Stato macchina')">
<div class="dropdown">
<div class="item">
<div class="filename"><i class="fa fa-file"></i><span>Test</span></div>
</div>
</div>
</accordion-dropdown>
</div>
<div v-if="isVisible('Programmi')">
<accordion-dropdown :title="'reports_body_left_center_left_dropdown_title_programs' | localize('Programmi')">
<div class="dropdown">
<div class="item">
<div class="filename"><i class="fa fa-file"></i><span>Test</span></div>
</div>
</div>
</accordion-dropdown>
</div>
</div>
<div class="body-left-center-right">
</div>
</div>
<div class="body-left-center-footer">
<div class="header-title">
<div class="title">
{{'reports_body_left_center_footer_title_time_slider' | localize('Cursore temporale')}}
</div>
<div class="data-temporal">
09 Aprile 2017 - 23:14
</div>
</div>
</div>
</div>
</div>
<div class="reports-box-body-right">
<div class="body-right-header">
<div class="body-right-header-right">
<button><i class="fa fa-print fa-2x"></i></button>
<button><i class="fa fa-upload fa-2x"></i></button>
</div>
</div>
<div class="body-right-card">
<card-report :title="'Valore assoluto (%)'">
</card-report>
<card-report :title="'Valore assoluto'">
<div class="rectangle_gray">
<label>{{'reports_body_rectangle_label_pieces produced' | localize("Pezzi prodotti")}}</label>
<span>10.000</span>
</div>
</card-report>
<card-report :title="'Valore assoluto'">
<div class="rectangle_gray">
<label>{{'reports_body_rectangle_label_discarded_pieces' | localize("Pezzi scartati")}}</label>
<span>4</span>
</div>
</card-report>
</div>
</div>
</div>
</template>
<script src="./card-report-timeline.ts" lang="ts"></script>
@@ -8,8 +8,17 @@ import DatePicker from "vue2-datepicker";
import moment from "moment";
import { ModalHelper } from "src/components/modals";
import cardReportProduction from "src/app_modules/reports/components/card-report-production.vue";
import cardReportEvents from "src/app_modules/reports/components/card-report-events.vue";
import cardReportAlarms from "src/app_modules/reports/components/card-report-alarms.vue";
import cardReportMachineStatus from "src/app_modules/reports/components/card-report-machine-status.vue";
import cardReportTimeline from "src/app_modules/reports/components/card-report-timeline.vue";
declare let $: any;
@Component({ components: { datePicker: DatePicker, cardReport: cardReport, accordionDropdown: accordionDropdown, accordion: Accordion } })
@Component({ components: { datePicker: DatePicker, cardReport: cardReport,
accordionDropdown: accordionDropdown, accordion: Accordion, cardReportProduction: cardReportProduction,
cardReportEvents: cardReportEvents, cardReportAlarms: cardReportAlarms, cardReportMachineStatus: cardReportMachineStatus,
cardReportTimeline: cardReportTimeline } })
export default class Reports extends Vue {
lang = {
@@ -9,9 +9,9 @@
<button class="tab" :class="{'active': selectedTab == 'Events'}" @click="selectTab('Events')">
<span>{{'reports_lbl_events' | localize("Eventi")}}</span>
</button>
<button class="tab" :class="{'active': selectedTab == 'Alarms'}" @click="selectTab('Alarms')">
<!-- <button class="tab" :class="{'active': selectedTab == 'Alarms'}" @click="selectTab('Alarms')">
<span>{{'reports_lbl_alarms' | localize("Allarmi")}}</span>
</button>
</button> -->
<button class="tab" :class="{'active': selectedTab == 'MachineStatus'}" @click="selectTab('MachineStatus')">
<span>{{'reports_lbl_machine_status' | localize("Stato Macchina")}}</span>
</button>
@@ -20,519 +20,17 @@
</button>
</div>
<div class="reports-box-body" v-if="selectedTab == 'Production'">
<div class="reports-box-body-left">
<div class="body-left-header" v-if="selectDiagram">
<div>
<label class="intervaldate">{{'reports_body_header_date_range' | localize("Intervallo date")}}</label>
<date-picker v-model="filter.interval" range type="daterange" :lang="lang"></date-picker>
</div>
<div>
<label>{{'reports_body_header_axes_x' | localize("Asse X")}}</label>
<select><option>{{'reports_body_header_option_axes_x_program_name' | localize("Nome Programma")}}</option></select>
</div>
<div>
<label>{{'reports_body_header_axes_y' | localize("Asse Y")}}</label>
<select><option>{{'reports_body_header_option_axes_y_frequency' | localize("Frequenza")}}</option></select>
</div>
<div>
<label class="label_advanced_filters" @click="viewMoreFilter()" v-if="!selectMoreFilter"><span>{{'reports_body_header_diagram_label_advanced_filters' | localize("Mostra filtri avanzati")}}</span> <i class="fa fa-caret-down"></i></label>
<label class="label_advanced_filters" @click="viewMoreFilter()" v-if="selectMoreFilter"><span>{{'reports_body_header_diagram_label_hide_advanced_filters' | localize("Nascondi filtri avanzati")}}</span> <i class="fa fa-caret-up"></i></label>
</div>
<div class="advanced-filters" v-if="selectMoreFilter">
<div>
<label>{{'reports_body_header_label_hour' | localize("Intervallo orario")}}</label>
<div class="interval-time">
<input type="time"/>
<input type="time"/>
</div>
</div>
<div>
<label>{{'reports_body_header_label_program' | localize("Programma")}}</label>
<input type="text" class="program" :placeholder="'reports_body_header_placeholder_program' | localize('Nome del programma')" />
</div>
<div>
<label>{{'reports_body_header_label_operator' | localize("Operatore")}}</label>
<select class="reports-select-operator"><option>{{'reports_body_header_option_operator_all' | localize("tutti")}}</option></select>
</div>
<div>
<label>{{'reports_body_header_label_shift' | localize("Turno")}}</label>
<select class="reports-select-shift"><option>{{'reports_body_header_option_shift_first' | localize("1°")}}</option></select>
</div>
</div>
</div>
<div class="body-left-header" v-if="!selectDiagram">
<div>
<label class="intervaldate">{{'reports_body_header_date_range' | localize("Intervallo date")}}</label>
<date-picker v-model="filter.interval" range type="daterange" :lang="lang"></date-picker>
</div>
<div>
<label>{{'reports_body_header_label_hour' | localize("Intervallo orario")}}</label>
<div class="interval-time">
<input type="time"/>
<input type="time"/>
</div>
</div>
<div>
<label>{{'reports_body_header_label_program' | localize("Programma")}}</label>
<input type="text" class="program" :placeholder="'reports_body_header_placeholder_program' | localize('Nome del programma')" />
</div>
<div>
<label>{{'reports_body_header_label_operator' | localize("Operatore")}}</label>
<select class="reports-select-operator"><option>{{'reports_body_header_option_operator_all' | localize("tutti")}}</option></select>
</div>
<div>
<label>{{'reports_body_header_label_shift' | localize("Turno")}}</label>
<select class="reports-select-shift"><option>{{'reports_body_header_option_shift_first' | localize("1°")}}</option></select>
</div>
<div>
<label class="label_advanced_filters"><span>{{'reports_body_header_label_advanced_filters' | localize("Mostra filtri avanzati")}}</span> <i class="fa fa-caret-down"></i></label>
</div>
</div>
<div class="body-left-center">
<div class="body-left-center-container">
<table>
<thead>
<tr>
<th>{{'reports_table_program_name' | localize("Nome programma")}}</th>
<th>{{'reports_table_dimensions' | localize("Dimensioni")}}</th>
<th>{{'reports_table_quantity' | localize("Quantity")}}</th>
<th>{{'reports_table_start_now' | localize("Ora inizio")}}</th>
<th>{{'reports_table_end_time' | localize("Ora fine")}}</th>
<th>{{'reports_table_date' | localize("Data")}}</th>
<th>{{'reports_table_effective_time' | localize("T effettivo")}}</th>
<th>{{'reports_table_average_time' | localize("T medio")}}</th>
<th>{{'reports_table_theoretical_time' | localize("T teorico")}}</th>
<th>{{'reports_table_deviation' | localize("Scostamento")}}</th>
<th>{{'reports_table_quality' | localize("Qualità")}}</th>
<th>{{'reports_table_operator_name' | localize("Nome operatore")}}</th>
<th>{{'reports_table_shift' | localize("Turno")}}</th>
<th @click="openModalSelectField()"><i class="fa fa-angle-double-right"></i></th>
</tr>
</thead>
<tbody>
<tr>
<td colspan="1">Finestra02.pgm</td>
<td colspan="1">X: 1210; Y:900; Z: 63</td>
<td colspan="1">1</td>
<td colspan="1">11:25:00</td>
<td colspan="1">13:10:00</td>
<td colspan="1">12/04/2017</td>
<td colspan="1">01:45:00</td>
<td colspan="1">01:25:00</td>
<td colspan="1">01:20:00</td>
<td colspan="1" :class="{'green': false, 'red': true}">+00:20:00</td>
<td colspan="1">Buono</td>
<td colspan="1">Nome utente</td>
<td colspan="1">1°</td>
<td></td>
</tr>
<tr>
<td colspan="1">Finestra02.pgm</td>
<td colspan="1">X: 1210; Y:900; Z: 63</td>
<td colspan="1">1</td>
<td colspan="1">11:25:00</td>
<td colspan="1">13:10:00</td>
<td colspan="1">12/04/2017</td>
<td colspan="1">01:45:00</td>
<td colspan="1">01:25:00</td>
<td colspan="1">01:20:00</td>
<td colspan="1" :class="{'green': false, 'red': true}">+00:20:00</td>
<td colspan="1">Buono</td>
<td colspan="1">Nome utente</td>
<td colspan="1">1°</td>
<td></td>
</tr>
<tr>
<td colspan="1">Finestra02.pgm</td>
<td colspan="1">X: 1210; Y:900; Z: 63</td>
<td colspan="1">1</td>
<td colspan="1">11:25:00</td>
<td colspan="1">13:10:00</td>
<td colspan="1">12/04/2017</td>
<td colspan="1">01:45:00</td>
<td colspan="1">01:25:00</td>
<td colspan="1">01:20:00</td>
<td colspan="1" :class="{'green': false, 'red': true}">+00:20:00</td>
<td colspan="1">Buono</td>
<td colspan="1">Nome utente</td>
<td colspan="1">1°</td>
<td></td>
</tr>
<tr>
<td colspan="1">Finestra02.pgm</td>
<td colspan="1">X: 1210; Y:900; Z: 63</td>
<td colspan="1">1</td>
<td colspan="1">11:25:00</td>
<td colspan="1">13:10:00</td>
<td colspan="1">12/04/2017</td>
<td colspan="1">01:45:00</td>
<td colspan="1">01:25:00</td>
<td colspan="1">01:20:00</td>
<td colspan="1" :class="{'green': false, 'red': true}">+00:20:00</td>
<td colspan="1">Buono</td>
<td colspan="1">Nome utente</td>
<td colspan="1">1°</td>
<td></td>
</tr>
<tr>
<td colspan="1">Finestra02.pgm</td>
<td colspan="1">X: 1210; Y:900; Z: 63</td>
<td colspan="1">1</td>
<td colspan="1">11:25:00</td>
<td colspan="1">13:10:00</td>
<td colspan="1">12/04/2017</td>
<td colspan="1">01:45:00</td>
<td colspan="1">01:25:00</td>
<td colspan="1">01:20:00</td>
<td colspan="1" :class="{'green': false, 'red': true}">+00:20:00</td>
<td colspan="1">Buono</td>
<td colspan="1">Nome utente</td>
<td colspan="1">1°</td>
<td></td>
</tr>
<tr>
<td colspan="1">Finestra02.pgm</td>
<td colspan="1">X: 1210; Y:900; Z: 63</td>
<td colspan="1">1</td>
<td colspan="1">11:25:00</td>
<td colspan="1">13:10:00</td>
<td colspan="1">12/04/2017</td>
<td colspan="1">01:45:00</td>
<td colspan="1">01:25:00</td>
<td colspan="1">01:20:00</td>
<td colspan="1" :class="{'green': false, 'red': true}">+00:20:00</td>
<td colspan="1">Buono</td>
<td colspan="1">Nome utente</td>
<td colspan="1">1°</td>
<td></td>
</tr>
<tr>
<td colspan="1">Finestra02.pgm</td>
<td colspan="1">X: 1210; Y:900; Z: 63</td>
<td colspan="1">1</td>
<td colspan="1">11:25:00</td>
<td colspan="1">13:10:00</td>
<td colspan="1">12/04/2017</td>
<td colspan="1">01:45:00</td>
<td colspan="1">01:25:00</td>
<td colspan="1">01:20:00</td>
<td colspan="1" :class="{'green': false, 'red': true}">+00:20:00</td>
<td colspan="1">Buono</td>
<td colspan="1">Nome utente</td>
<td colspan="1">1°</td>
<td></td>
</tr>
<tr>
<td colspan="1">Finestra02.pgm</td>
<td colspan="1">X: 1210; Y:900; Z: 63</td>
<td colspan="1">1</td>
<td colspan="1">11:25:00</td>
<td colspan="1">13:10:00</td>
<td colspan="1">12/04/2017</td>
<td colspan="1">01:45:00</td>
<td colspan="1">01:25:00</td>
<td colspan="1">01:20:00</td>
<td colspan="1" :class="{'green': false, 'red': true}">+00:20:00</td>
<td colspan="1">Buono</td>
<td colspan="1">Nome utente</td>
<td colspan="1">1°</td>
<td></td>
</tr>
<tr>
<td colspan="1">Finestra02.pgm</td>
<td colspan="1">X: 1210; Y:900; Z: 63</td>
<td colspan="1">1</td>
<td colspan="1">11:25:00</td>
<td colspan="1">13:10:00</td>
<td colspan="1">12/04/2017</td>
<td colspan="1">01:45:00</td>
<td colspan="1">01:25:00</td>
<td colspan="1">01:20:00</td>
<td colspan="1" :class="{'green': false, 'red': true}">+00:20:00</td>
<td colspan="1">Buono</td>
<td colspan="1">Nome utente</td>
<td colspan="1">1°</td>
<td></td>
</tr>
<tr>
<td colspan="1">Finestra02.pgm</td>
<td colspan="1">X: 1210; Y:900; Z: 63</td>
<td colspan="1">1</td>
<td colspan="1">11:25:00</td>
<td colspan="1">13:10:00</td>
<td colspan="1">12/04/2017</td>
<td colspan="1">01:45:00</td>
<td colspan="1">01:25:00</td>
<td colspan="1">01:20:00</td>
<td colspan="1" :class="{'green': false, 'red': true}">+00:20:00</td>
<td colspan="1">Buono</td>
<td colspan="1">Nome utente</td>
<td colspan="1">1°</td>
<td></td>
</tr>
<tr>
<td colspan="1">Finestra02.pgm</td>
<td colspan="1">X: 1210; Y:900; Z: 63</td>
<td colspan="1">1</td>
<td colspan="1">11:25:00</td>
<td colspan="1">13:10:00</td>
<td colspan="1">12/04/2017</td>
<td colspan="1">01:45:00</td>
<td colspan="1">01:25:00</td>
<td colspan="1">01:20:00</td>
<td colspan="1" :class="{'green': false, 'red': true}">+00:20:00</td>
<td colspan="1">Buono</td>
<td colspan="1">Nome utente</td>
<td colspan="1">1°</td>
<td></td>
</tr>
<tr>
<td colspan="1">Finestra02.pgm</td>
<td colspan="1">X: 1210; Y:900; Z: 63</td>
<td colspan="1">1</td>
<td colspan="1">11:25:00</td>
<td colspan="1">13:10:00</td>
<td colspan="1">12/04/2017</td>
<td colspan="1">01:45:00</td>
<td colspan="1">01:25:00</td>
<td colspan="1">01:20:00</td>
<td colspan="1" :class="{'green': false, 'red': true}">+00:20:00</td>
<td colspan="1">Buono</td>
<td colspan="1">Nome utente</td>
<td colspan="1">1°</td>
<td></td>
</tr>
<tr>
<td colspan="1">Finestra02.pgm</td>
<td colspan="1">X: 1210; Y:900; Z: 63</td>
<td colspan="1">1</td>
<td colspan="1">11:25:00</td>
<td colspan="1">13:10:00</td>
<td colspan="1">12/04/2017</td>
<td colspan="1">01:45:00</td>
<td colspan="1">01:25:00</td>
<td colspan="1">01:20:00</td>
<td colspan="1" :class="{'green': false, 'red': true}">+00:20:00</td>
<td colspan="1">Buono</td>
<td colspan="1">Nome utente</td>
<td colspan="1">1°</td>
<td></td>
</tr>
<tr>
<td colspan="1">Finestra02.pgm</td>
<td colspan="1">X: 1210; Y:900; Z: 63</td>
<td colspan="1">1</td>
<td colspan="1">11:25:00</td>
<td colspan="1">13:10:00</td>
<td colspan="1">12/04/2017</td>
<td colspan="1">01:45:00</td>
<td colspan="1">01:25:00</td>
<td colspan="1">01:20:00</td>
<td colspan="1" :class="{'green': false, 'red': true}">+00:20:00</td>
<td colspan="1">Buono</td>
<td colspan="1">Nome utente</td>
<td colspan="1">1°</td>
<td></td>
</tr>
<tr>
<td colspan="1">Finestra02.pgm</td>
<td colspan="1">X: 1210; Y:900; Z: 63</td>
<td colspan="1">1</td>
<td colspan="1">11:25:00</td>
<td colspan="1">13:10:00</td>
<td colspan="1">12/04/2017</td>
<td colspan="1">01:45:00</td>
<td colspan="1">01:25:00</td>
<td colspan="1">01:20:00</td>
<td colspan="1" :class="{'green': false, 'red': true}">+00:20:00</td>
<td colspan="1">Buono</td>
<td colspan="1">Nome utente</td>
<td colspan="1">1°</td>
<td></td>
</tr>
<!-- <tr v-for="(row,index) in data" :key="index" @click="selectAlarm(row)" :class="{selected: selectedAlarm == row}">
<td colspan="1">{{row.id}}</td>
<td colspan="1">{{filter.sources[row.source]}}</td>
<td colspan="1" v-if="row.source == 0 ">{{row.title}}</td>
<td colspan="1" v-if="row.source == 1 ">{{'alarm_'+ row.alarmId | localize('alarm_'+ row.alarmId)}}</td>
<td colspan="1">{{row.description}}</td>
<td colspan="1">{{row.timeStamp | date('DD-MM-YYYY HH:mm:ss')}}</td>
<td colspan="1">
<span v-for="(iduser, index) in row.users" :key="iduser">
{{user(iduser).username}}
<text v-if="index < row.users.length -1">, </text>
</span>
</td>
</tr> -->
</tbody>
</table>
</div>
</div>
</div>
<div class="reports-box-body-right">
<div class="body-right-header">
<div class="body-right-header-left">
<button :class="{'active': selectTable}" @click="viewTable()"><i class="fa fa-bars fa-2x"></i></button>
<button :class="{'active': selectDiagram}" @click="viewDiagram()"><i class="fa fa-signal fa-2x"></i></button>
</div>
<div class="body-right-header-right">
<button><i class="fa fa-print fa-2x"></i></button>
<button><i class="fa fa-upload fa-2x"></i></button>
</div>
</div>
<div class="body-right-card">
<card-report :title="'Valore assoluto (%)'">
</card-report>
<card-report :title="'Valore assoluto'">
<div class="rectangle_gray">
<label>{{'reports_body_rectangle_label_pieces produced' | localize("Pezzi prodotti")}}</label>
<span>10.000</span>
</div>
</card-report>
<card-report :title="'Valore assoluto'">
<div class="rectangle_gray">
<label>{{'reports_body_rectangle_label_discarded_pieces' | localize("Pezzi scartati")}}</label>
<span>4</span>
</div>
</card-report>
</div>
</div>
<card-report-production></card-report-production>
</div>
<div class="reports-box-body" v-if="selectedTab == 'Events'">
<div class="reports-box-body-left">
<div class="body-left-header">
<div>
<label class="intervaldate">{{'reports_body_header_date_range' | localize("Intervallo date")}}</label>
<date-picker v-model="filter.interval" range type="daterange" :lang="lang"></date-picker>
</div>
<div>
<label>{{'reports_body_header_label_hour' | localize("Intervallo orario")}}</label>
<div class="interval-time">
<input type="time"/>
<input type="time"/>
</div>
</div>
<div>
<label>{{'reports_body_header_label_program' | localize("Programma")}}</label>
<input type="text" class="program" :placeholder="'reports_body_header_placeholder_program' | localize('Nome del programma')" />
</div>
<div>
<label>{{'reports_body_header_label_operator' | localize("Operatore")}}</label>
<select class="reports-select-operator"><option>{{'reports_body_header_option_operator_all' | localize("tutti")}}</option></select>
</div>
<div>
<label>{{'reports_body_header_label_shift' | localize("Turno")}}</label>
<select class="reports-select-shift"><option>{{'reports_body_header_option_shift_first' | localize("1°")}}</option></select>
</div>
<div>
<label class="label_advanced_filters"><span>{{'reports_body_header_label_advanced_filters' | localize("Mostra filtri avanzati")}}</span> <i class="fa fa-caret-down"></i></label>
</div>
</div>
<div class="body-left-center">
Events
</div>
</div>
<div class="reports-box-body-right">
<div class="body-right-header">
<div class="body-right-header-left">
<button><i class="fa fa-bars fa-2x"></i></button>
<button><i class="fa fa-signal fa-2x"></i></button>
</div>
<div class="body-right-header-right">
<button><i class="fa fa-print fa-2x"></i></button>
<button><i class="fa fa-upload fa-2x"></i></button>
</div>
</div>
<div class="body-right-card">
<card-report :title="'Valore assoluto (%)'">
</card-report>
<card-report :title="'Valore assoluto'">
<div class="rectangle_gray">
<label>{{'reports_body_rectangle_label_pieces produced' | localize("Pezzi prodotti")}}</label>
<span>10.000</span>
</div>
</card-report>
<card-report :title="'Valore assoluto'">
<div class="rectangle_gray">
<label>{{'reports_body_rectangle_label_discarded_pieces' | localize("Pezzi scartati")}}</label>
<span>4</span>
</div>
</card-report>
</div>
</div>
</div>
<div class="reports-box-body" v-if="selectedTab == 'Alarms'">
<div class="reports-box-body-left">
<div class="body-left-header">
<div>
<label class="intervaldate">{{'reports_body_header_date_range' | localize("Intervallo date")}}</label>
<date-picker v-model="filter.interval" range type="daterange" :lang="lang"></date-picker>
</div>
<!-- <div>
<label>{{'reports_body_header_label_date' | localize("Intervallo date")}}</label>
<select class="reports-select-interval-date"><option>{{'reports_body_header_option_date_lastmonth' | localize("Ultimo mese")}}</option></select>
</div> -->
<div>
<label>{{'reports_body_header_label_hour' | localize("Intervallo orario")}}</label>
<div class="interval-time">
<input type="time"/>
<input type="time"/>
</div>
</div>
<div>
<label>{{'reports_body_header_label_program' | localize("Programma")}}</label>
<input type="text" class="program" :placeholder="'reports_body_header_placeholder_program' | localize('Nome del programma')" />
</div>
<div>
<label>{{'reports_body_header_label_operator' | localize("Operatore")}}</label>
<select class="reports-select-operator"><option>{{'reports_body_header_option_operator_all' | localize("tutti")}}</option></select>
</div>
<div>
<label>{{'reports_body_header_label_shift' | localize("Turno")}}</label>
<select class="reports-select-shift"><option>{{'reports_body_header_option_shift_first' | localize("1°")}}</option></select>
</div>
<div>
<label class="label_advanced_filters"><span>{{'reports_body_header_label_advanced_filters' | localize("Mostra filtri avanzati")}}</span> <i class="fa fa-caret-down"></i></label>
</div>
</div>
<div class="body-left-center">
Alarms
</div>
</div>
<div class="reports-box-body-right">
<div class="body-right-header">
<div class="body-right-header-left">
<button><i class="fa fa-bars fa-2x"></i></button>
<button><i class="fa fa-signal fa-2x"></i></button>
</div>
<div class="body-right-header-right">
<button><i class="fa fa-print fa-2x"></i></button>
<button><i class="fa fa-upload fa-2x"></i></button>
</div>
</div>
<div class="body-right-card">
<card-report :title="'Valore assoluto (%)'">
</card-report>
<card-report :title="'Valore assoluto'">
<div class="rectangle_gray">
<label>{{'reports_body_rectangle_label_pieces produced' | localize("Pezzi prodotti")}}</label>
<span>10.000</span>
</div>
</card-report>
<card-report :title="'Valore assoluto'">
<div class="rectangle_gray">
<label>{{'reports_body_rectangle_label_discarded_pieces' | localize("Pezzi scartati")}}</label>
<span>4</span>
</div>
</card-report>
</div>
</div>
<card-report-events></card-report-events>
</div>
<!-- <div class="reports-box-body" v-if="selectedTab == 'Alarms'">
<card-report-alarms></card-report-alarms>
</div> -->
<div class="reports-box-body" v-if="selectedTab == 'MachineStatus'">
<div class="reports-box-body-left">
<card-report-machine-status></card-report-machine-status>
<!-- <div class="reports-box-body-left">
<div class="body-left-header-machinestatus">
<div>
<label class="intervaldate">{{'reports_body_header_date_range' | localize("Intervallo date")}}</label>
@@ -567,10 +65,11 @@
</div>
</card-report>
</div>
</div>
</div> -->
</div>
<div class="reports-box-body" v-if="selectedTab == 'Timeline'">
<div class="reports-box-body-left">
<card-report-timeline></card-report-timeline>
<!-- <div class="reports-box-body-left">
<div class="body-left-header" v-if="selectDiagram">
<div>
<label class="intervaldate">{{'reports_body_header_date_range' | localize("Intervallo date")}}</label>
@@ -688,9 +187,6 @@
</div>
</div>
</div>
<!-- <div>
<select><option disabled selected>{{'reports_body_left_center_left_placeholder_select_object' | localize('Seleziona oggetti')}}</option></select>
</div> -->
<div>
<accordion-dropdown :title="'reports_body_left_center_left_dropdown_title_events' | localize('Eventi')">
<div class="dropdown">
@@ -771,7 +267,7 @@
</div>
</card-report>
</div>
</div>
</div> -->
</div>
</div>
</div>
@@ -2,6 +2,8 @@ import Vue from "vue";
import Component from "vue-class-component";
import { ModalHelper,Modal } from "src/components/modals";
import { Factory, MessageService } from "src/_base";
import { Watch, Prop } from "vue-property-decorator";
import { Deferred } from "src/services";
declare var cmsClient: any;
@@ -13,9 +15,66 @@ declare var cmsClient: any;
export default class ModalReportSelectColumn extends Vue {
// gestisce la risposta
@Prop()
deferred: Deferred<any>;
// gestisce il parametro in ingresso
@Prop()
value: any[];
maxRow: number = 3;
checkboxes: Array<any> = [{id: "ProgramName", label: this.$options.filters.localize("modal_report_select_column_program_name", "Nome programma")},
{id: "Date", label: this.$options.filters.localize("modal_report_select_column_date", "Data")},
{id: "Deviation", label: this.$options.filters.localize("modal_report_select_column_deviation", "Scostamento")},
{id: "Dimensions", label: this.$options.filters.localize("modal_report_select_column_dimensions", "Dimensioni")},
{id: "EffectiveTime", label: this.$options.filters.localize("modal_report_select_column_effective_time", "Tempo effettivo")},
{id: "Quality", label: this.$options.filters.localize("modal_report_select_column_quality", "Qualità")},
{id: "Quantity", label: this.$options.filters.localize("modal_report_select_column_quantity", "Quantità")},
{id: "AverageTime", label: this.$options.filters.localize("modal_report_select_column_average_time", "Tempo medio")},
{id: "OperatorName", label: this.$options.filters.localize("modal_report_select_column_operator_name", "Nome operatore")},
{id: "StartTime", label: this.$options.filters.localize("modal_report_select_column_start_time", "Ora inizio")},
{id: "TheoreticalTime", label: this.$options.filters.localize("modal_report_select_column_theoretical_time", "Tempo teorico")},
// {id: "Shift", label: this.$options.filters.localize("modal_report_select_column_shift", "Turno")},
{id: "EndTime", label: this.$options.filters.localize("modal_report_select_column_end_time", "Ora fine")}];
allSelectedColumn = false;
columnSelected = [];
@Watch("value")
initializeSelectedcolums(){
this.columnSelected.splice(0, this.columnSelected.length);
this.value.forEach(element => {
this.columnSelected.push(element);
});
}
mounted() {
this.initializeSelectedcolums();
}
selectAll() {
this.columnSelected = [];
if (!this.allSelectedColumn) {
for (let checkbox in this.checkboxes) {
this.columnSelected.push(this.checkboxes[checkbox].id);
}
}
}
close() {
Factory.Get(MessageService).deleteChannel("esc_pressed");
ModalHelper.HideModal();
this.deferred.resolve(this.value);
}
confirm(){
Factory.Get(MessageService).deleteChannel("esc_pressed");
ModalHelper.HideModal();
this.deferred.resolve(this.columnSelected);
}
}
@@ -5,119 +5,27 @@
<label>{{'modal_report_select_column_body_title' | localize("Scegli le colonne che vuoi visualizzare:")}}</label>
<div>
<div class="modal-report-select-column-checkbox">
<input type="checkbox" value="1" id="modalReportSelectAll" name="" />
<input type="checkbox" @click="selectAll()" v-model="allSelectedColumn" value="1" id="modalReportSelectAll" name="" />
<label for="modalReportSelectAll"></label>
</div>
<label for="modalReportSelectAll" class="modal-report-select-column-checkbox-label">{{'modal_report_select_column_select_all' | localize("Seleziona tutte")}}</label>
</div>
</div>
<div class="modal-report-body-center">
<div class="modal-report-body-center-row">
<div>
<div class="modal-report-body-center-row" v-for="i in Math.ceil(checkboxes.length / maxRow)" :key="i">
<div v-for="(checkbox, idx) in checkboxes.slice((i-1) * maxRow, i * maxRow)" :key="idx">
<div class="modal-report-select-column-checkbox">
<input type="checkbox" value="1" id="modalReportProgramName" name="" />
<label for="modalReportProgramName"></label>
<input type="checkbox" v-model="columnSelected" :value="checkbox.id" :id="checkbox.id" />
<label :for="checkbox.id"></label>
</div>
<label for="modalReportProgramName" class="modal-report-select-column-checkbox-label">{{'modal_report_select_column_program_name' | localize("Nome programma")}}</label>
</div>
<div>
<div class="modal-report-select-column-checkbox">
<input type="checkbox" value="1" id="modalReportDate" name="" />
<label for="modalReportDate"></label>
</div>
<label for="modalReportDate" class="modal-report-select-column-checkbox-label">{{'modal_report_select_column_date' | localize("Data")}}</label>
</div>
<div>
<div class="modal-report-select-column-checkbox">
<input type="checkbox" value="1" id="modalReportDeviation" name="" />
<label for="modalReportDeviation"></label>
</div>
<label for="modalReportDeviation" class="modal-report-select-column-checkbox-label">{{'modal_report_select_column_deviation' | localize("Scostamento")}}</label>
</div>
</div>
<div class="modal-report-body-center-row">
<div>
<div class="modal-report-select-column-checkbox">
<input type="checkbox" value="1" id="modalReportDimensions" name="" />
<label for="modalReportDimensions"></label>
</div>
<label for="modalReportDimensions" class="modal-report-select-column-checkbox-label">{{'modal_report_select_column_dimensions' | localize("Dimensioni")}}</label>
</div>
<div>
<div class="modal-report-select-column-checkbox">
<input type="checkbox" value="1" id="modalReportEffectiveTime" name="" />
<label for="modalReportEffectiveTime"></label>
</div>
<label for="modalReportEffectiveTime" class="modal-report-select-column-checkbox-label">{{'modal_report_select_column_effective_time' | localize("Tempo effettivo")}}</label>
</div>
<div>
<div class="modal-report-select-column-checkbox">
<input type="checkbox" value="1" id="modalReportQuality" name="" />
<label for="modalReportQuality"></label>
</div>
<label for="modalReportQuality" class="modal-report-select-column-checkbox-label">{{'modal_report_select_column_quality' | localize("Qualità")}}</label>
</div>
</div>
<div class="modal-report-body-center-row">
<div>
<div class="modal-report-select-column-checkbox">
<input type="checkbox" value="1" id="modalReportQuantity" name="" />
<label for="modalReportQuantity"></label>
</div>
<label for="modalReportQuantity" class="modal-report-select-column-checkbox-label">{{'modal_report_select_column_quantity' | localize("Quantità")}}</label>
</div>
<div>
<div class="modal-report-select-column-checkbox">
<input type="checkbox" value="1" id="modalReportAverageTime" name="" />
<label for="modalReportAverageTime"></label>
</div>
<label for="modalReportAverageTime" class="modal-report-select-column-checkbox-label">{{'modal_report_select_column_average_time' | localize("Tempo medio")}}</label>
</div>
<div>
<div class="modal-report-select-column-checkbox">
<input type="checkbox" value="1" id="modalReportOperatorName" name="" />
<label for="modalReportOperatorName"></label>
</div>
<label for="modalReportOperatorName" class="modal-report-select-column-checkbox-label">{{'modal_report_select_column_operator_name' | localize("Nome operatore")}}</label>
</div>
</div>
<div class="modal-report-body-center-row">
<div>
<div class="modal-report-select-column-checkbox">
<input type="checkbox" value="1" id="modalReportStartNow" name="" />
<label for="modalReportStartNow"></label>
</div>
<label for="modalReportStartNow" class="modal-report-select-column-checkbox-label">{{'modal_report_select_column_start_now' | localize("Ora inizio")}}</label>
</div>
<div>
<div class="modal-report-select-column-checkbox">
<input type="checkbox" value="1" id="modalReportTheoreticalTime" name="" />
<label for="modalReportTheoreticalTime"></label>
</div>
<label for="modalReportTheoreticalTime" class="modal-report-select-column-checkbox-label">{{'modal_report_select_column_theoretical_time' | localize("Tempo teorico")}}</label>
</div>
<div>
<div class="modal-report-select-column-checkbox">
<input type="checkbox" value="1" id="modalReportShift" name="" />
<label for="modalReportShift"></label>
</div>
<label for="modalReportShift" class="modal-report-select-column-checkbox-label">{{'modal_report_select_column_shift' | localize("Turno")}}</label>
</div>
</div>
<div class="modal-report-body-center-row">
<div>
<div class="modal-report-select-column-checkbox">
<input type="checkbox" value="1" id="modalReportEndTime" name="" />
<label for="modalReportEndTime"></label>
</div>
<label for="modalReportEndTime" class="modal-report-select-column-checkbox-label">{{'modal_report_select_column_end_time' | localize("Ora fine")}}</label>
<label :for="checkbox.id" class="modal-report-select-column-checkbox-label">{{checkbox.label}}</label>
</div>
</div>
</div>
<div class="modal-report-body-footer">
<button class="btn btn-primary">{{'modal_report_select_column_btn_cancel' | localize("Annulla")}}</button>
<button class="btn btn-success">{{'modal_report_select_column_btn_confirm' | localize("Conferma")}}</button>
<button class="btn btn-primary" @click="close()">{{'modal_report_select_column_btn_cancel' | localize("Annulla")}}</button>
<button class="btn btn-success" @click="confirm()">{{'modal_report_select_column_btn_confirm' | localize("Conferma")}}</button>
</div>
</modal>
</template>
<script src="./modal-report-select-column.ts" lang="ts"></script>
<script src="./modal-report-select-column.ts" lang="ts"></script>