From e1823c9aeca12eb4ca87368b45b997908208023f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Wiesner=20Andr=C3=A1s?= Date: Wed, 1 Jun 2022 16:50:43 +0200 Subject: [PATCH] =?UTF-8?q?F=C3=A1jlbet=C3=B6lt=C3=A9s=20k=C3=A9sz,=20st?= =?UTF-8?q?=C3=ADluslap=20elkezve?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- index.php | 24 ++++++++++++ interface.php | 92 +++++++++++++++++++++++++++++++++++++++++++++ js/mkkkvv.js | 63 +++++++++++++++++++++++++++++++ js/req.js | 31 +++++++++++++++ mkkkv_interface.php | 6 --- mkkkvv.css | 54 ++++++++++++++++++++++++++ 6 files changed, 264 insertions(+), 6 deletions(-) create mode 100644 index.php create mode 100644 interface.php create mode 100644 js/mkkkvv.js create mode 100644 js/req.js delete mode 100644 mkkkv_interface.php create mode 100644 mkkkvv.css diff --git a/index.php b/index.php new file mode 100644 index 0000000..c5ef5a2 --- /dev/null +++ b/index.php @@ -0,0 +1,24 @@ + + + + + + + MKK Közivezető-választás + + + + + +
+ +
+
+ +
+
+
+ + diff --git a/interface.php b/interface.php new file mode 100644 index 0000000..74cc353 --- /dev/null +++ b/interface.php @@ -0,0 +1,92 @@ + $name, "group" => $group]; + if (DUPLICATE_NAME_IN_SAME_GROUP || !in_array($new_rec, $ep)) { + $ep[] = $new_rec; + } + } + } + + + return $ep; +} + +define("MINIMUM_NEEDLE_LENGTH", 3); + +// keresés a nevek között +function search_in_names(array $records, string $needle): array +{ + $needle = trim($needle); + + if (strlen($needle) < MINIMUM_NEEDLE_LENGTH) { + return []; + } + + $hitpos_array = []; + + $filter = function(array $var) use (&$hitpos_array, $needle) : bool { + $hitpos = stripos($var["name"], $needle); + + if ($hitpos != false) { + $hitpos_array[] = $hitpos; + } + + return $hitpos !== false; + }; + + $filter_res = array_values(array_filter($records, $filter)); + + if (count($filter_res) > 0) { + for ($i = 0; $i < count($filter_res); $i++) { + $filter_res[$i]["hitpos"] = $hitpos_array[$i]; + } + } + + return $filter_res; +} + +// -------------------------------- + +define("ELECTABLE_PEOPLE_DATABASE", "data/electable_people_test.md"); + +$action = json_decode($_POST["action"]) ?? "none"; + +$res = ""; + +switch ($action) { + case "search": + { + $needle = json_decode($_POST["needle"]); + $p = read_electable_people(ELECTABLE_PEOPLE_DATABASE); + $hits = search_in_names($p, $needle); + $res = $hits; + } + break; + case "none": + break; +} + +echo json_encode($res); + +//$p = read_electable_people("data/electable_people_test.md"); + +return; \ No newline at end of file diff --git a/js/mkkkvv.js b/js/mkkkvv.js new file mode 100644 index 0000000..ccb1a98 --- /dev/null +++ b/js/mkkkvv.js @@ -0,0 +1,63 @@ +const MINIMUM_NEEDLE_LENGTH = 3; +const CANVAS = document.create + + +// keresés indítása a nevek között +function search_in_names(needle) { + let hintbox = document.getElementById("hintbox"); + + if (needle.length < 3) { + hintbox.innerHTML = ""; + } + + if (needle.trim().length < MINIMUM_NEEDLE_LENGTH) { + return; + } + + request({ + action: "search", + needle: needle + }).then(resp => { + hintbox.innerHTML = ""; + let hits = JSON.parse(resp); + console.log(hits); + hits.forEach((key, val) => { + if (needle.length < 3) { + return; + } + + let hit = document.createElement("span"); + hit.classList.add("hit"); + + let name_node = document.createElement("span"); + name_node.classList.add("name"); + + let hp = key["hitpos"]; + let name = key["name"]; + + if (hp > 0) { + let name_begin = name.slice(0, hp); + name_node.appendChild(document.createTextNode(name_begin)); + } + + let hl = document.createElement("span"); + hl.classList.add("highlight"); + hl.innerText = name.slice(hp, hp + needle.length); + name_node.appendChild(hl); + + if (hp + needle.length < name.length) { + let name_end = name.slice(hp + needle.length, name.length); + name_node.appendChild(document.createTextNode(name_end)); + } + + hit.appendChild(name_node); + + let group = document.createElement("span"); + group.innerText = `(${key["group"]})`; + group.classList.add("group"); + hit.appendChild(group); + + hintbox.appendChild(hit); + }); + }); +} \ No newline at end of file diff --git a/js/req.js b/js/req.js new file mode 100644 index 0000000..ded81d8 --- /dev/null +++ b/js/req.js @@ -0,0 +1,31 @@ +// kérés indítása a szerver felé (eredeti: KL.) +function request(data, url = "interface.php", method = "POST") { + return new Promise((resolve, reject) => { + var fd; + + // ha van adat megadva... + if (data != null) { + fd = new FormData(); + + // mezők hozzáfűzése a kéréshez + for (let prop in data) { + if (Object.prototype.hasOwnProperty.call(data, prop)) { + fd.append(prop, JSON.stringify(data[prop])); + } + } + + } + + // kérés feladása + fetch(url, { + method: method, + body: fd, + }) + .then(response => response.text()) + .then(data => resolve(data)) + .catch((error) => { + console.error('Error: ', error); + reject(error); + }); + }); +} diff --git a/mkkkv_interface.php b/mkkkv_interface.php deleted file mode 100644 index 90409b2..0000000 --- a/mkkkv_interface.php +++ /dev/null @@ -1,6 +0,0 @@ -