@@ -47,19 +47,67 @@ const getColumnWidth = (key) => {
4747
4848// Field formatters
4949
50+
51+ const getDefaultFormatter = ( key ) => {
52+ const metaType = nebula . metaType ( key )
53+ switch ( metaType . type ) {
54+ case 'boolean' :
55+ // eslint-disable-next-line
56+ return ( rowData , key ) => < td > { rowData [ key ] ? '✓' : '' } </ td >
57+
58+ case 'datetime' :
59+ // eslint-disable-next-line
60+ return ( rowData , key ) => (
61+ < td >
62+ < Timestamp timestamp = { rowData [ key ] } mode = { metaType . mode } /> { ' ' }
63+ </ td >
64+ )
65+
66+ case 'select' :
67+ // eslint-disable-next-line
68+ return ( rowData , key ) => {
69+ if ( ! metaType . cs ) return < td > { rowData [ key ] } </ td >
70+
71+ const option = nebula
72+ . csOptions ( metaType . cs )
73+ . find ( ( opt ) => opt . value === rowData [ key ] )
74+
75+ return < td > { option ?. title } </ td >
76+ }
77+
78+ case 'list' :
79+ // eslint-disable-next-line
80+ return ( rowData , key ) => {
81+ if ( ! metaType . cs ) return < td > { rowData [ key ] . join ( ', ' ) } </ td >
82+ const options = nebula
83+ . csOptions ( metaType . cs )
84+ . filter ( ( opt ) => rowData [ key ] . includes ( opt . value ) )
85+ return < td > { options . map ( ( opt ) => opt . title ) . join ( ', ' ) } </ td >
86+ }
87+
88+ default :
89+ // eslint-disable-next-line
90+ return ( rowData , key ) => < td > { rowData [ key ] } </ td >
91+ } // switch metaType
92+ }
93+
94+
5095const getFormatter = ( key ) => {
5196 if ( [ 'title' , 'subtitle' , 'description' ] . includes ( key ) )
97+ // eslint-disable-next-line
5298 return ( rowData , key ) => < td > { rowData [ key ] } </ td >
5399
54100 switch ( key ) {
55101 case 'qc/state' :
102+ // eslint-disable-next-line
56103 return ( rowData , key ) => (
57104 < td >
58105 < QCState className = { `qc-state-${ rowData [ key ] } ` } />
59106 </ td >
60107 )
61108
62109 case 'id_folder' :
110+ // eslint-disable-next-line
63111 return ( rowData , key ) => {
64112 const folder = nebula . settings . folders . find (
65113 ( f ) => f . id === rowData [ key ]
@@ -68,6 +116,7 @@ const getFormatter = (key) => {
68116 }
69117
70118 case 'duration' :
119+ // eslint-disable-next-line
71120 return ( rowData , key ) => {
72121 const fps = rowData [ 'video/fps_f' ] || 25
73122 const duration = rowData [ key ] || 0
@@ -76,51 +125,19 @@ const getFormatter = (key) => {
76125 }
77126
78127 case 'created_by' :
128+ // eslint-disable-next-line
79129 return ( rowData , key ) => {
80130 return < td > { nebula . getUserName ( rowData [ key ] ) } </ td >
81131 }
82132
83133 case 'updated_by' :
134+ // eslint-disable-next-line
84135 return ( rowData , key ) => {
85136 return < td > { nebula . getUserName ( rowData [ key ] ) } </ td >
86137 }
87138
88139 default :
89- const metaType = nebula . metaType ( key )
90- switch ( metaType . type ) {
91- case 'boolean' :
92- return ( rowData , key ) => < td > { rowData [ key ] ? '✓' : '' } </ td >
93-
94- case 'datetime' :
95- return ( rowData , key ) => (
96- < td >
97- < Timestamp timestamp = { rowData [ key ] } mode = { metaType . mode } /> { ' ' }
98- </ td >
99- )
100-
101- case 'select' :
102- return ( rowData , key ) => {
103- if ( ! metaType . cs ) return < td > { rowData [ key ] } </ td >
104-
105- const option = nebula
106- . csOptions ( metaType . cs )
107- . find ( ( opt ) => opt . value === rowData [ key ] )
108-
109- return < td > { option ?. title } </ td >
110- }
111-
112- case 'list' :
113- return ( rowData , key ) => {
114- if ( ! metaType . cs ) return < td > { rowData [ key ] . join ( ', ' ) } </ td >
115- const options = nebula
116- . csOptions ( metaType . cs )
117- . filter ( ( opt ) => rowData [ key ] . includes ( opt . value ) )
118- return < td > { options . map ( ( opt ) => opt . title ) . join ( ', ' ) } </ td >
119- }
120-
121- default :
122- return ( rowData , key ) => < td > { rowData [ key ] } </ td >
123- } // switch metaType
140+ return getDefaultFormatter ( key )
124141 } // end switch key
125142} // end getFormatter
126143
0 commit comments