@@ -5,7 +5,10 @@ import { DateUtils } from '@deephaven/jsapi-utils';
55import type { AdvancedFilter } from './CommonTypes' ;
66import { FilterData } from './IrisGrid' ;
77import IrisGridTestUtils from './IrisGridTestUtils' ;
8- import IrisGridUtils from './IrisGridUtils' ;
8+ import IrisGridUtils , {
9+ DehydratedSort ,
10+ LegacyDehydratedSort ,
11+ } from './IrisGridUtils' ;
912
1013function makeFilter ( ) {
1114 // eslint-disable-next-line @typescript-eslint/no-explicit-any
@@ -17,7 +20,7 @@ function makeColumns(count = 30) {
1720
1821 for ( let i = 0 ; i < count ; i += 1 ) {
1922 // eslint-disable-next-line @typescript-eslint/no-explicit-any
20- const column = new ( dh as any ) . Column ( { index : i , name : `${ i } ` } ) ;
23+ const column = new ( dh as any ) . Column ( { index : i , name : `name_ ${ i } ` } ) ;
2124 columns . push ( column ) ;
2225 }
2326
@@ -151,30 +154,52 @@ describe('sort exporting/importing', () => {
151154 expect ( importedSort ) . toEqual ( sort ) ;
152155 } ) ;
153156
154- it ( 'exports/imports sorts' , ( ) => {
157+ it ( 'should export (dehydrate) sorts' , ( ) => {
155158 const columns = makeColumns ( ) ;
156159 const sort = [ columns [ 3 ] . sort ( ) , columns [ 7 ] . sort ( ) . abs ( ) . desc ( ) ] ;
157- const table = makeTable ( { columns, sort } ) ;
158- const exportedSort = IrisGridUtils . dehydrateSort ( sort ) ;
159- expect ( exportedSort ) . toEqual ( [
160- { column : 3 , isAbs : false , direction : 'ASC' } ,
161- { column : 7 , isAbs : true , direction : 'DESC' } ,
162- ] ) ;
160+ const dehydratedSorts = IrisGridUtils . dehydrateSort ( sort ) ;
163161
164- const importedSort = IrisGridUtils . hydrateSort ( table . columns , exportedSort ) ;
165- expect ( importedSort ) . toEqual ( [
166- expect . objectContaining ( {
167- column : columns [ 3 ] ,
168- isAbs : false ,
169- direction : 'ASC' ,
170- } ) ,
171- expect . objectContaining ( {
172- column : columns [ 7 ] ,
173- isAbs : true ,
174- direction : 'DESC' ,
175- } ) ,
162+ expect ( dehydratedSorts ) . toEqual < DehydratedSort [ ] > ( [
163+ { column : columns [ 3 ] . name , isAbs : false , direction : 'ASC' } ,
164+ { column : columns [ 7 ] . name , isAbs : true , direction : 'DESC' } ,
176165 ] ) ;
177166 } ) ;
167+
168+ describe ( 'should import (hydrate) sorts' , ( ) => {
169+ const columns = makeColumns ( ) ;
170+ const sort = [ columns [ 3 ] . sort ( ) , columns [ 7 ] . sort ( ) . abs ( ) . desc ( ) ] ;
171+ const table = makeTable ( { columns, sort } ) ;
172+
173+ const dehydratedSorts = IrisGridUtils . dehydrateSort ( sort ) ;
174+
175+ // Map `column` to a number to represent our LegacyDehydratedSort
176+ const legacyDehydratedSorts : LegacyDehydratedSort [ ] = dehydratedSorts . map (
177+ ( { column, ...rest } ) => ( {
178+ column : Number ( column . split ( '_' ) [ 1 ] ) ,
179+ ...rest ,
180+ } )
181+ ) ;
182+
183+ it . each ( [
184+ [ 'current' , dehydratedSorts ] ,
185+ [ 'legacy' , legacyDehydratedSorts ] ,
186+ ] ) ( '%s' , ( _label , sorts ) => {
187+ const importedSort = IrisGridUtils . hydrateSort ( table . columns , sorts ) ;
188+
189+ expect ( importedSort ) . toEqual ( [
190+ expect . objectContaining ( {
191+ column : columns [ 3 ] ,
192+ isAbs : false ,
193+ direction : 'ASC' ,
194+ } ) ,
195+ expect . objectContaining ( {
196+ column : columns [ 7 ] ,
197+ isAbs : true ,
198+ direction : 'DESC' ,
199+ } ) ,
200+ ] ) ;
201+ } ) ;
202+ } ) ;
178203} ) ;
179204
180205describe ( 'pendingDataMap hydration/dehydration' , ( ) => {
@@ -222,15 +247,15 @@ describe('pendingDataMap hydration/dehydration', () => {
222247 1 ,
223248 expect . objectContaining ( {
224249 data : [
225- [ '3 ' , 'Foo' ] ,
226- [ '4 ' , 'Bar' ] ,
250+ [ 'name_3 ' , 'Foo' ] ,
251+ [ 'name_4 ' , 'Bar' ] ,
227252 ] ,
228253 } ) ,
229254 ] ,
230255 [
231256 10 ,
232257 expect . objectContaining ( {
233- data : [ [ '7 ' , 'Baz' ] ] ,
258+ data : [ [ 'name_7 ' , 'Baz' ] ] ,
234259 } ) ,
235260 ] ,
236261 ] ) ;
@@ -256,7 +281,7 @@ describe('remove columns in moved columns', () => {
256281 const newMovedColumns = IrisGridUtils . removeColumnFromMovedColumns (
257282 table . columns ,
258283 movedColumns ,
259- [ '3 ' ]
284+ [ 'name_3 ' ]
260285 ) ;
261286 expect ( newMovedColumns ) . toEqual ( [ ] ) ;
262287 } ) ;
@@ -268,7 +293,7 @@ describe('remove columns in moved columns', () => {
268293 const newMovedColumns = IrisGridUtils . removeColumnFromMovedColumns (
269294 table . columns ,
270295 movedColumns ,
271- [ '3 ' ]
296+ [ 'name_3 ' ]
272297 ) ;
273298 expect ( newMovedColumns ) . toEqual ( GridUtils . moveItem ( 3 , 1 , [ ] ) ) ; // new move should be {from: 3, to: 1}
274299 } ) ;
@@ -281,7 +306,7 @@ describe('remove columns in moved columns', () => {
281306 const newMovedColumns = IrisGridUtils . removeColumnFromMovedColumns (
282307 table . columns ,
283308 movedColumns ,
284- [ '3 ' ]
309+ [ 'name_3 ' ]
285310 ) ;
286311 // columns' original state should be [0,1,2,4,5,...] after '3' is removed;
287312 // columns after move should be [4,0,1,2,5,...]; after columns '3' is removed;
@@ -297,7 +322,7 @@ describe('remove columns in moved columns', () => {
297322 const newMovedColumns = IrisGridUtils . removeColumnFromMovedColumns (
298323 table . columns ,
299324 movedColumns ,
300- [ '4 ' ]
325+ [ 'name_4 ' ]
301326 ) ;
302327 // column for is removed, the moved column moved back to it's original place, so delete the move
303328 expect ( newMovedColumns ) . toEqual ( [ ] ) ;
@@ -310,7 +335,7 @@ describe('remove columns in moved columns', () => {
310335 const newMovedColumns = IrisGridUtils . removeColumnFromMovedColumns (
311336 table . columns ,
312337 movedColumns ,
313- [ '2 ' , '3 ' ]
338+ [ 'name_2 ' , 'name_3 ' ]
314339 ) ;
315340 // columns' original state should be [0,1,4,5,...] after '2' & '3' are removed;
316341 // columns after move should be [0,1,4,5,...]; after columns '2' & '3' are removed;
@@ -325,7 +350,7 @@ describe('remove columns in moved columns', () => {
325350 const newMovedColumns = IrisGridUtils . removeColumnFromMovedColumns (
326351 table . columns ,
327352 movedColumns ,
328- [ '2 ' , '3 ' ]
353+ [ 'name_2 ' , 'name_3 ' ]
329354 ) ;
330355 // columns' original state should be [0,1,4,5,...] after '2' & '3' are removed;
331356 // columns after move should be [0,4,1,5,...]; after columns '2' & '3' are removed;
@@ -341,7 +366,7 @@ describe('remove columns in moved columns', () => {
341366 const newMovedColumns = IrisGridUtils . removeColumnFromMovedColumns (
342367 table . columns ,
343368 movedColumns ,
344- [ '2 ' , '3 ' ]
369+ [ 'name_2 ' , 'name_3 ' ]
345370 ) ;
346371 // columns' original state should be [0,1,4,5,6...] after '2' & '3' are removed;
347372 // columns after moves should be [0,4,1,6,5...]; after columns '2' & '3' are removed;
@@ -461,9 +486,9 @@ describe('changeFilterColumnNamesToIndexes', () => {
461486 const columns = makeColumns ( 10 ) ;
462487 it ( 'Replaces column names with indexes' , ( ) => {
463488 const filters = [
464- { name : '1 ' , filter : DEFAULT_FILTER } ,
465- { name : '3 ' , filter : DEFAULT_FILTER } ,
466- { name : '5 ' , filter : DEFAULT_FILTER } ,
489+ { name : 'name_1 ' , filter : DEFAULT_FILTER } ,
490+ { name : 'name_3 ' , filter : DEFAULT_FILTER } ,
491+ { name : 'name_5 ' , filter : DEFAULT_FILTER } ,
467492 ] ;
468493 expect (
469494 IrisGridUtils . changeFilterColumnNamesToIndexes ( columns , filters )
@@ -477,7 +502,7 @@ describe('changeFilterColumnNamesToIndexes', () => {
477502 it ( 'Omits missing columns' , ( ) => {
478503 const filters = [
479504 { name : 'missing_1' , filter : DEFAULT_FILTER } ,
480- { name : '3 ' , filter : DEFAULT_FILTER } ,
505+ { name : 'name_3 ' , filter : DEFAULT_FILTER } ,
481506 { name : 'missing_2' , filter : DEFAULT_FILTER } ,
482507 ] ;
483508 expect (
0 commit comments