Skip to content

Commit 479d10d

Browse files
committed
added support in column order
1 parent e84432f commit 479d10d

File tree

3 files changed

+7
-3
lines changed

3 files changed

+7
-3
lines changed

README.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -53,6 +53,7 @@ ngCsv attributes
5353
<button type="button" ng-csv="getArray()" csv-header="['Field A', 'Field B', 'Field C']" filename="test.csv">Export</button>
5454
```
5555

56+
* csv-column-order: Defines the column order to be set when creating the body of the CSV (may be according to the csv-headers) - use it when you have an array of objects.
5657
* field-separator: Defines the field separator character (default is ,)
5758
* decimal-separator: Defines the decimal separator character (default is .). If set to "locale", it uses the [language sensitive representation of the number](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number/toLocaleString).
5859
* text-delimiter: If provided, will use this characters to "escape" fields, otherwise will use double quotes as deafult

src/ng-csv/directives/ng-csv.js

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ angular.module('ngCsv.directives').
1212
data: '&ngCsv',
1313
filename: '@filename',
1414
header: '&csvHeader',
15+
columnOrder: '&csvColumnOrder',
1516
txtDelim: '@textDelimiter',
1617
decimalSep: '@decimalSeparator',
1718
quoteStrings: '@quoteStrings',
@@ -49,7 +50,7 @@ angular.module('ngCsv.directives').
4950
addByteOrderMarker: $scope.addByteOrderMarker
5051
};
5152
if (angular.isDefined($attrs.csvHeader)) options.header = $scope.$eval($scope.header);
52-
53+
if (angular.isDefined($attrs.csvColumnOrder)) options.columnOrder = $scope.$eval($scope.columnOrder);
5354

5455
options.fieldSep = $scope.fieldSep ? $scope.fieldSep : ",";
5556

src/ng-csv/services/csv-service.js

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -102,8 +102,10 @@ angular.module('ngCsv.services').
102102

103103
infoArray = [];
104104

105-
angular.forEach(row, function (field, key) {
106-
this.push(that.stringifyField(field, options));
105+
var iterator = !!options.columnOrder ? options.columnOrder : row;
106+
angular.forEach(iterator, function (field, key) {
107+
var val = !!options.columnOrder ? row[field] : field;
108+
this.push(that.stringifyField(val, options));
107109
}, infoArray);
108110

109111
dataString = infoArray.join(options.fieldSep ? options.fieldSep : ",");

0 commit comments

Comments
 (0)