jqwidgets-framework
Version:
jQWidgets is an advanced Angular, Vue, Blazor, React, Web Components, jquery, ASP .NET MVC, Custom Elements and HTML5 UI framework.
84 lines (76 loc) • 3.82 kB
text/typescript
/// <reference path="../../../jqwidgets-ts/jqwidgets.d.ts" />
function createGridGrouping(selector, expandSelector, collapseSelector, expandallSelector, collapseallSelector, groupnumSelector, expandedgroupLogSelector, collapsedgroupLogSelector) {
let url = "../../sampledata/customers.xml";
// prepare the data
let source =
{
datatype: "xml",
datafields: [
{ name: 'CompanyName', map: 'm\\:properties>d\\:CompanyName', type: 'string' },
{ name: 'ContactName', map: 'm\\:properties>d\\:ContactName', type: 'string' },
{ name: 'ContactTitle', map: 'm\\:properties>d\\:ContactTitle', type: 'string' },
{ name: 'City', map: 'm\\:properties>d\\:City', type: 'string' },
{ name: 'PostalCode', map: 'm\\:properties>d\\:PostalCode', type: 'string' },
{ name: 'Country', map: 'm\\:properties>d\\:Country', type: 'string' }
],
root: "entry",
record: "content",
id: 'm\\:properties>d\\:CustomerID',
url: url
};
let dataAdapter = new $.jqx.dataAdapter(source);
// Create jqxGrid
// initialization options - validated in typescript
// jqwidgets.GridOptions has generated TS definition
let options: jqwidgets.GridOptions = {
width: 850,
source: dataAdapter,
groupable: true,
columns: [
{ text: 'Company Name', datafield: 'CompanyName', width: 250 },
{ text: 'City', datafield: 'City', width: 120 },
{ text: 'Country', datafield: 'Country' }
],
groups: ['City']
};
// creates an instance
let myGrid: jqwidgets.jqxGrid = jqwidgets.createInstance(selector, 'jqxGrid', options);
let buttonsOptions: jqwidgets.ButtonOptions = { };
let expand: jqwidgets.jqxButton = jqwidgets.createInstance(expandSelector, 'jqxButton', buttonsOptions),
collapse: jqwidgets.jqxButton = jqwidgets.createInstance(collapseSelector, 'jqxButton', buttonsOptions),
expandall: jqwidgets.jqxButton = jqwidgets.createInstance(expandallSelector, 'jqxButton', buttonsOptions),
collapseall: jqwidgets.jqxButton = jqwidgets.createInstance(collapseallSelector, 'jqxButton', buttonsOptions);
// expand group.
expand.addEventHandler('click', function () {
let groupnumContent = (<HTMLInputElement>document.getElementById(groupnumSelector)).value;
let groupnum = parseInt(groupnumContent);
if (!isNaN(groupnum)) {
myGrid.expandgroup(groupnum);
}
});
// collapse group.
collapse.addEventHandler('click', function () {
let groupnumContetnt = (<HTMLInputElement>document.getElementById(groupnumSelector)).value;
let groupnum = parseInt(groupnumContetnt);
if (!isNaN(groupnum)) {
myGrid.collapsegroup(groupnum);
}
});
// expand all groups.
expandall.addEventHandler('click', function () {
myGrid.expandallgroups();
});
// collapse all groups.
collapseall.addEventHandler('click', function () {
myGrid.collapseallgroups();
});
// trigger expand and collapse events.
myGrid.addEventHandler('groupexpand', function (event) {
let expandedgroupLog = document.getElementById(expandedgroupLogSelector);
expandedgroupLog.innerText = "Group: " + event.args.group + ", Level: " + event.args.level;
});
myGrid.addEventHandler('groupcollapse', function (event) {
let collapsedgroupLog = document.getElementById(collapsedgroupLogSelector);
collapsedgroupLog.innerText = "Group: " + event.args.group + ", Level: " + event.args.level;
});
}