| [ Index ] |
PHP Cross Reference of MantisBT |
[Summary view] [Print] [Text view]
1 var begin_form = ''; 2 var form_fields = new Array(); 3 var serialized_form_fields = new Array(); 4 $(document).ready(function(){ 5 var i = 0; 6 $('[name=filters_open]').find('input').each(function() { 7 var formname = $(this).parent('form').attr('name'); 8 if( formname != 'list_queries_open' && formname != 'open_queries' && formname != 'save_query' ) { 9 // serialize the field and add it to an array 10 11 if( $.inArray($(this).attr('name'),form_fields) == -1 ) { 12 form_fields[i] = $(this).attr('name'); 13 i++; 14 } 15 } 16 }); 17 $.each( form_fields, function (index, value) { 18 serialized_form_fields[value] = $('[name=filters_open]').find('[name='+value+']').serialize(); 19 }); 20 21 /* Set up events to modify the form css to show when a stored query has been modified */ 22 begin_form = $('[name=filters_open]').serialize(); 23 24 $('[:input').live("change", function() { 25 filter_highlight_changes($(this)); 26 }); 27 $(':checkbox').live("click", function() { 28 filter_highlight_changes($(this)); 29 }); 30 }); 31 32 function filter_toggle_field_changed(field) { 33 var field_type = field.attr('type'); 34 var starting_value = serialized_form_fields[field.attr('name')]; 35 var current_value = field.serialize(); 36 37 // unchecked boxes start as undefined but if checked and then unchecked it 38 // is no longer undefined so the comparison breaks. Reset it to undefined. 39 if( field_type=='checkbox' && current_value == '') { 40 current_value = undefined; 41 } 42 if( current_value != starting_value ) { 43 // field is changed 44 filter_field_dirty(field); 45 } else { 46 // field is not changed 47 filter_field_clean(field); 48 } 49 } 50 51 function filter_highlight_changes(item) { 52 filter_toggle_field_changed( item ); 53 54 /* Check if form is different that started with */ 55 var changed_form = $('[name=filters_open]').serialize(); 56 if( begin_form == changed_form ) { 57 filter_clean_all(); 58 } 59 } 60 61 function filter_named_filter_clean() { 62 /* be sure it's clean whether it's stored filter or not */ 63 var selected_text = $('[name=source_query_id] option:selected').html(); 64 if( selected_text.charAt(0) == '*' ) { 65 $('[name=source_query_id]').removeClass('tainted'); 66 var reset_text = selected_text.substring(2,selected_text.length); 67 $('[name=source_query_id] option:selected').html(reset_text); 68 } 69 } 70 71 function filter_named_filter_dirty() { 72 var stored_query_id = $('[name=source_query_id]').val(); 73 if( stored_query_id == -1 ) { 74 /* Only make it dirty if it's a stored filter */ 75 return; 76 } 77 /* stored query in filter is tainted */ 78 var selected_text = $('[name=source_query_id] option:selected').html(); 79 if( selected_text.charAt(0) != '*' ) { 80 $('[name=source_query_id] option:selected').prepend('* '); 81 $('[name=source_query_id]').addClass('tainted'); 82 } 83 } 84 85 function filter_field_clean( item ) { 86 item.parent().removeClass('tainted'); 87 } 88 function filter_field_dirty( item ) { 89 if( !item.parent().hasClass('tainted') ) { 90 filter_named_filter_dirty(); 91 item.parent().addClass('tainted'); 92 } 93 } 94 95 function filter_clean_all() { 96 filter_named_filter_clean(); 97 $('.tainted').each(function() { 98 $(this).removeClass('tainted'); 99 }); 100 }
title
Description
Body
title
Description
Body
title
Description
Body
title
Body
| Generated: Sat Nov 20 05:32:17 2010 | Cross-referenced by PHPXref 0.7 |