// Using the global setup option // ============================= $.dynatableSetup({ features: { pushState: false }, dataset: { perPageDefault: 5, perPageOptions: [2, 5, 10] } }); // Without any settings (using all defaults) // ========================================= var dynatableWithDefaultSettings = $('#example-table').dynatable(); // Building a config piece by piece // ================================ // JQueryDynatable.Features var featsConfig: JQueryDynatable.Features = { paginate: true, sort: false, pushState: true, search: true, recordCount: true, perPageSelect: true }; var featsPartialConfig: JQueryDynatable.Features = { search: false, paginate: false }; // JQueryDynatable.Column var col: JQueryDynatable.Column = { index: 0, label: 'Col from JS', id: 'someColId', attributeWriter: function myAttrWriter(data: any): any { return data[this.id]; }, attributeReader: function myAttrReader(cell: Element, data: any): string { return $(cell).html(); }, sorts: ['un', 'deux'], hidden: false, textAlign: 'right' }; // JQueryDynatable.Table var tableConfig: JQueryDynatable.Table = { defaultColumnIdStyle: 'underscore', columns: [col], // Just for fun & testing... because will be reset by dynatable headRowSelector: '.my-head-row-selector', bodyRowSelector: 'tbody tr', headRowClass: 'custom-head-row-class' }; var tablePartialConfig: JQueryDynatable.Table = { defaultColumnIdStyle: 'trimDash' }; // JQueryDynatable.Inputs var tableInputs: JQueryDynatable.Inputs = { // Must match exactly target value, strict comparison! queries: $('#countryFilter, #yearFilter'), // I believe this setting is unused! sorts: null, multisort: ['shiftKey'], // I believe this setting is unused! page: null, queryEvent: 'keyup', recordCountTarget: $('#record-count'), recordCountPlacement: 'after', paginationLinkTarget: '#record-count', paginationLinkPlacement: 'before', paginationClass: 'paginationClass', paginationLinkClass: 'paginationLinkClass', paginationPrevClass: 'paginationPrevClass', paginationNextClass: 'paginationNextClass', paginationActiveClass: 'paginationActiveClass', paginationDisabledClass: 'paginationDisabledClass', paginationPrev: '< Prev.', paginationNext: 'Next >', paginationGap: [3, 1, 1, 3], searchTarget: $('#record-count').get(0), searchPlacement: 'after', searchText: 'Search: ', perPageTarget: '#record-count', perPagePlacement: 'before', perPageText: 'Display: ', pageText: 'Pages: ', recordCountPageBoundTemplate: '{pageLowerBound} t-o {pageUpperBound} o-f', recordCountPageUnboundedTemplate: '{recordsShown} -of-', recordCountTotalTemplate: '{recordsQueryCount} x {collectionName}', recordCountFilteredTemplate: ' (found from {recordsTotal} total entries)', recordCountText: 'Rendering', recordCountTextTemplate: '{text} {pageTemplate} {totalTemplate} {filteredTemplate}', recordCountTemplate: '!!{textTemplate}!!', processingText: 'Working...' }; // JQueryDynatable.Dataset var tableDataset: JQueryDynatable.Dataset = { ajax: false, ajaxUrl: null, ajaxCache: null, ajaxOnLoad: false, ajaxMethod: 'GET', ajaxDataType: 'json', totalRecordCount: null, queries: {}, queryRecordCount: null, page: null, perPageDefault: 3, perPageOptions: [2, 3, 10], sorts: {}, sortsKeys: [], sortTypes: {}, records: null }; // JQueryDynatable.Writers var tableWriters: JQueryDynatable.Writers = { _rowWriter: function exampleRowWriter(rowIndex, record, columns, cellWriter) { var tr = ''; // grab the record's attribute for each column for (var i = 0, len = columns.length; i < len; i++) { tr += cellWriter(columns[i], record); } return '' + tr + ''; }, _cellWriter: function exampleCellWriter(column, record) { var html = column.attributeWriter(record), td = '