franta-hg@3
|
1 |
/** ID html prvků */
|
franta-hg@3
|
2 |
const vstupniPole = 'vstupniPole';
|
franta-hg@3
|
3 |
const vystupniPole = 'vystupniPole';
|
franta-hg@3
|
4 |
const napovedniPole = 'napovedniPole';
|
franta-hg@20
|
5 |
const stavovePole = 'stavovePole';
|
franta-hg@3
|
6 |
|
franta-hg@3
|
7 |
|
franta-hg@2
|
8 |
/**
|
franta-hg@2
|
9 |
* Aby to fungovalo i v MSIE 6.
|
franta-hg@2
|
10 |
* @return AJAXový objekt.
|
franta-hg@2
|
11 |
*/
|
franta-hg@2
|
12 |
function getXmlHttpRequestObject() {
|
franta-hg@2
|
13 |
if (window.XMLHttpRequest) {
|
franta-hg@2
|
14 |
return new XMLHttpRequest();
|
franta-hg@2
|
15 |
} else if(window.ActiveXObject) {
|
franta-hg@2
|
16 |
return new ActiveXObject("Microsoft.XMLHTTP");
|
franta-hg@2
|
17 |
} else {
|
franta-hg@48
|
18 |
alert(document.getElementById('lokalizace').nepodporovany.value);
|
franta-hg@2
|
19 |
return null;
|
franta-hg@2
|
20 |
}
|
franta-hg@2
|
21 |
}
|
franta-hg@2
|
22 |
|
franta-hg@22
|
23 |
|
franta-hg@2
|
24 |
/** Náš AJAXový objekt. */
|
franta-hg@2
|
25 |
var ajax = getXmlHttpRequestObject();
|
franta-hg@2
|
26 |
|
franta-hg@22
|
27 |
|
franta-hg@2
|
28 |
/**
|
franta-hg@3
|
29 |
* Vrací vstup od uživatele.
|
franta-hg@3
|
30 |
* @return SQL příkaz zadaný uživatelem.
|
franta-hg@3
|
31 |
**/
|
franta-hg@3
|
32 |
function getSQL() {
|
franta-hg@48
|
33 |
return document.getElementById('aplikace').vstupniPole.value;
|
franta-hg@3
|
34 |
}
|
franta-hg@3
|
35 |
|
franta-hg@22
|
36 |
|
franta-hg@3
|
37 |
/**
|
franta-hg@2
|
38 |
* Zobrazí text na požadovaném místě.
|
franta-hg@22
|
39 |
* @param text text k zobrazení. V případě formulářů prostý text, v ostatních případech HTML text.
|
franta-hg@22
|
40 |
* @param kde id prvku, do kterého se má text vypsat.
|
franta-hg@2
|
41 |
**/
|
franta-hg@2
|
42 |
function zobraz(text, kde) {
|
franta-hg@19
|
43 |
if (kde == vstupniPole) {
|
franta-hg@60
|
44 |
document.getElementById('aplikace').vstupniPole.value = vratEntity(text);
|
franta-hg@20
|
45 |
} else if (kde == stavovePole) {
|
franta-hg@60
|
46 |
document.getElementById('aplikace').stavovePole.value = vratEntity(text);
|
franta-hg@19
|
47 |
} else {
|
franta-hg@19
|
48 |
document.getElementById(kde).innerHTML = text + '<p> <!-- Šťastné hackování ;-) --></p>';
|
franta-hg@19
|
49 |
}
|
franta-hg@2
|
50 |
}
|
franta-hg@2
|
51 |
|
franta-hg@2
|
52 |
|
franta-hg@2
|
53 |
/** Jednoduchá AJAXová funkce, načte obsah souboru a zobrazí ho ve výstupním okně. */
|
franta-hg@5
|
54 |
function ajaxVykonatSQL() {
|
franta-hg@2
|
55 |
if (ajax.readyState == 4 || ajax.readyState == 0) {
|
franta-hg@48
|
56 |
zobraz(document.getElementById('lokalizace').probihaSQL.value, stavovePole);
|
franta-hg@24
|
57 |
ajax.open("POST", 'ajax.jspx?akce=vykonat&sql=' + encodeURIComponent(getSQL()), true);
|
franta-hg@19
|
58 |
ajax.onreadystatechange = function() {
|
franta-hg@19
|
59 |
if (ajax.readyState == 4) {
|
franta-hg@22
|
60 |
zobraz(ajax.responseText, vystupniPole);
|
franta-hg@22
|
61 |
zobraz('', stavovePole);
|
franta-hg@19
|
62 |
}
|
franta-hg@19
|
63 |
};
|
franta-hg@2
|
64 |
ajax.send(null);
|
franta-hg@2
|
65 |
}
|
franta-hg@39
|
66 |
ulozURL();
|
franta-hg@2
|
67 |
}
|
franta-hg@5
|
68 |
|
franta-hg@5
|
69 |
|
franta-hg@5
|
70 |
/** Jednoduchá AJAXová funkce, načte obsah souboru a zobrazí ho ve výstupním okně. */
|
franta-hg@5
|
71 |
function ajaxZobrazitHistorii() {
|
franta-hg@5
|
72 |
if (ajax.readyState == 4 || ajax.readyState == 0) {
|
franta-hg@48
|
73 |
zobraz(document.getElementById('lokalizace').probihaHistorie.value, stavovePole);
|
franta-hg@24
|
74 |
ajax.open("POST", 'ajax.jspx?akce=historie', true);
|
franta-hg@19
|
75 |
ajax.onreadystatechange = function() {
|
franta-hg@19
|
76 |
if (ajax.readyState == 4) {
|
franta-hg@22
|
77 |
zobraz(ajax.responseText, vystupniPole);
|
franta-hg@22
|
78 |
zobraz('', stavovePole);
|
franta-hg@19
|
79 |
}
|
franta-hg@19
|
80 |
};
|
franta-hg@5
|
81 |
ajax.send(null);
|
franta-hg@5
|
82 |
}
|
franta-hg@5
|
83 |
}
|
franta-hg@38
|
84 |
|
franta-hg@38
|
85 |
var pruvodceAktualniId = 0;
|
franta-hg@39
|
86 |
var urlOdkaz = new Array();
|
franta-hg@39
|
87 |
urlOdkaz['pruvodce'] = null;
|
franta-hg@38
|
88 |
|
franta-hg@38
|
89 |
function ajaxPruvodcePredchozi() {
|
franta-hg@38
|
90 |
ajaxPruvodceNaviguj('predchozi', pruvodceAktualniId, null);
|
franta-hg@38
|
91 |
}
|
franta-hg@38
|
92 |
|
franta-hg@38
|
93 |
function ajaxPruvodceZpet() {
|
franta-hg@42
|
94 |
/** TODO: historie navigace */
|
franta-hg@42
|
95 |
alert('Tato funkce se teprve připravuje.');
|
franta-hg@38
|
96 |
}
|
franta-hg@38
|
97 |
|
franta-hg@38
|
98 |
function ajaxPruvodceVpred() {
|
franta-hg@42
|
99 |
/** TODO: historie navigace */
|
franta-hg@42
|
100 |
alert('Tato funkce se teprve připravuje.');
|
franta-hg@38
|
101 |
}
|
franta-hg@38
|
102 |
|
franta-hg@38
|
103 |
function ajaxPruvodceNasledujici() {
|
franta-hg@38
|
104 |
ajaxPruvodceNaviguj('nasledujici', pruvodceAktualniId, null);
|
franta-hg@38
|
105 |
}
|
franta-hg@38
|
106 |
|
franta-hg@38
|
107 |
function ajaxPruvodceKod(kod) {
|
franta-hg@38
|
108 |
ajaxPruvodceNaviguj('podleKodu', 0, kod);
|
franta-hg@38
|
109 |
}
|
franta-hg@38
|
110 |
|
franta-hg@38
|
111 |
function ajaxPruvodceId(id) {
|
franta-hg@38
|
112 |
ajaxPruvodceNaviguj('podleId', id, null);
|
franta-hg@38
|
113 |
|
franta-hg@38
|
114 |
}
|
franta-hg@38
|
115 |
|
franta-hg@50
|
116 |
function ajaxPruvodceNaviguj(akcePruvodce, id, kod) {
|
franta-hg@38
|
117 |
if (ajax.readyState == 4 || ajax.readyState == 0) {
|
franta-hg@38
|
118 |
ajax.open("POST", 'ajax.jspx?akce=napoveda&pruvodce=' + encodeURIComponent(akcePruvodce) + '&idPruvodce=' + encodeURIComponent(id) + '&kodPruvodce=' + encodeURIComponent(kod), true);
|
franta-hg@38
|
119 |
ajax.onreadystatechange = function() {
|
franta-hg@38
|
120 |
if (ajax.readyState == 4) {
|
franta-hg@38
|
121 |
zobraz(ajax.responseText, napovedniPole);
|
franta-hg@39
|
122 |
/** Uložíme si do paměti ID aktuální stránky */
|
franta-hg@58
|
123 |
if (document.getElementById('pruvodceData')) {
|
franta-hg@58
|
124 |
pruvodceAktualniId = document.getElementById('pruvodceData').id.value;
|
franta-hg@38
|
125 |
} else {
|
franta-hg@38
|
126 |
pruvodceAktualniId = 0;
|
franta-hg@38
|
127 |
}
|
franta-hg@39
|
128 |
/** Změníme URL v prohlížeči */
|
franta-hg@40
|
129 |
urlOdkaz['pruvodce'] = 'pruvodce=' + encodeURIComponent(pruvodceAktualniId);
|
franta-hg@39
|
130 |
ulozURL();
|
franta-hg@49
|
131 |
sestavStromy();
|
franta-hg@60
|
132 |
aktivujPruvodce();
|
franta-hg@57
|
133 |
}
|
franta-hg@38
|
134 |
};
|
franta-hg@38
|
135 |
ajax.send(null);
|
franta-hg@38
|
136 |
}
|
franta-hg@38
|
137 |
}
|
franta-hg@39
|
138 |
|
franta-hg@39
|
139 |
/**
|
franta-hg@40
|
140 |
* Parametry si ukládáme za # do URL (window.location.hash)
|
franta-hg@40
|
141 |
* Můžeme měnit URL, aniž by prohlížeč obnovoval stránku.
|
franta-hg@40
|
142 |
* Uživatel si může URL zkopírovat a obnovit si příště stav aplikace.
|
franta-hg@39
|
143 |
* @param parametr jméno parametru, který hledáme
|
franta-hg@39
|
144 |
* @return hodnota parametr
|
franta-hg@39
|
145 |
*/
|
franta-hg@39
|
146 |
function getParametr(parametr) {
|
franta-hg@39
|
147 |
parametr = parametr.replace(/[\[]/,"\\\[").replace(/[\]]/,"\\\]");
|
franta-hg@39
|
148 |
//var regexS = "[\\?&]"+parametr+"=([^&#]*)";
|
franta-hg@45
|
149 |
var regexS = "[\\#&]"+parametr+"=([^&]*)";
|
franta-hg@39
|
150 |
var regex = new RegExp( regexS );
|
franta-hg@39
|
151 |
var results = regex.exec(window.location.hash);
|
franta-hg@39
|
152 |
if( results == null )
|
franta-hg@39
|
153 |
return "";
|
franta-hg@39
|
154 |
else
|
franta-hg@39
|
155 |
return decodeURIComponent(results[1]);
|
franta-hg@39
|
156 |
}
|
franta-hg@39
|
157 |
|
franta-hg@39
|
158 |
/**
|
franta-hg@39
|
159 |
* Uloží parametry (jako je SQL příkaz a stránka průvodce) do URL (za #),
|
franta-hg@39
|
160 |
* aby si uživatel mohl URL zkopírovat a příště si obnovit stav aplikace.
|
franta-hg@39
|
161 |
*/
|
franta-hg@39
|
162 |
function ulozURL() {
|
franta-hg@39
|
163 |
if (urlOdkaz['pruvodce']) {
|
franta-hg@39
|
164 |
window.location.hash = urlOdkaz['pruvodce'] + '&sql=' + encodeURIComponent(getSQL());
|
franta-hg@39
|
165 |
} else {
|
franta-hg@39
|
166 |
window.location.hash = 'sql=' + encodeURIComponent(getSQL());
|
franta-hg@39
|
167 |
}
|
franta-hg@39
|
168 |
}
|
franta-hg@39
|
169 |
/**
|
franta-hg@39
|
170 |
* Načte uložený stav aplikace z URL (SQL příkaz, průvodce).
|
franta-hg@39
|
171 |
*/
|
franta-hg@42
|
172 |
function nactiURL() {
|
franta-hg@40
|
173 |
/** Načteme uživatelův SQL příkaz z URL do vstupního pole */
|
franta-hg@42
|
174 |
if (getParametr('sql')) {
|
franta-hg@39
|
175 |
zobraz(getParametr('sql'), vstupniPole);
|
franta-hg@39
|
176 |
}
|
franta-hg@40
|
177 |
|
franta-hg@40
|
178 |
/** Načteme pozici v nápovědě */
|
franta-hg@40
|
179 |
if (getParametr('pruvodce')) {
|
franta-hg@40
|
180 |
ajaxPruvodceId(getParametr('pruvodce'));
|
franta-hg@40
|
181 |
} else {
|
franta-hg@40
|
182 |
ajaxPruvodceKod('vitejte');
|
franta-hg@40
|
183 |
}
|
franta-hg@39
|
184 |
}
|
franta-hg@39
|
185 |
|
franta-hg@39
|
186 |
window.onload = function() {
|
franta-hg@42
|
187 |
nactiURL();
|
franta-hg@60
|
188 |
}
|
franta-hg@60
|
189 |
|
franta-hg@60
|
190 |
/**
|
franta-hg@60
|
191 |
* Přidá <pre> elementům v průvodci akci onclick,
|
franta-hg@60
|
192 |
* která se postará o načtení obsahu daného elementu do vstupního pole,
|
franta-hg@60
|
193 |
* aby uživatel tento kód nemusel opisovat.
|
franta-hg@60
|
194 |
*/
|
franta-hg@60
|
195 |
function aktivujPruvodce() {
|
franta-hg@60
|
196 |
elementy = document.getElementsByTagName("pre");
|
franta-hg@60
|
197 |
for (var i = 0; i < elementy.length; i++) {
|
franta-hg@60
|
198 |
if (elementy[i].parentNode.id == napovedniPole) {
|
franta-hg@60
|
199 |
elementy[i].title = document.getElementById('lokalizace').klikniProNacteniPrikladu.value;
|
franta-hg@60
|
200 |
elementy[i].onclick = function() {
|
franta-hg@60
|
201 |
zobraz(this.innerHTML, 'vstupniPole');
|
franta-hg@60
|
202 |
return true;
|
franta-hg@60
|
203 |
};
|
franta-hg@60
|
204 |
}
|
franta-hg@60
|
205 |
}
|
franta-hg@60
|
206 |
}
|
franta-hg@60
|
207 |
|
franta-hg@60
|
208 |
/**
|
franta-hg@60
|
209 |
* Převede HTML entity zpět na znaky,
|
franta-hg@60
|
210 |
* aby se správně zobrazily ve vstupním nebo stavovém poli.
|
franta-hg@60
|
211 |
*/
|
franta-hg@60
|
212 |
function vratEntity (text) {
|
franta-hg@60
|
213 |
var vysledek = text;
|
franta-hg@60
|
214 |
vysledek = vysledek.replace('<', '<', 'g');
|
franta-hg@60
|
215 |
vysledek = vysledek.replace('>', '>', 'g');
|
franta-hg@60
|
216 |
vysledek = vysledek.replace('&', '&', 'g');
|
franta-hg@60
|
217 |
return vysledek;
|
franta-hg@60
|
218 |
|
franta-hg@60
|
219 |
}
|