Skip to content

Commit

Permalink
add example with export to csv and update readme
Browse files Browse the repository at this point in the history
  • Loading branch information
esvit committed Oct 27, 2013
1 parent 40f9d61 commit 5f02894
Show file tree
Hide file tree
Showing 4 changed files with 131 additions and 1 deletion.
9 changes: 9 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,10 @@ Header row with titles and filters automatic generated on compilation step.

<a href='https://pledgie.com/campaigns/22338'><img alt='Click here to lend your support to: ngTable and make a donation at pledgie.com !' src='https://pledgie.com/campaigns/22338.png?skin_name=chrome' border='0' ></a>

## Plugins

* [Export to CSV](https://github.com/esvit/ng-table-export)

## Updates

### v0.3.0
Expand Down Expand Up @@ -42,9 +46,14 @@ bower install ng-table
* [Row template](http://bazalt-cms.com/ng-table/example/9)
* [Params in url](http://bazalt-cms.com/ng-table/example/5)
* [Ajax](http://bazalt-cms.com/ng-table/example/6)
* [Table with hidden pagination](http://bazalt-cms.com/ng-table/example/7)
* [Custom template(pagination)](http://bazalt-cms.com/ng-table/example/2)
* [Custom filters](http://bazalt-cms.com/ng-table/example/11)
* [Table with checkboxes](http://bazalt-cms.com/ng-table/example/10)
* [Table with grouping](http://bazalt-cms.com/ng-table/example/12)
* [Table with grouping with callback](http://bazalt-cms.com/ng-table/example/13)
* [Table with external control of data](http://bazalt-cms.com/ng-table/example/14)
* [Export to CSV](http://bazalt-cms.com/ng-table/example/15)

#### PS
Let me know if you are using **ng-table**. It will motivate me to work harder.
Expand Down
2 changes: 1 addition & 1 deletion examples/demo14.html
Original file line number Diff line number Diff line change
Expand Up @@ -95,7 +95,7 @@ <h2>Dataset: <select ng-model="dataset" ng-options="ds for ds in datasets"></sel

$defer.resolve(orderedData.slice((params.page() - 1) * params.count(), params.page() * params.count()));
},
$scope: { $data: {} },
$scope: { $data: {} }
});
})
</script>
Expand Down
73 changes: 73 additions & 0 deletions examples/demo15.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,73 @@
<!DOCTYPE html>
<!--[if lt IE 7]> <html class="no-js lt-ie9 lt-ie8 lt-ie7"> <![endif]-->
<!--[if IE 7]> <html class="no-js lt-ie9 lt-ie8"> <![endif]-->
<!--[if IE 8]> <html class="no-js lt-ie9"> <![endif]-->
<!--[if gt IE 8]><!--> <html class="no-js"> <!--<![endif]-->
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
<meta name="viewport" content="width=device-width">

<link rel="stylesheet" href="css/bootstrap.min.css">
<link rel="stylesheet" href="css/bootstrap-theme.min.css">
<script src="js/angular.min.js"></script>
<script src="../ng-table.src.js"></script>
<script src="js/ng-table-export.src.js"></script>
<link rel="stylesheet" href="../ng-table.css">
</head>
<body ng-app="main">
<h1>Export to CSV</h1>

<div ng-controller="DemoCtrl">

<a class="btn btn-primary" ng-mousedown="csv.generate()" ng-href="{{ csv.link() }}" download="test.csv">Export to CSV</a>

<table ng-table="tableParams" class="table" export-csv="csv">
<tr ng-repeat="user in $data">
<td data-title="'Name'">
{{user.name}}
</td>
<td data-title="'Age'">
{{user.age}}
</td>
</tr>
</table>

<script>
var app = angular.module('main', ['ngTable', 'ngTableExport']).
controller('DemoCtrl', function($scope, ngTableParams, $sce) {
var data = [{name: "Moroni", age: 50},
{name: "Tiancum", age: 43},
{name: "Jacob", age: 27},
{name: "Nephi", age: 29},
{name: "Enos", age: 34},
{name: "Tiancum", age: 43},
{name: "Jacob", age: 27},
{name: "Nephi", age: 29},
{name: "Enos", age: 34},
{name: "Tiancum", age: 43},
{name: "Jacob", age: 27},
{name: "Nephi", age: 29},
{name: "Enos", age: 34},
{name: "Tiancum", age: 43},
{name: "Jacob", age: 27},
{name: "Nephi", age: 29},
{name: "Enos", age: 34}];

$scope.tableParams = new ngTableParams({
page: 1, // show first page
count: 10 // count per page
}, {
total: data.length, // length of data
getData: function($defer, params) {
$defer.resolve(data.slice((params.page() - 1) * params.count(), params.page() * params.count()));
}
});
});
</script>

</div>


</body>
</html>
48 changes: 48 additions & 0 deletions examples/js/ng-table-export.src.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,48 @@
angular.module('ngTableExport', [])
.config(['$compileProvider', function($compileProvider) {
// allow data links
$compileProvider.aHrefSanitizationWhitelist(/^\s*(https?|ftp|mailto|data):/);
}])
.directive('exportCsv', ['$parse', function ($parse) {
return {
restrict: 'A',
scope: false,
link: function(scope, element, attrs) {
var data = '';
var csv = {
stringify: function(str) {
return '"' +
str.replace(/^\s\s*/, '').replace(/\s*\s$/, '') // trim spaces
.replace(/"/g,'""') + // replace quotes with double quotes
'"';
},
generate: function() {
data = '';
var rows = element.find('tr');
angular.forEach(rows, function(row, i) {
var tr = angular.element(row),
tds = tr.find('th'),
rowData = '';
if (tr.hasClass('ng-table-filters')) {
return;
}
if (tds.length == 0) {
tds = tr.find('td');
}
if (i != 1) {
angular.forEach(tds, function(td, i) {
rowData += csv.stringify(angular.element(td).text()) + ';';
});
rowData = rowData.slice(0, rowData.length - 1); //remove last semicolon
}
data += rowData + "\n";
});
},
link: function() {
return 'data:text/csv;charset=UTF-8,' + encodeURIComponent(data);
}
};
$parse(attrs.exportCsv).assign(scope.$parent, csv);
}
};
}]);

0 comments on commit 5f02894

Please sign in to comment.