[ Index ]

PHP Cross Reference of MantisBT

title

Body

[close]

/javascript/dev/ -> bugFilter.js (source)

   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  }


Generated: Sat Nov 20 05:32:17 2010 Cross-referenced by PHPXref 0.7