11import React from 'react' ;
22import { connect } from 'react-redux' ;
3- import { DataGrid , ValueGetterParams } from '@ material-ui/data-grid ' ;
3+ import MaterialTable from 'material-table ' ;
44import { DateTime } from 'luxon' ;
55import prettyBytes from 'pretty-bytes' ;
66import { Paper } from '@material-ui/core' ;
7- import { makeStyles } from '@material-ui/core/styles' ;
8-
9- const useStyles = makeStyles ( ( theme ) => ( {
10- dataGridRoot : {
11- '& .MuiDataGrid-cell' : {
12- fontSize : '0.9em' ,
7+ import { createStyles , makeStyles , Theme } from '@material-ui/core' ;
8+
9+ const useStyles = makeStyles ( ( theme : Theme ) =>
10+ createStyles ( {
11+ dataGridRoot : {
12+ border : '1px solid red' ,
13+ background : 'red' ,
14+ '& .MuiTableCell-body' : {
15+ padding : '6px 16px' ,
16+ fontSize : '0.8em' ,
17+ background : 'red' ,
18+ } ,
1319 } ,
14- } ,
15- } ) ) ;
20+ } ) ,
21+ ) ;
1622
1723const mapStateToProps = ( state : Object ) => {
1824 return {
@@ -69,75 +75,75 @@ const buildScriptAggregatedStatus = function(clusterOpcacheStatuses): Array<Obje
6975 return Object . values ( scriptAggregatedStatus ) ;
7076}
7177
72- function ScriptsDataGrid ( props )
73- {
78+ function ScriptsMaterialTable ( props ) {
7479 const columns = [
7580 {
7681 field : 'script' ,
77- headerName : 'Script' ,
82+ title : 'Script' ,
7883 sortable : true ,
79- flex : 1 ,
8084 } ,
8185 {
8286 field : 'hits' ,
83- headerName : 'Hits' ,
87+ title : 'Hits' ,
8488 sortable : true ,
85- width : 90 ,
86- hide : false ,
87- type : 'number' ,
89+ headerStyle : {
90+ width : "90px" ,
91+ } ,
92+ hidden : false ,
93+ type : 'numeric' ,
8894 } ,
8995 {
9096 field : 'memoryHumanReadable' ,
91- headerName : 'Size' ,
97+ title : 'Size' ,
9298 sortable : true ,
93- width : 85 ,
94- valueGetter : ( params : ValueGetterParams ) => {
95- return prettyBytes ( params . getValue ( 'memory' ) ) ;
99+ headerStyle : {
100+ width : "85px" ,
101+ } ,
102+ render : ( row ) => {
103+ return prettyBytes ( row . memory ) ;
96104 } ,
97- hide : false ,
98- type : 'number' ,
105+ customSort : ( a , b ) => a . memory - b . memory ,
106+ hidden : false ,
99107 } ,
100108 {
101109 field : 'lastUsedDate' ,
102- headerName : 'Last used' ,
110+ title : 'Last used' ,
103111 sortable : true ,
104- width : 170 ,
105- valueGetter : ( params : ValueGetterParams ) => {
106- return formatTime ( params . getValue ( 'lastUsedTimestamp' ) ) ;
112+ headerStyle : {
113+ width : "170x"
107114 } ,
108- hide : false ,
109- type : 'dateTime' ,
110- } ,
111- {
112- field : 'createDate' ,
113- headerName : 'Created' ,
114- sortable : true ,
115- width : 170 ,
116- valueGetter : ( params : ValueGetterParams ) => {
117- return formatTime ( params . getValue ( 'createTimestamp' ) ) ;
115+ render : ( row ) => {
116+ return formatTime ( row . lastUsedTimestamp ) ;
118117 } ,
119- type : 'dateTime' ,
120- hide : true ,
121- } ,
118+ customSort : ( a , b ) => a . lastUsedTimestamp - b . lastUsedTimestamp ,
119+ hidden : false ,
120+ type : 'datetime' ,
121+ }
122122 ] ;
123123
124124 return (
125- < DataGrid
126- rows = { props . rows }
125+ < MaterialTable
126+ title = ""
127+ options = { {
128+ search : true ,
129+ sorting : true ,
130+ pageSize : 100 ,
131+ pageSizeOptions : [ 20 , 50 , 100 ] ,
132+ rowStyle : {
133+ fontSize : '0.8em' ,
134+ } ,
135+ padding : "dense" ,
136+ tableLayout : "auto"
137+ } }
127138 columns = { columns }
128- autoHeight = "true"
129- autoPageSize = "true"
130- density = "compact"
131- className = { props . className }
132- > </ DataGrid >
139+ data = { props . rows }
140+ > </ MaterialTable >
133141 ) ;
134142}
135143
136- function ScriptsMaterialTable ( props ) {
137-
138- }
139-
140144function ScriptsPageComponent ( props : Object ) {
145+ const classes = useStyles ( ) ;
146+
141147 if ( props . selectedClusterName === null ) {
142148 return < div > Loading</ div >
143149 }
@@ -146,12 +152,8 @@ function ScriptsPageComponent(props: Object) {
146152 return < div > No scripts found</ div >
147153 }
148154
149- const classes = useStyles ( ) ;
150-
151155 return < div style = { { minHeight : '400px' , width : '100%' } } >
152- < Paper >
153- < ScriptsDataGrid rows = { props . scriptAggregatedStatus } className = { classes . dataGridRoot } > </ ScriptsDataGrid >
154- </ Paper >
156+ < ScriptsMaterialTable rows = { props . scriptAggregatedStatus } className = { classes . dataGridRoot } > </ ScriptsMaterialTable >
155157 </ div >
156158}
157159
0 commit comments