Projekt

Obecné

Profil

Stáhnout (18.1 KB) Statistiky
| Větev: | Revize:
1 e278dcbf Ondřej Anděl
<script>
2 31a2bb94 Anděl Ondřej
    let pageIndex = 0;
3
    let itemPerPage = 50;
4
    let itemCount = 0;
5
    let pageCount = 0;
6
7
    //what to do when page renders
8 e278dcbf Ondřej Anděl
    window.onload = function() {
9 a908ef13 Anděl Ondřej
        let sourceSelect = new vanillaSelectBox("#source");
10 e278dcbf Ondřej Anděl
        filtersChange();
11 fb32f0e8 Anděl Ondřej
        fetchData(false);
12 31a2bb94 Anděl Ondřej
13
        //page-label listener
14
        document.getElementById('page-label').addEventListener('keyup',function(e){
15
            if (e.key === 'Enter' || e.keyCode === 13) {
16
                this.blur();
17
            }
18
        });
19 e278dcbf Ondřej Anděl
    };
20
</script>
21
22
<div class="search-filters container" onload="filtersChange()">
23 9a7b1f4c Ondřej Anděl
    <div class="row">
24 fb32f0e8 Anděl Ondřej
        <div class="mr-3">
25
            <label for="lemma" class="mr-2">Lemma</label>
26
            <input type="text" id="lemma">
27
        </div>
28 a5559649 Anděl Ondřej
        <div class="mr-3">
29
            <label for="wordshape" class="mr-2">Slovní tvar</label>
30
            <input type="text" id="wordshape">
31
        </div>
32 9a7b1f4c Ondřej Anděl
        <div class="mr-3">
33
            <label for="source" class="mr-2">Rukopisný pramen</label>
34 a908ef13 Anděl Ondřej
            <select id="source" multiple>
35 fb32f0e8 Anděl Ondřej
                <option value = "0">rukopis Vídeňský</option>
36
                <option value = "1">zlomky Hanušovy</option>
37
                <option value = "2">zlomky Hradecké</option>
38
                <option value = "3">rukopis Cambridžský</option>
39
                <option value = "4">rukopis Františkánský</option>
40
                <option value = "5">zlomek Olomoucký</option>
41
                <option value = "6">fragment Strahovský</option>
42
                <option value = "7">zlomky Klementinsko-Křižovnické</option>
43
                <option value = "8">zlomky Mnichovské</option>
44
                <option value = "9">rukopis Lobkovický</option>
45
                <option value = "10">rukopis Pelclův</option>
46
                <option value = "11">rukopis Cerronský</option>
47
                <option value = "12">rukopis Fürstenberský</option>
48
                <option value = "13">rukopis Zebererův</option>
49
                <option value = "14">vydání Pavla Ješína z Bezdězi, Praha 1620</option>
50
                <option value = "15">básně připsané při Pulkavově kronice v rukopisu Litoměřickém</option>
51 a908ef13 Anděl Ondřej
            </select>
52 9a7b1f4c Ondřej Anděl
        </div>
53
        <div class="mr-3">
54 a908ef13 Anděl Ondřej
            <label for="location" class="mr-2">Pozice</label>
55 9a7b1f4c Ondřej Anděl
            <input type="text" id="location">
56
        </div>
57 a5559649 Anděl Ondřej
        <div class="mr-3">
58 0c5a3b54 Ondrej Drtina
            <label for="description2" class="mr-2">Doplňující údaj</label>
59 a5559649 Anděl Ondřej
            <input type="text" id="description2" />
60
        </div>
61 e278dcbf Ondřej Anděl
62
        <div class="mr-3">
63
            <label for="wordclass" class="mr-2">Slovní druh</label>
64
            <select onchange="filtersChange()"  id="wordclass">
65 a5559649 Anděl Ondřej
                <option selected="selected" value = "">nevybráno</option>
66
                <option value = "N">substantivum</option>
67
                <option value = "A">adjektivum</option>
68
                <option value = "P">pronomen</option>
69
                <option value = "C">numeralie</option>
70
                <option value = "V">verbum</option>
71
                <option value = "D">adverbium</option>
72
                <option value = "R">prepozice</option>
73
                <option value = "J">konjunkce</option>
74
                <option value = "T">partikule</option>
75
                <option value = "I">interjekce</option>
76 e278dcbf Ondřej Anděl
            </select>
77
        </div>
78
79
        <!-- conditionaly rendered filters-->
80 388846c1 Anděl Ondřej
        <div class="mr-3" id="filter-person">
81
            <label for="person" class="mr-2">Osoba</label>
82
            <select id="person">
83 a5559649 Anděl Ondřej
                <option selected="selected" value = "">nevybráno</option>
84 388846c1 Anděl Ondřej
                <option value = "1">1.</option>
85
                <option value = "2">2.</option>
86
                <option value = "3">3.</option>
87
            </select>
88
        </div>
89 e278dcbf Ondřej Anděl
        <div class="mr-3" id="filter-case">
90
            <label for="case" class="mr-2">Pád</label>
91
            <select id="case">
92 a5559649 Anděl Ondřej
                <option selected="selected" value = "">nevybráno</option>
93
                <option value = "1">nominativ</option>
94
                <option value = "2">genitiv</option>
95
                <option value = "3">dativ</option>
96
                <option value = "4">akuzativ</option>
97
                <option value = "5">vokativ</option>
98
                <option value = "6">lokál</option>
99
                <option value = "7">instrumentál</option>
100 e278dcbf Ondřej Anděl
            </select>
101
        </div>
102
        <div class="mr-3" id="filter-countability">
103
            <label for="countability" class="mr-2">Číslo</label>
104
            <select id="countability">
105 a5559649 Anděl Ondřej
                <option selected="selected" value = "">nevybráno</option>
106
                <option value = "S">singulár</option>
107
                <option value = "P">plurál</option>
108
                <option value = "D">duál</option>
109
            </select>
110
        </div>
111
        <div class="mr-3" id="filter-mood">
112
            <label for="mood" class="mr-2">Způsob</label>
113
            <select id="mood" onchange="moodChange()">
114
                <option selected="selected" value = "">nevybráno</option>
115
                <option value = "d">indikativ</option>
116
                <option value = "i">imperativ</option>
117
                <option value = "c">kondicionál</option>
118
            </select>
119
        </div>
120
        <div class="mr-3" id="filter-time">
121
            <label for="time" class="mr-2">Čas</label>
122
            <select id="time">
123
                <option selected="selected" value = "">nevybráno</option>
124
                <option value = "P">prézens</option>
125
                <option value = "A">aorist</option>
126
                <option value = "R">préteritum</option>
127
                <option value = "I">imperfektum</option>
128
                <option value = "H">plusquamperfektum</option>
129
                <option value = "F">futurum</option>
130
            </select>
131
        </div>
132
        <div class="mr-3" id="filter-v-type">
133
            <label for="v-type" class="mr-2">Slovesný rod</label>
134
            <select id="v-type">
135
                <option selected="selected" value = "">nevybráno</option>
136
                <option value = "A">aktivum</option>
137
                <option value = "P">pasivum</option>
138
            </select>
139
        </div>
140
        <div class="mr-3" id="filter-vid">
141
            <label for="vid" class="mr-2">Vid</label>
142
            <select id="vid">
143
                <option selected="selected" value = "">nevybráno</option>
144
                <option value = "P">perfektivum</option>
145
                <option value = "I">imperfektivum </option>
146
            </select>
147
        </div>
148
        <div class="mr-3" id="filter-irregular">
149
            <label for="irregular" class="mr-2">Neurčitý slovesný tvar</label>
150
            <select id="irregular" onchange="irregularChange()">
151
                <option selected="selected" value = "">nevybráno</option>
152
                <option value = "f">infinitiv</option>
153
                <option value = "S">supinum</option>
154
                <option value = "e">přech. přítomný</option>
155
                <option value = "m">přech. minulý</option>
156
                <option value = "A">part. perf. akt.</option>
157
                <option value = "P">part. perf. pas.</option>
158 e278dcbf Ondřej Anděl
            </select>
159
        </div>
160
        <div class="mr-3" id="filter-gender">
161
            <label for="gender" class="mr-2">Rod</label>
162
            <select id="gender">
163 a5559649 Anděl Ondřej
                <option selected="selected" value = "">nevybráno</option>
164
                <option value = "M">maskulinum</option>
165
                <option value = "F">femininum</option>
166
                <option value = "N">neutrum</option>
167 e278dcbf Ondřej Anděl
            </select>
168
        </div>
169
        <div class="mr-3" id="filter-shape">
170
            <label for="shape" class="mr-2">Tvar</label>
171
            <select id="shape">
172 a5559649 Anděl Ondřej
                <option selected="selected" value = "">nevybráno</option>
173
                <option value = "C">složený</option>
174
                <option value = "N">jmenný</option>
175 e278dcbf Ondřej Anděl
            </select>
176
        </div>
177
        <div class="mr-3" id="filter-grade">
178
            <label for="grade" class="mr-2">Stupeň</label>
179
            <select id="grade">
180 a5559649 Anděl Ondřej
                <option selected="selected" value = "">nevybráno</option>
181
                <option value = "1">pozitiv</option>
182
                <option value = "2">komparativ</option>
183
                <option value = "3">superlativ</option>
184 e278dcbf Ondřej Anděl
            </select>
185
        </div>
186
        <div class="mr-3" id="filter-type">
187
            <label for="type" class="mr-2">Druh</label>
188
            <select id="type">
189 a5559649 Anděl Ondřej
                <option selected="selected" value = "">nevybráno</option>
190
                <option value = "P">personalia</option>
191
                <option value = "S">posesiva</option>
192
                <option value = "D">demonstrativa</option>
193
                <option value = "Q">interogativa</option>
194
                <option value = "J">relativa</option>
195
                <option value = "Z">indefinita</option>
196
                <option value = "L">limitativa</option>
197
                <option value = "W">negativa</option>
198 e278dcbf Ondřej Anděl
            </select>
199
        </div>
200
        <div class="mr-3" id="filter-k-type">
201
            <label for="k-type" class="mr-2">Typ</label>
202
            <select id="k-type">
203 a5559649 Anděl Ondřej
                <option selected="selected" value = "">nevybráno</option>
204
                <option value = "V">větná</option>
205
                <option value = "C">členská</option>
206
                <option value = "N">navazovací</option>
207
                <option value = "P">spojení s přechodníkem</option>
208 e278dcbf Ondřej Anděl
            </select>
209
        </div>
210 a908ef13 Anděl Ondřej
211
        <!-- send button-->
212 a5559649 Anděl Ondřej
        <div class="ml-auto" id="filter-control-div">
213
            <i class="mr-1 my-auto" id="hit-count">0 záznamů</i>
214
            <button class="btn" id="filter-but" onclick="callFilter()">
215
                Filtrovat
216
            </button>
217 9d2c56ee Anděl Ondřej
            <button class="btn" data-toggle="modal" data-target="#settings-modal" title="Nastavení">
218
                <i class="fa fa-cogs"></i>
219
            </button>
220 176259e4 Anděl Ondřej
221 ddbf114a Ondrej Drtina
            <?php if(isset($_SESSION['loggedIn']) && $_SESSION['loggedIn'] == true) {?>
222 9d2c56ee Anděl Ondřej
            <button class="btn" data-toggle="modal" data-target="#edit-modal" data-title="Nový záznam" title="Nový záznam">
223 176259e4 Anděl Ondřej
                <i class="fa fa-plus"></i>
224 ddbf114a Ondrej Drtina
            </button>
225
            <?php }?>
226 a5559649 Anděl Ondřej
        </div>
227 9a7b1f4c Ondřej Anděl
    </div>
228
</div>
229
230 6ddecabb Anděl Ondřej
<div class="search-results mt-4">
231 9a7b1f4c Ondřej Anděl
    <table class="table table-striped">
232
        <thead>
233
        <tr>
234 a9af2c07 Anděl Ondřej
            <?php if(isset($_SESSION['loggedIn']) && $_SESSION['loggedIn'] == true) {?>
235
                <th scope="col">Vydáno</th>
236
            <?php }?>
237 9a7b1f4c Ondřej Anděl
            <th scope="col">Lemma</th>
238 a5559649 Anděl Ondřej
            <th scope="col">Slovní tvar</th>
239
            <th scope="col">Morfologie</th>
240 e278dcbf Ondřej Anděl
            <th scope="col">Rukopisy</th>
241
            <th scope="col">Pozice</th>
242 0c5a3b54 Ondrej Drtina
            <th scope="col">Doplňující údaj</th>
243 9a7b1f4c Ondřej Anděl
            <th scope="col"></th>
244
        </tr>
245
        </thead>
246
        <tbody id="search-table">
247
            <script>
248 a908ef13 Anděl Ondřej
                let data;
249 fb32f0e8 Anděl Ondřej
                function fetchData (filter = true) {
250 a908ef13 Anděl Ondřej
                    // (A1) GET SEARCH TERM
251
                    const formData = new FormData();
252 31a2bb94 Anděl Ondřej
                    formData.append("page", ""+pageIndex);
253
                    formData.append("items_per_page", ""+itemPerPage);
254 fb32f0e8 Anděl Ondřej
                    if(filter){
255
                        filterData(formData);
256
                    }
257
258 a5559649 Anděl Ondřej
                    // (A2) AJAX - USE HTTP:// NOT FILE:/
259 a908ef13 Anděl Ondřej
                    let xhr = new XMLHttpRequest();
260
                    xhr.open("POST", "./controller/TableController.php");
261
                    xhr.onload = function(){
262
                        let search = this.response;
263 53a9c7e2 Milan Vacek
                        //console.log(search);
264 a908ef13 Anděl Ondřej
                        let parsedJSON = JSON.parse(search);
265 fb32f0e8 Anděl Ondřej
                        if(parsedJSON.count === 0){
266
                            document.getElementById("no-data-label").style.display = "";
267 31a2bb94 Anděl Ondřej
                            document.getElementById("paging-control").style.display = "none";
268 fb32f0e8 Anděl Ondřej
                        } else {
269
                            document.getElementById("no-data-label").style.display = "none";
270 31a2bb94 Anděl Ondřej
                            document.getElementById("paging-control").style.display = "";
271 fb32f0e8 Anděl Ondřej
                        }
272 a5559649 Anděl Ondřej
273
                        if(parsedJSON.count === 1){
274
                            document.getElementById("hit-count").innerText = "1 záznamů";
275
                        } else if(parsedJSON.count < 5){
276
                            document.getElementById("hit-count").innerText = parsedJSON.count +" záznamů";
277
                        } else {
278
                            document.getElementById("hit-count").innerText = parsedJSON.count +" záznamů";
279
                        }
280
281 31a2bb94 Anděl Ondřej
                        itemCount = parsedJSON.count;
282
                        pageCount = Math.ceil(itemCount / itemPerPage);
283
                        document.getElementById("page-label").value = (pageIndex + 1) + " / " + pageCount;
284 a908ef13 Anděl Ondřej
                        data = parsedJSON.data;
285
                        renderData(parsedJSON.data);
286
                    };
287
                    xhr.send(formData);
288
                }
289
290 2fe292f3 Anděl Ondřej
                function publishItem(id, index){
291
                    let item = data[index];
292 a9af2c07 Anděl Ondřej
                    const finishedChecked = document.getElementById("check-"+id).checked;
293
294
                    const formData = new FormData();
295
                    formData.append("finished", finishedChecked);
296
297
                    formData.append("id", item.id);
298
                    formData.append("ending", item.ending);
299
                    formData.append("prefix", item.prefix);
300
                    formData.append("suffix", item.suffix);
301
302
                    formData.append("namedentity", item.namedentity);
303
                    formData.append("position1", item.position1);
304
                    formData.append("position2", item.position2);
305
                    formData.append("positiondetail", item.positiondetail);
306
                    formData.append("word", item.word);
307
                    formData.append("lemma", item.lemma.lemma);
308
                    formData.append("manuscript", item.manuscript);
309
                    formData.append("context", item.context);
310
                    formData.append("description", item.description);
311
                    formData.append("description2", item.description2);
312
                    formData.append("description3", item.description3);
313
                    formData.append("tag", item.tag.tag);
314
                    formData.append("pos", item.lemma.pos);
315
                    formData.append("date", item.date);
316
317
                    var xhr = new XMLHttpRequest();
318
                    xhr.open("POST", "./controller/UpdateController.php");
319 2fe292f3 Anděl Ondřej
                    xhr.send(formData);
320 a9af2c07 Anděl Ondřej
                    setTimeout(function(){
321
                        location.reload();
322
                    }, 500);
323
                }
324
325 a908ef13 Anděl Ondřej
                function renderData(data) {
326
                    let result = "";
327
                    data.forEach((item,id) => {
328
                        result += "<tr>";
329 a9af2c07 Anděl Ondřej
                        <?php if(isset($_SESSION['loggedIn']) && $_SESSION['loggedIn'] == true) {?>
330 fcb9c374 Tomáš Pašek
                            result += "<td><input type='checkbox' id='check-"+item.id+"' onchange='publishItem("+item.id+", "+ id+ ")' "+ ((item.finished === true) ? 'checked' : '') +" /></td>";
331 a9af2c07 Anděl Ondřej
                        <?php }?>
332 a908ef13 Anděl Ondřej
                        result += "<td>" + item.lemma.lemma + "</td>";
333 a5559649 Anděl Ondřej
                        result += "<td>" + item.word + "</td>";
334 5f2bde6d Anděl Ondřej
                        result += "<td>" + renderTag(item.tag.tag) + "</td>";
335 a908ef13 Anděl Ondřej
                        result += "<td>" + renderManuscript(item.manuscript) + "</td>";
336
                        result += "<td>" + item.position1 + (item.position2 ? ("/" + item.position2 + (item.positiondetail ? "/"  + item.positiondetail :  "")) : "")  + "</td>";
337 60e1a713 Milan Vacek
                        result += "<td>" + ((item.description2 !== null) ? item.description2 : "-") + "</td>";
338 a908ef13 Anděl Ondřej
                        result += "<td class=\"action-td\">" +
339 af2e04cd Anděl Ondřej
                            "<button class=\"btn mr-1\" title=\"Upravit\"  data-toggle=\"modal\" data-target=\"#edit-modal\" data-pseudo-id='" + id + "' data-title=\"Upravit záznam\"><i class=\"fa fa-pencil\"></i></button>" +
340 424379e9 Ondrej Drtina
                            "<button class=\"btn\" title=\"Detail\"  data-toggle=\"modal\" data-target=\"#detail-modal\" data-pseudo-id='" + id + "'><i class=\"fa fa-search\"></i></button>";
341
                            <?php if(isset($_SESSION['loggedIn']) && $_SESSION['loggedIn'] == true) { ?> //show remove only if logged in
342
                                result += "<button class=\"btn ml-1\" title=\"Odstranit\"  data-toggle=\"modal\" data-target=\"#remove-modal\" data-pseudo-id='" + id + "'><i class=\"fa fa-trash\"></i></button>";
343
                            <?php }?>
344
                        result += "</td>";    
345 a908ef13 Anděl Ondřej
                        result += "</tr>";
346
                    });
347
                    document.getElementById("search-table").innerHTML = result;
348
                }
349 af2e04cd Anděl Ondřej
350
                function removeSelectedItem(idToDelete){
351
                    const data = new FormData(); //to pass ids, which we want to delete from DB
352
                    data.append("id", ""+idToDelete); //id to delete from table dd_wordform
353
354
                    let xhr = new XMLHttpRequest();
355
                    xhr.open("POST", "./controller/RemoveController.php");
356
                    xhr.send(data);
357
                    fetchData(true); //reload data after item delete
358
                }
359 9a7b1f4c Ondřej Anděl
            </script>
360
        </tbody>
361
    </table>
362 fb32f0e8 Anděl Ondřej
363
    <h3 id="no-data-label" class="mx-auto text-center font-italic">Žádná data nebyla nalezena</h3>
364 31a2bb94 Anděl Ondřej
365
    <div id="paging-control" class="mx-auto text-center" style="display: none">
366
        <button class="border-0 shadow-none bg-transparent" onclick="moveToFirst()"><b><<</b></button>
367
        <button class="border-0 shadow-none bg-transparent"  onclick="moveToPrevious()"><b><</b></button>
368
        <input class="border-0 shadow-none bg-transparent text-center font-weight-bold"
369
               id="page-label"
370
               onfocus="onManualPageStart(this)"
371
               onblur="onManualPageEnd(this)"
372
        />
373
        <button class="border-0 shadow-none bg-transparent"  onclick="moveToNext()"><b>></b></button>
374
        <button  class="border-0 shadow-none bg-transparent" onclick="moveToLast()"><b>>></b></button>
375
    </div>
376 af2e04cd Anděl Ondřej
</div>