if (!Array.prototype.includes) { Array.prototype.includes = function(searchElement /*, fromIndex*/ ) { 'use strict'; var O = Object(this); var len = parseInt(O.length) || 0; if (len === 0) { return false; } var n = parseInt(arguments[1]) || 0; var k; if (n >= 0) { k = n; } else { k = len + n; if (k < 0) {k = 0;} } var currentElement; while (k < len) { currentElement = O[k]; if (searchElement === currentElement || (searchElement !== searchElement && currentElement !== currentElement)) { // NaN !== NaN return true; } k++; } return false; }; } var cathegories = [ { title: "Nervový systém (CNS, VNS)", subs: [ { title: "Hypnosedativa", no: 1 }, { title: "Antidepresiva + anxiolytika", no: 2 }, { title: "Psychostimulancia", no: 3 }, { title: "Kognitiva", no: 4 }, { title: "Vegetativní nervový systém", no: 5 }, { title: "Rostliny zneužívané pro omamné a psychotropní účinky", no: 49 } ] }, { title: "Bolest", subs: [ { title: "Analgetika", no: 6 }, { title: "Antiflogistika, antiuratika", no: 7 }, { title: "Lokální anestetika", no: 8 } ] }, { title: "Dýchací systém, nachlazení", subs: [ { title: "Antitusika", no: 9 }, { title: "Expektorancia", no: 10 }, { title: "Diaforetika", no: 11 }, { title: "Antiastmatika", no: 44 } ] } , { title: "Srdce a cévy (KVS)", subs: [ { title: "Hemokoagulace", no: 12 }, { title: "Krevní tlak", no: 13 }, { title: "Venotonika", no: 14 }, { title: "Antiarytmika", no: 15 }, { title: "Hypolipidemika", no: 16 } ] } , { title: "Urogenitální systém", subs: [ { title: "Onemocnění prostaty", no: 17 }, { title: "Afrodisiaka", no: 18 }, { title: "Gynekologika", no: 19 }, { title: "Fytoestrogeny", no: 20 }, { title: "Antiseptika močového traktu", no: 48 }, { title: "Diuretika", no: 21 }, ] } , { title: "Trávicí trakt, metabolismus", subs: [ { title: "Antiulceróza, cytoprotektiva", no: 22 }, { title: "Stomachika", no: 24 }, { title: "Karminativa, spasmolytika", no: 25 }, { title: "Laxativa", no: 27 }, { title: "Cholagoga", no: 28 }, { title: "Antiemetika", no: 29 }, { title: "Antidiabetika", no: 30 }, { title: "Anobezika", no: 31 }, { title: "Antidiarhoika", no: 46 }, { title: "Hepatoprotektiva", no: 47 } //{ title: "Digestiva ", no: 23 }, //{ title: "Amara", no: 26 }, ] }, { title: "Kůže a její adnex", subs: [ { title: "Dermatologika, kosmetika", no: 32 } ] }, { title: "Nádorová onemocnění, imunitní systém", subs: [ { title: "Cytostatika", no: 33 }, { title: "Imunomodulancia", no: 34 }, ] }, { title: "Antiinfektiva", subs: [ { title: "Anthelmintika", no: 39 }, { title: "Antivirotika", no: 36 }, { title: "Antiseptika močového traktu", no: 48 }, { title: "Antiseptika", no: 41 } ] }, { title: "Ostatní", subs: [ { title: "Antioxidanty", no: 37 }, { title: "Systémová enzymoterapie", no: 35 }, { title: "Insekticidy", no: 38 }, { title: "Jedovaté rostliny, toxiny", no: 40 }, { title: "Ostatní", no: 42 } ] }, { title: "Stomatologie", no: 50 }, { title: "Oko", no: 51 } ] var authors = [ "doc. PharmDr. Jan Juřica, Ph.D., Farmakologický ústav LF MU", "MUDr. Jana Pistovčáková, Ph.D., Farmakologický ústav LF MU", "PharmDr. Jana Rudá-Kučerová, Ph.D., Farmakologický ústav LF MU", "Mgr. Gabriela Dovrtělová, Farmakologický ústav LF MU", "Mgr. Jana Merhautová, Farmakologický ústav LF MU", "Mgr. Kristýna Nosková, Farmakologický ústav LF MU", "Mgr. Katarína Tabiová, Farmakologický ústav LF MU", "MUDr. Jana Nováková, Ph.D., Farmakologický ústav LF MU", "Mgr. Tibor Štark, Farmakologický ústav LF MU" ] var licences = [ { title: "volné dílo", url: "https://cs.wikipedia.org/wiki/Voln%C3%A9_d%C3%ADlo#Public_domain" }, { title: "CC0 1.0", url: "https://creativecommons.org/publicdomain/zero/1.0/deed.cs" }, { title: "CC BY 2.0", url: "https://creativecommons.org/licenses/by/2.0/deed.cs" }, { title: "CC BY-NC 2.0", url: "https://creativecommons.org/licenses/by-nc/2.0/deed.cs" }, { title: "CC BY-SA 2.0", url: "https://creativecommons.org/licenses/by-sa/2.0/deed.cs" }, { title: "CC BY-NC-SA 2.0", url: "https://creativecommons.org/licenses/by-nc-sa/2.0/deed.cs" }, { title: "CC BY-SA 2.5", url: "https://creativecommons.org/licenses/by-sa/2.5/deed.cs" }, { title: "CC BY 3.0", url: "https://creativecommons.org/licenses/by/3.0/deed.cs" }, { title: "CC BY-SA 3.0", url: "https://creativecommons.org/licenses/by-sa/3.0/deed.cs" }, { title: "CC BY-NC 4.0", url: "https://creativecommons.org/licenses/by-nc/4.0/deed.cs" }, { title: "CC BY-SA 4.0", url: "https://creativecommons.org/licenses/by-sa/4.0/deed.cs" } ] function initAtlas() { createMenu(); hideSection("single"); var search = document.getElementById("search"); search.addEventListener("change", searchPhrase); search.addEventListener("keyup", resolveKeys); createLetters() } function createMenu() { var list = document.querySelector(".mainmatter"); list.innerHTML = ""; for (var i = 0; i < cathegories.length; i++) { var cat = cathegories[i]; var li = list.appendChild(document.createElement("li")); var a = li.appendChild(document.createElement("a")); a.className = "chapter"; a.setAttribute("data-index", "" + i); a.addEventListener("click",selectGroup) var label = a.appendChild(document.createElement("span")); label.innerHTML = "" + (i+1); label.className = "chlabel"; a.appendChild(document.createTextNode(" ")); var title = a.appendChild(document.createElement("span")); title.innerHTML = cat.title; title.className = "chtitle"; if (cat.subs && cat.subs.length > 0) { var list2 = li.appendChild(document.createElement("ul")); list2.className = "noLabel"; for (var j = 0; j < cat.subs.length; j++) { li = list2.appendChild(document.createElement("li")); a = li.appendChild(document.createElement("a")); a.className = "sect1"; a.innerHTML = cat.subs[j].title; a.setAttribute("data-index", "" + i + "." + j); a.addEventListener("click",selectGroup) } } } } function createLetters() { var letters = "a,á|b|c|č|d,ď|e|f|g|h|ch|i|j|k|l|m|n|o,ó|p|q|r|ř|s|š|t,ť|u,ú|v|w|x|y|z|ž".split("|"); var div = document.querySelector(".letters"); var celek = document.createDocumentFragment(); for (var i = 0, len= letters.length; i < len; i++) { var letter = celek.appendChild(document.createElement("span")); letter.className = "letter"; var chars = letters[i].split(","); letter.appendChild(document.createTextNode(chars[0])); letter.setAttribute("data-chars", letters[i]); letter.addEventListener("click", showItemsByStart); } div.appendChild(celek) } function showItemsByStart(evt) { var span = evt.currentTarget; var chars = span.getAttribute("data-chars").split(","); var result = []; for (var i = 0, len = data.length; i < len; i++) { var starts = false; var item = data[i]; var first = item.cs.charAt(0).toLowerCase(); var second = item.cs.charAt(1).toLowerCase(); for (var j = 0; j < chars.length; j++) { var chr = chars[j]; if (first == chr.charAt(0)) { if (first != "c") { starts = true; } if (chr == "ch" && first == "c" && second == "h") { starts = true; } if (chr == "c" && first == "c" && second != "h") { starts = true; } } } if (starts) { item.index = i; result.push(item) } } makeResultList("Rostliny s českým názvem začínajícím na " + chars[0].toUpperCase(), result, "cs"); } var actual = { cat: -1, sub: -1, aCat: null, aSub: null, foundItem: null, lang: "cs" } function selectGroup(evt) { var a = evt.currentTarget; var indices = a.getAttribute("data-index").split("."); var as = document.querySelectorAll(".mainmatter > li > a"); if (indices.length == 1) { if (indices[0] == actual.cat) {return;} if(actual.cat > -1) as[actual.cat].classList.remove("actual"); if(actual.sub > -1) { var as2 = as[actual.cat].nextSibling.querySelectorAll("a"); for (var j = 0; j < as2.length; j++) { as2[j].classList.remove("actual"); } } as[indices[0]].classList.add("actual"); actual.cat = indices[0]; actual.sub = -1; actual.aCat = as[indices[0]]; actual.aSub = null; var cat = cathegories[actual.cat]; if (!cat.subs || cat.subs.length == 0) { showActualGroup(); } } if (indices.length == 2) { if (indices[1] == actual.sub) { return; } var as2 = a.parentNode.parentNode.querySelectorAll("a"); if (actual.sub > -1) as2[actual.sub].classList.remove("actual"); actual.sub = indices[1]; as2[actual.sub].classList.add("actual"); actual.aSub = as2[actual.sub]; showActualGroup(); } } function showActualGroup() { actual.foundItem = null; var text = "Kategorie: " + cathegories[actual.cat].title; var actNo = cathegories[actual.cat].no; if (actual.sub > -1) { text += " – " + cathegories[actual.cat].subs[actual.sub].title; actNo = cathegories[actual.cat].subs[actual.sub].no; } var found = [] for (var i = 0; i < data.length; i++) { var item = data[i]; item.index = i; if (item.cath.includes(actNo)) { found.push(item); } } makeResultList(text, found, "cs"); } function clearCats() { if (actual.aCat) { actual.aCat.classList.remove("actual"); } if (actual.aSub) { actual.aSub.classList.remove("actual"); } actual.cat = -1; actual.sub = -1; actual.aCat = null; actual.aSub = null; } function searchPhrase() { var fraze = document.getElementById("search").value.trim(); if (fraze.length < 2) return; clearCats(); var lang = document.getElementById("search-language").value; var result = []; for (var i = 0, len = data.length; i < len; i++) { var item = data[i]; if (item[lang] && item[lang].search(new RegExp(fraze, "i")) > -1) { item.index = i; result.push(item); } } makeResultList("Výsledky hledání v názvu: " + fraze + " (" + document.getElementById("search-language").value + ")", result, lang); } function searchSubstance(sub) { clearCats(); var root = ""; var ending = ""; var nom = "" if (sub.charAt(0) == "(") { sub = sub.substring(1); } var end = sub.charAt(sub.length-1); var end2 = sub.charAt(sub.length-2); if (end == "l" || end == "d" || end == "n"|| end == "k") { root = sub; ending = "(ů|u|y)*"; nom = root; } if (end == "u" && end2 == "s") { root = sub.substring(0, sub.length-1); ending = "(a|u|y)"; nom = root + "a"; } if ((end == "y" || end == "u" || end == "ů") && (end2 == "d" || end2 == "l" || end2 == "n" || end2 == "t" || end2 == "k")) { root = sub.substring(0, sub.length-1); ending = "(u|y)*"; nom = root; } if ((end == "y" || end == "u" || end == "ů") && end2 == "n") { root = sub.substring(0, sub.length-1); ending = "(u|y)*"; nom = root; } if ((end == "á" || end == "é") && (end2 == "n" || end2 == "v")) { root = sub.substring(0, sub.length-1); ending = "(á|é|ou)"; nom = "kyselina " + root + "á"; } if (end == "u" && end2 == "o") { root = sub.substring(0, sub.length-2); ending = "(á|é|ou)"; nom = "kyselina " + root + "á"; } if (sub.indexOf("silic") == 0) { root = "silic"; ending = "(e|í)*"; nom = "silice"; } if (nom == "") { console.log("Látka nezpracovana: " + root + "-" + ending); return; } var exceptions = [ ["hořčin", "hořčiny"], ["flavonoid", "flavonoidy"], ["polysacharid", "polysacharidy"], ["saponin", "saponiny"], ["tříslovin", "třísloviny"], ] for (var i = 0; i < exceptions.length; i++) { var exc = exceptions[i] if (nom == exc[0]) { nom = exc[1]; } } var result = []; for (var i = 0, len = data.length; i < len; i++) { var item = data[i]; if (item["as"].search(new RegExp(root + ending, "i")) > -1) { item.index = i; result.push(item); } } makeResultList("Rostliny obsahující látku: „" + nom + "“", result, "cs"); } function makeResultList(title, list, lang) { hideSection("single"); if (lang == undefined) { lang = "cs"; } var section = document.querySelector(".foundlist"); section.innerHTML = ""; var h2 = section.appendChild(document.createElement("h2")); h2.innerHTML = title; list.sort(titleSorter(lang)); var results = section.appendChild(document.createElement("ol")); for (var i = 0; i < list.length; i++) { var item = list[i]; var li = results.appendChild(document.createElement("li")); li.innerHTML = item[lang]; li.setAttribute("data-index", item.index); li.addEventListener("click", showActualItem); li.classList.add("item" + (i%3)); } } function titleSorter(lang) { return function(i1, i2) { return i1[lang].trim().localeCompare(i2[lang].trim(), lang); } } function showActualItem(evt) { showSection("single"); var li = evt.currentTarget; if (actual.foundItem) { actual.foundItem.classList.remove("active"); } actual.foundItem = li; li.classList.add("active"); var index = parseInt(li.getAttribute("data-index")); var item = data[index]; actual.item = item; item.pics = item.pics || []; var sect = document.querySelector(".single"); sect.innerHTML = ""; var info = sect.appendChild(document.createElement("section")); info.className = "info" var bigone = info.appendChild(document.createElement("figure")); bigone.className = "big_one"; var caption = bigone.appendChild(document.createElement("figcaption")); var name_cs = caption.appendChild(document.createElement("span")); name_cs.className = "name_cs"; name_cs.innerHTML = item.cs; var name_la = caption.appendChild(document.createElement("span")); name_la.className = "name_la"; name_la.innerHTML = item.la; var bigPic = bigone.appendChild(document.createElement("img")); bigPic.id = "bigPic"; var lic = bigone.appendChild(document.createElement("div")); lic.className = "citation"; var pic_src = "flower-blank.png"; var pic_lic = ""; if (item.pics && item.pics.length > 0) { var pic = null; if (item.card > -1) { pic = item.pics[item.card]; var chunks = item.la.split(/\s+?/g); if (chunks.length > 1 && chunks[1].indexOf(",") > -1) { chunks[1] = chunks[1].substring(0,chunks[1].indexOf(",")); } pic_src = chunks[0].toLowerCase() + "_" + chunks[1].toLowerCase() + ".jpg"; pic_lic = pic.author + ", " + licences[pic.lic].title + ", zdroj" } } bigPic.src = "images/cards/" + pic_src; lic.innerHTML = pic_lic; var langs = info.appendChild(document.createElement("ul")); langs.className = "names"; var li = langs.appendChild(document.createElement("li")); li.className = "sk"; li.innerHTML = item.sk; li = langs.appendChild(document.createElement("li")); li.className = "la"; li.innerHTML = item.la; if (item.en && item.en != "") { li = langs.appendChild(document.createElement("li")); li.className = "en"; li.innerHTML = item.en; } if (item.de && item.de != "") { li = langs.appendChild(document.createElement("li")); li.className = "de"; li.innerHTML = item.de; } var imgs = info.appendChild(document.createElement("div")); imgs.className = "images"; for (var i = 0; i < item.pics.length; i++) { var pic = item.pics[i]; var link = imgs.appendChild(document.createElement("a")); link.setAttribute("rel", "prettyPhoto[gallery_plant]"); link.setAttribute("href", "images/plants/" + pic.file); link.title = "Autor: " + pic.author + ", licence: " + licences[pic.lic].title + ", zdroj" var img = link.appendChild(document.createElement("img")); img.src = "images/plants/" + pic.file + "?nahled=1"; img.className = "thumb"; } createSection(sect, "sber", "Sběr", item.col); createSection(sect, "latky", "Účinné látky", markSubstances(item.as)); createSection(sect, "efekt", "Působení", item.effect); createSection(sect, "uziti", "Užití", item.usage); createSection(sect, "kontra", "Kontraindikace", item.ko); if (typeof item.ref == "string") { // var refs = item.ref.split(/\s*\|\s*/) item.ref= item.ref.replace(/\"/g, "").split(/\s*\|\s*|xxx/); } if (item.ref && item.ref.length > 0) { var refs = createTitledSection(sect, "reference", "Reference"); var ul = refs.appendChild(document.createElement("ul")); var arts = item.ref //.split(/\|/g); for (var i = 0; i < arts.length; i++) { var li = ul.appendChild(document.createElement("li")); li.innerHTML = arts[i].trim(); } } var author = sect.appendChild(document.createElement("p")); //author.className = "author"; author.innerHTML = "Autor: " +authors[item.author]; //$(sect).ready(function(){ pprefresh(); }); pprefresh(); } function showPic(index) { document.getElementById("bigPic").src = "images/plants2/" + actual.item.pics[index].file; } function markSubstances(text) { var replacement = "$1$2$4" var out = text.replace(/([\s\(^])(\S+in(y|u)*)([\s\.\),$])/gi, replacement); out = out.replace(/([\s\(^])(\S+on(y|u)*)([\s\.\),$])/gi, replacement); out = out.replace(/([\s\(^])(\S+an(y|u)*)([\s\.\),$])/gi, replacement); out = out.replace(/([\s\(^])(\S+en(y|u)*)([\s\.\),$])/gi, replacement); out = out.replace(/([\s\(^])(\S+id(y|u)*)([\s\.\),$])/gi, replacement); out = out.replace(/([\s\(^])(\S+yd(y|u)*)([\s\.\),$])/gi, replacement); out = out.replace(/([\s\(^])(\S+ík(u)*)([\s\.\),$])/gi, replacement); out = out.replace(/([\s\(^])(\S+ol(y|u)*)([\s\.\),$])/gi, replacement); out = out.replace(/([\s\(^])(\S+al(y|u)*)([\s\.\),$])/gi, replacement); out = out.replace(/([\s\(^])(\S+át(ů|u|y)*)([\s\.\),$])/gi, replacement); out = out.replace(/([\s\(^])(\S+ov(á|ou|é))([\s\.\),$])/gi, replacement); out = out.replace(/([\s\(^])(\S+n(á|ou|é))([\s\.\),$])/gi, replacement); out = out.replace(/([\s\(^])(\S+it(á|ou|é))([\s\.\),$])/gi, replacement); out = out.replace(/([\s\(^])(\S+os(a|y|u))([\s\.\),$])/gi, replacement); out = out.replace(/([\s\(^])(silic(e|í|i)*)([\s\.\),$])/gi, replacement); return out; } function createSection(parent, cname, title, content) { var section = parent.appendChild(document.createElement("section")); section.className = cname; var h3 = section.appendChild(document.createElement("h3")) h3.innerHTML = title; var p = section.appendChild(document.createElement("p")) p.innerHTML = content.trim().replace(/([\s\(])([ksvziouKSVZIOU])\s/g, "$1$2 "); return section; } function createTitledSection(parent, cname, title) { var section = parent.appendChild(document.createElement("section")); section.className = cname; var h3 = section.appendChild(document.createElement("h3")) h3.innerHTML = title; return section; } function showSection(sid) { var sect = document.querySelector("#" + sid + ", ." + sid); if (sect) sect.style.display = "block"; } function hideSection(sid) { var sect = document.querySelector("#" + sid + ", ." + sid); if (sect) sect.style.display = "none"; } function resolveKeys(evt) { var input = evt.currentTarget; searchPhrase(); // if (evt.keyCode == 13) { // searchPhrase(); // } } window.addEventListener("load", initAtlas);