From 760e5758cea0cd3a27933537f0426f493ac233e1 Mon Sep 17 00:00:00 2001 From: Cris Date: Tue, 19 Jul 2022 17:33:28 +0200 Subject: [PATCH] =?UTF-8?q?Optimized=20performance=20of=20all=20'Alle=20au?= =?UTF-8?q?sw=C3=A4hlen'-buttons=20defined=20via=20tableWidgetHook?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ...by passing an array of rows to be selected, instead of selecting each row one by one. Further triggered functions, e.g. rowSelectionChanged, are now called once only, not for each row. --- public/js/lehre/anrechnung/approveAnrechnungUebersicht.js | 7 ++++--- public/js/lehre/anrechnung/reviewAnrechnungUebersicht.js | 7 ++++--- public/js/lehre/lehrauftrag/acceptLehrauftrag.js | 7 ++++--- public/js/lehre/lehrauftrag/approveLehrauftrag.js | 7 ++++--- public/js/lehre/lehrauftrag/orderLehrauftrag.js | 7 ++++--- 5 files changed, 20 insertions(+), 15 deletions(-) diff --git a/public/js/lehre/anrechnung/approveAnrechnungUebersicht.js b/public/js/lehre/anrechnung/approveAnrechnungUebersicht.js index 97415a8f2..d16218de6 100644 --- a/public/js/lehre/anrechnung/approveAnrechnungUebersicht.js +++ b/public/js/lehre/anrechnung/approveAnrechnungUebersicht.js @@ -222,11 +222,12 @@ var format_empfehlung_anrechnung = function(cell, formatterParams){ * (Ignore rows that are approved, rejected or in request for recommendation) */ function tableWidgetHook_selectAllButton(tableWidgetDiv){ - tableWidgetDiv.find("#tableWidgetTabulator").tabulator('getRows', true) + var resultRows = tableWidgetDiv.find("#tableWidgetTabulator").tabulator('getRows', true) .filter(row => row.getData().status_kurzbz == ANRECHNUNGSTATUS_PROGRESSED_BY_STGL - ) - .forEach((row => row.select())); + ); + + tableWidgetDiv.find("#tableWidgetTabulator").tabulator('selectRow', resultRows); } diff --git a/public/js/lehre/anrechnung/reviewAnrechnungUebersicht.js b/public/js/lehre/anrechnung/reviewAnrechnungUebersicht.js index 2cf7c1623..2d5d65ac9 100644 --- a/public/js/lehre/anrechnung/reviewAnrechnungUebersicht.js +++ b/public/js/lehre/anrechnung/reviewAnrechnungUebersicht.js @@ -127,11 +127,12 @@ var format_empfehlung_anrechnung = function(cell, formatterParams){ * (Ignore rows that are approved, rejected or in request for recommendation) */ function tableWidgetHook_selectAllButton(tableWidgetDiv){ - tableWidgetDiv.find("#tableWidgetTabulator").tabulator('getRows', true) + var resultRows = tableWidgetDiv.find("#tableWidgetTabulator").tabulator('getRows', true) .filter(row => row.getData().status_kurzbz == ANRECHNUNGSTATUS_PROGRESSED_BY_LEKTOR - ) - .forEach((row => row.select())); + ); + + tableWidgetDiv.find("#tableWidgetTabulator").tabulator('selectRow', resultRows); } diff --git a/public/js/lehre/lehrauftrag/acceptLehrauftrag.js b/public/js/lehre/lehrauftrag/acceptLehrauftrag.js index a39fe3667..08a0645bc 100644 --- a/public/js/lehre/lehrauftrag/acceptLehrauftrag.js +++ b/public/js/lehre/lehrauftrag/acceptLehrauftrag.js @@ -274,12 +274,13 @@ function func_renderComplete(table){ * Select all (filtered) rows and ignore rows that are bestellt and erteilt */ function tableWidgetHook_selectAllButton(tableWidgetDiv){ - tableWidgetDiv.find("#tableWidgetTabulator").tabulator('getRows', true) + var resultRows = tableWidgetDiv.find("#tableWidgetTabulator").tabulator('getRows', true) .filter(row => row.getData().bestellt != null && // bestellt row.getData().erteilt != null && // AND erteilt row.getData().akzeptiert == null && // AND NOT akzeptiert - row.getData().status != 'Geändert') // AND NOT geändert - .forEach((row => row.select())); + row.getData().status != 'Geändert'); // AND NOT geändert + + tableWidgetDiv.find("#tableWidgetTabulator").tabulator('selectRow', resultRows); } // ----------------------------------------------------------------------------------------------------------------- diff --git a/public/js/lehre/lehrauftrag/approveLehrauftrag.js b/public/js/lehre/lehrauftrag/approveLehrauftrag.js index cd8816c1e..c16016cf5 100644 --- a/public/js/lehre/lehrauftrag/approveLehrauftrag.js +++ b/public/js/lehre/lehrauftrag/approveLehrauftrag.js @@ -319,12 +319,13 @@ function func_rowUpdated(row){ * Select all (filtered) rows that are bestellt */ function tableWidgetHook_selectAllButton(tableWidgetDiv){ - tableWidgetDiv.find("#tableWidgetTabulator").tabulator('getRows', true) + var resultRows = tableWidgetDiv.find("#tableWidgetTabulator").tabulator('getRows', true) .filter(row => row.getData().personalnummer >= 0 && // NOT dummies row.getData().bestellt != null && // AND bestellt row.getData().erteilt == null && // AND NOT erteilt - row.getData().status != 'Geändert') // AND NOT geaendert - .forEach((row => row.select())); + row.getData().status != 'Geändert'); // AND NOT geaendert + + tableWidgetDiv.find("#tableWidgetTabulator").tabulator('selectRow', resultRows); } // ----------------------------------------------------------------------------------------------------------------- diff --git a/public/js/lehre/lehrauftrag/orderLehrauftrag.js b/public/js/lehre/lehrauftrag/orderLehrauftrag.js index d6b165b65..06db3ce60 100644 --- a/public/js/lehre/lehrauftrag/orderLehrauftrag.js +++ b/public/js/lehre/lehrauftrag/orderLehrauftrag.js @@ -343,7 +343,7 @@ function func_rowUpdated(row){ * Select all (filtered) rows and ignore rows which have status bestellt */ function tableWidgetHook_selectAllButton(tableWidgetDiv){ - tableWidgetDiv.find("#tableWidgetTabulator").tabulator('getRows', true) + var resultRows = tableWidgetDiv.find("#tableWidgetTabulator").tabulator('getRows', true) .filter(row => ( row.getData().personalnummer > 0 || // not dummies row.getData().personalnummer == null) && // include Projektbetreuer @@ -355,8 +355,9 @@ function tableWidgetHook_selectAllButton(tableWidgetDiv){ (row.getData().bestellt != null && // OR (bestellt row.getData().status == 'Geändert') // AND geaendert) ) - ) - .forEach((row => row.select())); + ); + + tableWidgetDiv.find("#tableWidgetTabulator").tabulator('selectRow', resultRows); } // -----------------------------------------------------------------------------------------------------------------