@@ -266,7 +266,8 @@ exports.GetRows = (sid, sheet, start = 0, count = 10) => {
266266
267267 // Try to provide rows from start to start+count-1, but limit ourselves to
268268 // the rows in the sheet.
269- const rowRange = {
269+
270+ rowRange = {
270271 sheet : sheet ,
271272 start : { row : start , column : 0 } ,
272273 end : { row : Math . min ( start + count , sheetDimensions . rows ) , column : sheetDimensions . columns - 1 }
@@ -277,7 +278,32 @@ exports.GetRows = (sid, sheet, start = 0, count = 10) => {
277278 return processMergedCells ( rowRange . end . column - rowRange . start . column + 1 , preview ) ;
278279} ;
279280
280- exports . GetRowRangeFromEnd = ( sid , sheet , count = 10 ) => {
281+ exports . GetRowsTable = ( sid , sheet , start = 0 , count = 10 , table = null ) => {
282+ const tableRangeContainer = backend . SessionGetInputTableRanges ( sid , sheet ) . get ( table ) ;
283+ assert ( tableRangeContainer , `Table Range ${ table } not found in ${ sheet } ` )
284+ rowRange = {
285+ sheet : sheet ,
286+ start : tableRangeContainer . range . start ,
287+ end : { row : Math . min ( tableRangeContainer . range . start . row + count , tableRangeContainer . range . end . row ) , column : tableRangeContainer . range . end . column }
288+ }
289+ const wantedRows = rowRange . end . row - rowRange . start . row
290+ const preview = backend . SessionGetInputSampleRows ( sid , rowRange , wantedRows , 0 , 0 ) [ 0 ] ;
291+
292+ return processMergedCells ( rowRange . end . column - rowRange . start . column + 1 , preview ) ;
293+ } ;
294+
295+ exports . GetRowRangeFromEnd = ( sid , sheet , count = 10 , table = null ) => {
296+ if ( table ) {
297+ const tableRangeContainer = backend . SessionGetInputTableRanges ( sid , sheet ) . get ( table ) ;
298+ const tableRange = tableRangeContainer . range
299+ console . debug ( 'Table range:' , tableRange )
300+ return {
301+ sheet : sheet ,
302+ start : { row : Math . max ( tableRange . end . row - count , tableRange . start . row ) , column : tableRange . start . column } ,
303+ end : tableRange . end
304+ }
305+ }
306+
281307 const sheetDimensions = backend . SessionGetInputDimensions ( sid )
282308 . sheetDimensions . get ( sheet ) ;
283309
@@ -286,6 +312,7 @@ exports.GetRowRangeFromEnd = (sid, sheet, count = 10) => {
286312 const hRange = backend . SessionGetHeaderRange ( sid , sheet )
287313
288314 const end = sheetDimensions . rows - 1 ;
315+
289316 return {
290317 sheet : sheet ,
291318 start : { row : Math . max ( end - count , hRange . start . row + 1 ) , column : hRange . start . column } ,
@@ -296,7 +323,15 @@ exports.GetRowRangeFromEnd = (sid, sheet, count = 10) => {
296323// Given a session id and a sheet returns up to count rows.
297324exports . GetTrailingRows = ( sid , sheet , count = 10 ) => {
298325 const hRange = backend . SessionGetHeaderRange ( sid , sheet ) ;
299- const rowRange = exports . GetRowRangeFromEnd ( sid , sheet , count )
326+ const rowRange = exports . GetRowRangeFromEnd ( sid , sheet , count ) ;
327+ const wantedRows = Math . min ( count , rowRange . end . row - hRange . end . row ) ;
328+ return backend . SessionGetInputSampleRows ( sid , rowRange , 0 , 0 , wantedRows ) [ 2 ] ;
329+ } ;
330+
331+ // Given a session id, a sheet and a table returns up to count rows.
332+ exports . GetTrailingRowsTable = ( sid , sheet , table , count = 10 ) => {
333+ const hRange = backend . SessionGetHeaderRange ( sid , sheet ) ;
334+ const rowRange = exports . GetRowRangeFromEnd ( sid , sheet , count , table ) ;
300335 const wantedRows = Math . min ( count , rowRange . end . row - hRange . end . row ) ;
301336 return backend . SessionGetInputSampleRows ( sid , rowRange , 0 , 0 , wantedRows ) [ 2 ] ;
302337} ;
0 commit comments