columns.js 6.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212
  1. import PasswordFetcher from '@Compute/sections/PasswordFetcher'
  2. import { sizestr } from '@/utils/utils'
  3. import { getProjectTableColumn, getRegionTableColumn, getStatusTableColumn, getNameDescriptionTableColumn, getBrandTableColumn, getTagTableColumn, getBillingTableColumn, getAccountTableColumn, getTimeTableColumn } from '@/utils/common/tableColumn'
  4. import i18n from '@/locales'
  5. import { ENGINE_ARCH } from '../constants/index.js'
  6. export default {
  7. created () {
  8. this.columns = [
  9. getNameDescriptionTableColumn({
  10. onManager: this.onManager,
  11. hideField: true,
  12. addLock: true,
  13. addBackup: true,
  14. slotCallback: row => {
  15. return (
  16. <side-page-trigger onTrigger={ () => this.handleOpenSidepage(row) }>{ row.name || row.external_id }</side-page-trigger>
  17. )
  18. },
  19. hidden: () => {
  20. return this.$isScopedPolicyMenuHidden('redis_hidden_columns.name')
  21. },
  22. }),
  23. getStatusTableColumn({
  24. statusModule: 'redis',
  25. vm: this,
  26. hidden: () => {
  27. return this.$isScopedPolicyMenuHidden('redis_hidden_columns.status')
  28. },
  29. }),
  30. getTagTableColumn({
  31. onManager: this.onManager,
  32. resource: 'redis_elasticcaches',
  33. columns: () => this.columns,
  34. hidden: () => {
  35. return this.$isScopedPolicyMenuHidden('redis_hidden_columns.metadata')
  36. },
  37. }),
  38. {
  39. field: 'arch_type',
  40. title: i18n.t('db.text_119'),
  41. width: 100,
  42. formatter: ({ row }) => {
  43. const type = row.local_category || row.arch_type
  44. return ENGINE_ARCH[type] || type
  45. },
  46. hidden: () => {
  47. return this.$isScopedPolicyMenuHidden('redis_hidden_columns.arch_type')
  48. },
  49. },
  50. {
  51. field: 'instance_type',
  52. title: i18n.t('db.text_109'),
  53. width: 50,
  54. formatter: ({ row }) => {
  55. return sizestr(row.capacity_mb, 'M', 1024)
  56. },
  57. hidden: () => {
  58. return this.$isScopedPolicyMenuHidden('redis_hidden_columns.instance_type')
  59. },
  60. },
  61. {
  62. field: 'engine',
  63. title: i18n.t('db.text_112'),
  64. width: 100,
  65. formatter: ({ row }) => {
  66. return `${row.engine} ${row.engine_version}`
  67. },
  68. hidden: () => {
  69. return this.$isScopedPolicyMenuHidden('redis_hidden_columns.engine')
  70. },
  71. },
  72. {
  73. field: 'password',
  74. title: i18n.t('db.text_195'),
  75. width: 50,
  76. slots: {
  77. default: ({ row }) => {
  78. return [<PasswordFetcher serverId={row.id} resourceType='elasticcaches' />]
  79. },
  80. },
  81. hidden: () => {
  82. return this.$isScopedPolicyMenuHidden('redis_hidden_columns.password')
  83. },
  84. },
  85. {
  86. field: 'private_dns',
  87. title: i18n.t('db.text_152'),
  88. minWidth: 200,
  89. showOverflow: 'ellipsis',
  90. slots: {
  91. default: ({ row }) => {
  92. const pri = row.private_dns || row.private_ip_addr
  93. const pub = row.public_dns || row.public_ip_addr
  94. if (!pri && !pub) {
  95. return '-'
  96. }
  97. const connection = (title, value) => {
  98. if (!value) {
  99. return null
  100. }
  101. return [
  102. <list-body-cell-wrap hide-field copy message={value}>
  103. {title} : <span>{ value || '-' }</span>
  104. </list-body-cell-wrap>,
  105. ]
  106. }
  107. return [
  108. connection(i18n.t('db.text_153'), pri),
  109. connection(i18n.t('db.text_154'), pub),
  110. ]
  111. },
  112. },
  113. formatter: ({ row }) => {
  114. const pri = row.private_dns || row.private_ip_addr
  115. const pub = row.public_dns || row.public_ip_addr
  116. if (!pri && !pub) {
  117. return '-'
  118. }
  119. return `${i18n.t('db.text_153') + ':' + pri}, ${i18n.t('db.text_154') + ':' + pub}`
  120. },
  121. hidden: () => {
  122. return this.$isScopedPolicyMenuHidden('redis_hidden_columns.private_dns')
  123. },
  124. },
  125. {
  126. field: 'private_connect_port',
  127. title: i18n.t('db.text_303'),
  128. width: 100,
  129. slots: {
  130. default: ({ row }) => {
  131. if (!row.private_connect_port && !row.public_connect_port) {
  132. return '-'
  133. }
  134. const ports = []
  135. if (row.private_connect_port && (row.private_dns || row.private_ip_addr)) {
  136. ports.push(<div>{ this.$t('common.intranet_1var', [row.private_connect_port]) }</div>)
  137. }
  138. if (row.public_connect_port && (row.public_dns || row.public_ip_addr)) {
  139. ports.push(<div>{ this.$t('common.extranet_1var', [row.public_connect_port]) }</div>)
  140. }
  141. return ports
  142. },
  143. },
  144. formatter: ({ row }) => {
  145. if (!row.private_connect_port && !row.public_connect_port) {
  146. return '-'
  147. }
  148. const ports = []
  149. if (row.private_connect_port && (row.private_dns || row.private_ip_addr)) {
  150. ports.push(this.$t('common.intranet_1var', [row.private_connect_port]))
  151. }
  152. if (row.public_connect_port && (row.public_dns || row.public_ip_addr)) {
  153. ports.push(this.$t('common.extranet_1var', [row.public_connect_port]))
  154. }
  155. return ports.join(',')
  156. },
  157. hidden: () => {
  158. return this.$isScopedPolicyMenuHidden('redis_hidden_columns.private_connect_port')
  159. },
  160. },
  161. {
  162. field: 'secgroups',
  163. title: i18n.t('res.secgroup'),
  164. minWidth: 80,
  165. showOverflow: 'ellipsis',
  166. slots: {
  167. default: ({ row }) => {
  168. return row.secgroups?.map(item => item.name).join(',')
  169. },
  170. },
  171. formatter: ({ row }) => {
  172. return row.secgroups?.map(item => item.name).join(',')
  173. },
  174. hidden: () => {
  175. return this.$isScopedPolicyMenuHidden('slb_hidden_columns.secgroups')
  176. },
  177. },
  178. getBillingTableColumn({
  179. vm: this,
  180. hidden: () => {
  181. return this.$isScopedPolicyMenuHidden('redis_hidden_columns.billing_type')
  182. },
  183. }),
  184. getBrandTableColumn({
  185. hidden: () => {
  186. return this.$isScopedPolicyMenuHidden('redis_hidden_columns.brand')
  187. },
  188. }),
  189. getAccountTableColumn({
  190. hidden: () => {
  191. return this.$isScopedPolicyMenuHidden('redis_hidden_columns.account')
  192. },
  193. }),
  194. getProjectTableColumn({
  195. hidden: () => {
  196. return this.$isScopedPolicyMenuHidden('redis_hidden_columns.tenant')
  197. },
  198. }),
  199. getRegionTableColumn({
  200. hidden: () => {
  201. return this.$isScopedPolicyMenuHidden('redis_hidden_columns.region')
  202. },
  203. }),
  204. getTimeTableColumn({
  205. hidden: () => {
  206. return this.$isScopedPolicyMenuHidden('redis_hidden_columns.created_at')
  207. },
  208. }),
  209. ]
  210. },
  211. }