<!DOCTYPE html>
<html>
<head>
<link rel="stylesheet" href="//cdn.datatables.net/1.10.1/css/jquery.dataTables.css" />
</head>
<body ng-app="datatablesSampleApp">
<div ng-controller="simpleCtrl" class="code">
<table datatable="" dt-options="dtOptions" dt-columns="dtColumns"></table>
</div>
<script data-require="jquery@1.10.1" data-semver="1.10.1" src="http://code.jquery.com/jquery-1.10.1.min.js"></script>
<script src="//cdn.datatables.net/1.10.1/js/jquery.dataTables.js"></script>
<script src="http://code.angularjs.org/1.3.5/angular.js"></script>
<script src="https://code.angularjs.org/1.3.5/angular-resource.js"></script>
<script type="text/javascript" src="https://rawgithub.com/l-lin/angular-datatables/master/dist/angular-datatables.min.js"></script>
<script src="script.js"></script>
</body>
</html>
(function(angular) {
'use strict';
angular.module('datatablesSampleApp', ['ngResource', 'datatables']).controller('simpleCtrl', function($scope, $compile, DTOptionsBuilder, DTColumnBuilder, $resource) {
$scope.dtOptions = DTOptionsBuilder.newOptions()
.withOption('responsive', true)
.withOption("bProcessing", true)
.withOption('bServerSide', true)
.withOption('bFilter', false)
.withOption('ajax', {
url: 'data.json',
dataType: 'json',
type: "GET"
})
.withDataProp('data')
.withOption('aLengthMenu', [10, 20, 50, 100, 500])
.withOption('iDisplayLength', 10)
.withPaginationType('full_numbers')
.withOption('createdRow', function(row, data, dataIndex) {
$compile(angular.element(row).contents())($scope);
});
$scope.dtColumns = [
DTColumnBuilder.newColumn('id').withTitle('Request #'),
DTColumnBuilder.newColumn('type').withTitle('Type'),
DTColumnBuilder.newColumn('name').withTitle('Name').notSortable(),
DTColumnBuilder.newColumn('version').withTitle('Version/Revision/Id').notSortable(),
DTColumnBuilder.newColumn('primaryContact').withTitle('Primary Contact'),
DTColumnBuilder.newColumn('submittedDate').withTitle('Submitted Date'),
DTColumnBuilder.newColumn('status').withTitle('Status'),
DTColumnBuilder.newColumn(null).withTitle('Actions').notSortable()
.renderWith(function(data, type, full, meta) {
if (data.status != "CLOSED") {
return '<button class="btn btn-primary" ng-click="edit(' + data.id + ')">' +
' <i class="fa fa-eye"></i>' + "View" +
'</button> ' + '<button class="btn btn-warning" ng-click="edit(' + data.id + ')">' +
' <i class="fa fa-edit"></i>' + "Edit" +
'</button> ' +
'<button class="btn btn-danger" ng-click="delete(' + data.id + ')">' +
' <i class="fa fa-trash-o"></i>' + "Delete"
'</button>';
} else {
return '<button class="btn btn-primary" ng-click="edit(' + data.id + ')">' +
' <i class="fa fa-eye"></i>' + "View" +
'</button> ' + '<button class="btn btn-warning" ng-click="update(' + data.id + ')">' +
' <i class="fa fa-clipboard"></i>' + "Clone" +
'</button> ' +
'<button class="btn btn-primary" ng-click="delete(' + data.id + ')">' +
' <i class="fa fa-refresh"></i>' + "Update"
'</button>';
}
})
];
});
})(angular);
{
"data": [{
"id": 860,
"type": "type860",
"name": "Foo",
"version": "v1.0.0",
"primaryContact": "abc@edf.fr",
"submittedDate": "2014-12-18",
"status": "OPEN"
}]
}