@@ -242,7 +242,6 @@ async function getRepositories(sort_by = 'date') {
242242const getRunsTable = async ( el , url , include_uri = true , include_button = true , searching = false ) => {
243243
244244 let runs = null ;
245- el . DataTable ( ) . clear ( ) . destroy ( ) // clear old
246245
247246 try {
248247 runs = await makeAPICall ( url )
@@ -325,32 +324,40 @@ const getRunsTable = async (el, url, include_uri=true, include_button=true, sear
325324 }
326325 } ) ;
327326
328- el . DataTable ( {
329- // searchPanes: {
330- // initCollapsed: true,
331- // },
332- searching : searching ,
333- data : runs . data ,
334- columns : columns ,
335- deferRender : true ,
336- layout : {
337- topStart : '' ,
338- topEnd : '' ,
339- bottomStart : 'pageLength' ,
340- bottomEnd : 'paging'
341- } ,
342- drawCallback : function ( settings ) {
343- document . querySelectorAll ( 'input[type="checkbox"]' ) . forEach ( ( e ) => {
344- e . removeEventListener ( 'change' , updateCompareCount ) ;
345- e . addEventListener ( 'change' , updateCompareCount ) ;
346- } )
347- document . querySelector ( '#unselect-button' ) . removeEventListener ( 'click' , unselectHandler ) ;
348- document . querySelector ( '#unselect-button' ) . addEventListener ( 'click' , unselectHandler )
349- allow_group_select_checkboxes ( ) ;
350- updateCompareCount ( ) ;
351- } ,
352- order : [ [ columns . length - 2 , 'desc' ] ] // API also orders, but we need to indicate order for the user
353- } ) ;
327+
328+ if ( $ . fn . DataTable . isDataTable ( el ) ) { // just refill. A clean .destroy and .clear will break sorting sadly ...
329+ const dt = el . DataTable ( ) ;
330+ dt . clear ( ) ;
331+ dt . rows . add ( runs . data ) ; // array or Ajax-style data
332+ dt . draw ( ) ;
333+ } else { // init
334+ el . DataTable ( {
335+ // searchPanes: {
336+ // initCollapsed: true,
337+ // },
338+ searching : searching ,
339+ data : runs . data ,
340+ columns : columns ,
341+ deferRender : true ,
342+ layout : {
343+ topStart : '' ,
344+ topEnd : '' ,
345+ bottomStart : 'pageLength' ,
346+ bottomEnd : 'paging'
347+ } ,
348+ drawCallback : function ( settings ) {
349+ document . querySelectorAll ( 'input[type="checkbox"]' ) . forEach ( ( e ) => {
350+ e . removeEventListener ( 'change' , updateCompareCount ) ;
351+ e . addEventListener ( 'change' , updateCompareCount ) ;
352+ } )
353+ document . querySelector ( '#unselect-button' ) . removeEventListener ( 'click' , unselectHandler ) ;
354+ document . querySelector ( '#unselect-button' ) . addEventListener ( 'click' , unselectHandler )
355+ allow_group_select_checkboxes ( ) ;
356+ updateCompareCount ( ) ;
357+ } ,
358+ order : [ [ columns . length - 2 , 'desc' ] ] // API also orders, but we need to indicate order for the user
359+ } ) ;
360+ }
354361
355362}
356363
0 commit comments