import * as R from 'ramda'
import { BLOCKED_RESOURCES_MAP } from '@Cloudenv/constants'
import i18n from '@/locales'
import { getCopyWithContentTableColumn } from '@/utils/common/tableColumn'
import store from '@/store'
export const getAccessUrlTableColumn = () => {
return {
field: 'access_url',
title: i18n.t('cloudenv.text_96'),
minWidth: 100,
showOverflow: 'ellipsis',
slots: {
default: ({ row }, h) => {
if (!row.access_url || row.brand === 'Huawei') return '-'
let txt
Object.keys(i18n.t('cloudAccountAccessType')).forEach(k => {
if (row.access_url.indexOf(k) > -1) {
let _k = k
if (row.brand !== 'Aliyun' && k === 'InternationalCloud') {
_k = 'Internation'
}
txt = i18n.t('cloudAccountAccessType')[_k]
}
})
return txt ||
[
{ row.access_url },
]
},
},
}
}
export const getBalanceTableColumn = () => {
return {
field: 'balance',
title: i18n.t('cloudenv.text_100'),
minWidth: 70,
showOverflow: 'ellipsis',
formatter: ({ row }) => {
if (R.isNil(row.balance)) {
return '-'
}
return row.balance
},
}
}
export const getLastSyncCostTableColumn = () => {
return {
field: 'last_sync_cost',
title: i18n.t('cloudenv.last_sync_cost'),
minWidth: 70,
showOverflow: 'ellipsis',
formatter: ({ row }) => {
if (R.isNil(row.last_sync_cost)) {
return '-'
}
return row.last_sync_cost
},
}
}
export const getGuestCountTableColumn = () => {
return {
field: 'guest_count',
title: i18n.t('cloudenv.text_99'),
width: 60,
}
}
export const getHostCountTableColumn = () => {
return {
field: 'host_count',
title: i18n.t('cloudenv.text_101'),
minWidth: 70,
}
}
export const getPublicScopeTableColumn = ({
vm,
} = {}) => {
return {
field: 'public_scope',
title: i18n.t('cloudenv.text_282'),
width: 110,
showOverflow: 'title',
hidden: () => {
return !store.getters.l3PermissionEnable && (store.getters.scopeResource && store.getters.scopeResource.domain.includes('cloudaccounts'))
},
slots: {
default: ({ row }, h) => {
if (!row.is_public) return i18n.t('cloudAccountShareDesc.none')
const { share_mode: shareMode, public_scope: publicScope, shared_domains: sharedDomains } = row
if (publicScope === 'domain') {
if (shareMode === 'provider_domain' && sharedDomains && sharedDomains.length > 0) {
return [
{
vm.createDialog('CommonDialog', {
hiddenCancel: true,
header: i18n.t('cloudenv.text_282'),
body: () => {
return (
)
},
})
}}>{ i18n.t('cloudAccountShareDesc.provider') },
]
}
if (shareMode === 'system' && sharedDomains && sharedDomains.length > 0) {
return [
{
vm.createDialog('CommonDialog', {
hiddenCancel: true,
header: i18n.t('cloudenv.text_282'),
body: () => {
return (
)
},
})
}}>{ i18n.t('cloudAccountShareDesc.account') },
]
}
}
if (publicScope === 'system') {
if (shareMode === 'provider_domain') {
return i18n.t('cloudAccountShareDesc.providerAll')
}
if (shareMode === 'system') {
return i18n.t('cloudAccountShareDesc.accountAll')
}
}
return '-'
},
},
}
}
export const getResourceMatchProjectTableColumn = ({ isEdit = false, editCallback } = {}) => {
return {
field: 'resource_tenant',
title: i18n.t('cloudenv.resource_map_type'),
minWidth: 120,
showOverflow: 'title',
slots: {
default: ({ row }, h) => {
const ret = []
const resourceMapType = []
const { auto_create_project, auto_create_project_for_provider, project_mapping, tenant } = row
if (project_mapping) resourceMapType.push('project_mapping')
if (auto_create_project) resourceMapType.push('external_project')
if (auto_create_project_for_provider) resourceMapType.push('cloudprovider')
if (resourceMapType.length) {
let tooltip = ''
if (resourceMapType.length === 1) {
tooltip = i18n.t(`cloudenv.resource_map_type.${resourceMapType[0]}`)
} else if (resourceMapType.length === 2) {
tooltip = i18n.t(`cloudenv.resource_map_type.${resourceMapType[0]}_and_${resourceMapType[1]}`)
} else {
tooltip = i18n.t('cloudenv.resource_map_type.all')
}
if (tenant) {
tooltip = tooltip + '
' + (i18n.t('cloudenv.default_project') + ': ' + tenant) + '
'
}
ret.push()
if (project_mapping) {
let label = ''
if (row.enable_resource_sync) {
label = i18n.t('cloudenv.resource_project_mapping')
} else if (row.enable_project_sync) {
label = i18n.t('cloudenv.project_project_mapping')
}
ret.push({label || i18n.t('cloudenv.text_580')}:{project_mapping})
}
} else {
ret.push({i18n.t('cloudenv.target_project')}:{tenant})
}
return ret
},
},
formatter: ({ row }) => {
const ret = []
const resourceMapType = []
const { auto_create_project, auto_create_project_for_provider, project_mapping, tenant } = row
if (project_mapping) resourceMapType.push('project_mapping')
if (auto_create_project) resourceMapType.push('external_project')
if (auto_create_project_for_provider) resourceMapType.push('cloudprovider')
if (resourceMapType.length) {
if (project_mapping) {
let label = ''
if (row.enable_resource_sync) {
label = i18n.t('cloudenv.resource_project_mapping')
} else if (row.enable_project_sync) {
label = i18n.t('cloudenv.project_project_mapping')
}
ret.push(`${label || i18n.t('cloudenv.text_580')}:${project_mapping}`)
}
if (tenant) {
ret.push(i18n.t('cloudenv.default_project') + ': ' + tenant)
}
} else {
ret.push(`${i18n.t('cloudenv.target_project')}:${tenant}`)
}
return ret.join(',')
},
}
}
export const getBlockResourceTableColumn = () => {
return {
field: 'skip_sync_resources',
title: i18n.t('cloudenv.block_resources_type'),
minWidth: 120,
showOverflow: 'title',
slots: {
default: ({ row }, h) => {
if (!row.skip_sync_resources) return '-'
const skip_sync_resources = row.skip_sync_resources || []
return skip_sync_resources.map(item => {
return {BLOCKED_RESOURCES_MAP[item]?.label || item }
})
},
},
formatter: ({ row }) => {
const skip_sync_resources = row.skip_sync_resources || []
return skip_sync_resources.map(item => {
return BLOCKED_RESOURCES_MAP[item]?.label || item
})
},
}
}