From cc2ea93313add269d7f36cce0ae404cc7fc20128 Mon Sep 17 00:00:00 2001 From: Bernd Bestel Date: Thu, 17 Dec 2020 17:41:31 +0100 Subject: [PATCH] Make DataTable row groups collapsible everywhere (references #1189) --- public/css/grocy.css | 4 ++++ public/js/grocy.js | 24 +++++++++++++++++++++++- public/viewjs/shoppinglist.js | 28 ++-------------------------- views/shoppinglist.blade.php | 7 ------- 4 files changed, 29 insertions(+), 34 deletions(-) diff --git a/public/css/grocy.css b/public/css/grocy.css index ae11d0ed..a860f329 100755 --- a/public/css/grocy.css +++ b/public/css/grocy.css @@ -355,6 +355,10 @@ a:not([href]) { overflow: visible !important; } +tr.dtrg-group { + cursor: pointer; +} + /* Third party component customizations - toastr */ #toast-container > div { opacity: 1; diff --git a/public/js/grocy.js b/public/js/grocy.js index 4766d8d6..a297bb17 100644 --- a/public/js/grocy.js +++ b/public/js/grocy.js @@ -720,6 +720,7 @@ $(document).on("click", ".show-as-dialog-link", function(e) }); // Default DataTables initialisation settings +var collapsedGroups = {}; $.extend(true, $.fn.dataTable.defaults, { 'paginate': false, 'deferRender': true, @@ -800,9 +801,30 @@ $.extend(true, $.fn.dataTable.defaults, { { type: 'chinese-string', targets: '_all' } ], 'rowGroup': { - enable: false + enable: false, + startRender: function(rows, group) + { + var collapsed = !!collapsedGroups[group]; + var toggleClass = collapsed ? "fa-caret-right" : "fa-caret-down"; + + rows.nodes().each(function(row) + { + row.style.display = collapsed ? "none" : ""; + }); + + return $("") + .append('' + group + ' ') + .attr("data-name", group) + .toggleClass("collapsed", collapsed); + } } }); +$(document).on("click", "tr.dtrg-group", function() +{ + var name = $(this).data('name'); + collapsedGroups[name] = !collapsedGroups[name]; + $("table").DataTable().draw(); +}); // serializeJSON defaults $.serializeJSON.defaultOptions.checkboxUncheckedValue = "0"; diff --git a/public/viewjs/shoppinglist.js b/public/viewjs/shoppinglist.js index 31875067..0e2d65ba 100644 --- a/public/viewjs/shoppinglist.js +++ b/public/viewjs/shoppinglist.js @@ -1,6 +1,4 @@ -var collapsedGroups = {}; - -var shoppingListTable = $('#shoppinglist-table').DataTable({ +var shoppingListTable = $('#shoppinglist-table').DataTable({ 'order': [[1, 'asc']], "orderFixed": [[3, 'asc']], 'columnDefs': [ @@ -11,34 +9,12 @@ var shoppingListTable = $('#shoppinglist-table').DataTable({ ].concat($.fn.dataTable.defaults.columnDefs), 'rowGroup': { enable: true, - dataSrc: 3, - startRender: function(rows, group) - { - var collapsed = !!collapsedGroups[group]; - var toggleClass = collapsed ? "fa-caret-right" : "fa-caret-down"; - - rows.nodes().each(function(row) - { - row.style.display = collapsed ? "none" : ""; - }); - - return $("") - .append('' + group + ' ') - .attr("data-name", group) - .toggleClass("collapsed", collapsed); - } + dataSrc: 3 } }); $('#shoppinglist-table tbody').removeClass("d-none"); shoppingListTable.columns.adjust().draw(); -$(document).on("click", "tr.dtrg-group", function() -{ - var name = $(this).data('name'); - collapsedGroups[name] = !collapsedGroups[name]; - shoppingListTable.draw(); -}); - $("#search").on("keyup", Delay(function() { var value = $(this).val(); diff --git a/views/shoppinglist.blade.php b/views/shoppinglist.blade.php index 6e03c80f..2bc10643 100644 --- a/views/shoppinglist.blade.php +++ b/views/shoppinglist.blade.php @@ -11,13 +11,6 @@ @push('pageStyles') - - @endpush @section('content')