diff --git a/Step.Model/DTOModels/DTOProcessDataModel.cs b/Step.Model/DTOModels/DTOProcessDataModel.cs index 76af77c3..8bfda7bb 100644 --- a/Step.Model/DTOModels/DTOProcessDataModel.cs +++ b/Step.Model/DTOModels/DTOProcessDataModel.cs @@ -109,7 +109,10 @@ namespace Step.Model.DTOModels if (Type != item.Type) return false; - + + if (Message != item.Message) + return false; + return true; } } diff --git a/Step/wwwroot/src/app_modules/machine/components/m155-dialog.ts b/Step/wwwroot/src/app_modules/machine/components/m155-dialog.ts index 3aa20f57..76f068c0 100644 --- a/Step/wwwroot/src/app_modules/machine/components/m155-dialog.ts +++ b/Step/wwwroot/src/app_modules/machine/components/m155-dialog.ts @@ -4,6 +4,7 @@ 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{ @@ -13,16 +14,24 @@ export default class M155Dialog extends Vue{ mounted(){ this.data = ModalHelper.M155ModalData.data; + this.value = 0; Factory.Get(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 = 0; + } + ischecked(k){ return k == this.value; } @@ -42,7 +51,7 @@ export default class M155Dialog extends Vue{ } hide() { ModalHelper.M155ModalData.data.toDisplay = false; - ModalHelper.ShowNextM155Modal(); + ModalHelper.HideThisM155Modal(ModalHelper.M155ModalData.data.processId); } answer(){ Hub.Current.WriteM155Response(this.data.process,this.value); diff --git a/Step/wwwroot/src/components/modals/ModalHelper.ts b/Step/wwwroot/src/components/modals/ModalHelper.ts index 320b3d6a..161c7a02 100644 --- a/Step/wwwroot/src/components/modals/ModalHelper.ts +++ b/Step/wwwroot/src/components/modals/ModalHelper.ts @@ -3,7 +3,8 @@ import { Factory, MessageService } from "src/_base"; import ConfirmModal from "./modal-confirm.vue"; import { Deferred } from "src/services/Deferred"; import { M155Questions } from "src/app_modules/machine"; -import { processStore } from "src/store/runningProcess.store"; +import { processStore,processModelActions } from "src/store/runningProcess.store"; +import { store } from "src/store"; declare let $: any; export class ModalHelper { @@ -67,7 +68,7 @@ export class ModalHelper { 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){ + if(processStore.state.m155messages[i].toDisplay){ ModalHelper.M155ModalData.data = processStore.state.m155messages[i]; break; } @@ -79,6 +80,11 @@ export class ModalHelper { Factory.Get(MessageService).publishToChannel("hide-modal-nc", M155Questions); } } + + public static HideThisM155Modal(processId) { + processModelActions.hideM155Messsage(store,processId); + } + public static ShowM155ModaloOfProcess(proc:number) { if(!ModalHelper.M155ModalData.data){ diff --git a/Step/wwwroot/src/services/hub.ts b/Step/wwwroot/src/services/hub.ts index 6c52b424..a7bc3b68 100644 --- a/Step/wwwroot/src/services/hub.ts +++ b/Step/wwwroot/src/services/hub.ts @@ -110,6 +110,12 @@ export class Hub { $.connection.hub.start(); this.checkShowAxes(); + + + store.watch(s => (s as AppModel).process.m155messages, (n, o) => { + Factory.Get(MessageService).publishToChannel("show-m155-questions"); + }) + } private logout(e) { @@ -341,7 +347,6 @@ export class Hub { private static m155Data(data) { processModelActions.setM155Messsages(store, data); - Factory.Get(MessageService).publishToChannel("show-m155-questions"); } diff --git a/Step/wwwroot/src/store/runningProcess.store.ts b/Step/wwwroot/src/store/runningProcess.store.ts index e5d0ee16..2de2e604 100644 --- a/Step/wwwroot/src/store/runningProcess.store.ts +++ b/Step/wwwroot/src/store/runningProcess.store.ts @@ -27,6 +27,7 @@ export interface ProcessModelActionsInterface { setQueueStatus(context, status); setStartStopQueueEnabled(context, queueEnabled); setM155Messsages(context, data: Array); + hideM155Messsage(context, Id: number); setCurrentOrigin(context, Id: number); setCurrentOffsetId(context, Id: number); } @@ -40,6 +41,7 @@ export const processStore = { currentProgramImage: null, _process: new Map(), process: [], + _m155messages: new Map(), m155messages: [], axes: [], running: false, @@ -114,36 +116,45 @@ export const processStore = { selectAxis(store, axisId: number) { store.selectedAxis = axisId; }, + HideM155Messsage(store, processId: number) { + if(store._m155messages.has(processId)){ + store._m155messages[processId].toDisplay = false; + } + store.m155messages = Array.from(store._m155messages.values()); + }, setM155Messsages(store, data: Array){ - for (let index = 0; index < store.m155messages.length; index++) { - store.m155messages[index].toDelete = true; + var iterator = store._m155messages.values(); + let value = iterator.next().value; + while(value){ + value.toDelete = true; + value = iterator.next().value; } for (let index = 0; index < data.length; index++) { let element = data[index]; - element.toDelete = true; - let idx = store.m155messages.findIndex(x => x.process == element.process); - if(idx >= 0){ - store.m155messages[idx].toDelete = false; - } - else{ - store.m155messages.push(element); - element.toDelete = false; - element.toDisplay = true; - } + element.toDelete = false; + element.toDisplay = true; + store._m155messages.set(element.process, element); } //Delete what i have to delete - let idx = store.m155messages.findIndex(x => x.toDelete == true); - while(idx >= 0){ - store.m155messages.splice(idx, 1) - idx = store.m155messages.findIndex(x => x.toDelete == true); - } + iterator = store._m155messages.values(); + value = iterator.next().value; + while(value){ + if(value.toDelete) + store._m155messages.delete(value.process); + value = iterator.next().value; + } + store.m155messages = Array.from(store._m155messages.values()); } }, - actions: { + actions: { + + hideM155Messsage(context, Id){ + context.commit("HideM155Messsage", Id); + }, setCurrentOrigin(context, Id){ context.commit("SetCurrentOrigin", Id); },