Thomas Bruederli
2014-01-20 6f170902580c8cef342c0c65df1b98cbd293a79d
program/js/list.js
@@ -107,11 +107,11 @@
 */
init_row: function(row)
{
  row.uid = this.get_row_uid(row);
  // make references in internal array and set event handlers
  if (row && String(row.id).match(this.id_regexp)) {
    var self = this,
      uid = RegExp.$1;
    row.uid = uid;
  if (row && row.uid) {
    var self = this, uid = row.uid;
    this.rows[uid] = {uid:uid, id:row.id, obj:row};
    // set eventhandlers to table row
@@ -291,6 +291,7 @@
    if (row.id) domrow.id = row.id;
    if (row.className) domrow.className = row.className;
    if (row.style) $.extend(domrow.style, row.style);
    if (row.uid) $(domrow).data('uid', row.uid);
    for (var domcell, col, i=0; row.cols && i < row.cols.length; i++) {
      col = row.cols[i];
@@ -589,7 +590,7 @@
    row.expanded = true;
    depth = row.depth;
    new_row = row.obj.nextSibling;
    this.update_expando(row.uid, true);
    this.update_expando(row.id, true);
    this.triggerEvent('expandcollapse', { uid:row.uid, expanded:row.expanded, obj:row.obj });
  }
  else {
@@ -639,7 +640,7 @@
    row.expanded = false;
    depth = row.depth;
    new_row = row.obj.nextSibling;
    this.update_expando(row.uid);
    this.update_expando(row.id);
    this.triggerEvent('expandcollapse', { uid:row.uid, expanded:row.expanded, obj:row.obj });
    // don't collapse sub-root tree in multiexpand mode 
@@ -661,7 +662,7 @@
          $(new_row).css('display', 'none');
        if (r.has_children && r.expanded) {
          r.expanded = false;
          this.update_expando(r.uid, false);
          this.update_expando(r.id, false);
          this.triggerEvent('expandcollapse', { uid:r.uid, expanded:r.expanded, obj:new_row });
        }
      }
@@ -683,7 +684,7 @@
    row.expanded = true;
    depth = row.depth;
    new_row = row.obj.nextSibling;
    this.update_expando(row.uid, true);
    this.update_expando(row.id, true);
    this.triggerEvent('expandcollapse', { uid:row.uid, expanded:row.expanded, obj:row.obj });
  }
  else {
@@ -700,7 +701,7 @@
        $(new_row).css('display', '');
        if (r.has_children && !r.expanded) {
          r.expanded = true;
          this.update_expando(r.uid, true);
          this.update_expando(r.id, true);
          this.triggerEvent('expandcollapse', { uid:r.uid, expanded:r.expanded, obj:new_row });
        }
      }
@@ -714,13 +715,26 @@
},
update_expando: function(uid, expanded)
update_expando: function(id, expanded)
{
  var expando = document.getElementById('rcmexpando' + uid);
  var expando = document.getElementById('rcmexpando' + id);
  if (expando)
    expando.className = expanded ? 'expanded' : 'collapsed';
},
get_row_uid: function(row)
{
  if (row && row.uid)
    return row.uid;
  var uid;
  if (row && (uid = $(row).data('uid')))
    row.uid = uid;
  else if (row && String(row.id).match(this.id_regexp))
    row.uid = RegExp.$1;
  return row.uid;
},
/**
 * get first/next/previous/last rows that are not hidden
@@ -756,11 +770,11 @@
get_first_row: function()
{
  if (this.rowcount) {
    var i, len, rows = this.tbody.childNodes;
    var i, len, uid, rows = this.tbody.childNodes;
    for (i=0, len=rows.length-1; i<len; i++)
      if (rows[i].id && String(rows[i].id).match(this.id_regexp) && this.rows[RegExp.$1] != null)
        return RegExp.$1;
      if (rows[i].id && (uid = this.get_row_uid(rows[i])))
        return uid;
  }
  return null;
@@ -769,11 +783,11 @@
get_last_row: function()
{
  if (this.rowcount) {
    var i, rows = this.tbody.childNodes;
    var i, uid, rows = this.tbody.childNodes;
    for (i=rows.length-1; i>=0; i--)
      if (rows[i].id && String(rows[i].id).match(this.id_regexp) && this.rows[RegExp.$1] != null)
        return RegExp.$1;
      if (rows[i].id && (uid = this.get_row_uid(rows[i])))
        return uid;
  }
  return null;
@@ -1267,7 +1281,7 @@
        this.collapse(selected_row);
    }
    this.update_expando(selected_row.uid, selected_row.expanded);
    this.update_expando(selected_row.id, selected_row.expanded);
    return false;
  }
@@ -1346,12 +1360,9 @@
    // get selected rows (in display order), don't use this.selection here
    $(this.row_tagname() + '.selected', this.tbody).each(function() {
      if (!String(this.id).match(self.id_regexp))
        return;
      var uid = self.get_row_uid(this), row = self.rows[uid];
      var uid = RegExp.$1, row = self.rows[uid];
      if ($.inArray(uid, selection) > -1)
      if (!uid || $.inArray(uid, selection) > -1)
        return;
      selection.push(uid);