MDL-69241 lib: Reset dynamic tables to page 1 when filtering or sorting
authorMichael Hawkins <michaelh@moodle.com>
Wed, 15 Jul 2020 11:58:23 +0000 (19:58 +0800)
committerMichael Hawkins <michaelh@moodle.com>
Fri, 7 Aug 2020 04:53:26 +0000 (12:53 +0800)
This ensures consistency and that the page will always exist, which may
not be true for later pages if applying filters returns fewer results.

lib/table/amd/build/dynamic.min.js
lib/table/amd/build/dynamic.min.js.map
lib/table/amd/src/dynamic.js

index 457bab1..2b10d71 100644 (file)
Binary files a/lib/table/amd/build/dynamic.min.js and b/lib/table/amd/build/dynamic.min.js differ
index e2275f1..3f58a60 100644 (file)
Binary files a/lib/table/amd/build/dynamic.min.js.map and b/lib/table/amd/build/dynamic.min.js.map differ
index a0246dd..1004a8e 100644 (file)
@@ -156,14 +156,6 @@ export const updateTable = (tableRoot, {
         tableRoot.dataset.tableLastInitial = lastInitial;
     }
 
-    if (pageNumber !== null) {
-        if (tableRoot.dataset.tablePageNumber != pageNumber) {
-            tableConfigChanged = true;
-        }
-
-        tableRoot.dataset.tablePageNumber = pageNumber;
-    }
-
     if (pageSize !== null) {
         if (tableRoot.dataset.tablePageSize != pageSize) {
             tableConfigChanged = true;
@@ -183,6 +175,12 @@ export const updateTable = (tableRoot, {
         tableRoot.dataset.tableFilters = filterJson;
     }
 
+    // Reset to page 1 when table content is being altered by filtering or sorting.
+    // This ensures the table page being loaded always exists, and gives a consistent experience.
+    if (tableConfigChanged) {
+        pageNumber = 1;
+    }
+
     // Update hidden columns.
     if (hiddenColumns) {
         const columnJson = JSON.stringify(hiddenColumns);
@@ -194,6 +192,14 @@ export const updateTable = (tableRoot, {
         tableRoot.dataset.tableHiddenColumns = columnJson;
     }
 
+    if (pageNumber !== null) {
+        if (tableRoot.dataset.tablePageNumber != pageNumber) {
+            tableConfigChanged = true;
+        }
+
+        tableRoot.dataset.tablePageNumber = pageNumber;
+    }
+
     // Refresh.
     if (refreshContent && tableConfigChanged) {
         return refreshTableContent(tableRoot)