wice_grid 3.0.0.pre2 → 3.0.0.pre3
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.
- 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
|