wice_grid 3.5.0 → 3.6.0.pre1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/.inch.yml +3 -0
- data/.rspec +3 -0
- data/.rubocop.yml +181 -0
- data/.travis.yml +22 -0
- data/{CHANGELOG → CHANGELOG.md} +95 -31
- data/Gemfile +4 -1
- data/README.md +1517 -0
- data/Rakefile +51 -7
- data/{SAVED_QUERIES_HOWTO.rdoc → SAVED_QUERIES_HOWTO.md} +34 -31
- data/TODO.md +16 -0
- data/lib/generators/wice_grid/add_migration_for_serialized_queries_generator.rb +4 -6
- data/lib/generators/wice_grid/install_generator.rb +2 -5
- data/lib/generators/wice_grid/templates/create_wice_grid_serialized_queries.rb +1 -0
- data/lib/generators/wice_grid/templates/wice_grid_config.rb +29 -34
- data/lib/wice/active_record_column_wrapper.rb +36 -17
- data/lib/wice/columns.rb +53 -52
- data/lib/wice/columns/column_action.rb +11 -13
- data/lib/wice/columns/column_boolean.rb +9 -11
- data/lib/wice/columns/column_bootstrap_datepicker.rb +48 -0
- data/lib/wice/columns/column_custom_dropdown.rb +22 -23
- data/lib/wice/columns/column_float.rb +2 -6
- data/lib/wice/columns/column_html5_datepicker.rb +31 -0
- data/lib/wice/columns/column_integer.rb +9 -13
- data/lib/wice/columns/column_jquery_datepicker.rb +49 -0
- data/lib/wice/columns/column_processor_index.rb +18 -13
- data/lib/wice/columns/column_rails_date_helper.rb +41 -0
- data/lib/wice/columns/column_rails_datetime_helper.rb +40 -0
- data/lib/wice/columns/column_range.rb +7 -11
- data/lib/wice/columns/column_string.rb +24 -20
- data/lib/wice/columns/common_date_datetime_mixin.rb +20 -0
- data/lib/wice/columns/common_js_date_datetime_conditions_generator_mixin.rb +39 -0
- data/lib/wice/columns/common_js_date_datetime_mixin.rb +15 -0
- data/lib/wice/columns/{column_date.rb → common_rails_date_datetime_conditions_generator_mixin.rb} +4 -22
- data/lib/wice/columns/common_standard_helper_date_datetime_mixin.rb +22 -0
- data/lib/wice/grid_output_buffer.rb +19 -10
- data/lib/wice/grid_renderer.rb +146 -85
- data/lib/wice/helpers/bs_calendar_helpers.rb +6 -7
- data/lib/wice/helpers/js_calendar_helpers.rb +19 -17
- data/lib/wice/helpers/wice_grid_misc_view_helpers.rb +18 -18
- data/lib/wice/helpers/wice_grid_serialized_queries_view_helpers.rb +44 -49
- data/lib/wice/helpers/wice_grid_view_helpers.rb +131 -134
- data/lib/wice/kaminari_monkey_patching.rb +3 -1
- data/lib/wice/table_column_matrix.rb +23 -8
- data/lib/wice/wice_grid_controller.rb +12 -16
- data/lib/wice/wice_grid_core_ext.rb +12 -20
- data/lib/wice/wice_grid_misc.rb +131 -53
- data/lib/wice/wice_grid_serialized_queries_controller.rb +10 -11
- data/lib/wice/wice_grid_serialized_query.rb +4 -3
- data/lib/wice/wice_grid_spreadsheet.rb +19 -18
- data/lib/wice_grid.rb +144 -135
- data/spec/schema.rb +9 -0
- data/spec/spec_helper.rb +75 -0
- data/spec/support/active_record.rb +11 -0
- data/spec/support/wice_grid_test_config.rb +172 -0
- data/spec/wice/grid_output_buffer_spec.rb +41 -0
- data/spec/wice/table_column_matrix_spec.rb +38 -0
- data/spec/wice/wice_grid_misc_spec.rb +159 -0
- data/spec/wice/wice_grid_spreadsheet_spec.rb +14 -0
- data/test/readme.txt +1 -1
- data/vendor/assets/javascripts/wice_grid_init.js.coffee +14 -8
- data/vendor/assets/stylesheets/wice_grid.scss +84 -0
- data/wice_grid.gemspec +32 -16
- metadata +217 -25
- data/README.rdoc +0 -1325
- data/lib/generators/wice_grid/templates/wice_grid.scss +0 -140
- data/lib/wice/columns/column_datetime.rb +0 -171
- data/vendor/assets/images/icons/grid/arrow_down.gif +0 -0
- data/vendor/assets/images/icons/grid/arrow_up.gif +0 -0
- data/vendor/assets/images/icons/grid/calendar_view_month.png +0 -0
- data/vendor/assets/images/icons/grid/collapse.gif +0 -0
- data/vendor/assets/images/icons/grid/delete.png +0 -0
- data/vendor/assets/images/icons/grid/expand.gif +0 -0
- data/vendor/assets/images/icons/grid/page_white_excel.png +0 -0
- data/vendor/assets/images/icons/grid/page_white_find.png +0 -0
- data/vendor/assets/images/icons/grid/table.png +0 -0
- data/vendor/assets/images/icons/grid/table_refresh.png +0 -0
- data/vendor/assets/images/icons/grid/tick_all.png +0 -0
- data/vendor/assets/images/icons/grid/untick_all.png +0 -0
@@ -1,140 +0,0 @@
|
|
1
|
-
@mixin icon-dimensions {
|
2
|
-
width: 16px;
|
3
|
-
height: 16px;
|
4
|
-
}
|
5
|
-
|
6
|
-
.wg-detached-filter, .wice-grid{
|
7
|
-
|
8
|
-
.text-filter-container {
|
9
|
-
input{
|
10
|
-
width:auto;
|
11
|
-
margin-right: 10px;
|
12
|
-
display: inline;
|
13
|
-
}
|
14
|
-
}
|
15
|
-
|
16
|
-
a.date-label {text-decoration: none;}
|
17
|
-
a.date-label:hover {text-decoration: line-through;}
|
18
|
-
|
19
|
-
.clickable{
|
20
|
-
cursor: pointer;
|
21
|
-
margin-bottom: 2px;
|
22
|
-
margin-right: 2px;
|
23
|
-
}
|
24
|
-
|
25
|
-
.ui-datepicker-trigger, .wg-detached-filter .ui-datepicker-trigger{
|
26
|
-
cursor: pointer;
|
27
|
-
}
|
28
|
-
|
29
|
-
.custom-dropdown-container {
|
30
|
-
|
31
|
-
.expand-multi-select-icon, .collapse-multi-select-icon{
|
32
|
-
width: 10px;
|
33
|
-
height: 10px;
|
34
|
-
display: inline-block;
|
35
|
-
margin-left: 5px;
|
36
|
-
vertical-align: top;
|
37
|
-
}
|
38
|
-
|
39
|
-
.collapse-multi-select-icon{
|
40
|
-
background: transparent image-url("icons/grid/collapse.gif") no-repeat;
|
41
|
-
}
|
42
|
-
|
43
|
-
.expand-multi-select-icon{
|
44
|
-
background: transparent image-url("icons/grid/expand.gif") no-repeat;
|
45
|
-
}
|
46
|
-
|
47
|
-
}
|
48
|
-
}
|
49
|
-
|
50
|
-
.wice-grid{
|
51
|
-
|
52
|
-
|
53
|
-
.desc, .asc{
|
54
|
-
padding-right: 18px;
|
55
|
-
text-decoration:none;
|
56
|
-
}
|
57
|
-
|
58
|
-
.desc {
|
59
|
-
background: transparent image-url("icons/grid/arrow_down.gif") right no-repeat
|
60
|
-
}
|
61
|
-
.asc {
|
62
|
-
background: transparent image-url("icons/grid/arrow_up.gif") right no-repeat
|
63
|
-
}
|
64
|
-
|
65
|
-
.submit.clickable{
|
66
|
-
background: transparent image-url("icons/grid/table_refresh.png") no-repeat;
|
67
|
-
@include icon-dimensions;
|
68
|
-
}
|
69
|
-
|
70
|
-
.reset.clickable{
|
71
|
-
background: transparent image-url("icons/grid/table.png") no-repeat;
|
72
|
-
@include icon-dimensions;
|
73
|
-
}
|
74
|
-
|
75
|
-
|
76
|
-
.wg-show-filter.clickable,
|
77
|
-
.wg-hide-filter.clickable{
|
78
|
-
background: transparent image-url("icons/grid/page_white_find.png") no-repeat;
|
79
|
-
@include icon-dimensions;
|
80
|
-
}
|
81
|
-
|
82
|
-
|
83
|
-
.export-to-csv-button.clickable{
|
84
|
-
background: transparent image-url("icons/grid/page_white_excel.png") no-repeat;
|
85
|
-
@include icon-dimensions;
|
86
|
-
}
|
87
|
-
|
88
|
-
.clickable.select-all{
|
89
|
-
background: transparent image-url("icons/grid/tick_all.png") no-repeat;
|
90
|
-
@include icon-dimensions;
|
91
|
-
float:left;
|
92
|
-
}
|
93
|
-
|
94
|
-
.clickable.deselect-all{
|
95
|
-
background: transparent image-url("icons/grid/untick_all.png") no-repeat;
|
96
|
-
@include icon-dimensions;
|
97
|
-
float:left;
|
98
|
-
}
|
99
|
-
|
100
|
-
|
101
|
-
/* in case of twitter bootstrap :) */
|
102
|
-
thead th select{
|
103
|
-
width: auto;
|
104
|
-
}
|
105
|
-
|
106
|
-
.pagination{
|
107
|
-
margin: 0px;
|
108
|
-
float: left;
|
109
|
-
}
|
110
|
-
|
111
|
-
|
112
|
-
tr.wg-filter-row input[type=text] {
|
113
|
-
width: 100px;
|
114
|
-
}
|
115
|
-
|
116
|
-
.pagination_status {
|
117
|
-
font-weight: bold;
|
118
|
-
float: right;
|
119
|
-
}
|
120
|
-
|
121
|
-
}
|
122
|
-
|
123
|
-
.wice-grid-query-panel{
|
124
|
-
li {list-style-type: none; }
|
125
|
-
|
126
|
-
ul {margin-left: 0 }
|
127
|
-
|
128
|
-
a.wice-grid-delete-query .delete-icon{
|
129
|
-
background: transparent image-url("icons/grid/delete.png") no-repeat;
|
130
|
-
float: left;
|
131
|
-
@include icon-dimensions;
|
132
|
-
}
|
133
|
-
}
|
134
|
-
|
135
|
-
input.wice-grid-save-query-field{
|
136
|
-
width: auto;
|
137
|
-
display: inline-block;
|
138
|
-
margin-right: 10px;
|
139
|
-
}
|
140
|
-
|
@@ -1,171 +0,0 @@
|
|
1
|
-
module Wice
|
2
|
-
|
3
|
-
module Columns #:nodoc:
|
4
|
-
|
5
|
-
class ViewColumnDatetime < ViewColumn #:nodoc:
|
6
|
-
include ActionView::Helpers::DateHelper
|
7
|
-
include Wice::BsCalendarHelpers
|
8
|
-
include Wice::JsCalendarHelpers
|
9
|
-
|
10
|
-
|
11
|
-
# name_and_id_from_options in Rails Date helper does not substitute '.' with '_'
|
12
|
-
# like all other simpler form helpers do. Thus, overriding it here.
|
13
|
-
def name_and_id_from_options(options, type) #:nodoc:
|
14
|
-
options[:name] = (options[:prefix] || DEFAULT_PREFIX) + (options[:discard_type] ? '' : "[#{type}]")
|
15
|
-
options[:id] = options[:name].gsub(/([\[\(])|(\]\[)/, '_').gsub(/[\]\)]/, '').gsub(/\./, '_').gsub(/_+/, '_')
|
16
|
-
end
|
17
|
-
|
18
|
-
def chunk_names
|
19
|
-
%w(year month day hour minute)
|
20
|
-
end
|
21
|
-
|
22
|
-
def prepare_for_standard_filter #:nodoc:
|
23
|
-
x = lambda{|sym|
|
24
|
-
chunk_names.map{|datetime_chunk_name|
|
25
|
-
triple = form_parameter_name_id_and_query(sym => {datetime_chunk_name => ''})
|
26
|
-
[triple[0], triple[3]]
|
27
|
-
}
|
28
|
-
}
|
29
|
-
|
30
|
-
@queris_ids = x.call(:fr) + x.call(:to)
|
31
|
-
|
32
|
-
_, _, @name1, _ = form_parameter_name_id_and_query({fr: ''})
|
33
|
-
_, _, @name2, _ = form_parameter_name_id_and_query({to: ''})
|
34
|
-
end
|
35
|
-
|
36
|
-
|
37
|
-
def prepare_for_calendar_filter #:nodoc:
|
38
|
-
query, _, @name1, @dom_id = form_parameter_name_id_and_query(fr: '')
|
39
|
-
query2, _, @name2, @dom_id2 = form_parameter_name_id_and_query(to: '')
|
40
|
-
|
41
|
-
@queris_ids = [[query, @dom_id], [query2, @dom_id2] ]
|
42
|
-
end
|
43
|
-
|
44
|
-
|
45
|
-
def render_standard_filter_internal(params) #:nodoc:
|
46
|
-
'<div class="date-filter">' +
|
47
|
-
select_datetime(params[:fr], {include_blank: true, prefix: @name1}) + '<br/>' +
|
48
|
-
select_datetime(params[:to], {include_blank: true, prefix: @name2}) +
|
49
|
-
'</div>'
|
50
|
-
end
|
51
|
-
|
52
|
-
|
53
|
-
def render_html5_filter_internal(params) #:nodoc:
|
54
|
-
css_class = 'form-control input-sm native-datepicker ' + (auto_reload ? 'auto-reload' : '')
|
55
|
-
date_format = Wice::ConfigurationProvider.value_for(:DATE_FORMAT)
|
56
|
-
'<div class="date-filter wg-html5-datepicker">' +
|
57
|
-
date_field_tag(@name1, params[:fr].try(:strftime, date_format), {class: css_class, id: @dom_id}) + '<br/>' +
|
58
|
-
date_field_tag(@name2, params[:to].try(:strftime, date_format), {class: css_class, id: @dom_id2}) +
|
59
|
-
'</div>'
|
60
|
-
end
|
61
|
-
|
62
|
-
def render_bs_filter_internal(params) #:nodoc:
|
63
|
-
calendar_data_from = prepare_data_for_bscalendar(
|
64
|
-
initial_date: params[:fr],
|
65
|
-
name: @name1,
|
66
|
-
fire_event: auto_reload,
|
67
|
-
grid_name: self.grid.name
|
68
|
-
)
|
69
|
-
|
70
|
-
calendar_data_to = prepare_data_for_bscalendar(
|
71
|
-
initial_date: params[:to],
|
72
|
-
name: @name2,
|
73
|
-
fire_event: auto_reload,
|
74
|
-
grid_name: self.grid.name
|
75
|
-
)
|
76
|
-
|
77
|
-
calendar_data_from.the_other_datepicker_id_to = calendar_data_to.dom_id
|
78
|
-
calendar_data_to.the_other_datepicker_id_from = calendar_data_from.dom_id
|
79
|
-
|
80
|
-
html1 = date_calendar_bs calendar_data_from
|
81
|
-
|
82
|
-
html2 = date_calendar_bs calendar_data_to
|
83
|
-
|
84
|
-
%!<div class="date-filter wg-bootstrap-datepicker">#{html1}#{html2}</div>!
|
85
|
-
end
|
86
|
-
|
87
|
-
def render_calendar_filter_internal(params) #:nodoc:
|
88
|
-
|
89
|
-
calendar_data_from = prepare_data_for_calendar(
|
90
|
-
initial_date: params[:fr],
|
91
|
-
title: NlMessage['date_selector_tooltip_from'],
|
92
|
-
name: @name1,
|
93
|
-
fire_event: auto_reload,
|
94
|
-
grid_name: self.grid.name
|
95
|
-
)
|
96
|
-
|
97
|
-
calendar_data_to = prepare_data_for_calendar(
|
98
|
-
initial_date: params[:to],
|
99
|
-
title: NlMessage['date_selector_tooltip_to'],
|
100
|
-
name: @name2,
|
101
|
-
fire_event: auto_reload,
|
102
|
-
grid_name: self.grid.name
|
103
|
-
)
|
104
|
-
|
105
|
-
calendar_data_from.the_other_datepicker_id_to = calendar_data_to.dom_id
|
106
|
-
calendar_data_to.the_other_datepicker_id_from = calendar_data_from.dom_id
|
107
|
-
|
108
|
-
html1 = date_calendar_jquery calendar_data_from
|
109
|
-
|
110
|
-
html2 = date_calendar_jquery calendar_data_to
|
111
|
-
|
112
|
-
%!<div class="date-filter wg-jquery-datepicker">#{html1}<br/>#{html2}</div>!
|
113
|
-
end
|
114
|
-
|
115
|
-
|
116
|
-
def render_filter_internal(params) #:nodoc:
|
117
|
-
if helper_style == :standard
|
118
|
-
prepare_for_standard_filter
|
119
|
-
render_standard_filter_internal(params)
|
120
|
-
elsif helper_style == :html5
|
121
|
-
prepare_for_calendar_filter
|
122
|
-
render_html5_filter_internal(params)
|
123
|
-
elsif helper_style == :bootstrap
|
124
|
-
prepare_for_calendar_filter
|
125
|
-
render_bs_filter_internal(params)
|
126
|
-
else # :calendar
|
127
|
-
prepare_for_calendar_filter
|
128
|
-
render_calendar_filter_internal(params)
|
129
|
-
end
|
130
|
-
end
|
131
|
-
|
132
|
-
|
133
|
-
def yield_declaration_of_column_filter #:nodoc:
|
134
|
-
{
|
135
|
-
templates: @queris_ids.collect{|tuple| tuple[0] },
|
136
|
-
ids: @queris_ids.collect{|tuple| tuple[1] }
|
137
|
-
}
|
138
|
-
end
|
139
|
-
|
140
|
-
|
141
|
-
def has_auto_reloading_calendar? #:nodoc:
|
142
|
-
auto_reload && [:bootstrap, :calendar].include?(helper_style)
|
143
|
-
end
|
144
|
-
|
145
|
-
end
|
146
|
-
|
147
|
-
class ConditionsGeneratorColumnDatetime < ConditionsGeneratorColumn #:nodoc:
|
148
|
-
|
149
|
-
def generate_conditions(table_alias, opts) #:nodoc:
|
150
|
-
conditions = [[]]
|
151
|
-
if opts[:fr]
|
152
|
-
conditions[0] << " #{@column_wrapper.alias_or_table_name(table_alias)}.#{@column_wrapper.name} >= ? "
|
153
|
-
conditions << opts[:fr]
|
154
|
-
end
|
155
|
-
|
156
|
-
if opts[:to]
|
157
|
-
conditions[0] << " #{@column_wrapper.alias_or_table_name(table_alias)}.#{@column_wrapper.name} <= ? "
|
158
|
-
conditions << (opts[:to])
|
159
|
-
end
|
160
|
-
|
161
|
-
return false if conditions.size == 1
|
162
|
-
|
163
|
-
conditions[0] = conditions[0].join(' and ')
|
164
|
-
conditions
|
165
|
-
end
|
166
|
-
end
|
167
|
-
|
168
|
-
end
|
169
|
-
|
170
|
-
|
171
|
-
end
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|