From 8b8e8b7f21ac417ab20762c82f3ce1812ed7ef19 Mon Sep 17 00:00:00 2001 From: Sagar Gala Date: Thu, 11 Dec 2014 15:28:47 -0800 Subject: [PATCH] Fixed Bug:1382372 BUG: On chrome, the grid rows when rendered for the first time were sorted in a random way where first row was getting swapped with another row placed halfway. ISSUE: This was introduced with defaultSort option added which used to perform sort unnecessarily and changed the behaviour of rows on chrome FIX: Added a check to perform default sort of grid only when the length of defaultSortCols > 0 Change-Id: I85e39e1229c91fb7f0fb1e638ec3d26bf25d85be --- webroot/js/slickgrid-utils.js | 30 ++++++++++++++++-------------- 1 file changed, 16 insertions(+), 14 deletions(-) diff --git a/webroot/js/slickgrid-utils.js b/webroot/js/slickgrid-utils.js index 7e1bfd713..9686754fd 100644 --- a/webroot/js/slickgrid-utils.js +++ b/webroot/js/slickgrid-utils.js @@ -709,7 +709,7 @@ function getDefaultGridConfig() { //Refresh the grid only if it's not destroyed setTimeout(function(){ if($(gridContainer).data('contrailGrid')) { - var checkedRows = gridContainer.data('contrailGrid').getCheckedRows(); + var checkedRows = gridContainer.data('contrailGrid').getCheckedRows(); grid.invalidateAllRows(); grid.render(); if(contrail.checkIfFunction(gridDataSource.events.onDataBoundCB)) { @@ -747,7 +747,7 @@ function getDefaultGridConfig() { eventHandlerMap.dataView['onUpdateData'] = function () { //Refresh the grid only if it's not destroyed if($(gridContainer).data('contrailGrid')) { - grid.invalidateAllRows(); + grid.invalidateAllRows(); grid.updateRowCount(); grid.render(); if(contrail.checkIfFunction(gridDataSource.events.onUpdateDataCB)) { @@ -775,19 +775,21 @@ function getDefaultGridConfig() { }; function performSort(cols) { - dataView.sort(function (dataRow1, dataRow2) { - for (var i = 0, l = cols.length; i < l; i++) { - var field = cols[i].sortCol.field; - var sign = cols[i].sortAsc ? 1 : -1; - var value1 = (contrail.checkIfExist(cols[i].sortCol.sortable.sortBy) && cols[i].sortCol.sortable.sortBy == 'formattedValue') ? cols[i].sortCol.formatter('','','','',dataRow1) : dataRow1[field], - value2 = (contrail.checkIfExist(cols[i].sortCol.sortable.sortBy) && cols[i].sortCol.sortable.sortBy == 'formattedValue') ? cols[i].sortCol.formatter('','','','',dataRow2) : dataRow2[field]; - var result = (value1 == value2 ? 0 : (value1 > value2 ? 1 : -1)) * sign; - if (result != 0) { - return result; + if(cols.length > 0) { + dataView.sort(function (dataRow1, dataRow2) { + for (var i = 0, l = cols.length; i < l; i++) { + var field = cols[i].sortCol.field; + var sign = cols[i].sortAsc ? 1 : -1; + var value1 = (contrail.checkIfExist(cols[i].sortCol.sortable.sortBy) && cols[i].sortCol.sortable.sortBy == 'formattedValue') ? cols[i].sortCol.formatter('', '', '', '', dataRow1) : dataRow1[field], + value2 = (contrail.checkIfExist(cols[i].sortCol.sortable.sortBy) && cols[i].sortCol.sortable.sortBy == 'formattedValue') ? cols[i].sortCol.formatter('', '', '', '', dataRow2) : dataRow2[field]; + var result = (value1 == value2 ? 0 : (value1 > value2 ? 1 : -1)) * sign; + if (result != 0) { + return result; + } } - } - return 0; - }); + return 0; + }); + } }; function initSearchBox() {