Thomas Bruederli
2015-04-17 a3644638aaf0418598196a870204e0b632a4c8ad
program/js/list.js
@@ -61,6 +61,7 @@
  this.keyboard = false;
  this.toggleselect = false;
  this.aria_listbox = false;
  this.parent_focus = true;
  this.drag_active = false;
  this.col_drag_active = false;
@@ -104,11 +105,13 @@
      $(this.list).attr('aria-multiselectable', 'true');
  }
  var me = this;
  if (this.tbody) {
    this.rows = {};
    this.rowcount = 0;
    var r, len, rows = this.tbody.childNodes, me = this;
    var r, len, rows = this.tbody.childNodes;
    for (r=0, len=rows.length; r<len; r++) {
      this.rowcount += this.init_row(rows[r]) ? 1 : 0;
@@ -127,6 +130,10 @@
    }
  }
  if (this.parent_focus) {
    this.list.parentNode.onclick = function(e) { me.focus(); };
  }
  return this;
},
@@ -143,11 +150,11 @@
    var self = this, uid = row.uid;
    this.rows[uid] = {uid:uid, id:row.id, obj:row};
    // set eventhandlers to table row
    row.onmousedown = function(e){ return self.drag_row(e, this.uid); };
    row.onmouseup = function(e){ return self.click_row(e, this.uid); };
    // set eventhandlers to table row (only left-button-clicks in mouseup)
    $(row).mousedown(function(e) { return self.drag_row(e, this.uid); })
      .mouseup(function(e) { if (e.which == 1) return self.click_row(e, this.uid); });
    if (bw.touch) {
    if (bw.touch && row.addEventListener) {
      row.addEventListener('touchstart', function(e) {
        if (e.touches.length == 1) {
          self.touchmoved = false;
@@ -212,7 +219,7 @@
        if (this.column_fixed == r)
          continue;
        col = this.thead.rows[0].cells[r];
        col.onmousedown = function(e){ return p.drag_column(e, this); };
        col.onmousedown = function(e) { return p.drag_column(e, this); };
        this.colcount++;
      }
    }
@@ -233,8 +240,8 @@
    $(this.list).before(this.fixed_header);
    var me = this;
    $(window).resize(function(){ me.resize() });
    $(window).scroll(function(){
    $(window).resize(function() { me.resize(); });
    $(window).scroll(function() {
      var w = $(window);
      me.fixed_header.css('marginLeft', (-w.scrollLeft()) + 'px');
      if (!bw.webkit)
@@ -263,14 +270,14 @@
    var column_widths = [];
    // get column widths from original thead
    $(this.tbody).parent().find('thead tr td').each(function(index) {
    $(this.tbody).parent().find('thead th,thead td').each(function(index) {
      column_widths[index] = $(this).width();
    });
    // apply fixed widths to fixed table header
    $(this.thead).parent().width($(this.tbody).parent().width());
    $(this.thead).find('tr td').each(function(index) {
      $(this).css('width', column_widths[index]);
    $(this.thead).find('th,td').each(function(index) {
      $(this).width(column_widths[index]);
    });
    $(window).scroll();
@@ -945,7 +952,7 @@
  }
  // unselect if toggleselect is active and the same row was clicked again
  if (this.toggleselect && in_selection_before) {
  if (this.toggleselect && in_selection_before && !mod_key) {
    this.clear_selection();
  }
  // trigger event if selection changed
@@ -1410,7 +1417,8 @@
 */
scrollto: function(id)
{
  var row = this.rows[id].obj;
  var row = this.rows[id] ? this.rows[id].obj : null;
  if (row && this.frame) {
    var scroll_to = Number(row.offsetTop),
      head_offset = 0;
@@ -1499,7 +1507,11 @@
      $('> ' + self.col_tagname(), self.rows[uid].obj).each(function(n, cell) {
        if (self.subject_col < 0 || (self.subject_col >= 0 && self.subject_col == n)) {
          var subject = $(cell).text();
          // remove elements marked with "skip-on-drag" class
          cell = $(cell).clone();
          $(cell).find('.skip-on-drag').remove();
          var subject = cell.text();
          if (subject) {
            // remove leading spaces