Wijmo 5 - FlexGrid Drop-downs
by Ross Dederer
HTML
<link rel="stylesheet" href="http://maxcdn.bootstrapcdn.com/bootstrap/3.3.1/css/bootstrap.min.css">
<script src="http://prerelease.componentone.com/wijmo5/latest/controls/wijmo.min.js"></script>
<link rel="stylesheet" href="http://prerelease.componentone.com/wijmo5/latest/styles/wijmo.min.css">
<script src="http://prerelease.componentone.com/wijmo5/latest/controls/wijmo.grid.min.js"></script>
<script src="http://prerelease.componentone.com/wijmo5/latest/controls/wijmo.input.min.js"></script>
<script src="http://prerelease.componentone.com/wijmo5/latest/controls/wijmo.chart.min.js"></script>
<script src="http://prerelease.componentone.com/wijmo5/latest/controls/wijmo.grid.filter.min.js"></script>
<script src="http://prerelease.componentone.com/wijmo5/latest/interop/angular/wijmo.angular.min.js"></script>
<!-- mark this as an Angular application and give it a controller -->
<span class="wj-glyph-filter"></span>
<div ng-app="app" ng-controller="appCtrl">
<wj-flex-grid items-source="data" control="flex" selection-mode="Row">
<wj-flex-grid-filter filter-columns="['date']"></wj-flex-grid-filter>
<wj-flex-grid-column header="States" binding="code" ></wj-flex-grid-column>
<wj-flex-grid-column header="City" binding="city"></wj-flex-grid-column>
<wj-flex-grid-column header="Population" binding="pop"></wj-flex-grid-column>
<wj-flex-grid-column header="Date" binding="date" data-type="Date" format="MM/dd/yyyy hh:mm tt"></wj-flex-grid-column>
</wj-flex-grid>
</div>
JavaScript
// define app, include Wijmo 5 directives
var app = angular.module('app', ['wj']);
// controller
app.controller('appCtrl', function ($scope) {
var dateFromString = new Date("2016-06-10T22:30:53.1723545+00:00");
var properties = [{
code: 'WA',
city: 'Seattle',
pop: 652,
date: dateFromString
}, {
code: 'OR',
city: 'Portland',
pop: 609,
date: dateFromString
}, {
code: 'CA',
city: 'Los Angeles',
pop: 3884,
date: dateFromString
}];
// expose data as a CollectionView to get events
$scope.data = new wijmo.collections.CollectionView(properties);
// expose the data as a CollectionView to show filtering
$scope.filter = ”;
var toFilter, lcFilter;
$scope.cvFilter = new wijmo.collections.CollectionView(getData(100));
$scope.cvFilter.filter = function (item) { // ** filter function
// get lowercase version of the country name
var lcc = item.country.toLowerCase();
if ($scope.filter) {
// check for matches against each part of the filter
for (var i = 0; i -1) {
return true; // found a match
};
}
return false; // no matches
}
return true; // no filter
};
$scope.$watch(‘filter’, function () { // ** refresh view when filter changes
if (toFilter) {
clearTimeout(toFilter);
}
toFilter = setTimeout(function () {
// split filter into lower-case parts
lcFilter = $scope.filter.toLowerCase().split(‘ ‘);
$scope.cvFilter.refresh();
}, 500);
}})
;
});