work on #2, #7. need to make it so it acutally opens in new tab (*or atleast, like, you can cmd-click to do that. that might be preferable, actually...)

This commit is contained in:
remi 2022-06-11 02:28:35 +02:00
parent 1d4caa5f2b
commit 4d56328ceb
2 changed files with 52 additions and 7 deletions

View File

@ -67,6 +67,10 @@ a:hover {
cursor: pointer;
}
.clickable {
cursor: pointer;
}
.heonian {
font-family: "heonian";
}

53
main.js
View File

@ -162,12 +162,45 @@ function processVerb(word) {
//but ... not yet uwu
}
function generateRuby(word) {
function isHeonian(word) {
letters = word.split("");
ruby = "";
for (let i = 0; i < letters.length; i++) {
if (letters[i].codePointAt(0) < 57344 || letters[i].codePointAt(0) > 57606) {
return false;
}
}
return true;
}
function generateRuby(word, addLinks = false) {
ruby = "";
if (addLinks == true) {
//split by space
let split = word.split(" ");
for (let i = 0; i < split.length; i++) {
letters = word.split("");
for (let i = 0; i < letters.length; i++) {
if (letters[i] == " ") {
ruby += " ";
} else if (json[letters[i]] != undefined) {
ruby += `<ruby class="clickable" onclick='clickSearch(\"${letters[i]}\")'>${letters[i]}<rt>${heonianToRoman(letters[i])}</rt></ruby>`;
} else {
ruby += `<ruby>${letters[i]}<rt>${heonianToRoman(letters[i])}</rt></ruby>`;
}
}
}
//somehow figure out how to get links in
} else {
letters = word.split("");
for (let i = 0; i < letters.length; i++) {
if (letters[i] == " ") {
ruby += " ";
} else {
ruby += `<ruby>${letters[i]}<rt>${heonianToRoman(letters[i])}</rt></ruby>`;
}
}
}
return ruby;
}
@ -260,6 +293,14 @@ function search(word) {
return result;
}
function clickSearch(word) {
header.querySelector("input").value = word;
doSearch();
//TODO: scroll to top of page or w/e.
//maybe dosearch should do that instead
//minds too hazy for this rn though...
}
function doSearch(state = true, all = false) {
if (all == true) {
header.querySelector("input").value = "show:all";
@ -326,7 +367,7 @@ function doSearch(state = true, all = false) {
let temp = ""
temp += "<details><summary>Examples</summary><p>";
for (let e in json[results[i]][o]["examples"]) {
temp += "<span class='heonian'>"+generateRuby(e)+"</span> - "+json[results[i]][o]["examples"][e]+"<br>";
temp += "<span class='heonian'>"+generateRuby(e, true)+"</span> - "+json[results[i]][o]["examples"][e]+"<br>";
}
temp += "</p></details>";
meaning.innerHTML += temp;
@ -337,7 +378,7 @@ function doSearch(state = true, all = false) {
temp += "<details class='result-nyms'><summary>Antonyms</summary><p>";
for (let e in json[results[i]][o]["antonyms"]) {
let r = json[results[i]][o]["antonyms"][e];
temp += "<span class='heonian'>"+generateRuby(r);
temp += "<span class='heonian'>"+generateRuby(r, true);
if (json[r] != undefined) {
temp += " - ";
for (let i in json[r]) {
@ -355,7 +396,7 @@ function doSearch(state = true, all = false) {
temp += "<details class='result-nyms'><summary>Synonyms</summary><p>";
for (let e in json[results[i]][o]["synonyms"]) {
let r = json[results[i]][o]["synonyms"][e];
temp += "<span class='heonian'>"+generateRuby(r);
temp += "<span class='heonian'>"+generateRuby(r, true);
if (json[r] != undefined) {
temp += " - ";
for (let i in json[r]) {
@ -433,8 +474,8 @@ window.onload = () => {
header.querySelector("input").value = e.state;
doSearch(false);
}
console.log("location: " + document.location + ", state: " + JSON.stringify(e.state));
});
//also check if ?s is there . for hecks sake (todo)
}
const sortObject = obj => Object.keys(obj).sort().reduce((res, key) => (res[key] = obj[key], res), {})