Material Design Data Table
This is a fork of the excellent md-data-table(https://github.com/daniel-nagy/md-data-table), a data grid component based on the
Material Design data tables in Angular Material.
The main purpose of this fork was to explore compatibility with ng-repeat-start/ng-repeat-end and the ability to add in table rows dynamically.
Specification for Material Design data tables can be found here.
Demo
http://danielnagy.me/md-data-table
Licenses
This software is provided free of change and without restriction under the MIT License
Usage
controller
angular.module('nutritionApp').controller('nutritionController', ['$nutrition', '$scope', function ($nutrition, $scope) {
'use strict';
$scope.selected = [];
$scope.query = {
filter: '',
order: 'name',
limit: 5,
page: 1
};
function success(desserts) {
$scope.desserts = desserts;
}
$scope.search = function (predicate) {
$scope.filter = predicate;
$scope.deferred = $nutrition.desserts.get($scope.query, success).$promise;
};
$scope.onOrderChange = function (order) {
return $nutrition.desserts.get($scope.query, success).$promise;
};
$scope.onPaginationChange = function (page, limit) {
return $nutrition.desserts.get($scope.query, success).$promise;
};
}]);
markup
<md-data-table-toolbar>
<h2 class="md-title">Nutrition</h2>
</md-data-table-toolbar>
<md-data-table-container>
<table md-data-table md-row-select="selected" md-progress="deferred">
<thead md-order="query.order" md-trigger="onOrderChange">
<tr>
<th name="Dessert" unit="100g serving" order-by="name"></th>
<th numeric name="Calories" order-by="calories.value"></th>
<th numeric name="Fat" unit="g" order-by="fat.value"></th>
<th numeric name="Carbs" unit="g" order-by="carbs.value"></th>
<th numeric name="Protein" unit="g" order-by="protein.value"></th>
<th numeric name="Sodium" unit="mg" order-by="sodium.value"></th>
<th numeric name="Calcium" unit="%" order-by="calcium.value"></th>
<th numeric name="Iron" unit="%" order-by="iron.value"></th>
</tr>
</thead>
<tbody>
<tr md-auto-select ng-repeat-start="dessert in desserts.data" class="md-data-table-row">
<td>{{dessert.name}}</td>
<td>{{dessert.calories.value}}</td>
<td>{{dessert.fat.value | number: 1}}</td>
<td>{{dessert.carbs.value}}</td>
<td>{{dessert.protein.value | number: 1}}</td>
<td>{{dessert.sodium.value}}</td>
<td show-unit>{{dessert.calcium.value}}</td>
<td show-unit>{{dessert.iron.value}}</td>
</tr>
<tr ng-repeat-end ng-show="dessert.showDetails">
<td colspan="8">
{{dessert.details}}
</td>
</tr>
</tbody>
</table>
</md-data-table-container>
<md-data-table-pagination md-limit="query.limit" md-page="query.page" md-total="{{desserts.total}}" md-trigger="onPaginationChange"></md-data-table-pagination>
Running the App Locally
Clone this repository to your local machine.
git clone https://github.com/DominicGaribaldi/md-data-table.git
cd md-data-table
Create a new branch for the issue you are working on.
git checkout -b my-issue
Install the package dependencies.
npm install
bower install
Run the application and visit 127.0.0.1:8000
in the browser.
grunt
Make your modifications and update the build.
grunt build
Create a pull request!