47 lines
1.2 KiB
JavaScript
47 lines
1.2 KiB
JavaScript
var bricks = window.bricks || {};
|
|
bricks.AG_Grid = class extends bricks.JsWidget {
|
|
/*
|
|
{
|
|
dataurl:
|
|
fields:
|
|
|
|
}
|
|
*/
|
|
constructor(opts){
|
|
super(opts);
|
|
ag_opts = {}
|
|
}
|
|
|
|
init(){
|
|
this.datasource = {
|
|
getRows:this.getRows,
|
|
startRow
|
|
this.ag_opts.columnDefs = [];
|
|
this.ag_opts.rowModelType = 'infinite';
|
|
this.ag_opts.maxConcurrentDatasourceRequests: 1,
|
|
this.ag_opts.datasource = this.datasource;
|
|
for (var i=0; i< this.opts.fields.length; i++){
|
|
var f = {
|
|
width:this.opts.fields[i].width | 100,
|
|
headerName:this.opts.fields[i].label|this.opts.fields[i].name,
|
|
field:this.opts.fields[i].name
|
|
},
|
|
this.ag_opts.columnDefs.push(f)
|
|
}
|
|
this.ag_opts.defaultColDef = {sortable: true, filter: true};
|
|
this.ag_opts.rowSelection = 'multiple';
|
|
this.ag_opts.animateRows = true;
|
|
this.ag_opts.onCellClicked = this.cell_clicked.bind(this);
|
|
this.aggrid = new agGrid.Grid(this.dom_element, this.ag_opts);
|
|
fetch(this.opts.dataurl)
|
|
.then(response => response.json())
|
|
.then(data => {
|
|
// load fetched data into grid
|
|
this.ag_opts.api.setRowData(data);
|
|
});
|
|
}
|
|
cell_clicked(params){
|
|
bricks.debug('clicked, params=', params);
|
|
}
|
|
}
|