Retrieve additional data
The number of rows and columns retrieved with the first paint call is normally
defined in initialProperties
. But there are instances when this is not enough.
The maximum number of cells (qWidth * qHeight
) allowed in an initial data fetch
is 10,000. Retrieve additional data in chunks using the getData
method in the
Backend API.
Examples
var requestPage = [{ qTop : lastrow + 1, qLeft : 0, qWidth : 10, //should be # of columns qHeight : Math.min(50, this.backendApi.getRowCount() - lastrow)}];$element.find("#more").on("click", function() { self.backendApi.getData(requestPage).then(function(dataPages) { self.paint($element); });});
Note: The call is asynchronous and returns a promise. You need to trigger the actual re-paint after the call has completed and you do this using the
then()
method.
Example: Retrieving additional data in chunks
In this example, the getData
method will get the cells defined
by requestPage
and return the cells in the dataPages
parameter. It will
also update the layout buffer used by eachDataRow
so when the paint function is
called again, it will have all rows. This usage means the visualization will
build up gradually.
paint: function ( $element ) { var lastrow = 0, me = this; //loop through the rows we have and render this.backendApi.eachDataRow( function ( rownum, row ) { lastrow = rownum; //do something with the row.. }); if(this.backendApi.getRowCount() > lastrow +1){ //we havent got all the rows yet, so get some more, 1000 rows var requestPage = [{ qTop: lastrow + 1, qLeft: 0, qWidth: 10, //should be # of columns qHeight: Math.min( 1000, this.backendApi.getRowCount() - lastrow ) }]; this.backendApi.getData( requestPage ).then( function ( dataPages ) { //when we get the result trigger paint again me.paint( $element ); } ); }
}