wice_grid 3.5.0 → 3.6.0.pre1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/.inch.yml +3 -0
- data/.rspec +3 -0
- data/.rubocop.yml +181 -0
- data/.travis.yml +22 -0
- data/{CHANGELOG → CHANGELOG.md} +95 -31
- data/Gemfile +4 -1
- data/README.md +1517 -0
- data/Rakefile +51 -7
- data/{SAVED_QUERIES_HOWTO.rdoc → SAVED_QUERIES_HOWTO.md} +34 -31
- data/TODO.md +16 -0
- data/lib/generators/wice_grid/add_migration_for_serialized_queries_generator.rb +4 -6
- data/lib/generators/wice_grid/install_generator.rb +2 -5
- data/lib/generators/wice_grid/templates/create_wice_grid_serialized_queries.rb +1 -0
- data/lib/generators/wice_grid/templates/wice_grid_config.rb +29 -34
- data/lib/wice/active_record_column_wrapper.rb +36 -17
- data/lib/wice/columns.rb +53 -52
- data/lib/wice/columns/column_action.rb +11 -13
- data/lib/wice/columns/column_boolean.rb +9 -11
- data/lib/wice/columns/column_bootstrap_datepicker.rb +48 -0
- data/lib/wice/columns/column_custom_dropdown.rb +22 -23
- data/lib/wice/columns/column_float.rb +2 -6
- data/lib/wice/columns/column_html5_datepicker.rb +31 -0
- data/lib/wice/columns/column_integer.rb +9 -13
- data/lib/wice/columns/column_jquery_datepicker.rb +49 -0
- data/lib/wice/columns/column_processor_index.rb +18 -13
- data/lib/wice/columns/column_rails_date_helper.rb +41 -0
- data/lib/wice/columns/column_rails_datetime_helper.rb +40 -0
- data/lib/wice/columns/column_range.rb +7 -11
- data/lib/wice/columns/column_string.rb +24 -20
- data/lib/wice/columns/common_date_datetime_mixin.rb +20 -0
- data/lib/wice/columns/common_js_date_datetime_conditions_generator_mixin.rb +39 -0
- data/lib/wice/columns/common_js_date_datetime_mixin.rb +15 -0
- data/lib/wice/columns/{column_date.rb → common_rails_date_datetime_conditions_generator_mixin.rb} +4 -22
- data/lib/wice/columns/common_standard_helper_date_datetime_mixin.rb +22 -0
- data/lib/wice/grid_output_buffer.rb +19 -10
- data/lib/wice/grid_renderer.rb +146 -85
- data/lib/wice/helpers/bs_calendar_helpers.rb +6 -7
- data/lib/wice/helpers/js_calendar_helpers.rb +19 -17
- data/lib/wice/helpers/wice_grid_misc_view_helpers.rb +18 -18
- data/lib/wice/helpers/wice_grid_serialized_queries_view_helpers.rb +44 -49
- data/lib/wice/helpers/wice_grid_view_helpers.rb +131 -134
- data/lib/wice/kaminari_monkey_patching.rb +3 -1
- data/lib/wice/table_column_matrix.rb +23 -8
- data/lib/wice/wice_grid_controller.rb +12 -16
- data/lib/wice/wice_grid_core_ext.rb +12 -20
- data/lib/wice/wice_grid_misc.rb +131 -53
- data/lib/wice/wice_grid_serialized_queries_controller.rb +10 -11
- data/lib/wice/wice_grid_serialized_query.rb +4 -3
- data/lib/wice/wice_grid_spreadsheet.rb +19 -18
- data/lib/wice_grid.rb +144 -135
- data/spec/schema.rb +9 -0
- data/spec/spec_helper.rb +75 -0
- data/spec/support/active_record.rb +11 -0
- data/spec/support/wice_grid_test_config.rb +172 -0
- data/spec/wice/grid_output_buffer_spec.rb +41 -0
- data/spec/wice/table_column_matrix_spec.rb +38 -0
- data/spec/wice/wice_grid_misc_spec.rb +159 -0
- data/spec/wice/wice_grid_spreadsheet_spec.rb +14 -0
- data/test/readme.txt +1 -1
- data/vendor/assets/javascripts/wice_grid_init.js.coffee +14 -8
- data/vendor/assets/stylesheets/wice_grid.scss +84 -0
- data/wice_grid.gemspec +32 -16
- metadata +217 -25
- data/README.rdoc +0 -1325
- data/lib/generators/wice_grid/templates/wice_grid.scss +0 -140
- data/lib/wice/columns/column_datetime.rb +0 -171
- data/vendor/assets/images/icons/grid/arrow_down.gif +0 -0
- data/vendor/assets/images/icons/grid/arrow_up.gif +0 -0
- data/vendor/assets/images/icons/grid/calendar_view_month.png +0 -0
- data/vendor/assets/images/icons/grid/collapse.gif +0 -0
- data/vendor/assets/images/icons/grid/delete.png +0 -0
- data/vendor/assets/images/icons/grid/expand.gif +0 -0
- data/vendor/assets/images/icons/grid/page_white_excel.png +0 -0
- data/vendor/assets/images/icons/grid/page_white_find.png +0 -0
- data/vendor/assets/images/icons/grid/table.png +0 -0
- data/vendor/assets/images/icons/grid/table_refresh.png +0 -0
- data/vendor/assets/images/icons/grid/tick_all.png +0 -0
- data/vendor/assets/images/icons/grid/untick_all.png +0 -0
@@ -1,7 +1,11 @@
|
|
1
|
+
# encoding: utf-8
|
1
2
|
module Wice #:nodoc:
|
2
3
|
module BsCalendarHelpers #:nodoc:
|
3
4
|
|
4
|
-
|
5
|
+
# A struct containing all data for rendering a calendar
|
6
|
+
class CalendarData #:nodoc:
|
7
|
+
|
8
|
+
# :nodoc:
|
5
9
|
attr_accessor :name,
|
6
10
|
:date_string,
|
7
11
|
:dom_id,
|
@@ -14,16 +18,14 @@ module Wice #:nodoc:
|
|
14
18
|
end
|
15
19
|
|
16
20
|
def date_calendar_bs(calendar_data) #:nodoc:
|
17
|
-
|
18
21
|
text_field_tag_options = {
|
19
22
|
:id => calendar_data.dom_id,
|
20
23
|
'data-provide' => 'datepicker',
|
21
24
|
'data-date-language' => I18n.locale,
|
22
25
|
'data-date-autoclose' => true,
|
23
|
-
'data-date-format' => Wice::ConfigurationProvider.value_for(:DATE_FORMAT_BOOTSTRAP)
|
26
|
+
'data-date-format' => Wice::ConfigurationProvider.value_for(:DATE_FORMAT_BOOTSTRAP)
|
24
27
|
}
|
25
28
|
|
26
|
-
|
27
29
|
text_field_tag_options['class'] = 'form-control input-sm'
|
28
30
|
|
29
31
|
if Rails.env.development?
|
@@ -48,11 +50,9 @@ module Wice #:nodoc:
|
|
48
50
|
end
|
49
51
|
|
50
52
|
def prepare_data_for_bscalendar(options) #:nodoc:
|
51
|
-
|
52
53
|
date_format = Wice::ConfigurationProvider.value_for(:DATE_FORMAT)
|
53
54
|
|
54
55
|
CalendarData.new.tap do |calendar_data|
|
55
|
-
|
56
56
|
calendar_data.name = options[:name]
|
57
57
|
calendar_data.date_string = options[:initial_date].nil? ? '' : options[:initial_date].strftime(date_format)
|
58
58
|
calendar_data.dom_id = options[:name].gsub(/([\[\(])|(\]\[)/, '_').gsub(/[\]\)]/, '').gsub(/\./, '_').gsub(/_+/, '_')
|
@@ -62,6 +62,5 @@ module Wice #:nodoc:
|
|
62
62
|
calendar_data.fire_event = options[:fire_event]
|
63
63
|
end
|
64
64
|
end
|
65
|
-
|
66
65
|
end
|
67
66
|
end
|
@@ -1,7 +1,11 @@
|
|
1
|
+
# encoding: utf-8
|
1
2
|
module Wice #:nodoc:
|
2
3
|
module JsCalendarHelpers #:nodoc:
|
3
4
|
|
5
|
+
# A struct containing all data for rendering a calendar
|
4
6
|
class CalendarData
|
7
|
+
|
8
|
+
# :nodoc:
|
5
9
|
attr_accessor :name,
|
6
10
|
:date_string,
|
7
11
|
:dom_id,
|
@@ -15,12 +19,10 @@ module Wice #:nodoc:
|
|
15
19
|
end
|
16
20
|
|
17
21
|
def date_calendar_jquery(calendar_data) #:nodoc:
|
18
|
-
|
19
22
|
hidden_field_tag_options = {
|
20
23
|
:id => calendar_data.dom_id,
|
21
24
|
'data-locale' => I18n.locale,
|
22
25
|
'data-date-format' => Wice::ConfigurationProvider.value_for(:DATE_FORMAT_JQUERY),
|
23
|
-
'data-button-image' => Wice::ConfigurationProvider.value_for(:CALENDAR_ICON),
|
24
26
|
'data-button-text' => calendar_data.title
|
25
27
|
}
|
26
28
|
|
@@ -40,31 +42,33 @@ module Wice #:nodoc:
|
|
40
42
|
hidden_field_tag_options['data-the-other-datepicker-id-from'] = calendar_data.the_other_datepicker_id_from
|
41
43
|
end
|
42
44
|
|
43
|
-
|
44
45
|
if year_range = ConfigurationProvider.value_for(:DATEPICKER_YEAR_RANGE)
|
45
46
|
hidden_field_tag_options['data-date-year-range'] = year_range
|
46
47
|
end
|
47
48
|
|
48
|
-
|
49
49
|
date_picker = hidden_field_tag(calendar_data.name, calendar_data.date_string, hidden_field_tag_options) + ' ' +
|
50
50
|
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
51
|
+
link_to(
|
52
|
+
calendar_data.date_string,
|
53
|
+
'#',
|
54
|
+
:id => calendar_data.date_span_id,
|
55
|
+
:class => 'date-label',
|
56
|
+
:title => ::Wice::NlMessage['date_string_tooltip'],
|
57
|
+
'data-dom-id' => calendar_data.dom_id
|
58
|
+
)
|
59
|
+
|
60
|
+
content_tag(
|
61
|
+
:span,
|
62
|
+
date_picker,
|
63
|
+
id: calendar_data.datepicker_placeholder_id,
|
64
|
+
class: 'jq-datepicker-container'
|
65
|
+
)
|
60
66
|
end
|
61
67
|
|
62
68
|
def prepare_data_for_calendar(options) #:nodoc:
|
63
|
-
|
64
69
|
date_format = Wice::ConfigurationProvider.value_for(:DATE_FORMAT)
|
65
70
|
|
66
71
|
CalendarData.new.tap do |calendar_data|
|
67
|
-
|
68
72
|
calendar_data.name = options[:name]
|
69
73
|
calendar_data.date_string = options[:initial_date].nil? ? '' : options[:initial_date].strftime(date_format)
|
70
74
|
calendar_data.dom_id = options[:name].gsub(/([\[\(])|(\]\[)/, '_').gsub(/[\]\)]/, '').gsub(/\./, '_').gsub(/_+/, '_')
|
@@ -73,9 +77,7 @@ module Wice #:nodoc:
|
|
73
77
|
calendar_data.close_calendar_event_name = "wg:calendarChanged_#{options[:grid_name]}"
|
74
78
|
calendar_data.title = options[:title]
|
75
79
|
calendar_data.fire_event = options[:fire_event]
|
76
|
-
|
77
80
|
end
|
78
81
|
end
|
79
|
-
|
80
82
|
end
|
81
83
|
end
|
@@ -1,19 +1,20 @@
|
|
1
|
+
# encoding: utf-8
|
1
2
|
module Wice
|
2
|
-
module GridViewHelper
|
3
|
-
|
4
3
|
|
4
|
+
# Various grid related helpers
|
5
|
+
module GridViewHelper
|
5
6
|
# This method dumps all HTTP parameters related to filtering and ordering of a certain grid as hidden form fields.
|
6
7
|
# This might be required if you want to keep the state of a grid while reloading the page using other forms.
|
7
8
|
#
|
8
9
|
# The only parameter is a grid object returned by +initialize_grid+ in the controller.
|
9
10
|
def dump_filter_parameters_as_hidden_fields(grid)
|
10
|
-
unless grid.
|
11
|
-
|
11
|
+
unless grid.is_a? WiceGrid
|
12
|
+
fail WiceGridArgumentError.new('dump_filter_parameters_as_hidden_fields: the parameter must be a WiceGrid instance.')
|
12
13
|
end
|
13
14
|
|
14
|
-
grid.get_state_as_parameter_value_pairs(true).collect
|
15
|
-
hidden_field_tag(param_name, value, :
|
16
|
-
|
15
|
+
grid.get_state_as_parameter_value_pairs(true).collect do|param_name, value|
|
16
|
+
hidden_field_tag(param_name, value, id: "hidden-#{param_name.gsub(/[\[\]]/, '-')}")
|
17
|
+
end.join("\n").html_safe
|
17
18
|
end
|
18
19
|
|
19
20
|
# This method dumps all HTTP parameters related to filtering of a certain grid in the form of a hash.
|
@@ -23,7 +24,7 @@ module Wice
|
|
23
24
|
#
|
24
25
|
# The only parameter is a grid object returned by +initialize_grid+ in the controller.
|
25
26
|
def filter_state_as_hash(grid)
|
26
|
-
{grid.name => {'f' => grid.status[:f]}}
|
27
|
+
{ grid.name => { 'f' => grid.status[:f] } }
|
27
28
|
end
|
28
29
|
|
29
30
|
# This method dumps all HTTP parameters related to filtering and ordering of a certain grid in the form of a hash.
|
@@ -40,36 +41,35 @@ module Wice
|
|
40
41
|
}
|
41
42
|
end
|
42
43
|
|
44
|
+
# display the state of the grid
|
43
45
|
def dump_state(grid) #:nodoc:
|
44
|
-
debug(grid.get_state_as_parameter_value_pairs
|
46
|
+
debug(grid.get_state_as_parameter_value_pairs)
|
45
47
|
end
|
46
48
|
|
47
|
-
|
48
49
|
# secret but stupid weapon - takes an ActiveRecord and using reflection tries to build all the column clauses by itself.
|
49
50
|
# WiceGrid is not a scaffolding solution, I hate scaffolding and how certain idiots associate scaffolding with Rails,
|
50
51
|
# so I do not document this method to avoid contributing to this misunderstanding.
|
51
52
|
def scaffolded_grid(grid_obj, opts = {}) #:nodoc:
|
52
|
-
unless grid_obj.
|
53
|
-
|
53
|
+
unless grid_obj.is_a? WiceGrid
|
54
|
+
fail WiceGridArgumentError.new('scaffolded_grid: the parameter must be a WiceGrid instance.')
|
54
55
|
end
|
55
56
|
|
56
57
|
# debug grid.klass.column_names
|
57
58
|
columns = grid_obj.klass.column_names
|
58
59
|
if opts[:reject_attributes].is_a? Proc
|
59
|
-
columns = columns.reject{|c| opts[:reject_attributes].call(c)}
|
60
|
+
columns = columns.reject { |c| opts[:reject_attributes].call(c) }
|
60
61
|
opts.delete(:reject_attributes)
|
61
|
-
|
62
|
-
columns = columns.reject{|c| c =~ opts[:reject_attributes]}
|
62
|
+
else
|
63
|
+
columns = columns.reject { |c| c =~ opts[:reject_attributes] }
|
63
64
|
opts.delete(:reject_attributes)
|
64
65
|
end
|
65
66
|
grid(grid_obj, opts) do |g|
|
66
67
|
columns.each do |column_name|
|
67
|
-
g.column :
|
68
|
+
g.column name: column_name.humanize, attribute: column_name do |ar|
|
68
69
|
ar.send(column_name)
|
69
70
|
end
|
70
71
|
end
|
71
72
|
end
|
72
73
|
end
|
73
|
-
|
74
74
|
end
|
75
|
-
end
|
75
|
+
end
|
@@ -1,17 +1,17 @@
|
|
1
|
+
# encoding: utf-8
|
1
2
|
module Wice
|
2
3
|
module GridViewHelper
|
3
|
-
|
4
4
|
# View helper to render the list of saved queries and the form to create a new query.
|
5
5
|
# Parameters:
|
6
6
|
# * <tt>:extra_parameters</tt> - a hash of additional parameters to use when creating a new query object.
|
7
7
|
# * <tt>:confirm</tt> - A boolean value which turns on or off the JS confirm dialogs when deleting saved queries.
|
8
8
|
# Read section "Adding Application Specific Logic to Saving/Restoring Queries" in README for more details.
|
9
9
|
def saved_queries_panel(grid, opts = {})
|
10
|
-
unless grid.
|
11
|
-
|
10
|
+
unless grid.is_a? WiceGrid
|
11
|
+
fail WiceGridArgumentError.new('saved_queries_panel: the parameter must be a WiceGrid instance.')
|
12
12
|
end
|
13
13
|
|
14
|
-
options = {extra_parameters: {}, confirm: 1}
|
14
|
+
options = { extra_parameters: {}, confirm: 1 }
|
15
15
|
opts.assert_valid_keys(options.keys)
|
16
16
|
options.merge!(opts)
|
17
17
|
|
@@ -22,13 +22,13 @@ module Wice
|
|
22
22
|
parameters = grid.get_state_as_parameter_value_pairs
|
23
23
|
|
24
24
|
options[:extra_parameters].each do |k, v|
|
25
|
-
parameters << [
|
25
|
+
parameters << [CGI.unescape({ extra: { k => '' } }.to_query.sub(/=$/, '')), v.to_s]
|
26
26
|
end
|
27
|
-
parameters <<
|
27
|
+
parameters << ['authenticity_token', form_authenticity_token]
|
28
28
|
notification_messages_id = "#{grid_name}_notification_messages"
|
29
|
-
(
|
29
|
+
(%( <div class="wice-grid-query-panel well"><h3>#{NlMessage['saved_query_panel_title']}</h3>) +
|
30
30
|
saved_queries_list(grid_name, grid.saved_query, options[:extra_parameters], options[:confirm]) +
|
31
|
-
|
31
|
+
%(<div id="#{notification_messages_id}" ></div>) +
|
32
32
|
if block_given?
|
33
33
|
view, ids = yield
|
34
34
|
view
|
@@ -36,9 +36,7 @@ module Wice
|
|
36
36
|
''
|
37
37
|
end +
|
38
38
|
|
39
|
-
'<div class="form-horizontal"><div class="wg-saved-query-input-controls input-append">'+
|
40
|
-
|
41
|
-
text_field_tag(input_field_name, '', onkeydown: '', class: 'wice-grid-save-query-field form-control ') +
|
39
|
+
'<div class="form-horizontal"><div class="wg-saved-query-input-controls input-append">' + text_field_tag(input_field_name, '', onkeydown: '', class: 'wice-grid-save-query-field form-control ') +
|
42
40
|
button_tag(
|
43
41
|
NlMessage['save_query_button_label'],
|
44
42
|
class: 'wice-grid-save-query-button btn btn-primary',
|
@@ -52,49 +50,46 @@ module Wice
|
|
52
50
|
end
|
53
51
|
|
54
52
|
def saved_queries_list(grid_name, saved_query = nil, extra_parameters = {}, confirm = 1) #:nodoc:
|
55
|
-
|
56
53
|
link_title = NlMessage['saved_query_link_title']
|
57
54
|
deletion_confirmation = confirm ? NlMessage['saved_query_deletion_confirmation'] : nil
|
58
55
|
deletion_link_title = NlMessage['saved_query_deletion_link_title']
|
59
56
|
|
60
|
-
query_store_model = ::Wice
|
57
|
+
query_store_model = ::Wice.get_query_store_model
|
61
58
|
currently_loaded_query_id = saved_query ? saved_query.id : nil
|
62
|
-
with = extra_parameters.nil? ? nil : "'" + {extra: extra_parameters}.to_query + "'"
|
59
|
+
# with = extra_parameters.nil? ? nil : "'" + {extra: extra_parameters}.to_query + "'"
|
63
60
|
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
|
73
|
-
|
74
|
-
|
75
|
-
|
76
|
-
|
77
|
-
|
78
|
-
|
79
|
-
|
80
|
-
|
81
|
-
|
82
|
-
|
83
|
-
|
84
|
-
|
85
|
-
|
86
|
-
|
87
|
-
|
88
|
-
|
89
|
-
|
90
|
-
|
91
|
-
|
92
|
-
|
93
|
-
|
94
|
-
|
95
|
-
'</
|
96
|
-
end.join('') + '</ul>'
|
61
|
+
%(<ul id="#{grid_name}_query_list" class="query-list"> ) +
|
62
|
+
query_store_model.list(grid_name, controller).collect do |sq|
|
63
|
+
link_opts = {
|
64
|
+
class: 'wice-grid-query-load-link',
|
65
|
+
title: "#{link_title} #{sq.name}",
|
66
|
+
'data-query-id' => sq.id,
|
67
|
+
'data-grid-name' => grid_name
|
68
|
+
}
|
69
|
+
link_opts[:class] += ' current' if saved_query == sq
|
70
|
+
'<li>' + link_to(
|
71
|
+
content_tag(:i, '', class: 'fa fa-trash-o delete-icon'),
|
72
|
+
delete_serialized_query_path(
|
73
|
+
grid_name: grid_name,
|
74
|
+
id: sq.id,
|
75
|
+
current: currently_loaded_query_id,
|
76
|
+
extra: extra_parameters,
|
77
|
+
confirm: confirm
|
78
|
+
),
|
79
|
+
class: 'wice-grid-delete-query',
|
80
|
+
'data-wg-confirm' => deletion_confirmation,
|
81
|
+
'data-grid-name' => grid_name,
|
82
|
+
title: "#{deletion_link_title} #{sq.name}"
|
83
|
+
) + ' ' +
|
84
|
+
link_to(h(sq.name), '#', link_opts) +
|
85
|
+
if sq.respond_to? :description
|
86
|
+
desc = sq.description
|
87
|
+
desc.blank? ? '' : " <i>#{desc}</i>"
|
88
|
+
else
|
89
|
+
''
|
90
|
+
end +
|
91
|
+
'</li>'
|
92
|
+
end.join('') + '</ul>'
|
97
93
|
end
|
98
|
-
|
99
94
|
end
|
100
|
-
end
|
95
|
+
end
|
@@ -1,6 +1,6 @@
|
|
1
|
+
# encoding: utf-8
|
1
2
|
module Wice
|
2
3
|
module GridViewHelper
|
3
|
-
|
4
4
|
# View helper for rendering the grid.
|
5
5
|
#
|
6
6
|
# The first parameter is a grid object returned by +initialize_grid+ in the controller.
|
@@ -69,9 +69,9 @@ module Wice
|
|
69
69
|
# Pease read documentation about the +column+ method to achieve the enlightenment.
|
70
70
|
|
71
71
|
def grid(grid, opts = {}, &block)
|
72
|
-
|
73
|
-
' For detached filters use first define_grid with the same API as grid, '
|
74
|
-
'then grid_filter to add filters, and then render_grid to actually show the grid'
|
72
|
+
fail WiceGridArgumentError.new('Missing block for the grid helper.' \
|
73
|
+
' For detached filters use first define_grid with the same API as grid, ' \
|
74
|
+
'then grid_filter to add filters, and then render_grid to actually show the grid') if block.nil?
|
75
75
|
define_grid(grid, opts, &block)
|
76
76
|
render_grid(grid)
|
77
77
|
end
|
@@ -83,7 +83,7 @@ module Wice
|
|
83
83
|
def define_grid(grid, opts = {}, &block)
|
84
84
|
# strip the method from HTML stuff
|
85
85
|
unless grid.class == WiceGrid
|
86
|
-
|
86
|
+
fail WiceGridArgumentError.new('The first argument for the grid helper must be an instance of the WiceGrid class')
|
87
87
|
end
|
88
88
|
|
89
89
|
options = {
|
@@ -107,7 +107,6 @@ module Wice
|
|
107
107
|
options[:show_filters] = :no if options[:show_filters] == false
|
108
108
|
options[:show_filters] = :always if options[:show_filters] == true
|
109
109
|
|
110
|
-
|
111
110
|
rendering = GridRenderer.new(grid, self)
|
112
111
|
|
113
112
|
block.call(rendering) # calling block containing column() calls
|
@@ -119,7 +118,7 @@ module Wice
|
|
119
118
|
grid_csv(grid, rendering)
|
120
119
|
else
|
121
120
|
# If blank_slate is defined we don't show any grid at all
|
122
|
-
if rendering.blank_slate_handler &&
|
121
|
+
if rendering.blank_slate_handler && grid.resultset.size == 0 && !grid.filtering_on?
|
123
122
|
generate_blank_slate(grid, rendering)
|
124
123
|
else
|
125
124
|
grid_html(grid, options, rendering, reuse_last_column_for_filter_buttons)
|
@@ -140,15 +139,14 @@ module Wice
|
|
140
139
|
elsif grid.csv_tempfile
|
141
140
|
grid.csv_tempfile.path
|
142
141
|
else
|
143
|
-
|
142
|
+
fail WiceGridException.new("Attempt to use 'render_grid' without 'define_grid' before.")
|
144
143
|
end
|
145
144
|
end
|
146
145
|
|
147
|
-
|
148
146
|
def generate_blank_slate(grid, rendering) #:nodoc:
|
149
147
|
grid.output_buffer = GridOutputBuffer.new
|
150
148
|
|
151
|
-
grid.output_buffer <<
|
149
|
+
grid.output_buffer << if rendering.blank_slate_handler.is_a?(Proc)
|
152
150
|
call_block(rendering.blank_slate_handler, nil)
|
153
151
|
elsif rendering.blank_slate_handler.is_a?(Hash)
|
154
152
|
render(rendering.blank_slate_handler)
|
@@ -156,7 +154,7 @@ module Wice
|
|
156
154
|
rendering.blank_slate_handler
|
157
155
|
end
|
158
156
|
|
159
|
-
if rendering.find_one_for(:in_html){|column| column.detach_with_id}
|
157
|
+
if rendering.find_one_for(:in_html) { |column| column.detach_with_id }
|
160
158
|
grid.output_buffer.return_empty_strings_for_nonexistent_filters = true
|
161
159
|
end
|
162
160
|
end
|
@@ -165,7 +163,7 @@ module Wice
|
|
165
163
|
extra_argument ? block.call(ar, extra_argument) : block.call(ar)
|
166
164
|
end
|
167
165
|
|
168
|
-
def get_row_content(rendering, ar, sorting_dependant_row_cycling)
|
166
|
+
def get_row_content(rendering, ar, sorting_dependant_row_cycling) #:nodoc:
|
169
167
|
cell_value_of_the_ordered_column = nil
|
170
168
|
row_content = ''
|
171
169
|
rendering.each_column(:in_html) do |column|
|
@@ -181,25 +179,25 @@ module Wice
|
|
181
179
|
call_block(cell_block, ar)
|
182
180
|
end
|
183
181
|
|
184
|
-
if column_block_output.
|
182
|
+
if column_block_output.is_a?(Array)
|
185
183
|
|
186
184
|
unless column_block_output.size == 2
|
187
|
-
|
188
|
-
|
185
|
+
fail WiceGridArgumentError.new('When WiceGrid column block returns an array it is expected to contain 2 elements only - ' \
|
186
|
+
'the first is the contents of the table cell and the second is a hash containing HTML attributes for the <td> tag.')
|
189
187
|
end
|
190
188
|
|
191
189
|
column_block_output, additional_opts = column_block_output
|
192
190
|
|
193
191
|
unless additional_opts.is_a?(Hash)
|
194
|
-
|
192
|
+
fail WiceGridArgumentError.new('When WiceGrid column block returns an array its second element is expected to be a ' \
|
195
193
|
"hash containing HTML attributes for the <td> tag. The returned value is #{additional_opts.inspect}. Read documentation.")
|
196
194
|
end
|
197
195
|
|
198
196
|
additional_css_class = nil
|
199
|
-
if additional_opts.
|
197
|
+
if additional_opts.key?(:class)
|
200
198
|
additional_css_class = additional_opts[:class]
|
201
199
|
additional_opts.delete(:class)
|
202
|
-
elsif additional_opts.
|
200
|
+
elsif additional_opts.key?('class')
|
203
201
|
additional_css_class = additional_opts['class']
|
204
202
|
additional_opts.delete('class')
|
205
203
|
end
|
@@ -217,7 +215,6 @@ module Wice
|
|
217
215
|
|
218
216
|
# the longest method? :(
|
219
217
|
def grid_html(grid, options, rendering, reuse_last_column_for_filter_buttons) #:nodoc:
|
220
|
-
|
221
218
|
table_html_attrs, header_tr_html = options[:html], options[:header_tr_html]
|
222
219
|
|
223
220
|
Wice::WgHash.add_or_append_class_value!(table_html_attrs, 'wice-grid', true)
|
@@ -241,18 +238,18 @@ module Wice
|
|
241
238
|
# Ruby 1.9.x
|
242
239
|
grid.output_buffer.force_encoding('UTF-8') if grid.output_buffer.respond_to?(:force_encoding)
|
243
240
|
|
244
|
-
grid.output_buffer <<
|
241
|
+
grid.output_buffer << %(<div class="wice-grid-container table-responsive" data-grid-name="#{grid.name}" id="#{grid.name}"><div id="#{grid.name}_title">)
|
245
242
|
grid.output_buffer << content_tag(:h3, grid.saved_query.name) if grid.saved_query
|
246
|
-
grid.output_buffer << "</div><table #{
|
243
|
+
grid.output_buffer << "</div><table #{public_tag_options(table_html_attrs, true)}>"
|
247
244
|
grid.output_buffer << "<caption>#{rendering.kaption}</caption>" if rendering.kaption
|
248
|
-
grid.output_buffer <<
|
245
|
+
grid.output_buffer << '<thead>'
|
249
246
|
|
250
247
|
no_filters_at_all = (options[:show_filters] == :no || rendering.no_filter_needed?)
|
251
248
|
|
252
249
|
if no_filters_at_all
|
253
250
|
no_rightmost_column = no_filter_row = no_filters_at_all
|
254
251
|
else
|
255
|
-
no_rightmost_column = no_filter_row = (options[:show_filters] == :no || rendering.no_filter_needed_in_main_table?) ? true: false
|
252
|
+
no_rightmost_column = no_filter_row = (options[:show_filters] == :no || rendering.no_filter_needed_in_main_table?) ? true : false
|
256
253
|
end
|
257
254
|
|
258
255
|
no_rightmost_column = true if reuse_last_column_for_filter_buttons
|
@@ -262,7 +259,7 @@ module Wice
|
|
262
259
|
|
263
260
|
number_of_columns_for_extra_rows = number_of_columns + 1
|
264
261
|
|
265
|
-
pagination_panel_content_html
|
262
|
+
pagination_panel_content_html = nil
|
266
263
|
if options[:upper_pagination_panel]
|
267
264
|
grid.output_buffer << rendering.pagination_panel(number_of_columns, options[:hide_csv_button]) do
|
268
265
|
pagination_panel_content_html =
|
@@ -274,7 +271,7 @@ module Wice
|
|
274
271
|
title_row_attrs = header_tr_html.clone
|
275
272
|
Wice::WgHash.add_or_append_class_value!(title_row_attrs, 'wice-grid-title-row', true)
|
276
273
|
|
277
|
-
grid.output_buffer <<
|
274
|
+
grid.output_buffer << %(<tr #{public_tag_options(title_row_attrs, true)}>)
|
278
275
|
|
279
276
|
filter_row_id = grid.name + '_filter_row'
|
280
277
|
|
@@ -287,7 +284,6 @@ module Wice
|
|
287
284
|
end
|
288
285
|
|
289
286
|
rendering.each_column_aware_of_one_last_one(:in_html) do |column, last|
|
290
|
-
|
291
287
|
column_name = column.name
|
292
288
|
|
293
289
|
opts = column.html
|
@@ -296,23 +292,43 @@ module Wice
|
|
296
292
|
|
297
293
|
Wice::WgHash.add_or_append_class_value!(opts, column.css_class)
|
298
294
|
|
299
|
-
|
300
295
|
if column.attribute && column.ordering
|
301
296
|
|
302
297
|
column.add_css_class('active-filter') if grid.filtered_by?(column)
|
303
298
|
|
304
299
|
direction = 'asc'
|
305
300
|
link_style = nil
|
301
|
+
arrow_class = nil
|
302
|
+
|
306
303
|
if grid.ordered_by?(column)
|
307
304
|
column.add_css_class('sorted')
|
308
305
|
Wice::WgHash.add_or_append_class_value!(opts, 'sorted')
|
309
306
|
link_style = grid.order_direction
|
310
|
-
|
307
|
+
|
308
|
+
case grid.order_direction
|
309
|
+
when 'asc'
|
310
|
+
direction = 'desc'
|
311
|
+
arrow_class = 'down'
|
312
|
+
when 'desc'
|
313
|
+
direction = 'asc'
|
314
|
+
arrow_class = 'up'
|
315
|
+
end
|
311
316
|
end
|
312
317
|
|
313
318
|
col_link = link_to(
|
314
|
-
column_name
|
315
|
-
|
319
|
+
(column_name +
|
320
|
+
if arrow_class
|
321
|
+
' ' + content_tag(:i, '', class: "fa fa-arrow-#{arrow_class}")
|
322
|
+
else
|
323
|
+
''
|
324
|
+
end).html_safe,
|
325
|
+
|
326
|
+
rendering.column_link(
|
327
|
+
column,
|
328
|
+
direction,
|
329
|
+
params,
|
330
|
+
options[:extra_request_parameters]
|
331
|
+
),
|
316
332
|
class: link_style)
|
317
333
|
|
318
334
|
grid.output_buffer << content_tag(:th, col_link, opts)
|
@@ -320,7 +336,7 @@ module Wice
|
|
320
336
|
else
|
321
337
|
if reuse_last_column_for_filter_buttons && last
|
322
338
|
grid.output_buffer << content_tag(:th,
|
323
|
-
|
339
|
+
hide_show_icon(filter_row_id, grid, filter_shown, no_filter_row, options[:show_filters], rendering), opts
|
324
340
|
)
|
325
341
|
else
|
326
342
|
grid.output_buffer << content_tag(:th, column_name, opts)
|
@@ -329,13 +345,12 @@ module Wice
|
|
329
345
|
end
|
330
346
|
|
331
347
|
grid.output_buffer << content_tag(:th,
|
332
|
-
|
348
|
+
hide_show_icon(filter_row_id, grid, filter_shown, no_filter_row, options[:show_filters], rendering)
|
333
349
|
) unless no_rightmost_column
|
334
350
|
|
335
351
|
grid.output_buffer << '</tr>'
|
336
352
|
# rendering first row end
|
337
353
|
|
338
|
-
|
339
354
|
unless no_filters_at_all # there are filters, we don't know where, in the table or detached
|
340
355
|
if no_filter_row # they are all detached
|
341
356
|
rendering.each_column(:in_html) do |column|
|
@@ -351,12 +366,11 @@ module Wice
|
|
351
366
|
Wice::WgHash.add_or_append_class_value!(filter_row_attrs, 'wg-filter-row', true)
|
352
367
|
filter_row_attrs['id'] = filter_row_id
|
353
368
|
|
354
|
-
grid.output_buffer <<
|
369
|
+
grid.output_buffer << %(<tr #{public_tag_options(filter_row_attrs, true)} )
|
355
370
|
grid.output_buffer << 'style="display:none"' unless filter_shown
|
356
371
|
grid.output_buffer << '>'
|
357
372
|
|
358
373
|
rendering.each_column_aware_of_one_last_one(:in_html) do |column, last|
|
359
|
-
|
360
374
|
opts = column.html ? column.html.clone : {}
|
361
375
|
Wice::WgHash.add_or_append_class_value!(opts, column.css_class)
|
362
376
|
|
@@ -372,8 +386,8 @@ module Wice
|
|
372
386
|
else
|
373
387
|
if reuse_last_column_for_filter_buttons && last
|
374
388
|
grid.output_buffer << content_tag(:th,
|
375
|
-
|
376
|
-
|
389
|
+
reset_submit_buttons(options, grid, rendering),
|
390
|
+
Wice::WgHash.add_or_append_class_value!(opts, 'filter_icons')
|
377
391
|
)
|
378
392
|
else
|
379
393
|
grid.output_buffer << content_tag(:th, '', opts)
|
@@ -381,13 +395,12 @@ module Wice
|
|
381
395
|
end
|
382
396
|
end
|
383
397
|
unless no_rightmost_column
|
384
|
-
grid.output_buffer << content_tag(:th, reset_submit_buttons(options, grid, rendering), class: 'filter_icons'
|
398
|
+
grid.output_buffer << content_tag(:th, reset_submit_buttons(options, grid, rendering), class: 'filter_icons')
|
385
399
|
end
|
386
400
|
grid.output_buffer << '</tr>'
|
387
401
|
end
|
388
402
|
end
|
389
403
|
|
390
|
-
|
391
404
|
grid.output_buffer << '</thead><tfoot>'
|
392
405
|
grid.output_buffer << rendering.pagination_panel(number_of_columns, options[:hide_csv_button]) do
|
393
406
|
if pagination_panel_content_html
|
@@ -401,36 +414,28 @@ module Wice
|
|
401
414
|
|
402
415
|
grid.output_buffer << '</tfoot><tbody>'
|
403
416
|
|
404
|
-
|
405
417
|
# rendering rows
|
406
418
|
cell_value_of_the_ordered_column = nil
|
407
419
|
previous_cell_value_of_the_ordered_column = nil
|
408
420
|
|
409
421
|
grid.each do |ar| # rows
|
410
|
-
|
411
422
|
before_row_output = if rendering.before_row_handler
|
412
423
|
call_block(rendering.before_row_handler, ar, number_of_columns_for_extra_rows)
|
413
|
-
else
|
414
|
-
nil
|
415
424
|
end
|
416
425
|
|
417
426
|
after_row_output = if rendering.after_row_handler
|
418
427
|
call_block(rendering.after_row_handler, ar, number_of_columns_for_extra_rows)
|
419
|
-
else
|
420
|
-
nil
|
421
428
|
end
|
422
429
|
|
423
430
|
replace_row_output = if rendering.replace_row_handler
|
424
431
|
call_block(rendering.replace_row_handler, ar, number_of_columns_for_extra_rows)
|
425
|
-
else
|
426
|
-
nil
|
427
432
|
end
|
428
433
|
|
429
434
|
row_content = if replace_row_output
|
430
435
|
no_rightmost_column = true
|
431
436
|
replace_row_output
|
432
437
|
else
|
433
|
-
row_content, tmp_cell_value_of_the_ordered_column = get_row_content(rendering,ar,sorting_dependant_row_cycling)
|
438
|
+
row_content, tmp_cell_value_of_the_ordered_column = get_row_content(rendering, ar, sorting_dependant_row_cycling)
|
434
439
|
cell_value_of_the_ordered_column = tmp_cell_value_of_the_ordered_column if tmp_cell_value_of_the_ordered_column
|
435
440
|
row_content
|
436
441
|
end
|
@@ -447,7 +452,7 @@ module Wice
|
|
447
452
|
Wice::WgHash.add_or_append_class_value!(row_attributes, cycle_class)
|
448
453
|
|
449
454
|
grid.output_buffer << before_row_output if before_row_output
|
450
|
-
grid.output_buffer << "<tr #{
|
455
|
+
grid.output_buffer << "<tr #{public_tag_options(row_attributes)}>#{row_content}"
|
451
456
|
grid.output_buffer << content_tag(:td, '') unless no_rightmost_column
|
452
457
|
grid.output_buffer << '</tr>'
|
453
458
|
grid.output_buffer << after_row_output if after_row_output
|
@@ -455,8 +460,6 @@ module Wice
|
|
455
460
|
|
456
461
|
last_row_output = if rendering.last_row_handler
|
457
462
|
call_block(rendering.last_row_handler, number_of_columns_for_extra_rows)
|
458
|
-
else
|
459
|
-
nil
|
460
463
|
end
|
461
464
|
|
462
465
|
grid.output_buffer << last_row_output if last_row_output
|
@@ -467,18 +470,24 @@ module Wice
|
|
467
470
|
|
468
471
|
link_for_export = rendering.link_for_export(controller, 'csv', options[:extra_request_parameters])
|
469
472
|
|
470
|
-
parameter_name_for_query_loading = {grid.name => {q: ''}}.to_query
|
471
|
-
parameter_name_for_focus = {grid.name => {foc: ''}}.to_query
|
473
|
+
parameter_name_for_query_loading = { grid.name => { q: '' } }.to_query
|
474
|
+
parameter_name_for_focus = { grid.name => { foc: '' } }.to_query
|
472
475
|
|
473
|
-
processor_initializer_arguments = [
|
474
|
-
|
476
|
+
processor_initializer_arguments = [
|
477
|
+
base_link_for_filter,
|
478
|
+
base_link_for_show_all_records,
|
479
|
+
link_for_export,
|
480
|
+
parameter_name_for_query_loading,
|
481
|
+
parameter_name_for_focus,
|
482
|
+
Rails.env
|
483
|
+
]
|
475
484
|
|
476
485
|
filter_declarations = if no_filters_at_all
|
477
486
|
[]
|
478
487
|
else
|
479
488
|
rendering.select_for(:in_html) do |vc|
|
480
489
|
vc.attribute && vc.filter
|
481
|
-
end.collect
|
490
|
+
end.collect(&:yield_declaration)
|
482
491
|
end
|
483
492
|
|
484
493
|
wg_data = {
|
@@ -493,95 +502,92 @@ module Wice
|
|
493
502
|
|
494
503
|
grid.output_buffer << '</div>'
|
495
504
|
|
496
|
-
|
497
|
-
|
498
505
|
if Rails.env.development?
|
499
|
-
grid.output_buffer
|
506
|
+
grid.output_buffer << javascript_tag(%/ $(document).ready(function(){ \n/ +
|
500
507
|
%$ if (typeof(WiceGridProcessor) == "undefined"){\n$ +
|
501
508
|
%$ alert("wice_grid.js not loaded, WiceGrid cannot proceed!\\n" +\n$ +
|
502
|
-
|
503
|
-
|
509
|
+
%( "Make sure that you have loaded wice_grid.js.\n" +
|
510
|
+
) +
|
511
|
+
%( "Add line\n//= require wice_grid.js\n" +
|
512
|
+
) +
|
504
513
|
%$ "to app/assets/javascripts/application.js")\n$ +
|
505
|
-
|
514
|
+
%( }
|
515
|
+
) +
|
506
516
|
%$ }) $)
|
507
517
|
end
|
508
518
|
|
509
519
|
grid.output_buffer
|
510
520
|
end
|
511
521
|
|
512
|
-
def hide_show_icon(
|
513
|
-
grid_name = grid.name
|
522
|
+
def hide_show_icon(_filter_row_id, _grid, filter_shown, no_filter_row, show_filters, _rendering) #:nodoc:
|
514
523
|
no_filter_opening_closing_icon = (show_filters == :always) || no_filter_row
|
515
524
|
|
516
|
-
styles = [
|
525
|
+
styles = ['display: block;', 'display: none;']
|
517
526
|
styles.reverse! unless filter_shown
|
518
527
|
|
519
|
-
|
520
528
|
if no_filter_opening_closing_icon
|
521
|
-
|
529
|
+
''
|
522
530
|
else
|
523
531
|
|
524
|
-
content_tag(:div, '',
|
525
|
-
|
526
|
-
|
527
|
-
|
532
|
+
content_tag(:div, content_tag(:i, '', class: 'fa fa-eye-slash'),
|
533
|
+
title: NlMessage['hide_filter_tooltip'],
|
534
|
+
style: styles[0],
|
535
|
+
class: 'clickable wg-hide-filter'
|
528
536
|
) +
|
529
537
|
|
530
|
-
|
531
|
-
|
532
|
-
|
533
|
-
|
534
|
-
|
538
|
+
content_tag(:div, content_tag(:i, '', class: 'fa fa-eye'),
|
539
|
+
title: NlMessage['show_filter_tooltip'],
|
540
|
+
style: styles[1],
|
541
|
+
class: 'clickable wg-show-filter'
|
542
|
+
)
|
535
543
|
|
536
544
|
end
|
537
545
|
end
|
538
546
|
|
539
|
-
def reset_submit_buttons(options, grid,
|
547
|
+
def reset_submit_buttons(options, grid, _rendering) #:nodoc:
|
540
548
|
if options[:hide_submit_button]
|
541
549
|
''
|
542
550
|
else
|
543
|
-
content_tag(:div, '',
|
544
|
-
|
545
|
-
|
546
|
-
|
551
|
+
content_tag(:div, content_tag(:i, '', class: 'fa fa-filter'),
|
552
|
+
title: NlMessage['filter_tooltip'],
|
553
|
+
id: grid.name + '_submit_grid_icon',
|
554
|
+
class: 'submit clickable'
|
547
555
|
)
|
548
556
|
end.html_safe + ' ' +
|
549
|
-
|
550
|
-
|
551
|
-
|
557
|
+
if options[:hide_reset_button]
|
558
|
+
''
|
559
|
+
else
|
552
560
|
|
553
|
-
|
554
|
-
|
555
|
-
|
556
|
-
|
557
|
-
|
558
|
-
|
561
|
+
content_tag(:div, content_tag(:i, '', class: 'fa fa-table'),
|
562
|
+
title: NlMessage['reset_filter_tooltip'],
|
563
|
+
id: grid.name + '_reset_grid_icon',
|
564
|
+
class: 'reset clickable'
|
565
|
+
)
|
566
|
+
end.html_safe
|
559
567
|
end
|
560
568
|
|
561
569
|
# Renders a detached filter. The parameters are:
|
562
570
|
# * +grid+ the WiceGrid object
|
563
571
|
# * +filter_key+ an identifier of the filter specified in the column declaration by parameter +:detach_with_id+
|
564
572
|
def grid_filter(grid, filter_key)
|
565
|
-
unless grid.
|
566
|
-
|
573
|
+
unless grid.is_a? WiceGrid
|
574
|
+
fail WiceGridArgumentError.new('grid_filter: the parameter must be a WiceGrid instance.')
|
567
575
|
end
|
568
576
|
if grid.output_buffer.nil?
|
569
|
-
|
577
|
+
fail WiceGridArgumentError.new("grid_filter: You have attempted to run 'grid_filter' before 'grid'. Read about detached filters in the documentation.")
|
570
578
|
end
|
571
579
|
if grid.output_buffer == true
|
572
|
-
|
573
|
-
|
580
|
+
fail WiceGridArgumentError.new('grid_filter: You have defined no detached filters, or you try use detached filters with' \
|
581
|
+
':show_filters => :no (set :show_filters to :always in this case). Read about detached filters in the documentation.')
|
574
582
|
end
|
575
583
|
|
576
584
|
content_tag :span,
|
577
|
-
|
578
|
-
|
579
|
-
|
585
|
+
grid.output_buffer.filter_for(filter_key),
|
586
|
+
class: "wg-detached-filter #{grid.name}_detached_filter",
|
587
|
+
'data-grid-name' => grid.name
|
580
588
|
end
|
581
589
|
|
582
|
-
|
583
590
|
def grid_csv(grid, rendering) #:nodoc:
|
584
|
-
|
585
591
|
spreadsheet = ::Wice::Spreadsheet.new(grid.name, grid.csv_field_separator)
|
586
592
|
|
587
593
|
# columns
|
@@ -596,8 +602,8 @@ module Wice
|
|
596
602
|
|
597
603
|
column_block_output = call_block(cell_block, ar)
|
598
604
|
|
599
|
-
if column_block_output.
|
600
|
-
column_block_output,
|
605
|
+
if column_block_output.is_a?(Array)
|
606
|
+
column_block_output, _additional_opts = column_block_output
|
601
607
|
end
|
602
608
|
|
603
609
|
row << column_block_output
|
@@ -616,27 +622,25 @@ module Wice
|
|
616
622
|
html = pagination_info(grid, allow_showing_all_records)
|
617
623
|
|
618
624
|
paginate(grid.resultset,
|
619
|
-
|
620
|
-
|
621
|
-
|
622
|
-
|
623
|
-
|
625
|
+
theme: 'wice_grid',
|
626
|
+
param_name: "#{grid.name}[page]",
|
627
|
+
params: extra_request_parameters,
|
628
|
+
inner_window: 4,
|
629
|
+
outer_window: 2
|
624
630
|
) +
|
625
631
|
(' <div class="pagination_status">' + html + '</div>').html_safe
|
626
632
|
end
|
627
633
|
|
628
|
-
|
629
|
-
def show_all_link(collection_total_entries, parameters, grid_name) #:nodoc:
|
630
|
-
|
634
|
+
def show_all_link(collection_total_entries, parameters, _grid_name) #:nodoc:
|
631
635
|
message = NlMessage['all_queries_warning']
|
632
636
|
confirmation = collection_total_entries > Defaults::START_SHOWING_WARNING_FROM ? message : nil
|
633
637
|
|
634
638
|
html = content_tag(:a, NlMessage['show_all_records_label'],
|
635
|
-
|
636
|
-
|
637
|
-
|
638
|
-
|
639
|
-
|
639
|
+
href: '#',
|
640
|
+
title: NlMessage['show_all_records_tooltip'],
|
641
|
+
class: 'wg-show-all-link',
|
642
|
+
'data-grid-state' => parameters.to_json,
|
643
|
+
'data-confim-message' => confirmation
|
640
644
|
)
|
641
645
|
|
642
646
|
[html, '']
|
@@ -644,25 +648,22 @@ module Wice
|
|
644
648
|
|
645
649
|
def back_to_pagination_link(parameters, grid_name) #:nodoc:
|
646
650
|
pagination_override_parameter_name = "#{grid_name}[pp]"
|
647
|
-
parameters = parameters.reject{|k,
|
651
|
+
parameters = parameters.reject { |k, _v| k == pagination_override_parameter_name }
|
648
652
|
|
649
653
|
content_tag(:a, NlMessage['switch_back_to_paginated_mode_label'],
|
650
|
-
|
651
|
-
|
652
|
-
|
653
|
-
|
654
|
+
href: '#',
|
655
|
+
title: NlMessage['switch_back_to_paginated_mode_tooltip'],
|
656
|
+
class: 'wg-back-to-pagination-link',
|
657
|
+
'data-grid-state' => parameters.to_json
|
654
658
|
)
|
655
659
|
end
|
656
660
|
|
657
661
|
def pagination_info(grid, allow_showing_all_records) #:nodoc:
|
658
|
-
|
659
662
|
collection = grid.resultset
|
660
663
|
|
661
664
|
if grid.all_record_mode?
|
662
665
|
|
663
666
|
collection_total_entries = collection.length
|
664
|
-
current_page = 1
|
665
|
-
per_page = collection_total_entries
|
666
667
|
|
667
668
|
first = 1
|
668
669
|
last = collection.size
|
@@ -681,8 +682,6 @@ module Wice
|
|
681
682
|
|
682
683
|
else
|
683
684
|
collection_total_entries = collection.total_count
|
684
|
-
current_page = grid.ar_options[:page].to_i
|
685
|
-
per_page = grid.ar_options[:per_page].to_i
|
686
685
|
|
687
686
|
first = collection.offset_value + 1
|
688
687
|
last = collection.last_page? ? collection.total_count : collection.offset_value + collection.limit_value
|
@@ -692,8 +691,7 @@ module Wice
|
|
692
691
|
|
693
692
|
parameters = grid.get_state_as_parameter_value_pairs
|
694
693
|
|
695
|
-
|
696
|
-
html = if (num_pages < 2 && collection.length == 0)
|
694
|
+
if num_pages < 2 && collection.length == 0
|
697
695
|
'0'
|
698
696
|
else
|
699
697
|
parameters << ["#{grid.name}[pp]", collection_total_entries]
|
@@ -706,18 +704,17 @@ module Wice
|
|
706
704
|
|
707
705
|
"#{first}-#{last} / #{collection_total_entries} " +
|
708
706
|
if show_all_records_link
|
709
|
-
res,
|
707
|
+
res, _js = show_all_link(collection_total_entries, parameters, grid.name)
|
710
708
|
res
|
711
709
|
else
|
712
710
|
''
|
713
711
|
end
|
714
712
|
end +
|
715
|
-
|
716
|
-
|
717
|
-
|
718
|
-
|
719
|
-
|
713
|
+
if grid.all_record_mode?
|
714
|
+
back_to_pagination_link(parameters, grid.name)
|
715
|
+
else
|
716
|
+
''
|
717
|
+
end
|
720
718
|
end
|
721
|
-
|
722
719
|
end
|
723
720
|
end
|