Changeset 80:d900e5a112cc
- Timestamp:
- 05/24/12 15:47:48 (13 years ago)
- Branch:
- default
- Location:
- java/sql-vyuka/web
- Files:
-
- 4 modified
Legend:
- Unmodified
- Added
- Removed
-
java/sql-vyuka/web/hlavni.js
r72 r80 11 11 */ 12 12 function getXmlHttpRequestObject() { 13 14 return new XMLHttpRequest();15 16 return new ActiveXObject("Microsoft.XMLHTTP");17 18 alert(document.getElementById('lokalizace').nepodporovany.value);19 return null;20 13 if (window.XMLHttpRequest) { 14 return new XMLHttpRequest(); 15 } else if(window.ActiveXObject) { 16 return new ActiveXObject("Microsoft.XMLHTTP"); 17 } else { 18 alert(document.getElementById('lokalizace').nepodporovany.value); 19 return null; 20 } 21 21 } 22 22 … … 31 31 **/ 32 32 function getSQL() { 33 33 return document.getElementById('aplikace').vstupniPole.value; 34 34 } 35 35 … … 41 41 **/ 42 42 function zobraz(text, kde) { 43 44 document.getElementById('aplikace').vstupniPole.value = vratEntity(text);45 46 document.getElementById('aplikace').stavovePole.value = vratEntity(text);47 48 document.getElementById(kde).innerHTML = text + '<p> <!-- Šťastné hackování ;-) --></p>';49 43 if (kde == vstupniPole) { 44 document.getElementById('aplikace').vstupniPole.value = vratEntity(text); 45 } else if (kde == stavovePole) { 46 document.getElementById('aplikace').stavovePole.value = vratEntity(text); 47 } else { 48 document.getElementById(kde).innerHTML = text + '<p> <!-- Šťastné hackování ;-) --></p>'; 49 } 50 50 } 51 51 … … 53 53 /** Jednoduchá AJAXová funkce, načte obsah souboru a zobrazí ho ve výstupním okně. */ 54 54 function ajaxVykonatSQL() { 55 56 zobraz(document.getElementById('lokalizace').probihaSQL.value, stavovePole);57 ajax.open("POST", 'ajax.jspx?akce=vykonat&sql=' + encodeURIComponent(getSQL()), true);58 ajax.onreadystatechange = function() {59 60 zobraz(ajax.responseText, vystupniPole);61 zobraz('', stavovePole);62 63 };64 ajax.send(null);65 66 55 if (ajax.readyState == 4 || ajax.readyState == 0) { 56 zobraz(document.getElementById('lokalizace').probihaSQL.value, stavovePole); 57 ajax.open("POST", 'ajax.jspx?akce=vykonat&sql=' + encodeURIComponent(getSQL()), true); 58 ajax.onreadystatechange = function() { 59 if (ajax.readyState == 4) { 60 zobraz(ajax.responseText, vystupniPole); 61 zobraz('', stavovePole); 62 } 63 }; 64 ajax.send(null); 65 } 66 ulozURL(); 67 67 } 68 68 … … 70 70 /** Jednoduchá AJAXová funkce, načte obsah souboru a zobrazí ho ve výstupním okně. */ 71 71 function ajaxZobrazitHistorii() { 72 73 zobraz(document.getElementById('lokalizace').probihaHistorie.value, stavovePole);74 ajax.open("POST", 'ajax.jspx?akce=historie', true);75 ajax.onreadystatechange = function() {76 77 zobraz(ajax.responseText, vystupniPole);78 zobraz('', stavovePole);79 aktivujHistorii();80 81 };72 if (ajax.readyState == 4 || ajax.readyState == 0) { 73 zobraz(document.getElementById('lokalizace').probihaHistorie.value, stavovePole); 74 ajax.open("POST", 'ajax.jspx?akce=historie', true); 75 ajax.onreadystatechange = function() { 76 if (ajax.readyState == 4) { 77 zobraz(ajax.responseText, vystupniPole); 78 zobraz('', stavovePole); 79 aktivujHistorii(); 80 } 81 }; 82 82 ajax.send(null); 83 83 } 84 84 } 85 85 … … 89 89 90 90 function ajaxPruvodcePredchozi() { 91 91 ajaxPruvodceNaviguj('predchozi', pruvodceAktualniId, null); 92 92 } 93 93 94 94 function ajaxPruvodceZpet() { 95 96 history.back();97 //window.back();98 nactiURL();99 100 alert(e);101 102 95 try { 96 history.back(); 97 //window.back(); 98 nactiURL(); 99 } catch (e) { 100 alert(e); 101 // není historie 102 } 103 103 } 104 104 105 105 function ajaxPruvodceVpred() { 106 107 history.forward();108 //window.forward();109 nactiURL();110 111 alert(e);112 113 106 try { 107 history.forward(); 108 //window.forward(); 109 nactiURL(); 110 } catch (e) { 111 alert(e); 112 // není historie 113 } 114 114 } 115 115 116 116 function ajaxPruvodceNasledujici() { 117 117 ajaxPruvodceNaviguj('nasledujici', pruvodceAktualniId, null); 118 118 } 119 119 120 120 function ajaxPruvodceKod(kod) { 121 121 ajaxPruvodceNaviguj('podleKodu', 0, kod); 122 122 } 123 123 124 124 function ajaxPruvodceId(id) { 125 125 ajaxPruvodceNaviguj('podleId', id, null); 126 126 127 127 } 128 128 129 129 function ajaxPruvodceNaviguj(akcePruvodce, id, kod) { 130 131 ajax.open("POST", 'ajax.jspx?akce=napoveda&pruvodce=' + encodeURIComponent(akcePruvodce) + '&idPruvodce=' + encodeURIComponent(id) + '&kodPruvodce=' + encodeURIComponent(kod), true);132 ajax.onreadystatechange = function() {133 134 zobraz(ajax.responseText, napovedniPole);135 /** Uložíme si do paměti ID aktuální stránky */136 if (document.getElementById('pruvodceData')) {137 138 } else {139 140 }141 /** Změníme URL v prohlížeči */142 urlOdkaz['pruvodce'] = 'pruvodce=' + encodeURIComponent(pruvodceAktualniId);143 ulozURL();144 sestavStromy();145 aktivujPruvodce();146 147 };130 if (ajax.readyState == 4 || ajax.readyState == 0) { 131 ajax.open("POST", 'ajax.jspx?akce=napoveda&pruvodce=' + encodeURIComponent(akcePruvodce) + '&idPruvodce=' + encodeURIComponent(id) + '&kodPruvodce=' + encodeURIComponent(kod), true); 132 ajax.onreadystatechange = function() { 133 if (ajax.readyState == 4) { 134 zobraz(ajax.responseText, napovedniPole); 135 /** Uložíme si do paměti ID aktuální stránky */ 136 if (document.getElementById('pruvodceData')) { 137 pruvodceAktualniId = document.getElementById('pruvodceData').id.value; 138 } else { 139 pruvodceAktualniId = 0; 140 } 141 /** Změníme URL v prohlížeči */ 142 urlOdkaz['pruvodce'] = 'pruvodce=' + encodeURIComponent(pruvodceAktualniId); 143 ulozURL(); 144 sestavStromy(); 145 aktivujPruvodce(); 146 } 147 }; 148 148 ajax.send(null); 149 149 } 150 150 } 151 151 … … 158 158 */ 159 159 function getParametr(parametr) { 160 parametr = parametr.replace(/[\[]/,"\\\[").replace(/[\]]/,"\\\]"); 161 //var regexS = "[\\?&]"+parametr+"=([^&#]*)"; 162 var regexS = "[\\#&]"+parametr+"=([^&]*)"; 163 var regex = new RegExp( regexS ); 164 var results = regex.exec(window.location.hash); 165 if( results == null ) 166 return ""; 167 else 168 return decodeURIComponent(results[1]); 160 parametr = parametr.replace(/[\[]/,"\\\[").replace(/[\]]/,"\\\]"); 161 //var regexS = "[\\?&]"+parametr+"=([^&#]*)"; 162 var regexS = "[\\#&]"+parametr+"=([^&]*)"; 163 var regex = new RegExp( regexS ); 164 var results = regex.exec(window.location.hash); 165 if ( results == null ) { 166 return ""; 167 } else { 168 return decodeURIComponent(results[1]); 169 } 169 170 } 170 171 … … 174 175 */ 175 176 function ulozURL() { 176 177 window.location.hash = urlOdkaz['pruvodce'] + '&sql=' + encodeURIComponent(getSQL());178 179 window.location.hash = 'sql=' + encodeURIComponent(getSQL());180 177 if (urlOdkaz['pruvodce']) { 178 window.location.hash = urlOdkaz['pruvodce'] + '&sql=' + encodeURIComponent(getSQL()); 179 } else { 180 window.location.hash = 'sql=' + encodeURIComponent(getSQL()); 181 } 181 182 } 182 183 /** … … 184 185 */ 185 186 function nactiURL() { 186 187 188 zobraz(getParametr('sql'), vstupniPole);189 190 191 192 193 ajaxPruvodceId(getParametr('pruvodce'));194 195 ajaxPruvodceKod('vitejte');196 187 /** Načteme uživatelův SQL příkaz z URL do vstupního pole */ 188 if (getParametr('sql')) { 189 zobraz(getParametr('sql'), vstupniPole); 190 } 191 192 /** Načteme pozici v nápovědě */ 193 if (getParametr('pruvodce')) { 194 ajaxPruvodceId(getParametr('pruvodce')); 195 } else { 196 ajaxPruvodceKod('vitejte'); 197 } 197 198 } 198 199 199 200 window.onload = function() { 200 201 202 ajaxPruvodceKod('vitejte');203 201 nactiURL(); 202 document.getElementById("zahlavi").addEventListener('click', function () { 203 ajaxPruvodceKod('vitejte'); 204 }, false); 204 205 } 205 206 … … 213 214 */ 214 215 function aktivujPruvodce() { 215 216 217 218 if (elementy[i].parentNode.id == napovedniPole) {219 220 221 zobraz(this.innerHTML, 'vstupniPole');222 return true;223 224 }225 226 227 228 229 230 var odkaz = elementy[j].getAttribute("href");231 if (odkaz.substring(0, 1) == '@') {232 233 }234 216 /** Ukázky SQL kódu */ 217 elementy = document.getElementsByTagName("pre"); 218 for (var i = 0; i < elementy.length; i++) { 219 if (elementy[i].parentNode.id == napovedniPole) { 220 elementy[i].title = document.getElementById('lokalizace').klikniProNacteniPrikladu.value; 221 elementy[i].onclick = function() { 222 zobraz(this.innerHTML, 'vstupniPole'); 223 return true; 224 }; 225 } 226 } 227 228 /** Aktivace interních odkazů na průvodce */ 229 elementy = document.getElementsByTagName("a"); 230 for (var j = 0; j < elementy.length; j++) { 231 var odkaz = elementy[j].getAttribute("href"); 232 if (odkaz.substring(0, 1) == '@') { 233 elementy[j].href = "javascript:ajaxPruvodceKod('" + odkaz.substring(1, odkaz.length) + "');"; 234 } 235 } 235 236 } 236 237 … … 241 242 */ 242 243 function aktivujHistorii() { 243 244 245 if (radky[i].parentNode.parentNode.parentNode.id == vystupniPole) {246 247 248 249 zobraz(this.innerHTML, 'vstupniPole');250 return true;251 252 }253 244 radky = document.getElementsByTagName("tr"); 245 for (var i = 1; i < radky.length; i++) { 246 if (radky[i].parentNode.parentNode.parentNode.id == vystupniPole) { 247 radky[i].childNodes[1].title = document.getElementById('lokalizace').klikniProNacteniHistorie.value; 248 radky[i].childNodes[1].style.cursor = 'pointer'; 249 radky[i].childNodes[1].onclick = function() { 250 zobraz(this.innerHTML, 'vstupniPole'); 251 return true; 252 }; 253 } 254 } 254 255 } 255 256 … … 259 260 */ 260 261 function vratEntity (text) { 261 var vysledek = text; 262 vysledek = vysledek.replace('<', '<', 'g'); 263 vysledek = vysledek.replace('>', '>', 'g'); 264 vysledek = vysledek.replace('&', '&', 'g'); 265 vysledek = vysledek.replace(' ', ' ', 'g'); 266 vysledek = vysledek.replace(' ', ' ', 'g'); 267 return vysledek; 268 262 var vysledek = text; 263 vysledek = vysledek.replace('<', '<', 'g'); 264 vysledek = vysledek.replace('>', '>', 'g'); 265 vysledek = vysledek.replace('&', '&', 'g'); 266 vysledek = vysledek.replace(' ', ' ', 'g'); 267 vysledek = vysledek.replace(' ', ' ', 'g'); 268 return vysledek; 269 269 } 270 270 … … 274 274 */ 275 275 function nactiJavaScript (url) { 276 var element = document.createElement("script"); 277 element.src = url; 278 element.type = "text/javascript"; 279 document.getElementsByTagName("head")[0].appendChild(element); 280 } 276 var element = document.createElement("script"); 277 element.src = url; 278 element.type = "text/javascript"; 279 document.getElementsByTagName("head")[0].appendChild(element); 280 } 281 -
java/sql-vyuka/web/klavesoveZkratky.js
r71 r80 4 4 5 5 document.onkeyup = function(e) { 6 7 isCtrl = false;8 6 if(e.which == 17) { 7 isCtrl = false; 8 } 9 9 } 10 10 11 11 document.onkeydown = function(e) { 12 13 isCtrl = true;14 12 if(e.which == 17) { 13 isCtrl = true; 14 } 15 15 16 if (isCtrl) { 17 if (e.which == 13) { 18 /** ctrl+enter → vykonáme SQL */ 19 ajaxVykonatSQL(); 20 return false; 21 } else if (e.which == 72) { 22 /** ctrl+h → uobrazíme historii */ 23 ajaxZobrazitHistorii(); 24 return false; 25 } else if (e.which == 39) { 26 /** doprava → následující kapitola */ 27 ajaxPruvodceNasledujici(); 28 return false; 29 } else if (e.which == 37) { 30 /** doleva → předchozí kapitola */ 31 ajaxPruvodcePredchozi(); 32 return false; 16 if (isCtrl) { 17 if (e.which == 13) { 18 /** ctrl+enter → vykonáme SQL */ 19 ajaxVykonatSQL(); 20 return false; 21 } else if (e.which == 72) { 22 /** ctrl+h → uobrazíme historii */ 23 ajaxZobrazitHistorii(); 24 return false; 25 } else if (e.which == 39) { 26 /** doprava → následující kapitola */ 27 ajaxPruvodceNasledujici(); 28 return false; 29 } else if (e.which == 37) { 30 /** doleva → předchozí kapitola */ 31 ajaxPruvodcePredchozi(); 32 return false; 33 } 34 return true; 35 } else { 36 return true; 33 37 } 34 return true;35 } else {36 return true;37 }38 38 } -
java/sql-vyuka/web/strom.js
r49 r80 3 3 4 4 function pridejUdalost(o, e, f) { 5 6 7 8 9 10 11 12 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 13 } 14 14 15 15 function nastavKonstantu(name, val) { 16 17 18 16 if (typeof(window[name]) == "undefined" || window[name] == null) { 17 window[name] = val; 18 } 19 19 } 20 20 21 21 function rozbalStrom(treeId) { 22 23 24 25 26 22 var ul = document.getElementById(treeId); 23 if (ul == null) { 24 return false; 25 } 26 rozbalSbalSeznam(ul, nodeOpenClass); 27 27 } 28 28 29 29 function sbalStrom(treeId) { 30 31 32 33 34 30 var ul = document.getElementById(treeId); 31 if (ul == null) { 32 return false; 33 } 34 rozbalSbalSeznam(ul, nodeClosedClass); 35 35 } 36 36 37 37 function rozbalAzNaPolozku(treeId, itemId) { 38 39 40 41 42 43 44 45 46 47 48 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 49 } 50 50 51 51 function rozbalSbalSeznam(ul, cName, itemId) { 52 53 54 55 56 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 57 58 59 60 58 if (itemId != null && item.id == itemId) { 59 return true; 60 } 61 61 62 63 64 65 66 67 68 69 70 71 72 73 74 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 75 76 77 78 79 80 76 if (subLists && itemId == null) { 77 item.className = cName; 78 } 79 } 80 } 81 81 } 82 82 83 83 function sestavStromy() { 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 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 103 } 104 104 105 105 function zpracujStrom(ul) { 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 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 145 } 146 -
java/sql-vyuka/web/vstupniPole.js
r22 r80 5 5 function zpracujTabulatory(evt) { 6 6 7 8 9 7 var t = evt.target; 8 var ss = t.selectionStart; 9 var se = t.selectionEnd; 10 10 11 11 12 13 14 12 // Tabulátor 13 if (evt.keyCode == 9) { 14 evt.preventDefault(); 15 15 16 17 18 19 20 21 22 23 24 16 // Víceřádkový výběr 17 if (ss != se && t.value.slice(ss,se).indexOf("\n") != -1) { 18 var pre = t.value.slice(0,ss); 19 var sel = t.value.slice(ss,se).replace(/\n/g,"\n"+tab); 20 var post = t.value.slice(se,t.value.length); 21 t.value = pre.concat(tab).concat(sel).concat(post); 22 t.selectionStart = ss + tab.length; 23 t.selectionEnd = se + tab.length; 24 } 25 25 26 27 28 29 30 31 32 33 34 35 36 37 26 // Jednořádkový nebo žádný výběr 27 else { 28 t.value = t.value.slice(0,ss).concat(tab).concat(t.value.slice(ss,t.value.length)); 29 if (ss == se) { 30 t.selectionStart = t.selectionEnd = ss + tab.length; 31 } 32 else { 33 t.selectionStart = ss + tab.length; 34 t.selectionEnd = se + tab.length; 35 } 36 } 37 } 38 38 39 40 41 42 43 44 39 // Backspace 40 else if (evt.keyCode==8 && t.value.slice(ss - 4,ss) == tab) { 41 evt.preventDefault(); 42 t.value = t.value.slice(0,ss - 4).concat(t.value.slice(ss,t.value.length)); 43 t.selectionStart = t.selectionEnd = ss - tab.length; 44 } 45 45 46 47 48 49 50 51 46 // Delete 47 else if (evt.keyCode==46 && t.value.slice(se,se + 4) == tab) { 48 evt.preventDefault(); 49 t.value = t.value.slice(0,ss).concat(t.value.slice(ss + 4,t.value.length)); 50 t.selectionStart = t.selectionEnd = ss; 51 } 52 52 53 54 55 56 57 58 53 // Doleva 54 else if (evt.keyCode == 37 && t.value.slice(ss - 4,ss) == tab) { 55 alert("levá"); 56 evt.preventDefault(); 57 t.selectionStart = t.selectionEnd = ss - 4; 58 } 59 59 60 61 62 63 64 65 60 // Doprava 61 else if (evt.keyCode == 39 && t.value.slice(ss,ss + 4) == tab) { 62 alert("pravá"); 63 evt.preventDefault(); 64 t.selectionStart = t.selectionEnd = ss + 4; 65 } 66 66 }