wice_grid 3.0.4 → 3.2.0.pre1
Sign up to get free protection for your applications and to get access to all the features.
- data/CHANGELOG +24 -2
- data/README.rdoc +282 -316
- data/RELEASE_NOTES_3.2.pre1.rdoc +82 -0
- data/Rakefile +4 -2
- data/SAVED_QUERIES_HOWTO.rdoc +18 -31
- data/VERSION +1 -1
- data/lib/generators/wice_grid/add_migration_for_serialized_queries_generator.rb +22 -0
- data/lib/generators/wice_grid/install_generator.rb +20 -0
- data/lib/generators/wice_grid/templates/create_wice_grid_serialized_queries.rb +13 -0
- data/lib/generators/wice_grid/templates/wice_grid.css.scss +139 -0
- data/lib/generators/wice_grid/templates/wice_grid.yml +113 -19
- data/lib/generators/wice_grid/templates/wice_grid_config.rb +17 -41
- data/lib/grid_output_buffer.rb +3 -2
- data/lib/grid_renderer.rb +63 -102
- data/lib/helpers/js_calendar_helpers.rb +27 -157
- data/lib/helpers/wice_grid_misc_view_helpers.rb +1 -66
- data/lib/helpers/wice_grid_serialized_queries_view_helpers.rb +41 -32
- data/lib/helpers/wice_grid_view_helpers.rb +138 -274
- data/lib/table_column_matrix.rb +11 -11
- data/lib/view_columns.rb +41 -350
- data/lib/view_columns/action_view_column.rb +45 -0
- data/lib/view_columns/column_processor_index.rb +16 -0
- data/lib/view_columns/view_column_boolean.rb +23 -0
- data/lib/view_columns/view_column_custom_dropdown.rb +81 -0
- data/lib/view_columns/view_column_date.rb +17 -0
- data/lib/view_columns/view_column_datetime.rb +85 -0
- data/lib/view_columns/view_column_float.rb +7 -0
- data/lib/view_columns/view_column_integer.rb +38 -0
- data/lib/view_columns/view_column_string.rb +63 -0
- data/lib/wice_grid.rb +23 -26
- data/lib/wice_grid_controller.rb +14 -15
- data/lib/wice_grid_misc.rb +3 -3
- data/lib/wice_grid_serialized_queries_controller.rb +15 -18
- data/lib/wice_grid_spreadsheet.rb +2 -2
- data/lib/will_paginate_paginator.rb +31 -0
- data/test/readme.txt +1 -0
- data/{lib/generators/wice_grid/templates/icons → vendor/assets/images/icons/grid}/arrow_down.gif +0 -0
- data/{lib/generators/wice_grid/templates/icons → vendor/assets/images/icons/grid}/arrow_up.gif +0 -0
- data/{lib/generators/wice_grid/templates/icons → vendor/assets/images/icons/grid}/calendar_view_month.png +0 -0
- data/vendor/assets/images/icons/grid/collapse.gif +0 -0
- data/{lib/generators/wice_grid/templates/icons → vendor/assets/images/icons/grid}/delete.png +0 -0
- data/vendor/assets/images/icons/grid/expand.gif +0 -0
- data/{lib/generators/wice_grid/templates/icons → vendor/assets/images/icons/grid}/page_white_excel.png +0 -0
- data/{lib/generators/wice_grid/templates/icons → vendor/assets/images/icons/grid}/page_white_find.png +0 -0
- data/{lib/generators/wice_grid/templates/icons → vendor/assets/images/icons/grid}/table.png +0 -0
- data/{lib/generators/wice_grid/templates/icons → vendor/assets/images/icons/grid}/table_refresh.png +0 -0
- data/{lib/generators/wice_grid/templates/icons → vendor/assets/images/icons/grid}/tick_all.png +0 -0
- data/{lib/generators/wice_grid/templates/icons → vendor/assets/images/icons/grid}/untick_all.png +0 -0
- data/vendor/assets/javascripts/wice_grid.js +3 -0
- data/vendor/assets/javascripts/wice_grid_init.js.coffee +247 -0
- data/vendor/assets/javascripts/wice_grid_processor.js.coffee +128 -0
- data/vendor/assets/javascripts/wice_grid_saved_queries_init.js.coffee +103 -0
- data/wice_grid.gemspec +44 -50
- metadata +68 -94
- data/lib/generators/wice_grid/templates/calendarview.css +0 -107
- data/lib/generators/wice_grid/templates/calendarview.js +0 -1168
- data/lib/generators/wice_grid/templates/icons/expand.png +0 -0
- data/lib/generators/wice_grid/templates/wice_grid.css +0 -173
- data/lib/generators/wice_grid/templates/wice_grid_jquery.js +0 -162
- data/lib/generators/wice_grid/templates/wice_grid_prototype.js +0 -154
- data/lib/generators/wice_grid/wice_grid_assets_jquery_generator.rb +0 -32
- data/lib/generators/wice_grid/wice_grid_assets_prototype_generator.rb +0 -34
- data/lib/js_adaptors/jquery_adaptor.rb +0 -157
- data/lib/js_adaptors/js_adaptor.rb +0 -12
- data/lib/js_adaptors/prototype_adaptor.rb +0 -179
- data/lib/tasks/wice_grid_tasks.rake +0 -28
- data/lib/views/create.rjs +0 -13
- data/lib/views/create_jq.rjs +0 -31
- data/lib/views/delete.rjs +0 -12
- data/lib/views/delete_jq.rjs +0 -26
- data/test/.gitignore +0 -2
- data/test/database.yml +0 -21
- data/test/schema.rb +0 -33
- data/test/test_helper.rb +0 -89
- data/test/views/projects_and_people_grid.html.erb +0 -12
- data/test/views/projects_and_people_grid_invalid.html.erb +0 -12
- data/test/views/simple_projects_grid.html.erb +0 -9
- data/test/wice_grid_core_ext_test.rb +0 -183
- data/test/wice_grid_functional_test.rb +0 -68
- data/test/wice_grid_misc_test.rb +0 -41
- data/test/wice_grid_test.rb +0 -42
- data/test/wice_grid_view_helper_test.rb +0 -12
data/lib/wice_grid_controller.rb
CHANGED
@@ -40,6 +40,7 @@ module Wice
|
|
40
40
|
# HTTP parametes, DOM IDs, etc. The shorter the name, the shorter the GET request is. The name can only contain alphanumeruc characters.
|
41
41
|
# * <tt>:enable_export_to_csv</tt> - <Enable export of the table to CSV. Read the How-To to learn what else is needed to enable CSV export.
|
42
42
|
# * <tt>:csv_file_name</tt> - Name of the exported CSV file. If the parameter is missing, the name of the grid will be used instead.
|
43
|
+
# * <tt>:csv_field_separator</tt> - field separator for CSV files. The default is defined in +CSV_FIELD_SEPARATOR+ in the config file.
|
43
44
|
# * <tt>:custom_order</tt> - used for overriding the ORDER BY clause with custom sql code (for example, including a function).
|
44
45
|
# The value of the parameter is a hash where keys are fully qualified names
|
45
46
|
# of database columns, and values the required chunks of SQL to use in the ORDER BY clause, either as strings or Proc object
|
@@ -60,14 +61,12 @@ module Wice
|
|
60
61
|
# all pages with the current filters. Can be a lambda object or a controller method name (symbol). The argument to
|
61
62
|
# the callback is a lambda object which returns the list of records when called. See the README for the explanation.
|
62
63
|
#
|
63
|
-
# Defaults for parameters <tt>:per_page</tt>, <tt>:order_direction</tt>,
|
64
|
+
# Defaults for parameters <tt>:per_page</tt>, <tt>:order_direction</tt>, and <tt>:name</tt>
|
64
65
|
# can be changed in <tt>lib/wice_grid_config.rb</tt>, this is convenient if you want to set a project wide setting
|
65
66
|
# without having to repeat it for every grid instance.
|
66
67
|
|
67
68
|
|
68
69
|
def initialize_grid(klass, opts = {})
|
69
|
-
Wice::JsAdaptor.init
|
70
|
-
@__wice_grid_on_page = true
|
71
70
|
wg = WiceGrid.new(klass, self, opts)
|
72
71
|
self.wice_grid_instances = [] if self.wice_grid_instances.nil?
|
73
72
|
self.wice_grid_instances << wg
|
@@ -134,28 +133,28 @@ module Wice
|
|
134
133
|
# * <tt>:grid_name</tt> - The name of the grid. Just like parameter <tt>:name</tt> of
|
135
134
|
# <tt>initialize_grid</tt>, the parameter is optional, and when absent, the name
|
136
135
|
# <tt>'grid'</tt> is assumed
|
137
|
-
# * <tt>:
|
138
|
-
# <tt>:
|
136
|
+
# * <tt>:attribute</tt> and <tt>:model</tt> - should be the same as <tt>:attribute</tt> and
|
137
|
+
# <tt>:model</tt> of the column declaration with the target custom filter.
|
139
138
|
# * <tt>:value</tt> - the value of the column filter.
|
140
139
|
def wice_grid_custom_filter_params(opts = {})
|
141
140
|
options = {:grid_name => 'grid',
|
142
|
-
:
|
143
|
-
:
|
141
|
+
:attribute => nil,
|
142
|
+
:model => nil,
|
144
143
|
:value => nil}
|
145
144
|
options.merge!(opts)
|
146
145
|
|
147
|
-
[:
|
146
|
+
[:attribute, :value].each do |key|
|
148
147
|
raise ::Wice::WiceGridArgumentError.new("wice_grid_custom_filter_params: :#{key} is a mandatory argument") unless options[key]
|
149
148
|
end
|
150
149
|
|
151
|
-
attr_name = if options[:
|
152
|
-
unless options[:
|
153
|
-
options[:
|
154
|
-
raise Wice::WiceGridArgumentError.new("Option :
|
150
|
+
attr_name = if options[:model]
|
151
|
+
unless options[:model].nil?
|
152
|
+
options[:model] = options[:model].constantize if options[:model].is_a? String
|
153
|
+
raise Wice::WiceGridArgumentError.new("Option :model can be either a class or a string instance") unless options[:model].is_a? Class
|
155
154
|
end
|
156
|
-
options[:
|
155
|
+
options[:model].table_name + '.' + options[:attribute]
|
157
156
|
else
|
158
|
-
options[:
|
157
|
+
options[:attribute]
|
159
158
|
end
|
160
159
|
|
161
160
|
{"#{options[:grid_name]}[f][#{attr_name}][]" => options[:value]}
|
@@ -165,7 +164,7 @@ module Wice
|
|
165
164
|
|
166
165
|
|
167
166
|
def send_file_rails2(path, options = {}) #:doc:
|
168
|
-
raise
|
167
|
+
raise "Cannot read file #{path}" unless File.file?(path) and File.readable?(path)
|
169
168
|
|
170
169
|
options[:length] ||= File.size(path)
|
171
170
|
options[:filename] ||= File.basename(path) unless options[:url_based_filename]
|
data/lib/wice_grid_misc.rb
CHANGED
@@ -71,11 +71,11 @@ module Wice
|
|
71
71
|
end
|
72
72
|
|
73
73
|
|
74
|
-
module
|
74
|
+
module NlMessage #:nodoc:
|
75
75
|
class << self
|
76
76
|
|
77
|
-
def
|
78
|
-
translated = I18n.t(key
|
77
|
+
def [](key) #:nodoc:
|
78
|
+
translated = I18n.t(key, :scope => 'wice_grid')
|
79
79
|
end
|
80
80
|
|
81
81
|
end
|
@@ -28,17 +28,13 @@ module Wice
|
|
28
28
|
if params[:current]
|
29
29
|
@current = @query_store_model.find_by_id_and_grid_name(params[:current], @grid_name)
|
30
30
|
end
|
31
|
-
@notification_messages =
|
31
|
+
@notification_messages = NlMessage['query_deleted_message']
|
32
32
|
else
|
33
33
|
@error_messages = sq.errors.full_raw_messages.join(' ')
|
34
34
|
end
|
35
35
|
end
|
36
|
-
|
37
|
-
|
38
|
-
else
|
39
|
-
'delete_jq'
|
40
|
-
end
|
41
|
-
render :file => "#{Pathname.new(__FILE__).dirname}/views/#{template_name}.rjs"
|
36
|
+
|
37
|
+
render_asyns_result
|
42
38
|
end
|
43
39
|
|
44
40
|
def create #:nodoc:
|
@@ -56,16 +52,12 @@ module Wice
|
|
56
52
|
|
57
53
|
if @saved_query.save
|
58
54
|
@grid_title_id = "#{@grid_name}_title"
|
59
|
-
@notification_messages =
|
55
|
+
@notification_messages = NlMessage['query_saved_message']
|
60
56
|
else
|
61
57
|
@error_messages = @saved_query.errors.map{ |_, msg| msg }.join(' ')
|
62
58
|
end
|
63
|
-
|
64
|
-
|
65
|
-
else
|
66
|
-
'create_jq'
|
67
|
-
end
|
68
|
-
render :file => "#{Pathname.new(__FILE__).dirname}/views/#{template_name}.rjs"
|
59
|
+
|
60
|
+
render_asyns_result
|
69
61
|
end
|
70
62
|
|
71
63
|
def extra
|
@@ -74,13 +66,18 @@ module Wice
|
|
74
66
|
|
75
67
|
protected
|
76
68
|
|
69
|
+
def render_asyns_result
|
70
|
+
render :json => {
|
71
|
+
'error_messages' => @error_messages,
|
72
|
+
'notification_messages' => @notification_messages,
|
73
|
+
'query_list' => render_to_string(:inline => '<%=saved_queries_list(@grid_name, @saved_query, controller.extra, @confirm).html_safe%>')
|
74
|
+
}
|
75
|
+
end
|
76
|
+
|
77
77
|
def init #:nodoc:
|
78
78
|
@query_store_model = ::Wice::get_query_store_model
|
79
|
-
|
79
|
+
@confirm = params[:confirm] == '1' || params[:confirm] == 'true'
|
80
80
|
@grid_name = params[:grid_name]
|
81
|
-
@notification_messages_dom_id = "#{@grid_name}_notification_messages"
|
82
|
-
@query_list_dom_id = "#{@grid_name}_query_list"
|
83
|
-
|
84
81
|
end
|
85
82
|
end
|
86
83
|
end
|
@@ -6,7 +6,7 @@ module Wice
|
|
6
6
|
|
7
7
|
attr_reader :tempfile
|
8
8
|
# CSV in 1.9.1 is a version of FasterCSV
|
9
|
-
if RUBY_VERSION
|
9
|
+
if RUBY_VERSION =~ /1\.9\./
|
10
10
|
|
11
11
|
def initialize(name, field_separator) #:nodoc:
|
12
12
|
@tempfile = Tempfile.new(name)
|
@@ -16,7 +16,7 @@ module Wice
|
|
16
16
|
def << (row) #:nodoc:
|
17
17
|
@csv << row
|
18
18
|
end
|
19
|
-
|
19
|
+
|
20
20
|
else
|
21
21
|
def initialize(name, field_separator) #:nodoc:
|
22
22
|
@tempfile = Tempfile.new(name)
|
@@ -0,0 +1,31 @@
|
|
1
|
+
module Wice
|
2
|
+
class WillPaginatePaginator < ::WillPaginate::ActionView::LinkRenderer
|
3
|
+
def html_container(html)
|
4
|
+
tag(:div,
|
5
|
+
tag(:ul, html),
|
6
|
+
container_attributes
|
7
|
+
)
|
8
|
+
end
|
9
|
+
|
10
|
+
def page_number(page)
|
11
|
+
if page == current_page
|
12
|
+
tag(:li, link(page, page, :rel => rel_value(page)), :class => 'active')
|
13
|
+
else
|
14
|
+
tag(:li, link(page, page, :rel => rel_value(page)))
|
15
|
+
end
|
16
|
+
end
|
17
|
+
|
18
|
+
def previous_or_next_page(page, text, classname)
|
19
|
+
if page
|
20
|
+
tag(:li, link(text, page))
|
21
|
+
else
|
22
|
+
tag(:li, link(text, page), :class => 'disabled')
|
23
|
+
end
|
24
|
+
end
|
25
|
+
|
26
|
+
def gap
|
27
|
+
'<li class="disabled"><a href="#">...</a></li>'
|
28
|
+
end
|
29
|
+
|
30
|
+
end
|
31
|
+
end
|
data/test/readme.txt
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
all tests are (temporarily) in a separate application: https://github.com/leikind/wice_grid_testbed
|
data/{lib/generators/wice_grid/templates/icons → vendor/assets/images/icons/grid}/arrow_down.gif
RENAMED
File without changes
|
data/{lib/generators/wice_grid/templates/icons → vendor/assets/images/icons/grid}/arrow_up.gif
RENAMED
File without changes
|
File without changes
|
Binary file
|
data/{lib/generators/wice_grid/templates/icons → vendor/assets/images/icons/grid}/delete.png
RENAMED
File without changes
|
Binary file
|
File without changes
|
File without changes
|
File without changes
|
data/{lib/generators/wice_grid/templates/icons → vendor/assets/images/icons/grid}/table_refresh.png
RENAMED
File without changes
|
data/{lib/generators/wice_grid/templates/icons → vendor/assets/images/icons/grid}/tick_all.png
RENAMED
File without changes
|
data/{lib/generators/wice_grid/templates/icons → vendor/assets/images/icons/grid}/untick_all.png
RENAMED
File without changes
|
@@ -0,0 +1,247 @@
|
|
1
|
+
jQuery ->
|
2
|
+
initWiceGrid()
|
3
|
+
|
4
|
+
initWiceGrid = ->
|
5
|
+
|
6
|
+
$(".wice-grid-container").each (index, wiceGridContainer) ->
|
7
|
+
|
8
|
+
gridName = wiceGridContainer.id
|
9
|
+
dataDiv = $(".wg-data", wiceGridContainer)
|
10
|
+
|
11
|
+
processorInitializerArguments = dataDiv.data("processor-initializer-arguments")
|
12
|
+
|
13
|
+
filterDeclarations = dataDiv.data("filter-declarations")
|
14
|
+
|
15
|
+
focusElementIfNeeded dataDiv.data("foc")
|
16
|
+
|
17
|
+
gridProcessor = new WiceGridProcessor(gridName,
|
18
|
+
processorInitializerArguments[0], processorInitializerArguments[1],
|
19
|
+
processorInitializerArguments[2], processorInitializerArguments[3],
|
20
|
+
processorInitializerArguments[4], processorInitializerArguments[5])
|
21
|
+
|
22
|
+
for filterDeclaration in filterDeclarations
|
23
|
+
do (filterDeclaration) ->
|
24
|
+
gridProcessor.register
|
25
|
+
filterName : filterDeclaration.filterName
|
26
|
+
detached : filterDeclaration.detached
|
27
|
+
templates : filterDeclaration.declaration.templates
|
28
|
+
ids : filterDeclaration.declaration.ids
|
29
|
+
|
30
|
+
window[gridName] = gridProcessor
|
31
|
+
|
32
|
+
setupDatepicker()
|
33
|
+
setupSubmitReset wiceGridContainer, gridProcessor
|
34
|
+
setupCsvExport wiceGridContainer, gridProcessor
|
35
|
+
setupHidingShowingOfFilterRow wiceGridContainer
|
36
|
+
setupShowingAllRecords wiceGridContainer, gridProcessor
|
37
|
+
setupMultiSelectToggle wiceGridContainer
|
38
|
+
setupAutoreloadsForInternalFilters wiceGridContainer, gridProcessor
|
39
|
+
setupBulkToggleForActionColumn wiceGridContainer
|
40
|
+
|
41
|
+
setupAutoreloadsForExternalFilters()
|
42
|
+
setupExternalSubmitReset()
|
43
|
+
setupExternalCsvExport()
|
44
|
+
|
45
|
+
# datepicker logic
|
46
|
+
setupDatepicker = ->
|
47
|
+
# check if datepicker is loaded
|
48
|
+
if $('.wice-grid-container input.check-for-datepicker[type=hidden], .wg-detached-filter input.check-for-datepicker[type=hidden]').length != 0
|
49
|
+
unless $.datepicker
|
50
|
+
alert """Seems like you do not have jQuery datepicker (http://jqueryui.com/demos/datepicker/)
|
51
|
+
installed. Either install it or set Wice::Defaults::HELPER_STYLE to :standard in
|
52
|
+
wice_grid_config.rb in order to use standard Rails date helpers
|
53
|
+
"""
|
54
|
+
|
55
|
+
# setting up the locale for datepicker
|
56
|
+
if locale = $('.wice-grid-container input[type=hidden], .wg-detached-filter input[type=hidden]').data('locale')
|
57
|
+
$.datepicker.setDefaults($.datepicker.regional[locale]);
|
58
|
+
|
59
|
+
|
60
|
+
$('.wice-grid-container .date-label, .wg-detached-filter .date-label').each (index, removeLink) ->
|
61
|
+
datepickerHiddenField = $('#' + $(removeLink).data('dom-id'))
|
62
|
+
|
63
|
+
eventToTriggerOnChange = datepickerHiddenField.data('close-calendar-event-name')
|
64
|
+
|
65
|
+
# setting up the remove link for datepicker
|
66
|
+
$(removeLink).click (event) ->
|
67
|
+
$(this).html('')
|
68
|
+
datepickerHiddenField.val('')
|
69
|
+
if eventToTriggerOnChange
|
70
|
+
datepickerHiddenField.trigger(eventToTriggerOnChange)
|
71
|
+
event.preventDefault()
|
72
|
+
false
|
73
|
+
that = this
|
74
|
+
|
75
|
+
# datepicker constructor
|
76
|
+
datepickerHiddenField.datepicker
|
77
|
+
firstDay: 1
|
78
|
+
showOn: "button"
|
79
|
+
dateFormat: datepickerHiddenField.data('date-format')
|
80
|
+
buttonImage: datepickerHiddenField.data('button-image')
|
81
|
+
buttonImageOnly: true
|
82
|
+
buttonText: datepickerHiddenField.data('button-text')
|
83
|
+
changeMonth: true
|
84
|
+
changeYear: true
|
85
|
+
onSelect: (dateText, inst) ->
|
86
|
+
$(that).html(dateText)
|
87
|
+
if eventToTriggerOnChange
|
88
|
+
datepickerHiddenField.trigger(eventToTriggerOnChange)
|
89
|
+
|
90
|
+
|
91
|
+
|
92
|
+
# hiding and showing the row with filters
|
93
|
+
setupHidingShowingOfFilterRow = (wiceGridContainer) ->
|
94
|
+
hideFilter = '.wg-hide-filter'
|
95
|
+
showFilter = '.wg-show-filter'
|
96
|
+
filterRow = '.wg-filter-row'
|
97
|
+
|
98
|
+
$(hideFilter, wiceGridContainer).click ->
|
99
|
+
$(this).hide()
|
100
|
+
$(showFilter, wiceGridContainer).show()
|
101
|
+
$(filterRow, wiceGridContainer).hide()
|
102
|
+
|
103
|
+
$(showFilter, wiceGridContainer).click ->
|
104
|
+
$(this).hide()
|
105
|
+
$(hideFilter, wiceGridContainer).show()
|
106
|
+
$(filterRow, wiceGridContainer).show()
|
107
|
+
|
108
|
+
|
109
|
+
setupCsvExport = (wiceGridContainer, gridProcessor) ->
|
110
|
+
$('.export-to-csv-button', wiceGridContainer).click ->
|
111
|
+
gridProcessor.exportToCsv()
|
112
|
+
|
113
|
+
|
114
|
+
# trigger submit/reset from within the grid
|
115
|
+
setupSubmitReset = (wiceGridContainer, gridProcessor) ->
|
116
|
+
$('.submit', wiceGridContainer).click ->
|
117
|
+
gridProcessor.process()
|
118
|
+
|
119
|
+
$('.reset', wiceGridContainer).click ->
|
120
|
+
gridProcessor.reset()
|
121
|
+
|
122
|
+
$('.wg-filter-row input[type=text]', wiceGridContainer).keydown (event) ->
|
123
|
+
if event.keyCode == 13
|
124
|
+
event.preventDefault()
|
125
|
+
gridProcessor.process()
|
126
|
+
|
127
|
+
|
128
|
+
focusElementIfNeeded = (focusId) ->
|
129
|
+
elements = $('#' + focusId)
|
130
|
+
if elToFocus = elements[0]
|
131
|
+
elToFocus.value = elToFocus.value
|
132
|
+
elToFocus.focus()
|
133
|
+
|
134
|
+
|
135
|
+
# autoreload for internal filters
|
136
|
+
setupAutoreloadsForInternalFilters = (wiceGridContainer, gridProcessor) ->
|
137
|
+
$('select.auto-reload', wiceGridContainer).change ->
|
138
|
+
gridProcessor.process()
|
139
|
+
|
140
|
+
$('input.auto-reload', wiceGridContainer).keyup ->
|
141
|
+
gridProcessor.setProcessTimer(this.id)
|
142
|
+
|
143
|
+
$('input.negation-checkbox.auto-reload', wiceGridContainer).click ->
|
144
|
+
gridProcessor.process()
|
145
|
+
|
146
|
+
$(document).bind 'wg:calendarChanged_' + gridProcessor.name, ->
|
147
|
+
gridProcessor.process()
|
148
|
+
|
149
|
+
# autoreload for internal filters
|
150
|
+
setupAutoreloadsForExternalFilters = ->
|
151
|
+
|
152
|
+
$('.wg-detached-filter').each (index, detachedFilterContainer) ->
|
153
|
+
gridProcessor = getGridProcessorForElement(detachedFilterContainer)
|
154
|
+
if gridProcessor
|
155
|
+
$('select.auto-reload', detachedFilterContainer).change ->
|
156
|
+
gridProcessor.process()
|
157
|
+
|
158
|
+
$('input.auto-reload', detachedFilterContainer).keyup ->
|
159
|
+
gridProcessor.setProcessTimer(this.id)
|
160
|
+
|
161
|
+
$('input.negation-checkbox.auto-reload', detachedFilterContainer).click ->
|
162
|
+
gridProcessor.process()
|
163
|
+
|
164
|
+
|
165
|
+
# trigger the all records mode
|
166
|
+
setupShowingAllRecords = (wiceGridContainer, gridProcessor) ->
|
167
|
+
$('.wg-show-all-link, .wg-back-to-pagination-link', wiceGridContainer).click (event) ->
|
168
|
+
event.preventDefault()
|
169
|
+
gridState = $(this).data("grid-state")
|
170
|
+
confirmationMessage = $(this).data("confim-message")
|
171
|
+
reloadGrid = ->
|
172
|
+
gridProcessor.reloadPageForGivenGridState gridState
|
173
|
+
if confirmationMessage
|
174
|
+
if confirm(confirmationMessage)
|
175
|
+
reloadGrid()
|
176
|
+
else
|
177
|
+
reloadGrid()
|
178
|
+
|
179
|
+
# dropdown filter multiselect
|
180
|
+
setupMultiSelectToggle = (wiceGridContainer)->
|
181
|
+
$('.expand-multi-select-icon', wiceGridContainer).click ->
|
182
|
+
$(this).prev().each (index, select) ->
|
183
|
+
select.multiple = true
|
184
|
+
$(this).next().show()
|
185
|
+
$(this).hide()
|
186
|
+
|
187
|
+
$('.collapse-multi-select-icon', wiceGridContainer).click ->
|
188
|
+
$(this).prev().prev().each (index, select) ->
|
189
|
+
select.multiple = false
|
190
|
+
$(this).prev().show()
|
191
|
+
$(this).hide()
|
192
|
+
|
193
|
+
|
194
|
+
setupBulkToggleForActionColumn = (wiceGridContainer) ->
|
195
|
+
$('.select-all', wiceGridContainer).click ->
|
196
|
+
$('.sel input', wiceGridContainer).prop('checked', true)
|
197
|
+
|
198
|
+
$('.deselect-all', wiceGridContainer).click ->
|
199
|
+
$('.sel input', wiceGridContainer).prop('checked', false)
|
200
|
+
|
201
|
+
|
202
|
+
getGridProcessorForElement = (element) ->
|
203
|
+
gridName = $(element).data('grid-name')
|
204
|
+
if gridName
|
205
|
+
window[gridName]
|
206
|
+
else
|
207
|
+
null
|
208
|
+
|
209
|
+
|
210
|
+
setupExternalCsvExport = ->
|
211
|
+
|
212
|
+
$(".wg-external-csv-export-button").each (index, externalCsvExportButton) ->
|
213
|
+
gridProcessor = getGridProcessorForElement(externalCsvExportButton)
|
214
|
+
if gridProcessor
|
215
|
+
$(externalCsvExportButton).click (event) ->
|
216
|
+
gridProcessor.exportToCsv()
|
217
|
+
|
218
|
+
|
219
|
+
setupExternalSubmitReset = ->
|
220
|
+
|
221
|
+
$(".wg-external-submit-button").each (index, externalSubmitButton) ->
|
222
|
+
gridProcessor = getGridProcessorForElement(externalSubmitButton)
|
223
|
+
if gridProcessor
|
224
|
+
$(externalSubmitButton).click (event) ->
|
225
|
+
gridProcessor.process()
|
226
|
+
event.preventDefault()
|
227
|
+
false
|
228
|
+
|
229
|
+
$(".wg-external-reset-button").each (index, externalResetButton) ->
|
230
|
+
gridProcessor = getGridProcessorForElement(externalResetButton)
|
231
|
+
if gridProcessor
|
232
|
+
$(externalResetButton).click (event) ->
|
233
|
+
gridProcessor.reset()
|
234
|
+
event.preventDefault()
|
235
|
+
false
|
236
|
+
|
237
|
+
|
238
|
+
$('.wg-detached-filter').each (index, detachedFilterContainer) ->
|
239
|
+
gridProcessor = getGridProcessorForElement(detachedFilterContainer)
|
240
|
+
if gridProcessor
|
241
|
+
$('input[type=text]', this).keydown (event) ->
|
242
|
+
if event.keyCode == 13
|
243
|
+
gridProcessor.process()
|
244
|
+
event.preventDefault()
|
245
|
+
false
|
246
|
+
|
247
|
+
window['getGridProcessorForElement'] = getGridProcessorForElement
|