From a67a37dd11020dc6f685ae5a78b889993e3dffd4 Mon Sep 17 00:00:00 2001 From: Avatarsia Date: Thu, 11 Dec 2025 23:08:17 +0100 Subject: [PATCH 1/2] Highlight marked rows in document overviews --- www/themes/new/css/datatables_custom.css | 11 +++++ www/themes/new/js/scripts.js | 59 +++++++++++++++++++++++- 2 files changed, 69 insertions(+), 1 deletion(-) diff --git a/www/themes/new/css/datatables_custom.css b/www/themes/new/css/datatables_custom.css index fa50a08c5..973704430 100644 --- a/www/themes/new/css/datatables_custom.css +++ b/www/themes/new/css/datatables_custom.css @@ -495,3 +495,14 @@ color: #DDD; background-color: #222; } + +/* Highlight rows that are marked via the checkbox column */ +table.dataTable tbody tr.row-marked, +table.display tbody tr.row-marked { + background-color: #e8f2ff !important; +} + +table.dataTable tbody tr.row-marked td, +table.display tbody tr.row-marked td { + background-color: #e8f2ff !important; +} diff --git a/www/themes/new/js/scripts.js b/www/themes/new/js/scripts.js index 22a3f86c2..f50edde67 100644 --- a/www/themes/new/js/scripts.js +++ b/www/themes/new/js/scripts.js @@ -133,9 +133,66 @@ $(function() { $("body").css("overflow", "visible"); }); + /* Toggle background for rows that are marked via checkboxes */ + var markedRowTables = [ + "#angebote", + "#angeboteinbearbeitung", + "#auftraege", + "#auftraegeoffene", + "#auftraegeinbearbeitung", + "#rechnungen", + "#rechnungenoffene", + "#rechnungeninbearbeitung", + "#lieferscheine", + "#lieferscheineinbearbeitung", + "#mahnwesen_list" + ]; + + function markSelectedRows($table) { + $table.find("tbody tr").each(function(){ + var $row = $(this); + var isChecked = $row.find('input[type="checkbox"]:checked').length > 0; + $row.toggleClass("row-marked", isChecked); + }); + } + + function bindMarkedRowHighlight(selector) { + var $table = $(selector); + + if(!$table.length){ + return; + } + + if($table.data("rowMarkedBound")){ + markSelectedRows($table); + return; + } + + $table.data("rowMarkedBound", true); + + var refresh = function(){ + markSelectedRows($table); + }; + + $table.on("change", "tbody input[type=\"checkbox\"]", refresh); + $table.on("draw.dt", refresh); + refresh(); + } + + function refreshMarkedRowTables(){ + markedRowTables.forEach(function(selector){ + bindMarkedRowHighlight(selector); + }); + } + + refreshMarkedRowTables(); + + $(document).on("change", "#auswahlalle", function(){ + window.setTimeout(refreshMarkedRowTables, 0); + }); + }); - From b6d29adbe7974dcddc2b7732abcd45becce0d8c3 Mon Sep 17 00:00:00 2001 From: Avatarsia Date: Thu, 11 Dec 2025 23:22:48 +0100 Subject: [PATCH 2/2] Ensure marked rows highlight after DataTables init --- www/themes/new/js/scripts.js | 44 ++++++++++++++++++++++-------------- 1 file changed, 27 insertions(+), 17 deletions(-) diff --git a/www/themes/new/js/scripts.js b/www/themes/new/js/scripts.js index f50edde67..1a5d590e2 100644 --- a/www/themes/new/js/scripts.js +++ b/www/themes/new/js/scripts.js @@ -134,18 +134,20 @@ $(function() { }); /* Toggle background for rows that are marked via checkboxes */ - var markedRowTables = [ - "#angebote", - "#angeboteinbearbeitung", - "#auftraege", - "#auftraegeoffene", - "#auftraegeinbearbeitung", - "#rechnungen", - "#rechnungenoffene", - "#rechnungeninbearbeitung", - "#lieferscheine", - "#lieferscheineinbearbeitung", - "#mahnwesen_list" + var markedRowTableIds = [ + "angebote", + "angeboteinbearbeitung", + "auftraege", + "auftraegeoffene", + "auftraegeoffeneauto", + "auftraegeinbearbeitung", + "rechnungen", + "rechnungenoffene", + "rechnungeninbearbeitung", + "lieferscheine", + "lieferscheineoffene", + "lieferscheineinbearbeitung", + "mahnwesen_list" ]; function markSelectedRows($table) { @@ -156,10 +158,15 @@ $(function() { }); } + function isMarkedTable($table){ + var id = $table.attr("id"); + return id && markedRowTableIds.indexOf(id) !== -1; + } + function bindMarkedRowHighlight(selector) { - var $table = $(selector); + var $table = selector instanceof jQuery ? selector : $(selector); - if(!$table.length){ + if(!$table.length || !isMarkedTable($table)){ return; } @@ -180,13 +187,17 @@ $(function() { } function refreshMarkedRowTables(){ - markedRowTables.forEach(function(selector){ - bindMarkedRowHighlight(selector); + markedRowTableIds.forEach(function(id){ + bindMarkedRowHighlight("#" + id); }); } refreshMarkedRowTables(); + $(document).on("init.dt", function(e, settings){ + bindMarkedRowHighlight($(settings.nTable)); + }); + $(document).on("change", "#auswahlalle", function(){ window.setTimeout(refreshMarkedRowTables, 0); }); @@ -195,4 +206,3 @@ $(function() { }); -