From f0a8be659b14887b78b2d243191df8396dacb4b0 Mon Sep 17 00:00:00 2001 From: jonricaurte Date: Mon, 26 Nov 2012 17:37:49 -0800 Subject: [PATCH] Fixed some bugs. --- build/ng-grid.debug.js | 81 +++++++++------------------ ng-grid-1.3.0.debug.js | 81 +++++++++------------------ src/classes/column.js | 65 +++++++-------------- src/directives/ng-grid.js | 10 ++-- src/templates/cellTemplate.html | 2 +- src/templates/headerCellTemplate.html | 2 +- workbench/index3.html | 5 +- workbench/main.js | 6 +- 8 files changed, 89 insertions(+), 163 deletions(-) diff --git a/build/ng-grid.debug.js b/build/ng-grid.debug.js index 26db273092..f4539805cc 100644 --- a/build/ng-grid.debug.js +++ b/build/ng-grid.debug.js @@ -2,7 +2,7 @@ * ng-grid JavaScript Library * Authors: https://github.com/Crash8308/ng-grid/blob/master/README.md * License: MIT (http://www.opensource.org/licenses/mit-license.php) -* Compiled At: 11/26/2012 17:08:29 +* Compiled At: 11/26/2012 17:33:31 ***********************************************/ (function(window, undefined){ @@ -687,7 +687,7 @@ ng.defaultRowTemplate = function(){ return '
{{row.getProperty(col.field) CUSTOM_FILTERS}}
\'';}; +ng.defaultCellTemplate = function(){ return '
{{row.getProperty(col.field) CUSTOM_FILTERS}}
';}; /*********************************************** * FILE: ..\src\templates\aggregateTemplate.html @@ -702,7 +702,7 @@ ng.defaultHeaderRowTemplate = function(){ return '
{{col.displayName}}
';}; +ng.defaultHeaderCellTemplate = function(){ return '
{{col.displayName}}
';}; /*********************************************** * FILE: ..\src\classes\aggregate.js @@ -995,80 +995,56 @@ ng.AggregateProvider = function (grid, $scope, gridService,domUtilityService) { ***********************************************/ ng.Column = function (config, $scope, grid, domUtilityService) { var self = this, - colDef = config.colDef; + colDef = config.colDef, + delay = 500, + clicks = 0, + timer = null; self.width = colDef.width; self.widthIsConfigured = false; self.minWidth = !colDef.minWidth ? 50 : colDef.minWidth; self.maxWidth = !colDef.maxWidth ? 9000 : colDef.maxWidth; self.headerRowHeight = config.headerRowHeight; self.widthWatcher = null; + self.displayName = colDef.displayName || colDef.field; + self.index = config.index; self.isAggCol = config.isAggCol; + self.cellClass = colDef.cellClass; + self.cellFilter = colDef.cellFilter ? "|" + colDef.cellFilter : ""; self.field = colDef.field; self.aggLabelFilter = colDef.cellFilter || colDef.aggLabelFilter; self.defaultCellTemplate = ng.defaultCellTemplate().replace(CUSTOM_FILTERS, self.cellFilter); - self.visible = colDef.visible == undefined ? true : colDef.visible; + self.visible = ng.utils.isNullOrUndefined(colDef.visible) || colDef.visible; + self.sortable = ng.utils.isNullOrUndefined(colDef.sortable) || colDef.sortable; + self.resizable = ng.utils.isNullOrUndefined(colDef.resizable) || colDef.resizable; + self.sortDirection = undefined; + self.sortingAlgorithm = colDef.sortFn; + self.headerClass = colDef.headerClass; self.toggleVisible = function() { self.visible = !self.visible; }; - if (!colDef.displayName) { - // Allow empty column names -- do not check for empty string - colDef.displayName = colDef.field; - } - self.displayName = colDef.displayName; - self.index = config.index; - - //sorting - if (colDef.sortable === undefined || colDef.sortable === null) { - colDef.sortable = true; - } - - //resizing - if (colDef.resizable === undefined || colDef.resizable === null) { - colDef.resizable = true; - } - - self.allowSort = colDef.sortable; - self.allowResize = config.enableResize ? colDef.resizable : false; - - self.sortDirection = undefined; - self.sortingAlgorithm = colDef.sortFn; - //cell Template self.cellTemplate = function() { return colDef.cellTemplate || self.defaultCellTemplate; }; - self.hasCellTemplate = (self.cellTemplate ? true : false); - - self.cellClass = colDef.cellClass; - self.cellFilter = colDef.cellFilter ? "|" + colDef.cellFilter : ""; - self.headerClass = colDef.headerClass; - self.headerCellTemplate = function() { return colDef.headerCellTemplate || ng.defaultHeaderCellTemplate(); - }; - + }; self.showSortButtonUp = function () { - return self.allowSort ? self.sortDirection === DESC : self.allowSort; + return self.sortable ? self.sortDirection === DESC : self.sortable; }; self.showSortButtonDown = function () { - return self.allowSort ? self.sortDirection === ASC : self.allowSort; - }; - + return self.sortable ? self.sortDirection === ASC : self.sortable; + }; self.noSortVisible = function () { return !self.sortDirection; }; - self.sort = function () { - if (!self.allowSort) { + if (!self.sortable) { return; // column sorting is disabled, do nothing } var dir = self.sortDirection === ASC ? DESC : ASC; self.sortDirection = dir; config.sortCallback(self, dir); - }; - var delay = 500, - clicks = 0, - timer = null; - + }; self.gripClick = function () { clicks++; //count clicks if (clicks === 1) { @@ -1082,7 +1058,6 @@ ng.Column = function (config, $scope, grid, domUtilityService) { clicks = 0; //after action performed, reset counter } }; - self.gripOnMouseDown = function (event) { if (event.ctrlKey) { self.toggleVisible(); @@ -2090,11 +2065,11 @@ ngGridDirectives.directive('ngGrid', ['$compile', 'GridService', 'SortService', var $element = $(iElement); var options = $scope.$eval(iAttrs.ngGrid); var gridDim = new ng.Dimension({ outerHeight: $($element).height(), outerWidth: $($element).width() }); - var grid = new ng.Grid($scope, options, gridDim, SortService, DomUtilityService); + var grid = new ng.Grid($scope, options, gridDim, sortService, domUtilityService); var htmlText = ng.defaultGridTemplate(grid.config); - GridService.StoreGrid($element, grid); + gridService.StoreGrid($element, grid); grid.footerController = new ng.Footer($scope, grid); - DomUtilityService.MeasureGrid($element, grid, true); + domUtilityService.MeasureGrid($element, grid, true); // if it is a string we can watch for data changes. otherwise you won't be able to update the grid data if (typeof options.data == "string") { $scope.$parent.$watch(options.data, function (a) { @@ -2112,9 +2087,9 @@ ngGridDirectives.directive('ngGrid', ['$compile', 'GridService', 'SortService', grid.initPhase = 1; iElement.append($compile(htmlText)($scope));// make sure that if any of these change, we re-fire the calc logic //walk the element's graph and the correct properties on the grid - DomUtilityService.AssignGridContainers($element, grid); + domUtilityService.AssignGridContainers($element, grid); //now use the manager to assign the event handlers - GridService.AssignGridEventHandlers($scope, grid); + gridService.AssignGridEventHandlers($scope, grid); grid.aggregateProvider = new ng.AggregateProvider(grid, $scope.$new(), gridService, domUtilityService); //initialize plugins. angular.forEach(options.plugins, function (p) { diff --git a/ng-grid-1.3.0.debug.js b/ng-grid-1.3.0.debug.js index 26db273092..f4539805cc 100644 --- a/ng-grid-1.3.0.debug.js +++ b/ng-grid-1.3.0.debug.js @@ -2,7 +2,7 @@ * ng-grid JavaScript Library * Authors: https://github.com/Crash8308/ng-grid/blob/master/README.md * License: MIT (http://www.opensource.org/licenses/mit-license.php) -* Compiled At: 11/26/2012 17:08:29 +* Compiled At: 11/26/2012 17:33:31 ***********************************************/ (function(window, undefined){ @@ -687,7 +687,7 @@ ng.defaultRowTemplate = function(){ return '
{{row.getProperty(col.field) CUSTOM_FILTERS}}
\'';}; +ng.defaultCellTemplate = function(){ return '
{{row.getProperty(col.field) CUSTOM_FILTERS}}
';}; /*********************************************** * FILE: ..\src\templates\aggregateTemplate.html @@ -702,7 +702,7 @@ ng.defaultHeaderRowTemplate = function(){ return '
{{col.displayName}}
';}; +ng.defaultHeaderCellTemplate = function(){ return '
{{col.displayName}}
';}; /*********************************************** * FILE: ..\src\classes\aggregate.js @@ -995,80 +995,56 @@ ng.AggregateProvider = function (grid, $scope, gridService,domUtilityService) { ***********************************************/ ng.Column = function (config, $scope, grid, domUtilityService) { var self = this, - colDef = config.colDef; + colDef = config.colDef, + delay = 500, + clicks = 0, + timer = null; self.width = colDef.width; self.widthIsConfigured = false; self.minWidth = !colDef.minWidth ? 50 : colDef.minWidth; self.maxWidth = !colDef.maxWidth ? 9000 : colDef.maxWidth; self.headerRowHeight = config.headerRowHeight; self.widthWatcher = null; + self.displayName = colDef.displayName || colDef.field; + self.index = config.index; self.isAggCol = config.isAggCol; + self.cellClass = colDef.cellClass; + self.cellFilter = colDef.cellFilter ? "|" + colDef.cellFilter : ""; self.field = colDef.field; self.aggLabelFilter = colDef.cellFilter || colDef.aggLabelFilter; self.defaultCellTemplate = ng.defaultCellTemplate().replace(CUSTOM_FILTERS, self.cellFilter); - self.visible = colDef.visible == undefined ? true : colDef.visible; + self.visible = ng.utils.isNullOrUndefined(colDef.visible) || colDef.visible; + self.sortable = ng.utils.isNullOrUndefined(colDef.sortable) || colDef.sortable; + self.resizable = ng.utils.isNullOrUndefined(colDef.resizable) || colDef.resizable; + self.sortDirection = undefined; + self.sortingAlgorithm = colDef.sortFn; + self.headerClass = colDef.headerClass; self.toggleVisible = function() { self.visible = !self.visible; }; - if (!colDef.displayName) { - // Allow empty column names -- do not check for empty string - colDef.displayName = colDef.field; - } - self.displayName = colDef.displayName; - self.index = config.index; - - //sorting - if (colDef.sortable === undefined || colDef.sortable === null) { - colDef.sortable = true; - } - - //resizing - if (colDef.resizable === undefined || colDef.resizable === null) { - colDef.resizable = true; - } - - self.allowSort = colDef.sortable; - self.allowResize = config.enableResize ? colDef.resizable : false; - - self.sortDirection = undefined; - self.sortingAlgorithm = colDef.sortFn; - //cell Template self.cellTemplate = function() { return colDef.cellTemplate || self.defaultCellTemplate; }; - self.hasCellTemplate = (self.cellTemplate ? true : false); - - self.cellClass = colDef.cellClass; - self.cellFilter = colDef.cellFilter ? "|" + colDef.cellFilter : ""; - self.headerClass = colDef.headerClass; - self.headerCellTemplate = function() { return colDef.headerCellTemplate || ng.defaultHeaderCellTemplate(); - }; - + }; self.showSortButtonUp = function () { - return self.allowSort ? self.sortDirection === DESC : self.allowSort; + return self.sortable ? self.sortDirection === DESC : self.sortable; }; self.showSortButtonDown = function () { - return self.allowSort ? self.sortDirection === ASC : self.allowSort; - }; - + return self.sortable ? self.sortDirection === ASC : self.sortable; + }; self.noSortVisible = function () { return !self.sortDirection; }; - self.sort = function () { - if (!self.allowSort) { + if (!self.sortable) { return; // column sorting is disabled, do nothing } var dir = self.sortDirection === ASC ? DESC : ASC; self.sortDirection = dir; config.sortCallback(self, dir); - }; - var delay = 500, - clicks = 0, - timer = null; - + }; self.gripClick = function () { clicks++; //count clicks if (clicks === 1) { @@ -1082,7 +1058,6 @@ ng.Column = function (config, $scope, grid, domUtilityService) { clicks = 0; //after action performed, reset counter } }; - self.gripOnMouseDown = function (event) { if (event.ctrlKey) { self.toggleVisible(); @@ -2090,11 +2065,11 @@ ngGridDirectives.directive('ngGrid', ['$compile', 'GridService', 'SortService', var $element = $(iElement); var options = $scope.$eval(iAttrs.ngGrid); var gridDim = new ng.Dimension({ outerHeight: $($element).height(), outerWidth: $($element).width() }); - var grid = new ng.Grid($scope, options, gridDim, SortService, DomUtilityService); + var grid = new ng.Grid($scope, options, gridDim, sortService, domUtilityService); var htmlText = ng.defaultGridTemplate(grid.config); - GridService.StoreGrid($element, grid); + gridService.StoreGrid($element, grid); grid.footerController = new ng.Footer($scope, grid); - DomUtilityService.MeasureGrid($element, grid, true); + domUtilityService.MeasureGrid($element, grid, true); // if it is a string we can watch for data changes. otherwise you won't be able to update the grid data if (typeof options.data == "string") { $scope.$parent.$watch(options.data, function (a) { @@ -2112,9 +2087,9 @@ ngGridDirectives.directive('ngGrid', ['$compile', 'GridService', 'SortService', grid.initPhase = 1; iElement.append($compile(htmlText)($scope));// make sure that if any of these change, we re-fire the calc logic //walk the element's graph and the correct properties on the grid - DomUtilityService.AssignGridContainers($element, grid); + domUtilityService.AssignGridContainers($element, grid); //now use the manager to assign the event handlers - GridService.AssignGridEventHandlers($scope, grid); + gridService.AssignGridEventHandlers($scope, grid); grid.aggregateProvider = new ng.AggregateProvider(grid, $scope.$new(), gridService, domUtilityService); //initialize plugins. angular.forEach(options.plugins, function (p) { diff --git a/src/classes/column.js b/src/classes/column.js index f1491798f4..d4e3c48dca 100644 --- a/src/classes/column.js +++ b/src/classes/column.js @@ -1,79 +1,55 @@ ng.Column = function (config, $scope, grid, domUtilityService) { var self = this, - colDef = config.colDef; + colDef = config.colDef, + delay = 500, + clicks = 0, + timer = null; self.width = colDef.width; self.widthIsConfigured = false; self.minWidth = !colDef.minWidth ? 50 : colDef.minWidth; self.maxWidth = !colDef.maxWidth ? 9000 : colDef.maxWidth; self.headerRowHeight = config.headerRowHeight; self.widthWatcher = null; + self.displayName = colDef.displayName || colDef.field; + self.index = config.index; self.isAggCol = config.isAggCol; + self.cellClass = colDef.cellClass; + self.cellFilter = colDef.cellFilter ? "|" + colDef.cellFilter : ""; self.field = colDef.field; self.aggLabelFilter = colDef.cellFilter || colDef.aggLabelFilter; self.defaultCellTemplate = ng.defaultCellTemplate().replace(CUSTOM_FILTERS, self.cellFilter); - self.visible = colDef.visible == undefined ? true : colDef.visible; + self.visible = ng.utils.isNullOrUndefined(colDef.visible) || colDef.visible; + self.sortable = ng.utils.isNullOrUndefined(colDef.sortable) || colDef.sortable; + self.resizable = ng.utils.isNullOrUndefined(colDef.resizable) || colDef.resizable; + self.sortDirection = undefined; + self.sortingAlgorithm = colDef.sortFn; + self.headerClass = colDef.headerClass; self.toggleVisible = function() { self.visible = !self.visible; }; - if (!colDef.displayName) { - // Allow empty column names -- do not check for empty string - colDef.displayName = colDef.field; - } - self.displayName = colDef.displayName; - self.index = config.index; - - //sorting - if (colDef.sortable === undefined || colDef.sortable === null) { - colDef.sortable = true; - } - - //resizing - if (colDef.resizable === undefined || colDef.resizable === null) { - colDef.resizable = true; - } - - self.allowSort = colDef.sortable; - self.allowResize = config.enableResize ? colDef.resizable : false; - - self.sortDirection = undefined; - self.sortingAlgorithm = colDef.sortFn; - //cell Template self.cellTemplate = function() { return colDef.cellTemplate || self.defaultCellTemplate; }; - self.hasCellTemplate = (self.cellTemplate ? true : false); - - self.cellClass = colDef.cellClass; - self.cellFilter = colDef.cellFilter ? "|" + colDef.cellFilter : ""; - self.headerClass = colDef.headerClass; - self.headerCellTemplate = function() { return colDef.headerCellTemplate || ng.defaultHeaderCellTemplate(); - }; - + }; self.showSortButtonUp = function () { - return self.allowSort ? self.sortDirection === DESC : self.allowSort; + return self.sortable ? self.sortDirection === DESC : self.sortable; }; self.showSortButtonDown = function () { - return self.allowSort ? self.sortDirection === ASC : self.allowSort; - }; - + return self.sortable ? self.sortDirection === ASC : self.sortable; + }; self.noSortVisible = function () { return !self.sortDirection; }; - self.sort = function () { - if (!self.allowSort) { + if (!self.sortable) { return; // column sorting is disabled, do nothing } var dir = self.sortDirection === ASC ? DESC : ASC; self.sortDirection = dir; config.sortCallback(self, dir); - }; - var delay = 500, - clicks = 0, - timer = null; - + }; self.gripClick = function () { clicks++; //count clicks if (clicks === 1) { @@ -87,7 +63,6 @@ clicks = 0; //after action performed, reset counter } }; - self.gripOnMouseDown = function (event) { if (event.ctrlKey) { self.toggleVisible(); diff --git a/src/directives/ng-grid.js b/src/directives/ng-grid.js index 05ecd17d50..e6094e4811 100644 --- a/src/directives/ng-grid.js +++ b/src/directives/ng-grid.js @@ -7,11 +7,11 @@ var $element = $(iElement); var options = $scope.$eval(iAttrs.ngGrid); var gridDim = new ng.Dimension({ outerHeight: $($element).height(), outerWidth: $($element).width() }); - var grid = new ng.Grid($scope, options, gridDim, SortService, DomUtilityService); + var grid = new ng.Grid($scope, options, gridDim, sortService, domUtilityService); var htmlText = ng.defaultGridTemplate(grid.config); - GridService.StoreGrid($element, grid); + gridService.StoreGrid($element, grid); grid.footerController = new ng.Footer($scope, grid); - DomUtilityService.MeasureGrid($element, grid, true); + domUtilityService.MeasureGrid($element, grid, true); // if it is a string we can watch for data changes. otherwise you won't be able to update the grid data if (typeof options.data == "string") { $scope.$parent.$watch(options.data, function (a) { @@ -29,9 +29,9 @@ grid.initPhase = 1; iElement.append($compile(htmlText)($scope));// make sure that if any of these change, we re-fire the calc logic //walk the element's graph and the correct properties on the grid - DomUtilityService.AssignGridContainers($element, grid); + domUtilityService.AssignGridContainers($element, grid); //now use the manager to assign the event handlers - GridService.AssignGridEventHandlers($scope, grid); + gridService.AssignGridEventHandlers($scope, grid); grid.aggregateProvider = new ng.AggregateProvider(grid, $scope.$new(), gridService, domUtilityService); //initialize plugins. angular.forEach(options.plugins, function (p) { diff --git a/src/templates/cellTemplate.html b/src/templates/cellTemplate.html index 92f666f8da..4217494daa 100644 --- a/src/templates/cellTemplate.html +++ b/src/templates/cellTemplate.html @@ -1,2 +1,2 @@ -'
{{row.getProperty(col.field) CUSTOM_FILTERS}}
' \ No newline at end of file +
{{row.getProperty(col.field) CUSTOM_FILTERS}}
\ No newline at end of file diff --git a/src/templates/headerCellTemplate.html b/src/templates/headerCellTemplate.html index 48a6697b99..c0b06f2ef1 100644 --- a/src/templates/headerCellTemplate.html +++ b/src/templates/headerCellTemplate.html @@ -4,4 +4,4 @@
-
\ No newline at end of file +
\ No newline at end of file diff --git a/workbench/index3.html b/workbench/index3.html index 9a01dad888..a404efc9a0 100644 --- a/workbench/index3.html +++ b/workbench/index3.html @@ -14,7 +14,7 @@ - +
Center -
+
North
diff --git a/workbench/main.js b/workbench/main.js index db66b25ed7..28b24b55d4 100644 --- a/workbench/main.js +++ b/workbench/main.js @@ -56,9 +56,9 @@ function userController($scope) { plugins: [plugins.ngGridLayoutPlugin], filterOptions: $scope.filterOptions, pagingOptions: $scope.pagingOptions, - columnDefs: [{ field: 'name', displayName: 'Very Long Name Title'}, - { field: 'allowance', width: 'auto', aggLabelFilter: 'currency', cellTemplate: '
{{row.entity[col.field] | currency}}
' }, - { field: 'birthday', width: '120px', cellFilter: 'date' }, + columnDefs: [{ field: 'name', displayName: 'Very Long Name Title', sortable: false}, + { field: 'allowance', width: 120, aggLabelFilter: 'currency', cellTemplate: '
{{row.entity[col.field] | currency}}
' }, + { field: 'birthday', width: '120px', cellFilter: 'date', resizable: false }, { field: 'paid', width: '*', cellFilter: 'checkmark' }] }; $scope.myData2 = [{ 'Sku': 'C-2820164', 'Vendor': 'NEWB', 'SeasonCode': null, 'Mfg_Id': '573-9880954', 'UPC': '822860449228' },