@@ -17,6 +17,7 @@ import { v4 } from "uuid";
1717
1818import { TableData } from "../components/LibraryNavigator/types" ;
1919import { Column } from "../connection/rest/api/compute" ;
20+ import type { ViewProperties } from "../panels/DataViewer" ;
2021import ColumnHeader from "./ColumnHeader" ;
2122import { ColumnMenuProps , getColumnMenu } from "./ColumnMenu" ;
2223
@@ -77,7 +78,10 @@ const queryTableData = (
7778let fetchColumnsTimeoutId : ReturnType < typeof setTimeout > | null = null ;
7879const clearFetchColumnsTimeout = ( ) =>
7980 fetchColumnsTimeoutId && clearTimeout ( fetchColumnsTimeoutId ) ;
80- const fetchColumns = ( ) : Promise < Column [ ] > => {
81+ const fetchColumns = ( ) : Promise < {
82+ columns : Column [ ] ;
83+ viewProperties ?: ViewProperties ;
84+ } > => {
8185 const requestKey = v4 ( ) ;
8286 vscode . postMessage ( { command : "request:loadColumns" , key : requestKey } ) ;
8387
@@ -104,10 +108,15 @@ const fetchColumns = (): Promise<Column[]> => {
104108 } ) ;
105109} ;
106110
111+ export const storeViewProperties = ( viewProperties : ViewProperties ) =>
112+ vscode . postMessage ( {
113+ command : "request:storeViewProperties" ,
114+ data : { viewProperties } ,
115+ } ) ;
116+
107117const useDataViewer = ( theme : string ) => {
108118 const [ columns , setColumns ] = useState < ColDef [ ] > ( [ ] ) ;
109119 const [ columnMenu , setColumnMenu ] = useState < ColumnMenuProps | undefined > ( ) ;
110-
111120 const columnMenuRef = useRef < ColumnMenuProps | undefined > ( columnMenu ) ;
112121 useEffect ( ( ) => {
113122 columnMenuRef . current = columnMenu ;
@@ -180,7 +189,11 @@ const useDataViewer = (theme: string) => {
180189 return ;
181190 }
182191
183- fetchColumns ( ) . then ( ( columnsData ) => {
192+ fetchColumns ( ) . then ( ( { columns : columnsData , viewProperties } ) => {
193+ const getColumnState = ( name : string ) =>
194+ viewProperties . columnState
195+ ? viewProperties . columnState . find ( ( { colId } ) => colId === name )
196+ : { } ;
184197 const columns : ColDef [ ] = columnsData . map ( ( column ) => ( {
185198 field : column . name ,
186199 headerComponent : ColumnHeader ,
@@ -190,6 +203,7 @@ const useDataViewer = (theme: string) => {
190203 displayMenuForColumn,
191204 theme,
192205 } ,
206+ ...getColumnState ( column . name ) ,
193207 suppressHeaderKeyboardEvent : (
194208 params : SuppressHeaderKeyboardEventParams ,
195209 ) => {
@@ -245,7 +259,12 @@ const useDataViewer = (theme: string) => {
245259
246260 const dismissMenu = ( ) => setColumnMenu ( undefined ) ;
247261
248- return { columns, onGridReady, columnMenu, dismissMenu } ;
262+ return {
263+ columns,
264+ onGridReady,
265+ columnMenu,
266+ dismissMenu,
267+ } ;
249268} ;
250269
251270export default useDataViewer ;
0 commit comments