ag-grid
Version:
Advanced Javascript Datagrid. Supports raw Javascript, AngularJS 1.x, AngularJS 2.0 and Web Components
77 lines (63 loc) • 3.05 kB
JavaScript
var module = angular.module("example", ["agGrid"]);
module.controller("exampleCtrl", function($scope, $http) {
var columnDefs = [
{headerName: "Athlete", field: "athlete", width: 150, filter: PersonFilter},
{headerName: "Age", field: "age", width: 90, filter: 'number'},
{headerName: "Country", field: "country", width: 120},
{headerName: "Year", field: "year", width: 90},
{headerName: "Date", field: "date", width: 110},
{headerName: "Sport", field: "sport", width: 110},
{headerName: "Gold", field: "gold", width: 100, filter: 'number'},
{headerName: "Silver", field: "silver", width: 100, filter: 'number'},
{headerName: "Bronze", field: "bronze", width: 100, filter: 'number'},
{headerName: "Total", field: "total", width: 100, filter: 'number'}
];
$scope.gridOptions = {
columnDefs: columnDefs,
rowData: null,
enableFilter: true,
angularCompileFilters: true
};
$http.get("../olympicWinners.json")
.then(function(res){
$scope.gridOptions.api.setRowData(res.data);
});
function PersonFilter() {
}
PersonFilter.prototype.init = function (params) {
this.$scope = params.$scope;
this.$scope.onFilterChanged = function() {
params.filterChangedCallback();
};
this.valueGetter = params.valueGetter;
};
PersonFilter.prototype.getGui = function () {
return '<div style="padding: 4px; width: 200px;">' +
'<div style="font-weight: bold;">Custom Athlete Filter</div>' +
'<div><input style="margin: 4px 0px 4px 0px;" type="text" ng-model="filterText" ng-change="onFilterChanged()" placeholder="Full name search..."/></div>' +
'<div style="margin-top: 20px;">This filter does partial word search on multiple words, eg "mich phel" still brings back Michael Phelps.</div>' +
'<div style="margin-top: 20px;">Just to iterate anything can go in here, here is an image!!</div>' +
'<div><img src="../angularjs.png" style="width: 150px; text-align: center"/></div>' +
'</div>';
};
PersonFilter.prototype.doesFilterPass = function (params) {
var filterText = this.$scope.filterText;
if (!filterText) {
return true;
}
// make sure each word passes separately, ie search for firstname, lastname
var passed = true;
var valueGetter = this.valueGetter;
filterText.toLowerCase().split(" ").forEach(function(filterWord) {
var value = valueGetter(params);
if (value.toString().toLowerCase().indexOf(filterWord)<0) {
passed = false;
}
});
return passed;
};
PersonFilter.prototype.isFilterActive = function () {
var value = this.$scope.filterText;
return value !== null && value !== undefined && value !== '';
};
});