diff --git a/ui/src/components/view/DetailSettings.vue b/ui/src/components/view/DetailSettings.vue index bb3945ae977..1e9fc8ca899 100644 --- a/ui/src/components/view/DetailSettings.vue +++ b/ui/src/components/view/DetailSettings.vue @@ -47,6 +47,7 @@ :dataSource="detailOptions[newKey]" :placeholder="$t('label.value')" @change="e => onAddInputChange(e, 'newValue')" /> +

{{ $t(error) }}

{{ $t('label.add.setting') }} {{ $t('label.cancel') }} @@ -118,7 +119,8 @@ export default { newKey: '', newValue: '', loading: false, - resourceType: 'UserVm' + resourceType: 'UserVm', + error: false } }, watch: { @@ -217,6 +219,11 @@ export default { }) }, addDetail () { + if (this.newKey === '' || this.newValue === '') { + this.error = 'Must provide a valid key and value for setting' + return + } + this.error = false this.details.push({ name: this.newKey, value: this.newValue }) this.runApi() }, diff --git a/ui/src/config/section/image.js b/ui/src/config/section/image.js index 7703d78fb97..cdf83ca6b3a 100644 --- a/ui/src/config/section/image.js +++ b/ui/src/config/section/image.js @@ -42,7 +42,7 @@ export default { } return fields }, - details: ['name', 'id', 'displaytext', 'checksum', 'hypervisor', 'format', 'ostypename', 'size', 'isready', 'passwordenabled', 'directdownload', 'isextractable', 'isdynamicallyscalable', 'ispublic', 'isfeatured', 'crosszones', 'type', 'account', 'domain', 'created'], + details: ['name', 'id', 'displaytext', 'checksum', 'hypervisor', 'format', 'ostypename', 'size', 'isready', 'passwordenabled', 'sshkeyenabled', 'directdownload', 'isextractable', 'isdynamicallyscalable', 'ispublic', 'isfeatured', 'crosszones', 'type', 'account', 'domain', 'created'], searchFilters: ['name', 'zoneid', 'tags'], related: [{ name: 'vm', diff --git a/ui/src/views/AutogenView.vue b/ui/src/views/AutogenView.vue index c2815a6c50a..33d532b217a 100644 --- a/ui/src/views/AutogenView.vue +++ b/ui/src/views/AutogenView.vue @@ -500,7 +500,7 @@ export default { } if (['listTemplates', 'listIsos', 'listVirtualMachinesMetrics'].includes(this.apiName) && !this.dataView) { - if (['Admin'].includes(this.$store.getters.userInfo.roletype) || this.apiName === 'listVirtualMachinesMetrics') { + if (['Admin', 'DomainAdmin'].includes(this.$store.getters.userInfo.roletype) || this.apiName === 'listVirtualMachinesMetrics') { this.filters = ['all', ...this.filters] if (this.selectedFilter === '') { this.selectedFilter = 'all'