Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/elixirdrops/kerosene
Pagination for Ecto and Pheonix.
https://github.com/elixirdrops/kerosene
Last synced: 2 months ago
JSON representation
Pagination for Ecto and Pheonix.
- Host: GitHub
- URL: https://github.com/elixirdrops/kerosene
- Owner: elixirdrops
- License: mit
- Created: 2016-03-08T16:03:26.000Z (almost 9 years ago)
- Default Branch: master
- Last Pushed: 2024-04-19T20:39:12.000Z (9 months ago)
- Last Synced: 2024-10-02T12:48:06.129Z (3 months ago)
- Language: Elixir
- Homepage: https://github.com/elixirdrops/kerosene
- Size: 78.1 KB
- Stars: 231
- Watchers: 9
- Forks: 39
- Open Issues: 20
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- License: LICENSE.md
Awesome Lists containing this project
- freaking_awesome_elixir - Elixir - Pagination for Ecto and Phoenix. (Framework Components)
- fucking-awesome-elixir - kerosene - Pagination for Ecto and Phoenix. (Framework Components)
- awesome-elixir - kerosene - Pagination for Ecto and Phoenix. (Framework Components)
README
# Kerosene
Pagination for Ecto and Phoenix.
## Installation
The package is [available in Hex](https://hex.pm/packages/kerosene), the package can be installed as:
Add kerosene to your list of dependencies in `mix.exs`:
```elixir
def deps do
[{:kerosene, "~> 0.9.0"}]
end
```Add Kerosene to your `repo.ex`:
```elixir
defmodule MyApp.Repo do
use Ecto.Repo,
otp_app: :testapp,
adapter: Ecto.Adapters.Postgres
use Kerosene, per_page: 2
end
```## Usage
Start paginating your queries
```elixir
def index(conn, params) do
{products, kerosene} =
Product
|> Product.with_lowest_price
|> Repo.paginate(params)render(conn, "index.html", products: products, kerosene: kerosene)
end
```Add view helpers to your view
```elixir
defmodule MyApp.ProductView do
use MyApp.Web, :view
import Kerosene.HTML
end
```Generate the links using the view helpers
```elixir
<%= paginate @conn, @kerosene %>
```Kerosene provides a [list ](https://hexdocs.pm/kerosene/Kerosene.HTML.html#__using__/1) of themes for pagination. By default it uses bootstrap. To use some other, add to config/config.exs:
```elixir
config :kerosene,
theme: :foundation
```If you need reduced number of links in pagination, you can use `simple mode` option, to display only Prev/Next links:
```elixir
config :kerosene,
mode: :simple
```Building apis or SPA's, no problem Kerosene has support for Json.
```elixir
defmodule MyApp.ProductView do
use MyApp.Web, :view
import Kerosene.JSONdef render("index.json", %{products: products, kerosene: kerosene, conn: conn}) do
%{data: render_many(products, MyApp.ProductView, "product.json"),
pagination: paginate(conn, kerosene)}
enddef render("product.json", %{product: product}) do
%{id: product.id,
name: product.name,
description: product.description,
price: product.price}
end
end
```You can also send in options to paginate helper look at the docs for more details.
## Contributing
Please do send pull requests and bug reports, positive feedback is always welcome.## Acknowledgement
I would like to Thank
* Matt (@mgwidmann)
* Drew Olson (@drewolson)
* Akira Matsuda (@amatsuda)## License
Please take a look at LICENSE.md