UNPKG

ag-grid

Version:

Advanced Javascript Datagrid. Supports raw Javascript, AngularJS 1.x, AngularJS 2.0 and Web Components

83 lines (70 loc) 2.63 kB
var module = angular.module("example", ["agGrid"]); module.controller("exampleCtrl", function($scope) { ///// left table var columnDefsLeft = [ {headerName: "Function", field: 'function', width: 150}, {headerName: "Value", field: 'value', width: 100}, {headerName: "Times 10", valueGetter: 'getValue("value") * 10', width: 100}, ]; var rowDataLeft = [ {function: 'Number Squared', value: '=ctx.theNumber * ctx.theNumber'}, {function: 'Number x 2', value: '=ctx.theNumber * 2'}, {function: 'Todays Date', value: '=new Date().toLocaleDateString()'}, {function: 'Sum A', value: '=ctx.sum("a")'}, {function: 'Sum B', value: '=ctx.sum("b")'} ]; $scope.gridOptionsLeft = { enableCellExpressions: true, columnDefs: columnDefsLeft, rowData: rowDataLeft, context: { theNumber: 4 }, onReady: function(event) { event.api.sizeColumnsToFit(); } }; ///// Right table var columnDefsRight = [ {headerName: 'A', field: 'a', width: 150, editable: true, newValueHandler: numberNewValueHandler, onCellValueChanged: cellValueChanged}, {headerName: 'B', field: 'b', width: 150, editable: true, newValueHandler: numberNewValueHandler, onCellValueChanged: cellValueChanged} ]; var rowDataRight = [ {a: 1, b: 22}, {a: 2, b: 33}, {a: 3, b: 44}, {a: 4, b: 55}, {a: 5, b: 66}, {a: 6, b: 77}, {a: 7, b: 88} ]; $scope.gridOptionsRight = { columnDefs: columnDefsRight, rowData: rowDataRight, onReady: function(event) { event.api.sizeColumnsToFit(); } }; $scope.gridOptionsLeft.context.sum = function(field) { var result = 0; rowDataRight.forEach( function(item) { result += item[field]; }); return result; }; // tell Left grid to refresh when number changes $scope.onNewNumber = function() { $scope.gridOptionsLeft.api.refreshView(); }; // we want to convert the strings to numbers function numberNewValueHandler(params) { var valueAsNumber = parseFloat(params.newValue); var field = params.colDef.field; var data = params.data; data[field] = valueAsNumber; } // we want to tell the Left grid to refresh when the Right grid values change function cellValueChanged() { $scope.gridOptionsLeft.api.refreshView(); } });