From 4cb28e49de632f90a1a40c52ede9a3cbec3a39ea Mon Sep 17 00:00:00 2001 From: Jimmy Pellier Date: Wed, 17 Jun 2020 16:09:45 +0200 Subject: [PATCH] Fermeture websocket Factorisation --- src/components/Menu.vue | 10 ++++-- src/components/Temperature.vue | 45 +++++++++++++++++++------- src/components/User/CardUser.vue | 17 +++++++--- src/components/User/ListeUser.vue | 5 ++- src/components/User/User.vue | 34 ++++++++++---------- src/lang/messages.js | 1 + src/main.js | 3 +- src/services/TemperatureHub.js | 52 +++++++++++++++++++++++++++++++ src/services/temperature-hub.js | 33 -------------------- 9 files changed, 131 insertions(+), 69 deletions(-) create mode 100644 src/services/TemperatureHub.js delete mode 100644 src/services/temperature-hub.js diff --git a/src/components/Menu.vue b/src/components/Menu.vue index 750a873..991a065 100644 --- a/src/components/Menu.vue +++ b/src/components/Menu.vue @@ -83,7 +83,10 @@ axios.get(process.env.VUE_APP_BACK_USER + "/api/users/bykeycloakid?guid=" + UserService.getUsername().sub, axiosConfig ).then(result => { - that.$store.commit("updateUser", result.data); + if( result.data.keycloakId !== null) + that.$store.commit("updateUser", result.data); + else + UserService.doLogout(); }); axios.get(process.env.VUE_APP_BACK_USER + "/api/roles/bykeycloakid?keycloakid=" + UserService.getUsername().sub, @@ -130,7 +133,10 @@ axios.get(process.env.VUE_APP_BACK_USER + "/api/users/bykeycloakid?guid=" + UserService.getUsername().sub, axiosConfig ).then(result => { - that.$store.commit("updateUser", result.data); + if( result.data.keycloakId !== null) + that.$store.commit("updateUser", result.data); + else + UserService.doLogout(); }); axios.get(process.env.VUE_APP_BACK_USER + "/api/roles/bykeycloakid?keycloakid=" + UserService.getUsername().sub, diff --git a/src/components/Temperature.vue b/src/components/Temperature.vue index fef3a51..ffc29ce 100644 --- a/src/components/Temperature.vue +++ b/src/components/Temperature.vue @@ -39,7 +39,7 @@ {{$t('ambient_temperature')}} : {{received.Ambient | formatFloat}} {{$t('temperature_unit')}} - + {{$t('emissivity')}} : {{received.Emissivity | formatFloat}} @@ -68,10 +68,13 @@ import axios from "axios"; import TestChart from "./TestChart"; import Vue from "vue"; + import '../services/TemperatureHub.js' + import TemperatureHub from "../services/TemperatureHub"; Vue.use(TestChart); -export default { + + export default { name: 'Temperature', components: { TestChart @@ -85,7 +88,7 @@ export default { stream:{}, datacollection: {}, received : {}, - image: require('@/assets/coviiiiiid.jpg'), + acquirementInprogress:false, result: null, x:'', @@ -94,9 +97,16 @@ export default { maintainAspectRatio: false, }, roles:[], + temperatureHub : null } }, computed: { + image() + { + return this.$store.state.user != null && this.$store.state.user.image != null ? + process.env.VUE_APP_IMAGE_STORE + this.$store.state.user.image : + require('@/assets/coviiiiiid.jpg'); + }, myStyles() { return { height: `300px`, @@ -118,7 +128,7 @@ export default { if(this.acquirementInprogress) return require('@/assets/waiting.jpg'); else - return require('@/assets/coviiiiiid.jpg'); + return this.image; } else { @@ -128,11 +138,15 @@ export default { else if(this.result.fever) return require('@/assets/fever_ok.jpg'); else - return require('@/assets/coviiiiiid.jpg'); + return this.image; } }, + isAdmin() { + + return this.$store.state.roles.find(l => l.name == 'Administrators' && l.isActived) != null; + }, isAuth() { return this.$store.state.roles !== undefined && this.$store.state.roles.find(l => l.isActived) != null; @@ -145,12 +159,19 @@ export default { } } }, + created () { + this.temperatureHub = new TemperatureHub(); + Vue.prototype.$questionHub = this.temperatureHub.startHub(); + this.$questionHub.$on(process.env.VUE_APP_EMIT_MSG_TEMPERATURE, this.onChanged); + // Listen to score changes coming from SignalR events - this.$questionHub.$on(process.env.VUE_APP_EMIT_MSG_TEMPERATURE, this.onChanged) - }, + + }, mounted() { + this.fillData (); + }, methods : { fillData () { @@ -158,7 +179,7 @@ export default { labels: [], datasets: [ { - label: 'Température objet', + label: this.$t('temperature_chart_label'), backgroundColor: '#f87979', data: [] }] @@ -172,7 +193,7 @@ export default { labels: [], datasets: [ { - label: 'Température objet', + label: this.$t('temperature_chart_label'), backgroundColor: '#f87979', data: [] }] @@ -222,9 +243,11 @@ export default { } } }, - beforeDestroy () { + beforeDestroy : async function() { + // Make sure to cleanup SignalR event handlers when removing the component - this.$questionHub.$off(process.env.VUE_APP_EMIT_MSG_TEMPERATURE, this.onChanged) + this.$questionHub.$off(process.env.VUE_APP_EMIT_MSG_TEMPERATURE, this.onChanged); + await this.temperatureHub.stopHub(); } } diff --git a/src/components/User/CardUser.vue b/src/components/User/CardUser.vue index 2d8420b..88b2da8 100644 --- a/src/components/User/CardUser.vue +++ b/src/components/User/CardUser.vue @@ -78,7 +78,17 @@ export default { name: "CardUser", - props: ['user'], + props: + { + method: {type: Function}, + user: { + type: Object + } + }, + mounted() + { + + }, computed : { img() @@ -92,14 +102,13 @@ { deleteUser : function(user) { - let that = this; let axiosConfig = { withCredentials: true, headers:{'Authorization': 'Bearer ' + sessionStorage.getItem("react-token"), } }; - this.$bvModal.msgBoxConfirm('Vous allez supprimer l\'utilisateur \'' + user.nom + '\'. Voulez-vous continuer ?', + this.$bvModal.msgBoxConfirm('Vous allez supprimer l\'utilisateur \'' + user.login + '\'. Voulez-vous continuer ?', { title: 'Suppression Utilisateur', size: 'sm', @@ -117,7 +126,7 @@ axios.delete(process.env.VUE_APP_BACK_USER+ "/api/users/" + user.id, axiosConfig ).then(() => { - that.display(); + this.$emit('send-message'); }); } }) diff --git a/src/components/User/ListeUser.vue b/src/components/User/ListeUser.vue index 3376188..9c4a3fe 100644 --- a/src/components/User/ListeUser.vue +++ b/src/components/User/ListeUser.vue @@ -42,7 +42,7 @@
- +
@@ -87,6 +87,9 @@ }, methods : { + handleSendMessage() { + this.display(); + }, debounceInput: debounce(function () { this.display(); }, 500,false), diff --git a/src/components/User/User.vue b/src/components/User/User.vue index 6495d4e..c7b521e 100644 --- a/src/components/User/User.vue +++ b/src/components/User/User.vue @@ -1,19 +1,23 @@