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@48
|
44 |
document.getElementById('aplikace').vstupniPole.value = text;
|
franta-hg@20
|
45 |
} else if (kde == stavovePole) {
|
franta-hg@48
|
46 |
document.getElementById('aplikace').stavovePole.value = 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@42
|
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@38
|
123 |
if (document.pruvodceData) {
|
franta-hg@38
|
124 |
pruvodceAktualniId = document.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@38
|
131 |
}
|
franta-hg@38
|
132 |
};
|
franta-hg@38
|
133 |
ajax.send(null);
|
franta-hg@38
|
134 |
}
|
franta-hg@38
|
135 |
}
|
franta-hg@39
|
136 |
|
franta-hg@39
|
137 |
/**
|
franta-hg@40
|
138 |
* Parametry si ukládáme za # do URL (window.location.hash)
|
franta-hg@40
|
139 |
* Můžeme měnit URL, aniž by prohlížeč obnovoval stránku.
|
franta-hg@40
|
140 |
* Uživatel si může URL zkopírovat a obnovit si příště stav aplikace.
|
franta-hg@39
|
141 |
* @param parametr jméno parametru, který hledáme
|
franta-hg@39
|
142 |
* @return hodnota parametr
|
franta-hg@39
|
143 |
*/
|
franta-hg@39
|
144 |
function getParametr(parametr) {
|
franta-hg@39
|
145 |
parametr = parametr.replace(/[\[]/,"\\\[").replace(/[\]]/,"\\\]");
|
franta-hg@39
|
146 |
//var regexS = "[\\?&]"+parametr+"=([^&#]*)";
|
franta-hg@45
|
147 |
var regexS = "[\\#&]"+parametr+"=([^&]*)";
|
franta-hg@39
|
148 |
var regex = new RegExp( regexS );
|
franta-hg@39
|
149 |
var results = regex.exec(window.location.hash);
|
franta-hg@39
|
150 |
if( results == null )
|
franta-hg@39
|
151 |
return "";
|
franta-hg@39
|
152 |
else
|
franta-hg@39
|
153 |
return decodeURIComponent(results[1]);
|
franta-hg@39
|
154 |
}
|
franta-hg@39
|
155 |
|
franta-hg@39
|
156 |
/**
|
franta-hg@39
|
157 |
* Uloží parametry (jako je SQL příkaz a stránka průvodce) do URL (za #),
|
franta-hg@39
|
158 |
* aby si uživatel mohl URL zkopírovat a příště si obnovit stav aplikace.
|
franta-hg@39
|
159 |
*/
|
franta-hg@39
|
160 |
function ulozURL() {
|
franta-hg@39
|
161 |
if (urlOdkaz['pruvodce']) {
|
franta-hg@39
|
162 |
window.location.hash = urlOdkaz['pruvodce'] + '&sql=' + encodeURIComponent(getSQL());
|
franta-hg@39
|
163 |
} else {
|
franta-hg@39
|
164 |
window.location.hash = 'sql=' + encodeURIComponent(getSQL());
|
franta-hg@39
|
165 |
}
|
franta-hg@39
|
166 |
}
|
franta-hg@39
|
167 |
/**
|
franta-hg@39
|
168 |
* Načte uložený stav aplikace z URL (SQL příkaz, průvodce).
|
franta-hg@39
|
169 |
*/
|
franta-hg@42
|
170 |
function nactiURL() {
|
franta-hg@40
|
171 |
/** Načteme uživatelův SQL příkaz z URL do vstupního pole */
|
franta-hg@42
|
172 |
if (getParametr('sql')) {
|
franta-hg@39
|
173 |
zobraz(getParametr('sql'), vstupniPole);
|
franta-hg@39
|
174 |
}
|
franta-hg@40
|
175 |
|
franta-hg@40
|
176 |
/** Načteme pozici v nápovědě */
|
franta-hg@40
|
177 |
if (getParametr('pruvodce')) {
|
franta-hg@40
|
178 |
ajaxPruvodceId(getParametr('pruvodce'));
|
franta-hg@40
|
179 |
} else {
|
franta-hg@40
|
180 |
ajaxPruvodceKod('vitejte');
|
franta-hg@40
|
181 |
}
|
franta-hg@39
|
182 |
}
|
franta-hg@39
|
183 |
|
franta-hg@39
|
184 |
window.onload = function() {
|
franta-hg@42
|
185 |
nactiURL();
|
franta-hg@42
|
186 |
} |