[ Index ]

PHP Cross Reference of WordPress Trunk (Updated Daily)

Search

title

Body

[close]

/wp-includes/js/jquery/ -> jquery.table-hotkeys.js (source)

   1  (function($){
   2      $.fn.filter_visible = function(depth) {
   3          depth = depth || 3;
   4          var is_visible = function() {
   5              var p = $(this), i;
   6              for(i=0; i<depth-1; ++i) {
   7                  if (!p.is(':visible')) return false;
   8                  p = p.parent();
   9              }
  10              return true;
  11          };
  12          return this.filter(is_visible);
  13      };
  14      $.table_hotkeys = function(table, keys, opts) {
  15          opts = $.extend($.table_hotkeys.defaults, opts);
  16          var selected_class, destructive_class, set_current_row, adjacent_row_callback, get_adjacent_row, adjacent_row, prev_row, next_row, check, get_first_row, get_last_row, make_key_callback, first_row;
  17  
  18          selected_class = opts.class_prefix + opts.selected_suffix;
  19          destructive_class = opts.class_prefix + opts.destructive_suffix;
  20          set_current_row = function (tr) {
  21              if ($.table_hotkeys.current_row) $.table_hotkeys.current_row.removeClass(selected_class);
  22              tr.addClass(selected_class);
  23              tr[0].scrollIntoView(false);
  24              $.table_hotkeys.current_row = tr;
  25          };
  26          adjacent_row_callback = function(which) {
  27              if (!adjacent_row(which) && typeof opts[which+'_page_link_cb'] === 'function' ) {
  28                  opts[which+'_page_link_cb']();
  29              }
  30          };
  31          get_adjacent_row = function(which) {
  32              var first_row, method;
  33  
  34              if (!$.table_hotkeys.current_row) {
  35                  first_row = get_first_row();
  36                  $.table_hotkeys.current_row = first_row;
  37                  return first_row[0];
  38              }
  39              method = 'prev' == which? $.fn.prevAll : $.fn.nextAll;
  40              return method.call($.table_hotkeys.current_row, opts.cycle_expr).filter_visible()[0];
  41          };
  42          adjacent_row = function(which) {
  43              var adj = get_adjacent_row(which);
  44              if (!adj) return false;
  45              set_current_row($(adj));
  46              return true;
  47          };
  48          prev_row = function() { return adjacent_row('prev'); };
  49          next_row = function() { return adjacent_row('next'); };
  50          check = function() {
  51              $(opts.checkbox_expr, $.table_hotkeys.current_row).each(function() {
  52                  this.checked = !this.checked;
  53              });
  54          };
  55          get_first_row = function() {
  56              return $(opts.cycle_expr, table).filter_visible().eq(opts.start_row_index);
  57          };
  58          get_last_row = function() {
  59              var rows = $(opts.cycle_expr, table).filter_visible();
  60              return rows.eq(rows.length-1);
  61          };
  62          make_key_callback = function(expr) {
  63              return function() {
  64                  if ( null == $.table_hotkeys.current_row ) return false;
  65                  var clickable = $(expr, $.table_hotkeys.current_row);
  66                  if (!clickable.length) return false;
  67                  if (clickable.is('.'+destructive_class)) next_row() || prev_row();
  68                  clickable.trigger( 'click' );
  69              };
  70          };
  71          first_row = get_first_row();
  72          if (!first_row.length) return;
  73          if (opts.highlight_first)
  74              set_current_row(first_row);
  75          else if (opts.highlight_last)
  76              set_current_row(get_last_row());
  77          $.hotkeys.add(opts.prev_key, opts.hotkeys_opts, function() {return adjacent_row_callback('prev');});
  78          $.hotkeys.add(opts.next_key, opts.hotkeys_opts, function() {return adjacent_row_callback('next');});
  79          $.hotkeys.add(opts.mark_key, opts.hotkeys_opts, check);
  80          $.each(keys, function() {
  81              var callback, key;
  82  
  83              if ( typeof this[1] === 'function' ) {
  84                  callback = this[1];
  85                  key = this[0];
  86                  $.hotkeys.add(key, opts.hotkeys_opts, function(event) { return callback(event, $.table_hotkeys.current_row); });
  87              } else {
  88                  key = this;
  89                  $.hotkeys.add(key, opts.hotkeys_opts, make_key_callback('.'+opts.class_prefix+key));
  90              }
  91          });
  92  
  93      };
  94      $.table_hotkeys.current_row = null;
  95      $.table_hotkeys.defaults = {cycle_expr: 'tr', class_prefix: 'vim-', selected_suffix: 'current',
  96          destructive_suffix: 'destructive', hotkeys_opts: {disableInInput: true, type: 'keypress'},
  97          checkbox_expr: ':checkbox', next_key: 'j', prev_key: 'k', mark_key: 'x',
  98          start_row_index: 2, highlight_first: false, highlight_last: false, next_page_link_cb: false, prev_page_link_cb: false};
  99  })(jQuery);


Generated : Fri Nov 15 08:20:01 2024 Cross-referenced by PHPXref