wice_grid 3.2.0 → 3.2.1.pre1
Sign up to get free protection for your applications and to get access to all the features.
- data/CHANGELOG +9 -6
- data/README.rdoc +29 -0
- data/VERSION +1 -1
- data/lib/active_record_column_wrapper.rb +105 -0
- data/lib/columns/column_action.rb +50 -0
- data/lib/columns/column_boolean.rb +43 -0
- data/lib/columns/column_custom_dropdown.rb +119 -0
- data/lib/columns/column_date.rb +23 -0
- data/lib/columns/column_datetime.rb +113 -0
- data/lib/columns/column_float.rb +14 -0
- data/lib/columns/column_integer.rb +63 -0
- data/lib/columns/column_processor_index.rb +19 -0
- data/lib/columns/column_range.rb +74 -0
- data/lib/columns/column_string.rb +89 -0
- data/lib/columns.rb +223 -0
- data/lib/generators/wice_grid/add_migration_for_serialized_queries_generator.rb +1 -1
- data/lib/generators/wice_grid/templates/create_wice_grid_serialized_queries.rb +2 -2
- data/lib/grid_renderer.rb +19 -9
- data/lib/helpers/wice_grid_view_helpers.rb +6 -10
- data/lib/kaminari_monkey_patching.rb +4 -4
- data/lib/wice_grid.rb +15 -245
- data/lib/wice_grid_controller.rb +4 -4
- data/lib/wice_grid_core_ext.rb +3 -3
- data/wice_grid.gemspec +15 -13
- metadata +17 -15
- data/lib/view_columns/action_view_column.rb +0 -45
- data/lib/view_columns/column_processor_index.rb +0 -16
- data/lib/view_columns/view_column_boolean.rb +0 -23
- data/lib/view_columns/view_column_custom_dropdown.rb +0 -80
- data/lib/view_columns/view_column_date.rb +0 -17
- data/lib/view_columns/view_column_datetime.rb +0 -85
- data/lib/view_columns/view_column_float.rb +0 -7
- data/lib/view_columns/view_column_integer.rb +0 -38
- data/lib/view_columns/view_column_string.rb +0 -63
- data/lib/view_columns.rb +0 -177
data/lib/wice_grid.rb
CHANGED
@@ -4,6 +4,7 @@ require 'wice_grid_misc.rb'
|
|
4
4
|
require 'wice_grid_core_ext.rb'
|
5
5
|
require 'grid_renderer.rb'
|
6
6
|
require 'table_column_matrix.rb'
|
7
|
+
require 'active_record_column_wrapper.rb'
|
7
8
|
require 'helpers/wice_grid_view_helpers.rb'
|
8
9
|
require 'helpers/wice_grid_misc_view_helpers.rb'
|
9
10
|
require 'helpers/wice_grid_serialized_queries_view_helpers.rb'
|
@@ -13,8 +14,8 @@ require 'grid_output_buffer.rb'
|
|
13
14
|
require 'wice_grid_controller.rb'
|
14
15
|
require 'wice_grid_spreadsheet.rb'
|
15
16
|
require 'wice_grid_serialized_queries_controller.rb'
|
16
|
-
require '
|
17
|
-
require '
|
17
|
+
require 'columns/column_processor_index.rb'
|
18
|
+
require 'columns.rb'
|
18
19
|
require 'kaminari.rb'
|
19
20
|
|
20
21
|
|
@@ -22,7 +23,7 @@ ActionController::Base.send(:helper_method, :wice_grid_custom_filter_params)
|
|
22
23
|
|
23
24
|
module Wice
|
24
25
|
|
25
|
-
class WiceGridEngine < ::Rails::Engine
|
26
|
+
class WiceGridEngine < ::Rails::Engine #:nodoc:
|
26
27
|
|
27
28
|
initializer "wice_grid_railtie.configure_rails_initialization" do |app|
|
28
29
|
|
@@ -44,7 +45,7 @@ module Wice
|
|
44
45
|
JsCalendarHelpers.send(:include, m)
|
45
46
|
end
|
46
47
|
|
47
|
-
|
48
|
+
Columns.load_column_processors
|
48
49
|
require 'wice_grid_serialized_query.rb'
|
49
50
|
|
50
51
|
# It is here only until this pull request is pulled: https://github.com/amatsuda/kaminari/pull/267
|
@@ -55,10 +56,10 @@ module Wice
|
|
55
56
|
|
56
57
|
class WiceGrid
|
57
58
|
|
58
|
-
attr_reader :klass, :name, :resultset, :custom_order, :query_store_model
|
59
|
-
attr_reader :ar_options, :status, :export_to_csv_enabled, :csv_file_name, :csv_field_separator, :saved_query
|
60
|
-
attr_writer :renderer
|
61
|
-
attr_accessor :output_buffer, :view_helper_finished, :csv_tempfile
|
59
|
+
attr_reader :klass, :name, :resultset, :custom_order, :query_store_model #:nodoc:
|
60
|
+
attr_reader :ar_options, :status, :export_to_csv_enabled, :csv_file_name, :csv_field_separator, :saved_query #:nodoc:
|
61
|
+
attr_writer :renderer #:nodoc:
|
62
|
+
attr_accessor :output_buffer, :view_helper_finished, :csv_tempfile #:nodoc:
|
62
63
|
|
63
64
|
# core workflow methods START
|
64
65
|
|
@@ -203,7 +204,7 @@ module Wice
|
|
203
204
|
end
|
204
205
|
end
|
205
206
|
|
206
|
-
def declare_column(column_name, model, custom_filter_active, table_alias) #:nodoc:
|
207
|
+
def declare_column(column_name, model, custom_filter_active, table_alias, filter_type) #:nodoc:
|
207
208
|
if model # this is an included table
|
208
209
|
column = @table_column_matrix.get_column_by_model_class_and_column_name(model, column_name)
|
209
210
|
raise WiceGridArgumentError.new("Column '#{column_name}' is not found in table '#{model.table_name}'!") if column.nil?
|
@@ -221,7 +222,9 @@ module Wice
|
|
221
222
|
end
|
222
223
|
|
223
224
|
if column
|
224
|
-
|
225
|
+
conditions_generator = ActiveRecordColumnWrapper.new(column, @status[:f], main_table, table_alias, custom_filter_active, filter_type)
|
226
|
+
conditions, current_parameter_name = conditions_generator.wg_initialize_request_parameters
|
227
|
+
|
225
228
|
if @status[:f] && conditions.blank?
|
226
229
|
@status[:f].delete(current_parameter_name)
|
227
230
|
end
|
@@ -447,11 +450,6 @@ module Wice
|
|
447
450
|
end
|
448
451
|
|
449
452
|
|
450
|
-
def selected_records #:nodoc:
|
451
|
-
STDERR.puts "WiceGrid: Parameter :#{selected_records} is deprecated, use :#{all_pages_records} or :#{current_page_records} instead!"
|
452
|
-
all_pages_records
|
453
|
-
end
|
454
|
-
|
455
453
|
# Returns the list of objects browsable through all pages with the current filters.
|
456
454
|
# Should only be called after the +grid+ helper.
|
457
455
|
def all_pages_records
|
@@ -556,7 +554,7 @@ module Wice
|
|
556
554
|
def resultset_without_paging_with_user_filters #:nodoc:
|
557
555
|
form_ar_options
|
558
556
|
@klass.unscoped do
|
559
|
-
@relation.find(:all, :joins
|
557
|
+
@relation.find(:all, :joins => @ar_options[:joins],
|
560
558
|
:include => @ar_options[:include],
|
561
559
|
:group => @ar_options[:group],
|
562
560
|
:conditions => @ar_options[:conditions],
|
@@ -575,7 +573,7 @@ module Wice
|
|
575
573
|
|
576
574
|
end
|
577
575
|
|
578
|
-
# routines called from WiceGridExtentionToActiveRecordColumn (ActiveRecord::ConnectionAdapters::Column) or
|
576
|
+
# routines called from WiceGridExtentionToActiveRecordColumn (ActiveRecord::ConnectionAdapters::Column) or ConditionsGeneratorColumn classes
|
579
577
|
module GridTools #:nodoc:
|
580
578
|
class << self
|
581
579
|
def special_value(str) #:nodoc:
|
@@ -607,234 +605,6 @@ module Wice
|
|
607
605
|
end
|
608
606
|
end
|
609
607
|
|
610
|
-
# to be mixed in into ActiveRecord::ConnectionAdapters::Column
|
611
|
-
module WiceGridExtentionToActiveRecordColumn #:nodoc:
|
612
|
-
|
613
|
-
attr_accessor :model
|
614
|
-
|
615
|
-
def alias_or_table_name(table_alias)
|
616
|
-
table_alias || self.model.table_name
|
617
|
-
end
|
618
|
-
|
619
|
-
def wg_initialize_request_parameters(all_filter_params, main_table, table_alias, custom_filter_active) #:nodoc:
|
620
|
-
@request_params = nil
|
621
|
-
return if all_filter_params.nil?
|
622
|
-
|
623
|
-
# if the parameter does not specify the table name we only allow columns in the default table to use these parameters
|
624
|
-
if main_table && @request_params = all_filter_params[self.name]
|
625
|
-
current_parameter_name = self.name
|
626
|
-
elsif @request_params = all_filter_params[alias_or_table_name(table_alias) + '.' + self.name]
|
627
|
-
current_parameter_name = alias_or_table_name(table_alias) + '.' + self.name
|
628
|
-
end
|
629
|
-
|
630
|
-
# Preprocess incoming parameters for datetime, if what's coming in is
|
631
|
-
# a datetime (with custom_filter it can be anything else, and not
|
632
|
-
# the datetime hash {:fr => ..., :to => ...})
|
633
|
-
if @request_params
|
634
|
-
if (self.type == :datetime || self.type == :timestamp) && @request_params.is_a?(Hash)
|
635
|
-
[:fr, :to].each do |sym|
|
636
|
-
if @request_params[sym]
|
637
|
-
if @request_params[sym].is_a?(String)
|
638
|
-
@request_params[sym] = Wice::ConfigurationProvider.value_for(:DATETIME_PARSER).call(@request_params[sym])
|
639
|
-
elsif @request_params[sym].is_a?(Hash)
|
640
|
-
@request_params[sym] = Wice::GridTools.params_2_datetime(@request_params[sym])
|
641
|
-
end
|
642
|
-
end
|
643
|
-
end
|
644
|
-
|
645
|
-
end
|
646
|
-
|
647
|
-
# Preprocess incoming parameters for date, if what's coming in is
|
648
|
-
# a date (with custom_filter it can be anything else, and not
|
649
|
-
# the date hash {:fr => ..., :to => ...})
|
650
|
-
if self.type == :date && @request_params.is_a?(Hash)
|
651
|
-
[:fr, :to].each do |sym|
|
652
|
-
if @request_params[sym]
|
653
|
-
if @request_params[sym].is_a?(String)
|
654
|
-
@request_params[sym] = Wice::ConfigurationProvider.value_for(:DATE_PARSER).call(@request_params[sym])
|
655
|
-
elsif @request_params[sym].is_a?(Hash)
|
656
|
-
@request_params[sym] = ::Wice::GridTools.params_2_date(@request_params[sym])
|
657
|
-
end
|
658
|
-
end
|
659
|
-
end
|
660
|
-
end
|
661
|
-
end
|
662
|
-
|
663
|
-
return wg_generate_conditions(table_alias, custom_filter_active), current_parameter_name
|
664
|
-
end
|
665
|
-
|
666
|
-
def wg_generate_conditions(table_alias, custom_filter_active) #:nodoc:
|
667
|
-
return nil if @request_params.nil?
|
668
|
-
|
669
|
-
if custom_filter_active
|
670
|
-
return ::Wice::FilterConditionsGeneratorCustomFilter.new(self).generate_conditions(table_alias, @request_params)
|
671
|
-
end
|
672
608
|
|
673
|
-
column_type = self.type.to_s
|
674
|
-
|
675
|
-
processor_class = ::Wice::FilterConditionsGenerator.handled_type[column_type]
|
676
|
-
|
677
|
-
if processor_class
|
678
|
-
return processor_class.new(self).generate_conditions(table_alias, @request_params)
|
679
|
-
else
|
680
|
-
Wice.log("No processor for database type #{column_type}!!!")
|
681
|
-
nil
|
682
|
-
end
|
683
|
-
end
|
684
|
-
|
685
|
-
end
|
686
|
-
|
687
|
-
class FilterConditionsGenerator #:nodoc:
|
688
|
-
|
689
|
-
cattr_accessor :handled_type
|
690
|
-
@@handled_type = HashWithIndifferentAccess.new
|
691
|
-
|
692
|
-
def initialize(column) #:nodoc:
|
693
|
-
@column = column
|
694
|
-
end
|
695
|
-
end
|
696
|
-
|
697
|
-
class FilterConditionsGeneratorCustomFilter < FilterConditionsGenerator #:nodoc:
|
698
|
-
|
699
|
-
def generate_conditions(table_alias, opts) #:nodoc:
|
700
|
-
if opts.empty? || (opts.is_a?(Array) && opts.size == 1 && opts[0].blank?)
|
701
|
-
return false
|
702
|
-
end
|
703
|
-
opts = (opts.kind_of?(Array) && opts.size == 1) ? opts[0] : opts
|
704
|
-
|
705
|
-
if opts.kind_of?(Array)
|
706
|
-
opts_with_special_values, normal_opts = opts.partition{|v| ::Wice::GridTools.special_value(v)}
|
707
|
-
|
708
|
-
conditions_ar = if normal_opts.size > 0
|
709
|
-
[" #{@column.alias_or_table_name(table_alias)}.#{@column.name} IN ( " + (['?'] * normal_opts.size).join(', ') + ' )'] + normal_opts
|
710
|
-
else
|
711
|
-
[]
|
712
|
-
end
|
713
|
-
|
714
|
-
if opts_with_special_values.size > 0
|
715
|
-
special_conditions = opts_with_special_values.collect{|v| " #{@column.alias_or_table_name(table_alias)}.#{@column.name} is " + v}.join(' or ')
|
716
|
-
if conditions_ar.size > 0
|
717
|
-
conditions_ar[0] = " (#{conditions_ar[0]} or #{special_conditions} ) "
|
718
|
-
else
|
719
|
-
conditions_ar = " ( #{special_conditions} ) "
|
720
|
-
end
|
721
|
-
end
|
722
|
-
conditions_ar
|
723
|
-
else
|
724
|
-
if ::Wice::GridTools.special_value(opts)
|
725
|
-
" #{@column.alias_or_table_name(table_alias)}.#{@column.name} is " + opts
|
726
|
-
else
|
727
|
-
[" #{@column.alias_or_table_name(table_alias)}.#{@column.name} = ?", opts]
|
728
|
-
end
|
729
|
-
end
|
730
|
-
end
|
731
|
-
|
732
|
-
end
|
733
|
-
|
734
|
-
class FilterConditionsGeneratorBoolean < FilterConditionsGenerator #:nodoc:
|
735
|
-
@@handled_type[:boolean] = self
|
736
|
-
|
737
|
-
def generate_conditions(table_alias, opts) #:nodoc:
|
738
|
-
unless (opts.kind_of?(Array) && opts.size == 1)
|
739
|
-
Wice.log "invalid parameters for the grid boolean filter - must be an one item array: #{opts.inspect}"
|
740
|
-
return false
|
741
|
-
end
|
742
|
-
opts = opts[0]
|
743
|
-
if opts == 'f'
|
744
|
-
[" (#{@column.alias_or_table_name(table_alias)}.#{@column.name} = ? or #{@column.alias_or_table_name(table_alias)}.#{@column.name} is null) ", false]
|
745
|
-
elsif opts == 't'
|
746
|
-
[" #{@column.alias_or_table_name(table_alias)}.#{@column.name} = ?", true]
|
747
|
-
else
|
748
|
-
nil
|
749
|
-
end
|
750
|
-
end
|
751
|
-
end
|
752
|
-
|
753
|
-
class FilterConditionsGeneratorString < FilterConditionsGenerator #:nodoc:
|
754
|
-
@@handled_type[:string] = self
|
755
|
-
@@handled_type[:text] = self
|
756
|
-
|
757
|
-
def generate_conditions(table_alias, opts) #:nodoc:
|
758
|
-
if opts.kind_of? String
|
759
|
-
string_fragment = opts
|
760
|
-
negation = ''
|
761
|
-
elsif (opts.kind_of? Hash) && opts.has_key?(:v)
|
762
|
-
string_fragment = opts[:v]
|
763
|
-
negation = opts[:n] == '1' ? 'NOT' : ''
|
764
|
-
else
|
765
|
-
Wice.log "invalid parameters for the grid string filter - must be a string: #{opts.inspect} or a Hash with keys :v and :n"
|
766
|
-
return false
|
767
|
-
end
|
768
|
-
if string_fragment.empty?
|
769
|
-
return false
|
770
|
-
end
|
771
|
-
[" #{negation} #{@column.alias_or_table_name(table_alias)}.#{@column.name} #{::Wice.get_string_matching_operators(@column.model)} ?",
|
772
|
-
'%' + string_fragment + '%']
|
773
|
-
end
|
774
|
-
|
775
|
-
end
|
776
|
-
|
777
|
-
class FilterConditionsGeneratorInteger < FilterConditionsGenerator #:nodoc:
|
778
|
-
@@handled_type[:integer] = self
|
779
|
-
@@handled_type[:float] = self
|
780
|
-
@@handled_type[:decimal] = self
|
781
|
-
|
782
|
-
def generate_conditions(table_alias, opts) #:nodoc:
|
783
|
-
unless opts.kind_of? Hash
|
784
|
-
Wice.log "invalid parameters for the grid integer filter - must be a hash"
|
785
|
-
return false
|
786
|
-
end
|
787
|
-
conditions = [[]]
|
788
|
-
if opts[:fr]
|
789
|
-
if opts[:fr] =~ /\d/
|
790
|
-
conditions[0] << " #{@column.alias_or_table_name(table_alias)}.#{@column.name} >= ? "
|
791
|
-
conditions << opts[:fr]
|
792
|
-
else
|
793
|
-
opts.delete(:fr)
|
794
|
-
end
|
795
|
-
end
|
796
|
-
|
797
|
-
if opts[:to]
|
798
|
-
if opts[:to] =~ /\d/
|
799
|
-
conditions[0] << " #{@column.alias_or_table_name(table_alias)}.#{@column.name} <= ? "
|
800
|
-
conditions << opts[:to]
|
801
|
-
else
|
802
|
-
opts.delete(:to)
|
803
|
-
end
|
804
|
-
end
|
805
|
-
|
806
|
-
if conditions.size == 1
|
807
|
-
return false
|
808
|
-
end
|
809
|
-
|
810
|
-
conditions[0] = conditions[0].join(' and ')
|
811
|
-
|
812
|
-
return conditions
|
813
|
-
end
|
814
|
-
end
|
815
|
-
|
816
|
-
class FilterConditionsGeneratorDate < FilterConditionsGenerator #:nodoc:
|
817
|
-
@@handled_type[:date] = self
|
818
|
-
@@handled_type[:datetime] = self
|
819
|
-
@@handled_type[:timestamp] = self
|
820
|
-
|
821
|
-
def generate_conditions(table_alias, opts) #:nodoc:
|
822
|
-
conditions = [[]]
|
823
|
-
if opts[:fr]
|
824
|
-
conditions[0] << " #{@column.alias_or_table_name(table_alias)}.#{@column.name} >= ? "
|
825
|
-
conditions << opts[:fr]
|
826
|
-
end
|
827
|
-
|
828
|
-
if opts[:to]
|
829
|
-
conditions[0] << " #{@column.alias_or_table_name(table_alias)}.#{@column.name} <= ? "
|
830
|
-
conditions << opts[:to]
|
831
|
-
end
|
832
|
-
|
833
|
-
return false if conditions.size == 1
|
834
|
-
|
835
|
-
conditions[0] = conditions[0].join(' and ')
|
836
|
-
return conditions
|
837
|
-
end
|
838
|
-
end
|
839
609
|
|
840
610
|
end
|
data/lib/wice_grid_controller.rb
CHANGED
@@ -17,7 +17,7 @@ module Wice
|
|
17
17
|
|
18
18
|
protected
|
19
19
|
|
20
|
-
attr_accessor :wice_grid_instances
|
20
|
+
attr_accessor :wice_grid_instances #:nodoc:
|
21
21
|
|
22
22
|
# Creates a grid object to be used in the view. This is the <i>main</i> model, and the underlying table is the default table -
|
23
23
|
# if in other parameters a column name is mentioned without the name of the table, this table is implied.
|
@@ -163,7 +163,7 @@ module Wice
|
|
163
163
|
private
|
164
164
|
|
165
165
|
|
166
|
-
def send_file_rails2(path, options = {}) #:
|
166
|
+
def send_file_rails2(path, options = {}) #:nodoc:
|
167
167
|
raise "Cannot read file #{path}" unless File.file?(path) and File.readable?(path)
|
168
168
|
|
169
169
|
options[:length] ||= File.size(path)
|
@@ -177,7 +177,7 @@ module Wice
|
|
177
177
|
end
|
178
178
|
|
179
179
|
|
180
|
-
DEFAULT_SEND_FILE_OPTIONS_RAILS2 = {
|
180
|
+
DEFAULT_SEND_FILE_OPTIONS_RAILS2 = { #:nodoc:
|
181
181
|
:type => 'application/octet-stream'.freeze,
|
182
182
|
:disposition => 'attachment'.freeze,
|
183
183
|
:stream => true,
|
@@ -185,7 +185,7 @@ module Wice
|
|
185
185
|
:x_sendfile => false
|
186
186
|
}.freeze
|
187
187
|
|
188
|
-
def send_file_headers_rails2!(options) #:
|
188
|
+
def send_file_headers_rails2!(options) #:nodoc:
|
189
189
|
|
190
190
|
options.update(DEFAULT_SEND_FILE_OPTIONS_RAILS2.merge(options))
|
191
191
|
[:length, :type, :disposition].each do |arg|
|
data/lib/wice_grid_core_ext.rb
CHANGED
@@ -1,8 +1,8 @@
|
|
1
1
|
# encoding: UTF-8
|
2
2
|
|
3
3
|
module Wice
|
4
|
-
module WgHash
|
5
|
-
class << self
|
4
|
+
module WgHash #:nodoc:
|
5
|
+
class << self #:nodoc:
|
6
6
|
|
7
7
|
# if there's a hash of hashes, the original structure and the
|
8
8
|
# returned structure should not contain any shared deep hashes
|
@@ -105,7 +105,7 @@ module Wice
|
|
105
105
|
|
106
106
|
end
|
107
107
|
|
108
|
-
module WgArray
|
108
|
+
module WgArray #:nodoc:
|
109
109
|
# Only used by Hash#parameter_names_and_values
|
110
110
|
# Transforms ['foo', 'bar', 'baz'] to 'foo[bar][baz]'
|
111
111
|
def self.to_parameter_name(array) #:nodoc:
|
data/wice_grid.gemspec
CHANGED
@@ -5,11 +5,11 @@
|
|
5
5
|
|
6
6
|
Gem::Specification.new do |s|
|
7
7
|
s.name = "wice_grid"
|
8
|
-
s.version = "3.2.
|
8
|
+
s.version = "3.2.1.pre1"
|
9
9
|
|
10
|
-
s.required_rubygems_version = Gem::Requirement.new("
|
10
|
+
s.required_rubygems_version = Gem::Requirement.new("> 1.3.1") if s.respond_to? :required_rubygems_version=
|
11
11
|
s.authors = ["Yuri Leikind"]
|
12
|
-
s.date = "2012-
|
12
|
+
s.date = "2012-12-14"
|
13
13
|
s.description = "A Rails grid plugin to create grids with sorting, pagination, and (automatically generated) filters "
|
14
14
|
s.email = "yuri.leikind@gmail.com"
|
15
15
|
s.extra_rdoc_files = [
|
@@ -29,6 +29,18 @@ Gem::Specification.new do |s|
|
|
29
29
|
"app/views/kaminari/wice_grid/_page.html.erb",
|
30
30
|
"app/views/kaminari/wice_grid/_paginator.html.erb",
|
31
31
|
"app/views/kaminari/wice_grid/_prev_page.html.erb",
|
32
|
+
"lib/active_record_column_wrapper.rb",
|
33
|
+
"lib/columns.rb",
|
34
|
+
"lib/columns/column_action.rb",
|
35
|
+
"lib/columns/column_boolean.rb",
|
36
|
+
"lib/columns/column_custom_dropdown.rb",
|
37
|
+
"lib/columns/column_date.rb",
|
38
|
+
"lib/columns/column_datetime.rb",
|
39
|
+
"lib/columns/column_float.rb",
|
40
|
+
"lib/columns/column_integer.rb",
|
41
|
+
"lib/columns/column_processor_index.rb",
|
42
|
+
"lib/columns/column_range.rb",
|
43
|
+
"lib/columns/column_string.rb",
|
32
44
|
"lib/generators/wice_grid/add_migration_for_serialized_queries_generator.rb",
|
33
45
|
"lib/generators/wice_grid/install_generator.rb",
|
34
46
|
"lib/generators/wice_grid/templates/create_wice_grid_serialized_queries.rb",
|
@@ -43,16 +55,6 @@ Gem::Specification.new do |s|
|
|
43
55
|
"lib/helpers/wice_grid_view_helpers.rb",
|
44
56
|
"lib/kaminari_monkey_patching.rb",
|
45
57
|
"lib/table_column_matrix.rb",
|
46
|
-
"lib/view_columns.rb",
|
47
|
-
"lib/view_columns/action_view_column.rb",
|
48
|
-
"lib/view_columns/column_processor_index.rb",
|
49
|
-
"lib/view_columns/view_column_boolean.rb",
|
50
|
-
"lib/view_columns/view_column_custom_dropdown.rb",
|
51
|
-
"lib/view_columns/view_column_date.rb",
|
52
|
-
"lib/view_columns/view_column_datetime.rb",
|
53
|
-
"lib/view_columns/view_column_float.rb",
|
54
|
-
"lib/view_columns/view_column_integer.rb",
|
55
|
-
"lib/view_columns/view_column_string.rb",
|
56
58
|
"lib/wice_grid.rb",
|
57
59
|
"lib/wice_grid_controller.rb",
|
58
60
|
"lib/wice_grid_core_ext.rb",
|
metadata
CHANGED
@@ -1,15 +1,15 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: wice_grid
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 3.2.
|
5
|
-
prerelease:
|
4
|
+
version: 3.2.1.pre1
|
5
|
+
prerelease: 6
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
8
8
|
- Yuri Leikind
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2012-
|
12
|
+
date: 2012-12-14 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: kaminari
|
@@ -48,6 +48,18 @@ files:
|
|
48
48
|
- app/views/kaminari/wice_grid/_page.html.erb
|
49
49
|
- app/views/kaminari/wice_grid/_paginator.html.erb
|
50
50
|
- app/views/kaminari/wice_grid/_prev_page.html.erb
|
51
|
+
- lib/active_record_column_wrapper.rb
|
52
|
+
- lib/columns.rb
|
53
|
+
- lib/columns/column_action.rb
|
54
|
+
- lib/columns/column_boolean.rb
|
55
|
+
- lib/columns/column_custom_dropdown.rb
|
56
|
+
- lib/columns/column_date.rb
|
57
|
+
- lib/columns/column_datetime.rb
|
58
|
+
- lib/columns/column_float.rb
|
59
|
+
- lib/columns/column_integer.rb
|
60
|
+
- lib/columns/column_processor_index.rb
|
61
|
+
- lib/columns/column_range.rb
|
62
|
+
- lib/columns/column_string.rb
|
51
63
|
- lib/generators/wice_grid/add_migration_for_serialized_queries_generator.rb
|
52
64
|
- lib/generators/wice_grid/install_generator.rb
|
53
65
|
- lib/generators/wice_grid/templates/create_wice_grid_serialized_queries.rb
|
@@ -62,16 +74,6 @@ files:
|
|
62
74
|
- lib/helpers/wice_grid_view_helpers.rb
|
63
75
|
- lib/kaminari_monkey_patching.rb
|
64
76
|
- lib/table_column_matrix.rb
|
65
|
-
- lib/view_columns.rb
|
66
|
-
- lib/view_columns/action_view_column.rb
|
67
|
-
- lib/view_columns/column_processor_index.rb
|
68
|
-
- lib/view_columns/view_column_boolean.rb
|
69
|
-
- lib/view_columns/view_column_custom_dropdown.rb
|
70
|
-
- lib/view_columns/view_column_date.rb
|
71
|
-
- lib/view_columns/view_column_datetime.rb
|
72
|
-
- lib/view_columns/view_column_float.rb
|
73
|
-
- lib/view_columns/view_column_integer.rb
|
74
|
-
- lib/view_columns/view_column_string.rb
|
75
77
|
- lib/wice_grid.rb
|
76
78
|
- lib/wice_grid_controller.rb
|
77
79
|
- lib/wice_grid_core_ext.rb
|
@@ -112,9 +114,9 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
112
114
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
113
115
|
none: false
|
114
116
|
requirements:
|
115
|
-
- - ! '
|
117
|
+
- - ! '>'
|
116
118
|
- !ruby/object:Gem::Version
|
117
|
-
version:
|
119
|
+
version: 1.3.1
|
118
120
|
requirements: []
|
119
121
|
rubyforge_project:
|
120
122
|
rubygems_version: 1.8.23
|
@@ -1,45 +0,0 @@
|
|
1
|
-
# encoding: UTF-8
|
2
|
-
module Wice
|
3
|
-
|
4
|
-
class ActionViewColumn < ViewColumn #:nodoc:
|
5
|
-
def initialize(grid_obj, html, param_name, select_all_buttons, object_property, view) #:nodoc:
|
6
|
-
@view = view
|
7
|
-
@select_all_buttons = select_all_buttons
|
8
|
-
self.grid = grid_obj
|
9
|
-
self.html = html
|
10
|
-
Wice::WgHash.add_or_append_class_value!(self.html, 'sel')
|
11
|
-
grid_name = self.grid.name
|
12
|
-
@param_name = param_name
|
13
|
-
@cell_rendering_block = lambda do |object, params|
|
14
|
-
selected = if params[grid_name] && params[grid_name][param_name] &&
|
15
|
-
params[grid_name][param_name].index(object.send(object_property).to_s)
|
16
|
-
true
|
17
|
-
else
|
18
|
-
false
|
19
|
-
end
|
20
|
-
check_box_tag("#{grid_name}[#{param_name}][]", object.send(object_property), selected, :id => nil)
|
21
|
-
end
|
22
|
-
end
|
23
|
-
|
24
|
-
def in_html #:nodoc:
|
25
|
-
true
|
26
|
-
end
|
27
|
-
|
28
|
-
def capable_of_hosting_filter_related_icons? #:nodoc:
|
29
|
-
false
|
30
|
-
end
|
31
|
-
|
32
|
-
def name #:nodoc:
|
33
|
-
return '' unless @select_all_buttons
|
34
|
-
|
35
|
-
content_tag(:div, '',
|
36
|
-
:class => 'clickable select-all',
|
37
|
-
:title => NlMessage['select_all']) + ' ' +
|
38
|
-
content_tag(:div, '',
|
39
|
-
:class => 'clickable deselect-all',
|
40
|
-
:title => NlMessage['deselect_all'])
|
41
|
-
|
42
|
-
end
|
43
|
-
|
44
|
-
end
|
45
|
-
end
|
@@ -1,16 +0,0 @@
|
|
1
|
-
# encoding: UTF-8
|
2
|
-
module Wice
|
3
|
-
COLUMN_PROCESSOR_INDEX = ActiveSupport::OrderedHash[
|
4
|
-
:action , 'action_view_column', # Special processor for action column, columns with checkboxes
|
5
|
-
:text , 'view_column_string',
|
6
|
-
:string , 'view_column_string',
|
7
|
-
:timestamp, 'view_column_datetime',
|
8
|
-
:datetime , 'view_column_datetime',
|
9
|
-
:date , 'view_column_date',
|
10
|
-
:integer , 'view_column_integer',
|
11
|
-
:float , 'view_column_float',
|
12
|
-
:decimal , 'view_column_float',
|
13
|
-
:custom , 'view_column_custom_dropdown', # Special processor for custom filter columns
|
14
|
-
:boolean , 'view_column_boolean'
|
15
|
-
]
|
16
|
-
end
|
@@ -1,23 +0,0 @@
|
|
1
|
-
# encoding: UTF-8
|
2
|
-
module Wice
|
3
|
-
|
4
|
-
|
5
|
-
class ViewColumnBoolean < ViewColumnCustomDropdown #:nodoc:
|
6
|
-
include ActionView::Helpers::FormOptionsHelper
|
7
|
-
|
8
|
-
attr_accessor :boolean_filter_true_label, :boolean_filter_false_label
|
9
|
-
|
10
|
-
def render_filter_internal(params) #:nodoc:
|
11
|
-
@custom_filter = {
|
12
|
-
@filter_all_label => nil,
|
13
|
-
@boolean_filter_true_label => 't',
|
14
|
-
@boolean_filter_false_label => 'f'
|
15
|
-
}
|
16
|
-
|
17
|
-
@turn_off_select_toggling = true
|
18
|
-
super(params)
|
19
|
-
end
|
20
|
-
end
|
21
|
-
|
22
|
-
|
23
|
-
end
|
@@ -1,80 +0,0 @@
|
|
1
|
-
# encoding: UTF-8
|
2
|
-
module Wice
|
3
|
-
|
4
|
-
|
5
|
-
class ViewColumnCustomDropdown < ViewColumn #:nodoc:
|
6
|
-
include ActionView::Helpers::FormOptionsHelper
|
7
|
-
|
8
|
-
attr_accessor :filter_all_label
|
9
|
-
attr_accessor :custom_filter
|
10
|
-
|
11
|
-
def render_filter_internal(params) #:nodoc:
|
12
|
-
@query, @query_without_equals_sign, @parameter_name, @dom_id = form_parameter_name_id_and_query('')
|
13
|
-
@query_without_equals_sign += '%5B%5D='
|
14
|
-
|
15
|
-
@custom_filter = @custom_filter.call if @custom_filter.kind_of? Proc
|
16
|
-
|
17
|
-
if @custom_filter.kind_of? Array
|
18
|
-
|
19
|
-
@custom_filter = [[@filter_all_label, nil]] + @custom_filter.map{|label, value|
|
20
|
-
[label.to_s, value.to_s]
|
21
|
-
}
|
22
|
-
|
23
|
-
end
|
24
|
-
|
25
|
-
select_options = {:name => @parameter_name + '[]', :id => @dom_id, :class => 'custom-dropdown'}
|
26
|
-
|
27
|
-
if @turn_off_select_toggling
|
28
|
-
select_toggle = ''
|
29
|
-
else
|
30
|
-
if self.allow_multiple_selection
|
31
|
-
select_options[:multiple] = params.is_a?(Array) && params.size > 1
|
32
|
-
|
33
|
-
expand_icon_style, collapse_icon_style = nil, 'display: none'
|
34
|
-
expand_icon_style, collapse_icon_style = collapse_icon_style, expand_icon_style if select_options[:multiple]
|
35
|
-
|
36
|
-
select_toggle = content_tag(:span, '',
|
37
|
-
:title => NlMessage['expand'],
|
38
|
-
:class => 'expand-multi-select-icon clickable',
|
39
|
-
:style => expand_icon_style
|
40
|
-
) +
|
41
|
-
content_tag(:span, '',
|
42
|
-
:title => NlMessage['collapse'],
|
43
|
-
:class => 'collapse-multi-select-icon clickable',
|
44
|
-
:style => collapse_icon_style
|
45
|
-
)
|
46
|
-
else
|
47
|
-
select_options[:multiple] = false
|
48
|
-
select_toggle = ''
|
49
|
-
end
|
50
|
-
end
|
51
|
-
|
52
|
-
if auto_reload
|
53
|
-
select_options[:class] += ' auto-reload'
|
54
|
-
end
|
55
|
-
|
56
|
-
params_for_select = (params.is_a?(Hash) && params.empty?) ? [nil] : params
|
57
|
-
|
58
|
-
'<div class="custom-dropdown-container">'.html_safe +
|
59
|
-
content_tag(:select,
|
60
|
-
options_for_select(@custom_filter, params_for_select),
|
61
|
-
select_options) + select_toggle.html_safe + '</div>'.html_safe
|
62
|
-
end
|
63
|
-
|
64
|
-
|
65
|
-
def yield_declaration_of_column_filter #:nodoc:
|
66
|
-
{
|
67
|
-
:templates => [@query_without_equals_sign],
|
68
|
-
:ids => [@dom_id]
|
69
|
-
}
|
70
|
-
end
|
71
|
-
|
72
|
-
|
73
|
-
def has_auto_reloading_select? #:nodoc:
|
74
|
-
auto_reload
|
75
|
-
end
|
76
|
-
end
|
77
|
-
|
78
|
-
|
79
|
-
|
80
|
-
end
|