Roll Your Own HTML in Clerk
The
clerk/table
component
automatically limits
itself to only showing 20 results.
Other presentation components,
especially text,
have configurable
elision
behaviors,
but it doesn’t apply
to the table
.
After searching,
guessing at ways to do it,
and even asking in conference talks,
I finally realized
that we can render
our own HTML
with clerk/html
and hiccup.
That HTML
is not limited
to any size,
and building a table
is easy.
We used to do it
all the time.
I wrote
my own simple function
to render a table,
and I used that instead of the clerk/table
.
It takes the same parameters I was already using.
^{:nextjournal.clerk/visibility {:code :hide :result :hide}} (ns sample {:nextjournal.clerk/visibility {:code :fold :result :show}} (:require [nextjournal.clerk :as clerk])) ^{:nextjournal.clerk/visibility {:code :hide :result :hide}} (defn my-table "display a simple table in html. :head is the sequence of head labels. :rows is a sequence of sequences. :limit is the max to display of the rows. (default 100)" [params] (clerk/html [:table [:thead [:tr (for [h (:head params)] [:th h])]] [:tbody (for [r (take (or (:limit params) 100) (:rows params))] [:tr (for [c r] [:td c])])]])) (my-table {:head ["x" "y"] :limit 100 :rows [[1 2] [3 4]]})
Update 2023-11-27
As of the
0.15.957 release,
clerk tables have a ::clerk/page-size
parameter,
so I use that now
instead of the code above.