PageSourceSearch

https://cdn.efleets.com/efm_shared/angular-ui-grid-extensions/1.0.0.35/javascript/directives/gridPrefs.js

js efleets.com collected 2026-09-28 08:46:49 UTC 4,601 bytes, 111 lines download raw bytes

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.