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.
Files changed (82) hide show
  1. data/CHANGELOG +24 -2
  2. data/README.rdoc +282 -316
  3. data/RELEASE_NOTES_3.2.pre1.rdoc +82 -0
  4. data/Rakefile +4 -2
  5. data/SAVED_QUERIES_HOWTO.rdoc +18 -31
  6. data/VERSION +1 -1
  7. data/lib/generators/wice_grid/add_migration_for_serialized_queries_generator.rb +22 -0
  8. data/lib/generators/wice_grid/install_generator.rb +20 -0
  9. data/lib/generators/wice_grid/templates/create_wice_grid_serialized_queries.rb +13 -0
  10. data/lib/generators/wice_grid/templates/wice_grid.css.scss +139 -0
  11. data/lib/generators/wice_grid/templates/wice_grid.yml +113 -19
  12. data/lib/generators/wice_grid/templates/wice_grid_config.rb +17 -41
  13. data/lib/grid_output_buffer.rb +3 -2
  14. data/lib/grid_renderer.rb +63 -102
  15. data/lib/helpers/js_calendar_helpers.rb +27 -157
  16. data/lib/helpers/wice_grid_misc_view_helpers.rb +1 -66
  17. data/lib/helpers/wice_grid_serialized_queries_view_helpers.rb +41 -32
  18. data/lib/helpers/wice_grid_view_helpers.rb +138 -274
  19. data/lib/table_column_matrix.rb +11 -11
  20. data/lib/view_columns.rb +41 -350
  21. data/lib/view_columns/action_view_column.rb +45 -0
  22. data/lib/view_columns/column_processor_index.rb +16 -0
  23. data/lib/view_columns/view_column_boolean.rb +23 -0
  24. data/lib/view_columns/view_column_custom_dropdown.rb +81 -0
  25. data/lib/view_columns/view_column_date.rb +17 -0
  26. data/lib/view_columns/view_column_datetime.rb +85 -0
  27. data/lib/view_columns/view_column_float.rb +7 -0
  28. data/lib/view_columns/view_column_integer.rb +38 -0
  29. data/lib/view_columns/view_column_string.rb +63 -0
  30. data/lib/wice_grid.rb +23 -26
  31. data/lib/wice_grid_controller.rb +14 -15
  32. data/lib/wice_grid_misc.rb +3 -3
  33. data/lib/wice_grid_serialized_queries_controller.rb +15 -18
  34. data/lib/wice_grid_spreadsheet.rb +2 -2
  35. data/lib/will_paginate_paginator.rb +31 -0
  36. data/test/readme.txt +1 -0
  37. data/{lib/generators/wice_grid/templates/icons → vendor/assets/images/icons/grid}/arrow_down.gif +0 -0
  38. data/{lib/generators/wice_grid/templates/icons → vendor/assets/images/icons/grid}/arrow_up.gif +0 -0
  39. data/{lib/generators/wice_grid/templates/icons → vendor/assets/images/icons/grid}/calendar_view_month.png +0 -0
  40. data/vendor/assets/images/icons/grid/collapse.gif +0 -0
  41. data/{lib/generators/wice_grid/templates/icons → vendor/assets/images/icons/grid}/delete.png +0 -0
  42. data/vendor/assets/images/icons/grid/expand.gif +0 -0
  43. data/{lib/generators/wice_grid/templates/icons → vendor/assets/images/icons/grid}/page_white_excel.png +0 -0
  44. data/{lib/generators/wice_grid/templates/icons → vendor/assets/images/icons/grid}/page_white_find.png +0 -0
  45. data/{lib/generators/wice_grid/templates/icons → vendor/assets/images/icons/grid}/table.png +0 -0
  46. data/{lib/generators/wice_grid/templates/icons → vendor/assets/images/icons/grid}/table_refresh.png +0 -0
  47. data/{lib/generators/wice_grid/templates/icons → vendor/assets/images/icons/grid}/tick_all.png +0 -0
  48. data/{lib/generators/wice_grid/templates/icons → vendor/assets/images/icons/grid}/untick_all.png +0 -0
  49. data/vendor/assets/javascripts/wice_grid.js +3 -0
  50. data/vendor/assets/javascripts/wice_grid_init.js.coffee +247 -0
  51. data/vendor/assets/javascripts/wice_grid_processor.js.coffee +128 -0
  52. data/vendor/assets/javascripts/wice_grid_saved_queries_init.js.coffee +103 -0
  53. data/wice_grid.gemspec +44 -50
  54. metadata +68 -94
  55. data/lib/generators/wice_grid/templates/calendarview.css +0 -107
  56. data/lib/generators/wice_grid/templates/calendarview.js +0 -1168
  57. data/lib/generators/wice_grid/templates/icons/expand.png +0 -0
  58. data/lib/generators/wice_grid/templates/wice_grid.css +0 -173
  59. data/lib/generators/wice_grid/templates/wice_grid_jquery.js +0 -162
  60. data/lib/generators/wice_grid/templates/wice_grid_prototype.js +0 -154
  61. data/lib/generators/wice_grid/wice_grid_assets_jquery_generator.rb +0 -32
  62. data/lib/generators/wice_grid/wice_grid_assets_prototype_generator.rb +0 -34
  63. data/lib/js_adaptors/jquery_adaptor.rb +0 -157
  64. data/lib/js_adaptors/js_adaptor.rb +0 -12
  65. data/lib/js_adaptors/prototype_adaptor.rb +0 -179
  66. data/lib/tasks/wice_grid_tasks.rake +0 -28
  67. data/lib/views/create.rjs +0 -13
  68. data/lib/views/create_jq.rjs +0 -31
  69. data/lib/views/delete.rjs +0 -12
  70. data/lib/views/delete_jq.rjs +0 -26
  71. data/test/.gitignore +0 -2
  72. data/test/database.yml +0 -21
  73. data/test/schema.rb +0 -33
  74. data/test/test_helper.rb +0 -89
  75. data/test/views/projects_and_people_grid.html.erb +0 -12
  76. data/test/views/projects_and_people_grid_invalid.html.erb +0 -12
  77. data/test/views/simple_projects_grid.html.erb +0 -9
  78. data/test/wice_grid_core_ext_test.rb +0 -183
  79. data/test/wice_grid_functional_test.rb +0 -68
  80. data/test/wice_grid_misc_test.rb +0 -41
  81. data/test/wice_grid_test.rb +0 -42
  82. data/test/wice_grid_view_helper_test.rb +0 -12
@@ -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>, <tt>:name</tt>, and <tt>:erb_mode</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>:attribute_name</tt> and <tt>:model_class</tt> - should be the same as <tt>:attribute_name</tt> and
138
- # <tt>:model_class</tt> of the column declaration with the target custom filter.
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
- :attribute_name => nil,
143
- :model_class => nil,
141
+ :attribute => nil,
142
+ :model => nil,
144
143
  :value => nil}
145
144
  options.merge!(opts)
146
145
 
147
- [:attribute_name, :value].each do |key|
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[:model_class]
152
- unless options[:model_class].nil?
153
- options[:model_class] = options[:model_class].constantize if options[:model_class].is_a? String
154
- raise Wice::WiceGridArgumentError.new("Option :model_class can be either a class or a string instance") unless options[:model_class].is_a? Class
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[:model_class].table_name + '.' + options[:attribute_name]
155
+ options[:model].table_name + '.' + options[:attribute]
157
156
  else
158
- options[:attribute_name]
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 MissingFile, "Cannot read file #{path}" unless File.file?(path) and File.readable?(path)
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]
@@ -71,11 +71,11 @@ module Wice
71
71
  end
72
72
 
73
73
 
74
- module WiceGridNlMessageProvider #:nodoc:
74
+ module NlMessage #:nodoc:
75
75
  class << self
76
76
 
77
- def get_message(key) #:nodoc:
78
- translated = I18n.t(key.to_s.downcase, :scope => 'wice_grid')
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 = WiceGridNlMessageProvider.get_message(:QUERY_DELETED_MESSAGE)
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
- template_name = if Wice::ConfigurationProvider.value_for(:JS_FRAMEWORK) == :prototype
37
- 'delete'
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 = WiceGridNlMessageProvider.get_message(:QUERY_SAVED_MESSAGE)
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
- template_name = if Wice::ConfigurationProvider.value_for(:JS_FRAMEWORK) == :prototype
64
- 'create'
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 == '1.9.1' || RUBY_VERSION == '1.9.2'
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
@@ -0,0 +1,3 @@
1
+ //= require wice_grid_processor
2
+ //= require wice_grid_init
3
+ //= require wice_grid_saved_queries_init
@@ -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