UI: Project column in Default View (#8287)

The Default View has a projects toggle button that allows users to see which resources belong to projects, but there is nothing to indicate which project they belong to.

For this reason, a project column was added if the projects button is enabled, indicating the name of the project to which the resource belongs.

---------

Co-authored-by: Henrique Sato <henrique.sato@scclouds.com.br>
This commit is contained in:
sato03 2023-12-15 09:12:24 -03:00 committed by GitHub
parent dda672503f
commit 127fd9d2f0
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
7 changed files with 108 additions and 12 deletions

View File

@ -330,6 +330,10 @@
<router-link v-if="record.roleid && $router.resolve('/role/' + record.roleid).matched[0].redirect !== '/exception/404'" :to="{ path: '/role/' + record.roleid }">{{ text }}</router-link> <router-link v-if="record.roleid && $router.resolve('/role/' + record.roleid).matched[0].redirect !== '/exception/404'" :to="{ path: '/role/' + record.roleid }">{{ text }}</router-link>
<span v-else>{{ text }}</span> <span v-else>{{ text }}</span>
</template> </template>
<template v-if="column.key === 'project'">
<router-link v-if="$router.resolve('/project/' + record.projectid).matched[0].redirect !== '/exception/404'" :to="{ path: '/project/' + record.projectid }">{{ text }}</router-link>
<span v-else>{{ text }}</span>
</template>
<template v-if="column.key === 'templateversion'"> <template v-if="column.key === 'templateversion'">
<span> {{ record.version }} </span> <span> {{ record.version }} </span>
</template> </template>

View File

@ -61,16 +61,18 @@ export default {
if (store.getters.metrics) { if (store.getters.metrics) {
fields.push(...metricsFields) fields.push(...metricsFields)
} }
if (store.getters.userInfo.roletype === 'Admin') { if (store.getters.userInfo.roletype === 'Admin') {
fields.splice(2, 0, 'instancename') fields.splice(2, 0, 'instancename')
fields.push('account')
fields.push('hostname') fields.push('hostname')
fields.push('account')
} else if (store.getters.userInfo.roletype === 'DomainAdmin') { } else if (store.getters.userInfo.roletype === 'DomainAdmin') {
fields.push('account') fields.push('account')
} else { } else {
fields.push('serviceofferingname') fields.push('serviceofferingname')
} }
if (store.getters.listAllProjects) {
fields.push('project')
}
fields.push('zonename') fields.push('zonename')
return fields return fields
}, },
@ -464,8 +466,13 @@ export default {
columns: () => { columns: () => {
const fields = ['displayname', 'state', 'name', 'type', 'current', 'parentName', 'created'] const fields = ['displayname', 'state', 'name', 'type', 'current', 'parentName', 'created']
if (['Admin', 'DomainAdmin'].includes(store.getters.userInfo.roletype)) { if (['Admin', 'DomainAdmin'].includes(store.getters.userInfo.roletype)) {
fields.push('domain')
fields.push('account') fields.push('account')
if (store.getters.listAllProjects) {
fields.push('project')
}
fields.push('domain')
} else if (store.getters.listAllProjects) {
fields.push('project')
} }
return fields return fields
}, },
@ -536,6 +543,9 @@ export default {
if (['Admin', 'DomainAdmin'].includes(store.userInfo.roletype)) { if (['Admin', 'DomainAdmin'].includes(store.userInfo.roletype)) {
fields.push('account') fields.push('account')
} }
if (store.listAllProjects) {
fields.push('project')
}
if (store.apis.scaleKubernetesCluster.params.filter(x => x.name === 'autoscalingenabled').length > 0) { if (store.apis.scaleKubernetesCluster.params.filter(x => x.name === 'autoscalingenabled').length > 0) {
fields.splice(2, 0, 'autoscalingenabled') fields.splice(2, 0, 'autoscalingenabled')
} }
@ -633,7 +643,13 @@ export default {
docHelp: 'adminguide/autoscale_without_netscaler.html', docHelp: 'adminguide/autoscale_without_netscaler.html',
resourceType: 'AutoScaleVmGroup', resourceType: 'AutoScaleVmGroup',
permission: ['listAutoScaleVmGroups'], permission: ['listAutoScaleVmGroups'],
columns: ['name', 'state', 'associatednetworkname', 'publicip', 'publicport', 'privateport', 'minmembers', 'maxmembers', 'availablevirtualmachinecount', 'account'], columns: (store) => {
var fields = ['name', 'state', 'associatednetworkname', 'publicip', 'publicport', 'privateport', 'minmembers', 'maxmembers', 'availablevirtualmachinecount', 'account']
if (store.listAllProjects) {
fields.push('project')
}
return fields
},
details: ['name', 'id', 'account', 'domain', 'associatednetworkname', 'associatednetworkid', 'lbruleid', 'lbprovider', 'publicip', 'publicipid', 'publicport', 'privateport', 'minmembers', 'maxmembers', 'availablevirtualmachinecount', 'interval', 'state', 'created'], details: ['name', 'id', 'account', 'domain', 'associatednetworkname', 'associatednetworkid', 'lbruleid', 'lbprovider', 'publicip', 'publicipid', 'publicport', 'privateport', 'minmembers', 'maxmembers', 'availablevirtualmachinecount', 'interval', 'state', 'created'],
related: [{ related: [{
name: 'vm', name: 'vm',
@ -737,7 +753,15 @@ export default {
docHelp: 'adminguide/virtual_machines.html#changing-the-vm-name-os-or-group', docHelp: 'adminguide/virtual_machines.html#changing-the-vm-name-os-or-group',
resourceType: 'VMInstanceGroup', resourceType: 'VMInstanceGroup',
permission: ['listInstanceGroups'], permission: ['listInstanceGroups'],
columns: ['name', 'account', 'domain'],
columns: (store) => {
var fields = ['name', 'account']
if (store.listAllProjects) {
fields.push('project')
}
fields.push('domain')
return fields
},
details: ['name', 'id', 'account', 'domain', 'created'], details: ['name', 'id', 'account', 'domain', 'created'],
related: [{ related: [{
name: 'vm', name: 'vm',
@ -791,7 +815,12 @@ export default {
var fields = ['name', 'fingerprint'] var fields = ['name', 'fingerprint']
if (['Admin', 'DomainAdmin'].includes(store.getters.userInfo.roletype)) { if (['Admin', 'DomainAdmin'].includes(store.getters.userInfo.roletype)) {
fields.push('account') fields.push('account')
if (store.getters.listAllProjects) {
fields.push('project')
}
fields.push('domain') fields.push('domain')
} else if (store.getters.listAllProjects) {
fields.push('project')
} }
return fields return fields
}, },
@ -941,7 +970,12 @@ export default {
var fields = ['name', 'type', 'description'] var fields = ['name', 'type', 'description']
if (['Admin', 'DomainAdmin'].includes(store.getters.userInfo.roletype)) { if (['Admin', 'DomainAdmin'].includes(store.getters.userInfo.roletype)) {
fields.push('account') fields.push('account')
if (store.getters.listAllProjects) {
fields.push('project')
}
fields.push('domain') fields.push('domain')
} else if (store.getters.listAllProjects) {
fields.push('project')
} }
return fields return fields
}, },

View File

@ -15,13 +15,22 @@
// specific language governing permissions and limitations // specific language governing permissions and limitations
// under the License. // under the License.
import store from '@/store'
export default { export default {
name: 'event', name: 'event',
title: 'label.events', title: 'label.events',
icon: 'ScheduleOutlined', icon: 'ScheduleOutlined',
docHelp: 'adminguide/events.html', docHelp: 'adminguide/events.html',
permission: ['listEvents'], permission: ['listEvents'],
columns: ['level', 'type', 'state', 'description', 'resource', 'username', 'account', 'domain', 'created'], columns: () => {
var fields = ['level', 'type', 'state', 'description', 'resource', 'username', 'account']
if (store.getters.listAllProjects) {
fields.push('project')
}
fields.push(...['domain', 'created'])
return fields
},
details: ['username', 'id', 'description', 'resourcetype', 'resourceid', 'state', 'level', 'type', 'account', 'domain', 'created'], details: ['username', 'id', 'description', 'resourcetype', 'resourceid', 'state', 'level', 'type', 'account', 'domain', 'created'],
searchFilters: ['level', 'domainid', 'account', 'keyword', 'resourcetype'], searchFilters: ['level', 'domainid', 'account', 'keyword', 'resourcetype'],
related: [{ related: [{

View File

@ -47,6 +47,9 @@ export default {
fields.push('size') fields.push('size')
fields.push('account') fields.push('account')
} }
if (store.getters.listAllProjects) {
fields.push('project')
}
if (['Admin'].includes(store.getters.userInfo.roletype)) { if (['Admin'].includes(store.getters.userInfo.roletype)) {
fields.push('templatetype') fields.push('templatetype')
fields.push('order') fields.push('order')
@ -220,6 +223,9 @@ export default {
fields.push('size') fields.push('size')
fields.push('account') fields.push('account')
} }
if (store.getters.listAllProjects) {
fields.push('project')
}
if (['Admin'].includes(store.getters.userInfo.roletype)) { if (['Admin'].includes(store.getters.userInfo.roletype)) {
fields.push('order') fields.push('order')
} }

View File

@ -34,10 +34,16 @@ export default {
permission: ['listNetworks'], permission: ['listNetworks'],
resourceType: 'Network', resourceType: 'Network',
columns: () => { columns: () => {
var fields = ['name', 'state', 'type', 'vpcname', 'cidr', 'ip6cidr', 'broadcasturi', 'domainpath', 'account', 'zonename'] var fields = ['name', 'state', 'type', 'vpcname', 'cidr', 'ip6cidr', 'broadcasturi', 'domainpath']
if (!isAdmin()) { if (!isAdmin()) {
fields = fields.filter(function (e) { return e !== 'broadcasturi' }) fields = fields.filter(function (e) { return e !== 'broadcasturi' })
} }
if (store.getters.listAllProjects) {
fields.push('project')
} else {
fields.push('account')
}
fields.push('zonename')
return fields return fields
}, },
details: () => { details: () => {
@ -197,7 +203,14 @@ export default {
docHelp: 'adminguide/networking_and_traffic.html#configuring-a-virtual-private-cloud', docHelp: 'adminguide/networking_and_traffic.html#configuring-a-virtual-private-cloud',
permission: ['listVPCs'], permission: ['listVPCs'],
resourceType: 'Vpc', resourceType: 'Vpc',
columns: ['name', 'state', 'displaytext', 'cidr', 'account', 'domain', 'zonename'], columns: () => {
var fields = ['name', 'state', 'displaytext', 'cidr', 'account']
if (store.getters.listAllProjects) {
fields.push('project')
}
fields.push(...['domain', 'zonename'])
return fields
},
details: ['name', 'id', 'displaytext', 'cidr', 'networkdomain', 'ip6routes', 'ispersistent', 'redundantvpcrouter', 'restartrequired', 'zonename', 'account', 'domain', 'dns1', 'dns2', 'ip6dns1', 'ip6dns2', 'publicmtu'], details: ['name', 'id', 'displaytext', 'cidr', 'networkdomain', 'ip6routes', 'ispersistent', 'redundantvpcrouter', 'restartrequired', 'zonename', 'account', 'domain', 'dns1', 'dns2', 'ip6dns1', 'ip6dns2', 'publicmtu'],
searchFilters: ['name', 'zoneid', 'domainid', 'account', 'tags'], searchFilters: ['name', 'zoneid', 'domainid', 'account', 'tags'],
related: [{ related: [{
@ -334,10 +347,16 @@ export default {
if (store.getters.userInfo.roletype === 'Admin') { if (store.getters.userInfo.roletype === 'Admin') {
fields.splice(2, 0, 'instancename') fields.splice(2, 0, 'instancename')
fields.push('account') fields.push('account')
if (store.getters.listAllProjects) {
fields.push('project')
}
fields.push('domain') fields.push('domain')
fields.push('hostname') fields.push('hostname')
} else if (store.getters.userInfo.roletype === 'DomainAdmin') { } else if (store.getters.userInfo.roletype === 'DomainAdmin') {
fields.push('account') fields.push('account')
if (store.getters.listAllProjects) {
fields.push('project')
}
} else { } else {
fields.push('serviceofferingname') fields.push('serviceofferingname')
} }
@ -730,7 +749,14 @@ export default {
docHelp: 'adminguide/networking_and_traffic.html#reserving-public-ip-addresses-and-vlans-for-accounts', docHelp: 'adminguide/networking_and_traffic.html#reserving-public-ip-addresses-and-vlans-for-accounts',
permission: ['listPublicIpAddresses'], permission: ['listPublicIpAddresses'],
resourceType: 'PublicIpAddress', resourceType: 'PublicIpAddress',
columns: ['ipaddress', 'state', 'associatednetworkname', 'vpcname', 'virtualmachinename', 'allocated', 'account', 'domain', 'zonename'], columns: () => {
var fields = ['ipaddress', 'state', 'associatednetworkname', 'vpcname', 'virtualmachinename', 'allocated', 'account']
if (store.getters.listAllProjects) {
fields.push('project')
}
fields.push(...['domain', 'zonename'])
return fields
},
details: ['ipaddress', 'id', 'associatednetworkname', 'virtualmachinename', 'networkid', 'issourcenat', 'isstaticnat', 'virtualmachinename', 'vmipaddress', 'vlan', 'allocated', 'account', 'domain', 'zonename'], details: ['ipaddress', 'id', 'associatednetworkname', 'virtualmachinename', 'networkid', 'issourcenat', 'isstaticnat', 'virtualmachinename', 'vmipaddress', 'vlan', 'allocated', 'account', 'domain', 'zonename'],
filters: ['allocated', 'reserved', 'free'], filters: ['allocated', 'reserved', 'free'],
component: shallowRef(() => import('@/views/network/PublicIpResource.vue')), component: shallowRef(() => import('@/views/network/PublicIpResource.vue')),
@ -1120,7 +1146,14 @@ export default {
title: 'label.vpncustomergatewayid', title: 'label.vpncustomergatewayid',
icon: 'lock-outlined', icon: 'lock-outlined',
permission: ['listVpnCustomerGateways'], permission: ['listVpnCustomerGateways'],
columns: ['name', 'gateway', 'cidrlist', 'ipsecpsk', 'account', 'domain'], columns: () => {
var fields = ['name', 'gateway', 'cidrlist', 'ipsecpsk', 'account']
if (store.getters.listAllProjects) {
fields.push('project')
}
fields.push('domain')
return fields
},
details: ['name', 'id', 'gateway', 'cidrlist', 'ipsecpsk', 'ikepolicy', 'ikelifetime', 'ikeversion', 'esppolicy', 'esplifetime', 'dpd', 'splitconnections', 'forceencap', 'account', 'domain'], details: ['name', 'id', 'gateway', 'cidrlist', 'ipsecpsk', 'ikepolicy', 'ikelifetime', 'ikeversion', 'esppolicy', 'esplifetime', 'dpd', 'splitconnections', 'forceencap', 'account', 'domain'],
searchFilters: ['keyword', 'domainid', 'account'], searchFilters: ['keyword', 'domainid', 'account'],
resourceType: 'VPNCustomerGateway', resourceType: 'VPNCustomerGateway',

View File

@ -49,13 +49,15 @@ export default {
if (store.getters.metrics) { if (store.getters.metrics) {
fields.push(...metricsFields) fields.push(...metricsFields)
} }
if (store.getters.userInfo.roletype === 'Admin') { if (store.getters.userInfo.roletype === 'Admin') {
fields.push('account')
fields.push('storage') fields.push('storage')
fields.push('account')
} else if (store.getters.userInfo.roletype === 'DomainAdmin') { } else if (store.getters.userInfo.roletype === 'DomainAdmin') {
fields.push('account') fields.push('account')
} }
if (store.getters.listAllProjects) {
fields.push('project')
}
fields.push('zonename') fields.push('zonename')
return fields return fields
@ -320,7 +322,12 @@ export default {
var fields = ['name', 'state', 'volumename', 'intervaltype', 'physicalsize', 'created'] var fields = ['name', 'state', 'volumename', 'intervaltype', 'physicalsize', 'created']
if (['Admin', 'DomainAdmin'].includes(store.getters.userInfo.roletype)) { if (['Admin', 'DomainAdmin'].includes(store.getters.userInfo.roletype)) {
fields.push('account') fields.push('account')
if (store.getters.listAllProjects) {
fields.push('project')
}
fields.push('domain') fields.push('domain')
} else if (store.getters.listAllProjects) {
fields.push('project')
} }
fields.push('zonename') fields.push('zonename')
return fields return fields

View File

@ -879,6 +879,9 @@ export default {
this.$store.getters.customColumns[this.$store.getters.userInfo.id][this.$route.path] = this.selectedColumns this.$store.getters.customColumns[this.$store.getters.userInfo.id][this.$route.path] = this.selectedColumns
} else { } else {
this.selectedColumns = this.$store.getters.customColumns[this.$store.getters.userInfo.id][this.$route.path] || this.selectedColumns this.selectedColumns = this.$store.getters.customColumns[this.$store.getters.userInfo.id][this.$route.path] || this.selectedColumns
if (this.$store.getters.listAllProjects && !this.projectView) {
this.selectedColumns.push('project')
}
this.updateSelectedColumns() this.updateSelectedColumns()
} }
} }