Skip to content

Commit 39e8760

Browse files
authored
Default pagination metabase#17200 (metabase#17210)
Change default behavior of pagination to be what i imagined it to be. Really should've taken Dan's question to heart and actually tested that bit...
1 parent 313f097 commit 39e8760

File tree

4 files changed

+15
-17
lines changed

4 files changed

+15
-17
lines changed

frontend/test/metabase/scenarios/admin/people/people.cy.spec.js

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -203,13 +203,11 @@ describe("scenarios > admin > people", () => {
203203
assertTableRowsCount(TOTAL_USERS);
204204
});
205205

206-
it.skip("should display more than 50 groups (metabase#17200)", () => {
207-
generateGroups(50);
206+
it("should display more than 50 groups (metabase#17200)", () => {
207+
generateGroups(51);
208208

209209
cy.visit("/admin/people/groups");
210-
// The assertion depends on the way we'll implement this.
211-
// a) if we go with the pagination, the assertion will have to be updated
212-
// b) if we remove the limit, the current assertion will work
210+
cy.scrollTo("bottom");
213211
cy.findByText("readonly");
214212
});
215213

src/metabase/api/collection.clj

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -410,7 +410,10 @@
410410
:order-by sql-order}
411411
;; We didn't implement collection pagination for snippets namespace for root/items
412412
;; Rip out the limit for now and put it back in when we want it
413-
limit-query (if (= (:collection-namespace options) "snippets")
413+
limit-query (if (or
414+
(nil? offset-paging/*limit*)
415+
(nil? offset-paging/*offset*)
416+
(= (:collection-namespace options) "snippets"))
414417
rows-query
415418
(assoc rows-query
416419
:limit offset-paging/*limit*

src/metabase/server/middleware/offset_paging.clj

Lines changed: 6 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -3,14 +3,11 @@
33
[metabase.server.middleware.security :as mw.security ]
44
[metabase.util.i18n :refer [tru]]))
55

6+
(def ^:dynamic *limit* "Limit for offset-limit paging." nil)
67
(def ^:private default-limit 50)
78

8-
(def ^:dynamic *limit*
9-
"Limit for offset-limit paging.
10-
Default set by default-limit in offset paging middleware."
11-
default-limit)
12-
13-
(def ^:dynamic *offset* "Offset for offset-limit paging. Default is no offset." 0)
9+
(def ^:dynamic *offset* "Offset for offset-limit paging." nil)
10+
(def ^:private default-offset 0)
1411

1512
(def ^:dynamic *paged?*
1613
"Bool for whether a request is paged or not.
@@ -24,7 +21,7 @@
2421
(let [limit (or (some-> limit Integer/parseUnsignedInt)
2522
default-limit)
2623
offset (or (some-> offset Integer/parseUnsignedInt)
27-
0)]
24+
default-offset)]
2825
{:limit limit, :offset offset}))
2926

3027
(defn- with-paging-params [request {:keys [limit offset]}]
@@ -56,7 +53,7 @@
5653
{:message (tru "Error parsing paging parameters: {0}" (ex-message e))})}))
5754
(let [{:keys [limit offset]} paging-params
5855
request (with-paging-params request paging-params)]
59-
(binding [*limit* limit
60-
*offset* offset
56+
(binding [*limit* limit
57+
*offset* offset
6158
*paged?* true]
6259
(handler request respond raise))))))))

test/metabase/server/middleware/offset_paging_test.clj

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -24,8 +24,8 @@
2424
(testing "no paging params"
2525
(is (= {:status 200
2626
:headers {}
27-
:body {:limit @#'mw.offset-paging/default-limit
28-
:offset 0
27+
:body {:limit nil
28+
:offset nil
2929
:paged? false
3030
:params {}}}
3131
(handler (ring.mock/request :get "/")))))

0 commit comments

Comments
 (0)