Removed thiserror, added some tracing for file loading, moved the json files to an input folder and updated the search filtering a bit
parent
92890f198b
commit
99334a74fd
|
@ -0,0 +1,2 @@
|
|||
[env]
|
||||
RUST_LOG = "khguide=debug"
|
|
@ -9,5 +9,4 @@ serde = { version = "1.0.203", features = ["derive"] }
|
|||
serde_json = "1.0.118"
|
||||
tracing = "0.1.40"
|
||||
tracing-subscriber = { version = "0.3.17", features = ["env-filter"] }
|
||||
thiserror = "1.0.61"
|
||||
itertools = "0.13.0"
|
||||
|
|
|
@ -1,12 +0,0 @@
|
|||
[tasks.create]
|
||||
dependencies = ["run", "format"]
|
||||
|
||||
[tasks.format]
|
||||
private = true
|
||||
command = "prettier"
|
||||
args = ["-w", "index.html"]
|
||||
|
||||
[tasks.run]
|
||||
private = true
|
||||
command = "cargo"
|
||||
args = ["run"]
|
3705
index.html
3705
index.html
File diff suppressed because it is too large
Load Diff
21
src/main.rs
21
src/main.rs
|
@ -5,6 +5,7 @@ use std::collections::HashMap;
|
|||
use askama::Template;
|
||||
use itertools::Itertools;
|
||||
use serde::Deserialize;
|
||||
use tracing_subscriber::EnvFilter;
|
||||
|
||||
#[derive(Debug, Deserialize, PartialEq, Eq)]
|
||||
enum Character {
|
||||
|
@ -127,14 +128,27 @@ struct CommandsTemplate {
|
|||
pub crystals: Vec<String>,
|
||||
}
|
||||
|
||||
const ABILITIES_PATH: &str = "./input/abilities.json";
|
||||
const FINISHERS_PATH: &str = "./input/finish-commands.json";
|
||||
const COMMANDS_PATH: &str = "./input/commands.json";
|
||||
|
||||
fn main() {
|
||||
let abilities_str = std::fs::read_to_string("./abilities.json").unwrap();
|
||||
// Initialize tracing
|
||||
tracing_subscriber::fmt()
|
||||
.with_env_filter(EnvFilter::from_default_env())
|
||||
.event_format(tracing_subscriber::fmt::format().with_source_location(true))
|
||||
.init();
|
||||
|
||||
tracing::info!("Loading abilities json data from {}", ABILITIES_PATH);
|
||||
let abilities_str = std::fs::read_to_string(ABILITIES_PATH).unwrap();
|
||||
let abilities = serde_json::from_str::<Vec<Ability>>(&abilities_str).unwrap();
|
||||
|
||||
let finishers_str = std::fs::read_to_string("./finish-commands.json").unwrap();
|
||||
tracing::info!("Loading finishers json data from {}", ABILITIES_PATH);
|
||||
let finishers_str = std::fs::read_to_string(FINISHERS_PATH).unwrap();
|
||||
let finishers = serde_json::from_str::<HashMap<String, Finisher>>(&finishers_str).unwrap();
|
||||
|
||||
let commands_str = std::fs::read_to_string("./commands.json").unwrap();
|
||||
tracing::info!("Loading commands json data from {}", ABILITIES_PATH);
|
||||
let commands_str = std::fs::read_to_string(COMMANDS_PATH).unwrap();
|
||||
let mut commands = serde_json::from_str::<Vec<Command>>(&commands_str).unwrap();
|
||||
|
||||
// Create a vec with all the crystal variants found in abilities
|
||||
|
@ -152,6 +166,7 @@ fn main() {
|
|||
}
|
||||
}
|
||||
|
||||
tracing::info!("Generating the commands table template");
|
||||
let template = CommandsTemplate { commands, crystals };
|
||||
|
||||
std::fs::write("./index.html", template.render().unwrap()).unwrap();
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
<input type="text" id="filter" autocomplete="off" onkeyup="filter()" />
|
||||
<input type="text" id="filter" autocomplete="off" />
|
||||
<br />
|
||||
<input
|
||||
type="radio"
|
||||
|
|
|
@ -9,6 +9,10 @@
|
|||
let searchType = "result";
|
||||
|
||||
document.addEventListener("DOMContentLoaded", (event) => {
|
||||
const searchFilter = document.getElementById("filter");
|
||||
let filterHandler = debounce(() => filter());
|
||||
searchFilter.addEventListener("keyup", filterHandler);
|
||||
|
||||
const searchInputs = document.querySelectorAll(
|
||||
'input[type="radio"][name="search"]',
|
||||
);
|
||||
|
@ -43,6 +47,16 @@
|
|||
});
|
||||
});
|
||||
|
||||
function debounce(callback, wait = 300) {
|
||||
let timeoutId = null;
|
||||
return (...args) => {
|
||||
window.clearTimeout(timeoutId);
|
||||
timeoutId = window.setTimeout(() => {
|
||||
callback(...args);
|
||||
}, wait);
|
||||
};
|
||||
}
|
||||
|
||||
function filter() {
|
||||
const table = document.querySelector("table tbody");
|
||||
const search = document
|
||||
|
|
Loading…
Reference in New Issue