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);
}})
 ;
});