import _ from 'lodash'
import { mapGetters } from 'vuex'
import {
getProjectTableColumn,
getRegionTableColumn,
getBrandTableColumn,
getStatusTableColumn,
getCopyWithContentTableColumn,
// getNameDescriptionTableColumn,
getAccountTableColumn,
getPublicScopeTableColumn,
getTagTableColumn,
getTimeTableColumn,
} from '@/utils/common/tableColumn'
import i18n from '@/locales'
export default {
created () {
this.columns = [
{
field: 'name',
title: i18n.t('network.text_21'),
sortable: true,
showOverflow: 'ellipsis',
minWidth: 100,
slots: {
default: ({ row }, h) => {
const ret = []
ret.push(h('list-body-cell-wrap', {
props: {
copy: true,
edit: this.isPower(row),
row,
hideField: true,
onManager: this.onManager,
},
scopedSlots: {
default: () => { return ( this.handleOpenSidepage(row) }>{ row.name }) },
},
}))
ret.push(h('list-body-cell-wrap', {
props: {
edit: this.isPower(row),
field: 'description',
row,
onManager: this.onManager,
},
}))
return ret
},
},
hidden: () => this.$isScopedPolicyMenuHidden('network_hidden_columns.name'),
},
getStatusTableColumn({
statusModule: 'network',
vm: this,
hidden: () => this.$isScopedPolicyMenuHidden('network_hidden_columns.status'),
}),
getTagTableColumn({
onManager: this.onManager,
resource: 'networks',
columns: () => this.columns,
editCheck: (row) => (row.provider || '').toLowerCase() !== 'bingocloud',
hidden: () => this.$isScopedPolicyMenuHidden('network_hidden_columns.metadata'),
}),
{
field: 'server_type',
title: i18n.t('network.text_249'),
width: 100,
formatter: ({ cellValue }) => {
return this.$t('networkServerType')[cellValue] || i18n.t('network.text_507')
},
hidden: () => this.$isScopedPolicyMenuHidden('network_hidden_columns.server_type'),
},
getStatusTableColumn({
field: 'is_auto_alloc',
statusModule: 'networIsAutoAlloc',
title: i18n.t('common_498'),
minWidth: 140,
hidden: () => this.$isScopedPolicyMenuHidden('network_hidden_columns.is_auto_alloc'),
}),
{
field: 'ip',
title: i18n.t('network.text_213'),
width: 180,
slots: {
default: ({ row }) => {
if (!row.guest_ip_start || !row.guest_ip_end) {
return '-'
}
return [
{ this.$t('network.ip.start', [row.guest_ip_start, row.guest_ip_mask])}
,
{ this.$t('network.ip.end', [row.guest_ip_end, row.guest_ip_mask])}
,
]
},
},
formatter: ({ row }) => {
if (!row.guest_ip_start || !row.guest_ip_end) {
return '-'
}
return `${this.$t('network.ip.start', [row.guest_ip_start, row.guest_ip_mask])},${this.$t('network.ip.end', [row.guest_ip_end, row.guest_ip_mask])}`
},
hidden: () => this.$isScopedPolicyMenuHidden('network_hidden_columns.ip'),
},
{
field: 'ip6',
title: i18n.t('network.ipv6.address'),
width: 180,
slots: {
default: ({ row }) => {
if (!row.guest_ip6_start || !row.guest_ip6_end) {
return '-'
}
return [
{ this.$t('network.ip.start', [row.guest_ip6_start, row.guest_ip6_mask])}
,
{ this.$t('network.ip.end', [row.guest_ip6_end, row.guest_ip6_mask])}
,
]
},
},
formatter: ({ row }) => {
if (!row.guest_ip6_start || !row.guest_ip6_end) {
return '-'
}
return `${this.$t('network.ip.start', [row.guest_ip6_start, row.guest_ip6_mask])},${this.$t('network.ip.end', [row.guest_ip6_end, row.guest_ip6_mask])}`
},
hidden: () => this.$isScopedPolicyMenuHidden('network_hidden_columns.ip6'),
},
{
field: 'ports',
title: i18n.t('network.text_622'),
minWidth: 100,
slots: {
default: ({ row }) => {
if (this.isPreLoad && !row.ports) return []
return [
{ this.$t('network.text_727', [row.ports])}
,
{ this.$t('network.text_728', [(row.ports_used <= 0 ? 0 : row.ports_used) + (row.ports6_used <= 0 ? 0 : row.ports6_used)])}
,
]
},
},
formatter: ({ row }) => {
return `${this.$t('network.text_727', [row.ports])},${this.$t('network.text_728', [row.ports_used + row.ports6_used])}`
},
hidden: () => this.$isScopedPolicyMenuHidden('network_hidden_columns.ports'),
},
getCopyWithContentTableColumn({
field: 'vpc',
title: 'VPC',
hidden: () => this.$store.getters.isProjectMode || this.hiddenColumns.includes('vpc') || this.$isScopedPolicyMenuHidden('network_hidden_columns.vpc'),
}),
getCopyWithContentTableColumn({
field: 'wire',
title: i18n.t('network.text_571'),
hidden: () => this.hiddenColumns.includes('wire') || this.$isScopedPolicyMenuHidden('network_hidden_columns.wire'),
}),
{
field: 'vlan_id',
title: 'VLAN',
width: 60,
hidden: () => this.$isScopedPolicyMenuHidden('network_hidden_columns.vlan_id'),
},
{
field: 'schedtags',
title: i18n.t('network.text_630'),
width: 120,
slots: {
default: ({ row }) => {
const tags = _.sortBy(row.schedtags, ['default', 'name'])
if (!tags.length) {
return [
{this.$t('network.text_729')}
,
]
}
const list = tags.map(tag => {tag.name})
return [
{...list}
]
},
},
formatter: ({ row }) => {
const tags = _.sortBy(row.schedtags, ['default', 'name'])
if (tags.length > 0) {
return tags.map(tag => tag.name).join(',')
}
return this.$t('network.text_729')
},
hidden: () => this.$isScopedPolicyMenuHidden('network_hidden_columns.schedtag'),
},
getBrandTableColumn({
hidden: () => this.hiddenColumns.includes('brand') || this.$isScopedPolicyMenuHidden('network_hidden_columns.brand'),
}),
getAccountTableColumn({
hidden: () => this.hiddenColumns.includes('account') || this.$isScopedPolicyMenuHidden('network_hidden_columns.account'),
}),
getPublicScopeTableColumn({
vm: this,
resource: 'networks',
hidden: () => this.$isScopedPolicyMenuHidden('network_hidden_columns.public_scope'),
}),
getProjectTableColumn({
hidden: () => this.hiddenColumns.includes('tenant') || this.$isScopedPolicyMenuHidden('network_hidden_columns.tenant'),
}),
getRegionTableColumn({
hidden: () => this.hiddenColumns.includes('region') || this.$isScopedPolicyMenuHidden('network_hidden_columns.region'),
vm: this,
}),
getTimeTableColumn({
hidden: () => this.$isScopedPolicyMenuHidden('network_hidden_columns.created_at'),
}),
]
},
computed: {
...mapGetters(['isAdminMode', 'isDomainMode', 'userInfo']),
},
methods: {
isPower (obj) {
if (this.isAdminMode) return true
if (this.isDomainMode) return obj.domain_id === this.userInfo.projectDomainId
return obj.tenant_id === this.userInfo.projectId
},
},
}