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:
parent
1d4caa5f2b
commit
4d56328ceb
4
main.css
4
main.css
@ -67,6 +67,10 @@ a:hover {
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
.clickable {
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
.heonian {
|
||||
font-family: "heonian";
|
||||
}
|
||||
|
55
main.js
55
main.js
@ -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++) {
|
||||
ruby += `<ruby>${letters[i]}<rt>${heonianToRoman(letters[i])}</rt></ruby>`;
|
||||
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), {})
|
Loading…
Reference in New Issue
Block a user