mongoid_wice_grid 4.0.0
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/.gitignore +9 -0
- data/CHANGELOG +409 -0
- data/Gemfile +17 -0
- data/Gemfile.lock +140 -0
- data/MIT-LICENSE +20 -0
- data/README.rdoc +1188 -0
- data/Rakefile +40 -0
- data/SAVED_QUERIES_HOWTO.rdoc +123 -0
- data/VERSION +1 -0
- data/lib/filter_conditions_generators.rb +126 -0
- data/lib/generators/wice_grid/templates/calendarview.css +107 -0
- data/lib/generators/wice_grid/templates/calendarview.js +1168 -0
- data/lib/generators/wice_grid/templates/icons/arrow_down.gif +0 -0
- data/lib/generators/wice_grid/templates/icons/arrow_up.gif +0 -0
- data/lib/generators/wice_grid/templates/icons/calendar_view_month.png +0 -0
- data/lib/generators/wice_grid/templates/icons/delete.png +0 -0
- data/lib/generators/wice_grid/templates/icons/expand.png +0 -0
- data/lib/generators/wice_grid/templates/icons/page_white_excel.png +0 -0
- data/lib/generators/wice_grid/templates/icons/page_white_find.png +0 -0
- data/lib/generators/wice_grid/templates/icons/table.png +0 -0
- data/lib/generators/wice_grid/templates/icons/table_refresh.png +0 -0
- data/lib/generators/wice_grid/templates/icons/tick_all.png +0 -0
- data/lib/generators/wice_grid/templates/icons/untick_all.png +0 -0
- data/lib/generators/wice_grid/templates/wice_grid.css +173 -0
- data/lib/generators/wice_grid/templates/wice_grid.yml +269 -0
- data/lib/generators/wice_grid/templates/wice_grid_config.rb +215 -0
- data/lib/generators/wice_grid/templates/wice_grid_jquery.js +161 -0
- data/lib/generators/wice_grid/templates/wice_grid_prototype.js +153 -0
- data/lib/generators/wice_grid/wice_grid_assets_jquery_generator.rb +32 -0
- data/lib/generators/wice_grid/wice_grid_assets_prototype_generator.rb +34 -0
- data/lib/grid_output_buffer.rb +52 -0
- data/lib/grid_renderer.rb +547 -0
- data/lib/helpers/js_calendar_helpers.rb +183 -0
- data/lib/helpers/wice_grid_misc_view_helpers.rb +113 -0
- data/lib/helpers/wice_grid_serialized_queries_view_helpers.rb +82 -0
- data/lib/helpers/wice_grid_view_helpers.rb +761 -0
- data/lib/js_adaptors/jquery_adaptor.rb +145 -0
- data/lib/js_adaptors/js_adaptor.rb +12 -0
- data/lib/js_adaptors/prototype_adaptor.rb +168 -0
- data/lib/mongoid_field.rb +50 -0
- data/lib/tasks/wice_grid_tasks.rake +28 -0
- data/lib/view_columns.rb +464 -0
- data/lib/views/create.rjs +13 -0
- data/lib/views/delete.rjs +12 -0
- data/lib/wice_grid.rb +521 -0
- data/lib/wice_grid_controller.rb +165 -0
- data/lib/wice_grid_core_ext.rb +179 -0
- data/lib/wice_grid_misc.rb +99 -0
- data/lib/wice_grid_serialized_queries_controller.rb +77 -0
- data/lib/wice_grid_serialized_query.rb +14 -0
- data/lib/wice_grid_spreadsheet.rb +33 -0
- data/test/.gitignore +2 -0
- data/test/blueprint.rb +17 -0
- data/test/database.yml +21 -0
- data/test/public/javascripts/jquery-1.4.2.min.js +154 -0
- data/test/public/javascripts/wice_grid.js +163 -0
- data/test/rails_mongoid_test.rb +104 -0
- data/test/rails_test_app.rb +71 -0
- data/test/require_gems.rb +19 -0
- data/test/schema.rb +33 -0
- data/test/spec_helper.rb +22 -0
- data/test/test_helper.rb +89 -0
- data/test/views/projects_and_people_grid.html.erb +12 -0
- data/test/views/projects_and_people_grid_invalid.html.erb +12 -0
- data/test/views/simple_projects_grid.html.erb +9 -0
- data/test/wice_grid_core_ext_test.rb +183 -0
- data/test/wice_grid_functional_test.rb +68 -0
- data/test/wice_grid_initializer.rb +215 -0
- data/test/wice_grid_misc_test.rb +41 -0
- data/test/wice_grid_test.rb +42 -0
- data/test/wice_grid_view_helper_test.rb +12 -0
- metadata +150 -0
@@ -0,0 +1,215 @@
|
|
1
|
+
if defined?(Wice::Defaults)
|
2
|
+
|
3
|
+
Wice::Defaults::JS_FRAMEWORK = :<%= active_js_framework %>
|
4
|
+
# Wice::Defaults::JS_FRAMEWORK = :<%= inactive_js_framework %>
|
5
|
+
|
6
|
+
# Style of the view helper.
|
7
|
+
# +false+ is a usual view helper.
|
8
|
+
# +true+ will allow to embed erb content in column (cell) definitions.
|
9
|
+
Wice::Defaults::ERB_MODE = false
|
10
|
+
|
11
|
+
# Default number of rows to show per page.
|
12
|
+
Wice::Defaults::PER_PAGE = 20
|
13
|
+
|
14
|
+
# Default order direction
|
15
|
+
Wice::Defaults::ORDER_DIRECTION = 'asc'
|
16
|
+
|
17
|
+
# Default name for a grid. A grid name is the basis for a lot of
|
18
|
+
# names including parameter names, DOM IDs, etc
|
19
|
+
# The shorter the name is the shorter the request URI will be.
|
20
|
+
Wice::Defaults::GRID_NAME = 'grid'
|
21
|
+
|
22
|
+
# If REUSE_LAST_COLUMN_FOR_FILTER_ICONS is true and the last column doesn't have any filter and column name, it will be used
|
23
|
+
# for filter related icons (filter icon, reset icon, show/hide icon), otherwise an additional table column is added.
|
24
|
+
Wice::Defaults::REUSE_LAST_COLUMN_FOR_FILTER_ICONS = true
|
25
|
+
|
26
|
+
Wice::Defaults::SHOW_HIDE_FILTER_ICON = 'icons/grid/page_white_find.png'
|
27
|
+
|
28
|
+
|
29
|
+
# Icon to trigger filtering.
|
30
|
+
Wice::Defaults::FILTER_ICON = 'icons/grid/table_refresh.png'
|
31
|
+
|
32
|
+
# Icon to reset the filter.
|
33
|
+
Wice::Defaults::RESET_ICON = "icons/grid/table.png"
|
34
|
+
|
35
|
+
# Icon to reset the filter.
|
36
|
+
Wice::Defaults::TOGGLE_MULTI_SELECT_ICON = "/images/icons/grid/expand.png"
|
37
|
+
|
38
|
+
# CSV Export icon.
|
39
|
+
Wice::Defaults::CSV_EXPORT_ICON = "/images/icons/grid/page_white_excel.png"
|
40
|
+
|
41
|
+
# Tick-All icon for the action column.
|
42
|
+
Wice::Defaults::TICK_ALL_ICON = "/images/icons/grid/tick_all.png"
|
43
|
+
|
44
|
+
# Untick-All icon for the action column.
|
45
|
+
Wice::Defaults::UNTICK_ALL_ICON = "/images/icons/grid/untick_all.png"
|
46
|
+
|
47
|
+
# The label of the first option of a custom dropdown list meaning 'All items'
|
48
|
+
Wice::Defaults::CUSTOM_FILTER_ALL_LABEL = '--'
|
49
|
+
|
50
|
+
|
51
|
+
# Allow switching between a single and multiple selection modes in custom filters (dropdown boxes)
|
52
|
+
Wice::Defaults::ALLOW_MULTIPLE_SELECTION = true
|
53
|
+
|
54
|
+
# Show the upper pagination panel by default or not
|
55
|
+
Wice::Defaults::SHOW_UPPER_PAGINATION_PANEL = false
|
56
|
+
|
57
|
+
# Enabling CSV export by default
|
58
|
+
Wice::Defaults::ENABLE_EXPORT_TO_CSV = false
|
59
|
+
|
60
|
+
|
61
|
+
# The strategy when to show the filter.
|
62
|
+
# * <tt>:when_filtered</tt> - when the table is the result of filtering
|
63
|
+
# * <tt>:always</tt> - show the filter always
|
64
|
+
# * <tt>:no</tt> - never show the filter
|
65
|
+
Wice::Defaults::SHOW_FILTER = :always
|
66
|
+
|
67
|
+
# A boolean value specifying if a change in a filter triggers reloading of the grid.
|
68
|
+
Wice::Defaults::AUTO_RELOAD = false
|
69
|
+
|
70
|
+
|
71
|
+
# SQL operator used for matching strings in string filters.
|
72
|
+
Wice::Defaults::STRING_MATCHING_OPERATOR = 'LIKE'
|
73
|
+
# STRING_MATCHING_OPERATOR = 'ILIKE' # Use this for Postgresql case-insensitive matching.
|
74
|
+
|
75
|
+
|
76
|
+
# Defining one string matching operator globally for the whole application turns is not enough
|
77
|
+
# when you connect to two databases one of which is MySQL and the other is Postgresql.
|
78
|
+
# If the key for an adapter is missing it will fall back to Wice::Defaults::STRING_MATCHING_OPERATOR
|
79
|
+
Wice::Defaults::STRING_MATCHING_OPERATORS = {
|
80
|
+
'ActiveRecord::ConnectionAdapters::MysqlAdapter' => 'LIKE',
|
81
|
+
'ActiveRecord::ConnectionAdapters::PostgreSQLAdapter' => 'ILIKE'
|
82
|
+
}
|
83
|
+
|
84
|
+
|
85
|
+
|
86
|
+
# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #
|
87
|
+
# Advanced Filters #
|
88
|
+
|
89
|
+
# Switch of the negation checkbox in all text filters
|
90
|
+
Wice::Defaults::NEGATION_IN_STRING_FILTERS = false
|
91
|
+
|
92
|
+
|
93
|
+
|
94
|
+
# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #
|
95
|
+
# Showing All Queries #
|
96
|
+
|
97
|
+
# Enable or disable showing all queries (non-paginated table)
|
98
|
+
Wice::Defaults::ALLOW_SHOWING_ALL_QUERIES = true
|
99
|
+
|
100
|
+
# If number of all queries is more than this value, the user will be given a warning message
|
101
|
+
Wice::Defaults::START_SHOWING_WARNING_FROM = 100
|
102
|
+
|
103
|
+
|
104
|
+
# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #
|
105
|
+
# Saving Queries #
|
106
|
+
|
107
|
+
# Icon to delete a saved query
|
108
|
+
Wice::Defaults::DELETE_QUERY_ICON = 'icons/grid/delete.png'
|
109
|
+
|
110
|
+
# ActiveRecord model to store queries. Read the documentation for details
|
111
|
+
# QUERY_STORE_MODEL = 'WiceGridSerializedQuery'
|
112
|
+
Wice::Defaults::QUERY_STORE_MODEL = 'WiceGridSerializedQuery'
|
113
|
+
|
114
|
+
|
115
|
+
# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #
|
116
|
+
# Here go settings related to the calendar helpers #
|
117
|
+
|
118
|
+
# The default style of the date and datetime helper
|
119
|
+
# * <tt>:calendar</tt> - JS calendar
|
120
|
+
# * <tt>:standard</tt> - standard Rails date and datetime helpers
|
121
|
+
Wice::Defaults::HELPER_STYLE = :calendar
|
122
|
+
|
123
|
+
# Format of the datetime displayed.
|
124
|
+
# If you change the format, make sure to check if +DATETIME_PARSER+ can still parse this string.
|
125
|
+
Wice::Defaults::DATETIME_FORMAT = "%Y-%m-%d %H:%M"
|
126
|
+
|
127
|
+
# Format of the date displayed.
|
128
|
+
# If you change the format, make sure to check if +DATE_PARSER+ can still parse this string.
|
129
|
+
Wice::Defaults::DATE_FORMAT = "%Y-%m-%d"
|
130
|
+
|
131
|
+
# Format of the date displayed in jQuery's Datepicker
|
132
|
+
# If you change the format, make sure to check if +DATE_PARSER+ can still parse this string.
|
133
|
+
Wice::Defaults::DATE_FORMAT_JQUERY = "yy-mm-dd"
|
134
|
+
|
135
|
+
|
136
|
+
# With Calendar helpers enabled the parameter sent is the string displayed. This lambda will be given a date string in the
|
137
|
+
# format defined by +DATETIME_FORMAT+ and must generate a DateTime object.
|
138
|
+
# In many cases <tt>Time.zone.parse</tt> is enough, for instance, <tt>%Y-%m-%d</tt>. If you change the format, make sure to check this code
|
139
|
+
# and modify it if needed.
|
140
|
+
Wice::Defaults::DATETIME_PARSER = lambda{|datetime_string| Time.zone.parse(datetime_string) }
|
141
|
+
|
142
|
+
# With Calendar helpers enabled the parameter sent is the string displayed. This lambda will be given a date string in the
|
143
|
+
# format defined by +DATETIME+ and must generate a Date object.
|
144
|
+
# In many cases <tt>Date.parse</tt> is enough, for instance, <tt>%Y-%m-%d</tt>. If you change the format, make sure to check this code
|
145
|
+
# and modify it if needed.
|
146
|
+
Wice::Defaults::DATE_PARSER = lambda{|date_string| Date.parse(date_string) }
|
147
|
+
|
148
|
+
# Icon to popup the calendar.
|
149
|
+
Wice::Defaults::CALENDAR_ICON = "/images/icons/grid/calendar_view_month.png"
|
150
|
+
|
151
|
+
# popup calendar will be shown relative to the popup trigger element or to the mouse pointer
|
152
|
+
Wice::Defaults::POPUP_PLACEMENT_STRATEGY = :trigger # :pointer
|
153
|
+
|
154
|
+
######## Messages ########
|
155
|
+
|
156
|
+
Wice::Defaults::SHOW_FILTER_TOOLTIP = 'Show filter'
|
157
|
+
Wice::Defaults::HIDE_FILTER_TOOLTIP = 'Hide filter'
|
158
|
+
Wice::Defaults::CSV_EXPORT_TOOLTIP = 'Export to CSV'
|
159
|
+
|
160
|
+
Wice::Defaults::FILTER_TOOLTIP = "Filter"
|
161
|
+
Wice::Defaults::RESET_FILTER_TOOLTIP = "Reset"
|
162
|
+
|
163
|
+
Wice::Defaults::BOOLEAN_FILTER_TRUE_LABEL = 'yes'
|
164
|
+
Wice::Defaults::BOOLEAN_FILTER_FALSE_LABEL = 'no'
|
165
|
+
|
166
|
+
Wice::Defaults::PREVIOUS_LABEL = '« Previous'
|
167
|
+
Wice::Defaults::NEXT_LABEL = 'Next »'
|
168
|
+
|
169
|
+
# Title of the icon clicking on which will show the calendar to set the FROM date.
|
170
|
+
Wice::Defaults::DATE_SELECTOR_TOOLTIP_FROM = 'From'
|
171
|
+
# Title of the icon clicking on which will show the calendar to set the TO date.
|
172
|
+
Wice::Defaults::DATE_SELECTOR_TOOLTIP_TO = 'To'
|
173
|
+
|
174
|
+
# The title of the checkox to turn on negation
|
175
|
+
Wice::Defaults::NEGATION_CHECKBOX_TITLE = 'Exclude'
|
176
|
+
|
177
|
+
# link to switch to "show all records"
|
178
|
+
Wice::Defaults::SHOW_ALL_RECORDS_LABEL = 'show all'
|
179
|
+
|
180
|
+
# tooltip for the link to switch to "show all records"
|
181
|
+
Wice::Defaults::SHOW_ALL_RECORDS_TOOLTIP = 'Show all records'
|
182
|
+
|
183
|
+
# Warning message shown when the user wants to switch to all-records mode
|
184
|
+
Wice::Defaults::ALL_QUERIES_WARNING = 'Are you sure you want to display all records?'
|
185
|
+
|
186
|
+
# link to paginated view
|
187
|
+
Wice::Defaults::SWITCH_BACK_TO_PAGINATED_MODE_LABEL = "back to paginated view"
|
188
|
+
|
189
|
+
# tooltip for the link to paginated view
|
190
|
+
Wice::Defaults::SWITCH_BACK_TO_PAGINATED_MODE_TOOLTIP = "Switch back to the view with pages"
|
191
|
+
|
192
|
+
# Title of the date string.
|
193
|
+
Wice::Defaults::DATE_STRING_TOOLTIP = 'Click to delete'
|
194
|
+
|
195
|
+
|
196
|
+
Wice::Defaults::SAVED_QUERY_PANEL_TITLE = 'Saved Queries'
|
197
|
+
Wice::Defaults::SAVE_QUERY_BUTTON_LABEL = 'Save the state of filters'
|
198
|
+
|
199
|
+
Wice::Defaults::SAVED_QUERY_DELETION_CONFIRMATION = 'Are you sure?'
|
200
|
+
Wice::Defaults::SAVED_QUERY_DELETION_LINK_TITLE = 'Delete query'
|
201
|
+
Wice::Defaults::SAVED_QUERY_LINK_TITLE = 'Load query'
|
202
|
+
|
203
|
+
Wice::Defaults::VALIDATES_UNIQUENESS_ERROR = "A query with this name already exists"
|
204
|
+
Wice::Defaults::VALIDATES_PRESENCE_ERROR = "Please sumbit the name of the custom query"
|
205
|
+
|
206
|
+
Wice::Defaults::QUERY_DELETED_MESSAGE = "Saved query deleted."
|
207
|
+
Wice::Defaults::QUERY_SAVED_MESSAGE = "Query saved."
|
208
|
+
|
209
|
+
Wice::Defaults::SELECT_ALL = "Select all"
|
210
|
+
Wice::Defaults::DESELECT_ALL = "Remove selection"
|
211
|
+
|
212
|
+
######## Messages END ########
|
213
|
+
|
214
|
+
|
215
|
+
end
|
@@ -0,0 +1,161 @@
|
|
1
|
+
function WiceGridProcessor(name, base_request_for_filter, base_link_for_show_all_records,
|
2
|
+
link_for_export, parameter_name_for_query_loading, parameter_name_for_focus, environment){
|
3
|
+
|
4
|
+
this.checkIfJsFrameworkIsLoaded = function(){
|
5
|
+
if (! jQuery){
|
6
|
+
alert("jQuery not loaded, WiceGrid cannot proceed!")
|
7
|
+
}
|
8
|
+
}
|
9
|
+
|
10
|
+
this.checkIfJsFrameworkIsLoaded();
|
11
|
+
this.name = name;
|
12
|
+
this.parameter_name_for_query_loading = parameter_name_for_query_loading;
|
13
|
+
this.parameter_name_for_focus = parameter_name_for_focus;
|
14
|
+
this.base_request_for_filter = base_request_for_filter;
|
15
|
+
this.base_link_for_show_all_records = base_link_for_show_all_records;
|
16
|
+
this.link_for_export = link_for_export;
|
17
|
+
this.filter_declarations = new Array();
|
18
|
+
this.environment = environment;
|
19
|
+
|
20
|
+
this.toString = function(){
|
21
|
+
return "<WiceGridProcessor instance for grid '" + this.name + "'>";
|
22
|
+
}
|
23
|
+
|
24
|
+
|
25
|
+
this.process = function(dom_id_to_focus){
|
26
|
+
window.location = this.build_url_with_params(dom_id_to_focus);
|
27
|
+
}
|
28
|
+
|
29
|
+
this.reload_page_for_given_grid_state = function(grid_state){
|
30
|
+
var request_path = this.grid_state_to_request(grid_state);
|
31
|
+
window.location = this.append_to_url(this.base_link_for_show_all_records, request_path);
|
32
|
+
}
|
33
|
+
|
34
|
+
this.load_query = function(query_id){
|
35
|
+
var request = this.append_to_url(this.build_url_with_params(),
|
36
|
+
(this.parameter_name_for_query_loading + encodeURIComponent(query_id)));
|
37
|
+
window.location = request;
|
38
|
+
}
|
39
|
+
|
40
|
+
this.save_query = function(query_name, base_path_to_query_controller, grid_state, input_ids){
|
41
|
+
if (input_ids instanceof Array) {
|
42
|
+
input_ids.each(function(dom_id){
|
43
|
+
grid_state.push(['extra[' + dom_id + ']', $('#'+ dom_id)[0].value])
|
44
|
+
});
|
45
|
+
}
|
46
|
+
|
47
|
+
var request_path = this.grid_state_to_request(grid_state);
|
48
|
+
|
49
|
+
jQuery.ajax({
|
50
|
+
url: base_path_to_query_controller,
|
51
|
+
async: true,
|
52
|
+
data: request_path + '&query_name=' + encodeURIComponent(query_name),
|
53
|
+
dataType: 'script',
|
54
|
+
type: 'POST'
|
55
|
+
});
|
56
|
+
}
|
57
|
+
|
58
|
+
this.grid_state_to_request = function(grid_state){
|
59
|
+
return jQuery.map(grid_state, function(pair){
|
60
|
+
return encodeURIComponent(pair[0]) + '=' + encodeURIComponent(pair[1]);
|
61
|
+
}).join('&');
|
62
|
+
}
|
63
|
+
|
64
|
+
|
65
|
+
this.append_to_url = function(url, str){
|
66
|
+
var sep;
|
67
|
+
if (url.indexOf('?') != -1){
|
68
|
+
if (/[&\?]$/.exec(url)){
|
69
|
+
sep = '';
|
70
|
+
}else{
|
71
|
+
sep = '&';
|
72
|
+
}
|
73
|
+
}else{
|
74
|
+
sep = '?';
|
75
|
+
}
|
76
|
+
return url + sep + str;
|
77
|
+
}
|
78
|
+
|
79
|
+
|
80
|
+
this.build_url_with_params = function(dom_id_to_focus){
|
81
|
+
var results = new Array();
|
82
|
+
var _this = this;
|
83
|
+
jQuery.each(this.filter_declarations, function(i, filter_declaration){
|
84
|
+
param = _this.read_values_and_form_query_string(
|
85
|
+
filter_declaration.filter_name, filter_declaration.detached,
|
86
|
+
filter_declaration.templates, filter_declaration.ids);
|
87
|
+
if (param && param != ''){
|
88
|
+
results.push(param);
|
89
|
+
}
|
90
|
+
});
|
91
|
+
|
92
|
+
var res = this.base_request_for_filter;
|
93
|
+
if ( results.length != 0){
|
94
|
+
all_filter_params = results.join('&');
|
95
|
+
res = this.append_to_url(res, all_filter_params);
|
96
|
+
}
|
97
|
+
if (dom_id_to_focus){
|
98
|
+
res = this.append_to_url(res, this.parameter_name_for_focus + dom_id_to_focus);
|
99
|
+
}
|
100
|
+
return res;
|
101
|
+
}
|
102
|
+
|
103
|
+
this.reset = function(){
|
104
|
+
window.location = this.base_request_for_filter;
|
105
|
+
}
|
106
|
+
|
107
|
+
this.export_to_csv = function(){
|
108
|
+
window.location = this.link_for_export;
|
109
|
+
}
|
110
|
+
|
111
|
+
this.register = function(func){
|
112
|
+
this.filter_declarations.push(func);
|
113
|
+
}
|
114
|
+
|
115
|
+
this.read_values_and_form_query_string = function(filter_name, detached, templates, ids){
|
116
|
+
var res = new Array();
|
117
|
+
for(i = 0; i < templates.length; i++){
|
118
|
+
if($(ids[i]) == null){
|
119
|
+
if (this.environment == "development"){
|
120
|
+
message = 'WiceGrid: Error reading state of filter "' + filter_name + '". No DOM element with id "' + ids[i] + '" found.'
|
121
|
+
if (detached){
|
122
|
+
message += 'You have declared "' + filter_name +
|
123
|
+
'" as a detached filter but have not output it anywhere in the template. Read documentation about detached filters.'
|
124
|
+
}
|
125
|
+
alert(message);
|
126
|
+
}
|
127
|
+
return '';
|
128
|
+
}
|
129
|
+
var el = $('#' + ids[i]);
|
130
|
+
var val;
|
131
|
+
if (el[0] && el[0].type == 'checkbox'){
|
132
|
+
if (el[0].checked) val = 1;
|
133
|
+
} else {
|
134
|
+
val = el.val();
|
135
|
+
}
|
136
|
+
if (val instanceof Array) {
|
137
|
+
for(j = 0; j < val.length; j++){
|
138
|
+
if (val[j] && val[j] != "")
|
139
|
+
res.push(templates[i] + encodeURIComponent(val[j]));
|
140
|
+
}
|
141
|
+
} else if (val && val != ''){
|
142
|
+
res.push(templates[i] + encodeURIComponent(val));
|
143
|
+
}
|
144
|
+
}
|
145
|
+
return res.join('&');
|
146
|
+
}
|
147
|
+
|
148
|
+
};
|
149
|
+
|
150
|
+
function toggle_multi_select(select_id, link_obj, expand_label, collapse_label) {
|
151
|
+
var select = $('#' + select_id)[0];
|
152
|
+
if (select.multiple == true) {
|
153
|
+
select.multiple = false;
|
154
|
+
link_obj.title = expand_label;
|
155
|
+
} else {
|
156
|
+
select.multiple = true;
|
157
|
+
link_obj.title = collapse_label;
|
158
|
+
}
|
159
|
+
}
|
160
|
+
|
161
|
+
WiceGridProcessor._version = '0.4.3';
|
@@ -0,0 +1,153 @@
|
|
1
|
+
function WiceGridProcessor(name, base_request_for_filter, base_link_for_show_all_records,
|
2
|
+
link_for_export, parameter_name_for_query_loading, parameter_name_for_focus, environment){
|
3
|
+
|
4
|
+
this.checkIfJsFrameworkIsLoaded = function(){
|
5
|
+
if (typeof(Prototype) == "undefined"){
|
6
|
+
alert("Prototype javascript library not loaded, WiceGrid cannot proceed!")
|
7
|
+
}
|
8
|
+
}
|
9
|
+
|
10
|
+
|
11
|
+
this.checkIfJsFrameworkIsLoaded();
|
12
|
+
this.name = name;
|
13
|
+
this.parameter_name_for_query_loading = parameter_name_for_query_loading;
|
14
|
+
this.parameter_name_for_focus = parameter_name_for_focus;
|
15
|
+
this.base_request_for_filter = base_request_for_filter;
|
16
|
+
this.base_link_for_show_all_records = base_link_for_show_all_records;
|
17
|
+
this.link_for_export = link_for_export;
|
18
|
+
this.filter_declarations = new Array();
|
19
|
+
this.environment = environment;
|
20
|
+
|
21
|
+
this.toString = function(){
|
22
|
+
return "<WiceGridProcessor instance for grid '" + this.name + "'>";
|
23
|
+
}
|
24
|
+
|
25
|
+
|
26
|
+
this.process = function(dom_id_to_focus){
|
27
|
+
window.location = this.build_url_with_params(dom_id_to_focus);
|
28
|
+
}
|
29
|
+
|
30
|
+
this.reload_page_for_given_grid_state = function(grid_state){
|
31
|
+
var request_path = this.grid_state_to_request(grid_state);
|
32
|
+
window.location = this.append_to_url(this.base_link_for_show_all_records, request_path);
|
33
|
+
}
|
34
|
+
|
35
|
+
this.load_query = function(query_id){
|
36
|
+
var request = this.append_to_url(this.build_url_with_params(),
|
37
|
+
(this.parameter_name_for_query_loading + encodeURIComponent(query_id)));
|
38
|
+
window.location = request;
|
39
|
+
}
|
40
|
+
|
41
|
+
this.save_query = function(query_name, base_path_to_query_controller, grid_state, input_ids){
|
42
|
+
if (input_ids instanceof Array) {
|
43
|
+
input_ids.each(function(dom_id){
|
44
|
+
grid_state.push(['extra[' + dom_id + ']', $F(dom_id)])
|
45
|
+
});
|
46
|
+
}
|
47
|
+
|
48
|
+
var request_path = this.grid_state_to_request(grid_state);
|
49
|
+
|
50
|
+
new Ajax.Request(base_path_to_query_controller, {
|
51
|
+
asynchronous:true,
|
52
|
+
evalScripts:true,
|
53
|
+
parameters: request_path + '&query_name=' + encodeURIComponent(query_name)
|
54
|
+
})
|
55
|
+
}
|
56
|
+
|
57
|
+
this.grid_state_to_request = function(grid_state){
|
58
|
+
return res = grid_state.collect(function(pair){
|
59
|
+
return encodeURIComponent(pair[0]) + '=' + encodeURIComponent(pair[1]);
|
60
|
+
}).join('&');
|
61
|
+
}
|
62
|
+
|
63
|
+
|
64
|
+
this.append_to_url = function(url, str){
|
65
|
+
var sep;
|
66
|
+
if (url.include('?')){
|
67
|
+
if (/[&\?]$/.exec(url)){
|
68
|
+
sep = '';
|
69
|
+
}else{
|
70
|
+
sep = '&';
|
71
|
+
}
|
72
|
+
}else{
|
73
|
+
sep = '?';
|
74
|
+
}
|
75
|
+
return url + sep + str;
|
76
|
+
}
|
77
|
+
|
78
|
+
|
79
|
+
this.build_url_with_params = function(dom_id_to_focus){
|
80
|
+
var results = new Array();
|
81
|
+
this.filter_declarations.each(function(filter_declaration){
|
82
|
+
param = this.read_values_and_form_query_string(
|
83
|
+
filter_declaration.filter_name, filter_declaration.detached,
|
84
|
+
filter_declaration.templates, filter_declaration.ids);
|
85
|
+
if (param && param != ''){
|
86
|
+
results.push(param);
|
87
|
+
}
|
88
|
+
}.bind(this));
|
89
|
+
var res = this.base_request_for_filter;
|
90
|
+
if ( results.length != 0){
|
91
|
+
all_filter_params = results.join('&');
|
92
|
+
res = this.append_to_url(res, all_filter_params);
|
93
|
+
}
|
94
|
+
if (dom_id_to_focus){
|
95
|
+
res = this.append_to_url(res, this.parameter_name_for_focus + dom_id_to_focus);
|
96
|
+
}
|
97
|
+
return res;
|
98
|
+
}
|
99
|
+
|
100
|
+
this.reset = function(){
|
101
|
+
window.location = this.base_request_for_filter;
|
102
|
+
}
|
103
|
+
|
104
|
+
this.export_to_csv = function(){
|
105
|
+
window.location = this.link_for_export;
|
106
|
+
}
|
107
|
+
|
108
|
+
|
109
|
+
this.register = function(func){
|
110
|
+
this.filter_declarations.push(func);
|
111
|
+
}
|
112
|
+
|
113
|
+
this.read_values_and_form_query_string = function(filter_name, detached, templates, ids){
|
114
|
+
var res = new Array();
|
115
|
+
for(i = 0; i < templates.length; i++){
|
116
|
+
if($(ids[i]) == null){
|
117
|
+
if (this.environment == "development"){
|
118
|
+
message = 'WiceGrid: Error reading state of filter "' + filter_name + '". No DOM element with id "' + ids[i] + '" found.'
|
119
|
+
if (detached){
|
120
|
+
message += 'You have declared "' + filter_name +
|
121
|
+
'" as a detached filter but have not output it anywhere in the template. Read documentation about detached filters.'
|
122
|
+
}
|
123
|
+
alert(message);
|
124
|
+
}
|
125
|
+
return '';
|
126
|
+
}
|
127
|
+
var val = $F(ids[i]);
|
128
|
+
if (val instanceof Array) {
|
129
|
+
for(j = 0; j < val.length; j++){
|
130
|
+
if (val[j] && val[j] != "")
|
131
|
+
res.push(templates[i] + encodeURIComponent(val[j]));
|
132
|
+
}
|
133
|
+
} else if (val && ! val.empty()){
|
134
|
+
res.push(templates[i] + encodeURIComponent(val));
|
135
|
+
}
|
136
|
+
}
|
137
|
+
return res.join('&');
|
138
|
+
}
|
139
|
+
|
140
|
+
};
|
141
|
+
|
142
|
+
function toggle_multi_select(select_id, link_obj, expand_label, collapse_label) {
|
143
|
+
var select = $(select_id);
|
144
|
+
if (select.multiple == true) {
|
145
|
+
select.multiple = false;
|
146
|
+
link_obj.title = expand_label;
|
147
|
+
} else {
|
148
|
+
select.multiple = true;
|
149
|
+
link_obj.title = collapse_label;
|
150
|
+
}
|
151
|
+
}
|
152
|
+
|
153
|
+
WiceGridProcessor._version = '0.4.3';
|