import { Component, OnInit, AfterViewInit, ViewChild} from '@angular/core'; import { jqxGridComponent } from 'jqwidgets-scripts/jqwidgets-ts/angular_jqxgrid'; @Component({ selector: 'app-profit-grid', templateUrl: './profit-grid.component.html', styleUrls: ['./profit-grid.component.css'] }) export class ProfitGridComponent implements OnInit { @ViewChild('grid') grid: jqxGridComponent viewRendered: boolean = false; constructor() { } ngOnInit() { } ngAfterViewInit() { this.viewRendered = true; } source: any = { datafields: [ { name: 'region' }, { name: 'account' }, { name: 'q1' }, { name: 'q2' }, { name: 'q3' }, { name: 'q4' } ], url: '../../assets/sample-data/profitloss.json', datatype: 'json' }; dataAdapter = new jqx.dataAdapter(this.source, { async: true, autoBind: true, loadError: (xhr: any, status: any, error: any) => { alert('Error loading "' + this.source.url + '" : ' + error); } }); groupsrenderer(text: string): string { return '

' + text.substr(40).toUpperCase() + '

'; }; groups: string[] = [ 'account' ]; columns: jqwidgets.GridColumn[] = [ { text: '

REGION

', datafield: 'account', width: '20%', displayfield: 'region', cellsrenderer: function (row, columnfield, value) { return '

' + value.toUpperCase() + '

'; } }, { text: '

Q1 2014

', datafield: 'q1', cellsrenderer: function (row, columnfield, value) { return '

$' + value + '

'; } }, { text: '

Q2 2014

', datafield: 'q2', cellsrenderer: function (row, columnfield, value) { return '

$' + value + '

'; } }, { text: '

Q3 2014

', datafield: 'q3', cellsrenderer: function (row, columnfield, value) { return '

$' + value + '

'; } }, { text: '

Q4 2014

', datafield: 'q4', cellsrenderer: function (row, columnfield, value) { return '

$' + value + '

'; } } ] updateGridColumns(event) { if (!this.viewRendered) { return; } if (event.update === 'show') { this.grid.showcolumn(event.dataField); } else { this.grid.hidecolumn(event.dataField); } } updateGridRows(items) { if (!this.viewRendered) { return; } this.grid.clearfilters(); let filtertype = 'stringfilter'; let filtergroup = new jqx.filter(); for (var i = 0; i < items.length; i++) { var filterOrOperator = 1; var filtervalue = items[i].label; var filtercondition = 'equal'; var filter = filtergroup.createfilter(filtertype, filtervalue, filtercondition); filtergroup.addfilter(filterOrOperator, filter); } this.grid.addfilter('region', filtergroup); this.grid.applyfilters(); } }