[ Index ] |
|
Code source de dotProject 2.1 RC1 |
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 }
titre
Description
Corps
titre
Description
Corps
titre
Description
Corps
titre
Corps
Généré le : Sun Feb 18 19:46:52 2007 | par Balluche grâce à PHPXref 0.7 |