plugin-backend #1

Merged
ada merged 34 commits from plugin-backend into main 2024-05-01 00:21:12 -05:00
98 changed files with 68 additions and 348 deletions
Showing only changes of commit df8555d4aa - Show all commits

3
.gitignore vendored
View File

@ -6,4 +6,5 @@ settings.json
**/db.sqlite3 **/db.sqlite3
**/node_modules/** **/node_modules/**
**/dist/** **/dist/**
spoiler.json spoiler.json
**/dotnet-tools.json

View File

@ -1,4 +1,5 @@
asgiref==3.7.2 asgiref==3.7.2
autopep8==2.0.4
certifi==2024.2.2 certifi==2024.2.2
charset-normalizer==3.3.2 charset-normalizer==3.3.2
click==8.1.7 click==8.1.7
@ -6,6 +7,9 @@ colorama==0.4.6
cssbeautifier==1.15.1 cssbeautifier==1.15.1
Django==5.0.3 Django==5.0.3
django-browser-reload==1.12.1 django-browser-reload==1.12.1
django-tailwind==3.8.0
djangorestframework==3.15.1
djlint==1.34.1
EditorConfig==0.12.4 EditorConfig==0.12.4
gunicorn==21.2.0 gunicorn==21.2.0
html-tag-names==0.1.2 html-tag-names==0.1.2
@ -16,7 +20,10 @@ json5==0.9.22
numpy==1.26.4 numpy==1.26.4
packaging==23.2 packaging==23.2
pathspec==0.12.1 pathspec==0.12.1
pillow==10.3.0
pyarrow==15.0.1
pycodestyle==2.11.1 pycodestyle==2.11.1
pylance==0.10.2
PyYAML==6.0.1 PyYAML==6.0.1
regex==2023.12.25 regex==2023.12.25
requests==2.31.0 requests==2.31.0

View File

@ -1,31 +0,0 @@
asgiref==3.7.2
autopep8==2.0.4
certifi==2024.2.2
charset-normalizer==3.3.2
click==8.1.7
colorama==0.4.6
cssbeautifier==1.15.1
Django==5.0.3
django-browser-reload==1.12.1
django-tailwind==3.8.0
djlint==1.34.1
EditorConfig==0.12.4
gunicorn==21.2.0
html-tag-names==0.1.2
html-void-elements==0.1.0
idna==3.6
jsbeautifier==1.15.1
json5==0.9.22
numpy==1.26.4
packaging==23.2
pathspec==0.12.1
pyarrow==15.0.1
pycodestyle==2.11.1
pylance==0.10.2
PyYAML==6.0.1
regex==2023.12.25
requests==2.31.0
six==1.16.0
sqlparse==0.4.4
tqdm==4.66.2
urllib3==2.2.1

View File

@ -18,12 +18,10 @@ var cross_codes = {};
var total_checks = 0; var total_checks = 0;
var total_entrances = 0; var total_entrances = 0;
var all_scenes = []; var all_scenes = [];
var image_translations = {};
window.onload = async () => { window.onload = async () => {
await get_updated_server_address(); await get_updated_server_address();
await parse_cross_codes(); await parse_cross_codes();
await parse_image_translations();
await initialize_elements(); await initialize_elements();
await refresh_elements(); await refresh_elements();
}; };
@ -41,19 +39,6 @@ async function parse_cross_codes() {
); );
} }
async function parse_image_translations() {
fetch(`${document.URL}static/tracker/data/image_translations.json`)
.then((response) => response.json())
.then(
(data) => {
image_translations = JSON.parse(JSON.stringify(data));
},
(error) => {
console.error(error);
}
);
}
async function get_updated_server_address() { async function get_updated_server_address() {
fetch(`${document.URL}get/address`) fetch(`${document.URL}get/address`)
.then( .then(
@ -762,7 +747,7 @@ async function update_summary(scene, checks, entrances) {
async function update_summary_list(data, changed) { async function update_summary_list(data, changed) {
// Check whether entrances or checks changed // Check whether entrances or checks changed
if (changed.checks) { if (changed.checks && current_checks > 0) {
Object.keys(data.scenes).forEach((scene) => Object.keys(data.scenes).forEach((scene) =>
update_summary(scene, data.scenes[scene], { update_summary(scene, data.scenes[scene], {
found: document.querySelector( found: document.querySelector(
@ -776,7 +761,7 @@ async function update_summary_list(data, changed) {
).dataset.entrancesTotal, ).dataset.entrancesTotal,
}) })
); );
} else if (changed.entrances) { } else if (changed.entrances && current_entrances > 0) {
Object.keys(data.scenes).forEach((scene) => Object.keys(data.scenes).forEach((scene) =>
update_summary( update_summary(
scene, scene,
@ -909,57 +894,11 @@ async function update_hints(hints) {
hints_list.innerHTML = ""; hints_list.innerHTML = "";
hints_list.appendChild(hints_list_item.cloneNode(true)); hints_list.appendChild(hints_list_item.cloneNode(true));
hints_list_item.classList.remove("hidden"); hints_list_item.classList.remove("hidden");
// Object.keys(hints).forEach((hint_index) => {
for (const hint_index of Object.keys(hints)) { for (const hint_index of Object.keys(hints)) {
// let hint = hints[hint_index].split( hints[hint_index] = await translate.parse_hints(hints[hint_index]);
// /(\[[\w\s]+?\]|\"[\w \d\>\<#.\-\']+\"|\<[\w\d#]+\>)/gm
// );
// hint = await Promise.all(
// hint.map(async (segment) => {
// segment = segment.trim();
// if (segment) {
// // if (
// // !(
// // segment.startsWith("[") ||
// // segment.startsWith("<") ||
// // segment.startsWith('"')
// // )
// // ) {
// // segment = translate(segment.trim());
// // } else if (segment.startsWith("[")) {
// // segment = segment.trim();
// // let translated_image_name = image_translations[segment];
// // segment = `<img class="flex object-contain w-8 h-8 my-auto align-middle" src="${translated_image_name}.png"></img>`;
// // } else {
// // segment = ` ${segment.trim()} `;
// // }
// // console.log(segment)
// // return segment;
// return await translate.test_parse_hints(segment, image_translations);
// }
// })
// );
hints[hint_index] = await translate.test_parse_hints(
hints[hint_index],
image_translations
);
}
Object.keys(hints).forEach((hint_index) => {
// let hint = hints[hint_index];
// let matches = Array.from(
// hint.matchAll(/\<([\w\d#]+)\>(.*)(\<[\w\d#]+\>)/gm)
// );
// if (matches.length >= 1) {
// hint = hint.replace(
// /(\<[\w\d#]+\>.*\<[\w\d#]+\>)/gm,
// `<span style="color: ${matches[0][1]};">${matches[0][2]}</span>`
// );
// }
// hint = hint.replace(/ "|" /gm, " ");
hints_list_item.firstElementChild.innerHTML = hints[hint_index]; hints_list_item.firstElementChild.innerHTML = hints[hint_index];
hints_list.appendChild(hints_list_item.cloneNode(true)); hints_list.appendChild(hints_list_item.cloneNode(true));
}); }
document.getElementById("hints-list").innerHTML = "";
document.getElementById("hints-list").replaceWith(hints_list); document.getElementById("hints-list").replaceWith(hints_list);
} }

View File

@ -46,14 +46,18 @@ const skip = [" ", ",", "."];
const re = const re =
/(\\"[\w\s\.\-']*\\")|\<(#[a-fA-F0-9]*)\>(.*)\<#[a-fA-F0-9]*\>|(\[[\w]*\])/gm; /(\\"[\w\s\.\-']*\\")|\<(#[a-fA-F0-9]*)\>(.*)\<#[a-fA-F0-9]*\>|(\[[\w]*\])/gm;
async function test_parse_hints(hint, translations) { async function parse_hints(hint) {
let new_hint = hint; let new_hint = hint;
const color_tags = [ const color_tags = [
...hint.matchAll(/\<[^\>]+\>(.*)\<[^\>]+\>/gm), ...hint.matchAll(/\<[^\>]+\>(.*)\<[^\>]+\>/gm),
...hint.matchAll(/\<([^\>]+)\>/gm), ...hint.matchAll(/\<([^\>]+)\>/gm),
]; ];
let color_tag_value = "";
if (color_tags) { if (color_tags) {
if (color_tags[1]) { if (color_tags[1]) {
if (color_tag_value == "") {
color_tag_value = color_tags[1][1];
}
const color_tags_text = `<span style="color: ${color_tags[1][1]}">${color_tags[0][1]}</span>`; const color_tags_text = `<span style="color: ${color_tags[1][1]}">${color_tags[0][1]}</span>`;
new_hint = new_hint.replace( new_hint = new_hint.replace(
/\<[^\>]+\>[^\<]+\<[^\>]+\>/gm, /\<[^\>]+\>[^\<]+\<[^\>]+\>/gm,
@ -64,48 +68,66 @@ async function test_parse_hints(hint, translations) {
const image_text = [...new_hint.matchAll(/\[[^\]]+\]/gm)]; const image_text = [...new_hint.matchAll(/\[[^\]]+\]/gm)];
if (image_text && image_text[0]) { if (image_text && image_text[0]) {
console.log(image_text[0][0]); let translated_image = image_text[0][0].replace(/\[|\]/g, "");
const translated_image = translations[image_text[0][0]]; if (translated_image == "hexagram") {
console.log(translated_image); translated_image = `${color_tag_value
.substring(1)
.toUpperCase()}_${translated_image}`;
}
new_hint = new_hint.replace( new_hint = new_hint.replace(
/\[[^\]]+\]/gm, /\[[^\]]+\]/gm,
`<img class="inline-block object-contain w-8 h-8 my-auto align-middle" src="/static/tracker/images/sprites/${translated_image}.png">` `<img class="inline-block w-8 h-8 my-auto align-middle drop-shadow-[2px_2px_0px_rgba(36,36,36,0.8)]" src="/static/tracker/images/sprites/${translated_image}.png">`
); );
} }
const trunic_hint = new_hint let trunic_hint = new_hint;
.split(/\<[^\>]+\>/gm) const tag_matches = [...new_hint.matchAll(/\<[^\>]*\>/gm)].map((x) => x[0]);
.join(' "" ') for (const matched in tag_matches) {
.split(/\"[^\"]*\"/gm); trunic_hint = trunic_hint.replace(
tag_matches[matched],
for (const trunic in trunic_hint) { "*".repeat(tag_matches[matched].length)
new_hint = new_hint.replace(
trunic_hint[trunic].trim(),
translate(trunic_hint[trunic].trim())
); );
} }
return new_hint; const quote_matches = [...trunic_hint.matchAll(/\"[^\"]*\"/gm)].map(
} (x) => x[0]
async function test_fetch() {
const response = await fetch(`http://localhost:51111/hints`);
const data = await response.json();
return data;
}
async function translation_fetch() {
const response = await fetch(
`http://localhost:8080/static/tracker/data/image_translations.json`
); );
const data = await response.json(); for (const matched in quote_matches) {
return data; trunic_hint = trunic_hint.replace(
quote_matches[matched],
"*".repeat(quote_matches[matched].length)
);
}
let current_index = 0;
new_hint = [...trunic_hint.matchAll(/\*+/gm)]
.map((x, index) => {
let points = [];
if (index != 0) {
points = [current_index, x.index];
} else {
points = [0, x.index];
}
current_index = x.index + x[0].length;
const to_translate = trunic_hint.substring(points[0], points[1]).trim();
if (to_translate.length > 0) {
return (
translate(to_translate) +
"&nbsp;" +
new_hint.substring(x.index, current_index).trim()
);
} else {
return new_hint.substring(x.index, current_index).trim();
}
})
.join(" ");
return new_hint;
} }
const translate = (input) => { const translate = (input) => {
let payload = ""; let payload = "";
let inQuote = false; let inQuote = false;
let cursor = 0; let cursor = 0;
// // remove [text in square brackets] // // remove [text in square brackets]
// // remove extra whitespace (eg., "I saw A [hourglass] "HOURGLASS"" becomes "I saw A "HOURGLASS"") // // remove extra whitespace (eg., "I saw A [hourglass] "HOURGLASS"" becomes "I saw A "HOURGLASS"")
// input = input.replace(/\s+\[.+?\]\s+/gm, " "); // input = input.replace(/\s+\[.+?\]\s+/gm, " ");
@ -150,7 +172,7 @@ const translate = (input) => {
cursor++; cursor++;
} }
return `<span class="inline-block pt-0.5 font-trunic text-md sm:text-xl h-full align-bottom">${payload}&nbsp;</span>`; return `<span class="inline-block pt-0.5 font-trunic text-md sm:text-xl h-full align-bottom">${payload}</span>`;
}; };
export default { test_parse_hints, translation_fetch }; export default { parse_hints };

View File

@ -1,86 +0,0 @@
{
"[stick]": "",
"[realsword]": "ThirdSword",
"[librariansword]": "SecondSword",
"[heirsword]": "ThirdSword",
"[wand]": "",
"[dagger]": "",
"[orb]": "",
"[shield]": "",
"[gun]": "",
"[hourglass]": "",
"[lantern]": "",
"[laurels]": "",
"[coin]": "",
"[trinket]": "",
"[square]": "",
"[fairy]": "",
"[mayor]": "SecretMayor",
"[book]": "",
"[att]": "",
"[def]": "",
"[potion]": "",
"[hp]": "",
"[sp]": "",
"[mp]": "",
"[attrelic]": "HeroRelicATT",
"[defrelic]": "HeroRelicDef",
"[potionrelic]": "HeroRelicPotion",
"[hprelic]": "HeroRelicHP",
"[sprelic]": "HeroRelicSP",
"[mprelic]": "HeroRelicMP",
"[yellowkey]": "",
"[housekey]": "",
"[vaultkey]": "",
"[firecracker]": "",
"[firebomb]": "",
"[icebomb]": "",
"[hpberry]": "",
"[mpberry]": "",
"[pepper]": "",
"[ivy]": "",
"[lure]": "",
"[effigy]": "",
"[flask]": "",
"[shard]": "",
"[dath]": "DathSteneTexture",
"[torch]": "",
"[triangle]": "",
"[realmoney]": "",
"[anklet]": "",
"[perfume]": "",
"[mufflingbell]": "",
"[rtsr]": "",
"[aurasgem]": "",
"[invertedash]": "",
"[bonecard]": "",
"[luckycup]": "",
"[glasscannon]": "",
"[daggerstrap]": "",
"[louderecho]": "",
"[magicecho]": "",
"[bracer]": "",
"[tincture]": "",
"[btsr]": "",
"[scavengermask]": "",
"[redhex]": "RedQuestagon",
"[greenhex]": "GreenQuestagon",
"[bluehex]": "BlueQuestagon",
"[goldhex]": "GoldHex",
"[mrmayor]": "MrMayor",
"[secretlegend]": "SecretLegend",
"[sacredgeometry]": "SacredGeometry",
"[vintage]": "Vintage",
"[justsomepals]": "JustSomePals",
"[regalweasel]": "RegalWeasel",
"[springfalls]": "SpringFalls",
"[powerup]": "PowerUp",
"[backtowork]": "BackToWork",
"[phonomath]": "Phonomath",
"[dusty]": "Dusty",
"[foreverfriend]": "ForeverFriend",
"[fooltrap]": "TinyFox",
"[archipelago]": "ArchipelagoItem",
"[ladder]": "Ladder",
"[hexagram]": "GoldHex"
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 23 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 23 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 23 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 32 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 22 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 16 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 32 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 16 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 20 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 26 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 27 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 31 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 31 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 27 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 35 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 29 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 18 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 27 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 19 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 18 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 25 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 23 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 30 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 27 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 21 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 32 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 18 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 20 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 22 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 17 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 23 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 23 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 23 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 17 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 23 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 23 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 31 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 17 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 18 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 21 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 25 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 21 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 33 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 33 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 20 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 32 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 20 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 20 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 17 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 20 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 20 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 30 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 31 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 27 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 30 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 26 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 18 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 13 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 18 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 19 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 16 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 30 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 31 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 16 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 16 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 28 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 19 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 13 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 26 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 31 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 25 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 19 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 20 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 13 KiB

View File

@ -1,131 +0,0 @@
<svg xmlns="http://www.w3.org/2000/svg">
<style>line, circle{stroke-linecap: round;stroke-width: 20;}path{stroke-linecap:
round;stroke-width: 10;}line, circle, path{stroke: black;fill: black;}</style>
<svg id="rune1" viewBox="1000 0 200 400" xmlns="http://www.w3.org/2000/svg"
x="0" y="0">
<style></style>
<line x1="0" y1="166" x2="200" y2="166" stroke="black" stroke-linecap="butt"></line>
<line x1="10" y1="70" x2="100" y2="130"></line>
<line x1="190" y1="70" x2="100" y2="130"></line>
<line x1="100" y1="130" x2="100" y2="166"></line>
<line x1="100" y1="233" x2="100" y2="353"></line>
<line x1="100" y1="10" x2="190" y2="70"></line>
<line x1="100" y1="10" x2="10" y2="70"></line>
<line x1="10" y1="70" x2="10" y2="166"></line>
<line x1="10" y1="233" x2="10" y2="293"></line>
<line x1="10" y1="293" x2="100" y2="353"></line>
</svg>
<svg id="rune2" viewBox="820 0 200 400" xmlns="http://www.w3.org/2000/svg"
x="0" y="0">
<style></style>
<line x1="0" y1="166" x2="200" y2="166" stroke="black" stroke-linecap="butt"></line>
<line x1="10" y1="70" x2="100" y2="130"></line>
<line x1="100" y1="233" x2="10" y2="293"></line>
<line x1="100" y1="233" x2="190" y2="293"></line>
<line x1="10" y1="293" x2="100" y2="353"></line>
<line x1="190" y1="293" x2="100" y2="353"></line>
</svg>
<svg id="rune3" viewBox="640 0 200 400" xmlns="http://www.w3.org/2000/svg"
x="0" y="0">
<style></style>
<line x1="0" y1="166" x2="200" y2="166" stroke="black" stroke-linecap="butt"></line>
<line x1="100" y1="10" x2="100" y2="130"></line>
<line x1="190" y1="70" x2="100" y2="130"></line>
<line x1="100" y1="130" x2="100" y2="166"></line>
<line x1="100" y1="233" x2="190" y2="293"></line>
</svg>
<svg id="rune5" viewBox="360 0 200 400" xmlns="http://www.w3.org/2000/svg"
x="0" y="0">
<style></style>
<line x1="0" y1="166" x2="200" y2="166" stroke="black" stroke-linecap="butt"></line>
<line x1="10" y1="70" x2="100" y2="130"></line>
<line x1="190" y1="70" x2="100" y2="130"></line>
<line x1="100" y1="130" x2="100" y2="166"></line>
<line x1="100" y1="233" x2="100" y2="353"></line>
<line x1="10" y1="70" x2="10" y2="166"></line>
<line x1="10" y1="233" x2="10" y2="293"></line>
<line x1="190" y1="293" x2="100" y2="353"></line>
</svg>
<svg id="rune6" viewBox="180 0 200 400" xmlns="http://www.w3.org/2000/svg"
x="0" y="0">
<style></style>
<line x1="0" y1="166" x2="200" y2="166" stroke="black" stroke-linecap="butt"></line>
<line x1="10" y1="70" x2="100" y2="130"></line>
<line x1="100" y1="233" x2="10" y2="293"></line>
<line x1="100" y1="233" x2="190" y2="293"></line>
<line x1="100" y1="10" x2="190" y2="70"></line>
<line x1="100" y1="10" x2="10" y2="70"></line>
<line x1="10" y1="70" x2="10" y2="166"></line>
<line x1="10" y1="233" x2="10" y2="293"></line>
<circle cx="100" cy="350" r="18" fill="none"></circle>
</svg>
<svg id="rune7" viewBox="0 0 200 400" xmlns="http://www.w3.org/2000/svg"
x="0" y="0">
<style></style>
<line x1="0" y1="166" x2="200" y2="166" stroke="black" stroke-linecap="butt"></line>
<line x1="10" y1="70" x2="100" y2="130"></line>
<line x1="100" y1="10" x2="100" y2="130"></line>
<line x1="100" y1="130" x2="100" y2="166"></line>
<line x1="100" y1="233" x2="100" y2="353"></line>
<line x1="100" y1="233" x2="190" y2="293"></line>
<line x1="10" y1="293" x2="100" y2="353"></line>
<line x1="190" y1="293" x2="100" y2="353"></line>
</svg>
<svg id="rune8" viewBox="-180 0 200 400" xmlns="http://www.w3.org/2000/svg"
x="0" y="0">
<style></style>
<line x1="0" y1="166" x2="200" y2="166" stroke="black" stroke-linecap="butt"></line>
<line x1="10" y1="70" x2="100" y2="130"></line>
<line x1="190" y1="70" x2="100" y2="130"></line>
<line x1="100" y1="130" x2="100" y2="166"></line>
<line x1="100" y1="233" x2="10" y2="293"></line>
<line x1="100" y1="233" x2="100" y2="353"></line>
<line x1="100" y1="233" x2="190" y2="293"></line>
<line x1="100" y1="10" x2="190" y2="70"></line>
<line x1="100" y1="10" x2="10" y2="70"></line>
</svg>
<svg id="rune9" viewBox="-360 0 200 400" xmlns="http://www.w3.org/2000/svg"
x="0" y="0">
<style></style>
<line x1="0" y1="166" x2="200" y2="166" stroke="black" stroke-linecap="butt"></line>
<line x1="10" y1="70" x2="100" y2="130"></line>
<line x1="100" y1="233" x2="10" y2="293"></line>
<line x1="100" y1="233" x2="190" y2="293"></line>
</svg>
<svg id="rune11" viewBox="-640 0 200 400"
xmlns="http://www.w3.org/2000/svg" x="0" y="0">
<style></style>
<line x1="0" y1="166" x2="200" y2="166" stroke="black" stroke-linecap="butt"></line>
<line x1="10" y1="70" x2="100" y2="130"></line>
<line x1="190" y1="70" x2="100" y2="130"></line>
<line x1="100" y1="130" x2="100" y2="166"></line>
<line x1="100" y1="233" x2="100" y2="353"></line>
<line x1="100" y1="10" x2="190" y2="70"></line>
<line x1="10" y1="70" x2="10" y2="166"></line>
<line x1="10" y1="233" x2="10" y2="293"></line>
<line x1="10" y1="293" x2="100" y2="353"></line>
<line x1="190" y1="293" x2="100" y2="353"></line>
</svg>
<svg id="rune12" viewBox="-820 0 200 400"
xmlns="http://www.w3.org/2000/svg" x="0" y="0">
<style></style>
<line x1="0" y1="166" x2="200" y2="166" stroke="black" stroke-linecap="butt"></line>
<line x1="100" y1="10" x2="100" y2="130"></line>
<line x1="190" y1="70" x2="100" y2="130"></line>
<line x1="100" y1="130" x2="100" y2="166"></line>
<line x1="100" y1="233" x2="190" y2="293"></line>
<line x1="100" y1="10" x2="190" y2="70"></line>
<line x1="100" y1="10" x2="10" y2="70"></line>
<line x1="10" y1="70" x2="10" y2="166"></line>
<line x1="10" y1="233" x2="10" y2="293"></line>
<circle cx="100" cy="350" r="18" fill="none"></circle>
</svg>
<svg id="rune13" viewBox="-1000 0 200 400"
xmlns="http://www.w3.org/2000/svg" x="0" y="0">
<style></style>
<line x1="0" y1="166" x2="200" y2="166" stroke="black" stroke-linecap="butt"></line>
<line x1="10" y1="70" x2="10" y2="166"></line>
<line x1="10" y1="233" x2="10" y2="293"></line>
<line x1="190" y1="293" x2="100" y2="353"></line>
</svg>
</svg>

Before

Width:  |  Height:  |  Size: 6.7 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.9 KiB

View File

@ -1,3 +1,3 @@
<div class="h-full min-w-full p-2 rounded-md bg-[rgb(36,36,36)] bg-opacity-35 {{ extra_classes }}"> <div class="h-full min-w-full p-2 rounded-md bg-[rgb(36,36,36)] bg-opacity-35 {{ extra_classes }}">
<div class="inline align-top text-md {% comment "" %}inline-block{% endcomment %}">{{ value }}</div> <div class="inline align-top text-md drop-shadow">{{ value }}</div>
</div> </div>

View File

@ -114,7 +114,6 @@
</div> </div>
{% else %} {% else %}
<div id="no_data" />{% endif %}</div> <div id="no_data" />{% endif %}</div>
{% comment %} <div class="order-1 order-2 order-3 order-4 order-5 order-6 order-7 order-8 order-9 order-10 order-11 order-12 order-13 order-14 order-15 order-16 order-17 order-18 order-19 order-20 bg-[#ffe28558]"></div> {% endcomment %}
{% include "tracker/src/index.html" with tracker_fe_link="https://gitea.werefox.cafe/ada/tunic-tracker-redux" tracker_be_link="https://github.com/spaceglace/TunicTransitionTracker" %} {% include "tracker/src/index.html" with tracker_fe_link="https://gitea.werefox.cafe/ada/tunic-tracker-redux" tracker_be_link="https://github.com/spaceglace/TunicTransitionTracker" %}
</div> </div>
{% endblock content %} {% endblock content %}

View File

@ -33,7 +33,7 @@ module.exports = {
/* JS 1: Ignore any JavaScript in node_modules folder. */ /* JS 1: Ignore any JavaScript in node_modules folder. */
// '!../../**/node_modules', // '!../../**/node_modules',
/* JS 2: Process all JavaScript files in the project. */ /* JS 2: Process all JavaScript files in the project. */
// '../../**/*.js', '../../**/*.js',
/** /**
* Python: If you use Tailwind CSS classes in Python, uncomment the following line * Python: If you use Tailwind CSS classes in Python, uncomment the following line