mighty_grid 0.0.2 → 0.0.3

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 0e08e21c7f221bea010b0122ccf6e2063ca5183b
4
- data.tar.gz: 2a51d49c0f285e2a80ca07fa93e070f93d422588
3
+ metadata.gz: 7d3d1e2a4aa491cd41cb2ab49f395647aa281538
4
+ data.tar.gz: 08344ab81f0419c86511071fea30144dc21ba192
5
5
  SHA512:
6
- metadata.gz: eb31c9ab5787ccf06f65f4c90db91cf0fbb5f5f768b4406c36a3fe3aba07437751fbb79139f52eacc86fb3a80bd87e70bdd32ff169b98b708f4060b82e6a7d1e
7
- data.tar.gz: 71124468f6649987aca7fee50dc2fb9bf045298b2ff30a971d2bab67043df808c6c5a1d21fc91bbd64de901fe74769043ae51bfa78d2462cd779b911a3a80b59
6
+ metadata.gz: 7f4025181acf0ca7074b0c55fc9a12e2b065f4352019e0806cecb1bc27b418f12a3a811067b834feb7c88802d63934f85f826b96d53c6426db8f7d95f79b3f51
7
+ data.tar.gz: e0fba9c3e9be9f0c641dce7c03e5d67688efd01f1c83f710f1e35f5cf932935210f4842b93cb782653ee7722f73c0f6ae3a087d962b647f36f65d47cd2d6ec31
@@ -0,0 +1,3 @@
1
+ <li class="disabled">
2
+ <%= link_to raw(t 'views.pagination.truncate'), '#' %>
3
+ </li>
@@ -0,0 +1,3 @@
1
+ <li>
2
+ <%= link_to_unless current_page.last?, raw(t 'views.pagination.next'), url, :rel => 'next', :remote => remote %>
3
+ </li>
@@ -0,0 +1,3 @@
1
+ <li class="<%= 'active' if page.current? %>">
2
+ <%= link_to page, page.current? ? '#' : url, {:remote => remote, :rel => page.next? ? 'next' : page.prev? ? 'prev' : nil} %>
3
+ </li>
@@ -0,0 +1,15 @@
1
+ <%= paginator.render do -%>
2
+ <ul class="pagination pagination-sm pull-right">
3
+ <%= first_page_tag unless current_page.first? %>
4
+ <%= prev_page_tag unless current_page.first? %>
5
+ <% each_page do |page| -%>
6
+ <% if page.left_outer? || page.right_outer? || page.inside_window? -%>
7
+ <%= page_tag page %>
8
+ <% elsif !page.was_truncated? -%>
9
+ <%= gap_tag %>
10
+ <% end -%>
11
+ <% end -%>
12
+ <%= next_page_tag unless current_page.last? %>
13
+ <%= last_page_tag unless current_page.last? %>
14
+ </ul>
15
+ <% end -%>
@@ -0,0 +1,3 @@
1
+ <li>
2
+ <%= link_to_unless current_page.first?, raw(t 'views.pagination.previous'), url, :rel => 'prev', :remote => remote %>
3
+ </li>
data/lib/mighty_grid.rb CHANGED
@@ -1,11 +1,14 @@
1
1
  require 'mighty_grid/version'
2
+ require 'mighty_grid/mighty_grid_ext'
2
3
  require 'mighty_grid/column'
3
4
  require 'mighty_grid/grid_renderer'
4
5
  require 'mighty_grid/helpers/mighty_grid_view_helpers'
5
6
  require 'mighty_grid/mighty_grid_controller'
6
7
 
8
+ require 'kaminari.rb'
9
+
7
10
  module MightyGrid
8
- # Your code goes here...
11
+
9
12
  class MightyGridEngine < ::Rails::Engine
10
13
  initializer 'mighty_grid_railtie.configure_rails_initialization' do |app|
11
14
 
@@ -15,6 +18,9 @@ module MightyGrid
15
18
 
16
19
  ActiveSupport.on_load :action_view do
17
20
  ::ActionView::Base.class_eval { include MightyGrid::GridViewHelper }
21
+
22
+ # It is here only until this pull request is pulled: https://github.com/amatsuda/kaminari/pull/267
23
+ require 'mighty_grid/kaminari_monkey_patching'
18
24
  end
19
25
 
20
26
  end
@@ -22,18 +28,55 @@ module MightyGrid
22
28
 
23
29
  class Base
24
30
 
25
- attr_reader :klass, :relation
26
-
31
+ attr_reader :klass, :name, :relation, :options, :mg_params
27
32
  attr_accessor :output_buffer
28
33
 
29
34
  def initialize(klass_or_relation, controller, opts = {}) #:nodoc:
30
35
  @controller = controller
31
36
 
37
+ @options = {
38
+ page: 1,
39
+ per_page: 10,
40
+ name: 'grid'
41
+ }
42
+
43
+ opts.assert_valid_keys(@options.keys)
44
+ @options.merge!(opts)
45
+
46
+ @name = @options[:name].to_s
47
+
48
+ load_grid_params
49
+
32
50
  @relation = klass_or_relation
33
51
 
34
52
  @klass = klass_or_relation.is_a?(ActiveRecord::Relation) ? klass_or_relation.klass : klass_or_relation
35
53
 
36
54
  end
37
55
 
56
+ def read
57
+ @relation = @relation.order(@mg_params[:order] => @mg_params[:order_direction].to_sym) if @mg_params[:order].present? && @mg_params[:order_direction].present?
58
+ @relation = @relation.page(@mg_params[:page]).per(@mg_params[:per_page])
59
+ end
60
+
61
+ def params
62
+ @controller.params
63
+ end
64
+
65
+ def load_grid_params
66
+ @mg_params = {}
67
+ @mg_params.merge!(@options)
68
+ if current_grid_params
69
+ @mg_params.merge!(current_grid_params.symbolize_keys)
70
+ end
71
+ end
72
+
73
+ def current_grid_params
74
+ params[name] || {}
75
+ end
76
+
77
+ def order_direction
78
+ (current_grid_params.has_key?('order_direction')) ? (['asc', 'desc'] - [current_grid_params['order_direction']]).first : 'asc'
79
+ end
80
+
38
81
  end
39
82
  end
@@ -1,19 +1,26 @@
1
1
  module MightyGrid
2
2
  class Column
3
3
 
4
- attr_reader :display_property
5
- attr_accessor :render_value, :attrs
4
+ attr_reader :display_property, :attribute, :attrs, :th_attrs, :options, :title
5
+ attr_accessor :render_value
6
6
 
7
7
  def initialize(attr_or_options=nil, options=nil, &block)
8
8
  @attrs = {}
9
9
  if block_given?
10
+ @options = attr_or_options
10
11
  @display_property = :block
11
12
  @render_value = block
12
- @attrs = attr_or_options[:html] if attr_or_options && attr_or_options.has_key?(:html)
13
+ @attrs = options[:html] if options && options.has_key?(:html)
14
+ @th_attrs = options[:th_html] if options && options.has_key?(:th_html)
15
+ @title = options[:title] || ''
13
16
  else
17
+ @options = options
18
+ @attribute = attr_or_options
14
19
  @display_property = :attr
15
- @render_value = attr_or_options
20
+ @render_value = attribute
16
21
  @attrs = options[:html] if options && options.has_key?(:html)
22
+ @th_attrs = options[:th_html] if options && options.has_key?(:th_html)
23
+ @title = options[:title] || ''
17
24
  end
18
25
  end
19
26
 
@@ -1,6 +1,6 @@
1
1
  module MightyGrid
2
2
  class GridRenderer
3
- attr_reader :columns, :th_columns
3
+ attr_reader :columns, :th_columns, :total_columns
4
4
 
5
5
  def initialize(grid, view)
6
6
  @columns = []
@@ -10,14 +10,18 @@ module MightyGrid
10
10
  def column(attr_or_options = {}, options=nil, &block)
11
11
  if block_given?
12
12
  options = attr_or_options.symbolize_keys
13
- @th_columns << {title: options[:title], html: options[:th_html]}
14
- @columns << MightyGrid::Column.new(options[:html], &block)
13
+ @columns << MightyGrid::Column.new(options, &block)
15
14
  else
16
- @columns << MightyGrid::Column.new(attr_or_options, options)
17
- th_column = {title: attr_or_options.to_s.titleize}
18
- th_column[:html] = options ? options[:th_html] : {}
19
- @th_columns << th_column
15
+ attribute = attr_or_options.to_sym
16
+ options = {} unless options.is_a?(Hash)
17
+ opts = {
18
+ title: attr_or_options.to_s.titleize,
19
+ ordering: true,
20
+ attribute: attribute
21
+ }.merge!(options)
22
+ @columns << MightyGrid::Column.new(attribute, opts)
20
23
  end
24
+ @total_columns = @columns.count
21
25
  end
22
26
  end
23
27
  end
@@ -12,15 +12,39 @@ module MightyGrid
12
12
  block.call(rendering)
13
13
 
14
14
  table_html_attrs = options[:html] || {}
15
+ table_html_attrs[:class] += ' mighty-grid'
16
+
15
17
  header_tr_html = options[:header_tr_html] || {}
16
18
 
19
+ grid.read
20
+
17
21
  grid.output_buffer = content_tag :table, table_html_attrs do
18
22
  html = content_tag :thead do
19
23
  content_tag :tr, header_tr_html do
20
- rendering.th_columns.map{|column| content_tag :th, column[:title], column[:html]}.join.html_safe
24
+ rendering.columns.map { |column|
25
+ content_tag :th, column.th_attrs do
26
+ if column.options[:ordering]
27
+ link_to(column.title, "?#{MightyGrid::MgHash.rec_merge(grid.params, {grid.name => {order: column.attribute, order_direction: grid.order_direction}}).except('controller', 'action').to_query}").html_safe
28
+ else
29
+ column.title.html_safe
30
+ end
31
+ end
32
+ }.join.html_safe
21
33
  end
22
34
  end
23
35
 
36
+ html += content_tag :tfoot do
37
+ html_record = content_tag :tr do
38
+ content_tag :td, colspan: rendering.total_columns do
39
+ html_pag = paginate(grid.relation, theme: 'mighty_grid', param_name: "#{grid.name}[page]")
40
+ html_pag += page_entries_info(grid.relation)
41
+ html_pag.html_safe
42
+ end
43
+ end
44
+
45
+ html_record.html_safe
46
+ end
47
+
24
48
  html += content_tag :tbody do
25
49
  html_record = ''
26
50
  grid.relation.each do |rel|
@@ -39,5 +63,6 @@ module MightyGrid
39
63
  def render_grid(grid)
40
64
  grid.output_buffer.html_safe
41
65
  end
66
+
42
67
  end
43
68
  end
@@ -0,0 +1,13 @@
1
+ # encoding: UTF-8
2
+ # It is here only until this pull request is pulled: https://github.com/amatsuda/kaminari/pull/267
3
+ module Kaminari #:nodoc:
4
+ module Helpers #:nodoc:
5
+ class Tag #:nodoc:
6
+ def page_url_for(page) #:nodoc:
7
+ current_page_params_as_query_string = @param_name.to_s + '=' + (page <= 1 ? nil : page).to_s
8
+ current_page_params_as_hash = Rack::Utils.parse_nested_query(current_page_params_as_query_string)
9
+ @template.url_for MightyGrid::MgHash.rec_merge(@params, current_page_params_as_hash).symbolize_keys
10
+ end
11
+ end
12
+ end
13
+ end
@@ -0,0 +1,21 @@
1
+ module MightyGrid
2
+ module MgHash
3
+ class << self
4
+ # A deep merge of two hashes.
5
+ # That is, if both hashes have the same key and the values are hashes, these two hashes should also be merged.
6
+ # Used for merging two sets of params.
7
+ def rec_merge(hash, other) #:nodoc:
8
+ res = hash.clone
9
+ other.each do |key, other_value|
10
+ value = res[key]
11
+ if value.is_a?(Hash) && other_value.is_a?(Hash)
12
+ res[key] = rec_merge value, other_value
13
+ else
14
+ res[key] = other_value
15
+ end
16
+ end
17
+ res
18
+ end
19
+ end
20
+ end
21
+ end
@@ -1,3 +1,3 @@
1
1
  module MightyGrid
2
- VERSION = "0.0.2"
2
+ VERSION = "0.0.3"
3
3
  end
data/mighty_grid.gemspec CHANGED
@@ -20,4 +20,6 @@ Gem::Specification.new do |spec|
20
20
 
21
21
  spec.add_development_dependency "bundler", "~> 1.5"
22
22
  spec.add_development_dependency "rake"
23
+
24
+ spec.add_dependency 'kaminari', '~> 0.15.0'
23
25
  end
@@ -0,0 +1,3 @@
1
+ .mighty-grid .pagination {
2
+ margin: 0;
3
+ }
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: mighty_grid
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.2
4
+ version: 0.0.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - jurrick
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-04-13 00:00:00.000000000 Z
11
+ date: 2014-04-18 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -38,6 +38,20 @@ dependencies:
38
38
  - - ">="
39
39
  - !ruby/object:Gem::Version
40
40
  version: '0'
41
+ - !ruby/object:Gem::Dependency
42
+ name: kaminari
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - "~>"
46
+ - !ruby/object:Gem::Version
47
+ version: 0.15.0
48
+ type: :runtime
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - "~>"
53
+ - !ruby/object:Gem::Version
54
+ version: 0.15.0
41
55
  description: Flexible grid for Rails
42
56
  email:
43
57
  - jurianp@gmail.com
@@ -51,14 +65,24 @@ files:
51
65
  - LICENSE.txt
52
66
  - README.md
53
67
  - Rakefile
68
+ - app/views/kaminari/mighty_grid/_first_page.html.erb
69
+ - app/views/kaminari/mighty_grid/_gap.html.erb
70
+ - app/views/kaminari/mighty_grid/_last_page.html.erb
71
+ - app/views/kaminari/mighty_grid/_next_page.html.erb
72
+ - app/views/kaminari/mighty_grid/_page.html.erb
73
+ - app/views/kaminari/mighty_grid/_paginator.html.erb
74
+ - app/views/kaminari/mighty_grid/_prev_page.html.erb
54
75
  - lib/mighty_grid.rb
55
76
  - lib/mighty_grid/column.rb
56
77
  - lib/mighty_grid/grid_renderer.rb
57
78
  - lib/mighty_grid/helpers/mighty_grid_view_helpers.rb
79
+ - lib/mighty_grid/kaminari_monkey_patching.rb
58
80
  - lib/mighty_grid/mighty_grid_controller.rb
81
+ - lib/mighty_grid/mighty_grid_ext.rb
59
82
  - lib/mighty_grid/version.rb
60
83
  - mighty_grid.gemspec
61
84
  - spec/spec_helper.rb
85
+ - vendor/assets/stylesheets/mighty_grid.css
62
86
  homepage: http://github.com/jurrick/mighty_grid
63
87
  licenses:
64
88
  - MIT
@@ -85,4 +109,3 @@ specification_version: 4
85
109
  summary: Flexible grid for Rails
86
110
  test_files:
87
111
  - spec/spec_helper.rb
88
- has_rdoc: