wice_grid 3.0.0.pre2 → 3.0.0.pre3
Sign up to get free protection for your applications and to get access to all the features.
- data/README.rdoc +12 -3
- data/VERSION +1 -1
- data/lib/generators/wice_grid/templates/wice_grid.yml +132 -3
- data/lib/generators/wice_grid/templates/wice_grid_config.rb +5 -0
- data/lib/grid_renderer.rb +11 -1
- data/lib/helpers/js_calendar_helpers.rb +19 -18
- data/lib/helpers/wice_grid_misc_view_helpers.rb +1 -1
- data/lib/helpers/wice_grid_view_helpers.rb +14 -1
- data/lib/js_adaptors/jquery_adaptor.rb +14 -2
- data/lib/js_adaptors/js_adaptor.rb +1 -1
- data/lib/js_adaptors/prototype_adaptor.rb +15 -4
- data/lib/view_columns.rb +11 -11
- data/lib/wice_grid.rb +8 -4
- data/lib/wice_grid_misc.rb +18 -4
- data/lib/wice_grid_serialized_queries_controller.rb +2 -2
- data/wice_grid.gemspec +2 -2
- metadata +4 -4
data/README.rdoc
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
= WiceGrid
|
2
2
|
|
3
|
-
Version:: 3.0.0.
|
3
|
+
Version:: 3.0.0.pre3
|
4
4
|
Author:: Yuri Leikind
|
5
5
|
Homepage:: http://leikind.org/pages/wicegrid
|
6
6
|
Examples online:: http://grid.leikind.org
|
@@ -691,7 +691,7 @@ WiceGrid icons are in directory <tt>public/images/icons/grid/</tt>.
|
|
691
691
|
|
692
692
|
=== Adding rows to the grid
|
693
693
|
|
694
|
-
It is possible to add your own handcrafted HTML after and/or before each grid row. This works similar to +row_attributes+, by adding blocks +after_row+
|
694
|
+
It is possible to add your own handcrafted HTML after and/or before each grid row. This works similar to +row_attributes+, by adding blocks +after_row+, +before_row+, and +last_row+:
|
695
695
|
|
696
696
|
<%= grid(@tasks_grid) do |g|
|
697
697
|
g.before_row do |task|
|
@@ -702,12 +702,21 @@ It is possible to add your own handcrafted HTML after and/or before each grid ro
|
|
702
702
|
nil
|
703
703
|
end
|
704
704
|
end
|
705
|
+
|
706
|
+
g.last_row do # This row will always be added to the bottom of the grid
|
707
|
+
content_tag(:tr,
|
708
|
+
content_tag(:td,
|
709
|
+
'Last row',
|
710
|
+
:colspan => 10),
|
711
|
+
:class => 'last_row')
|
712
|
+
end
|
713
|
+
|
705
714
|
.......
|
706
715
|
end %>
|
707
716
|
|
708
717
|
It is up for the developer to return the correct HTML code, or return +nil+ if no row is needed for this record. Naturally, there is only one +before_row+ definition and one +after_row+ definition for a WiceGrid instance.
|
709
718
|
|
710
|
-
A real life example might be some enterprisy
|
719
|
+
A real life example might be some enterprisy tables inside a table.
|
711
720
|
|
712
721
|
=== Rendering a grid without records
|
713
722
|
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
3.0.0.
|
1
|
+
3.0.0.pre3
|
@@ -274,6 +274,135 @@ pt:
|
|
274
274
|
validates_presence_error: Queira indicar o nome da query que deseja gravar
|
275
275
|
query_deleted_message: A query foi apagada.
|
276
276
|
query_saved_message: A query foi gravada.
|
277
|
-
|
278
|
-
|
279
|
-
|
277
|
+
select_all: Selecionar todos
|
278
|
+
deselect_all: Remover seleção
|
279
|
+
|
280
|
+
pt-BR:
|
281
|
+
date:
|
282
|
+
order:
|
283
|
+
- :year
|
284
|
+
- :month
|
285
|
+
- :day
|
286
|
+
wice_grid:
|
287
|
+
show_filter_tooltip: Mostrar o filtro
|
288
|
+
hide_filter_tooltip: Esconder o filtro
|
289
|
+
csv_export_tooltip: Exportar em CSV
|
290
|
+
filter_tooltip: Filtrar
|
291
|
+
reset_filter_tooltip: Reinicializar
|
292
|
+
boolean_filter_true_label: sim
|
293
|
+
boolean_filter_false_label: não
|
294
|
+
previous_label: « Anterior
|
295
|
+
next_label: Próximo »
|
296
|
+
date_selector_tooltip_from: De
|
297
|
+
date_selector_tooltip_to: a
|
298
|
+
negation_checkbox_title: Excluir
|
299
|
+
show_all_records_label: Ver todos
|
300
|
+
show_all_records_tooltip: Ver todos os registos
|
301
|
+
all_queries_warning: Tem certeza que gostaria de visualizar todos os registos?
|
302
|
+
switch_back_to_paginated_mode_label: Voltar à lista paginada
|
303
|
+
switch_back_to_paginated_mode_tooltip: Voltar à lista por página
|
304
|
+
date_string_tooltip: Clique para apagar
|
305
|
+
saved_query_panel_title: Filtros gravados
|
306
|
+
save_query_button_label: Gravar o estado dos filtros
|
307
|
+
saved_query_deletion_confirmation: Tem certeza?
|
308
|
+
saved_query_deletion_link_title: Apagar o filtro
|
309
|
+
saved_query_link_title: Carregar o filtro
|
310
|
+
validates_uniqueness_error: Já existe um filtro com o mesmo nome
|
311
|
+
validates_presence_error: Indique o nome do filtro que deseja gravar
|
312
|
+
query_deleted_message: O filtro foi apagado.
|
313
|
+
query_saved_message: O filtro foi gravado.
|
314
|
+
select_all: Selecionar todos
|
315
|
+
deselect_all: Remover seleção
|
316
|
+
|
317
|
+
|
318
|
+
sk:
|
319
|
+
date:
|
320
|
+
order:
|
321
|
+
- :year
|
322
|
+
- :month
|
323
|
+
- :day
|
324
|
+
wice_grid:
|
325
|
+
show_filter_tooltip: Zobraziť filter
|
326
|
+
hide_filter_tooltip: Skryť filter
|
327
|
+
csv_export_tooltip: Exportovať do CSV
|
328
|
+
filter_tooltip: Filter
|
329
|
+
reset_filter_tooltip: Zrušiť filtre
|
330
|
+
boolean_filter_true_label: "áno"
|
331
|
+
boolean_filter_false_label: "nie"
|
332
|
+
previous_label: « Predchádzajúci
|
333
|
+
next_label: Následujúci »
|
334
|
+
# Title of the icon clicking on which will show the calendar to set the FROM date.
|
335
|
+
date_selector_tooltip_from: Dátum od
|
336
|
+
# Title of the icon clicking on which will show the calendar to set the TO date.
|
337
|
+
date_selector_tooltip_to: Dátum do
|
338
|
+
# The title of the checkox to turn on negation
|
339
|
+
negation_checkbox_title: Inverzný výber
|
340
|
+
# link to switch to show all records
|
341
|
+
show_all_records_label: Zobraziť všetko
|
342
|
+
# tooltip for the link to switch to show all records
|
343
|
+
show_all_records_tooltip: Zobrazí všetky záznamy v databáze
|
344
|
+
# Warning message shown when the user wants to switch to all-records mode
|
345
|
+
all_queries_warning: Určite chceš zobraziť všetky záznamy v databáze?
|
346
|
+
# link to paginated view
|
347
|
+
switch_back_to_paginated_mode_label: späť na stránkové zobrazenie
|
348
|
+
# tooltip for the link to paginated view
|
349
|
+
switch_back_to_paginated_mode_tooltip: Prepnúť do stránkového zobrazenia
|
350
|
+
# Title of the date string.
|
351
|
+
date_string_tooltip: Kliknutím zmažeš
|
352
|
+
saved_query_panel_title: Uložené filtre/výsledky
|
353
|
+
save_query_button_label: Uložiť stav filtrov
|
354
|
+
saved_query_deletion_confirmation: Si si istý?
|
355
|
+
saved_query_deletion_link_title: Vymazať uložený filter
|
356
|
+
saved_query_link_title: Nahrať uložený filter
|
357
|
+
validates_uniqueness_error: Filter s uvedeným názvom už existuje.
|
358
|
+
validates_presence_error: Prosím zadaj názov uloženého filtra.
|
359
|
+
query_deleted_message: Uložený filter bol vymazaný.
|
360
|
+
query_saved_message: Filter bol uložený.
|
361
|
+
select_all: Vyber všetko
|
362
|
+
deselect_all: Zrušiť výber
|
363
|
+
|
364
|
+
cz:
|
365
|
+
date:
|
366
|
+
order:
|
367
|
+
- :year
|
368
|
+
- :month
|
369
|
+
- :day
|
370
|
+
wice_grid:
|
371
|
+
show_filter_tooltip: Zobrazit filtr
|
372
|
+
hide_filter_tooltip: Skrýt filtr
|
373
|
+
csv_export_tooltip: Exportovat do CSV
|
374
|
+
filter_tooltip: Filtr
|
375
|
+
reset_filter_tooltip: Zrušit filtr
|
376
|
+
boolean_filter_true_label: "áno"
|
377
|
+
boolean_filter_false_label: "ne"
|
378
|
+
previous_label: « Předešlý
|
379
|
+
next_label: Následující »
|
380
|
+
# Title of the icon clicking on which will show the calendar to set the FROM date.
|
381
|
+
date_selector_tooltip_from: Dátum od
|
382
|
+
# Title of the icon clicking on which will show the calendar to set the TO date.
|
383
|
+
date_selector_tooltip_to: Dátum do
|
384
|
+
# The title of the checkox to turn on negation
|
385
|
+
negation_checkbox_title: Inverzní výběr
|
386
|
+
# link to switch to show all records
|
387
|
+
show_all_records_label: Zobrazit všechno
|
388
|
+
# tooltip for the link to switch to show all records
|
389
|
+
show_all_records_tooltip: Zobrazí všechny záznamy v databáze
|
390
|
+
# Warning message shown when the user wants to switch to all-records mode
|
391
|
+
all_queries_warning: Určitě chceš zobrazit všechny záznamy v databáze?
|
392
|
+
# link to paginated view
|
393
|
+
switch_back_to_paginated_mode_label: zpět na stránkové zobrazení
|
394
|
+
# tooltip for the link to paginated view
|
395
|
+
switch_back_to_paginated_mode_tooltip: Přepnout do stránkového zobrazení
|
396
|
+
# Title of the date string.
|
397
|
+
date_string_tooltip: Kliknutím zmažeš
|
398
|
+
saved_query_panel_title: Uložené filtry
|
399
|
+
save_query_button_label: Uložit aktuálni stav filtrů
|
400
|
+
saved_query_deletion_confirmation: Seš si jistej?
|
401
|
+
saved_query_deletion_link_title: Smazat uloženej filtr
|
402
|
+
saved_query_link_title: Použít uloženej filtr
|
403
|
+
validates_uniqueness_error: Filtr už existuje.
|
404
|
+
validates_presence_error: Prosím zadej název filtru.
|
405
|
+
query_deleted_message: Uložený filtr byl smazán.
|
406
|
+
query_saved_message: Filtr byl uložen.
|
407
|
+
select_all: Vyber všechno
|
408
|
+
deselect_all: Zrušit výběr
|
@@ -67,6 +67,11 @@ if defined?(Wice::Defaults)
|
|
67
67
|
# A boolean value specifying if a change in a filter triggers reloading of the grid.
|
68
68
|
Wice::Defaults::AUTO_RELOAD = false
|
69
69
|
|
70
|
+
# If set to an integer (including 0), in integer and float filters the second field will be
|
71
|
+
# dynamically updated when the first field is updated
|
72
|
+
Wice::Defaults::SECOND_RANGE_VALUE_FOLLOWING_THE_FIRST = false
|
73
|
+
# Wice::Defaults::SECOND_RANGE_VALUE_FOLLOWING_THE_FIRST = 1
|
74
|
+
|
70
75
|
|
71
76
|
# SQL operator used for matching strings in string filters.
|
72
77
|
Wice::Defaults::STRING_MATCHING_OPERATOR = 'LIKE'
|
data/lib/grid_renderer.rb
CHANGED
@@ -12,6 +12,7 @@ module Wice
|
|
12
12
|
attr_reader :after_row_handler
|
13
13
|
attr_reader :before_row_handler
|
14
14
|
attr_reader :blank_slate_handler
|
15
|
+
attr_reader :last_row_handler
|
15
16
|
attr_reader :grid
|
16
17
|
attr_accessor :erb_mode
|
17
18
|
|
@@ -407,6 +408,11 @@ module Wice
|
|
407
408
|
@before_row_handler = block
|
408
409
|
end
|
409
410
|
|
411
|
+
# Can be used to add HTML code (calculation results, for example) after all rows.
|
412
|
+
# Nothing is added if the block return +false+ or +nil+.
|
413
|
+
def last_row(&block)
|
414
|
+
@last_row_handler = block
|
415
|
+
end
|
410
416
|
# The output of the block submitted to +blank_slate+ is rendered instead of the whole grid if no filters are active
|
411
417
|
# and there are no records to render.
|
412
418
|
# In addition to the block style two other variants are accepted:
|
@@ -520,6 +526,10 @@ module Wice
|
|
520
526
|
contains_auto_reloading_elements(:has_auto_reloading_calendar?)
|
521
527
|
end
|
522
528
|
|
529
|
+
def contains_range_filters
|
530
|
+
filter_columns(:in_html).detect{|column| column.filter_shown? && column.is_a?(ViewColumnInteger)}
|
531
|
+
end
|
532
|
+
|
523
533
|
protected
|
524
534
|
|
525
535
|
def contains_auto_reloading_elements(what) #:nodoc:
|
@@ -532,4 +542,4 @@ module Wice
|
|
532
542
|
end
|
533
543
|
|
534
544
|
end
|
535
|
-
end
|
545
|
+
end
|
@@ -4,9 +4,9 @@ module Wice #:nodoc:
|
|
4
4
|
# Jquery
|
5
5
|
|
6
6
|
def date_calendar_jquery(initial_date, view, opts = {}, html_opts = {}) #:nodoc:
|
7
|
-
date_format = Wice::
|
7
|
+
date_format = Wice::ConfigurationProvider.value_for(:DATE_FORMAT)
|
8
8
|
|
9
|
-
options, name, date_string, dom_id, datepicker_placeholder_id, date_span_id =
|
9
|
+
options, name, date_string, dom_id, datepicker_placeholder_id, date_span_id, close_calendar_event_name =
|
10
10
|
prepare_data_for_calendar(opts, date_format, initial_date)
|
11
11
|
|
12
12
|
remove_date_function = %! $('##{date_span_id}').html(''); $('##{dom_id}')[0].value = ''; !
|
@@ -23,19 +23,19 @@ module Wice #:nodoc:
|
|
23
23
|
|
24
24
|
html = "<span id=\"#{datepicker_placeholder_id}\">#{date_picker}</span>"
|
25
25
|
|
26
|
-
javascript = calendar_constructor_jquery(dom_id, view, Wice::
|
27
|
-
date_span_id, opts[:fire_event], html_opts[:title], datepicker_placeholder_id)
|
26
|
+
javascript = calendar_constructor_jquery(dom_id, view, Wice::ConfigurationProvider.value_for(:DATE_FORMAT_JQUERY),
|
27
|
+
date_span_id, opts[:fire_event], html_opts[:title], datepicker_placeholder_id, close_calendar_event_name)
|
28
28
|
|
29
29
|
[html, javascript]
|
30
30
|
end
|
31
31
|
|
32
32
|
# Prototype
|
33
33
|
def date_calendar_prototype(initial_date, view, opts = {}, html_opts = {}) #:nodoc:
|
34
|
-
select_date_datetime_common_prototype(initial_date, view, opts, html_opts, false, Wice::
|
34
|
+
select_date_datetime_common_prototype(initial_date, view, opts, html_opts, false, Wice::ConfigurationProvider.value_for(:DATE_FORMAT))
|
35
35
|
end
|
36
36
|
|
37
37
|
def datetime_calendar_prototype(initial_date, view, opts = {}, html_opts = {}) #:nodoc:
|
38
|
-
select_date_datetime_common_prototype(initial_date, view, opts, html_opts, true, Wice::
|
38
|
+
select_date_datetime_common_prototype(initial_date, view, opts, html_opts, true, Wice::ConfigurationProvider.value_for(:DATETIME_FORMAT))
|
39
39
|
end
|
40
40
|
|
41
41
|
protected
|
@@ -50,19 +50,20 @@ module Wice #:nodoc:
|
|
50
50
|
dom_id = options[:id] || name.gsub(/([\[\(])|(\]\[)/, '_').gsub(/[\]\)]/, '').gsub(/\./, '_').gsub(/_+/, '_')
|
51
51
|
datepicker_placeholder_id = dom_id + '_date_placeholder'
|
52
52
|
date_span_id = dom_id + '_date_view'
|
53
|
-
|
54
|
-
return options, name, date_string, dom_id, datepicker_placeholder_id, date_span_id
|
53
|
+
close_calendar_event_name = "wg:calendarChanged_#{opts[:grid_name]}"
|
54
|
+
return options, name, date_string, dom_id, datepicker_placeholder_id, date_span_id, close_calendar_event_name
|
55
55
|
end
|
56
56
|
|
57
57
|
# jquery
|
58
58
|
|
59
|
-
def calendar_constructor_jquery(dom_id, view, date_format, date_span_id, fireEvent, title,
|
59
|
+
def calendar_constructor_jquery(dom_id, view, date_format, date_span_id, fireEvent, title,
|
60
|
+
datepicker_placeholder_id, close_calendar_event_name)
|
60
61
|
|
61
62
|
javascript = %| $( "##{dom_id}" ).datepicker({\n|
|
62
63
|
javascript << %| firstDay: 1,\n|
|
63
64
|
javascript << %| showOn: "button",\n|
|
64
65
|
javascript << %| dateFormat: "#{date_format}",\n|
|
65
|
-
javascript << %| buttonImage: "#{
|
66
|
+
javascript << %| buttonImage: "#{Wice::ConfigurationProvider.value_for(:CALENDAR_ICON)}",\n|
|
66
67
|
javascript << %| buttonImageOnly: true,\n|
|
67
68
|
javascript << %| buttonText: "#{title}",\n|
|
68
69
|
javascript << %| changeMonth: true,\n|
|
@@ -70,7 +71,7 @@ module Wice #:nodoc:
|
|
70
71
|
javascript << %| onSelect: function(dateText, inst) {\n|
|
71
72
|
javascript << %| $("##{date_span_id}").html(dateText);\n|
|
72
73
|
if fireEvent
|
73
|
-
javascript << %| $("##{dom_id}").trigger('
|
74
|
+
javascript << %| $("##{dom_id}").trigger('#{close_calendar_event_name}');\n|
|
74
75
|
end
|
75
76
|
javascript << %| }\n|
|
76
77
|
javascript << %| });\n|
|
@@ -116,7 +117,7 @@ module Wice #:nodoc:
|
|
116
117
|
# prortotype
|
117
118
|
|
118
119
|
def calendar_constructor_prototype(popup_trigger_icon_id, view, dom_id, date_format,
|
119
|
-
date_span_id, with_time, fireEvent)
|
120
|
+
date_span_id, with_time, fireEvent, close_calendar_event_name)
|
120
121
|
javascript = ''
|
121
122
|
|
122
123
|
unless view.respond_to? :wg_calendar_lang_set
|
@@ -132,11 +133,11 @@ module Wice #:nodoc:
|
|
132
133
|
javascript << %| popupTriggerElement : "#{popup_trigger_icon_id}",\n |
|
133
134
|
javascript << %| initialDate : $('#{dom_id}').value,\n |
|
134
135
|
if fireEvent
|
135
|
-
javascript << %| onHideCallback : function(){Event.fire($(#{dom_id}), '
|
136
|
+
javascript << %| onHideCallback : function(){Event.fire($(#{dom_id}), '#{close_calendar_event_name}')},\n |
|
136
137
|
end
|
137
138
|
javascript << %| dateFormat : "#{date_format}",\n|
|
138
|
-
unless Wice::
|
139
|
-
javascript << %| popupPositioningStrategy : "#{Wice::
|
139
|
+
unless Wice::ConfigurationProvider.value_for(:POPUP_PLACEMENT_STRATEGY) == :trigger
|
140
|
+
javascript << %| popupPositioningStrategy : "#{Wice::ConfigurationProvider.value_for(:POPUP_PLACEMENT_STRATEGY)}",\n|
|
140
141
|
end
|
141
142
|
if with_time
|
142
143
|
javascript << %| withTime : true,\n|
|
@@ -149,14 +150,14 @@ module Wice #:nodoc:
|
|
149
150
|
|
150
151
|
def select_date_datetime_common_prototype(initial_date, view, opts, html_opts, with_time, date_format) #:nodoc:
|
151
152
|
|
152
|
-
options, name, date_string, dom_id, datepicker_placeholder_id, date_span_id =
|
153
|
+
options, name, date_string, dom_id, datepicker_placeholder_id, date_span_id, close_calendar_event_name =
|
153
154
|
prepare_data_for_calendar(opts, date_format, initial_date)
|
154
155
|
|
155
156
|
popup_trigger_icon_id = dom_id + '_trigger'
|
156
157
|
|
157
158
|
function = %! $('#{date_span_id}').innerHTML = ''; $('#{dom_id}').value = ''; !
|
158
159
|
if opts[:fire_event]
|
159
|
-
function += "Event.fire($(#{dom_id}), '
|
160
|
+
function += "Event.fire($(#{dom_id}), '#{close_calendar_event_name}')"
|
160
161
|
end
|
161
162
|
|
162
163
|
date_picker = image_tag(Defaults::CALENDAR_ICON,
|
@@ -174,7 +175,7 @@ module Wice #:nodoc:
|
|
174
175
|
|
175
176
|
html = "<span id=\"#{datepicker_placeholder_id}\">#{date_picker}</span>"
|
176
177
|
|
177
|
-
javascript = calendar_constructor_prototype(popup_trigger_icon_id, view, dom_id, date_format, date_span_id, with_time, opts[:fire_event])
|
178
|
+
javascript = calendar_constructor_prototype(popup_trigger_icon_id, view, dom_id, date_format, date_span_id, with_time, opts[:fire_event], close_calendar_event_name)
|
178
179
|
|
179
180
|
[html, javascript]
|
180
181
|
end
|
@@ -13,7 +13,7 @@ module Wice
|
|
13
13
|
end
|
14
14
|
|
15
15
|
grid.get_state_as_parameter_value_pairs(true).collect{|param_name, value|
|
16
|
-
hidden_field_tag(param_name, value)
|
16
|
+
hidden_field_tag(param_name, value, :id => "hidden-#{param_name.gsub(/[\[\]]/, '-')}")
|
17
17
|
}.join("\n").html_safe_if_necessary
|
18
18
|
end
|
19
19
|
|
@@ -475,6 +475,14 @@ module Wice
|
|
475
475
|
content << after_row_output if after_row_output
|
476
476
|
end
|
477
477
|
|
478
|
+
last_row_output = if rendering.last_row_handler
|
479
|
+
call_block_as_erb_or_ruby(rendering, rendering.last_row_handler, nil)
|
480
|
+
else
|
481
|
+
nil
|
482
|
+
end
|
483
|
+
|
484
|
+
content << last_row_output if last_row_output
|
485
|
+
|
478
486
|
content << '</tbody></table></div>'
|
479
487
|
|
480
488
|
base_link_for_filter, base_link_for_show_all_records = rendering.base_link_for_filter(controller, options[:extra_request_parameters])
|
@@ -538,6 +546,11 @@ module Wice
|
|
538
546
|
cached_javascript << JsAdaptor.focus_element(rendering.element_to_focus)
|
539
547
|
end
|
540
548
|
|
549
|
+
if Wice::ConfigurationProvider.value_for(:SECOND_RANGE_VALUE_FOLLOWING_THE_FIRST) && rendering.contains_range_filters
|
550
|
+
cached_javascript << JsAdaptor.update_ranges(grid.name)
|
551
|
+
end
|
552
|
+
|
553
|
+
|
541
554
|
content << javascript_tag(
|
542
555
|
JsAdaptor.dom_loaded +
|
543
556
|
%/ #{prototype_and_js_version_check}\n/ +
|
@@ -778,4 +791,4 @@ module Wice
|
|
778
791
|
end
|
779
792
|
|
780
793
|
end
|
781
|
-
end
|
794
|
+
end
|
@@ -42,7 +42,7 @@ module Wice::JsAdaptor #:nodoc:
|
|
42
42
|
end
|
43
43
|
|
44
44
|
def enter_key_event_registration(grid_name) #:nodoc:
|
45
|
-
%! $('div##{grid_name}.wice_grid_container .wice_grid_filter_row input[type=text]').keydown(function(event){\n! +
|
45
|
+
%! $('div##{grid_name}.wice_grid_container .wice_grid_filter_row input[type=text], .#{grid_name}_detached_filter input[type=text]').keydown(function(event){\n! +
|
46
46
|
%! if (event.keyCode == 13) {#{grid_name}.process()}\n! +
|
47
47
|
%! });\n!
|
48
48
|
end
|
@@ -73,7 +73,7 @@ module Wice::JsAdaptor #:nodoc:
|
|
73
73
|
|
74
74
|
|
75
75
|
def auto_reloading_calendar_event_initialization(grid_name) #:nodoc:
|
76
|
-
%! $(document).bind('wg:
|
76
|
+
%! $(document).bind('wg:calendarChanged_#{grid_name}', function(event){\n! +
|
77
77
|
%! #{grid_name}.process()\n! +
|
78
78
|
%! });\n!
|
79
79
|
end
|
@@ -139,6 +139,18 @@ module Wice::JsAdaptor #:nodoc:
|
|
139
139
|
%! }\n!
|
140
140
|
end
|
141
141
|
|
142
|
+
|
143
|
+
def update_ranges(grid_name)
|
144
|
+
%! $('div##{grid_name}.wice_grid_container .range-start, .#{grid_name}_detached_filter .range-start').keyup(function(e, a){\n! +
|
145
|
+
%! var endRange = $(e.target).next();\n! +
|
146
|
+
%! if (e.target.value){\n! +
|
147
|
+
%! endRange.val(#{Wice::ConfigurationProvider.value_for(:SECOND_RANGE_VALUE_FOLLOWING_THE_FIRST)} + parseInt(e.target.value));\n! +
|
148
|
+
%! }else{\n! +
|
149
|
+
%! endRange.val('');\n! +
|
150
|
+
%! }\n! +
|
151
|
+
%! });\n!
|
152
|
+
end
|
153
|
+
|
142
154
|
end
|
143
155
|
|
144
156
|
end
|
@@ -3,7 +3,7 @@
|
|
3
3
|
module Wice::JsAdaptor #:nodoc:
|
4
4
|
mattr_accessor :calendar_module
|
5
5
|
def self.init #:nodoc:
|
6
|
-
if Wice::
|
6
|
+
if Wice::ConfigurationProvider.value_for(:JS_FRAMEWORK) == :prototype
|
7
7
|
include Wice::JsAdaptor::Prototype
|
8
8
|
else
|
9
9
|
include Wice::JsAdaptor::Jquery
|
@@ -45,7 +45,7 @@ module Wice::JsAdaptor #:nodoc:
|
|
45
45
|
end
|
46
46
|
|
47
47
|
def enter_key_event_registration(grid_name) #:nodoc:
|
48
|
-
%! $$('div##{grid_name}.wice_grid_container .wice_grid_filter_row input[type=text]').each(function(e){\n! +
|
48
|
+
%! $$('div##{grid_name}.wice_grid_container .wice_grid_filter_row input[type=text], .#{grid_name}_detached_filter input[type=text]').each(function(e){\n! +
|
49
49
|
%! e.observe('keydown', function(event){\n! +
|
50
50
|
%! if (event.keyCode == 13) {#{grid_name}.process()}\n! +
|
51
51
|
%! })\n! +
|
@@ -86,7 +86,7 @@ module Wice::JsAdaptor #:nodoc:
|
|
86
86
|
|
87
87
|
|
88
88
|
def auto_reloading_calendar_event_initialization(grid_name) #:nodoc:
|
89
|
-
%! document.observe('wg:
|
89
|
+
%! document.observe('wg:calendarChanged_#{grid_name}', function(event){\n! +
|
90
90
|
%! #{grid_name}.process()\n! +
|
91
91
|
%! });\n!
|
92
92
|
end
|
@@ -161,8 +161,19 @@ module Wice::JsAdaptor #:nodoc:
|
|
161
161
|
%! elToFocus.value = elToFocus.value;\n! # this will just place the cursor at the end of the text input
|
162
162
|
end
|
163
163
|
|
164
|
-
|
164
|
+
def update_ranges(grid_name)
|
165
|
+
%/ $$('div##{grid_name}.wice_grid_container .range-start, .#{grid_name}_detached_filter .range-start').each(function(e){\n/+
|
166
|
+
%/ e.observe('keyup', function(){\n/+
|
167
|
+
%! var endRange = e.next();\n! +
|
168
|
+
%! if (e.value){\n! +
|
169
|
+
%/ endRange.value = #{Wice::ConfigurationProvider.value_for(:SECOND_RANGE_VALUE_FOLLOWING_THE_FIRST)} + parseInt(e.value);\n/ +
|
170
|
+
%/ }else{\n/ +
|
171
|
+
%/ endRange.value = '';\n/ +
|
172
|
+
%/ }\n/ +
|
173
|
+
%/ })\n/+
|
174
|
+
%/ });\n/
|
175
|
+
end
|
165
176
|
|
177
|
+
end
|
166
178
|
end
|
167
|
-
|
168
179
|
end
|
data/lib/view_columns.rb
CHANGED
@@ -203,12 +203,12 @@ module Wice
|
|
203
203
|
@query, _, parameter_name, @dom_id = form_parameter_name_id_and_query(:fr => '')
|
204
204
|
@query2, _, parameter_name2, @dom_id2 = form_parameter_name_id_and_query(:to => '')
|
205
205
|
|
206
|
-
opts1 = {:size => 3, :id => @dom_id}
|
207
|
-
opts2 = {:size => 3, :id => @dom_id2}
|
206
|
+
opts1 = {:size => 3, :id => @dom_id, :class => 'range-start'}
|
207
|
+
opts2 = {:size => 3, :id => @dom_id2, :class => 'range-end'}
|
208
208
|
|
209
209
|
if auto_reload
|
210
|
-
opts1[:class]
|
211
|
-
opts2[:class]
|
210
|
+
opts1[:class] += ' auto_reload'
|
211
|
+
opts2[:class] += ' auto_reload'
|
212
212
|
end
|
213
213
|
|
214
214
|
text_field_tag(parameter_name, params[:fr], opts1) + text_field_tag(parameter_name2, params[:to], opts2)
|
@@ -356,10 +356,10 @@ module Wice
|
|
356
356
|
|
357
357
|
def render_calendar_filter_internal(params) #:nodoc:
|
358
358
|
html1, js1 = datetime_calendar_prototype(params[:fr], @view,
|
359
|
-
{:include_blank => true, :prefix => @name1, :id => @dom_id, :fire_event => auto_reload},
|
359
|
+
{:include_blank => true, :prefix => @name1, :id => @dom_id, :fire_event => auto_reload, :grid_name => self.grid.name},
|
360
360
|
:title => WiceGridNlMessageProvider.get_message(:DATE_SELECTOR_TOOLTIP_FROM))
|
361
361
|
html2, js2 = datetime_calendar_prototype(params[:to], @view,
|
362
|
-
{:include_blank => true, :prefix => @name2, :id => @dom_id2, :fire_event => auto_reload},
|
362
|
+
{:include_blank => true, :prefix => @name2, :id => @dom_id2, :fire_event => auto_reload, :grid_name => self.grid.name},
|
363
363
|
:title => WiceGridNlMessageProvider.get_message(:DATE_SELECTOR_TOOLTIP_TO))
|
364
364
|
[%!<div class="date-filter">#{html1}<br/>#{html2}</div>!, js1 + js2]
|
365
365
|
end
|
@@ -401,17 +401,17 @@ module Wice
|
|
401
401
|
|
402
402
|
def render_calendar_filter_internal(params) #:nodoc:
|
403
403
|
|
404
|
-
calendar_helper_method = if Wice::
|
404
|
+
calendar_helper_method = if Wice::ConfigurationProvider.value_for(:JS_FRAMEWORK) == :prototype
|
405
405
|
:date_calendar_prototype
|
406
406
|
else
|
407
407
|
:date_calendar_jquery
|
408
408
|
end
|
409
409
|
|
410
410
|
html1, js1 = send(calendar_helper_method, params[:fr], @view,
|
411
|
-
{:include_blank => true, :prefix => @name1, :fire_event => auto_reload},
|
411
|
+
{:include_blank => true, :prefix => @name1, :fire_event => auto_reload, :grid_name => self.grid.name},
|
412
412
|
:title => WiceGridNlMessageProvider.get_message(:DATE_SELECTOR_TOOLTIP_FROM))
|
413
413
|
html2, js2 = send(calendar_helper_method, params[:to], @view,
|
414
|
-
{:include_blank => true, :prefix => @name2, :fire_event => auto_reload},
|
414
|
+
{:include_blank => true, :prefix => @name2, :fire_event => auto_reload, :grid_name => self.grid.name},
|
415
415
|
:title => WiceGridNlMessageProvider.get_message(:DATE_SELECTOR_TOOLTIP_TO))
|
416
416
|
|
417
417
|
[%!<div class="date-filter">#{html1}<br/>#{html2}</div>!, js1 + js2]
|
@@ -447,8 +447,8 @@ module Wice
|
|
447
447
|
|
448
448
|
'<div class="text_filter_container">' +
|
449
449
|
text_field_tag(parameter_name, params[:v], :size => 8, :id => @dom_id, :class => css_class) +
|
450
|
-
if defined?(
|
451
|
-
|
450
|
+
if defined?(Wice::Defaults::NEGATION_CHECKBOX_LABEL) && ! Wice::ConfigurationProvider.value_for(:NEGATION_CHECKBOX_LABEL).blank?
|
451
|
+
Wice::ConfigurationProvider.value_for(:NEGATION_CHECKBOX_LABEL)
|
452
452
|
else
|
453
453
|
''
|
454
454
|
end +
|
data/lib/wice_grid.rb
CHANGED
@@ -485,7 +485,11 @@ module Wice
|
|
485
485
|
end
|
486
486
|
|
487
487
|
if custom_order.blank?
|
488
|
-
ActiveRecord::Base.connection.
|
488
|
+
if ActiveRecord::ConnectionAdapters.const_defined?(:SQLite3Adapter) && ActiveRecord::Base.connection.is_a?(ActiveRecord::ConnectionAdapters::SQLite3Adapter)
|
489
|
+
fully_qualified_column_name.strip.split('.').map{|chunk| ActiveRecord::Base.connection.quote_table_name(chunk)}.join('.')
|
490
|
+
else
|
491
|
+
ActiveRecord::Base.connection.quote_table_name(fully_qualified_column_name.strip)
|
492
|
+
end
|
489
493
|
else
|
490
494
|
if custom_order.is_a? String
|
491
495
|
custom_order.gsub(/\?/, fully_qualified_column_name)
|
@@ -619,9 +623,9 @@ module Wice
|
|
619
623
|
[:fr, :to].each do |sym|
|
620
624
|
if @request_params[sym]
|
621
625
|
if @request_params[sym].is_a?(String)
|
622
|
-
@request_params[sym] = Wice::
|
626
|
+
@request_params[sym] = Wice::ConfigurationProvider.value_for(:DATETIME_PARSER).call(@request_params[sym])
|
623
627
|
elsif @request_params[sym].is_a?(Hash)
|
624
|
-
@request_params[sym] =
|
628
|
+
@request_params[sym] = Wice::GridTools.params_2_datetime(@request_params[sym])
|
625
629
|
end
|
626
630
|
end
|
627
631
|
end
|
@@ -635,7 +639,7 @@ module Wice
|
|
635
639
|
[:fr, :to].each do |sym|
|
636
640
|
if @request_params[sym]
|
637
641
|
if @request_params[sym].is_a?(String)
|
638
|
-
@request_params[sym] = Wice::
|
642
|
+
@request_params[sym] = Wice::ConfigurationProvider.value_for(:DATE_PARSER).call(@request_params[sym])
|
639
643
|
elsif @request_params[sym].is_a?(Hash)
|
640
644
|
@request_params[sym] = ::Wice::GridTools.params_2_date(@request_params[sym])
|
641
645
|
end
|
data/lib/wice_grid_misc.rb
CHANGED
@@ -20,7 +20,7 @@ module Wice
|
|
20
20
|
# Retrieves and constantizes (if needed ) the Query Store model
|
21
21
|
def get_query_store_model #:nodoc:
|
22
22
|
|
23
|
-
query_store_model =
|
23
|
+
query_store_model = Wice::ConfigurationProvider.value_for(:QUERY_STORE_MODEL)
|
24
24
|
query_store_model = query_store_model.constantize if query_store_model.is_a? String
|
25
25
|
raise ::Wice::WiceGridArgumentError.new("Defaults::QUERY_STORE_MODEL must be an ActiveRecord class or a string which can be constantized to an ActiveRecord class") unless query_store_model.kind_of? Class
|
26
26
|
validate_query_model(query_store_model) unless @@model_validated
|
@@ -28,11 +28,11 @@ module Wice
|
|
28
28
|
end
|
29
29
|
|
30
30
|
def get_string_matching_operators(model) #:nodoc:
|
31
|
-
if defined?(Wice::Defaults::STRING_MATCHING_OPERATORS) && Wice::
|
32
|
-
str_matching_operator = Wice::
|
31
|
+
if defined?(Wice::Defaults::STRING_MATCHING_OPERATORS) && Wice::ConfigurationProvider.value_for(:STRING_MATCHING_OPERATORS).is_a?(Hash) &&
|
32
|
+
str_matching_operator = Wice::ConfigurationProvider.value_for(:STRING_MATCHING_OPERATORS)[model.connection.class.to_s]
|
33
33
|
str_matching_operator
|
34
34
|
else
|
35
|
-
Wice::
|
35
|
+
Wice::ConfigurationProvider.value_for(:STRING_MATCHING_OPERATOR)
|
36
36
|
end
|
37
37
|
end
|
38
38
|
|
@@ -81,6 +81,20 @@ module Wice
|
|
81
81
|
end
|
82
82
|
end
|
83
83
|
|
84
|
+
module ConfigurationProvider #:nodoc:
|
85
|
+
class << self
|
86
|
+
|
87
|
+
def value_for(key) #:nodoc:
|
88
|
+
if Wice::Defaults.const_defined?(key)
|
89
|
+
Wice::Defaults.const_get(key)
|
90
|
+
else
|
91
|
+
raise WiceGridException.new("Could not find constant #{key} in the configuration file! Please run the generator command to update the configuration file:\n rails g wice_grid:wice_grid_assets_jquery\nor rails g wice_grid:wice_grid_assets_prototype\ndepending on your JS framework")
|
92
|
+
end
|
93
|
+
end
|
94
|
+
|
95
|
+
end
|
96
|
+
end
|
97
|
+
|
84
98
|
module Defaults #:nodoc:
|
85
99
|
end
|
86
100
|
|
@@ -33,7 +33,7 @@ module Wice
|
|
33
33
|
@error_messages = sq.errors.full_raw_messages.join(' ')
|
34
34
|
end
|
35
35
|
end
|
36
|
-
template_name = if Wice::
|
36
|
+
template_name = if Wice::ConfigurationProvider.value_for(:JS_FRAMEWORK) == :prototype
|
37
37
|
'delete'
|
38
38
|
else
|
39
39
|
'delete_jq'
|
@@ -60,7 +60,7 @@ module Wice
|
|
60
60
|
else
|
61
61
|
@error_messages = @saved_query.errors.map{ |_, msg| msg }.join(' ')
|
62
62
|
end
|
63
|
-
template_name = if Wice::
|
63
|
+
template_name = if Wice::ConfigurationProvider.value_for(:JS_FRAMEWORK) == :prototype
|
64
64
|
'create'
|
65
65
|
else
|
66
66
|
'create_jq'
|
data/wice_grid.gemspec
CHANGED
@@ -5,11 +5,11 @@
|
|
5
5
|
|
6
6
|
Gem::Specification.new do |s|
|
7
7
|
s.name = %q{wice_grid}
|
8
|
-
s.version = "3.0.0.
|
8
|
+
s.version = "3.0.0.pre3"
|
9
9
|
|
10
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 = %q{
|
12
|
+
s.date = %q{2011-02-18}
|
13
13
|
s.description = %q{A Rails grid plugin to create grids with sorting, pagination, and (automatically generated) filters }
|
14
14
|
s.email = %q{yuri.leikind@gmail.com}
|
15
15
|
s.extra_rdoc_files = [
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: wice_grid
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash: -
|
4
|
+
hash: -1876988210
|
5
5
|
prerelease: true
|
6
6
|
segments:
|
7
7
|
- 3
|
8
8
|
- 0
|
9
9
|
- 0
|
10
|
-
-
|
11
|
-
version: 3.0.0.
|
10
|
+
- pre3
|
11
|
+
version: 3.0.0.pre3
|
12
12
|
platform: ruby
|
13
13
|
authors:
|
14
14
|
- Yuri Leikind
|
@@ -16,7 +16,7 @@ autorequire:
|
|
16
16
|
bindir: bin
|
17
17
|
cert_chain: []
|
18
18
|
|
19
|
-
date:
|
19
|
+
date: 2011-02-18 00:00:00 +01:00
|
20
20
|
default_executable:
|
21
21
|
dependencies:
|
22
22
|
- !ruby/object:Gem::Dependency
|