Projekt

Obecné

Profil

« Předchozí | Další » 

Revize af2e04cd

Přidáno uživatelem Ondřej Anděl před téměř 4 roky(ů)

Enhancement #8756: Refactoring, klient-side

Zobrazit rozdíly:

application/changes.php
9 9

  
10 10
    <!-- css -->
11 11
    <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.1.3/css/bootstrap.min.css">
12
    <link rel="stylesheet" href="view/style.css?<?php echo date('l jS \of F Y h:i:s A'); ?>">
12
    <link rel="stylesheet" href="view/style.css">
13 13
    <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.7.0/css/font-awesome.min.css">
14 14

  
15 15
    <!-- jQuery library -->
......
26 26

  
27 27
    <div class="row app-content">
28 28
        <div class="col-xs-12 col-sm-12 p-4 content d-flex">
29
            <?php include "./view/changesContent.php" ?>
29
            <?php include "./view/contents/changesContent.php" ?>
30 30
        </div>
31 31
    </div>
32 32
    <?php include "./view/footer.html" ?>
application/index.php
11 11

  
12 12
    <!-- css -->
13 13
    <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.1.3/css/bootstrap.min.css">
14
    <link rel="stylesheet" href="view/style.css?<?php echo date('l jS \of F Y h:i:s A'); ?>">
14
    <link rel="stylesheet" href="view/style.css">
15 15
    <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.7.0/css/font-awesome.min.css">
16 16

  
17 17
    <!-- jQuery library -->
......
29 29

  
30 30
    <div class="row app-content">
31 31
        <div class="col-xs-12 col-sm-12 p-4 content d-flex">
32
            <?php include "./view/indexContent.html" ?>
32
            <?php include "./view/contents/indexContent.html" ?>
33 33
        </div>
34 34
    </div>
35 35
    <?php include "./view/footer.html" ?>
application/manual.php
10 10
    <title>Dalimilova kronika</title>
11 11
    <!-- css -->
12 12
    <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.1.3/css/bootstrap.min.css">
13
    <link rel="stylesheet" href="view/style.css?<?php echo date('l jS \of F Y h:i:s A'); ?>">
13
    <link rel="stylesheet" href="view/style.css">
14 14
    <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.7.0/css/font-awesome.min.css">
15 15

  
16 16
    <!-- jQuery library -->
......
28 28

  
29 29
    <div class="row app-content">
30 30
        <div class="col-xs-12 col-sm-12 p-4 content d-flex">
31
            <?php include "./view/manualContent.php" ?>
31
            <?php include "./view/contents/manualContent.php" ?>
32 32
        </div>
33 33
    </div>
34 34
    <?php include "./view/footer.html" ?>
application/search.php
7 7

  
8 8
    <!-- css -->
9 9
    <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.1.3/css/bootstrap.min.css">
10
    <link rel="stylesheet" href="view/style.css?<?php echo date('l jS \of F Y h:i:s A'); ?>">
10
    <link rel="stylesheet" href="view/style.css">
11 11
    <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.7.0/css/font-awesome.min.css">
12 12
    <link rel="stylesheet" href="./view/library/vanillaSelectBox/vanillaSelectBox.css">
13 13

  
......
16 16
    <script src="https://cdnjs.cloudflare.com/ajax/libs/tether/1.4.0/js/tether.min.js"></script>
17 17
    <script src="./view/library/jQuery-Multi/src/jquery.multi-select.js"></script>
18 18

  
19
    <!-- JavaScript -->
19
    <!-- JavaScript library-->
20 20
    <script src="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0-alpha.6/js/bootstrap.min.js"></script>
21 21
    <script src="./view/library/vanillaSelectBox/vanillaSelectBox.js"></script>
22

  
23
    <!-- own JavaScript -->
24
    <script src="./view/js-scripts/convertors.js"></script>
25
    <script src="./view/js-scripts/filterControl.js"></script>
26
    <script src="./view/js-scripts/paging.js"></script>
22 27
</head>
23 28
<body>
24 29
<div class="container-fluid">
......
27 32

  
28 33
    <div class="row app-content">
29 34
        <div class="col-xs-12 col-sm-12 p-5 pb-4 content d-flex">
30
            <?php include "./view/searchContent.php" ?>
35
            <?php include "./view/contents/searchContent.php" ?>
31 36
        </div>
32 37
    </div>
33 38
    <?php include "./view/footer.html" ?>
application/users.php
9 9

  
10 10
    <!-- css -->
11 11
    <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.1.3/css/bootstrap.min.css">
12
    <link rel="stylesheet" href="view/style.css?<?php echo date('l jS \of F Y h:i:s A'); ?>">
12
    <link rel="stylesheet" href="view/style.css">
13 13
    <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.7.0/css/font-awesome.min.css">
14 14

  
15 15
    <!-- jQuery library -->
......
26 26

  
27 27
    <div class="row app-content">
28 28
        <div class="col-xs-12 col-sm-12 p-4 content d-flex">
29
            <?php include "./view/userContent.php" ?>
29
            <?php include "./view/contents/userContent.php" ?>
30 30
        </div>
31 31
    </div>
32 32
    <?php include "./view/footer.html" ?>
application/view/Index.php
1
<!-- TESTOVACI INDEX-->
2
<?
3
include "../controller/TableController.php";
4
include "../controller/UpdateController.php";
5
?>
6
<script>
7
    function doSearch () {
8
        // (A1) GET SEARCH TERM
9
        var data = new FormData();
10
        //data.append("manuscript", "0,3"); //příklad pro filtraci manuscriptů, asi se ještě uprav
11
       /* data.append("page", "0");
12
        data.append("items_per_page", "50");
13
        data.append("lemma", "megaultranováLemma");
14
        data.append("word", "novéWord2");
15
        data.append("context", "novýContext");
16
        data.append("description", "novádescription");
17
        data.append("description2", "novádescription2");
18
        data.append("description3", "novádescription3");
19
        data.append("ending", "novéEnding");
20
        data.append("finished", false);
21
        data.append("namedentity",1);
22
        data.append("position1", "1");
23
        data.append("position2", "2");
24
        data.append("positiondetail", "posdet");
25
        data.append("prefix", "prefix");
26
        data.append("suffix", "suffix");
27
        data.append("id", 9);*/
28

  
29
        data.append("id", 4);
30
        data.append("wordform_id", 4);
31
        //data.append("lemma_id", 3686);
32
        //data.append("tag_id", 1219);
33
        /*data.append("pos", 6);
34
        data.append("manuscript", [1,2,3,4,5]);
35
        data.append("wordform_id", 9);
36
        data.append("tag", "A---------");*/
37
        //data.append("finished", "false");
38
        // data.append("tag_pos", "V");
39
        // data.append("tag_verb_aspect", "P");
40
        // data.append("tag_number", "S");
41
        // data.append("word", "okáza");
42
        var xhr = new XMLHttpRequest();
43
        xhr.open("POST", "../controller/RemoveController.php");
44
        /*xhr.onload = function(){
45
            let results = document.getElementById("results"),
46
                //if anything returned then do this
47
                search = JSON.parse(this.response);
48
            results.innerHTML = "";
49
            console.log(search);
50
        };*/
51
        xhr.send(data);
52
        return false;
53
    }
54
</script>
55

  
56
<form onsubmit="return doSearch()">
57
    <input type="submit" value="Search"/>
58
</form>
59

  
60
<div id="results"></div>
application/view/changesContent.php
1
<?php
2
if (isset($_SESSION['role']) && $_SESSION['role'] == "admin") {
3
    echo "<script>
4
        //what to do when page renders
5
        window.onload = function() {
6
            fetchChanges();
7
        };
8
    </script>
9

  
10
    <div class=\"search-results my-4\">
11
        <table class=\"table table-striped\">
12
            <thead>
13
            <tr>
14
                <th scope=\"col\">Lemma</th>
15
                <th scope=\"col\">Slovní tvar</th>
16
                <th scope=\"col\">Návrh změny</th>
17
                <th scope=\"col\"></th>
18
            </tr>
19
            </thead>
20
            <tbody id=\"search-table\">
21
                <script>
22
                    let changes;
23
                    function fetchChanges () {
24
                        // (A1) GET SEARCH TERM
25
                        const formData = new FormData();
26

  
27
                        // (A2) AJAX - USE HTTP:// NOT FILE:/
28
                        let xhr = new XMLHttpRequest();
29
                        xhr.open(\"POST\", \"./controller/GetChangeRequests.php\");
30
                        xhr.onload = function(){
31
                            let search = this.response;
32
                            let parsedJSON = JSON.parse(search);
33
                            changes = parsedJSON;
34
                            renderChanges(parsedJSON);
35
                        };
36
                        xhr.send(formData);
37
                    }
38

  
39

  
40
                    function renderChanges(changesList) {
41
                        let result = \"\";
42
                        if(changesList !== null){
43
                            changesList.forEach((item,id) => {
44
                                result +=\" <tr>\";
45
                                result += \" <td>\" + item.lemma + \" </td> \";
46
                                result += \" <td>\" + item.word + \" </td> \";
47
                                result += \" <td>\" + item.message + \" <td>\";
48
                                result += \" <td class='action-td'> \" +
49
                                    \" <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 > \" +
50
                                    \" </td>\";
51
                                result += \" </tr> \";
52
                            });
53
                            document.getElementById(\"search-table\").innerHTML = result;                            
54
                            document.getElementById(\"no-data-label\").style.display = \"none\";
55
                        } else {
56
                            document.getElementById(\"search-table\").innerHTML = result;   
57
                            document.getElementById(\"no-data-label\").style.display = \"\";
58
                        }
59
                    }
60
                </script>
61
            </tbody>
62
        </table>
63
        
64
        <h3 id=\"no-data-label\" class=\"mx-auto text-center font-italic\">Žádná data nebyla nalezena</h3>
65
    </div>";
66
} else {
67
    echo "<h3 class=\"mx-auto text-center\">Pro navštívení stránky nemáte dostatečná oprávnění</h3>";
68
}
69

  
70

  
application/view/contents/changesContent.php
1
<?php
2
if (isset($_SESSION['role']) && $_SESSION['role'] == "admin") {
3
    echo "<script>
4
        //what to do when page renders
5
        window.onload = function() {
6
            fetchChanges();
7
        };
8
    </script>
9

  
10
    <div class=\"search-results my-4\">
11
        <table class=\"table table-striped\">
12
            <thead>
13
            <tr>
14
                <th scope=\"col\">Lemma</th>
15
                <th scope=\"col\">Slovní tvar</th>
16
                <th scope=\"col\">Návrh změny</th>
17
                <th scope=\"col\"></th>
18
            </tr>
19
            </thead>
20
            <tbody id=\"search-table\">
21
                <script>
22
                    let changes;
23
                    function fetchChanges () {
24
                        // (A1) GET SEARCH TERM
25
                        const formData = new FormData();
26

  
27
                        // (A2) AJAX - USE HTTP:// NOT FILE:/
28
                        let xhr = new XMLHttpRequest();
29
                        xhr.open(\"POST\", \"./controller/GetChangeRequests.php\");
30
                        xhr.onload = function(){
31
                            let search = this.response;
32
                            let parsedJSON = JSON.parse(search);
33
                            changes = parsedJSON;
34
                            renderChanges(parsedJSON);
35
                        };
36
                        xhr.send(formData);
37
                    }
38

  
39

  
40
                    function renderChanges(changesList) {
41
                        let result = \"\";
42
                        if(changesList !== null){
43
                            changesList.forEach((item,id) => {
44
                                result +=\" <tr>\";
45
                                result += \" <td>\" + item.lemma + \" </td> \";
46
                                result += \" <td>\" + item.word + \" </td> \";
47
                                result += \" <td>\" + item.message + \" <td>\";
48
                                result += \" <td class='action-td'> \" +
49
                                    \" <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 > \" +
50
                                    \" </td>\";
51
                                result += \" </tr> \";
52
                            });
53
                            document.getElementById(\"search-table\").innerHTML = result;                            
54
                            document.getElementById(\"no-data-label\").style.display = \"none\";
55
                        } else {
56
                            document.getElementById(\"search-table\").innerHTML = result;   
57
                            document.getElementById(\"no-data-label\").style.display = \"\";
58
                        }
59
                    }
60
                </script>
61
            </tbody>
62
        </table>
63
        
64
        <h3 id=\"no-data-label\" class=\"mx-auto text-center font-italic\">Žádná data nebyla nalezena</h3>
65
    </div>";
66
} else {
67
    echo "<h3 class=\"mx-auto text-center\">Pro navštívení stránky nemáte dostatečná oprávnění</h3>";
68
}
69

  
70

  
application/view/contents/indexContent.html
1
<p>
2
    Dvě existující, už vytvořené samostatné databáze slov a jejich tvarů ze všech pramenů Dalimilovy kroniky (tj. staročeské památky z období 14., 15. století).
3
    Kronika vypráví ve staročeštině o dějinách naší země, je to první česky psaná kronika.
4
    Zkoumání jejího jazyka dovoluje popsat hlavní vývojové tendence češtiny v tzv. staročeském období (14., 15. století)
5
    a pochopit stav češtiny i její vývoj v současnosti. Databáze byly vytvořeny jako podpora pro zpracování tiskové podoby indexu
6
    všech slov a tvarů doložených v dochovaných pramenech. Index (celkem 3 díly) vyšel postupně v letech 2012–2020 jako výsledek
7
    řešení tří vědeckých projektů v rámci Fakulty pedagogické.
8
</p>
application/view/contents/manualContent.php
1
<h1>Vyhledávání</h1>
2
<h2>Základní možnosti</h2>
3
<p>Vyhledávání je možné dle libovolných z níže uvedených parametrů. Je možné vybrat jeden nebo více parametrů a vyhledávání zobrazí poze výsledky, jež splňují všechny podmínky. Při vybrání specifických parametrů se zobrazí rozšiřující možnosti pro bližší upřesnění požadavků. U parametrů, které zobrazí tyto rozšiřující možnosti, bude tato skutečnost zdůrazněna níže v této kapitole.</p>
4
<h3>Lemma</h3>
5
<p>Toto vyhledávací políčko umožní vyhledávání podle sloupce lemma. Je možné zadat samotné počáteční písmeno, počáteční část slova nebo slovo celé. V případě, že výrazem, který bude zadán, je očekáván právě jeden znak, je možné použít operátor <b>_</b>. Pokud má hledaný výzar předcházet libovolný počet znaků, je možné použít operátor <b>%</b>.</p>
6
<h3>Slovní tvar</h3>
7
<p>Jedná se opět o otevřené políčko pro zadávání, ovšem s velkým rozdílem oproti vyhledávání lemmy. Toto políčko hledá ve sloupci Slovní tvar pouze přesné shody.</p>
8
<h3>Rukopisný pramen</h3>
9
<p>Toto kritérium je zadané pomocí rozbalovacího seznamu. V tomto seznamu jsou vyzobrazeny všechny prameny, jež databáze obsahuje. Je možné vybrat libovolné množství pramenů současně, přičemž při nevyplnění tohoto políčka systém automaticky bere v potaz všechny prameny. Po výběru pramenů systém najde všechny záznamy, které se nachází aspoň v jednom z vybraných pramenů. </p>
10
<h3>Pozice</h3>
11
<p> Toto číselné kritérium určuje pozici záznamu v dokumentu a lze zadat následujícími třemi způsoby. První způsob je zadat pouze číselnou hodnotu. V tomto případě se systém pokusí najít všechny záznamy, jejichž číselná hodnota před lomítkem je stejná. V opačném případě je možné zadat číselnou hodnotu předcházenou znakem <b>/</b>. Výsledek této operace bude vypsání všech záznamů, jež  mají zadanou hodnotu na druhé pozici, za lomítkem. Poslední způsob je zadání celé pozice, v jehož případě systém vyhledá pouze danou pozici. Tímto způsobem lze také zadat element na třetí pozici.</p>
12
<h3>Poznámka 2</h3>
13
<p>Toto kritérium porovná zadaný text s obsahem sloupce Poznámka 2. Pokud je zadán pouze text nebo část textu, systém zaháji hledání této části od začátku slova ve sloupci. Pokud je požadováno, aby text předcházel právě jeden znak lze použít operátor <b>_</b>. V opačném případě kdy vyžadováno, aby text předcházelo nula až neomezeně znaků, lze použít operátor <b>%</b>.</p>
14
<h3>Slovní druh</h3>
15
<p>Slovní druh lze vybrat z rozbalovacího seznamu. Tato volba nejen ovlivní výsledky vyhledávání, ale také <b>umožňí volbu pokročilých možností</b>. Tyty možnosti jsou popsány v tabulce v kapitole <b>Pokročilé možnosti</b>.</p>
16

  
17
<h2>Pokročilé možnosti</h2>
18
<h3>Slovní druh</h3>
19
<table>
20
<tr>
21
	<td>Slovní druh</td>
22
	<td>Pád</td>
23
	<td>Číslo</td>
24
	<td>Rod</td>
25
	<td>Tvar</td>
26
	<td>Stupeň</td>
27
	<td>Druh</td>
28
	<td>Osoba</td>
29
	<td>Způsob</td>
30
	<td>Čas</td>
31
	<td>Slovesný rod</td>
32
	<td>Vid</td>
33
	<td>Neurčitý Slovesný Tvar</td>
34
	<td>Typ</td>
35
</tr>
36
<tr>
37
	<td>Substantivum </td>
38
	<td>Ano</td>
39
	<td>Ano</td>
40
	<td>Ano</td>
41
	<td>Ne</td>
42
	<td>Ne</td>
43
	<td>Ne</td>
44
	<td>Ne</td>
45
	<td>Ne</td>
46
	<td>Ne</td>
47
	<td>Ne</td>
48
	<td>Ne</td>
49
	<td>Ne</td>
50
	<td>Ne</td>
51
</tr>
52
<tr>
53
	<td>Adjektivum</td>
54
	<td>Ano</td>
55
	<td>Ano</td>
56
	<td>Ano</td>
57
	<td>Ano</td>
58
	<td>Ano</td>
59
	<td>Ne</td>
60
	<td>Ne</td>
61
	<td>Ne</td>
62
	<td>Ne</td>
63
	<td>Ne</td>
64
	<td>Ne</td>
65
	<td>Ne</td>
66
	<td>Ne</td>
67
</tr>
68
<tr>
69
	<td>Pronomen</td>
70
	<td>Ano</td>
71
	<td>Ano</td>
72
	<td>Ano</td>
73
	<td>Ne</td>
74
	<td>Ano</td>
75
	<td>Ne</td>
76
	<td>Ne</td>
77
	<td>Ne</td>
78
	<td>Ne</td>
79
	<td>Ne</td>
80
	<td>Ne</td>
81
	<td>Ne</td>
82
	<td>Ne</td>
83
</tr>
84
	<td>Numeralie</td>
85
	<td>Ano</td>
86
	<td>Ano</td>
87
	<td>Ano</td>
88
	<td>Ne</td>
89
	<td>Ne</td>
90
	<td>Ne</td>
91
	<td>Ne</td>
92
	<td>Ne</td>
93
	<td>Ne</td>
94
	<td>Ne</td>
95
	<td>Ne</td>
96
	<td>Ne</td>
97
	<td>Ne</td>
98
<tr>
99
	<td>Verbum</td>
100
	<td>Ano</td>
101
	<td>Ano</td>
102
	<td>Ano</td>
103
	<td>Ne</td>
104
	<td>Ne</td>
105
	<td>Ne</td>
106
	<td>Ano</td>
107
	<td>Ano</td>
108
	<td>Ano</td>
109
	<td>Ano</td>
110
	<td>Ano</td>
111
	<td>Ano</td>
112
	<td>Ne</td>
113
</tr>
114
<tr>
115
	<td>Adverbium</td>
116
	<td>Ne</td>
117
	<td>Ne</td>
118
	<td>Ne</td>
119
	<td>Ne</td>
120
	<td>Ano</td>
121
	<td>Ne</td>
122
	<td>Ne</td>
123
	<td>Ne</td>
124
	<td>Ne</td>
125
	<td>Ne</td>
126
	<td>Ne</td>
127
	<td>Ne</td>
128
	<td>Ne</td>
129
</tr>
130
<tr>
131
	<td>Prepozice</td>
132
	<td>Ano</td>
133
	<td>Ne</td>
134
	<td>Ne</td>
135
	<td>Ne</td>
136
	<td>Ne</td>
137
	<td>Ne</td>
138
	<td>Ne</td>
139
	<td>Ne</td>
140
	<td>Ne</td>
141
	<td>Ne</td>
142
	<td>Ne</td>
143
	<td>Ne</td>
144
	<td>Ne</td>
145
</tr>
146
<tr>
147
	<td>Konjunkce</td>
148
	<td>Ne</td>
149
	<td>Ne</td>
150
	<td>Ne</td>
151
	<td>Ne</td>
152
	<td>Ne</td>
153
	<td>Ne</td>
154
	<td>Ne</td>
155
	<td>Ne</td>
156
	<td>Ne</td>
157
	<td>Ne</td>
158
	<td>Ne</td>
159
	<td>Ne</td>
160
	<td>Ano</td>
161
</tr>
162
</table>
application/view/contents/searchContent.php
1
<script>
2
    let pageIndex = 0;
3
    let itemPerPage = 50;
4
    let itemCount = 0;
5
    let pageCount = 0;
6

  
7
    //what to do when page renders
8
    window.onload = function() {
9
        let sourceSelect = new vanillaSelectBox("#source");
10
        filtersChange();
11
        fetchData(false);
12

  
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
    };
20
</script>
21

  
22
<div class="search-filters container" onload="filtersChange()">
23
    <div class="row">
24
        <div class="mr-3">
25
            <label for="lemma" class="mr-2">Lemma</label>
26
            <input type="text" id="lemma">
27
        </div>
28
        <div class="mr-3">
29
            <label for="wordshape" class="mr-2">Slovní tvar</label>
30
            <input type="text" id="wordshape">
31
        </div>
32
        <div class="mr-3">
33
            <label for="source" class="mr-2">Rukopisný pramen</label>
34
            <select id="source" multiple>
35
                <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
            </select>
52
        </div>
53
        <div class="mr-3">
54
            <label for="location" class="mr-2">Pozice</label>
55
            <input type="text" id="location">
56
        </div>
57
        <div class="mr-3">
58
            <label for="description2" class="mr-2">Poznámka 2</label>
59
            <input type="text" id="description2" />
60
        </div>
61

  
62
        <div class="mr-3">
63
            <label for="wordclass" class="mr-2">Slovní druh</label>
64
            <select onchange="filtersChange()"  id="wordclass">
65
                <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
            </select>
77
        </div>
78

  
79
        <!-- conditionaly rendered filters-->
80
        <div class="mr-3" id="filter-person">
81
            <label for="person" class="mr-2">Osoba</label>
82
            <select id="person">
83
                <option selected="selected" value = "">nevybráno</option>
84
                <option value = "1">1.</option>
85
                <option value = "2">2.</option>
86
                <option value = "3">3.</option>
87
            </select>
88
        </div>
89
        <div class="mr-3" id="filter-case">
90
            <label for="case" class="mr-2">Pád</label>
91
            <select id="case">
92
                <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
            </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
                <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
            </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
                <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
            </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
                <option selected="selected" value = "">nevybráno</option>
173
                <option value = "C">složený</option>
174
                <option value = "N">jmenný</option>
175
            </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
                <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
            </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
                <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
            </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
                <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
            </select>
209
        </div>
210

  
211
        <!-- send button-->
212
        <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

  
218
            <?php if(isset($_SESSION['loggedIn']) && $_SESSION['loggedIn'] == true) {?>
219
            <button class="btn" data-toggle="modal" data-target="#edit-modal" data-title="Nový záznam">
220
                <i class="fa fa-plus"></i>
221
            </button>
222
            <?php }?>
223
        </div>
224
    </div>
225
</div>
226

  
227
<div class="search-results mt-4">
228
    <table class="table table-striped">
229
        <thead>
230
        <tr>
231
            <?php if(isset($_SESSION['loggedIn']) && $_SESSION['loggedIn'] == true) {?>
232
                <th scope="col">Vydáno</th>
233
            <?php }?>
234
            <th scope="col">Lemma</th>
235
            <th scope="col">Slovní tvar</th>
236
            <th scope="col">Morfologie</th>
237
            <th scope="col">Rukopisy</th>
238
            <th scope="col">Pozice</th>
239
            <th scope="col">Poznámka 2</th>
240
            <th scope="col"></th>
241
        </tr>
242
        </thead>
243
        <tbody id="search-table">
244
            <script>
245
                let data;
246
                function fetchData (filter = true) {
247
                    // (A1) GET SEARCH TERM
248
                    const formData = new FormData();
249
                    formData.append("page", ""+pageIndex);
250
                    formData.append("items_per_page", ""+itemPerPage);
251
                    if(filter){
252
                        filterData(formData);
253
                    }
254

  
255
                    // (A2) AJAX - USE HTTP:// NOT FILE:/
256
                    let xhr = new XMLHttpRequest();
257
                    xhr.open("POST", "./controller/TableController.php");
258
                    xhr.onload = function(){
259
                        let search = this.response;
260
                        //console.log(search);
261
                        let parsedJSON = JSON.parse(search);
262
                        if(parsedJSON.count === 0){
263
                            document.getElementById("no-data-label").style.display = "";
264
                            document.getElementById("paging-control").style.display = "none";
265
                        } else {
266
                            document.getElementById("no-data-label").style.display = "none";
267
                            document.getElementById("paging-control").style.display = "";
268
                        }
269

  
270
                        if(parsedJSON.count === 1){
271
                            document.getElementById("hit-count").innerText = "1 záznamů";
272
                        } else if(parsedJSON.count < 5){
273
                            document.getElementById("hit-count").innerText = parsedJSON.count +" záznamů";
274
                        } else {
275
                            document.getElementById("hit-count").innerText = parsedJSON.count +" záznamů";
276
                        }
277

  
278
                        itemCount = parsedJSON.count;
279
                        pageCount = Math.ceil(itemCount / itemPerPage);
280
                        document.getElementById("page-label").value = (pageIndex + 1) + " / " + pageCount;
281
                        data = parsedJSON.data;
282
                        renderData(parsedJSON.data);
283
                    };
284
                    xhr.send(formData);
285
                }
286

  
287
                function publishItem(id, index){
288
                    let item = data[index];
289
                    const finishedChecked = document.getElementById("check-"+id).checked;
290

  
291
                    const formData = new FormData();
292
                    formData.append("finished", finishedChecked);
293

  
294
                    formData.append("id", item.id);
295
                    formData.append("ending", item.ending);
296
                    formData.append("prefix", item.prefix);
297
                    formData.append("suffix", item.suffix);
298

  
299
                    formData.append("namedentity", item.namedentity);
300
                    formData.append("position1", item.position1);
301
                    formData.append("position2", item.position2);
302
                    formData.append("positiondetail", item.positiondetail);
303
                    formData.append("word", item.word);
304
                    formData.append("lemma", item.lemma.lemma);
305
                    formData.append("manuscript", item.manuscript);
306
                    formData.append("context", item.context);
307
                    formData.append("description", item.description);
308
                    formData.append("description2", item.description2);
309
                    formData.append("description3", item.description3);
310
                    formData.append("tag", item.tag.tag);
311
                    formData.append("pos", item.lemma.pos);
312
                    formData.append("date", item.date);
313

  
314
                    var xhr = new XMLHttpRequest();
315
                    xhr.open("POST", "./controller/UpdateController.php");
316
                    xhr.send(formData);
317
                    setTimeout(function(){
318
                        location.reload();
319
                    }, 500);
320
                }
321

  
322
                function renderData(data) {
323
                    let result = "";
324
                    data.forEach((item,id) => {
325
                        result += "<tr>";
326
                        <?php if(isset($_SESSION['loggedIn']) && $_SESSION['loggedIn'] == true) {?>
327
                            result += "<td><input type='checkbox' id='check-"+item.id+"' onchange='publishItem("+item.id+", "+ id+ ")' "+ ((item.finished === true) ? 'checked' : '') +" /></td>";
328
                        <?php }?>
329
                        result += "<td>" + item.lemma.lemma + "</td>";
330
                        result += "<td>" + item.word + "</td>";
331
                        result += "<td>" + item.tag.tag + "</td>";
332
                        result += "<td>" + renderManuscript(item.manuscript) + "</td>";
333
                        result += "<td>" + item.position1 + (item.position2 ? ("/" + item.position2 + (item.positiondetail ? "/"  + item.positiondetail :  "")) : "")  + "</td>";
334
                        result += "<td>" + ((item.description2 !== null) ? item.description2 : "-") + "</td>";
335
                        result += "<td class=\"action-td\">" +
336
                            "<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>" +
337
                            "<button class=\"btn\" title=\"Detail\"  data-toggle=\"modal\" data-target=\"#detail-modal\" data-pseudo-id='" + id + "'><i class=\"fa fa-search\"></i></button>";
338
                            <?php if(isset($_SESSION['loggedIn']) && $_SESSION['loggedIn'] == true) { ?> //show remove only if logged in
339
                                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>";
340
                            <?php }?>
341
                        result += "</td>";    
342
                        result += "</tr>";
343
                    });
344
                    document.getElementById("search-table").innerHTML = result;
345
                }
346

  
347
                function removeSelectedItem(idToDelete){
348
                    const data = new FormData(); //to pass ids, which we want to delete from DB
349
                    data.append("id", ""+idToDelete); //id to delete from table dd_wordform
350

  
351
                    let xhr = new XMLHttpRequest();
352
                    xhr.open("POST", "./controller/RemoveController.php");
353
                    xhr.send(data);
354
                    fetchData(true); //reload data after item delete
355
                }
356
            </script>
357
        </tbody>
358
    </table>
359

  
360
    <h3 id="no-data-label" class="mx-auto text-center font-italic">Žádná data nebyla nalezena</h3>
361

  
362
    <div id="paging-control" class="mx-auto text-center" style="display: none">
363
        <button class="border-0 shadow-none bg-transparent" onclick="moveToFirst()"><b><<</b></button>
364
        <button class="border-0 shadow-none bg-transparent"  onclick="moveToPrevious()"><b><</b></button>
365
        <input class="border-0 shadow-none bg-transparent text-center font-weight-bold"
366
               id="page-label"
367
               onfocus="onManualPageStart(this)"
368
               onblur="onManualPageEnd(this)"
369
        />
370
        <button class="border-0 shadow-none bg-transparent"  onclick="moveToNext()"><b>></b></button>
371
        <button  class="border-0 shadow-none bg-transparent" onclick="moveToLast()"><b>>></b></button>
372
    </div>
373
</div>
application/view/contents/userContent.php
1
<?php
2
if (isset($_SESSION['role']) && $_SESSION['role'] == "admin") {
3
    echo "<script>
4
        //what to do when page renders
5
        window.onload = function() {
6
            fetchUsers();
7
        };
8
    </script>
9

  
10
    <div class=\"search-results my-4\">
11
        <table class=\"table table-striped\">
12
            <thead>
13
            <tr>
14
                <th scope=\"col\">Uživatel</th>
15
                <th scope=\"col\">Práva</th>
16
                <th scope=\"col\"><button class=\"btn ml-1\" title=\"Přidat\"  data-toggle=\"modal\" data-target=\"#edit-modal\"  data-title=\"Nový uživatel\"><i class=\"fa fa-plus\"></i></button></th>
17
            </tr>
18
            </thead>
19
            <tbody id=\"search-table\">
20
                <script>
21
                    let users;
22
                    function fetchUsers () {
23
                        // (A1) GET SEARCH TERM
24
                        const formData = new FormData();
25

  
26
                        // (A2) AJAX - USE HTTP:// NOT FILE:/
27
                        let xhr = new XMLHttpRequest();
28
                        xhr.open(\"POST\", \"./controller/UsersListController.php\");
29
                        xhr.onload = function(){
30
                            let search = this.response;
31
                            let parsedJSON = JSON.parse(search);
32
                            users = parsedJSON;
33
                            renderUsers(parsedJSON);
34
                        };
35
                        xhr.send(formData);
36
                    }
37

  
38

  
39
                    function renderUsers(users) {
40
                        let result = \"\";
41
                        users.forEach((item,id) => {
42
                            result += \"<tr>\";
43
                            result += \"<td>\" + item.username + \"</td>\";
44
                            result += \"<td>\" + item.role + \"</td>\";
45
                            (item.role !== \"admin\") ? (result += \"<td class='action-td'>\" +
46
                                \"<button class='btn ml-1' title='Upravit'  data-toggle='modal' data-target='#edit-modal' data-pseudo-id='\" + id + \"' data-title='Upravit uživatele'><i class='fa fa-pencil'></i></button>\" +
47
                                \"<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>\" +
48
                                \"</td>\") : result += \"<td class='action-td'/>\";
49
                            result += \"</tr>\";
50
                        });
51
                        document.getElementById(\"search-table\").innerHTML = result;
52
                    }
53
                </script>
54
            </tbody>
55
        </table>
56
    </div>";
57
} else {
58
    echo "<h3 class=\"mx-auto text-center\">Pro navštívení stránky nemáte dostatečná oprávnění</h3>";
59
}
60

  
61

  
application/view/indexContent.html
1
<p>
2
    Dvě existující, už vytvořené samostatné databáze slov a jejich tvarů ze všech pramenů Dalimilovy kroniky (tj. staročeské památky z období 14., 15. století).
3
    Kronika vypráví ve staročeštině o dějinách naší země, je to první česky psaná kronika.
4
    Zkoumání jejího jazyka dovoluje popsat hlavní vývojové tendence češtiny v tzv. staročeském období (14., 15. století)
5
    a pochopit stav češtiny i její vývoj v současnosti. Databáze byly vytvořeny jako podpora pro zpracování tiskové podoby indexu
6
    všech slov a tvarů doložených v dochovaných pramenech. Index (celkem 3 díly) vyšel postupně v letech 2012–2020 jako výsledek
7
    řešení tří vědeckých projektů v rámci Fakulty pedagogické.
8
</p>
application/view/js-scripts/convertors.js
1

  
2
const codeToWordclass = {
3
    "N": "substantivum",
4
    "A": "adjektivum",
5
    "P": "pronomen",
6
    "C": "numeralie",
7
    "V": "verbum",
8
    "D": "adverbium",
9
    "R": "prepozice",
10
    "J": "konjunkce",
11
    "I": "interjekce",
12
    "T": "partikule"
13
};
14

  
15
const wordclassToNum = {
16
    "N": 0,
17
    "A": 1,
18
    "P": 2,
19
    "C": 3,
20
    "V": 4,
21
    "D": 5,
22
    "R": 6,
23
    "J": 7,
24
    "I": 8,
25
    "T": 9
26
};
27

  
28
const codeToManuscript = {
29
    "0":  "rukopis Vídeňský",
30
    "1":  "zlomky Hanušovy",
31
    "2":  "zlomky Hradecké",
32
    "3":  "rukopis Cambridžský",
33
    "4":  "rukopis Františkánský",
34
    "5":  "zlomek Olomoucký",
35
    "6":  "fragment Strahovský",
36
    "7":  "zlomky Klementinsko-Křižovnické",
37
    "8":  "zlomky Mnichovské",
38
    "9":  "rukopis Lobkovický",
39
    "10": "rukopis Pelclův",
40
    "11": "rukopis Cerronský",
41
    "12": "rukopis Fürstenberský",
42
    "13": "rukopis Zebererův",
43
    "14": "vydání Pavla Ješína z Bezdězi, Praha 1620",
44
    "15": "básně připsané při Pulkavově kronice v rukopisu Litoměřickém",
45
};
46

  
47
const codeToManuscriptShort = {
48
    "0":  "V",
49
    "1":  "H",
50
    "2":  "Hr",
51
    "3":  "C",
52
    "4":  "F",
53
    "5":  "O",
54
    "6":  "S",
55
    "7":  "K",
56
    "8":  "M",
57
    "9":  "L",
58
    "10": "P",
59
    "11": "Cr",
60
    "12": "Fs",
61
    "13": "Z",
62
    "14": "Js",
63
    "15": "Pl",
64
};
65

  
66
const codeToCase = {
67
    "1": "nominativ",
68
    "2": "genitiv",
69
    "3": "dativ",
70
    "4": "akuzativ",
71
    "5": "vokativ",
72
    "6": "lokál",
73
    "7": "instrumentál"
74
};
75

  
76
const codeToCountability = {
77
    "S": "singulár",
78
    "P": "plurál",
79
    "D": "duál"
80
};
81

  
82
const codeToGender = {
83
    "M": "maskulinum",
84
    "F": "femininum",
85
    "N": "neutrum"
86
};
87

  
88
const codeToGrade = {
89
    "1": "pozitiv",
90
    "2": "komparativ",
91
    "3": "superlativ"
92
};
93

  
94
const codeToKType = {
95
    "V": "větná",
96
    "C": "členská",
97
    "N": "navazovací",
98
    "P": "spojení s přechodníkem"
99
};
100

  
101
const codeToShape = {
102
    "C": "složený",
103
    "N": "jmenný"
104
};
105

  
106
const codeToVid = {
107
    "P": "perfektivum",
108
    "I": "imperfektivum",
109
};
110

  
111
const codeToVType = {
112
    "A": "aktivum",
113
    "P": "pasivum",
114
};
115

  
116
const codeToTime= {
117
    "P": "prézens",
118
    "A": "aorist",
119
    "R": "préteritum",
120
    "I": "imperfektum",
121
    "H": "plusquamperfektum",
122
    "F": "futurum"
123
};
124

  
125
const codeToType = {
126
    "P": "posesivum",
127
    "S": "personale",
128
    "D": "demonstrativum",
129
    "Q": "interogativum",
130
    "J": "relativum",
131
    "Z": "indefinitum",
132
    "L": "limitativum",
133
    "W": "negativum",
134
};
135

  
136
const codeToMood = {
137
    "d": "indikativ",
138
    "i": "imperativ",
139
    "c": "kondicionál"
140
};
141

  
142
const codeToIrregular = {
143
    "f": "infinitiv",
144
    "S": "supinum",
145
    "e": "přech. přítomný",
146
    "m": "přech. minulý",
147
    "A": "part. perf. akt.",
148
    "P": "part. perf. akt."
149
};
150

  
151
function convertDate(date) {
152
    let newDate = "";
153
    date = date.replace(" 00:00:00", "");
154
    let splitDate = date.split("-");
155

  
156
    newDate += splitDate[2] + ". " + splitDate[1] + ". " + splitDate[0];
157
    return newDate;
158
}
159

  
160
function renderManuscript(manuscripts, shorten=true) {
161
    let output = "";
162
    for(let i = 0; i < manuscripts.length; i++){
163
        if(shorten)
164
            output += ("<span title=\""+ codeToManuscript[manuscripts[i]] +"\">" + codeToManuscriptShort[manuscripts[i]] + "</span>");
165
        else
166
            output += codeToManuscript[manuscripts[i]];
167

  
168
        if(i < manuscripts.length - 1){
169
            if(shorten)
170
                output += ", ";
171
            else
172
                output += "; ";
173
        }
174
    }
175
    return output;
176
}
application/view/js-scripts/filterControl.js
1
function moodChange() {
2
    if(document.getElementById("mood").value !== ""){
3
        document.getElementById("irregular").disabled = true;
4
        document.getElementById("irregular").title = "Neurčitý slovesný tvar smí být nastaven pouze není-li nastaven způsob";
5
    } else {
6
        document.getElementById("irregular").disabled = false;
7
        document.getElementById("irregular").title = "";
8
    }
9
}
10

  
11
function irregularChange() {
12
    if(document.getElementById("irregular").value !== ""){
13
        document.getElementById("mood").disabled = true;
14
        document.getElementById("mood").title = "Způsob smí být nastaven pouze není-li nastaven neurčitý slovesný tvar";
15
    } else {
16
        document.getElementById("mood").disabled = false;
17
        document.getElementById("mood").title = "";
18
    }
19
}
20

  
21
function callFilter() {
22
    pageIndex = 0;
23
    fetchData(true)
24
}
25

  
26
function filterData (formData) {
27
    //regular
28
    formData.append("lemma", document.getElementById("lemma").value);
29
    formData.append("word", document.getElementById("wordshape").value);
30
    formData.append("description2", document.getElementById("description2").value);
31

  
32
    //positions
33
    const positionSplit = document.getElementById("location").value.split("/");
34
    formData.append("position1", positionSplit[0] !== undefined ? positionSplit[0] : "");
35
    formData.append("position2", positionSplit[1] !== undefined ? positionSplit[1] : "");
36
    formData.append("positiondetail", positionSplit[2] !== undefined ? positionSplit[2] : "");
37

  
38
    //multiselect
39
    formData.append("manuscript", getValues("source"));
40

  
41
    const pos = document.getElementById("wordclass").value;
42
    formData.append("tag_pos", pos);
43
    //those upcoming are dynamic based on the previous field
44
    formData.append("tag_case", document.getElementById("case").value);
45
    formData.append("tag_number", document.getElementById("countability").value);
46
    formData.append("tag_gender", document.getElementById("gender").value);
47
    formData.append("tag_degree", document.getElementById("grade").value);
48
    formData.append("tag_shape", document.getElementById("shape").value);
49
    formData.append("tag_num", "");//THIS ONE IS WORTHLESS
50

  
51
    if(pos === "P"){
52
        formData.append("tag_sentence", document.getElementById("type").value);
53
    } else if(pos === "V"){
54
        const mood = document.getElementById("mood").value;
55
        if(mood !== ""){
56
            formData.append("tag_sentence", mood);
57
        } else {
58
            formData.append("tag_sentence", document.getElementById("irregular").value);
59
        }
60
    } else if(pos === "J"){
61
        formData.append("tag_sentence", document.getElementById("k-type").value);
62
    }
63

  
64
    formData.append("tag_verb_person", document.getElementById("person").value);
65
    formData.append("tag_verb_time", document.getElementById("time").value);
66
    formData.append("tag_verb_degree", document.getElementById("vid").value);
67
    formData.append("tag_verb_aspect", document.getElementById("v-type").value);
68
}
69

  
70
function filtersChange() {
71
    const value = document.getElementById("wordclass").value;
72
    let movedNode;
73
    let beforeNode;
74
    switch (value) {
75
        case "N":
76
            setFilerVisibility([
77
                true,
78
                true,
79
                true,
80
                false,
81
                false,
82
                false,
83
                false,
84
                false,
85
                false,
86
                false,
87
                false,
88
                false,
89
                false
90
            ]);
91
            movedNode = document.getElementById("filter-case");
92
            beforeNode = document.getElementById("filter-countability");
93
            movedNode.parentNode.insertBefore(movedNode, beforeNode);
94
            break;
95
        case "A":
96
            setFilerVisibility([
97
                true,
98
                true,
99
                true,
100
                true,
101
                true,
102
                false,
103
                false,
104
                false,
105
                false,
106
                false,
107
                false,
108
                false,
109
                false
110
            ]);
111
            movedNode = document.getElementById("filter-case");
112
            beforeNode = document.getElementById("filter-countability");
113
            movedNode.parentNode.insertBefore(movedNode, beforeNode);
114
            break;
115
        case "P":
116
            setFilerVisibility([
117
                true,
118
                true,
119
                true,
120
                false,
121
                false,
122
                true,
123
                false,
124
                false,
125
                false,
126
                false,
127
                false,
128
                false,
129
                false
130
            ]);
131
            movedNode = document.getElementById("filter-case");
132
            beforeNode = document.getElementById("filter-countability");
133
            movedNode.parentNode.insertBefore(movedNode, beforeNode);
134
            break;
135
        case "C":
136
            setFilerVisibility([
137
                true,
138
                true,
139
                true,
140
                false,
141
                false,
142
                false,
143
                false,
144
                false,
145
                false,
146
                false,
147
                false,
148
                false,
149
                false
150
            ]);
151
            movedNode = document.getElementById("filter-case");
152
            beforeNode = document.getElementById("filter-countability");
153
            movedNode.parentNode.insertBefore(movedNode, beforeNode);
154
            break;
155
        case "V":
156
            setFilerVisibility([
157
                true,
158
                true,
159
                true,
160
                false,
161
                false,
162
                false,
163
                true,
164
                true,
165
                true,
166
                true,
167
                true,
168
                true,
169
                false
170
            ]);
171
            movedNode = document.getElementById("filter-case");
172
            beforeNode = document.getElementById("filter-control-div");
173
            movedNode.parentNode.insertBefore(movedNode, beforeNode);
174
            break;
175
        case "D":
176
            setFilerVisibility([
177
                false,
178
                false,
179
                false,
180
                false,
181
                true,
182
                false,
183
                false,
184
                false,
185
                false,
186
                false,
187
                false,
188
                false,
189
                false
190
            ]);
191
            break;
192
        case "R":
193
            setFilerVisibility([
194
                true,
195
                false,
196
                false,
197
                false,
198
                false,
199
                false,
200
                false,
201
                false,
202
                false,
203
                false,
204
                false,
205
                false,
206
                false
207
            ]);
208
            break;
209
        case "J":
210
            setFilerVisibility([
211
                false,
212
                false,
213
                false,
214
                false,
215
                false,
216
                false,
217
                false,
218
                false,
219
                false,
220
                false,
221
                false,
222
                false,
223
                true
224
            ]);
225
            break;
226
        case "I":
227
            setFilerVisibility([
228
                false,
229
                false,
230
                false,
231
                false,
232
                false,
233
                false,
234
                false,
235
                false,
236
                false,
237
                false,
238
                false,
239
                false,
240
                false
241
            ]);
242
            break;
243
        case "T":
244
            setFilerVisibility([
245
                false,
246
                false,
247
                false,
248
                false,
249
                false,
250
                false,
251
                false,
252
                false,
253
                false,
254
                false,
255
                false,
256
                false,
257
                false
258
            ]);
259
            break;
260
        default:
261
            setFilerVisibility([
262
                false,
263
                false,
264
                false,
265
                false,
266
                false,
267
                false,
268
                false,
269
                false,
270
                false,
271
                false,
272
                false,
273
                false,
274
                false
275
            ]);
276
            break;
277
    }
278
}
279

  
280
function setFilerVisibility(visibility) {
281
    const id = [
282
        "filter-case",
283
        "filter-countability",
284
        "filter-gender",
285
        "filter-shape",
286
        "filter-grade",
287
        "filter-type",
288
        "filter-mood",
289
        "filter-irregular",
290
        "filter-person",
291
        "filter-time",
292
        "filter-vid",
293
        "filter-v-type",
294
        "filter-k-type"
295
    ];
296

  
297
    for(let i = 0; i < id.length &&  i < visibility.length; i++){
298
        document.getElementById(id[i]).style.display = visibility[i] === true ? "" : "none";
299
        document.getElementById(id[i].replace("filter-", "")).value = "";
300
    }
301
}
application/view/js-scripts/paging.js
1
function checkValidItemsPerPage(){
2
    var visibleItemCount = document.getElementById("itemsPerPage");
3
    if(!isNaN(visibleItemCount.value) && visibleItemCount.value % 1 === 0 && parseInt(visibleItemCount.value) >= 1 && parseInt(visibleItemCount.value) <= 500){
4
        return true;
5
    }else{
6
        alert("Zadaný počet není validní, zkuste to znovu.\nPlatný rozsah: 1 - 500 položek na stránku.");
7
        visibleItemCount.value = itemPerPage;
... Rozdílový soubor je zkrácen, protože jeho délka přesahuje max. limit.

Také k dispozici: Unified diff