| [ 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 var escaped_field_name = value.replace(/\[\]/g, '\\[\\]'); 19 serialized_form_fields[value] = $('[name=filters_open]').find('[name=' + escaped_field_name + ']').serialize(); 20 }); 21 22 /* Set up events to modify the form css to show when a stored query has been modified */ 23 begin_form = $('[name=filters_open]').serialize(); 24 25 $('[:input').live("change", function() { 26 filter_highlight_changes($(this)); 27 }); 28 $(':checkbox').live("click", function() { 29 filter_highlight_changes($(this)); 30 }); 31 }); 32 33 function filter_toggle_field_changed(field) { 34 var field_type = field.attr('type'); 35 var starting_value = serialized_form_fields[field.attr('name')]; 36 var current_value = field.serialize(); 37 38 // unchecked boxes start as undefined but if checked and then unchecked it 39 // is no longer undefined so the comparison breaks. Reset it to undefined. 40 if( field_type=='checkbox' && current_value == '') { 41 current_value = undefined; 42 } 43 if( current_value != starting_value ) { 44 // field is changed 45 filter_field_dirty(field); 46 } else { 47 // field is not changed 48 filter_field_clean(field); 49 } 50 } 51 52 function filter_highlight_changes(item) { 53 filter_toggle_field_changed( item ); 54 55 /* Check if form is different that started with */ 56 var changed_form = $('[name=filters_open]').serialize(); 57 if( begin_form == changed_form ) { 58 filter_clean_all(); 59 } 60 } 61 62 function filter_named_filter_clean() { 63 /* be sure it's clean whether it's stored filter or not */ 64 var selected_text = $('[name=source_query_id] option:selected').html(); 65 if( selected_text.charAt(0) == '*' ) { 66 $('[name=source_query_id]').removeClass('tainted'); 67 var reset_text = selected_text.substring(2,selected_text.length); 68 $('[name=source_query_id] option:selected').html(reset_text); 69 } 70 } 71 72 function filter_named_filter_dirty() { 73 var stored_query_id = $('[name=source_query_id]').val(); 74 if( stored_query_id == -1 ) { 75 /* Only make it dirty if it's a stored filter */ 76 return; 77 } 78 /* stored query in filter is tainted */ 79 var selected_text = $('[name=source_query_id] option:selected').html(); 80 if( selected_text.charAt(0) != '*' ) { 81 $('[name=source_query_id] option:selected').prepend('* '); 82 $('[name=source_query_id]').addClass('tainted'); 83 } 84 } 85 86 function filter_field_clean( item ) { 87 item.parent().removeClass('tainted'); 88 } 89 function filter_field_dirty( item ) { 90 if( !item.parent().hasClass('tainted') ) { 91 filter_named_filter_dirty(); 92 item.parent().addClass('tainted'); 93 } 94 } 95 96 function filter_clean_all() { 97 filter_named_filter_clean(); 98 $('.tainted').each(function() { 99 $(this).removeClass('tainted'); 100 }); 101 }
title
Description
Body
title
Description
Body
title
Description
Body
title
Body
| Generated: Thu Jul 28 15:48:31 2011 | Cross-referenced by PHPXref 0.7 |