
dgtable is a performant, customizable, dynamic knowledge desk jQuery plugin for presenting massive knowledge set in a sortable, filterable, scrollable, and draggable desk view.
Options:
- Click on desk headers to kind columns.
- Drag desk headers to maneuver & resize columns.
- Helps for digital scroll, which implies solely the seen rows are rendered.
- Permits you to dynamically insert tabular knowledge to the desk.
- A number of API strategies and occasion handlers.
Desk Of Contents:
use it:
1. Set up and construct.
$ npm set up
2. Place the jquery.dgtable.umd.js
JavaScript library after loading the most recent jQuery library.
<script src="/path/to/cdn/jquery.min.js"></script> <script src="/path/to/dist/jquery.dgtable.umd.js"></script>
3. Create a brand new DGTable occasion and outline the column knowledge as follows.
var desk = new DGTable({ columns: [ {name: 'first', label: 'Locked column', movable: false, resizable: false}, {name: 'last', label: 'Test data', width: '30%'}, {name: 'address', label: 'More', width: '30%'}, {name: 'city', label: 'Example', width: '40%'} ], peak: 500, width: DGTable.Width.SCROLL // or DGTable.Width.AUTO, DGTable.Width.NONE });
4. Append the information desk to a container component.
<div id="instance"></div>
$('#instance').append(desk.el);
5. Add tabular knowledge to the information desk.
var sampleData = [ { first: 'Pearl', last: 'Button', address: '69 Hendford Hill', city: 'MOSS-SIDE' }, { first: 'Daisy', last: 'Brockhouse', address: '4667 rue Levy', city: 'Montreal' }, { first: 'Asphodel', last: 'Goodchild', address: '74 New Dover Rd', city: 'WALPOLE ST ANDREW' }, { first: 'Primrose', last: 'Oldbuck', address: '1331 Sherwood Circle', city: 'Lafayette' }, { first: 'Savanna', last: 'Took', address: '4200 Penn Street', city: 'Stlouis' }, // ... ]
desk.render().addRows(sampleData);
6. All doable configuration choices.
var desk = new DGTable({ // column choices columns: [ String name: 'Column Name', label: 'Column Label', sortable: true, movable: true, resizable: true, visible: true, cellClasses: '', // additional CSS Class ignoreMin: false, // ignore the minimum width comparePath: dataPath // path to the data to use for comparison ], // peak of the information desk peak: 500, // width of the information desk // or DGTable.Width.AUTO, DGTable.Width.NONE width: DGTable.Width.SCROLL, // work in digital mode or not // which implies solely the seen rows are rendered virtualTable: true, // allow resizable columns resizableColumns: true, // allow draggable columns movableColumns: true, // variety of columns you possibly can kind, one after one other? sortableColumns: 1, // auto modify the column width for kind arrow adjustColumnWidthForSortArrow: true, // auto develop/shrink the relative width to fill the desk's width relativeWidthGrowsToFillWidth: true, relativeWidthShrinksToFillWidth: false, // auto convert auto-width columns to relative width convertColumnWidthsToRelative: false, // auto fill the desk's width autoFillTableWidth: false, // when setting true, the sorting arrows could have 3 modes - asc, desc, and cancelled. allowCancelSort: true, // further cell lessons cellClasses: '', // String|String[]|COLUMN_SORT_OPTIONS|COLUMN_SORT_OPTIONS[] // Generally is a column or an array of columns. // Every column is a String or a COLUMN_SORT_OPTIONS: // column: String Column title // descending: Boolean=false Is that this column sorted in descending order? sortColumn: '', // buffer dimension for digital desk rowsBufferSize: 10, // minimal column width minColumnWidth: 35, // width of resize space resizeAreaWidth: 8, // CSS class of resizer resizerClassName: 'dgtable-resize', // desk class tableClassName: 'dgtable', // present a preview of the total content material allowCellPreview: true, allowHeaderCellPreview: true, cellPreviewAutoBackground: true, cellPreviewClassName: 'dgtable-cell-preview', // wrapper class className: 'dgtable-wrapper', // non-obligatory component el: null, // return the HTML for the cell cellFormatter: operate(worth, columnName, rowData){ }, // return the HTML for the cell's header headerCellFormatter: operate(worth, columnName){ }, // customized desk filter operate filter: operate(row, args){ }, });
7. API strategies.
// for occasions desk.on(eventName, {Operate?} callback); desk.as soon as(eventName, {Operate?} callback); desk.off(eventName, {Operate?} callback); // render the desk desk.render(); // clear and render desk.clearAndRender({Boolean} render = true); // set columns desk.setColumns({COLUMN_OPTIONS[]} columns, {Boolean} render = true); // add columns desk.addColumn({COLUMN_OPTIONS} columnData, Quantity earlier than = -1, {Boolean} render = true); // take away columns desk.removeColumn({String} column, {Boolean} render = true); // set a brand new filter operate desk.setFilter({Operate(row: Object, args: Object): Boolean} filterFunc); // set a brand new cell formatter desk.setCellFormatter(null formatter); desk.setHeaderCellFormatter(null formatter); // filter seen rows desk.filter({Object} args); // or desk.filter({{column: String, key phrase: String, caseSensitive: Boolean}} args); // clear filter desk.clearFilter(); // set column label desk.setColumnLabel({String} column, {String} label); // transfer columns desk.moveColumn(Quantity src, Quantity dest, visibleOnly = true); // kind columns desk.kind({String?} column, {Boolean?} descending, {Boolean=false} add) // resort the desk desk.resort(); // set seen columns desk.setColumnVisible({String} column, {Boolean} seen); // verify if the column is seen desk.isColumnVisible({String} column, {Boolean} seen); // set/get minimal column width desk.setMinColumnWidth({Quantity} minColumnWidth); desk.getMinColumnWidth(); // set/get sortable columns desk.setSortableColumns({Quantity} sortableColumns); desk.getSortableColumns(); // get headerRow's component desk.getHeaderRowElement() // set/get movable columns desk.setMovableColumns({Boolean} movableColumns); desk.getMovableColumns(); // set/get resizable columns desk.setResizableColumns({Boolean} resizableColumns); desk.getResizableColumns(); // set comparator callback desk.setComparatorCallback({Operate(String,Boolean)Operate(a,b)Boolean} comparatorCallback); // set/get column width desk.setColumnWidth({String} column, String width); desk.getColumnWidth({String} column); // get column configs desk.getColumnConfig({String} column title); desk.getColumnsConfig(); // get sorted columns desk.getSortedColumns() // get component of speficied row desk.getHtmlForRowCell(row: Quantity, columnName: String); // get component of speficied cell desk.getHtmlForRowDataCell(rowData: Object, columnName: String) null // get knowledge of specified row desk.getDataForRow(row: Quantity); // get variety of rows desk.getRowCount(); // get row index desk.getIndexForRow(row: Object); // get variety of filtered rows desk.getFilteredRowCount(); // get index of filtered rows desk.getIndexForFilteredRow(row: Object); // get knowledge of filtered rows desk.getDataForFilteredRow(row: Quantity); // get row component desk.getRowElement(physicalRowIndex: Quantity); // get Y positon of row desk.getRowYPos(physicalRowIndex: Quantity); // verify if the width/peak has modified desk.tableWidthChanged(); desk.tableHeightChanged(); // add rows desk.addRows({Object[]} knowledge, {Quantity} at = -1, {Boolean} resort = false, {Boolean} render = true) // refresh all digital rows desk.refreshAllVirtualRows(); // reset rows desk.setRows(knowledge: Object[], resort: Boolean=false) // get URL of component desk.getUrlForElementContent({string} id); // for internet employee desk.isWorkerSupported() {Boolean}; desk.createWebWorker({string} url); desk.unbindWebWorker({Employee} employee); // conceal cell preview desk.hideCellPreview(); // destroy the occasion desk.shut();
8. Occasion handlers.
desk.on('renderskeleton', operate(){ // do one thing }); desk.on('render', operate(){ // do one thing }); desk.on('cellpreview', operate(PreviewDOM, RowIndex, ColumnName, RowData, CellDOM){ // do one thing }); desk.on('cellpreviewdestroy', operate(PreviewDOM, RowIndex, ColumnName, RowData, CellDOM){ // do one thing }); desk.on('headerrowcreate', operate(RowDOM){ // do one thing }); desk.on('headerrowdestroy', operate(RowDOM){ // do one thing }); desk.on('rowcreate', operate(RowIndexInFilteredData, RowIndexInData, RowDOM, RowData){ // do one thing }); desk.on('rowdestroy', operate(RowDOM){ // do one thing }); desk.on('addrows', operate(quantity, RemoveOldRows?){ // do one thing }); desk.on('addcolumn', operate(ColumnName){ // do one thing }); desk.on('removecolumn', operate(ColumnName){ // do one thing }); desk.on('movecolumn', operate(ColumnName, FromIndex, ToIndex){ // do one thing }); desk.on('showcolumn', operate(ColumnName){ // do one thing }); desk.on('hidecolumn', operate(ColumnName){ // do one thing }); desk.on('columnwidth', operate(ColumnName, OldWidth, NewWidth){ // do one thing }); desk.on('filter', operate(choices){ // do one thing }); desk.on('filterclear', operate(){ // do one thing }); desk.on('kind', operate(ArrayOfSortConstructs){ // do one thing }); desk.on('headercontextmenu', operate(ColumnName, pageX, pageY, BoundsOfTheHeaderCell){ // do one thing });
Changelog:
2024-10-14
2023-11-30
2023-01-12
- v0.6.10:Â [feature] allowCancelSort
2022-12-26
2022-12-04
2022-11-22
2022-11-20
- v0.6.6: [fix] restore default conduct of refreshRow to right away render modifications
2022-11-17
- v0.6.5: [fix] allowCellPreview setting was no handled appropriately since digital desk help
2022-11-08
2022-11-07
- v0.6.1: auto estimate estimatedRowHeight by default
2022-10-13
- v0.5.59: corrected single sortColumn possibility help
2022-05-18
- v0.5.58: [fix] don’t set off occasions after destroy
2022-04-03
- v0.5.57: [fix] preview cell ought to inherit cursor model
2022-03-28
- v0.5.56: [fix] emit rowclick occasions from cell preview
2022-03-16
- v0.5.55:Â [fix] keep away from index corruption when trigerring rowclick
Â
This superior jQuery plugin is developed by danielgindi. For extra Superior Usages, please verify the demo web page or go to the official web site.