diff --git a/assets/app/css/main.css b/assets/app/css/main.css index a335301b..7a217e8d 100644 --- a/assets/app/css/main.css +++ b/assets/app/css/main.css @@ -305,6 +305,11 @@ body { margin: 0; } +.filter-button { + all: unset; + line-height: 2.0; +} + /*For rounded table border*/ div.dataTables_scrollHead table, div.dataTables_scrollHead th:first-child { diff --git a/assets/app/js/controllers/scanDataTable.js b/assets/app/js/controllers/scanDataTable.js index 3a786fa3..0a28dc02 100644 --- a/assets/app/js/controllers/scanDataTable.js +++ b/assets/app/js/controllers/scanDataTable.js @@ -98,11 +98,6 @@ class ScanDataTable extends Controller { return this._dataTable; } - // Adds a footer for each column. This needs to be done before creating - // the DataTable - const cells = $.map(ScanDataTable.TABLE_COLUMNS, () => '').join(''); - $(this.dataTableSelector()).append('' + cells + ''); - this._dataTable = $(this.dataTableSelector()).DataTable({ serverSide: true, processing: true, @@ -204,6 +199,18 @@ class ScanDataTable extends Controller { hide: ScanDataTable.TABLE_COLUMNS .filter((column) => ScanDataTable.PACKAGE_GROUP.indexOf(column) < 0) .map((column) => `${column.name}:name`) + }, + { + text: '', + className: 'filter-button activate-filters-button' + }, + { + text: '', + className: 'filter-button reset-filters-button' + }, + { + text: '', + className: 'filter-button clear-filters-button' } ], dom: // Needed to keep datatables buttons and search inline @@ -384,20 +391,6 @@ class ScanDataTable extends Controller { } _initComplete() { - const pathCol = this.dataTable().columns(0); - - const footer = $(pathCol.footer()); - // keep the buttons horizontally aligned - footer.css('white-space', 'nowrap'); - - const genFiltersButton = $(``); - const resetFiltersButton = $(``); - const clearFiltersButton = $(``); - - footer.append(genFiltersButton); - footer.append(resetFiltersButton); - footer.append(clearFiltersButton); - this.dataTable().columns().every(function (columnIndex) { const columnInfo = ScanDataTable.TABLE_COLUMNS[columnIndex]; @@ -406,10 +399,10 @@ class ScanDataTable extends Controller { } const column = this; - const footer = $(column.footer()); + const header = $(column.header()); const columnName = columnInfo.name; - const select = $(``) + const select = $(``) .on('change', function () { const val = $(this).val(); column @@ -417,7 +410,10 @@ class ScanDataTable extends Controller { .draw(); }); - footer.append(select); + $('.sorting select').click((e) => { + e.stopPropagation(); + }); + header.append(select); }); } @@ -456,11 +452,9 @@ class ScanDataTable extends Controller { } const column = this; - const footer = $(column.footer()); + const header = $(column.header()); const columnName = columnInfo.name; - footer.empty(); - const select = $('#scandata-' + columnName) .empty() .on('change', function () { @@ -501,7 +495,7 @@ class ScanDataTable extends Controller { select.append(``); }); }); - footer.append(select); + header.append(select); }); } diff --git a/assets/app/js/renderer.js b/assets/app/js/renderer.js index 48caff43..c7cbb1f4 100644 --- a/assets/app/js/renderer.js +++ b/assets/app/js/renderer.js @@ -88,17 +88,17 @@ $(document).ready(() => { updateViewsByPath(node.id); }); - $(document).on('click', '#activate-filters-button', () => { + $(document).on('click', '.activate-filters-button', () => { scanDataTable.genFilters(); updateViewsByPath(scanDataTable._selectedPath); }); - $(document).on('click', '#reset-filters-button', () => { + $(document).on('click', '.reset-filters-button', () => { scanDataTable.resetColumnFilters(); updateViewsByPath(scanDataTable._selectedPath); }); - $(document).on('click', '#clear-filters-button', () => { + $(document).on('click', '.clear-filters-button', () => { scanDataTable.clearColumnFilters(); updateViewsByPath(scanDataTable._selectedPath); }); diff --git a/assets/thirdparty/DataTables/DataTables-1.10.11/css/dataTables.bootstrap.css b/assets/thirdparty/DataTables/DataTables-1.10.11/css/dataTables.bootstrap.css index 9abe1b5b..cc82c28d 100755 --- a/assets/thirdparty/DataTables/DataTables-1.10.11/css/dataTables.bootstrap.css +++ b/assets/thirdparty/DataTables/DataTables-1.10.11/css/dataTables.bootstrap.css @@ -82,6 +82,7 @@ table.dataTable thead .sorting_asc_disabled, table.dataTable thead .sorting_desc_disabled { cursor: pointer; position: relative; + vertical-align: middle; } table.dataTable thead .sorting:after, table.dataTable thead .sorting_asc:after, @@ -89,7 +90,7 @@ table.dataTable thead .sorting_desc:after, table.dataTable thead .sorting_asc_disabled:after, table.dataTable thead .sorting_desc_disabled:after { position: absolute; - bottom: 8px; + bottom: 20px; right: 8px; display: block; font-family: 'Glyphicons Halflings';