Mercurial > hg > Members > tatsuki > bench > jungle-core
comparison build/reports/tests/classes/js/report.js @ 66:0c4a0a1c2f7f
gtadle
author | Kanagawa TATSUKI <tatsuki@ie.u-ryukyu.ac.jp> |
---|---|
date | Mon, 16 Jun 2014 16:47:12 +0900 |
parents | |
children |
comparison
equal
deleted
inserted
replaced
65:caad209bfbe3 | 66:0c4a0a1c2f7f |
---|---|
1 var tabs = new Object(); | |
2 | |
3 function initTabs() { | |
4 var container = document.getElementById('tabs'); | |
5 tabs.tabs = findTabs(container); | |
6 tabs.titles = findTitles(tabs.tabs); | |
7 tabs.headers = findHeaders(container); | |
8 tabs.select = select; | |
9 tabs.deselectAll = deselectAll; | |
10 tabs.select(0); | |
11 return true; | |
12 } | |
13 | |
14 window.onload = initTabs; | |
15 | |
16 function switchTab() { | |
17 var id = this.id.substr(1); | |
18 for (var i = 0; i < tabs.tabs.length; i++) { | |
19 if (tabs.tabs[i].id == id) { | |
20 tabs.select(i); | |
21 break; | |
22 } | |
23 } | |
24 return false; | |
25 } | |
26 | |
27 function select(i) { | |
28 this.deselectAll(); | |
29 changeElementClass(this.tabs[i], 'tab selected'); | |
30 changeElementClass(this.headers[i], 'selected'); | |
31 while (this.headers[i].firstChild) { | |
32 this.headers[i].removeChild(this.headers[i].firstChild); | |
33 } | |
34 var h2 = document.createElement('H2'); | |
35 h2.appendChild(document.createTextNode(this.titles[i])); | |
36 this.headers[i].appendChild(h2); | |
37 } | |
38 | |
39 function deselectAll() { | |
40 for (var i = 0; i < this.tabs.length; i++) { | |
41 changeElementClass(this.tabs[i], 'tab deselected'); | |
42 changeElementClass(this.headers[i], 'deselected'); | |
43 while (this.headers[i].firstChild) { | |
44 this.headers[i].removeChild(this.headers[i].firstChild); | |
45 } | |
46 var a = document.createElement('A'); | |
47 a.setAttribute('id', 'ltab' + i); | |
48 a.setAttribute('href', '#tab' + i); | |
49 a.onclick = switchTab; | |
50 a.appendChild(document.createTextNode(this.titles[i])); | |
51 this.headers[i].appendChild(a); | |
52 } | |
53 } | |
54 | |
55 function changeElementClass(element, classValue) { | |
56 if (element.getAttribute('className')) { | |
57 /* IE */ | |
58 element.setAttribute('className', classValue) | |
59 } else { | |
60 element.setAttribute('class', classValue) | |
61 } | |
62 } | |
63 | |
64 function findTabs(container) { | |
65 return findChildElements(container, 'DIV', 'tab'); | |
66 } | |
67 | |
68 function findHeaders(container) { | |
69 var owner = findChildElements(container, 'UL', 'tabLinks'); | |
70 return findChildElements(owner[0], 'LI', null); | |
71 } | |
72 | |
73 function findTitles(tabs) { | |
74 var titles = new Array(); | |
75 for (var i = 0; i < tabs.length; i++) { | |
76 var tab = tabs[i]; | |
77 var header = findChildElements(tab, 'H2', null)[0]; | |
78 header.parentNode.removeChild(header); | |
79 if (header.innerText) { | |
80 titles.push(header.innerText) | |
81 } else { | |
82 titles.push(header.textContent) | |
83 } | |
84 } | |
85 return titles; | |
86 } | |
87 | |
88 function findChildElements(container, name, targetClass) { | |
89 var elements = new Array(); | |
90 var children = container.childNodes; | |
91 for (var i = 0; i < children.length; i++) { | |
92 var child = children.item(i); | |
93 if (child.nodeType == 1 && child.nodeName == name) { | |
94 if (targetClass && child.className.indexOf(targetClass) < 0) { | |
95 continue; | |
96 } | |
97 elements.push(child); | |
98 } | |
99 } | |
100 return elements; | |
101 } |