mirror of
https://github.com/CodeforLeipzig/stadtratmonitor.git
synced 2024-12-22 23:53:15 +01:00
Add pagination via kaminari
This commit is contained in:
parent
f71c083722
commit
40eeac2021
13 changed files with 57 additions and 5 deletions
1
Gemfile
1
Gemfile
|
@ -5,6 +5,7 @@ source 'https://rubygems.org'
|
|||
gem 'rails'
|
||||
# Use sqlite3 as the database for Active Record
|
||||
gem 'sqlite3'
|
||||
gem 'kaminari'
|
||||
# Use SCSS for stylesheets
|
||||
gem 'sass-rails'
|
||||
# Use Uglifier as compressor for JavaScript assets
|
||||
|
|
|
@ -81,6 +81,9 @@ GEM
|
|||
railties (>= 4.2.0)
|
||||
thor (>= 0.14, < 2.0)
|
||||
json (1.8.2)
|
||||
kaminari (0.16.3)
|
||||
actionpack (>= 3.0.0)
|
||||
activesupport (>= 3.0.0)
|
||||
launchy (2.4.3)
|
||||
addressable (~> 2.3)
|
||||
loofah (2.0.1)
|
||||
|
@ -188,6 +191,7 @@ DEPENDENCIES
|
|||
elasticsearch-model
|
||||
foundation-rails
|
||||
jquery-rails
|
||||
kaminari
|
||||
launchy
|
||||
omniauth
|
||||
omniauth-browserid
|
||||
|
|
|
@ -2,10 +2,9 @@ class SearchController < ApplicationController
|
|||
def index
|
||||
@show_search_result = params[:q].present?
|
||||
@papers = if @show_search_result
|
||||
# TODO: Add pagination
|
||||
Paper.search(params[:q]).records
|
||||
Paper.search(params[:q]).page(params[:page]).results
|
||||
else
|
||||
Paper.last(30)
|
||||
Paper.order(published_at: :desc).page(params[:page])
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
3
app/views/kaminari/_first_page.html.slim
Normal file
3
app/views/kaminari/_first_page.html.slim
Normal file
|
@ -0,0 +1,3 @@
|
|||
li
|
||||
= link_to_unless(current_page.first?,
|
||||
raw(t 'views.pagination.first'), url, :remote => remote)
|
2
app/views/kaminari/_gap.html.slim
Normal file
2
app/views/kaminari/_gap.html.slim
Normal file
|
@ -0,0 +1,2 @@
|
|||
li.unavailable
|
||||
= link_to raw(t 'views.pagination.truncate'), '#'
|
3
app/views/kaminari/_last_page.html.slim
Normal file
3
app/views/kaminari/_last_page.html.slim
Normal file
|
@ -0,0 +1,3 @@
|
|||
li
|
||||
= link_to_unless(current_page.last?,
|
||||
raw(t 'views.pagination.last'), url, { :remote => remote })
|
4
app/views/kaminari/_next_page.html.slim
Normal file
4
app/views/kaminari/_next_page.html.slim
Normal file
|
@ -0,0 +1,4 @@
|
|||
li
|
||||
= link_to_unless(current_page.last?,
|
||||
raw(t 'views.pagination.next'),
|
||||
url, :rel => 'next', :remote => remote)
|
4
app/views/kaminari/_page.html.slim
Normal file
4
app/views/kaminari/_page.html.slim
Normal file
|
@ -0,0 +1,4 @@
|
|||
li{class="#{'current' if page.current?}"}
|
||||
= link_to(page, page.current? ? '#' : url,
|
||||
{ :remote => remote,
|
||||
:rel => page.next? ? 'next' : page.prev? ? 'prev' : nil })
|
12
app/views/kaminari/_paginator.html.slim
Normal file
12
app/views/kaminari/_paginator.html.slim
Normal file
|
@ -0,0 +1,12 @@
|
|||
= paginator.render do
|
||||
.pagination-centered
|
||||
ul.pagination
|
||||
= first_page_tag unless current_page.first?
|
||||
= prev_page_tag unless current_page.first?
|
||||
- each_page do |page|
|
||||
- if page.left_outer? || page.right_outer? || page.inside_window?
|
||||
= page_tag page
|
||||
- elsif !page.was_truncated?
|
||||
= gap_tag
|
||||
= next_page_tag unless current_page.last?
|
||||
= last_page_tag unless current_page.last?
|
4
app/views/kaminari/_prev_page.html.slim
Normal file
4
app/views/kaminari/_prev_page.html.slim
Normal file
|
@ -0,0 +1,4 @@
|
|||
li
|
||||
= link_to_unless(current_page.first?,
|
||||
raw(t 'views.pagination.previous'),
|
||||
url, :rel => 'prev', :remote => remote)
|
|
@ -4,7 +4,7 @@ div
|
|||
.clearfix
|
||||
- if @show_search_result
|
||||
.left
|
||||
| #{@papers.size} Treffer
|
||||
| #{@papers.total} Treffer
|
||||
.right
|
||||
button.button. TODO: Suche Abbonieren
|
||||
div
|
||||
|
@ -18,3 +18,6 @@ div
|
|||
small = doc.published_at
|
||||
= link_to doc.url, target: '_blank' do
|
||||
div = doc.name
|
||||
|
||||
div
|
||||
= paginate @papers
|
||||
|
|
13
config/initializers/kaminari_config.rb
Normal file
13
config/initializers/kaminari_config.rb
Normal file
|
@ -0,0 +1,13 @@
|
|||
Kaminari.configure do |config|
|
||||
# config.default_per_page = 25
|
||||
# config.max_per_page = nil
|
||||
# config.window = 4
|
||||
# config.outer_window = 0
|
||||
# config.left = 0
|
||||
# config.right = 0
|
||||
# config.page_method_name = :page
|
||||
# config.param_name = :page
|
||||
end
|
||||
|
||||
Kaminari::Hooks.init
|
||||
Elasticsearch::Model::Response::Response.__send__ :include, Elasticsearch::Model::Response::Pagination::Kaminari
|
|
@ -4,7 +4,7 @@ namespace :import_papers do
|
|||
task :from_morph => :environment do |t, args|
|
||||
require 'open-uri'
|
||||
api_key = ENV['MORPH_API_KEY']
|
||||
uri = URI.parse "https://api.morph.io/ahx/city_council_leipzig_recent_papers/data.json?key=#{api_key}&query=select%20*%20from%20%27data%27%20limit%2010"
|
||||
uri = URI.parse "https://api.morph.io/ahx/city_council_leipzig_recent_papers/data.json?key=#{api_key}&query=select%20*%20from%20%27data%27"
|
||||
puts "Download files from #{uri}…"
|
||||
Paper.import_from_json(uri.read)
|
||||
end
|
||||
|
|
Loading…
Reference in a new issue