root/java/sql-vyuka/web/strom.js

Revision 80:d900e5a112cc, 3.5 KB (checked in by František Kučera <franta-hg@…>, 12 years ago)

Lepší odsazení JavaScriptu? (tabulátory).

Line 
1/** Strom je načítaný AJAXem až po načtení stránky, takže je potřeba funkci zavolat ručně */
2//pridejUdalost(window,"load",sestavStromy);
3
4function pridejUdalost(o, e, f) {
5        if (o.addEventListener) {
6                o.addEventListener(e,f,true);
7                return true;
8        } else if (o.attachEvent) {
9                return o.attachEvent("on" + e, f);
10        } else {
11                return false;
12        }
13}
14
15function nastavKonstantu(name, val) {
16        if (typeof(window[name]) == "undefined" || window[name] == null) {
17                window[name] = val;
18        }
19}
20
21function rozbalStrom(treeId) {
22        var ul = document.getElementById(treeId);
23        if (ul == null) {
24                return false;
25        }
26        rozbalSbalSeznam(ul, nodeOpenClass);
27}
28
29function sbalStrom(treeId) {
30        var ul = document.getElementById(treeId);
31        if (ul == null) {
32                return false;
33        }
34        rozbalSbalSeznam(ul, nodeClosedClass);
35}
36
37function rozbalAzNaPolozku(treeId, itemId) {
38        var ul = document.getElementById(treeId);
39        if (ul == null) {
40                return false;
41        }
42        var ret = rozbalSbalSeznam(ul, nodeOpenClass, itemId);
43        if (ret) {
44                var o = document.getElementById(itemId);
45                if (o.scrollIntoView) {
46                        o.scrollIntoView(false);
47                }
48        }
49}
50
51function rozbalSbalSeznam(ul, cName, itemId) {
52        if(!ul.childNodes || ul.childNodes.length==0) {
53                return false;
54        }
55        for (var itemi = 0; itemi < ul.childNodes.length; itemi++) {
56                var item = ul.childNodes[itemi];
57
58                if (itemId != null && item.id == itemId) {
59                        return true;
60                }
61
62                if (item.nodeName == "LI") {
63                        var subLists = false;
64                        for (var sitemi = 0; sitemi<item.childNodes.length; sitemi++) {
65                                var sitem = item.childNodes[sitemi];
66                                if (sitem.nodeName=="UL") {
67                                        subLists = true;
68                                        var ret = rozbalSbalSeznam(sitem, cName, itemId);
69                                        if (itemId != null && ret) {
70                                                item.className = cName;
71                                                return true;
72                                        }
73                                }
74                        }
75
76                        if (subLists && itemId == null) {
77                                item.className = cName;
78                        }
79                }
80        }
81}
82
83function sestavStromy() {
84        nastavKonstantu("treeClass", "strom");
85        nastavKonstantu("nodeClosedClass", "liClosed");
86        nastavKonstantu("nodeOpenClass", "liOpen");
87        nastavKonstantu("nodeBulletClass", "liBullet");
88        nastavKonstantu("nodeLinkClass", "bullet");
89        nastavKonstantu("preProcessTrees", true);
90        if (preProcessTrees) {
91                if (!document.createElement) {
92                        return;
93                }
94                uls = document.getElementsByTagName("ul");
95                for (var uli = 0; uli < uls.length; uli++) {
96                        var ul = uls[uli];
97                        if (ul.nodeName == "UL" && ul.className == treeClass) {
98                                zpracujStrom(ul);
99                                ul.style.display = "block";
100                        }
101                }
102        }
103}
104
105function zpracujStrom(ul) {
106        if (!ul.childNodes || ul.childNodes.length==0) {
107                return;
108        }
109        for (var itemi = 0; itemi < ul.childNodes.length; itemi++) {
110                var item = ul.childNodes[itemi];
111                if (item.nodeName == "LI") {
112                        var subLists = false;
113                        for (var sitemi = 0; sitemi < item.childNodes.length; sitemi++) {
114                                var sitem = item.childNodes[sitemi];
115                                if (sitem.nodeName == "UL") {
116                                        subLists = true;
117                                        zpracujStrom(sitem);
118                                }
119                        }
120                        var s = document.createElement("span");
121                        var t = '\u00A0';
122                        s.className = nodeLinkClass;
123                        if (subLists) {
124                                if (item.className == null || item.className == "") {
125                                        item.className = nodeClosedClass;
126                                }
127                                if (item.firstChild.nodeName == "#text") {
128                                        t = t + item.firstChild.nodeValue;
129                                        item.removeChild(item.firstChild);
130                                }
131                                s.onclick = function() {
132                                        this.parentNode.className = (this.parentNode.className==nodeOpenClass) ? nodeClosedClass : nodeOpenClass;
133                                        return false;
134                                }
135                        } else {
136                                item.className = nodeBulletClass;
137                                s.onclick = function() {
138                                        return false;
139                                }
140                        }
141                        s.appendChild(document.createTextNode(t));
142                        item.insertBefore(s, item.firstChild);
143                }
144        }
145}
146
Note: See TracBrowser for help on using the browser.