<!DOCTYPE html>
<html>
<head>
<script data-require="jquery@*" data-semver="3.0.0" src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.0.0/jquery.js"></script>
<script data-require="angularjs@1.5.5" data-semver="1.5.5" src="https://code.angularjs.org/1.5.5/angular.js"></script>
<script data-require="ag-grid@*" data-semver="9.1.0" src="https://cdnjs.cloudflare.com/ajax/libs/ag-grid/9.1.0/ag-grid.js"></script>
<script src="script.js"></script>
</head>
<body ng-app="hivApp">
<coding-sheet></coding-sheet>
</body>
</html>
// Code goes here
agGrid.initialiseAgGridWithAngular1(angular);
angular.module('hivApp', ['agGrid']);
(function () {
angular.module('hivApp').component('codingSheet', {
template: '<div id="grid_container" style="height: 600px;" ag-grid="$ctrl.gridOptions" class="ag-bootstrap">',
controller: codingSheetController
});
function codingSheetController($window, $location) {
var self = this,
gridApi, gridData, rowNum,
data = [
{"SEQ":1,"CCODE":"CH","GEOAREA":"Datong","GEOCODE":"U","SITE_NAME":"Datong","SITE_NO":null,"REFDATE":"2009","SUBPOP":"Pregnant women","POPCODE":"G","SEX":"F","AGE":"ALL","SAMPSIZE":25696,"DATATYPE":"HIV","NO_CASES":0,"INC_RATE":-1,"PREV_RATE":0,"NO_DEATHS":-1,"SPEC_TYPE":"B","TESTTYPE":"UNK","SourceID":null,"QUALITY":"A","COMMENTS":"Located in Shanxi Province.","FileName":"00957AXJun2014","UserID":"xxxxx001","FileSeqNum":1,"Batch":null,"EditFlag":null,"Keyer":null,"Conf":null,"Analyst":"Plunk","DateandTime":"2014-06-05T15:55:56.000Z","SrcSeq":null},
{"SEQ":2,"CCODE":"CH","GEOAREA":"Datong","GEOCODE":"U","SITE_NAME":"Datong","SITE_NO":null,"REFDATE":"2010","SUBPOP":"Pregnant women","POPCODE":"G","SEX":"F","AGE":"ALL","SAMPSIZE":31288,"DATATYPE":"HIV","NO_CASES":3,"INC_RATE":-1,"PREV_RATE":0.01,"NO_DEATHS":-1,"SPEC_TYPE":"B","TESTTYPE":"UNK","SourceID":null,"QUALITY":"A","COMMENTS":"Located in Shanxi Province.","FileName":"00957AXJun2014","UserID":"xxxxx001","FileSeqNum":2,"Batch":null,"EditFlag":null,"Keyer":null,"Conf":null,"Analyst":"Plunk","DateandTime":"2014-06-05T15:58:53.000Z","SrcSeq":null},
{"SEQ":3,"CCODE":"CH","GEOAREA":"Datong","GEOCODE":"U","SITE_NAME":"Datong","SITE_NO":null,"REFDATE":"2011","SUBPOP":"Pregnant women","POPCODE":"G","SEX":"F","AGE":"ALL","SAMPSIZE":32011,"DATATYPE":"HIV","NO_CASES":2,"INC_RATE":-1,"PREV_RATE":0.01,"NO_DEATHS":-1,"SPEC_TYPE":"B","TESTTYPE":"UNK","SourceID":null,"QUALITY":"A","COMMENTS":"Located in Shanxi Province.","FileName":"00957AXJun2014","UserID":"xxxxx001","FileSeqNum":3,"Batch":null,"EditFlag":null,"Keyer":null,"Conf":null,"Analyst":"Plunk","DateandTime":"2014-06-05T15:59:10.000Z","SrcSeq":null},
{"SEQ":4,"CCODE":"CH","GEOAREA":"Datong","GEOCODE":"U","SITE_NAME":"Datong","SITE_NO":null,"REFDATE":"2012","SUBPOP":"Pregnant women","POPCODE":"G","SEX":"F","AGE":"ALL","SAMPSIZE":36527,"DATATYPE":"HIV","NO_CASES":1,"INC_RATE":-1,"PREV_RATE":0,"NO_DEATHS":-1,"SPEC_TYPE":"B","TESTTYPE":"UNK","SourceID":null,"QUALITY":"A","COMMENTS":"Located in Shanxi Province.","FileName":"00957AXJun2014","UserID":"xxxxx001","FileSeqNum":4,"Batch":null,"EditFlag":null,"Keyer":null,"Conf":null,"Analyst":"Plunk","DateandTime":"2014-06-05T15:59:25.000Z","SrcSeq":null},
{"SEQ":5,"CCODE":"CH","GEOAREA":"Datong","GEOCODE":"U","SITE_NAME":"Datong","SITE_NO":null,"REFDATE":"2009","SUBPOP":"Pregnant women","POPCODE":"G","SEX":"F","AGE":"ALL","SAMPSIZE":25696,"DATATYPE":"HIV","NO_CASES":0,"INC_RATE":-1,"PREV_RATE":0,"NO_DEATHS":-1,"SPEC_TYPE":"B","TESTTYPE":"UNK","SourceID":null,"QUALITY":"A","COMMENTS":"Located in Shanxi Province.","FileName":"00957AXJun2014","UserID":"xxxxx001","FileSeqNum":1,"Batch":null,"EditFlag":null,"Keyer":null,"Conf":null,"Analyst":"Plunk","DateandTime":"2014-06-05T15:55:56.000Z","SrcSeq":null},
{"SEQ":6,"CCODE":"CH","GEOAREA":"Datong","GEOCODE":"U","SITE_NAME":"Datong","SITE_NO":null,"REFDATE":"2010","SUBPOP":"Pregnant women","POPCODE":"G","SEX":"F","AGE":"ALL","SAMPSIZE":31288,"DATATYPE":"HIV","NO_CASES":3,"INC_RATE":-1,"PREV_RATE":0.01,"NO_DEATHS":-1,"SPEC_TYPE":"B","TESTTYPE":"UNK","SourceID":null,"QUALITY":"A","COMMENTS":"Located in Shanxi Province.","FileName":"00957AXJun2014","UserID":"xxxxx001","FileSeqNum":2,"Batch":null,"EditFlag":null,"Keyer":null,"Conf":null,"Analyst":"Plunk","DateandTime":"2014-06-05T15:58:53.000Z","SrcSeq":null},
{"SEQ":7,"CCODE":"CH","GEOAREA":"Datong","GEOCODE":"U","SITE_NAME":"Datong","SITE_NO":null,"REFDATE":"2011","SUBPOP":"Pregnant women","POPCODE":"G","SEX":"F","AGE":"ALL","SAMPSIZE":32011,"DATATYPE":"HIV","NO_CASES":2,"INC_RATE":-1,"PREV_RATE":0.01,"NO_DEATHS":-1,"SPEC_TYPE":"B","TESTTYPE":"UNK","SourceID":null,"QUALITY":"A","COMMENTS":"Located in Shanxi Province.","FileName":"00957AXJun2014","UserID":"xxxxx001","FileSeqNum":3,"Batch":null,"EditFlag":null,"Keyer":null,"Conf":null,"Analyst":"Plunk","DateandTime":"2014-06-05T15:59:10.000Z","SrcSeq":null},
{"SEQ":8,"CCODE":"CH","GEOAREA":"Datong","GEOCODE":"U","SITE_NAME":"Datong","SITE_NO":null,"REFDATE":"2009","SUBPOP":"Pregnant women","POPCODE":"G","SEX":"F","AGE":"ALL","SAMPSIZE":25696,"DATATYPE":"HIV","NO_CASES":0,"INC_RATE":-1,"PREV_RATE":0,"NO_DEATHS":-1,"SPEC_TYPE":"B","TESTTYPE":"UNK","SourceID":null,"QUALITY":"A","COMMENTS":"Located in Shanxi Province.","FileName":"00957AXJun2014","UserID":"xxxxx001","FileSeqNum":1,"Batch":null,"EditFlag":null,"Keyer":null,"Conf":null,"Analyst":"Plunk","DateandTime":"2014-06-05T15:55:56.000Z","SrcSeq":null},
{"SEQ":9,"CCODE":"CH","GEOAREA":"Datong","GEOCODE":"U","SITE_NAME":"Datong","SITE_NO":null,"REFDATE":"2010","SUBPOP":"Pregnant women","POPCODE":"G","SEX":"F","AGE":"ALL","SAMPSIZE":31288,"DATATYPE":"HIV","NO_CASES":3,"INC_RATE":-1,"PREV_RATE":0.01,"NO_DEATHS":-1,"SPEC_TYPE":"B","TESTTYPE":"UNK","SourceID":null,"QUALITY":"A","COMMENTS":"Located in Shanxi Province.","FileName":"00957AXJun2014","UserID":"xxxxx001","FileSeqNum":2,"Batch":null,"EditFlag":null,"Keyer":null,"Conf":null,"Analyst":"Plunk","DateandTime":"2014-06-05T15:58:53.000Z","SrcSeq":null},
{"SEQ":10,"CCODE":"CH","GEOAREA":"Datong","GEOCODE":"U","SITE_NAME":"Datong","SITE_NO":null,"REFDATE":"2011","SUBPOP":"Pregnant women","POPCODE":"G","SEX":"F","AGE":"ALL","SAMPSIZE":32011,"DATATYPE":"HIV","NO_CASES":2,"INC_RATE":-1,"PREV_RATE":0.01,"NO_DEATHS":-1,"SPEC_TYPE":"B","TESTTYPE":"UNK","SourceID":null,"QUALITY":"A","COMMENTS":"Located in Shanxi Province.","FileName":"00957AXJun2014","UserID":"xxxxx001","FileSeqNum":3,"Batch":null,"EditFlag":null,"Keyer":null,"Conf":null,"Analyst":"Plunk","DateandTime":"2014-06-05T15:59:10.000Z","SrcSeq":null},
{"SEQ":11,"CCODE":"CH","GEOAREA":"Datong","GEOCODE":"U","SITE_NAME":"Datong","SITE_NO":null,"REFDATE":"2009","SUBPOP":"Pregnant women","POPCODE":"G","SEX":"F","AGE":"ALL","SAMPSIZE":25696,"DATATYPE":"HIV","NO_CASES":0,"INC_RATE":-1,"PREV_RATE":0,"NO_DEATHS":-1,"SPEC_TYPE":"B","TESTTYPE":"UNK","SourceID":null,"QUALITY":"A","COMMENTS":"Located in Shanxi Province.","FileName":"00957AXJun2014","UserID":"xxxxx001","FileSeqNum":1,"Batch":null,"EditFlag":null,"Keyer":null,"Conf":null,"Analyst":"Plunk","DateandTime":"2014-06-05T15:55:56.000Z","SrcSeq":null},
{"SEQ":12,"CCODE":"CH","GEOAREA":"Datong","GEOCODE":"U","SITE_NAME":"Datong","SITE_NO":null,"REFDATE":"2010","SUBPOP":"Pregnant women","POPCODE":"G","SEX":"F","AGE":"ALL","SAMPSIZE":31288,"DATATYPE":"HIV","NO_CASES":3,"INC_RATE":-1,"PREV_RATE":0.01,"NO_DEATHS":-1,"SPEC_TYPE":"B","TESTTYPE":"UNK","SourceID":null,"QUALITY":"A","COMMENTS":"Located in Shanxi Province.","FileName":"00957AXJun2014","UserID":"xxxxx001","FileSeqNum":2,"Batch":null,"EditFlag":null,"Keyer":null,"Conf":null,"Analyst":"Plunk","DateandTime":"2014-06-05T15:58:53.000Z","SrcSeq":null},
{"SEQ":13,"CCODE":"CH","GEOAREA":"Datong","GEOCODE":"U","SITE_NAME":"Datong","SITE_NO":null,"REFDATE":"2011","SUBPOP":"Pregnant women","POPCODE":"G","SEX":"F","AGE":"ALL","SAMPSIZE":32011,"DATATYPE":"HIV","NO_CASES":2,"INC_RATE":-1,"PREV_RATE":0.01,"NO_DEATHS":-1,"SPEC_TYPE":"B","TESTTYPE":"UNK","SourceID":null,"QUALITY":"A","COMMENTS":"Located in Shanxi Province.","FileName":"00957AXJun2014","UserID":"xxxxx001","FileSeqNum":3,"Batch":null,"EditFlag":null,"Keyer":null,"Conf":null,"Analyst":"Plunk","DateandTime":"2014-06-05T15:59:10.000Z","SrcSeq":null},
{"SEQ":14,"CCODE":"CH","GEOAREA":"Datong","GEOCODE":"U","SITE_NAME":"Datong","SITE_NO":null,"REFDATE":"2009","SUBPOP":"Pregnant women","POPCODE":"G","SEX":"F","AGE":"ALL","SAMPSIZE":25696,"DATATYPE":"HIV","NO_CASES":0,"INC_RATE":-1,"PREV_RATE":0,"NO_DEATHS":-1,"SPEC_TYPE":"B","TESTTYPE":"UNK","SourceID":null,"QUALITY":"A","COMMENTS":"Located in Shanxi Province.","FileName":"00957AXJun2014","UserID":"xxxxx001","FileSeqNum":1,"Batch":null,"EditFlag":null,"Keyer":null,"Conf":null,"Analyst":"Plunk","DateandTime":"2014-06-05T15:55:56.000Z","SrcSeq":null},
{"SEQ":15,"CCODE":"CH","GEOAREA":"Datong","GEOCODE":"U","SITE_NAME":"Datong","SITE_NO":null,"REFDATE":"2010","SUBPOP":"Pregnant women","POPCODE":"G","SEX":"F","AGE":"ALL","SAMPSIZE":31288,"DATATYPE":"HIV","NO_CASES":3,"INC_RATE":-1,"PREV_RATE":0.01,"NO_DEATHS":-1,"SPEC_TYPE":"B","TESTTYPE":"UNK","SourceID":null,"QUALITY":"A","COMMENTS":"Located in Shanxi Province.","FileName":"00957AXJun2014","UserID":"xxxxx001","FileSeqNum":2,"Batch":null,"EditFlag":null,"Keyer":null,"Conf":null,"Analyst":"Plunk","DateandTime":"2014-06-05T15:58:53.000Z","SrcSeq":null},
{"SEQ":16,"CCODE":"CH","GEOAREA":"Datong","GEOCODE":"U","SITE_NAME":"Datong","SITE_NO":null,"REFDATE":"2011","SUBPOP":"Pregnant women","POPCODE":"G","SEX":"F","AGE":"ALL","SAMPSIZE":32011,"DATATYPE":"HIV","NO_CASES":2,"INC_RATE":-1,"PREV_RATE":0.01,"NO_DEATHS":-1,"SPEC_TYPE":"B","TESTTYPE":"UNK","SourceID":null,"QUALITY":"A","COMMENTS":"Located in Shanxi Province.","FileName":"00957AXJun2014","UserID":"xxxxx001","FileSeqNum":3,"Batch":null,"EditFlag":null,"Keyer":null,"Conf":null,"Analyst":"Plunk","DateandTime":"2014-06-05T15:59:10.000Z","SrcSeq":null},
{"SEQ":17,"CCODE":"CH","GEOAREA":"Datong","GEOCODE":"U","SITE_NAME":"Datong","SITE_NO":null,"REFDATE":"2009","SUBPOP":"Pregnant women","POPCODE":"G","SEX":"F","AGE":"ALL","SAMPSIZE":25696,"DATATYPE":"HIV","NO_CASES":0,"INC_RATE":-1,"PREV_RATE":0,"NO_DEATHS":-1,"SPEC_TYPE":"B","TESTTYPE":"UNK","SourceID":null,"QUALITY":"A","COMMENTS":"Located in Shanxi Province.","FileName":"00957AXJun2014","UserID":"xxxxx001","FileSeqNum":1,"Batch":null,"EditFlag":null,"Keyer":null,"Conf":null,"Analyst":"Plunk","DateandTime":"2014-06-05T15:55:56.000Z","SrcSeq":null},
{"SEQ":18,"CCODE":"CH","GEOAREA":"Datong","GEOCODE":"U","SITE_NAME":"Datong","SITE_NO":null,"REFDATE":"2010","SUBPOP":"Pregnant women","POPCODE":"G","SEX":"F","AGE":"ALL","SAMPSIZE":31288,"DATATYPE":"HIV","NO_CASES":3,"INC_RATE":-1,"PREV_RATE":0.01,"NO_DEATHS":-1,"SPEC_TYPE":"B","TESTTYPE":"UNK","SourceID":null,"QUALITY":"A","COMMENTS":"Located in Shanxi Province.","FileName":"00957AXJun2014","UserID":"xxxxx001","FileSeqNum":2,"Batch":null,"EditFlag":null,"Keyer":null,"Conf":null,"Analyst":"Plunk","DateandTime":"2014-06-05T15:58:53.000Z","SrcSeq":null},
{"SEQ":19,"CCODE":"CH","GEOAREA":"Datong","GEOCODE":"U","SITE_NAME":"Datong","SITE_NO":null,"REFDATE":"2011","SUBPOP":"Pregnant women","POPCODE":"G","SEX":"F","AGE":"ALL","SAMPSIZE":32011,"DATATYPE":"HIV","NO_CASES":2,"INC_RATE":-1,"PREV_RATE":0.01,"NO_DEATHS":-1,"SPEC_TYPE":"B","TESTTYPE":"UNK","SourceID":null,"QUALITY":"A","COMMENTS":"Located in Shanxi Province.","FileName":"00957AXJun2014","UserID":"xxxxx001","FileSeqNum":3,"Batch":null,"EditFlag":null,"Keyer":null,"Conf":null,"Analyst":"Plunk","DateandTime":"2014-06-05T15:59:10.000Z","SrcSeq":null},
{"SEQ":20,"CCODE":"CH","GEOAREA":"Datong","GEOCODE":"U","SITE_NAME":"Datong","SITE_NO":null,"REFDATE":"2009","SUBPOP":"Pregnant women","POPCODE":"G","SEX":"F","AGE":"ALL","SAMPSIZE":25696,"DATATYPE":"HIV","NO_CASES":0,"INC_RATE":-1,"PREV_RATE":0,"NO_DEATHS":-1,"SPEC_TYPE":"B","TESTTYPE":"UNK","SourceID":null,"QUALITY":"A","COMMENTS":"Located in Shanxi Province.","FileName":"00957AXJun2014","UserID":"xxxxx001","FileSeqNum":1,"Batch":null,"EditFlag":null,"Keyer":null,"Conf":null,"Analyst":"Plunk","DateandTime":"2014-06-05T15:55:56.000Z","SrcSeq":null},
{"SEQ":21,"CCODE":"CH","GEOAREA":"Datong","GEOCODE":"U","SITE_NAME":"Datong","SITE_NO":null,"REFDATE":"2010","SUBPOP":"Pregnant women","POPCODE":"G","SEX":"F","AGE":"ALL","SAMPSIZE":31288,"DATATYPE":"HIV","NO_CASES":3,"INC_RATE":-1,"PREV_RATE":0.01,"NO_DEATHS":-1,"SPEC_TYPE":"B","TESTTYPE":"UNK","SourceID":null,"QUALITY":"A","COMMENTS":"Located in Shanxi Province.","FileName":"00957AXJun2014","UserID":"xxxxx001","FileSeqNum":2,"Batch":null,"EditFlag":null,"Keyer":null,"Conf":null,"Analyst":"Plunk","DateandTime":"2014-06-05T15:58:53.000Z","SrcSeq":null},
{"SEQ":22,"CCODE":"CH","GEOAREA":"Datong","GEOCODE":"U","SITE_NAME":"Datong","SITE_NO":null,"REFDATE":"2011","SUBPOP":"Pregnant women","POPCODE":"G","SEX":"F","AGE":"ALL","SAMPSIZE":32011,"DATATYPE":"HIV","NO_CASES":2,"INC_RATE":-1,"PREV_RATE":0.01,"NO_DEATHS":-1,"SPEC_TYPE":"B","TESTTYPE":"UNK","SourceID":null,"QUALITY":"A","COMMENTS":"Located in Shanxi Province.","FileName":"00957AXJun2014","UserID":"xxxxx001","FileSeqNum":3,"Batch":null,"EditFlag":null,"Keyer":null,"Conf":null,"Analyst":"Plunk","DateandTime":"2014-06-05T15:59:10.000Z","SrcSeq":null}
],
columnDefs = [
{ field: "SEQ", headerName: "SEQ", editable: false, width: 50, checkboxSelection: true },
{ field: "CCODE", headerName: "CC", editable: true, width: 50},
{ field: "GEOAREA", headerName: "Geo Area", width: 100, editable: true},
{ field: "GEOCODE", headerName: "Geo Code", editable: true, width: 60},
{ field: "SITE_NAME", headerName: "Site Name", editable: true, width: 160},
{ field: "REFDATE", headerName: "Ref Date", editable: true, width: 80},
{ field: "SUBPOP", headerName: "SubPop", editable: true, width: 100},
{ field: "POPCODE", headerName: "Pop Code", editable: false, width: 50 },
{ field: "SEX", headerName: "Sex", editable: true, width: 50},
{ field: "AGE", headerName: "Age", editable: true, width: 60},
{ field: "SAMPSIZE", headerName: "Samp Size", editable: true, width: 60, cellClass: "align-right"},
{ field: "DATATYPE", headerName: "Data Type", editable: true, width: 80},
{ field: "NO_CASES", headerName: "Cases", editable: true, width: 60, cellClass: "align-right"},
{ field: "INC_RATE", headerName: "Inc Rate", editable: true, width: 60, cellClass: "align-right"},
{ field: "PREV_RATE", headerName: "Prev Rate", editable: true, width: 60, cellClass: "align-right"},
{ field: "NO_DEATHS", headerName: "Deaths", editable: true, width: 70, cellClass: "align-right"},
{ field: "SPEC_TYPE", headerName: "Spec Type", editable: true, width: 60},
{ field: "TESTTYPE", headerName: "Test", editable: true, width: 80},
{ field: "SourceID", headerName: "Source ID", width: 100 },
{ field: "QUALITY", headerName: "Q", editable: true, width: 40},
{ field: "COMMENTS", headerName: "Comments", editable: true, width: 200},
{ field: "UserID", headerName: "User ID", width: 80 },
{ field: "Analyst", headerName: "Analyst", width: 80 },
{ field: "Batch", headerName: "Batch", width: 80 },
{ field: "Conf", headerName: "Conf", width: 80 },
{ field: "DateandTime", headerName: "Date Time", width: 80 },
{ field: "EditFlag", headerName: "EditFlag", width: 80 },
{ field: "Keyer", headerName: "Keyer", width: 80 },
{ field: "SITE_NO", headerName: "Site Number", width: 80 }
];
self.gridOptions = {
columnDefs: columnDefs,
rowData: [],
singleClickEdit: true,
enableColResize: true,
suppressMovableColumns: true,
headerHeight: 44,
rowHeight: 80,
onGridReady: onGridReady,
};
function onGridReady(param) {
gridApi = param.api;
if (Math.floor((Math.random() * 2)) === 0) {
gridData = data;
}
else {
gridData = data.slice(0,4);
}
addBlankRow(gridData.length+1);
editRow(gridData.length-1);
}
function editRow(idx, column) {
gridApi.ensureIndexVisible(idx);
// if column not specified, find first editable column, or first column
var firstEditableColumn = 'INC_RATE' || self.gridOptions.columnDefs[1].field;
gridApi.ensureColumnVisible(firstEditableColumn);
//gridApi.setFocusedCell(idx, firstEditableColumn, null);
gridApi.startEditingCell({ colKey: firstEditableColumn, rowIndex: idx });
}
function addBlankRow(rowNum) {
gridData.push({
SEQ: rowNum,
CCODE:"",
GEOAREA:"",
GEOCODE:"",
SITE_NAME:"",
SITE_NO:null,
REFDATE:"",
SUBPOP:"",
POPCODE:"",
SEX:"",
AGE:"",
SAMPSIZE:-1,
DATATYPE:"",
NO_CASES:-1,
INC_RATE:-1,
PREV_RATE:-1,
NO_DEATHS:-1,
SPEC_TYPE:null,
TESTTYPE:null,
SourceID:null,
QUALITY:"",
COMMENTS:null,
FileName:"00957AXJun2014",
UserID:"xxxxx001",
FileSeqNum: rowNum,
Batch:null,
EditFlag:null,
Keyer:null,
Conf:null,
Analyst:null,
DateandTime:null,
SrcSeq:null
});
gridApi.setRowData(gridData);
return rowNum;
}
}
})();
/* Styles go here */
.align-right {
text-align: right;
}
This ag-grid is designed as a data input application. Coders open a grid and
begin adding lines at the bottom. If the file is already longer than the
viewport, api.startEditingCell() fails.
First note: documentation for Cell Editing says that you can use api.startEditing()
but api function is actually startCellEditing(). Also, there is no reference
to that function in the GridAPI section of the docs.
To see this, run the plunker multiple times. There is a randomizer that loads
either 4 or 22 rows. If 4 rows are loaded, you start with the editor open
on the new (5th) row. If 22 rows are open, you don't get an editor (and if
you use the debugger you can see an error "TypeError: Cannot read property
'startRowOrCellEdit' of null" from RowRenderer.startEditingCell).
Problem is that startEditingCell goes to RowRenderer.startEditingCell() which
calls RowRenderer.getComponentForCell() which expects to be able to use the row
index as an index into renderedRows, which only has some rows as elements.
So any time you try to call startEditingCell() for a cell with rowIndex greater
than 16 (in my case), it would fail. Rather, the code should look for a
rendered row with an ID matching rowIndex.
An additional problem is that the rows don't seem to be rendered after calling
api.ensureIndexVisible() (in the debugger, the renderedRows still have the
initial set, not the scrolled-to set).
As a workaround, I am using api.setFocusedCell(), which works (you end up
scrolled to the last row, and it is selected) but doesn't allow for easy
editing (pressing a key or enter doesn't go into edit mode).