import FileProcess from '@Compute/views/image/components/FileProcess'
import { sizestr } from '@/utils/utils'
import SystemIcon from '@/sections/SystemIcon'
import { getNameDescriptionTableColumn, getProjectTableColumn, getTimeTableColumn, getPublicScopeTableColumn, getTagTableColumn, getOsArch } from '@/utils/common/tableColumn'
import i18n from '@/locales'
export default {
created () {
this.columns = [
getNameDescriptionTableColumn({
width: 200,
onManager: this.onManager,
hideField: true,
addLock: true,
addEncrypt: true,
slotCallback: (row, h) => {
return (
this.handleOpenSidepage(row)}>{ row.name }
)
},
formRules: [
{ required: true, message: i18n.t('compute.text_210') },
{ validator: this.$validate('imageName') },
],
}),
{
field: 'status',
title: i18n.t('common.status'),
sortable: true,
showOverflow: 'ellipsis',
minWidth: 80,
slots: {
default: ({ row }, h) => {
const fileProcess = row.status === 'saving' ? : null
const log = this.handleOpenSidepage(row, 'event-drawer') }>{ this.$t('common.view_logs') }
return [
{ row.status?.includes('fail') ? log : null }
{ fileProcess }
,
]
},
},
formatter: ({ row }) => {
return this.$te(`status.image.${row.status}`) ? this.$t(`status.image.${row.status}`) : row.status
},
},
getTagTableColumn({ onManager: this.onManager, resource: 'images', columns: () => this.columns }),
{
field: 'disk_format',
title: i18n.t('table.title.disk_format'),
width: 100,
formatter: ({ cellValue, row }) => {
return (cellValue && cellValue.toUpperCase()) || row.info?.disk_format || '-'
},
},
getOsArch({ field: 'properties.os_arch' }),
{
field: 'os_type',
title: i18n.t('table.title.os'),
width: 60,
slots: {
default: ({ row }, h) => {
if (!row.properties && !row.os_type) return
const dist = row.properties?.os_distribution || row.properties?.distro || row.os_type
const version = row.properties?.os_version || row.properties?.version || row.os_version
let name = ''
let tooltip = ''
if (dist) {
tooltip = version ? (version.includes(dist) ? version : `${decodeURI(dist)} ${version}`) : dist
} else if (row.properties?.os_type) {
tooltip = row.properties?.os_type
} else {
tooltip = i18n.t('compute.text_339')
}
name = dist || row.properties?.os_type || ''
if (name.includes('Windows') || name.includes('windows')) {
name = 'Windows'
} else if (name.startsWith('Linux') || name.startsWith('linux')) {
name = 'Linux'
}
return [
,
]
},
},
formatter: ({ row }) => {
if (!row.properties && !row.os_type) return
const dist = row.properties?.os_distribution || row.properties?.distro || row.os_type
let name = ''
name = dist || row.properties?.os_type || ''
if (name.includes('Windows') || name.includes('windows')) {
name = 'Windows'
} else if (name.includes('Linux') || name.includes('linux')) {
name = 'Linux'
}
return name
},
},
{
field: 'size',
title: i18n.t('table.title.image_size'),
minWidth: 100,
formatter: ({ cellValue, row }) => {
return sizestr(cellValue, 'B', 1024)
},
},
{
field: 'is_standard',
title: i18n.t('table.title.image_type'),
width: 100,
formatter: ({ cellValue }) => {
if (cellValue === true || cellValue === 'true') return i18n.t('compute.text_620')
return i18n.t('compute.text_621')
},
},
getTimeTableColumn(),
getPublicScopeTableColumn({ vm: this, resource: 'images' }),
getProjectTableColumn(),
// isPublicTableColumn(),
]
},
}