diff 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
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/build/reports/tests/classes/js/report.js	Mon Jun 16 16:47:12 2014 +0900
@@ -0,0 +1,101 @@
+var tabs = new Object();
+
+function initTabs() {
+    var container = document.getElementById('tabs');
+    tabs.tabs = findTabs(container);
+    tabs.titles = findTitles(tabs.tabs);
+    tabs.headers = findHeaders(container);
+    tabs.select = select;
+    tabs.deselectAll = deselectAll;
+    tabs.select(0);
+    return true;
+}
+
+window.onload = initTabs;
+
+function switchTab() {
+    var id = this.id.substr(1);
+    for (var i = 0; i < tabs.tabs.length; i++) {
+        if (tabs.tabs[i].id == id) {
+            tabs.select(i);
+            break;
+        }
+    }
+    return false;
+}
+
+function select(i) {
+    this.deselectAll();
+    changeElementClass(this.tabs[i], 'tab selected');
+    changeElementClass(this.headers[i], 'selected');
+    while (this.headers[i].firstChild) {
+        this.headers[i].removeChild(this.headers[i].firstChild);
+    }
+    var h2 = document.createElement('H2');
+    h2.appendChild(document.createTextNode(this.titles[i]));
+    this.headers[i].appendChild(h2);
+}
+
+function deselectAll() {
+    for (var i = 0; i < this.tabs.length; i++) {
+        changeElementClass(this.tabs[i], 'tab deselected');
+        changeElementClass(this.headers[i], 'deselected');
+        while (this.headers[i].firstChild) {
+            this.headers[i].removeChild(this.headers[i].firstChild);
+        }
+        var a = document.createElement('A');
+        a.setAttribute('id', 'ltab' + i);
+        a.setAttribute('href', '#tab' + i);
+        a.onclick = switchTab;
+        a.appendChild(document.createTextNode(this.titles[i]));
+        this.headers[i].appendChild(a);
+    }
+}
+
+function changeElementClass(element, classValue) {
+    if (element.getAttribute('className')) {
+        /* IE */
+        element.setAttribute('className', classValue)
+    } else {
+        element.setAttribute('class', classValue)
+    }
+}
+
+function findTabs(container) {
+    return findChildElements(container, 'DIV', 'tab');
+}
+
+function findHeaders(container) {
+    var owner = findChildElements(container, 'UL', 'tabLinks');
+    return findChildElements(owner[0], 'LI', null);
+}
+
+function findTitles(tabs) {
+    var titles = new Array();
+    for (var i = 0; i < tabs.length; i++) {
+        var tab = tabs[i];
+        var header = findChildElements(tab, 'H2', null)[0];
+        header.parentNode.removeChild(header);
+        if (header.innerText) {
+            titles.push(header.innerText)
+        } else {
+            titles.push(header.textContent)
+        }
+    }
+    return titles;
+}
+
+function findChildElements(container, name, targetClass) {
+    var elements = new Array();
+    var children = container.childNodes;
+    for (var i = 0; i < children.length; i++) {
+        var child = children.item(i);
+        if (child.nodeType == 1 && child.nodeName == name) {
+            if (targetClass && child.className.indexOf(targetClass) < 0) {
+                continue;
+            }
+            elements.push(child);
+        }
+    }
+    return elements;
+}