11import DataTable from '@gravity-ui/react-data-table' ;
22
3+ import { getColumnWidth } from '../../../../utils/getColumnWidth' ;
4+
35import i18n from './i18n' ;
46import type { SchemaColumn , SchemaData } from './types' ;
57
@@ -108,16 +110,37 @@ const compressionColumn: SchemaColumn = {
108110 render : ( { row} ) => row . columnCodec ,
109111} ;
110112
111- export function getViewColumns ( ) : SchemaColumn [ ] {
112- return [ nameColumn , typeColumn ] ;
113+ const WIDTH_PREDICTION_ROWS_COUNT = 100 ;
114+
115+ function normalizeColumns ( columns : SchemaColumn [ ] , data ?: SchemaData [ ] ) {
116+ if ( ! data ) {
117+ return columns ;
118+ }
119+ const dataSlice = data . slice ( 0 , WIDTH_PREDICTION_ROWS_COUNT ) ;
120+ return columns . map ( ( column ) => {
121+ return {
122+ ...column ,
123+ width : getColumnWidth ( {
124+ data : dataSlice ,
125+ name : column . name ,
126+ header : typeof column . header === 'string' ? column . header : undefined ,
127+ sortable : column . sortable === undefined ,
128+ } ) ,
129+ } ;
130+ } ) ;
131+ }
132+
133+ export function getViewColumns ( data ?: SchemaData [ ] ) : SchemaColumn [ ] {
134+ return normalizeColumns ( [ nameColumn , typeColumn ] , data ) ;
113135}
114- export function getExternalTableColumns ( ) : SchemaColumn [ ] {
115- return [ idColumn , nameColumn , typeColumn , notNullColumn ] ;
136+ export function getExternalTableColumns ( data ?: SchemaData [ ] ) : SchemaColumn [ ] {
137+ return normalizeColumns ( [ idColumn , nameColumn , typeColumn , notNullColumn ] , data ) ;
116138}
117- export function getColumnTableColumns ( ) : SchemaColumn [ ] {
118- return [ idColumn , nameColumn , typeColumn , notNullColumn ] ;
139+ export function getColumnTableColumns ( data ?: SchemaData [ ] ) : SchemaColumn [ ] {
140+ return normalizeColumns ( [ idColumn , nameColumn , typeColumn , notNullColumn ] , data ) ;
119141}
120142export function getRowTableColumns (
143+ data : SchemaData [ ] | undefined ,
121144 extended : boolean ,
122145 hasAutoIncrement : boolean ,
123146 hasDefaultValue : boolean ,
@@ -136,5 +159,7 @@ export function getRowTableColumns(
136159 rowTableColumns . push ( autoIncrementColumn ) ;
137160 }
138161
139- return rowTableColumns ;
162+ console . log ( normalizeColumns ( rowTableColumns , data ) ) ;
163+
164+ return normalizeColumns ( rowTableColumns , data ) ;
140165}
0 commit comments