@@ -2,12 +2,14 @@ import React from 'react';
22import PropTypes from 'prop-types' ;
33import { translate } from 'react-i18next' ;
44import { observer , inject } from 'mobx-react' ;
5+ import _ from 'lodash' ;
56
67import { Button , Icon , Table } from 'components/Base' ;
78import { Card } from 'components/Layout' ;
89import Status from 'components/Status' ;
910import DetailTabs from 'components/DetailTabs' ;
1011import Toolbar from 'components/Toolbar' ;
12+ import NoData from 'components/base/Table/noData' ;
1113
1214import columns from './columns' ;
1315import { getFilterOptions } from '../utils' ;
@@ -39,19 +41,23 @@ export default class HelmCluster extends React.Component {
3941
4042 return (
4143 < DetailTabs
42- tabs = { [ 'Deployment Pods' , 'StatefulSet Pods' , 'DaemonSet Pods' ] }
44+ tabs = { [ 'Deployment Pods' , 'StatefulSet Pods' , 'DaemonSet Pods' , 'Additional Info' ] }
4345 changeTab = { onChangeK8sTag }
4446 />
4547 ) ;
4648 }
4749
4850 renderToolbar ( ) {
4951 const { clusterDetailStore, t } = this . props ;
50- const { searchNode, onSearchNode, onClearNode, onRefreshNode } = clusterDetailStore ;
52+ const { nodeType, searchNode, onSearchNode, onClearNode, onRefreshNode } = clusterDetailStore ;
53+
54+ if ( nodeType === 'Additional' ) {
55+ return null ;
56+ }
5157
5258 return (
5359 < Toolbar
54- placeholder = { t ( 'Search Node ' ) }
60+ placeholder = { t ( 'Search Pods ' ) }
5561 searchWord = { searchNode }
5662 onSearch = { onSearchNode }
5763 onClear = { onClearNode }
@@ -65,6 +71,7 @@ export default class HelmCluster extends React.Component {
6571 const clusterNodes = clusterDetailStore . helmClusterNodes . toJSON ( ) ;
6672
6773 const {
74+ nodeType,
6875 onChangeNodeStatus,
6976 selectNodeStatus,
7077 extendedRowKeys,
@@ -89,6 +96,10 @@ export default class HelmCluster extends React.Component {
8996 }
9097 } ;
9198
99+ if ( nodeType === 'Additional' ) {
100+ return this . renderAdditionInfo ( ) ;
101+ }
102+
92103 props . rowKey = '' ;
93104 props . expandedRowRender = record =>
94105 record . nodes . map ( ( { name, status, host_id, host_ip, private_ip } ) => (
@@ -122,6 +133,40 @@ export default class HelmCluster extends React.Component {
122133 return < Table { ...props } /> ;
123134 }
124135
136+ renderAdditionInfo ( ) {
137+ const { clusterDetailStore, t } = this . props ;
138+ const additionalInfo = _ . get ( clusterDetailStore , 'cluster.additional_info' ) ;
139+ if ( ! additionalInfo ) return < NoData type = "Clusters" /> ;
140+
141+ const info = JSON . parse ( additionalInfo ) ;
142+
143+ const renderTable = key => {
144+ if ( _ . get ( info , `${ key } .length` ) === 0 ) {
145+ return null ;
146+ }
147+ const columns = _ . keys ( _ . first ( info [ key ] ) ) . map ( tableKey => ( {
148+ title : t ( tableKey ) ,
149+ key : tableKey ,
150+ render : item => < div > { item [ tableKey ] } </ div >
151+ } ) ) ;
152+ const props = {
153+ columns,
154+ dataSource : info [ key ] ,
155+ pagination : {
156+ total : 0
157+ }
158+ } ;
159+ return (
160+ < div key = { key } >
161+ < h3 className = { styles . additionalTitle } > { key } </ h3 >
162+ < Table className = { styles . additionalTable } { ...props } />
163+ </ div >
164+ ) ;
165+ } ;
166+
167+ return _ . keys ( info ) . map ( key => renderTable ( key ) ) ;
168+ }
169+
125170 renderModals ( ) {
126171 //
127172 }
0 commit comments