@@ -25,6 +25,7 @@ $(document).ready(function() {
25
25
$ ( this ) . siblings ( 'input' ) . val ( $ ( this ) . val ( ) ) ;
26
26
} ) ;
27
27
$ ( '.datagrid .export-link' ) . click ( verify_export ) ;
28
+ $ ( '.datagrid form.header' ) . submit ( datagrid_cleanup_before_form_submission ) ;
28
29
_datagrid_is_loaded = true ;
29
30
} ) ;
30
31
@@ -40,10 +41,9 @@ $(document).ready(function() {
40
41
41
42
*/
42
43
function datagrid_toggle_mselect ( ) {
43
- jq_img = $ ( this ) ;
44
- jq_select = jq_img . siblings ( 'select' ) ;
45
- select_name = jq_select . attr ( 'name' ) ;
46
- multiple_attr = jq_select . attr ( 'multiple' ) ;
44
+ var jq_img = $ ( this ) ;
45
+ var jq_select = jq_img . siblings ( 'select' ) ;
46
+ var multiple_attr = jq_select . attr ( 'multiple' ) ;
47
47
if ( typeof multiple_attr !== 'undefined' && multiple_attr !== false ) {
48
48
jq_select . removeAttr ( 'multiple' ) ;
49
49
jq_select . siblings ( '.ms-parent' ) . hide ( ) ;
@@ -95,8 +95,8 @@ function datagrid_activate_mselect_ui(jq_select) {
95
95
96
96
*/
97
97
function datagrid_add_filter ( ) {
98
- jq_afs = $ ( '.datagrid .filters .add-filter select' ) ;
99
- filter_key = jq_afs . val ( ) ;
98
+ var jq_afs = $ ( '.datagrid .filters .add-filter select' ) ;
99
+ var filter_key = jq_afs . val ( ) ;
100
100
if ( filter_key != '' ) {
101
101
datagrid_activate_filter ( filter_key ) ;
102
102
jq_afs . val ( '' ) ;
@@ -114,12 +114,12 @@ function datagrid_add_filter() {
114
114
*/
115
115
function datagrid_prep_filters ( ) {
116
116
$ ( '.datagrid .filters tr' ) . each ( function ( ) {
117
- jq_tr = $ ( this ) ;
117
+ var jq_tr = $ ( this ) ;
118
118
// Added _filter to address CSS collision with Bootstrap
119
119
// Ref: https://github.com/level12/webgrid/issues/28
120
- filter_key = jq_tr . attr ( 'class' ) . replace ( new RegExp ( '_filter$' ) , '' ) ;
120
+ var filter_key = jq_tr . attr ( 'class' ) . replace ( new RegExp ( '_filter$' ) , '' ) ;
121
121
if ( filter_key != 'add-filter' ) {
122
- op_select = jq_tr . find ( '.operator select' ) ;
122
+ var op_select = jq_tr . find ( '.operator select' ) ;
123
123
if ( op_select . val ( ) != '' ) {
124
124
// filter should be active, so activate it
125
125
datagrid_activate_filter ( filter_key ) ;
@@ -142,13 +142,13 @@ function datagrid_prep_filters(){
142
142
function datagrid_activate_filter ( filter_key ) {
143
143
// Added _filter to address CSS collision with Bootstrap
144
144
// Ref: https://github.com/level12/webgrid/issues/28
145
- jq_tr = $ ( '.datagrid .filters tr.' + filter_key + "_filter" ) ;
145
+ var jq_tr = $ ( '.datagrid .filters tr.' + filter_key + "_filter" ) ;
146
146
// show the filter's row of controls
147
147
jq_tr . show ( ) ;
148
148
149
149
// make sure the option in the "Add Filter" select box for this
150
150
// filter is disabled
151
- jq_option = $ ( '.datagrid .filters .add-filter option[value="' + filter_key + '"]' ) ;
151
+ var jq_option = $ ( '.datagrid .filters .add-filter option[value="' + filter_key + '"]' ) ;
152
152
jq_option . attr ( 'disabled' , 'disabled' ) ;
153
153
}
154
154
@@ -161,11 +161,8 @@ function datagrid_activate_filter(filter_key) {
161
161
162
162
*/
163
163
function datagrid_on_operator_change ( ) {
164
- jq_op_select = $ ( this ) ;
165
- jq_tr = jq_op_select . closest ( 'tr' ) ;
166
- // Added _filter to address CSS collision with Bootstrap
167
- // Ref: https://github.com/level12/webgrid/issues/28
168
- filter_key = jq_tr . attr ( 'class' ) . replace ( new RegExp ( '_filter$' ) , '' ) ;
164
+ var jq_op_select = $ ( this ) ;
165
+ var jq_tr = jq_op_select . closest ( 'tr' ) ;
169
166
datagrid_toggle_filter_inputs ( jq_tr ) ;
170
167
}
171
168
@@ -177,10 +174,13 @@ function datagrid_on_operator_change() {
177
174
178
175
*/
179
176
function datagrid_toggle_filter_inputs ( jq_filter_tr ) {
180
- op_key = jq_filter_tr . find ( '.operator select' ) . val ( ) ;
181
- fields1 = jq_filter_tr . find ( '.inputs1' ) . children ( ) ;
182
- fields2 = jq_filter_tr . find ( '.inputs2' ) . children ( ) ;
183
- v1name = 'v1(' + filter_key + ')' ;
177
+ // Added _filter to address CSS collision with Bootstrap
178
+ // Ref: https://github.com/level12/webgrid/issues/28
179
+ var filter_key = jq_filter_tr . attr ( 'class' ) . replace ( new RegExp ( '_filter$' ) , '' ) ;
180
+ var op_key = jq_filter_tr . find ( '.operator select' ) . val ( ) ;
181
+ var fields1 = jq_filter_tr . find ( '.inputs1' ) . children ( ) ;
182
+ var fields2 = jq_filter_tr . find ( '.inputs2' ) . children ( ) ;
183
+ var v1name = 'v1(' + filter_key + ')' ;
184
184
185
185
if ( op_key == null ) {
186
186
fields1 . show ( ) ;
@@ -194,8 +194,8 @@ function datagrid_toggle_filter_inputs(jq_filter_tr) {
194
194
fields2 . hide ( ) ;
195
195
fields2 . val ( '' ) ;
196
196
} else {
197
- op_data = datagrid_data [ filter_key ] [ op_key ] ;
198
- field_type = op_data . field_type ;
197
+ var op_data = datagrid_data [ filter_key ] [ op_key ] ;
198
+ var field_type = op_data . field_type ;
199
199
if ( field_type == null ) {
200
200
fields1 . hide ( ) ;
201
201
fields1 . val ( '' ) ;
@@ -258,14 +258,14 @@ function datagrid_filter_inactive(filter_key){
258
258
259
259
*/
260
260
function datagrid_toggle_sort_selects ( ) {
261
- jq_dds = $ ( '.datagrid .header .sorting dd' ) ;
261
+ var jq_dds = $ ( '.datagrid .header .sorting dd' ) ;
262
262
if ( jq_dds . length == 0 ) return ;
263
- dd1 = jq_dds . eq ( 0 )
264
- dd2 = jq_dds . eq ( 1 )
265
- dd3 = jq_dds . eq ( 2 )
266
- sb1 = dd1 . find ( 'select' ) ;
267
- sb2 = dd2 . find ( 'select' ) ;
268
- sb3 = dd3 . find ( 'select' ) ;
263
+ var dd1 = jq_dds . eq ( 0 )
264
+ var dd2 = jq_dds . eq ( 1 )
265
+ var dd3 = jq_dds . eq ( 2 )
266
+ var sb1 = dd1 . find ( 'select' ) ;
267
+ var sb2 = dd2 . find ( 'select' ) ;
268
+ var sb3 = dd3 . find ( 'select' ) ;
269
269
270
270
if ( sb1 . val ( ) == '' ) {
271
271
dd2 . hide ( ) ;
@@ -316,3 +316,20 @@ function verify_export(event) {
316
316
}
317
317
return true ;
318
318
}
319
+
320
+ /*
321
+ datagrid_cleanup_before_form_submission()
322
+
323
+ Called before form submission to remove filter form rows that are unused. This reduces the
324
+ size of the URL by not including query parameters for filters that are empty.
325
+ */
326
+ function datagrid_cleanup_before_form_submission ( ) {
327
+ $ ( '.datagrid .filters tr' ) . each ( function ( idx , row ) {
328
+ var $row = $ ( row ) ;
329
+ var $operator = $row . find ( '.operator select' ) ;
330
+ if ( $operator . length && $operator . val ( ) === '' ) {
331
+ $row . remove ( ) ;
332
+ }
333
+ } ) ;
334
+ return true ;
335
+ }
0 commit comments