@@ -29,6 +29,31 @@ const TableContainer = (props: { children: ReactNode }) => {
29
29
30
30
const localTz = timeRangeUtils . getLocalTimezone ( ) ;
31
31
32
+ type CellType = string | number | boolean | null | undefined ;
33
+
34
+ const getSanitizedValue = ( value : CellType , isTimestamp : boolean ) => {
35
+ if ( isTimestamp ) {
36
+ const timestamp = String ( value ) . trim ( ) ;
37
+ const isValidTimestamp = ! isNaN ( Date . parse ( timestamp ) ) ;
38
+
39
+ if ( timestamp && isValidTimestamp ) {
40
+ return formatLogTs ( timestamp ) ;
41
+ } else {
42
+ return '' ;
43
+ }
44
+ }
45
+
46
+ if ( value === null || value === undefined ) {
47
+ return '' ;
48
+ }
49
+
50
+ if ( typeof value === 'boolean' ) {
51
+ return value . toString ( ) ;
52
+ }
53
+
54
+ return String ( value ) ;
55
+ } ;
56
+
32
57
const makeHeaderOpts = ( headers : string [ ] , isSecureHTTPContext : boolean , fieldTypeMap : FieldTypeMap ) => {
33
58
return _ . reduce (
34
59
headers ,
@@ -42,19 +67,15 @@ const makeHeaderOpts = (headers: string[], isSecureHTTPContext: boolean, fieldTy
42
67
header : isTimestamp ? `${ header } (${ localTz } )` : header ,
43
68
grow : true ,
44
69
Cell : ( { cell } : { cell : any } ) => {
45
- const value = _ . isFunction ( cell . getValue ) ? cell . getValue ( ) : '' ;
70
+ const value = _ . get ( cell . row . original , header , '' ) ;
46
71
const isTimestamp = _ . chain ( cell )
47
72
. get ( 'column.id' , null )
48
73
. thru ( ( val ) => {
49
74
const datatype = _ . get ( fieldTypeMap , val , null ) ;
50
75
return datatype === 'timestamp' ;
51
76
} )
52
77
. value ( ) ;
53
- const sanitizedValue = isTimestamp
54
- ? formatLogTs ( value )
55
- : _ . isBoolean ( value ) || value
56
- ? _ . toString ( value )
57
- : '' ;
78
+ const sanitizedValue = getSanitizedValue ( value , isTimestamp ) ;
58
79
return (
59
80
< div className = { tableStyles . customCellContainer } style = { { overflow : 'hidden' , textOverflow : 'ellipsis' } } >
60
81
{ sanitizedValue }
0 commit comments