import PasswordFetcher from '@Compute/sections/PasswordFetcher'
import { sizestr } from '@/utils/utils'
import { getProjectTableColumn, getRegionTableColumn, getStatusTableColumn, getNameDescriptionTableColumn, getBrandTableColumn, getTagTableColumn, getBillingTableColumn, getAccountTableColumn, getTimeTableColumn } from '@/utils/common/tableColumn'
import i18n from '@/locales'
import { ENGINE_ARCH } from '../constants/index.js'
export default {
created () {
this.columns = [
getNameDescriptionTableColumn({
onManager: this.onManager,
hideField: true,
addLock: true,
addBackup: true,
slotCallback: row => {
return (
this.handleOpenSidepage(row) }>{ row.name || row.external_id }
)
},
hidden: () => {
return this.$isScopedPolicyMenuHidden('redis_hidden_columns.name')
},
}),
getStatusTableColumn({
statusModule: 'redis',
vm: this,
hidden: () => {
return this.$isScopedPolicyMenuHidden('redis_hidden_columns.status')
},
}),
getTagTableColumn({
onManager: this.onManager,
resource: 'redis_elasticcaches',
columns: () => this.columns,
hidden: () => {
return this.$isScopedPolicyMenuHidden('redis_hidden_columns.metadata')
},
}),
{
field: 'arch_type',
title: i18n.t('db.text_119'),
width: 100,
formatter: ({ row }) => {
const type = row.local_category || row.arch_type
return ENGINE_ARCH[type] || type
},
hidden: () => {
return this.$isScopedPolicyMenuHidden('redis_hidden_columns.arch_type')
},
},
{
field: 'instance_type',
title: i18n.t('db.text_109'),
width: 50,
formatter: ({ row }) => {
return sizestr(row.capacity_mb, 'M', 1024)
},
hidden: () => {
return this.$isScopedPolicyMenuHidden('redis_hidden_columns.instance_type')
},
},
{
field: 'engine',
title: i18n.t('db.text_112'),
width: 100,
formatter: ({ row }) => {
return `${row.engine} ${row.engine_version}`
},
hidden: () => {
return this.$isScopedPolicyMenuHidden('redis_hidden_columns.engine')
},
},
{
field: 'password',
title: i18n.t('db.text_195'),
width: 50,
slots: {
default: ({ row }) => {
return []
},
},
hidden: () => {
return this.$isScopedPolicyMenuHidden('redis_hidden_columns.password')
},
},
{
field: 'private_dns',
title: i18n.t('db.text_152'),
minWidth: 200,
showOverflow: 'ellipsis',
slots: {
default: ({ row }) => {
const pri = row.private_dns || row.private_ip_addr
const pub = row.public_dns || row.public_ip_addr
if (!pri && !pub) {
return '-'
}
const connection = (title, value) => {
if (!value) {
return null
}
return [
{title} : { value || '-' }
,
]
}
return [
connection(i18n.t('db.text_153'), pri),
connection(i18n.t('db.text_154'), pub),
]
},
},
formatter: ({ row }) => {
const pri = row.private_dns || row.private_ip_addr
const pub = row.public_dns || row.public_ip_addr
if (!pri && !pub) {
return '-'
}
return `${i18n.t('db.text_153') + ':' + pri}, ${i18n.t('db.text_154') + ':' + pub}`
},
hidden: () => {
return this.$isScopedPolicyMenuHidden('redis_hidden_columns.private_dns')
},
},
{
field: 'private_connect_port',
title: i18n.t('db.text_303'),
width: 100,
slots: {
default: ({ row }) => {
if (!row.private_connect_port && !row.public_connect_port) {
return '-'
}
const ports = []
if (row.private_connect_port && (row.private_dns || row.private_ip_addr)) {
ports.push(
{ this.$t('common.intranet_1var', [row.private_connect_port]) }
)
}
if (row.public_connect_port && (row.public_dns || row.public_ip_addr)) {
ports.push({ this.$t('common.extranet_1var', [row.public_connect_port]) }
)
}
return ports
},
},
formatter: ({ row }) => {
if (!row.private_connect_port && !row.public_connect_port) {
return '-'
}
const ports = []
if (row.private_connect_port && (row.private_dns || row.private_ip_addr)) {
ports.push(this.$t('common.intranet_1var', [row.private_connect_port]))
}
if (row.public_connect_port && (row.public_dns || row.public_ip_addr)) {
ports.push(this.$t('common.extranet_1var', [row.public_connect_port]))
}
return ports.join(',')
},
hidden: () => {
return this.$isScopedPolicyMenuHidden('redis_hidden_columns.private_connect_port')
},
},
{
field: 'secgroups',
title: i18n.t('res.secgroup'),
minWidth: 80,
showOverflow: 'ellipsis',
slots: {
default: ({ row }) => {
return row.secgroups?.map(item => item.name).join(',')
},
},
formatter: ({ row }) => {
return row.secgroups?.map(item => item.name).join(',')
},
hidden: () => {
return this.$isScopedPolicyMenuHidden('slb_hidden_columns.secgroups')
},
},
getBillingTableColumn({
vm: this,
hidden: () => {
return this.$isScopedPolicyMenuHidden('redis_hidden_columns.billing_type')
},
}),
getBrandTableColumn({
hidden: () => {
return this.$isScopedPolicyMenuHidden('redis_hidden_columns.brand')
},
}),
getAccountTableColumn({
hidden: () => {
return this.$isScopedPolicyMenuHidden('redis_hidden_columns.account')
},
}),
getProjectTableColumn({
hidden: () => {
return this.$isScopedPolicyMenuHidden('redis_hidden_columns.tenant')
},
}),
getRegionTableColumn({
hidden: () => {
return this.$isScopedPolicyMenuHidden('redis_hidden_columns.region')
},
}),
getTimeTableColumn({
hidden: () => {
return this.$isScopedPolicyMenuHidden('redis_hidden_columns.created_at')
},
}),
]
},
}