Sun, 29 Sep 2024 14:40:43 +0200
allow find() member function to start in an arbitrary subtree
relates to #166
390 | 1 | function toggleVisibility(linkObj) |
2 | { | |
3 | var base = $(linkObj).attr('id'); | |
4 | var summary = $('#'+base+'-summary'); | |
5 | var content = $('#'+base+'-content'); | |
6 | var trigger = $('#'+base+'-trigger'); | |
7 | var src=$(trigger).attr('src'); | |
8 | if (content.is(':visible')===true) { | |
9 | content.hide(); | |
10 | summary.show(); | |
11 | $(linkObj).addClass('closed').removeClass('opened'); | |
12 | $(trigger).attr('src',src.substring(0,src.length-8)+'closed.png'); | |
13 | } else { | |
14 | content.show(); | |
15 | summary.hide(); | |
16 | $(linkObj).removeClass('closed').addClass('opened'); | |
17 | $(trigger).attr('src',src.substring(0,src.length-10)+'open.png'); | |
18 | } | |
19 | return false; | |
20 | } | |
21 | ||
22 | function updateStripes() | |
23 | { | |
24 | $('table.directory tr'). | |
25 | removeClass('even').filter(':visible:even').addClass('even'); | |
26 | } | |
27 | ||
28 | function toggleLevel(level) | |
29 | { | |
30 | $('table.directory tr').each(function() { | |
31 | var l = this.id.split('_').length-1; | |
32 | var i = $('#img'+this.id.substring(3)); | |
33 | var a = $('#arr'+this.id.substring(3)); | |
34 | if (l<level+1) { | |
35 | i.removeClass('iconfopen iconfclosed').addClass('iconfopen'); | |
36 | a.html('▼'); | |
37 | $(this).show(); | |
38 | } else if (l==level+1) { | |
39 | i.removeClass('iconfclosed iconfopen').addClass('iconfclosed'); | |
40 | a.html('►'); | |
41 | $(this).show(); | |
42 | } else { | |
43 | $(this).hide(); | |
44 | } | |
45 | }); | |
46 | updateStripes(); | |
47 | } | |
48 | ||
49 | function toggleFolder(id) | |
50 | { | |
51 | // the clicked row | |
52 | var currentRow = $('#row_'+id); | |
53 | ||
54 | // all rows after the clicked row | |
55 | var rows = currentRow.nextAll("tr"); | |
56 | ||
57 | var re = new RegExp('^row_'+id+'\\d+_$', "i"); //only one sub | |
58 | ||
59 | // only match elements AFTER this one (can't hide elements before) | |
60 | var childRows = rows.filter(function() { return this.id.match(re); }); | |
61 | ||
62 | // first row is visible we are HIDING | |
63 | if (childRows.filter(':first').is(':visible')===true) { | |
64 | // replace down arrow by right arrow for current row | |
65 | var currentRowSpans = currentRow.find("span"); | |
66 | currentRowSpans.filter(".iconfopen").removeClass("iconfopen").addClass("iconfclosed"); | |
67 | currentRowSpans.filter(".arrow").html('►'); | |
68 | rows.filter("[id^=row_"+id+"]").hide(); // hide all children | |
69 | } else { // we are SHOWING | |
70 | // replace right arrow by down arrow for current row | |
71 | var currentRowSpans = currentRow.find("span"); | |
72 | currentRowSpans.filter(".iconfclosed").removeClass("iconfclosed").addClass("iconfopen"); | |
73 | currentRowSpans.filter(".arrow").html('▼'); | |
74 | // replace down arrows by right arrows for child rows | |
75 | var childRowsSpans = childRows.find("span"); | |
76 | childRowsSpans.filter(".iconfopen").removeClass("iconfopen").addClass("iconfclosed"); | |
77 | childRowsSpans.filter(".arrow").html('►'); | |
78 | childRows.show(); //show all children | |
79 | } | |
80 | updateStripes(); | |
81 | } | |
82 | ||
83 | ||
84 | function toggleInherit(id) | |
85 | { | |
86 | var rows = $('tr.inherit.'+id); | |
87 | var img = $('tr.inherit_header.'+id+' img'); | |
88 | var src = $(img).attr('src'); | |
89 | if (rows.filter(':first').is(':visible')===true) { | |
90 | rows.css('display','none'); | |
91 | $(img).attr('src',src.substring(0,src.length-8)+'closed.png'); | |
92 | } else { | |
93 | rows.css('display','table-row'); // using show() causes jump in firefox | |
94 | $(img).attr('src',src.substring(0,src.length-10)+'open.png'); | |
95 | } | |
96 | } | |
97 |