taffy-coustom-ui
Version:
160 lines (139 loc) • 5.46 kB
text/typescript
import { Component, ViewChild, AfterViewInit } from '@angular/core';
import { jqxDataTableComponent } from 'jqwidgets-ng/jqxdatatable';
import { jqxDropDownListComponent } from 'jqwidgets-ng/jqxdropdownlist';
import { jqxListBoxComponent } from 'jqwidgets-ng/jqxlistbox';
import { generatedata } from './../../../sampledata/generatedata';
export class AppComponent implements AfterViewInit {
myDataTable: jqxDataTableComponent;
myDropDownList: jqxDropDownListComponent;
myListBox: jqxListBoxComponent;
ngAfterViewInit(): void {
this.updateMyListBox('firstname');
}
handleCheckChange: boolean = true;
source: any =
{
localData: generatedata(200, false),
dataFields:
[
{ name: 'firstname', type: 'string' },
{ name: 'lastname', type: 'string' },
{ name: 'productname', type: 'string' },
{ name: 'quantity', type: 'number' }
],
dataType: 'array'
};
dataAdapter: any = new jqx.dataAdapter(this.source);
getWidth() : any {
if (document.body.offsetWidth < 850) {
return '90%';
}
return 850;
}
columns: any[] =
[
{ text: 'First Name', dataField: 'firstname', width: 190 },
{ text: 'Last Name', dataField: 'lastname', width: 190 },
{ text: 'Product', dataField: 'productname', width: 170 },
{ text: 'Quantity', dataField: 'quantity', cellsAlign: 'right' }
];
dropDownListSource: any[] =
[
{ label: 'First Name', value: 'firstname' },
{ label: 'Last Name', value: 'lastname' },
{ label: 'Product', value: 'productname' },
{ label: 'Quantity', value: 'quantity' }
];
updateMyListBox(dataField: string): void {
this.myDataTable.clearFilters();
let myListBoxAdapter = new jqx.dataAdapter(this.source,
{
uniqueDataFields: [dataField],
autoBind: true
});
let uniqueRecords = myListBoxAdapter.records;
uniqueRecords.splice(0, 0, '(Select All)');
this.myListBox.setOptions({ source: uniqueRecords, displayMember: dataField });
this.myListBox.checkAll();
}
applyFilter(dataField: string): void {
this.myDataTable.clearFilters();
let filtertype = 'stringfilter';
if (dataField == 'date') filtertype = 'datefilter';
if (dataField == 'price' || dataField == 'quantity') filtertype = 'numericfilter';
// create a new group of filters.
let filtergroup = new jqx.filter();
// get listbox's checked items.
let checkedItems = this.myListBox.getCheckedItems();
if (checkedItems.length == 0) {
let filter_or_operator = 1;
let filtervalue = 'Empty';
let filtercondition = 'equal';
let filter = filtergroup.createfilter(filtertype, filtervalue, filtercondition);
filtergroup.addfilter(filter_or_operator, filter);
}
else {
for (let i = 0; i < checkedItems.length; i++) {
let filter_or_operator = 1;
// set filter's value.
let filtervalue = checkedItems[i].label;
// set filter's condition.
let filtercondition = 'equal';
// create new filter.
let filter = filtergroup.createfilter(filtertype, filtervalue, filtercondition);
// add the filter to the filter group.
filtergroup.addfilter(filter_or_operator, filter);
}
}
// add the filters.
this.myDataTable.addFilter(dataField, filtergroup);
// apply the filters.
this.myDataTable.applyFilters();
}
listBoxOnCheckChange(event: any): void {
if (!this.handleCheckChange)
return;
if (event.args.label !== '(Select All)') {
// update the state of the 'Select All' listbox item.
this.handleCheckChange = false;
this.myListBox.checkIndex(0);
let checkedItems = this.myListBox.getCheckedItems();
let items = this.myListBox.getItems();
if (checkedItems.length == 1) {
this.myListBox.uncheckIndex(0);
}
else if (items.length != checkedItems.length) {
this.myListBox.indeterminateIndex(0);
}
this.handleCheckChange = true;
}
else {
// check/uncheck all items if 'Select All' is clicked.
this.handleCheckChange = false;
if (event.args.checked) {
this.myListBox.checkAll();
}
else {
this.myListBox.uncheckAll();
}
this.handleCheckChange = true;
}
};
// handle columns selection.
dropDownListOnSelect(event: any): void {
this.updateMyListBox(event.args.item.value);
};
// applies the filter.
applyFilterBtnOnClick(): void {
let dataField = this.myDropDownList.getSelectedItem().value;
this.applyFilter(dataField);
};
// clears the filter.
clearfilterBtnOnClick(): void {
this.myDataTable.clearFilters();
};
}