ag-grid
Version:
Advanced Javascript Datagrid. Supports raw Javascript, AngularJS 1.x, AngularJS 2.0 and Web Components
96 lines (77 loc) • 2.72 kB
JavaScript
var module = angular.module("example", ["agGrid"]);
module.controller("exampleCtrl", function($scope, $http) {
var columnDefs = [
{headerName: "Athlete", field: "athlete", width: 200, cellRenderer: {
renderer: 'group'
}},
{headerName: "Age", field: "age", width: 90, cellRenderer: ageRenderer},
{headerName: "Gold", field: "gold", width: 100},
{headerName: "Silver", field: "silver", width: 100},
{headerName: "Bronze", field: "bronze", width: 100},
{headerName: "Total", field: "total", width: 100},
{headerName: "Country", field: "country", width: 120},
{headerName: "Year", field: "year", width: 90},
{headerName: "Date", field: "date", width: 110},
{headerName: "Sport", field: "sport", width: 110}
];
$scope.gridOptions = {
columnDefs: columnDefs,
rowData: null,
groupUseEntireRow: false,
groupKeys: ['country','year'],
groupAggFunction: groupAggFunction,
groupSuppressAutoColumn: true,
rowStyle: rowStyleFunc
};
function ageRenderer(params) {
if (params.node.group) {
return '(' + params.data.minAge + '..' + params.data.maxAge + ')';
} else {
return params.value;
}
}
function rowStyleFunc(row, rowIndex, groupRow) {
if (groupRow) {
return {'font-weight': 'bold'};
} else {
return null;
}
}
function groupAggFunction(nodes) {
var sums = {
gold: 0,
silver: 0,
bronze: 0,
total: 0,
minAge: 100,
maxAge: 0,
};
nodes.forEach(function(node) {
var data = node.data;
if (node.group) {
if (sums.minAge > data.minAge) {
sums.minAge = data.minAge;
}
if (sums.maxAge < data.maxAge) {
sums.maxAge = data.maxAge;
}
} else {
if (sums.minAge > data.age) {
sums.minAge = data.age;
}
if (sums.maxAge < data.age) {
sums.maxAge = data.age;
}
}
sums.gold += data.gold;
sums.silver += data.silver;
sums.bronze += data.bronze;
sums.total += data.total;
});
return sums;
}
$http.get("../olympicWinners.json")
.then(function(res){
$scope.gridOptions.api.setRowData(res.data);
});
});