columns.js 3.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192
  1. import * as R from 'ramda'
  2. import i18n from '@/locales'
  3. import { BGP_TYPES_MAP } from '@/constants/network'
  4. import { ASSOCIATE_MAP } from '../constants'
  5. export const getAssociateNameTableColumn = ({ vm = {}, hidden } = {}) => {
  6. return {
  7. field: 'associate_name',
  8. title: i18n.t('network.text_197'),
  9. minWidth: 120,
  10. slots: {
  11. default: ({ row }, h) => {
  12. if (vm.isPreLoad && !row.associate_name) return [<data-loading />]
  13. const { associate_name, associate_id, associate_type, server_private_ip } = row
  14. if (vm && associate_type) {
  15. const associate = ASSOCIATE_MAP[associate_type] || {}
  16. const text = `${associate_name || '-'}(${associate.name || '-'}${server_private_ip ? `: ${server_private_ip}` : ''})`
  17. if (associate_name && associate_id) {
  18. return [
  19. <side-page-trigger permission={associate.permission} tab={associate.tab} name={associate.sidePage} id={associate_id} vm={vm}>{text}</side-page-trigger>,
  20. ]
  21. } else {
  22. return `${associate_name || '-'}${associate.name ? `(${associate.name})` : ''}`
  23. }
  24. }
  25. return '-'
  26. },
  27. },
  28. hidden: () => {
  29. return R.is(Function, hidden) ? hidden() : hidden
  30. },
  31. formatter: ({ row }) => {
  32. const { associate_name, associate_id, associate_type } = row
  33. if (vm && associate_type) {
  34. const associate = ASSOCIATE_MAP[associate_type] || {}
  35. const text = `${associate_name || '-'}(${associate.name || '-'})`
  36. if (associate_name && associate_id) {
  37. return text
  38. } else {
  39. return `${associate_name || '-'}${associate.name ? `(${associate.name})` : ''}`
  40. }
  41. }
  42. return '-'
  43. },
  44. }
  45. }
  46. export const getIPWithBgpTypeTableColumn = ({ hidden } = {}) => {
  47. return {
  48. field: 'ip_addr',
  49. title: 'IP',
  50. minWidth: 120,
  51. slots: {
  52. default: ({ row }, h) => {
  53. const ret = []
  54. const extraList = []
  55. const bgp = BGP_TYPES_MAP[row.bgp_type]?.label || row.bgp_type
  56. if (row.mode === 'public_ip') {
  57. extraList.push(i18n.t('network.static_public'))
  58. }
  59. if (bgp && row.bgp_type === BGP_TYPES_MAP.BGP_PRO.value) {
  60. extraList.push(bgp)
  61. }
  62. if (extraList.length) {
  63. ret.push(
  64. <list-body-cell-wrap row={row} field="ip_addr" copy><span class="text-color-help">({ extraList.join(',') })</span></list-body-cell-wrap>,
  65. )
  66. } else {
  67. ret.push(
  68. <list-body-cell-wrap row={row} field="ip_addr" copy></list-body-cell-wrap>,
  69. )
  70. }
  71. return ret
  72. },
  73. },
  74. hidden: () => {
  75. return R.is(Function, hidden) ? hidden() : hidden
  76. },
  77. formatter: ({ row }) => {
  78. const ret = [row.ip_addr]
  79. const bgp = BGP_TYPES_MAP[row.bgp_type]?.label || row.bgp_type
  80. if (row.mode === 'public_ip') {
  81. ret.push(i18n.t('network.static_public'))
  82. }
  83. if (bgp && row.bgp_type === BGP_TYPES_MAP.BGP_PRO.value) {
  84. ret.push(bgp)
  85. }
  86. const list = ret.filter(item => item)
  87. return list.length ? list.join(',') : ''
  88. },
  89. }
  90. }