<!DOCTYPE html>
<html data-ng-app="demo">
<head>
<script data-require="jquery@*" data-semver="2.1.3" src="http://code.jquery.com/jquery-2.1.3.min.js"></script>
<script data-require="angular.js@1.3.14" data-semver="1.3.15" src="https://code.angularjs.org/1.3.15/angular.js"></script>
<script data-require="angular-sanitize@1.3.14" data-semver="1.3.14" src="https://code.angularjs.org/1.3.14/angular-sanitize.js"></script>
<script data-require="bootstrap@*" data-semver="3.3.2" src="//maxcdn.bootstrapcdn.com/bootstrap/3.3.2/js/bootstrap.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/angular-ui-bootstrap/0.13.0/ui-bootstrap-tpls.js"></script>
<script src="http://ajax.aspnetcdn.com/ajax/globalize/0.1.1/globalize.min.js"></script>
<script src="http://cdn3.devexpress.com/jslib/16.1.7/js/dx.all.js"></script>
<link href="http://cdn3.devexpress.com/jslib/16.1.7/css/dx.common.css" rel="stylesheet" />
<link href="http://cdn3.devexpress.com/jslib/16.1.7/css/dx.light.css" rel="stylesheet" id="theme-styles" />
<link data-require="bootstrap@*" data-semver="3.3.2" rel="stylesheet" href="//maxcdn.bootstrapcdn.com/bootstrap/3.3.2/css/bootstrap.min.css" />
<link rel="stylesheet" href="style.css" />
<script src="script.js"></script>
</head>
<body>
<div data-ng-controller="demo">
<div class="container-fluid">
<div class="row ">
<div class="col-sm-12 example ">
<div data-dx-data-grid="gridOptions" dx-item-alias="item">
<div data-options="dxTemplate: { name: 'groupTemplate' }">
<mydir group-data = $parent.groups val= item ></mydir>
</div>
</div>
</div>
</div>
</div>
</div>
</body>
</html>
// Code goes here
angular.module('demo', ['dx', 'ui.bootstrap'])
.directive('mydir', function () {
var directive = {};
directive.scope = {
val: '=',
groupData: '='
};
directive.restrict = 'E';
directive.link = function(scope, element, attr) {
var options = scope.val;
if(!scope.groupData)
return;
var newText = options.column.caption + ": " + scope.groupData[options.text.split('>>')[1]].label
scope.val.newText = newText;
};
directive.template = "<div>test directive text val is {{ val.newText }}</div>";
return directive;
})
.controller('demo', ['$scope', '$compile', demoController]);
function demoController($scope, $compile) {
$scope.data = [{
id: 0,
group: 0,
name: 'Zero',
description: 'I am the number 0'
}, {
id: 1,
group: 0,
name: 'One',
description: 'I am the number 1'
}, {
id: 2,
group: 0,
name: 'Two',
description: 'I am the number 2'
}, {
id: 3,
group: 1,
name: 'Three',
description: 'I am the number 3'
}, {
id: 4,
group: 1,
name: 'Four',
description: 'I am the number 4'
}, {
id: 5,
group: 1,
name: 'Five',
description: 'I am the number 5'
}];
$scope.groups = [{
id: 0,
ordinal: 1,
label: 'should be second'
}, {
id: 1,
ordinal: 0,
label: 'should be first'
}];
$scope.gridOptions = {
bindingOptions: {
dataSource: 'data'
},
columns: [{
caption: 'Group',
dataType: 'string',
groupIndex: 0,
dataField: 'group',
calculateSortValue: calculateGroupSortValue,
groupCellTemplate: "groupTemplate",
// function(container, options){
// container.text(options.column.caption + ": " + $scope.groups[options.text.split('>>')[1]].label);
// },
calculateGroupValue: function(data){
var sortValue = calculateGroupSortValue(data).toString();
if(sortValue.length < 5){
//add leading zeros
}
return sortValue + ">>" + data.group;
},
lookup: {
displayExpr: 'label',
valueExpr: 'id',
dataSource: $scope.groups
},
sortIndex: 1,
sortOrder: 'asc'
}, {
caption: 'Value',
dataField: 'name',
dataType: 'string',
allowHiding: false,
calculateSortValue: calculateSortValue,
sortIndex: 2,
sortOrder: 'asc'
}, {
caption: 'Description',
dataField: 'description',
dataType: 'string',
allowHeaderFiltering: false,
allowSorting: false
}],
filterRow: {
visible: true
},
headerFilter: {
visible: true
},
sorting: {
mode: 'none'
},
columnAutoWidth: true,
rowAlternationEnabled: true,
hoverStateEnabled: true,
showRowLines: true,
showBorders: true,
};
function calculateSortValue(rowData) {
return rowData.id;
}
function calculateGroupSortValue(rowData) {
return $scope.groups[rowData.group].ordinal;
}
}
/* Styles go here */
/* this is the bootstrap recommended CSS
* body {
* padding-top: 70px;
* }
*/
.example {
margin-top: 70px;
}