Wijmo 5 (Angular) - Checkbox Highlight Row

by Joel Parks

HTML

<script src="http://cdn.wijmo.com/5.20142.0/controls/wijmo.min.js"></script>
<link rel="stylesheet" href="http://cdn.wijmo.com/5.20142.0/styles/wijmo.min.css">
<script src="http://cdn.wijmo.com/5.20142.0/controls/wijmo.grid.min.js"></script>
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.1/angular.min.js"></script>
<script src="http://cdn.wijmo.com/5.20142.0/interop/angular/wijmo.angular.min.js"></script>
<!-- mark this as an Angular application and give it a controller -->
<div ng-app="app" ng-controller="appCtrl">
    
    <h1>Header Checkbox Example</h1>
        
    <wj-flex-grid
      items-source="data" 
      selection-mode="ListBox">
        <wj-flex-grid-column header="Name" binding="name"></wj-flex-grid-column>
        <wj-flex-grid-column header="Age" binding="age"></wj-flex-grid-column>
        <wj-flex-grid-column header="Active" binding="active"></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 names = 'Paul,Ringo,George,John'.split(',');
    var age = [12,10,11,14];
    var data = [];
    
    for(var i = 0; i < names.length; i++){
    		data.push({
        		name: names[i],
            age: age[i],
            active: false
        });
    }

    // create some data
    $scope.data = data;
    
    $scope.itemFormatter = function(panel,r,c,cell){
    		
    }

    // formatter to add checkboxes to boolean columns
    /*$scope.itemFormatter = function (panel, r, c, cell) {
        if (panel.cellType == wijmo.grid.CellType.ColumnHeader) {
            var flex = panel.grid;
            var col = flex.columns[c];

            // check that this is a boolean column
            if (col.dataType == wijmo.DataType.Boolean) {

                // prevent sorting on click
                col.allowSorting = false;

                // count true values to initialize checkbox
                var cnt = 0;
                for (var i = 0; i < flex.rows.length; i++) {
                    if (flex.getCellData(i, c) == true) cnt++;
                }

                // create and initialize checkbox
                cell.innerHTML = '<input type="checkbox"> ' + cell.innerHTML;
                var cb = cell.firstChild;
                cb.checked = cnt > 0;
                cb.indeterminate = cnt > 0 && cnt < flex.rows.length;

                // apply checkbox value to cells
                cb.addEventListener('click', function (e) {
                    flex.beginUpdate();
                    for (var i = 0; i < flex.rows.length; i++) {
                        flex.setCellData(i, c, cb.checked);
                    }
                    flex.endUpdate();
                });
            }
        }
    }*/
    //console.log($scope.data);
});