1angular.module('gridPrefsDirectives',['gridPreferencesServices']).directive('gridPrefs',['GridPreferencesService','$timeout','uiGridConstants','$window', '$rootScope', 2 function (GridPreferencesService,$timeout,uiGridConstants,$window,$rootScope) { 3 return { 4 restrict: 'A', 5 priority: 1000, 6 link: function(scope, element, attrs) { 7 scope.pageLoad = true; 8 9 scope.gridPrefsModel.handleGridPrefsEvent = function(gridApi) { 10 if(gridApi.saveState) { 11 var state = gridApi.saveState.save(); 12 var columns = gridApi.grid.columns; 13 if(scope.gridPrefsModel.useOnlyGridDataColumns == true){ 14 /* This gets only data columns present in the grid, the above one will give data columns plus the columns added by the gridAPI. 15 for example grouping API adds a column with expand/collapse symbol that is used to close or open group. */ 16 columns = gridApi.grid.getOnlyDataColumns(); 17 } 18 19 GridPreferencesService.saveUserGridPrefs(GridPreferencesService.buildUserGridPrefList(state,scope.gridPrefsModel.pageName,columns)); 20 } 21 }; 22 23 scope.gridPrefsModel.addDefaultSortColumns = function (grid,sortColumns){ 24 var length = scope.gridPrefsModel.defaultSortColumns.length; 25 var defaultCoulmnNames = []; 26 27 scope.gridPrefsModel.defaultSortColumns.forEach(function(defaultSortColumn){ 28 defaultCoulmnNames.push(defaultSortColumn.columnName); 29 }); 30 31 for(var i=0; i<length ; i++){ 32 var columnName = scope.gridPrefsModel.defaultSortColumns[i].columnName; 33 var sortingDirection = scope.gridPrefsModel.defaultSortColumns[i].sortingDirection; 34 var column = grid.getColumn(columnName); 35 column.sort.priority = i;
36 column.sort.direction = column.sort.direction ? column.sort.direction : sortingDirection; 37 } 38 39 if(sortColumns && sortColumns.length >0){ 40 var j=0; 41 sortColumns.forEach(function(sortcolu){ 42 if(defaultCoulmnNames.indexOf(sortcolu.colDef.name) == -1){ 43 sortcolu.sort.priority = j + length; 44 j++; 45 } 46 }); 47 } 48 } 49 50 scope.gridPrefsModel.gridOptions.onRegisterApi = function(gridApi){ 51 scope.gridPrefsModel.gridApi = gridApi; 52 53 54 55 /*------------------------------------------------- 56 * Column level prefs event handling starts here 57 *------------------------------------------------*/ 58 if (gridApi.colMovable) { 59 gridApi.colMovable.on.columnPositionChanged(scope,function(colDef, originalPosition, newPosition){ 60 scope.gridPrefsModel.handleGridPrefsEvent(gridApi); 61 }); 62 } 63 64 gridApi.core.on.columnVisibilityChanged(scope, function (column) { 65 scope.gridPrefsModel.handleGridPrefsEvent(gridApi); 66 }); 67 68 if(gridApi.pinning){ 69 gridApi.pinning.on.columnPinned(scope, function(colDef,rightOrLeft){ 70 if (!rightOrLeft || (rightOrLeft == "right")) { 71 $rootScope.$broadcast("uiGrid-column-pinned-right",scope.gridPrefsModel.pageName); 72 } 73 scope.gridPrefsModel.handleGridPrefsEvent(gridApi); 74 }); 75 } 76 77 gridApi.core.on.sortChanged(scope, function(grid, sortColumns){ 78 if (!scope.pageLoad) { 79 if(scope.gridPrefsModel.defaultSortColumns){ 80 scope.gridPrefsModel.addDefaultSortColumns(grid,sortColumns); 81 } 82 scope.gridPrefsModel.handleGridPrefsEvent(gridApi); 83 } 84 }); 85 86 /*------------------------------------------------- 87 * Grid level prefs event handling starts here 88 *------------------------------------------------*/ 89 if (attrs.uiGridPagination == "") { 90 gridApi.pagination.on.paginationChanged(scope, function (currentPage,pageSize) { 91 GridPreferencesService.saveUserGridLevelPrefs(scope.gridPrefsModel.pageName,pageSize); 92 }); 93 } 94 95 $timeout(function(){ 96 scope.pageLoad = false; 97 98 if (attrs.useAggregates && attrs.useAggregates == 'true') { 99 $(".ui-grid-footer-aggregates-row").addClass("aggregates-with-headers"); 100 } 101 },250); 102 103 104 if (scope.gridPrefsModel.gridApiFunction) { 105 scope.gridPrefsModel.gridApiFunction(gridApi); 106 } 107 }; 108 109 } 110 } 111}]);
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.