Merge remote-tracking branch 'origin/develop' into develop
This commit is contained in:
@@ -378,8 +378,9 @@ fieldset[disabled] .form-group.is-focused .togglebutton label {
|
||||
margin-left: 5px;
|
||||
|
||||
&.error {
|
||||
background-color: rgba(255, 0, 0, .7);
|
||||
background-color: rgba(255, 0, 0, .7) !important;
|
||||
color: #222;
|
||||
background-image: none !important;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -6001,8 +6001,9 @@ fieldset[disabled] .form-group.is-focused .togglebutton label {
|
||||
margin-left: 5px;
|
||||
}
|
||||
.togglebutton label .toggle.error {
|
||||
background-color: rgba(255, 0, 0, 0.7);
|
||||
background-color: rgba(255, 0, 0, 0.7) !important;
|
||||
color: #222;
|
||||
background-image: none !important;
|
||||
}
|
||||
.togglebutton label .toggle,
|
||||
.togglebutton label input[type=checkbox][disabled] + .toggle {
|
||||
|
||||
@@ -38,6 +38,8 @@ declare module signalr_process {
|
||||
type: string;
|
||||
toDelete: boolean;
|
||||
toDisplay: boolean;
|
||||
isM156: boolean;
|
||||
id: number;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -180,6 +180,7 @@ export default class app extends Vue {
|
||||
|
||||
onmousedown() {
|
||||
KeyboardHelper.hideKeyboard();
|
||||
messageService.publishToChannel('hideall');
|
||||
}
|
||||
|
||||
@Watch("isMainViewLiftedUp")
|
||||
|
||||
@@ -35,7 +35,8 @@
|
||||
:title="'header_tooltip_btn_close' | localize('Close the application')"
|
||||
>×</button>
|
||||
</div>
|
||||
<modal-container name="modal"></modal-container>
|
||||
<modal-nc-container name="modal-nc" :class="{'blur':applyBlur}"></modal-nc-container>
|
||||
<modal-container name="modal"></modal-container>
|
||||
</div>
|
||||
</template>
|
||||
<script src="./App.ts" lang="ts"></script>
|
||||
|
||||
@@ -39,7 +39,7 @@ messageService.subscribeToChannel("show-contact-info", () => { ModalHelper.ShowM
|
||||
|
||||
// messageService.subscribeToChannel("show-axes-calibration", () => { ModalHelper.ShowNcModal(AxesCalibration); });
|
||||
// messageService.subscribeToChannel("hide-axes-calibration", () => { ModalHelper.HideNcModal(AxesCalibration); });
|
||||
// messageService.subscribeToChannel("show-m155-questions", () => { ModalHelper.ShowNextM155Modal(); });
|
||||
messageService.subscribeToChannel("show-m155-questions", () => { ModalHelper.ShowNextM155Modal(); });
|
||||
// messageService.subscribeToChannel("show-nochange-page", () => {
|
||||
// ModalHelper.ShowMessage(
|
||||
// Vue.filter('localize')("modal_nochangepage_title", "Operazione non possibile"),
|
||||
|
||||
@@ -0,0 +1,95 @@
|
||||
import { AppModel } from "src/store";
|
||||
import { Modal, ModalHelper } from "src/components/modals";
|
||||
import Component from "vue-class-component";
|
||||
import Vue from "vue";
|
||||
import { Hub } from "src/services";
|
||||
import { Factory, messageService } from "src/_base";
|
||||
import { Watch } from "vue-property-decorator";
|
||||
|
||||
@Component({ components: { modal: Modal } })
|
||||
export default class M155Dialog extends Vue{
|
||||
|
||||
data = null;
|
||||
value = 0;
|
||||
|
||||
MULTIPLE_BUTTONS = "MULTIPLE_BUTTONS";
|
||||
REAL = "REAL";
|
||||
SHOW_VAL = "SHOW_VAL"
|
||||
MODAL = "MODAL"
|
||||
|
||||
mounted(){
|
||||
this.data = ModalHelper.M155ModalData.data;
|
||||
this.value = -1;
|
||||
|
||||
// Populate translations
|
||||
if(this.data.isM156) {
|
||||
this.data.message = this.$options.filters.localize("m156_title_" + this.data.id, "Title");
|
||||
|
||||
for(const key in this.data.buttons){
|
||||
this.data.buttons[key] = this.$options.filters.localize("m156_" + this.data.id + "_button_" + this.data.buttons[key], "Title");
|
||||
}
|
||||
|
||||
if(this.data.buttons)
|
||||
Object.keys(this.data.buttons).forEach(btn => {
|
||||
btn = this.$options.filters.localize("m156_title_" + this.data.id, "Title");
|
||||
});
|
||||
}
|
||||
|
||||
messageService.subscribeToChannel("show-modal-nc", args => {
|
||||
this.data = ModalHelper.M155ModalData.data;
|
||||
});
|
||||
}
|
||||
|
||||
get process(){
|
||||
if(this.data)
|
||||
return this.data.process;
|
||||
return 0;
|
||||
}
|
||||
|
||||
@Watch("data")
|
||||
dataChanged(){
|
||||
this.value = -1;
|
||||
}
|
||||
|
||||
ischecked(k){
|
||||
return k == this.value;
|
||||
}
|
||||
|
||||
check(k){
|
||||
return this.value = k;
|
||||
}
|
||||
|
||||
canSendAnswer(){
|
||||
if(this.getType == this.MODAL)
|
||||
return false
|
||||
else if(this.getType == this.REAL)
|
||||
return this.value != null && this.value != undefined;
|
||||
else
|
||||
return this.value && this.value != -1;
|
||||
}
|
||||
|
||||
answerVisible(){
|
||||
if(this.getType == this.MODAL)
|
||||
return false
|
||||
return true;
|
||||
}
|
||||
|
||||
get getType(){
|
||||
if(this.data)
|
||||
return this.data.type
|
||||
|
||||
return ""
|
||||
}
|
||||
|
||||
hide() {
|
||||
ModalHelper.M155ModalData.data.toDisplay = false;
|
||||
ModalHelper.HideThisM155Modal(ModalHelper.M155ModalData.data.processId);
|
||||
}
|
||||
|
||||
answer(){
|
||||
if(!this.data.isM156)
|
||||
Hub.Current.WriteM155Response(this.data.process,this.value);
|
||||
else
|
||||
Hub.Current.WriteM156Response(this.data.process,this.value);
|
||||
}
|
||||
};
|
||||
@@ -0,0 +1,38 @@
|
||||
<template>
|
||||
<modal :title="'modal_m155_standard' | localize('Message from the machine')" class="m155" :class="{'multiple': getType != REAL}" name="modal" >
|
||||
<div v-if="data">
|
||||
<h2 v-if="getType != SHOW_VAL">{{data.message}}</h2>
|
||||
<div class="content-real" v-if="getType == REAL">
|
||||
<span>{{'modal_m155_value' | localize("Value: ")}}</span>
|
||||
<input type="number" min="0" max="4294967295" v-model="value">
|
||||
</div>
|
||||
|
||||
<div class="content-real-showval" v-if="getType == SHOW_VAL">
|
||||
<span>{{data.message}}</span>
|
||||
<input type="number" min="0" max="4294967295" v-model="data.value" disabled="disabled">
|
||||
</div>
|
||||
|
||||
<div class="content-real-showval" v-if="getType == MODAL" >
|
||||
<span>{{data.message}}</span>
|
||||
</div>
|
||||
|
||||
<div v-if="getType == MULTIPLE_BUTTONS" >
|
||||
<div class="content-btn" v-for="(t,k) in data.buttons" :key="'m155_'+k" @click="check(k)">
|
||||
<input type="radio" name="radio-group" :checked="ischecked(k)" >
|
||||
<label for="datefixed">{{t}}</label>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<footer>
|
||||
<!--
|
||||
<div class="pull-left">
|
||||
<button class="btn" @click="hide()">{{'modal_m155_hide_window' | localize("Hide")}}</button>
|
||||
</div>-->
|
||||
<div class="pull-right" v-if="answerVisible()">
|
||||
<button class="btn btn-success" @click="answer()" :disabled="!canSendAnswer()">{{'confirm_request_confirm' | localize("Confirm")}}</button>
|
||||
</div>
|
||||
</footer>
|
||||
</modal>
|
||||
</template>
|
||||
<script src="./m155-dialog.ts" lang="ts"></script>
|
||||
|
||||
@@ -13,5 +13,6 @@ export {
|
||||
ContactInfoDialog,
|
||||
UserInfoDialog,
|
||||
UserInfo,
|
||||
CmsconnectInfoDialog
|
||||
CmsconnectInfoDialog,
|
||||
M155Questions
|
||||
}
|
||||
|
||||
@@ -2,6 +2,7 @@ import Component from "vue-class-component";
|
||||
import Vue from "vue";
|
||||
import { Prop } from "vue-property-decorator";
|
||||
import lottie from "lottie-web";
|
||||
import { messageService } from "@/_base";
|
||||
|
||||
@Component({})
|
||||
export default class Combo extends Vue {
|
||||
@@ -42,7 +43,7 @@ export default class Combo extends Vue {
|
||||
}
|
||||
|
||||
mounted() {
|
||||
|
||||
messageService.subscribeToChannel('hideall', () => this.hideList());
|
||||
}
|
||||
|
||||
}
|
||||
@@ -9,7 +9,7 @@
|
||||
<i v-if="opened" class="fa fa-chevron-up" />
|
||||
<i v-else class="fa fa-chevron-down" />
|
||||
</div>
|
||||
<div class="droplist" v-if="opened">
|
||||
<div class="droplist" v-if="opened" @mousedown.prevent.stop>
|
||||
<div
|
||||
class="droplist-item"
|
||||
v-for="opt in options"
|
||||
|
||||
@@ -24,9 +24,14 @@ export default class Keyboard extends Vue {
|
||||
|
||||
set Value(v: number) {
|
||||
try {
|
||||
let scale = Math.pow(10, this.actualValue.numDec);
|
||||
this.actualValue.setpointHMI = Math.round(v * scale) / scale;
|
||||
} catch{
|
||||
let scale = Math.pow(10, this.actualValue.numDec ?? 0);
|
||||
let result = Math.round(v * scale) / scale;
|
||||
|
||||
if (!Number.isNaN(result) && Number.isFinite(result))
|
||||
this.actualValue.setpointHMI = result;
|
||||
else
|
||||
this.actualValue.setpointHMI = v;
|
||||
} catch {
|
||||
this.actualValue.setpointHMI = v;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -34,9 +34,14 @@ export default class Numeric extends Vue {
|
||||
}
|
||||
|
||||
set Value(v: number) {
|
||||
debugger
|
||||
try {
|
||||
let scale = Math.pow(10, this.value.numDec);
|
||||
this.value.setpointHMI = Math.round(v * scale) / scale;
|
||||
let scale = Math.pow(10, this.value.numDec ?? 0);
|
||||
let result = Math.round(v * scale) / scale;
|
||||
if (!Number.isNaN(result) && Number.isFinite(result))
|
||||
this.value.setpointHMI = result;
|
||||
else
|
||||
this.value.setpointHMI = v;
|
||||
} catch {
|
||||
this.value.setpointHMI = v;
|
||||
}
|
||||
|
||||
@@ -12,7 +12,7 @@
|
||||
:id="id"
|
||||
:disabled="value.status && !value.status.enabled"
|
||||
/>
|
||||
<span v-if="value.unitMeasure">{{unitMeasure}}</span>
|
||||
<span v-if="value && value.unitMeasure">{{value.unitMeasure}}</span>
|
||||
</div>
|
||||
</template>
|
||||
<script src="./numeric.ts" lang="ts"></script>
|
||||
@@ -6,6 +6,7 @@ import { store, MachineStatusModel } from "@/store";
|
||||
import { SoftKeysConfigurationModel, machineInfoStore } from "@/store/machineInfo.store";
|
||||
import { Hub, machineService } from "@/services";
|
||||
import { Watch } from "vue-property-decorator";
|
||||
import { messageService } from "@/_base";
|
||||
|
||||
@Component({
|
||||
components: { softKey }
|
||||
@@ -60,6 +61,7 @@ export default class Paddle extends Vue {
|
||||
|
||||
async mounted() {
|
||||
this.loadData();
|
||||
messageService.subscribeToChannel('hideall', () => { this.isOpen = false; this.openFull = false; })
|
||||
}
|
||||
|
||||
@Watch("isOpen")
|
||||
|
||||
@@ -1,5 +1,9 @@
|
||||
<template>
|
||||
<div class="paddle" :class="{'open-half': isOpen && !openFull, 'open-full': isOpen && openFull}">
|
||||
<div
|
||||
class="paddle"
|
||||
:class="{'open-half': isOpen && !openFull, 'open-full': isOpen && openFull}"
|
||||
@mousedown.prevent.stop
|
||||
>
|
||||
<nav class="paddleButton" @click="isOpen = !isOpen; openFull = false;sendKeyCancel()">
|
||||
<div class="circles">
|
||||
<div></div>
|
||||
|
||||
+2
-1
@@ -58,7 +58,7 @@
|
||||
<button class="btn btn-info square" @click="add5()">+5%</button>
|
||||
<select class="input-select" v-model="uniformChannelValue" @change="changedSelectValue">
|
||||
<option value="-1">{{'warmers_select_power' | localize('Seleziona...')}}</option>
|
||||
|
||||
|
||||
<option v-for="index in 10" :key="index" :value="(index*10)">{{index*10}}%</option>
|
||||
</select>
|
||||
</div>
|
||||
@@ -95,6 +95,7 @@
|
||||
<article class="warmers">
|
||||
<warmers
|
||||
ref="warmers"
|
||||
:recipe="recipe"
|
||||
:id-reflector="1"
|
||||
@select="selectionChanged"
|
||||
@methodChanged="m => selectionMethod = m"
|
||||
|
||||
+7
-2
@@ -57,7 +57,7 @@
|
||||
<button class="btn btn-info square" @click="add1()">+1%</button>
|
||||
<button class="btn btn-info square" @click="add5()">+5%</button>
|
||||
<select class="input-select" v-model="uniformChannelValue" @change="changedSelectValue">
|
||||
<option value="-1">{{'warmers_select_power' | localize('Seleziona...')}}</option>
|
||||
<option value="-1">{{'warmers_select_power' | localize('Seleziona...')}}</option>
|
||||
<option v-for="index in 11" :key="index" :value="((index-1)*10)">{{(index-1)*10}}%</option>
|
||||
</select>
|
||||
</div>
|
||||
@@ -91,7 +91,12 @@
|
||||
</aside>
|
||||
<hr />
|
||||
<article class="warmers">
|
||||
<warmers ref="warmers" @select="selectionChanged" @methodChanged="m => selectionMethod = m"></warmers>
|
||||
<warmers
|
||||
ref="warmers"
|
||||
@select="selectionChanged"
|
||||
@methodChanged="m => selectionMethod = m"
|
||||
:recipe="recipe"
|
||||
></warmers>
|
||||
|
||||
<div class="absolute bottom right">
|
||||
<button class="btn btn-info square" @click="zoomIn()">
|
||||
|
||||
+3
@@ -16,6 +16,9 @@ export default class Warmers extends Vue {
|
||||
width = 180;
|
||||
height = 48;
|
||||
|
||||
@Prop()
|
||||
recipe: Recipe.IRecipe;
|
||||
|
||||
@Prop({ default: 0 })
|
||||
idReflector: number;
|
||||
|
||||
|
||||
+14
@@ -29,6 +29,20 @@
|
||||
/>
|
||||
</foreignObject>
|
||||
</g>
|
||||
<g>
|
||||
<rect
|
||||
ref="piastra"
|
||||
:x="10"
|
||||
:y="10"
|
||||
:width="recipe.general_sizes_sheet_dim_x.setpointHMI"
|
||||
:height="recipe.general_sizes_sheet_dim_y.setpointHMI"
|
||||
stroke="rgba(0,0,0,.3)"
|
||||
stroke-width="6"
|
||||
rx="3"
|
||||
ry="3"
|
||||
/>
|
||||
</g>
|
||||
|
||||
<g v-if="selectionMethod == 'rect' && selectionPoints.length>1">
|
||||
<rect
|
||||
ref="lazo"
|
||||
|
||||
@@ -2,7 +2,9 @@
|
||||
import { Factory, messageService } from "@/_base";
|
||||
import ConfirmModal from "./modal-confirm.vue";
|
||||
import { Deferred } from "@/services/Deferred";
|
||||
import { M155Questions } from "src/app_modules/machine";
|
||||
import { processStore, processModelActions } from "@/store/runningProcess.store";
|
||||
|
||||
import { store } from "@/store";
|
||||
declare let $: any;
|
||||
|
||||
@@ -57,12 +59,34 @@ export class ModalHelper {
|
||||
isMessage: false
|
||||
};
|
||||
|
||||
public static M155ModalData = {
|
||||
data: null
|
||||
};
|
||||
|
||||
public static MaintenancePasswordData = {
|
||||
maintenance: null,
|
||||
value: ""
|
||||
};
|
||||
|
||||
public static ShowNextM155Modal() {
|
||||
ModalHelper.M155ModalData.data = null;
|
||||
for(let i = 0; i< processStore.state.m155messages.length; i++){
|
||||
if(processStore.state.m155messages[i].toDisplay){
|
||||
ModalHelper.M155ModalData.data = processStore.state.m155messages[i];
|
||||
break;
|
||||
}
|
||||
}
|
||||
if(ModalHelper.M155ModalData.data){
|
||||
messageService.publishToChannel("show-modal-nc", M155Questions);
|
||||
}
|
||||
else{
|
||||
messageService.publishToChannel("hide-modal-nc", M155Questions);
|
||||
}
|
||||
}
|
||||
public static HideThisM155Modal(processId) {
|
||||
processModelActions.hideM155Messsage(store,processId);
|
||||
}
|
||||
|
||||
public static GetModalData() {
|
||||
return ModalHelper._modalData;
|
||||
};
|
||||
@@ -101,6 +125,17 @@ export class ModalHelper {
|
||||
return deferred.promise;
|
||||
}
|
||||
|
||||
|
||||
public static ShowM155ModaloOfProcess(proc: number) {
|
||||
if (!ModalHelper.M155ModalData.data) {
|
||||
let find = processStore.state.m155messages.find(X => X.process == proc)
|
||||
if (find) {
|
||||
ModalHelper.M155ModalData.data = find;
|
||||
messageService.publishToChannel("show-modal-nc", M155Questions);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public static HideModal(modalname: string = "modal") {
|
||||
messageService.publishToChannel("hide-" + modalname);
|
||||
}
|
||||
|
||||
@@ -90,6 +90,7 @@ export class Hub {
|
||||
// this._hub.client.processesData = Hub.processDataChanged;
|
||||
this._hub.client.axesNames = Hub.axesNamesDataChanged;
|
||||
this._hub.client.axesPositions = Hub.axesPositionsDataChanged;
|
||||
this._hub.client.m156Data = Hub.m156Data;
|
||||
|
||||
this._hub.client.cmsConnectGatewayRebbot = Hub.cmsConnectGatewayRebbot;
|
||||
|
||||
@@ -138,6 +139,10 @@ export class Hub {
|
||||
|
||||
}
|
||||
|
||||
private static m156Data(data) {
|
||||
processModelActions.setM155Messsages(store, data, true);
|
||||
}
|
||||
|
||||
public static prodCycleData(data) {
|
||||
machineStatusActions.setCycleProd(store, data);
|
||||
}
|
||||
@@ -511,6 +516,12 @@ export class Hub {
|
||||
});
|
||||
}
|
||||
|
||||
public WriteM156Response(process: number, value: number) {
|
||||
this._hub.server.writeM156Response(process, value)
|
||||
.catch((err) => {
|
||||
this.ManageError(err)
|
||||
});
|
||||
}
|
||||
|
||||
public async ManageError(err) {
|
||||
if ((err as TypeError).message.indexOf("not authorized") >= 0) {
|
||||
|
||||
@@ -33,7 +33,7 @@ export interface ProcessModelActionsInterface {
|
||||
setCurrentProgramName(context, name);
|
||||
setQueueStatus(context, status);
|
||||
setStartStopQueueEnabled(context, queueEnabled);
|
||||
setM155Messsages(context, data: Array<signalr_process.M155Messages>);
|
||||
setM155Messsages(context, data: Array<signalr_process.M155Messages>, isM156: boolean);
|
||||
hideM155Messsage(context, Id: number);
|
||||
setCurrentOrigin(context, Id: number);
|
||||
setFeedOverride(context, feed);
|
||||
@@ -153,23 +153,30 @@ export const processStore = {
|
||||
}
|
||||
store.m155messages = Array.from(store._m155messages.values());
|
||||
},
|
||||
setM155Messsages(store, data: Array<signalr_process.M155Messages>){
|
||||
setM155Messsages(store, {m155Data, isM156}){
|
||||
|
||||
var iterator = store._m155messages.values();
|
||||
let value = iterator.next().value;
|
||||
// Remove only m155
|
||||
while(value){
|
||||
value.toDelete = true;
|
||||
value = iterator.next().value;
|
||||
if(isM156 && value.isM156)
|
||||
value.toDelete = true;
|
||||
|
||||
if(!isM156 && !value.isM156)
|
||||
value.toDelete = true;
|
||||
|
||||
value = iterator.next().value;
|
||||
}
|
||||
|
||||
for (let index = 0; index < data.length; index++) {
|
||||
let element = data[index];
|
||||
// Set m155 data
|
||||
for (let index = 0; index < m155Data.length; index++) {
|
||||
let element = m155Data[index];
|
||||
element.toDelete = false;
|
||||
element.toDisplay = true;
|
||||
store._m155messages.set(element.process, element);
|
||||
}
|
||||
|
||||
//Delete what i have to delete
|
||||
// Delete what i have to delete
|
||||
iterator = store._m155messages.values();
|
||||
value = iterator.next().value;
|
||||
while(value){
|
||||
@@ -209,8 +216,8 @@ export const processStore = {
|
||||
setProcessMessage(context, message){
|
||||
context.commit("SetProcessMessage", message);
|
||||
},
|
||||
setM155Messsages(context, data){
|
||||
context.commit("setM155Messsages", data);
|
||||
setM155Messsages(context, data, isM156){
|
||||
context.commit("setM155Messsages", {m155Data: data, isM156: isM156});
|
||||
},
|
||||
setStartStopQueueEnabled(context, queueEnabled){
|
||||
context.commit("SetStartStopQueueEnabled", queueEnabled);
|
||||
|
||||
Reference in New Issue
Block a user