mighty_grid 0.0.4 → 0.0.5

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: 1bf4b292efadf47108043a38323994528942f54b
4
- data.tar.gz: c713b40944b7ae79d2260da50bd55171c0a0685f
3
+ metadata.gz: f238d7cb8977ec61853b4378529ef0329627acd4
4
+ data.tar.gz: ef31d746428504597ef2c373085f761ae63ccc3a
5
5
  SHA512:
6
- metadata.gz: f2a03b8b0f8cab841e7be0fe6cbd48796c4969bc9b66895022c43cbe7e38d92a1cb3f3b39553fea76a4a5deef716918fd8c449645db88af3fcb017687bb63c32
7
- data.tar.gz: 5e71182beb7743bfd57da54799ffe16c0ba33ae61b76381cb87eb08d4ea14dbc8f26b2e0ec0d8fc978d1fad2d0f2b394a51442395bfce5fa523f13d6990683d9
6
+ metadata.gz: 3016e55015be83daf0615f0de291c798d7b7d37799b3d94d52822eb49b4b353beaf8eb1fa63dad3aaddb2a5ad9cd7cb18f83d1d6d183d72b7b002913721de3dc
7
+ data.tar.gz: 582d997991d83ae3f96afd2fc66d0693599ab98d09ac87bd970d9efe42356bea73d4405fb428d8269031b1d06bab2977afc986164924e4aa567eee62424f01fa
data/.gitignore CHANGED
@@ -15,4 +15,4 @@ rdoc
15
15
  spec/reports
16
16
  test/tmp
17
17
  test/version_tmp
18
- tmp
18
+ tmp
data/.travis.yml CHANGED
@@ -4,8 +4,7 @@ rvm:
4
4
  - 2.0.0
5
5
  - 2.1.1
6
6
 
7
- install:
8
- - "travis_retry bundle install"
7
+ script: bundle exec rspec spec
9
8
 
10
9
  gemfile:
11
10
  - gemfiles/3.2.gemfile
data/Gemfile CHANGED
@@ -1,3 +1,8 @@
1
1
  source 'https://rubygems.org'
2
2
 
3
3
  gemspec
4
+
5
+ group :test do
6
+ gem "generator_spec"
7
+ gem 'coveralls', require: false
8
+ end
data/README.md CHANGED
@@ -5,6 +5,7 @@ MightyGrid is a flexible grid solution for Rails.
5
5
  [![Gem Version](https://badge.fury.io/rb/mighty_grid.svg)](http://badge.fury.io/rb/mighty_grid)
6
6
  [![Build Status](https://travis-ci.org/jurrick/mighty_grid.svg?branch=master)](https://travis-ci.org/jurrick/mighty_grid)
7
7
  [![Coverage Status](https://coveralls.io/repos/jurrick/mighty_grid/badge.png)](https://coveralls.io/r/jurrick/mighty_grid)
8
+ [![Inline docs](http://inch-pages.github.io/github/jurrick/mighty_grid.png)](http://inch-pages.github.io/github/jurrick/mighty_grid)
8
9
 
9
10
  ## Installation
10
11
 
@@ -22,11 +23,24 @@ Or install it yourself as:
22
23
 
23
24
  ## Usage
24
25
 
25
- TODO: Write usage instructions here
26
+ ### General configuration options
27
+
28
+ You can configure the following default values by overriding these values using <tt>MightyGrid.configure</tt> method.
29
+ ```
30
+ per_page # 15 by default
31
+ order_direction # 'asc' by default
32
+ grid_name # 'grid' by default
33
+ table_class # '' by default
34
+ ```
35
+
36
+ There's a handy generator that generates the default configuration file into config/initializers directory.
37
+ Run the following generator command, then edit the generated file.
38
+
39
+ $ rails g mighty_grid:config
26
40
 
27
41
  ## Contributing
28
42
 
29
- 1. Fork it ( http://github.com/<my-github-username>/mighty_grid/fork )
43
+ 1. Fork it ( http://github.com/jurrick/mighty_grid/fork )
30
44
  2. Create your feature branch (`git checkout -b my-new-feature`)
31
45
  3. Commit your changes (`git commit -am 'Add some feature'`)
32
46
  4. Push to the branch (`git push origin my-new-feature`)
data/gemfiles/3.2.gemfile CHANGED
@@ -5,4 +5,9 @@ source "https://rubygems.org"
5
5
  gem "rails", "~> 3.2.15"
6
6
  gem "mighty_grid", :path => "../"
7
7
 
8
+ group :test do
9
+ gem "generator_spec"
10
+ gem "coveralls", :require => false
11
+ end
12
+
8
13
  gemspec :path => "../"
data/gemfiles/4.0.gemfile CHANGED
@@ -5,4 +5,9 @@ source "https://rubygems.org"
5
5
  gem "rails", "~> 4.0.0"
6
6
  gem "mighty_grid", :path => "../"
7
7
 
8
+ group :test do
9
+ gem "generator_spec"
10
+ gem "coveralls", :require => false
11
+ end
12
+
8
13
  gemspec :path => "../"
data/gemfiles/4.1.gemfile CHANGED
@@ -5,4 +5,9 @@ source "https://rubygems.org"
5
5
  gem "rails", "~> 4.1.0.beta"
6
6
  gem "mighty_grid", :path => "../"
7
7
 
8
+ group :test do
9
+ gem "generator_spec"
10
+ gem "coveralls", :require => false
11
+ end
12
+
8
13
  gemspec :path => "../"
@@ -1,5 +1,5 @@
1
1
  MightyGrid.configure do |config|
2
- # config.per_page = 25
2
+ # config.per_page = 15
3
3
  # config.order_direction = 'asc'
4
4
  # config.grid_name = 'grid'
5
5
  # config.table_class = ''
@@ -0,0 +1,93 @@
1
+ module MightyGrid
2
+
3
+ class Base
4
+
5
+ attr_reader :klass, :name, :relation, :options, :mg_params
6
+ attr_accessor :output_buffer, :filters
7
+
8
+ def initialize(klass_or_relation, controller, opts = {}) #:nodoc:
9
+ @controller = controller
10
+
11
+ @filters = {}
12
+
13
+ @options = {
14
+ page: 1,
15
+ per_page: MightyGrid.config.per_page,
16
+ name: MightyGrid.config.grid_name
17
+ }
18
+
19
+ opts.assert_valid_keys(@options.keys)
20
+ @options.merge!(opts)
21
+
22
+ @name = @options[:name].to_s
23
+
24
+ load_grid_params
25
+
26
+ @relation = klass_or_relation
27
+
28
+ @klass = klass_or_relation.is_a?(ActiveRecord::Relation) ? klass_or_relation.klass : klass_or_relation
29
+
30
+ end
31
+
32
+ def read
33
+ apply_filters
34
+ @relation = @relation.order(@mg_params[:order] => @mg_params[:order_direction].to_sym) if @mg_params[:order].present? && @mg_params[:order_direction].present?
35
+ @relation = @relation.page(@mg_params[:page]).per(@mg_params[:per_page])
36
+ end
37
+
38
+ def apply_filters
39
+ filter_params.each do |filter_name, filter_value|
40
+ next if filter_value.blank? || !klass.column_names.include?(filter_name)
41
+ if @filters.has_key?(filter_name.to_sym) && Array === @filters[filter_name.to_sym] ||
42
+ klass.columns_hash[filter_name].type == :boolean
43
+ @relation = @relation.where(filter_name => filter_value)
44
+ elsif [:string, :text].include?(klass.columns_hash[filter_name].type)
45
+ @relation = @relation.where("\"#{klass.table_name}\".\"#{filter_name}\" #{like_operator} ?", "%#{filter_value}%")
46
+ end
47
+ end
48
+ end
49
+
50
+ def params
51
+ @controller.params
52
+ end
53
+
54
+ def load_grid_params
55
+ @mg_params = {}
56
+ @mg_params.merge!(@options)
57
+ if current_grid_params
58
+ @mg_params.merge!(current_grid_params.symbolize_keys)
59
+ end
60
+ end
61
+
62
+ def get_current_grid_param(name)
63
+ current_grid_params.has_key?(name) ? current_grid_params[name] : nil
64
+ end
65
+
66
+ def filter_params
67
+ get_current_grid_param(filter_param_name) || {}
68
+ end
69
+
70
+ def filter_param_name; 'f' end
71
+
72
+ def get_filter_name(filter_name)
73
+ "#{name}[#{filter_param_name}][#{filter_name}]"
74
+ end
75
+
76
+ def current_grid_params
77
+ params[name] || {}
78
+ end
79
+
80
+ def order_direction
81
+ (current_grid_params.has_key?('order_direction')) ? (['asc', 'desc'] - [current_grid_params['order_direction']]).first : MightyGrid.config.order_direction
82
+ end
83
+
84
+ def like_operator
85
+ if ActiveRecord::ConnectionAdapters.const_defined?(:PostgreSQLAdapter) && ActiveRecord::Base.connection.is_a?(ActiveRecord::ConnectionAdapters::PostgreSQLAdapter)
86
+ 'ILIKE'
87
+ else
88
+ 'LIKE'
89
+ end
90
+ end
91
+
92
+ end
93
+ end
@@ -0,0 +1,20 @@
1
+ module MightyGrid
2
+
3
+ class MightyGridEngine < ::Rails::Engine
4
+ initializer 'mighty_grid_railtie.configure_rails_initialization' do |app|
5
+
6
+ ActiveSupport.on_load :action_controller do
7
+ ActionController::Base.send(:include, MightyGrid::Controller)
8
+ end
9
+
10
+ ActiveSupport.on_load :action_view do
11
+ ::ActionView::Base.class_eval { include MightyGrid::GridViewHelper }
12
+
13
+ # It is here only until this pull request is pulled: https://github.com/amatsuda/kaminari/pull/267
14
+ require 'mighty_grid/kaminari_monkey_patching'
15
+ end
16
+
17
+ end
18
+ end
19
+
20
+ end
@@ -0,0 +1,50 @@
1
+ module MightyGrid
2
+ class FilterRenderer
3
+ include ActionView::Helpers
4
+
5
+ def initialize(grid, view)
6
+ @grid = grid
7
+ end
8
+
9
+ def label(name, content_or_options = nil, options = nil, &block)
10
+ label_tag(name, content_or_options, options, &block)
11
+ end
12
+
13
+ def text_field(name, options={})
14
+ text_field_tag(@grid.get_filter_name(name), get_filter_param(name), options)
15
+ end
16
+
17
+ def select(name, option_tags=nil, options={})
18
+
19
+ @grid.filters[name] = option_tags
20
+ selected = nil
21
+ selected = options.delete(:selected) if options.has_key?(:selected)
22
+ selected = get_filter_param(name) if get_filter_param(name)
23
+ opts = options_for_select(option_tags, selected)
24
+
25
+ select_tag(@grid.get_filter_name(name), opts, options)
26
+ end
27
+
28
+ def check_box(name, value = '1', checked = false, options = {})
29
+ checked = true if get_filter_param(name)
30
+
31
+ check_box_tag(@grid.get_filter_name(name), value, checked, options)
32
+ end
33
+
34
+ def submit(content = "Apply changes", options = {})
35
+ options.merge!(type: :submit)
36
+ content_tag(:button, content, options)
37
+ end
38
+
39
+ def reset(content = "Reset changes", options = {})
40
+ options.merge!(type: :reset)
41
+ content_tag(:button, content, options)
42
+ end
43
+
44
+ private
45
+
46
+ def get_filter_param(name)
47
+ @grid.filter_params.has_key?(name) ? @grid.get_current_grid_param(@grid.filter_param_name)[name] : nil
48
+ end
49
+ end
50
+ end
@@ -66,5 +66,16 @@ module MightyGrid
66
66
  grid.output_buffer.html_safe
67
67
  end
68
68
 
69
+ def mighty_filter_for(grid, options={}, &block)
70
+ html_options = options[:html] ||= {}
71
+ html_options[:method] = options.delete(:method) if options.has_key?(:method)
72
+ html_options[:method] ||= :get
73
+
74
+ filter = FilterRenderer.new(grid, self)
75
+
76
+ output = capture(filter, &block)
77
+ form_tag(options[:url] || {}, html_options){ output }
78
+ end
79
+
69
80
  end
70
81
  end
@@ -0,0 +1,13 @@
1
+ module MightyGrid
2
+
3
+ module ExceptionsMixin #:nodoc:
4
+ def initialize(str) #:nodoc:
5
+ super("MightyGrid: " + str)
6
+ end
7
+ end
8
+
9
+ class MightyGridArgumentError < ArgumentError #:nodoc:
10
+ include ExceptionsMixin
11
+ end
12
+
13
+ end
@@ -1,3 +1,3 @@
1
1
  module MightyGrid
2
- VERSION = "0.0.4"
2
+ VERSION = "0.0.5"
3
3
  end
data/lib/mighty_grid.rb CHANGED
@@ -1,83 +1,21 @@
1
+ module MightyGrid; end
2
+
3
+ require 'action_view'
4
+
1
5
  require 'mighty_grid/version'
2
6
  require 'mighty_grid/config'
7
+ require 'mighty_grid/mighty_grid_misc'
3
8
  require 'mighty_grid/mighty_grid_ext'
4
9
  require 'mighty_grid/column'
10
+ require 'mighty_grid/filter_renderer'
5
11
  require 'mighty_grid/grid_renderer'
6
12
  require 'mighty_grid/helpers/mighty_grid_view_helpers'
7
13
  require 'mighty_grid/mighty_grid_controller'
8
14
 
9
- require 'kaminari.rb'
10
-
11
- module MightyGrid
12
-
13
- class MightyGridEngine < ::Rails::Engine
14
- initializer 'mighty_grid_railtie.configure_rails_initialization' do |app|
15
-
16
- ActiveSupport.on_load :action_controller do
17
- ActionController::Base.send(:include, MightyGrid::Controller)
18
- end
19
-
20
- ActiveSupport.on_load :action_view do
21
- ::ActionView::Base.class_eval { include MightyGrid::GridViewHelper }
22
-
23
- # It is here only until this pull request is pulled: https://github.com/amatsuda/kaminari/pull/267
24
- require 'mighty_grid/kaminari_monkey_patching'
25
- end
26
-
27
- end
28
- end
29
-
30
- class Base
31
-
32
- attr_reader :klass, :name, :relation, :options, :mg_params
33
- attr_accessor :output_buffer
34
-
35
- def initialize(klass_or_relation, controller, opts = {}) #:nodoc:
36
- @controller = controller
15
+ # GENERATORS
16
+ require 'generators/mighty_grid/config_generator'
37
17
 
38
- @options = {
39
- page: 1,
40
- per_page: MightyGrid.config.per_page,
41
- name: MightyGrid.config.grid_name
42
- }
43
-
44
- opts.assert_valid_keys(@options.keys)
45
- @options.merge!(opts)
46
-
47
- @name = @options[:name].to_s
48
-
49
- load_grid_params
50
-
51
- @relation = klass_or_relation
52
-
53
- @klass = klass_or_relation.is_a?(ActiveRecord::Relation) ? klass_or_relation.klass : klass_or_relation
54
-
55
- end
56
-
57
- def read
58
- @relation = @relation.order(@mg_params[:order] => @mg_params[:order_direction].to_sym) if @mg_params[:order].present? && @mg_params[:order_direction].present?
59
- @relation = @relation.page(@mg_params[:page]).per(@mg_params[:per_page])
60
- end
61
-
62
- def params
63
- @controller.params
64
- end
65
-
66
- def load_grid_params
67
- @mg_params = {}
68
- @mg_params.merge!(@options)
69
- if current_grid_params
70
- @mg_params.merge!(current_grid_params.symbolize_keys)
71
- end
72
- end
73
-
74
- def current_grid_params
75
- params[name] || {}
76
- end
77
-
78
- def order_direction
79
- (current_grid_params.has_key?('order_direction')) ? (['asc', 'desc'] - [current_grid_params['order_direction']]).first : MightyGrid.config.order_direction
80
- end
18
+ require 'kaminari.rb'
81
19
 
82
- end
83
- end
20
+ require 'mighty_grid/engine'
21
+ require 'mighty_grid/base'
@@ -0,0 +1,16 @@
1
+ require 'spec_helper'
2
+
3
+ require "generator_spec"
4
+
5
+ describe MightyGrid::Generators::ConfigGenerator do
6
+ destination File.expand_path("../../tmp", __FILE__)
7
+
8
+ before(:all) do
9
+ prepare_destination
10
+ run_generator
11
+ end
12
+
13
+ it "creates config initializer" do
14
+ assert_file "config/initializers/mighty_grid_config.rb"
15
+ end
16
+ end
@@ -2,6 +2,6 @@ require 'spec_helper'
2
2
 
3
3
  describe MightyGrid::Base do
4
4
 
5
- it { pending }
5
+ # it { pending }
6
6
 
7
7
  end
data/spec/spec_helper.rb CHANGED
@@ -3,12 +3,16 @@ $LOAD_PATH.unshift(File.dirname(__FILE__))
3
3
 
4
4
  begin
5
5
  require 'rails'
6
+ require 'rails/generators'
6
7
  rescue LoadError
7
8
  end
8
9
 
9
10
  require 'bundler/setup'
10
11
  Bundler.require
11
12
 
13
+ require 'coveralls'
14
+ Coveralls.wear!
15
+
12
16
  RSpec.configure do |config|
13
17
  config.treat_symbols_as_metadata_keys_with_true_values = true
14
18
  config.run_all_when_everything_filtered = true
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.4
4
+ version: 0.0.5
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-19 00:00:00.000000000 Z
11
+ date: 2014-04-26 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -108,16 +108,21 @@ files:
108
108
  - lib/generators/mighty_grid/config_generator.rb
109
109
  - lib/generators/mighty_grid/templates/mighty_grid_config.rb
110
110
  - lib/mighty_grid.rb
111
+ - lib/mighty_grid/base.rb
111
112
  - lib/mighty_grid/column.rb
112
113
  - lib/mighty_grid/config.rb
114
+ - lib/mighty_grid/engine.rb
115
+ - lib/mighty_grid/filter_renderer.rb
113
116
  - lib/mighty_grid/grid_renderer.rb
114
117
  - lib/mighty_grid/helpers/mighty_grid_view_helpers.rb
115
118
  - lib/mighty_grid/kaminari_monkey_patching.rb
116
119
  - lib/mighty_grid/mighty_grid_controller.rb
117
120
  - lib/mighty_grid/mighty_grid_ext.rb
121
+ - lib/mighty_grid/mighty_grid_misc.rb
118
122
  - lib/mighty_grid/version.rb
119
123
  - mighty_grid.gemspec
120
124
  - spec/config_spec.rb
125
+ - spec/lib/generators/config_generator_spec.rb
121
126
  - spec/mighty_grid_spec.rb
122
127
  - spec/spec_helper.rb
123
128
  - vendor/assets/stylesheets/mighty_grid.css
@@ -147,5 +152,6 @@ specification_version: 4
147
152
  summary: Flexible grid for Rails
148
153
  test_files:
149
154
  - spec/config_spec.rb
155
+ - spec/lib/generators/config_generator_spec.rb
150
156
  - spec/mighty_grid_spec.rb
151
157
  - spec/spec_helper.rb