summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKonstantin <sulwirld@gmail.com>2023-06-14 17:23:14 +0300
committersulwirld <sulwirld@gmail.com>2023-06-20 21:30:40 +0300
commitfb6c6de90cba53dff84d687d6b3f2b07b822b1dc (patch)
tree5d16a32c5458f469caf27402a94f96e63d239987
parentaf76e2bc3e756a5325478cada4e643d82e7b466e (diff)
downloadwebui-vue-fb6c6de90cba53dff84d687d6b3f2b07b822b1dc.tar.xz
Fix kvm session and add event bus
Bug description: Before this commit KVM window wasn't being closed after logging out Test: Step1. Launch webui on browser and see KVM page on /#/operations/kvm. Step2. Open additional window using 'Open in new tab'. Step3. Navigate to another page. For example, /#/operations/key-clear. Step4. Logout. Window is still open. Change-Id: Ife79ebca41eb4d588c0b8f4fae06135420eda155 Signed-off-by: Konstantin Maskov <sulwirld@gmail.com>
-rw-r--r--src/components/AppHeader/AppHeader.vue5
-rw-r--r--src/eventBus.js5
-rw-r--r--src/main.js2
-rw-r--r--src/views/Operations/Kvm/KvmConsole.vue20
4 files changed, 18 insertions, 14 deletions
diff --git a/src/components/AppHeader/AppHeader.vue b/src/components/AppHeader/AppHeader.vue
index a1984953..859a47f7 100644
--- a/src/components/AppHeader/AppHeader.vue
+++ b/src/components/AppHeader/AppHeader.vue
@@ -115,6 +115,7 @@ import IconMenu from '@carbon/icons-vue/es/menu/20';
import IconRenew from '@carbon/icons-vue/es/renew/20';
import StatusIcon from '@/components/Global/StatusIcon';
import LoadingBar from '@/components/Global/LoadingBar';
+import { mapState } from 'vuex';
export default {
name: 'AppHeader',
@@ -140,6 +141,7 @@ export default {
};
},
computed: {
+ ...mapState('authentication', ['consoleWindow']),
isNavTagPresent() {
return this.assetTag || this.modelType || this.serialNumber;
},
@@ -194,6 +196,9 @@ export default {
},
},
watch: {
+ consoleWindow() {
+ if (this.consoleWindow === false) this.$eventBus.$consoleWindow.close();
+ },
isAuthorized(value) {
if (value === false) {
this.errorToast(this.$t('global.toast.unAuthDescription'), {
diff --git a/src/eventBus.js b/src/eventBus.js
new file mode 100644
index 00000000..c31c98a5
--- /dev/null
+++ b/src/eventBus.js
@@ -0,0 +1,5 @@
+import Vue from 'vue';
+
+const eventBus = new Vue();
+
+export default eventBus;
diff --git a/src/main.js b/src/main.js
index 0aae716f..43d09b8c 100644
--- a/src/main.js
+++ b/src/main.js
@@ -6,6 +6,7 @@ import router from './router';
//Exact match alias set to support
//dotenv customizations.
import store from './store';
+import eventBus from './eventBus';
import {
AlertPlugin,
@@ -135,3 +136,4 @@ new Vue({
i18n,
render: (h) => h(App),
}).$mount('#app');
+Vue.prototype.$eventBus = eventBus;
diff --git a/src/views/Operations/Kvm/KvmConsole.vue b/src/views/Operations/Kvm/KvmConsole.vue
index 212514d1..8483c4f3 100644
--- a/src/views/Operations/Kvm/KvmConsole.vue
+++ b/src/views/Operations/Kvm/KvmConsole.vue
@@ -46,7 +46,6 @@ import StatusIcon from '@/components/Global/StatusIcon';
import IconLaunch from '@carbon/icons-vue/es/launch/20';
import IconArrowDown from '@carbon/icons-vue/es/arrow--down/16';
import { throttle } from 'lodash';
-import { mapState } from 'vuex';
const Connecting = 0;
const Connected = 1;
@@ -63,7 +62,6 @@ export default {
},
data() {
return {
- isConsoleWindow: null,
rfb: null,
isConnected: false,
terminalClass: this.isFullWindow ? 'full-window' : '',
@@ -74,7 +72,6 @@ export default {
};
},
computed: {
- ...mapState('authentication', ['consoleWindow']),
serverStatusIcon() {
if (this.status === Connected) {
return 'success';
@@ -92,11 +89,6 @@ export default {
return this.$t('pageKvm.connecting');
},
},
- watch: {
- consoleWindow() {
- if (this.consoleWindow == false) this.isConsoleWindow.close();
- },
- },
created() {
this.$store.dispatch('global/getSystemInfo');
},
@@ -154,24 +146,24 @@ export default {
}
},
openConsoleWindow() {
- // If isConsoleWindow is not null
+ // If consoleWindow is not null
// Check the newly opened window is closed or not
- if (this.isConsoleWindow) {
+ if (this.$eventBus.$consoleWindow) {
// If window is not closed set focus to new window
// If window is closed, do open new window
- if (!this.isConsoleWindow.closed) {
- this.isConsoleWindow.focus();
+ if (!this.$eventBus.$consoleWindow.closed) {
+ this.$eventBus.$consoleWindow.focus();
return;
} else {
this.openNewWindow();
}
} else {
- // If isConsoleWindow is null, open new window
+ // If consoleWindow is null, open new window
this.openNewWindow();
}
},
openNewWindow() {
- this.isConsoleWindow = window.open(
+ this.$eventBus.$consoleWindow = window.open(
'#/console/kvm',
'kvmConsoleWindow',
'directories=no,titlebar=no,toolbar=no,location=no,status=no,menubar=no,scrollbars=no,resizable=yes,width=700,height=550'