diff --git a/jquery.dynatable/jquery.dynatable-tests.ts b/jquery.dynatable/jquery.dynatable-tests.ts new file mode 100644 index 000000000..7a9f3aab7 --- /dev/null +++ b/jquery.dynatable/jquery.dynatable-tests.ts @@ -0,0 +1,229 @@ +/// +/// + + +// 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 = '