[ Index ]
 

Code source de dotProject 2.1 RC1

Accédez au Source d'autres logiciels libres | Soutenez Angelica Josefina !

title

Body

[fermer]

/js/ -> collapse.js (source)

   1  /**
   2   * Support for collapsible views. 
   3   *
   4   * Rows are marked with an ID.  Rows are deleted by ID, or added by ID.
   5   * The user
   6   */
   7  
   8  var saved_rows = new Comparable;
   9  
  10  function toggle_collapse(item, collapse)
  11  {
  12      var item_image = document.getElementById('image_' + item);
  13      if (! item_image) {
  14          return false;
  15      }
  16      // Grab the row that belongs to the icon
  17      var item_elem = document.getElementById('r_' + item);
  18      var parent = item_elem.parentNode;
  19      // Check to see if the item is toggled.
  20      // This braindead method is required because IE does not
  21      // implement substr correctly and you cannot use negative
  22      // offsets. Why anyone would use such a crappy browser is
  23      // beyond me.
  24      var bottom = item_image.name.substr(item_image.name.length-2,2);
  25      if (bottom == '_0') {
  26          // Item is collapsed, expand it.
  27          if (collapse) {
  28              return false;
  29          }
  30          var orig = saved_rows.find(item);
  31          if (orig) {
  32              // Find the next sibling and insert the node before it.
  33              var next = item_elem.nextSibling;
  34              for (var j = 0; j < orig.length; j++)
  35                  parent.insertBefore(orig[j], next);
  36              item_image.name = item_image.id + '_1';
  37              item_image.src = './images/arrow-down.gif';
  38          } 
  39      } else {
  40          // Item is expanded, collapse it.
  41          item_image.name = item_image.id + '_0';
  42          item_image.src = './images/arrow-right.gif';
  43          var row_array = new Array();
  44          var rid = 0;
  45          var sib = item_elem.nextSibling;
  46          var level_item = document.getElementById('rl_' + item);
  47          var level = level_item.value;
  48          while (sib) {
  49              if (! sib.id) {
  50                  sib = sib.nextSibling;
  51                  continue;
  52              }
  53              var sib_id = sib.id.substr(2);
  54              var sublevel = document.getElementById('rl_' + sib_id).value;
  55              if (sublevel <= level)
  56                  break;
  57              var nxt = sib.nextSibling;
  58              // Now delete the row
  59              row_array[rid++] = parent.removeChild(sib);
  60              sib = nxt;
  61          }
  62          saved_rows.add(item, row_array);
  63      }
  64      return true;
  65  }
  66  
  67  function collapse_all(parent)
  68  {
  69      var parent_elem = document.getElementById(parent);
  70      for (var i = 0; i < parent_elem.childNodes.length; i++) {
  71          if (parent_elem.childNodes[i].tagName == 'TR' && parent_elem.childNodes[i].id) {
  72              toggle_collapse(parent_elem.childNodes[i].id.substr(2), true);
  73          }
  74      }
  75  }
  76  
  77  var show_tab_function = null;
  78  var hide_tab_function = null;
  79  
  80  function show_tab(i)
  81  {
  82      hide_tabs();
  83      if (show_tab_function) {
  84          show_tab_function(i);
  85          return;
  86      }
  87      var tab = document.getElementById('tab_' + i);
  88      tab.style.display = 'block';
  89      tab = document.getElementById('toptab_' + i);
  90      tab.className = 'tabon';
  91  }
  92  
  93  function hide_tabs()
  94  {
  95      if (hide_tab_function) {
  96          hide_tab_function();
  97          return;
  98      }
  99      var tabs = document.getElementsByTagName('td');
 100      var i;
 101      for(i = 0; i < tabs.length; i++)
 102          if (tabs[i].className == 'tabon')
 103              tabs[i].className = 'taboff';
 104  
 105      tabs = document.getElementsByTagName('div');
 106      for(i = 0; i < tabs.length; i++)
 107          if (tabs[i].className == 'tab')
 108              tabs[i].style.display = 'none';
 109  } 


Généré le : Sun Feb 18 19:46:52 2007 par Balluche grâce à PHPXref 0.7