From 1b02a732c5d673c234c362df6743b43b21c6dd95 Mon Sep 17 00:00:00 2001 From: Rohit Yadav Date: Sun, 21 Jun 2020 11:36:35 +0530 Subject: [PATCH] dashboard: loading and assorted fixes Signed-off-by: Rohit Yadav --- ui/src/components/header/ProjectMenu.vue | 1 + ui/src/components/view/ListView.vue | 5 +++ ui/src/config/section/compute.js | 37 +++++++++++++------ ui/src/config/section/network.js | 4 +- ui/src/config/section/storage.js | 19 +++++++++- ui/src/permission.js | 4 +- ui/src/store/modules/user.js | 4 -- ui/src/views/AutogenView.vue | 7 +++- ui/src/views/dashboard/CapacityDashboard.vue | 5 ++- ui/src/views/dashboard/UsageDashboard.vue | 34 ++++++++++------- .../views/dashboard/UsageDashboardChart.vue | 18 ++++++--- 11 files changed, 97 insertions(+), 41 deletions(-) diff --git a/ui/src/components/header/ProjectMenu.vue b/ui/src/components/header/ProjectMenu.vue index 25c6c23506e..0d1f8dbdd0b 100644 --- a/ui/src/components/header/ProjectMenu.vue +++ b/ui/src/components/header/ProjectMenu.vue @@ -20,6 +20,7 @@ {{ text }} {{ text }} + + {{ text }} + {{ text }} + + {{ text }} diff --git a/ui/src/config/section/compute.js b/ui/src/config/section/compute.js index f948d340ba0..4b06a42996a 100644 --- a/ui/src/config/section/compute.js +++ b/ui/src/config/section/compute.js @@ -16,6 +16,7 @@ // under the License. import kubernetes from '@/assets/icons/kubernetes.svg?inline' +import store from '@/store' export default { name: 'compute', @@ -30,16 +31,30 @@ export default { permission: ['listVirtualMachinesMetrics'], resourceType: 'UserVm', filters: ['self', 'running', 'stopped'], - columns: [ - 'name', 'state', 'instancename', 'ipaddress', 'cpunumber', 'cpuused', 'cputotal', - { - memoryused: (record) => { - return record.memorykbs && record.memoryintfreekbs ? parseFloat(100.0 * (record.memorykbs - record.memoryintfreekbs) / record.memorykbs).toFixed(2) + '%' : '0.0%' - } - }, - 'memorytotal', 'networkread', 'networkwrite', 'diskkbsread', 'diskkbswrite', 'diskiopstotal', - 'account', 'zonename' - ], + columns: () => { + const fields = [ + 'name', 'state', 'ipaddress', 'cpunumber', 'cpuused', 'cputotal', + { + memoryused: (record) => { + return record.memorykbs && record.memoryintfreekbs ? parseFloat(100.0 * (record.memorykbs - record.memoryintfreekbs) / record.memorykbs).toFixed(2) + '%' : '0.0%' + } + }, + 'memorytotal', 'networkread', 'networkwrite', 'diskkbsread', 'diskkbswrite', 'diskiopstotal' + ] + + if (store.getters.userInfo.roletype === 'Admin') { + fields.splice(2, 0, 'instancename') + fields.push('account') + fields.push('hostname') + fields.push('zonename') + } else if (store.getters.userInfo.roletype === 'DomainAdmin') { + fields.push('account') + fields.push('zonename') + } else { + fields.push('zonename') + } + return fields + }, related: [{ name: 'volume', title: 'label.volumes', @@ -105,7 +120,7 @@ export default { }, { api: 'stopVirtualMachine', - icon: 'stop', + icon: 'poweroff', label: 'label.action.stop.instance', message: 'message.action.stop.instance', docHelp: 'adminguide/virtual_machines.html#stopping-and-starting-vms', diff --git a/ui/src/config/section/network.js b/ui/src/config/section/network.js index f989bcdc0c6..38999d12e04 100644 --- a/ui/src/config/section/network.js +++ b/ui/src/config/section/network.js @@ -25,7 +25,7 @@ export default { { name: 'guestnetwork', title: 'label.guest.networks', - icon: 'gateway', + icon: 'apartment', permission: ['listNetworks'], resourceType: 'Network', columns: ['name', 'state', 'type', 'cidr', 'ip6cidr', 'broadcasturi', 'account', 'zonename'], @@ -267,7 +267,7 @@ export default { { name: 'privategw', title: 'label.private.gateway', - icon: 'branches', + icon: 'gateway', hidden: true, permission: ['listPrivateGateways'], columns: ['ipaddress', 'state', 'gateway', 'netmask', 'account', 'domain'], diff --git a/ui/src/config/section/storage.js b/ui/src/config/section/storage.js index eab50c7371a..775097c6cb4 100644 --- a/ui/src/config/section/storage.js +++ b/ui/src/config/section/storage.js @@ -15,6 +15,8 @@ // specific language governing permissions and limitations // under the License. +import store from '@/store' + export default { name: 'storage', title: 'label.storage', @@ -26,7 +28,22 @@ export default { icon: 'hdd', permission: ['listVolumesMetrics'], resourceType: 'Volume', - columns: ['name', 'state', 'type', 'vmname', 'size', 'physicalsize', 'utilization', 'diskkbsread', 'diskkbswrite', 'diskiopstotal', 'storage', 'account', 'zonename'], + columns: () => { + const fields = ['name', 'state', 'type', 'sizegb', 'vmname', 'diskkbsread', 'diskkbswrite', 'diskiopstotal'] + + if (store.getters.userInfo.roletype === 'Admin') { + fields.push('account') + fields.push('storage') + fields.push('zonename') + } else if (store.getters.userInfo.roletype === 'DomainAdmin') { + fields.push('account') + fields.push('zonename') + } else { + fields.push('zonename') + } + + return fields + }, details: ['name', 'id', 'type', 'storagetype', 'diskofferingdisplaytext', 'deviceid', 'sizegb', 'physicalsize', 'provisioningtype', 'utilization', 'diskkbsread', 'diskkbswrite', 'diskioread', 'diskiowrite', 'diskiopstotal', 'miniops', 'maxiops', 'path'], related: [{ name: 'snapshot', diff --git a/ui/src/permission.js b/ui/src/permission.js index f73f09d3c8f..4d37e0dd5b4 100644 --- a/ui/src/permission.js +++ b/ui/src/permission.js @@ -69,7 +69,7 @@ router.beforeEach((to, from, next) => { description: 'Exception caught while discoverying features' }) store.dispatch('Logout').then(() => { - next({ path: '/user/login', query: { redirect: to.fullPath } }) + next({ path: '/user/login' }) }) }) } else { @@ -80,7 +80,7 @@ router.beforeEach((to, from, next) => { if (whiteList.includes(to.name)) { next() } else { - next({ path: '/user/login', query: { redirect: to.fullPath } }) + next({ path: '/user/login' }) NProgress.done() } } diff --git a/ui/src/store/modules/user.js b/ui/src/store/modules/user.js index 10c56dba33e..3a0b0549f03 100644 --- a/ui/src/store/modules/user.js +++ b/ui/src/store/modules/user.js @@ -128,10 +128,6 @@ const user = { // This will show the dashboard and some common navigation sections // to most users/roles, while we complete API autodiscovery const apis = {} - apis.listVirtualMachinesMetrics = {} - apis.listVolumesMetrics = {} - apis.listNetworks = {} - apis.listTemplates = {} apis.listUsers = {} apis.listAccounts = {} commit('SET_APIS', apis) diff --git a/ui/src/views/AutogenView.vue b/ui/src/views/AutogenView.vue index ab5bd9cbb14..712967ffac1 100644 --- a/ui/src/views/AutogenView.vue +++ b/ui/src/views/AutogenView.vue @@ -415,7 +415,12 @@ export default { if (this.$route && this.$route.meta && this.$route.meta.permission) { this.apiName = this.$route.meta.permission[0] if (this.$route.meta.columns) { - this.columnKeys = this.$route.meta.columns + const columns = this.$route.meta.columns + if (columns && typeof columns === 'function') { + this.columnKeys = columns() + } else { + this.columnKeys = columns + } } if (this.$route.meta.actions) { diff --git a/ui/src/views/dashboard/CapacityDashboard.vue b/ui/src/views/dashboard/CapacityDashboard.vue index 55b444bc247..01db2710eba 100644 --- a/ui/src/views/dashboard/CapacityDashboard.vue +++ b/ui/src/views/dashboard/CapacityDashboard.vue @@ -24,6 +24,7 @@ showSearch optionFilterProp="children" :defaultValue="zoneSelected.name" + :placeholder="$t('label.select.a.zone')" :value="zoneSelected.name" @change="changeZone"> @@ -72,7 +73,7 @@ - +