Static content serving from non-root routes

This commit is contained in:
Jai A
2020-06-02 20:59:20 -07:00
parent e03e58323b
commit a47634bf49
10 changed files with 102 additions and 76 deletions

View File

@@ -13,15 +13,17 @@ impl HelperDef for HumanFormatHelper {
_rc: &mut RenderContext<'reg, 'rc>,
out: &mut dyn Output,
) -> HelperResult {
let param = h.param(0).and_then(|v| v.value().as_str()).unwrap_or("0.0");
let param = h.param(0).and_then(|v| v.value().as_f64()).unwrap_or(0.0);
if param.len() > 3 {
let mut formatted = human_format::Formatter::new().format(param.parse().unwrap());
let string = &param.to_string();
if string.len() > 3 {
let mut formatted = human_format::Formatter::new().format(param);
formatted.retain(|c| !c.is_whitespace());
out.write(formatted.to_uppercase().as_ref())?;
} else {
out.write(param)?;
out.write(string)?;
}
Ok(())

View File

@@ -46,7 +46,7 @@ async fn main() -> std::io::Result<()> {
.service(routes::index_get)
.service(routes::search_post)
.service(routes::search_get)
.service(routes::mod_editor_get)
.service(routes::mod_page_get)
})
.bind("127.0.0.1:8000")?
.run()

View File

@@ -1,8 +1,8 @@
mod index;
mod mod_editor;
mod mod_page;
mod search;
pub use self::mod_editor::mod_editor_get;
pub use self::mod_page::mod_page_get;
pub use self::search::index_mods;
pub use self::search::search_get;

View File

@@ -1,8 +1,8 @@
use actix_web::{get, web, HttpResponse};
use handlebars::*;
#[get("modeditor")]
pub async fn mod_editor_get(hb: web::Data<Handlebars<'_>>) -> HttpResponse {
#[get("mod/testmod")]
pub async fn mod_page_get(hb: web::Data<Handlebars<'_>>) -> HttpResponse {
let data = json!({
"name": "Handlebars"
});

View File

@@ -174,8 +174,8 @@ TODO This method needs a lot of refactoring. Here's a list of changes that need
pub async fn index_mods(client: mongodb::Client) -> Result<(), Box<dyn Error>>{
let mut docs_to_add: Vec<SearchMod> = vec![];
docs_to_add.append(&mut index_database(client).await?);
docs_to_add.append(&mut index_curseforge().await);
/*docs_to_add.append(&mut index_database(client).await?);
docs_to_add.append(&mut index_curseforge().await?);*/
//Write Indexes
//Relevance Index
@@ -252,7 +252,7 @@ async fn index_database(client: mongodb::Client) -> Result<Vec<SearchMod>, Box<
versions: mod_game_versions,
downloads: result.downloads,
page_url: "".to_string(),
icon_url: "".to_string(),
icon_url: result.icon_path,
author_url: "".to_string(),
date_created: "".to_string(),
created: 0,

View File

@@ -102,10 +102,14 @@
background-color: #fefefe;
border-radius: 5px 5px 0 0;
border: 1px solid darkgrey;
border-bottom: none;
border-bottom: none !important;
text-decoration: none;
cursor: pointer;
}
.mod-bar-active {
border: 2px solid #0b75d8 !important;
color: #0b75d8 !important;
background-color: white !important;
}
@@ -114,6 +118,8 @@
background-color: white;
border-radius: 0 5px 5px 5px;
border: 1px solid darkgrey;
font-size: 16px;
line-height: 20px;
}
.mod-description div {

8
static/js/mod.js Normal file
View File

@@ -0,0 +1,8 @@
let currentlySelected = document.getElementById("description-bar");
let currentlySelectedDiv = document.getElementById("description");
function toggleSection(element) {
currentlySelected.classList.remove("mod-bar-active");
currentlySelected = element;
currentlySelected.classList.add("mod-bar-active");
}

View File

@@ -5,9 +5,9 @@
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link href="static/css/normalize.css" rel="stylesheet" type="text/css">
<link href="static/css/main.css" rel="stylesheet" type="text/css">
<link href="static/css/mod.css" rel="stylesheet" type="text/css">
<link href="/static/css/normalize.css" rel="stylesheet" type="text/css">
<link href="/static/css/main.css" rel="stylesheet" type="text/css">
<link href="/static/css/mod.css" rel="stylesheet" type="text/css">
<title>Search</title>
</head>
@@ -33,7 +33,7 @@
<p>></p>
<a class="navigation-text" href="">Mod Name</a>
<a class="navigation-follow" href="">
<img src="static/images/icon/follow.svg" alt="follow">
<img src="/static/images/icon/follow.svg" alt="follow">
Follow
</a>
</div>
@@ -47,21 +47,29 @@
</div>
<div class="mod-bar">
<a>Description</a>
<a>Files</a>
<a>API</a>
<a>Source</a>
<a>Wiki</a>
<a>Issues</a>
<a class="mod-bar-active" onclick="toggleSection(this)" id="description-bar">Description</a>
<a onclick="toggleSection(this)" id="files-bar">Files</a>
<a onclick="toggleSection(this)" id="api-bar">API</a>
<a href="https://github.com/Geometrically/fabricate">Source</a>
<a href="https://github.com/Geometrically/fabricate/wiki">Wiki</a>
<a href="https://github.com/Geometrically/fabricate/issues">Issues</a>
</div>
<div class="mod-description">
<div class="mod-description " id="description">
<div>
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed dignissim, lorem eget maximus cursus, quam est pellentesque leo, quis vulputate ante tellus et lacus. Vestibulum hendrerit finibus gravida. Nulla vitae faucibus massa. Nunc posuere ornare urna ut ultricies. Morbi a velit vestibulum, pulvinar massa nec, rhoncus tellus. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Donec eu ante augue. Morbi nunc libero, ultrices vitae est nec, elementum blandit mauris. Aliquam venenatis faucibus massa in lobortis. Nunc tincidunt lectus in ultrices ultricies. Ut consectetur orci at ligula fringilla dapibus. Praesent porta, neque ut bibendum luctus, diam nibh auctor diam, eu condimentum enim nisi id erat. Nullam fringilla aliquam nulla sed lobortis. Sed ex neque, ultricies nec suscipit nec, aliquet ac mi. Aenean ut ultrices augue. Mauris ut sapien non arcu congue dapibus. Ut ornare ante odio, a rhoncus enim dignissim in. Vestibulum aliquet maximus nisi. Etiam fermentum velit quam, vitae molestie leo consequat malesuada. Vivamus felis nulla, egestas vitae efficitur in, vehicula eu ante. Nunc semper eu nibh sit amet iaculis. Proin eu finibus sapien, a luctus ante. Ut in congue massa. Cras malesuada magna est, id fringilla arcu tempor et. Proin fringilla orci ut tincidunt dictum. Nunc sodales ac urna sit amet fringilla. Donec eget dictum neque. Maecenas maximus libero sem, et lobortis diam imperdiet a. In ultrices quis massa id rutrum. Proin sit amet ex quis diam dapibus interdum vel a turpis. Cras elit ligula, bibendum id lacus id, feugiat mattis arcu. Orci varius natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Cras elit libero, porttitor eu blandit quis, elementum eget massa. Duis ac quam in neque feugiat egestas. Quisque blandit libero nisl, non convallis neque vestibulum quis. Donec vitae malesuada erat, sed faucibus diam. Duis fringilla eros elit, a pulvinar lacus malesuada feugiat. Integer ac hendrerit arcu. Phasellus quis eros faucibus metus blandit volutpat. Curabitur auctor iaculis leo sit amet tincidunt. Nam odio urna, rutrum non sodales sit amet, euismod at justo. Quisque pharetra ipsum sed sollicitudin pulvinar. Aenean eget cursus tellus, et convallis nisi. Maecenas malesuada lobortis condimentum. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia curae; Nulla convallis orci magna, quis gravida purus aliquet sit amet. Pellentesque fringilla at nulla sit amet mollis. Cras euismod lorem non justo rhoncus, ut euismod urna egestas. Etiam luctus id lacus ut eleifend. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia curae; Cras eget lectus at lacus hendrerit gravida non vitae ipsum. Orci varius natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Sed finibus tincidunt porta. Phasellus fringilla pulvinar pharetra. Praesent tristique mauris metus, vitae pellentesque est vestibulum id. Phasellus vitae nisi in nibh vehicula varius id hendrerit erat. Mauris tempus lorem eu nulla viverra facilisis. Phasellus posuere dui nunc, sit amet consectetur lacus scelerisque maximus.
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed dignissim, lorem eget maximus cursus, quam est pellentesque leo, quis vulputate ante tellus et lacus. Vestibulum hendrerit finibus gravida. Nulla vitae faucibus massa. Nunc posuere ornare urna ut ultricies. Morbi a velit vestibulum, pulvinar massa nec, rhoncus tellus. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Donec eu ante augue. Morbi nunc libero, ultrices vitae est nec, elementum blandit mauris. Aliquam venenatis faucibus massa in lobortis. Nunc tincidunt lectus in ultrices ultricies. Ut consectetur orci at ligula fringilla dapibus. Praesent porta, neque ut bibendum luctus, diam nibh auctor diam, eu condimentum enim nisi id erat. Nullam fringilla aliquam nulla sed lobortis. Sed ex neque, ultricies nec suscipit nec, aliquet ac mi. Aenean ut ultrices augue. Mauris ut sapien non arcu congue dapibus. Ut ornare ante odio, a rhoncus enim dignissim in. Vestibulum aliquet maximus nisi. Etiam fermentum velit quam, vitae molestie leo consequat malesuada. Vivamus felis nulla, egestas vitae efficitur in, vehicula eu ante. Nunc semper eu nibh sit amet iaculis. Proin eu finibus sapien, a luctus ante. Ut in congue massa. Cras malesuada magna est, id fringilla arcu tempor et. Proin fringilla orci ut tincidunt dictum. Nunc sodales ac urna sit amet fringilla. Donec eget dictum neque. Maecenas maximus libero sem, et lobortis diam imperdiet a. In ultrices quis massa id rutrum. Proin sit amet ex quis diam dapibus interdum vel a turpis. Cras elit ligula, bibendum id lacus id, feugiat mattis arcu. Orci varius natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Cras elit libero, porttitor eu blandit quis, elementum eget massa. Duis ac quam in neque feugiat egestas. Quisque blandit libero nisl, non convallis neque vestibulum quis. Donec vitae malesuada erat, sed faucibus diam. Duis fringilla eros elit, a pulvinar lacus malesuada feugiat. Integer ac hendrerit arcu. Phasellus quis eros faucibus metus blandit volutpat. Curabitur auctor iaculis leo sit amet tincidunt. Nam odio urna, rutrum non sodales sit amet, euismod at justo. Quisque pharetra ipsum sed sollicitudin pulvinar. Aenean eget cursus tellus, et convallis nisi. Maecenas malesuada lobortis condimentum. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia curae; Nulla convallis orci magna, quis gravida purus aliquet sit amet. Pellentesque fringilla at nulla sit amet mollis. Cras euismod lorem non justo rhoncus, ut euismod urna egestas. Etiam luctus id lacus ut eleifend. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia curae; Cras eget lectus at lacus hendrerit gravida non vitae ipsum. Orci varius natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Sed finibus tincidunt porta. Phasellus fringilla pulvinar pharetra. Praesent tristique mauris metus, vitae pellentesque est vestibulum id. Phasellus vitae nisi in nibh vehicula varius id hendrerit erat. Mauris tempus lorem eu nulla viverra facilisis. Phasellus posuere dui nunc, sit amet consectetur lacus scelerisque maximus.
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed dignissim, lorem eget maximus cursus, quam est pellentesque leo, quis vulputate ante tellus et lacus. Vestibulum hendrerit finibus gravida. Nulla vitae faucibus massa. Nunc posuere ornare urna ut ultricies. Morbi a velit vestibulum, pulvinar massa nec, rhoncus tellus. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Donec eu ante augue. Morbi nunc libero, ultrices vitae est nec, elementum blandit mauris. Aliquam venenatis faucibus massa in lobortis. Nunc tincidunt lectus in ultrices ultricies. Ut consectetur orci at ligula fringilla dapibus. Praesent porta, neque ut bibendum luctus, diam nibh auctor diam, eu condimentum enim nisi id erat. Nullam fringilla aliquam nulla sed lobortis. Sed ex neque, ultricies nec suscipit nec, aliquet ac mi. Aenean ut ultrices augue. Mauris ut sapien non arcu congue dapibus. Ut ornare ante odio, a rhoncus enim dignissim in. Vestibulum aliquet maximus nisi. Etiam fermentum velit quam, vitae molestie leo consequat malesuada. Vivamus felis nulla, egestas vitae efficitur in, vehicula eu ante. Nunc semper eu nibh sit amet iaculis. Proin eu finibus sapien, a luctus ante. Ut in congue massa. Cras malesuada magna est, id fringilla arcu tempor et. Proin fringilla orci ut tincidunt dictum. Nunc sodales ac urna sit amet fringilla. Donec eget dictum neque. Maecenas maximus libero sem, et lobortis diam imperdiet a. In ultrices quis massa id rutrum. Proin sit amet ex quis diam dapibus interdum vel a turpis. Cras elit ligula, bibendum id lacus id, feugiat mattis arcu. Orci varius natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Cras elit libero, porttitor eu blandit quis, elementum eget massa. Duis ac quam in neque feugiat egestas. Quisque blandit libero nisl, non convallis neque vestibulum quis. Donec vitae malesuada erat, sed faucibus diam. Duis fringilla eros elit, a pulvinar lacus malesuada feugiat. Integer ac hendrerit arcu. Phasellus quis eros faucibus metus blandit volutpat. Curabitur auctor iaculis leo sit amet tincidunt. Nam odio urna, rutrum non sodales sit amet, euismod at justo. Quisque pharetra ipsum sed sollicitudin pulvinar. Aenean eget cursus tellus, et convallis nisi. Maecenas malesuada lobortis condimentum. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia curae; Nulla convallis orci magna, quis gravida purus aliquet sit amet. Pellentesque fringilla at nulla sit amet mollis. Cras euismod lorem non justo rhoncus, ut euismod urna egestas. Etiam luctus id lacus ut eleifend. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia curae; Cras eget lectus at lacus hendrerit gravida non vitae ipsum. Orci varius natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Sed finibus tincidunt porta. Phasellus fringilla pulvinar pharetra. Praesent tristique mauris metus, vitae pellentesque est vestibulum id. Phasellus vitae nisi in nibh vehicula varius id hendrerit erat. Mauris tempus lorem eu nulla viverra facilisis. Phasellus posuere dui nunc, sit amet consectetur lacus scelerisque maximus.
</div>
</div>
<div class="files" id="files">
</div>
<div class="api" id="api">
</div>
</div>
<div class="sidebar">
@@ -70,24 +78,24 @@
<div class="mod-sidebar rounded-border gray-border">
<div class="mod-info sidebar-entry">
<div class="sidebar-info">
<img src="static/images/icon/information.svg" class="sidebar-img" alt="Donate">
<img src="/static/images/icon/information.svg" class="sidebar-img" alt="Donate">
<h3>Information</h3>
</div>
<div class="mod-info-entry">
<img src="static/images/icon/download.svg" alt="Downloads" >
<img src="/static/images/icon/download.svg" alt="Downloads" >
<p>1,292,112</p>
</div>
<div class="mod-info-entry">
<img src="static/images/icon/followers.svg" alt="Downloads" >
<img src="/static/images/icon/followers.svg" alt="Downloads" >
<p>2391</p>
</div>
<div class="mod-info-entry">
<img src="static/images/icon/created.svg" alt="Downloads" >
<img src="/static/images/icon/created.svg" alt="Downloads" >
<p>1,292,112</p>
</div>
<div class="mod-info-entry">
<img src="static/images/icon/updated.svg" alt="Downloads" >
<img src="/static/images/icon/updated.svg" alt="Downloads" >
<p>5/4/2020</p>
</div>
</div>
@@ -95,12 +103,12 @@
<div class="member-info sidebar-entry">
<div class="sidebar-info">
<img src="static/images/icon/contributor.svg" class="sidebar-img" alt="Donate">
<img src="/static/images/icon/contributor.svg" class="sidebar-img" alt="Donate">
<h3>Contributors</h3>
</div>
<div class="contributor-card rounded-border gray-border">
<img src="static/images/icon/cursed.png" alt="">
<img src="/static/images/icon/cursed.png" alt="">
<div class="contributor-card-text">
<a href="">Username</a>
<small>Role</small>
@@ -111,36 +119,37 @@
<div class="categories-info sidebar-entry">
<div class="sidebar-info">
<img src="static/images/icon/category.svg" class="sidebar-img" alt="Donate">
<img src="/static/images/icon/category.svg" class="sidebar-img" alt="Donate">
<h3>Categories</h3>
</div>
<div class="categories">
<img alt="adventure" src="static/images/icon/adventure.svg"/>
<img alt="magic" src="static/images/icon/magic.svg"/>
<img alt="library" src="static/images/icon/library.svg" class="result-image"/>
<img alt="adventure" src="/static/images/icon/adventure.svg"/>
<img alt="magic" src="/static/images/icon/magic.svg"/>
<img alt="library" src="/static/images/icon/library.svg" class="result-image"/>
</div>
</div>
<div class="sidebar-line"></div>
<div class="donation-info sidebar-entry">
<div class="sidebar-info">
<img src="static/images/icon/donate.svg" class="sidebar-img" alt="Donate">
<img src="/static/images/icon/donate.svg" class="sidebar-img" alt="Donate">
<h3>Donate</h3>
</div>
<a href="" class="donation-link">
<img src="static/images/donation/patreon.png">
<img src="/static/images/donation/patreon.png">
</a>
<a href="" class="donation-link">
<img src="static/images/donation/bmc-coffee.gif">
<img src="/static/images/donation/bmc-coffee.gif">
</a>
<a href="" class="donation-link">
<img src="static/images/donation/paypal.jpg">
<img src="/static/images/donation/paypal.jpg">
</a>
</div>
</div>
</div>
</div>
<script src="/static/js/mod.js"></script>
</body>
</html>

View File

@@ -8,24 +8,24 @@
</div>
<p>{{this.description}}</p>
<div class="mod-info">
<img src="static/images/icon/download.svg" alt="download" title="Downloads"/>
<img src="/static/images/icon/download.svg" alt="download" title="Downloads"/>
<p title="Downloads">{{format this.downloads}}</p>
<img src="static/images/icon/created.svg" alt="created" title="Created"/>
<img src="/static/images/icon/created.svg" alt="created" title="Created"/>
<p title="Created">{{this.date_created}}</p>
<img src="static/images/icon/updated.svg" alt="updated" title="Last Updated"/>
<img src="/static/images/icon/updated.svg" alt="updated" title="Last Updated"/>
<p title="Last Updated">{{this.date_modified}}</p>
<img src="static/images/icon/version.svg" alt="version" title="Version"/>
<img src="/static/images/icon/version.svg" alt="version" title="Version"/>
<p title="Version">{{this.latest_version}}</p>
<div class="loader-icons">
{{#contains this.keywords "forge"}}
<img alt="forge" src="static/images/icon/forge.svg" class="forge"/>
<img alt="forge" src="/static/images/icon/forge.svg" class="forge"/>
{{/contains}}
{{#contains this.keywords "fabric"}}
<img alt="fabric" src="static/images/icon/fabric.png"/>
<img alt="fabric" src="/static/images/icon/fabric.png"/>
{{/contains}}
</div>
</div>
@@ -33,73 +33,74 @@
<div class="result-badges">
{{#contains this.keywords "technology"}}
<div class="tech-badge result-badge">
<img alt="tech" src="static/images/icon/tech.svg" class="result-image"/>
<img alt="tech" src="/static/images/icon/tech.svg" class="result-image"/>
<p>TECH</p>
</div>
{{/contains}}
{{#contains this.keywords "adventure"}}
<div class="adventure-badge result-badge">
<img alt="adventure" src="static/images/icon/adventure.svg" class="result-image"/>
<img alt="adventure" src="/static/images/icon/adventure.svg" class="result-image"/>
<p>ADVENTURE</p>
</div>
{{/contains}}
{{#contains this.keywords "magic"}}
<div class="magic-badge result-badge">
<img alt="magic" src="static/images/icon/magic.svg" class="result-image"/>
<img alt="magic" src="/static/images/icon/magic.svg" class="result-image"/>
<p>MAGIC</p>
</div>
{{/contains}}
{{#contains this.keywords "utility"}}
<div class="utility-badge result-badge">
<img alt="util" src="static/images/icon/util.svg" class="result-image"/>
<img alt="util" src="/static/images/icon/util.svg" class="result-image"/>
<p>UTILITY</p>
</div>
{{/contains}}
{{#contains this.keywords "decoration"}}
<div class="decoration-badge result-badge">
<img alt="decoration" src="static/images/icon/decoration.svg" class="result-image"/>
<img alt="decoration" src="/static/images/icon/decoration.svg" class="result-image"/>
<p>DECORATION</p>
</div>
{{/contains}}
{{#contains this.keywords "library"}}
<div class="library-badge result-badge">
<img alt="library" src="static/images/icon/library.svg" class="result-image"/>
<img alt="library" src="/static/images/icon/library.svg" class="result-image"/>
<p>LIBRARY</p>
</div>
{{/contains}}
{{#contains this.keywords "worldgen"}}
<div class="world-badge result-badge">
<img alt="world" src="static/images/icon/world.svg" class="result-image"/>
<img alt="world" src="/static/images/icon/world.svg" class="result-image"/>
<p>WORLDGEN</p>
</div>
{{/contains}}
{{#contains this.keywords "cursed"}}
<div class="cursed-badge result-badge">
<img alt="cursed" src="static/images/icon/cursed.png" class="result-image"/>
<img alt="cursed" src="/static/images/icon/cursed.png" class="result-image"/>
<p>CURSED</p>
<p>CURSED</p>
</div>
{{/contains}}
{{#contains this.keywords "storage"}}
<div class="storage-badge result-badge">
<img alt="storage" src="static/images/icon/storage.svg" class="result-image"/>
<img alt="storage" src="/static/images/icon/storage.svg" class="result-image"/>
<p>STORAGE</p>
</div>
{{/contains}}
{{#contains this.keywords "food"}}
<div class="food-badge result-badge">
<img alt="food" src="static/images/icon/food.svg" class="result-image"/>
<img alt="food" src="/static/images/icon/food.svg" class="result-image"/>
<p>FOOD</p>
</div>
{{/contains}}
{{#contains this.keywords "equipment"}}
<div class="equipment-badge result-badge">
<img alt="equipment" src="static/images/icon/equipment.svg" class="result-image"/>
<img alt="equipment" src="/static/images/icon/equipment.svg" class="result-image"/>
<p>EQUIPMENT</p>
</div>
{{/contains}}
{{#contains this.keywords "misc"}}
<div class="misc-badge result-badge">
<img alt="misc" src="static/images/icon/misc.svg" class="result-image"/>
<img alt="misc" src="/static/images/icon/misc.svg" class="result-image"/>
<p>MISC</p>
</div>
{{/contains}}

View File

@@ -5,9 +5,9 @@
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link href="static/css/main.css" rel="stylesheet" type="text/css">
<link href="static/css/search.css" rel="stylesheet" type="text/css">
<link href="static/css/normalize.css" rel="stylesheet" type="text/css">
<link href="/static/css/main.css" rel="stylesheet" type="text/css">
<link href="/static/css/search.css" rel="stylesheet" type="text/css">
<link href="/static/css/normalize.css" rel="stylesheet" type="text/css">
<title>Search</title>
</head>
@@ -27,7 +27,7 @@
</header>
<a href="#" class="back-to-top" id="backToTop">
<img src="static/images/icon/up.svg" alt="up">
<img src="/static/images/icon/up.svg" alt="up">
</a>
<div class="main-flex">
@@ -46,51 +46,51 @@
<p>Categories</p>
</a>
<a class="tech-badge category-badge category-active" id="technology" onclick="activateCategory(this)">
<img alt="tech" src="static/images/icon/tech.svg" class="result-image"/>
<img alt="tech" src="/static/images/icon/tech.svg" class="result-image"/>
<p>TECH</p>
</a>
<a class="adventure-badge category-badge" id="adventure" onclick="activateCategory(this)">
<img alt="adventure" src="static/images/icon/adventure.svg" class="result-image"/>
<img alt="adventure" src="/static/images/icon/adventure.svg" class="result-image"/>
<p>ADVENTURE</p>
</a>
<a class="magic-badge category-badge" id="magic" onclick="activateCategory(this)">
<img alt="magic" src="static/images/icon/magic.svg" class="result-image"/>
<img alt="magic" src="/static/images/icon/magic.svg" class="result-image"/>
<p>MAGIC</p>
</a>
<a class="utility-badge category-badge" id="utility" onclick="activateCategory(this)">
<img alt="util" src="static/images/icon/util.svg" class="result-image"/>
<img alt="util" src="/static/images/icon/util.svg" class="result-image"/>
<p>UTILITY</p>
</a>
<a class="decoration-badge category-badge" id="decoration" onclick="activateCategory(this)">
<img alt="decoration" src="static/images/icon/decoration.svg" class="result-image"/>
<img alt="decoration" src="/static/images/icon/decoration.svg" class="result-image"/>
<p>DECORATION</p>
</a>
<a class="library-badge category-badge" id="library" onclick="activateCategory(this)">
<img alt="library" src="static/images/icon/library.svg" class="result-image"/>
<img alt="library" src="/static/images/icon/library.svg" class="result-image"/>
<p>LIBRARY</p>
</a>
<a class="world-badge category-badge" id="worldgen" onclick="activateCategory(this)">
<img alt="world" src="static/images/icon/world.svg" class="result-image"/>
<img alt="world" src="/static/images/icon/world.svg" class="result-image"/>
<p>WORLDGEN</p>
</a>
<a class="cursed-badge category-badge" id="cursed" onclick="activateCategory(this)">
<img alt="cursed" src="static/images/icon/cursed.png" class="result-image"/>
<img alt="cursed" src="/static/images/icon/cursed.png" class="result-image"/>
<p>CURSED</p>
</a>
<a class="storage-badge category-badge" id="storage" onclick="activateCategory(this)">
<img alt="storage" src="static/images/icon/storage.svg" class="result-image"/>
<img alt="storage" src="/static/images/icon/storage.svg" class="result-image"/>
<p>STORAGE</p>
</a>
<a class="food-badge category-badge" id="food" onclick="activateCategory(this)">
<img alt="food" src="static/images/icon/food.svg" class="result-image"/>
<img alt="food" src="/static/images/icon/food.svg" class="result-image"/>
<p>FOOD</p>
</a>
<a class="equipment-badge category-badge" id="equipment" onclick="activateCategory(this)">
<img alt="equipment" src="static/images/icon/equipment.svg" class="result-image"/>
<img alt="equipment" src="/static/images/icon/equipment.svg" class="result-image"/>
<p>EQUIPMENT</p>
</a>
<a class="misc-badge category-badge" id="misc" onclick="activateCategory(this)">
<img alt="misc" src="static/images/icon/misc.svg" class="result-image"/>
<img alt="misc" src="/static/images/icon/misc.svg" class="result-image"/>
<p>MISC</p>
</a>
</div>
@@ -100,11 +100,11 @@
<p>Loaders</p>
</a>
<a class="forge-badge category-badge" id="forge" onclick="activateCategory(this)">
<img alt="forge" src="static/images/icon/forge-alt.svg" class="result-image"/>
<img alt="forge" src="/static/images/icon/forge-alt.svg" class="result-image"/>
<p>FORGE</p>
</a>
<a class="fabric-badge category-badge" id="fabric" onclick="activateCategory(this)">
<img alt="fabric" src="static/images/icon/fabric.png" class="result-image"/>
<img alt="fabric" src="/static/images/icon/fabric.png" class="result-image"/>
<p>FABRIC</p>
</a>
</div>
@@ -146,7 +146,7 @@
</div>
</div>
<script src="static/js/search.js"></script>
<script src="/static/js/search.js"></script>
</body>
</html>