diff options
| -rw-r--r-- | main.py | 14 | ||||
| -rw-r--r-- | pages.py | 60 | ||||
| -rw-r--r-- | www/about/index.html | 2 | ||||
| -rw-r--r-- | www/projects/index.html | 2 | ||||
| -rw-r--r-- | www/scripts/onload.js | 3 |
5 files changed, 76 insertions, 5 deletions
@@ -138,4 +138,18 @@ def event_page_redirect(event_name: str): ) +@app.get("/") +def index_page(): + status, html = pages.render_index() + + return fastapi.responses.Response(content=html, media_type="text/html", status_code=status) + + +@app.get("/blog/") +def bloglist_page(): + status, html = pages.render_blog_list() + + return fastapi.responses.Response(content=html, media_type="text/html", status_code=status) + + app.mount("/", fastapi.staticfiles.StaticFiles(directory="./www/", html=True), name="static") @@ -13,11 +13,15 @@ PATH_HTML_EVENT_TEMPLATE = "./templates/eventdetails.html" PATH_EVENT_INDEX = "./data/events.json" PATH_HTML_VIDEO_TEMPLATE = "./templates/video.html" PATH_VIDEO_INDEX = "./data/videos.json" +PATH_INDEX = "./www/index.html" +PATH_BLOGLIST = "./www/blog/index.html" HTML_PROJECT_TEMPLATE = """""" HTML_BLOGPOST_TEMPLATE = """""" HTML_EVENT_TEMPLATE = """""" HTML_VIDEO_TEMPLATE = """""" +HTML_INDEX = """""" +HTML_BLOGLIST = """""" PROJECT_INDEX = {} BLOGPOST_INDEX = {} @@ -34,6 +38,10 @@ with open(PATH_HTML_EVENT_TEMPLATE) as f: HTML_EVENT_TEMPLATE = f.read() with open(PATH_HTML_VIDEO_TEMPLATE) as f: HTML_VIDEO_TEMPLATE = f.read() +with open(PATH_INDEX) as f: + HTML_INDEX = f.read() +with open(PATH_BLOGLIST) as f: + HTML_BLOGLIST = f.read() with open(PATH_PROJECT_INDEX) as f: PROJECT_INDEX = json.load(f) @@ -234,3 +242,55 @@ def render_event(event_name: str) -> tuple: soup.title.string = soup.title.string.replace("{[{title}]}", metadata["title"]) return (200, str(soup)) + + +def render_index() -> tuple: + html = HTML_INDEX + + soup = BeautifulSoup(html, "html.parser") + + soup.select_one("#blog-container").append(render_blogpost_card(len(BLOGPOST_INDEX["posts"]) - 1)) + soup.select_one("#blog-container").append(render_blogpost_card(len(BLOGPOST_INDEX["posts"]) - 2)) + + return (200, soup) + + +def render_blog_list() -> tuple: + html = HTML_BLOGLIST + + soup = BeautifulSoup(html, "html.parser") + + for i in range(len(BLOGPOST_INDEX["posts"]) - 1, -1, -1): + soup.select_one("#blog-container").append(render_blogpost_card(i)) + + return (200, soup) + + +def render_blogpost_card(idx: int) -> BeautifulSoup: + if idx >= len(BLOGPOST_INDEX["posts"]): + print(f"blog of index {idx} doesn't exist") + return None + + post = BLOGPOST_INDEX["posts"][idx] + + evaluatedTags = "" + + for tag in post["tags"]: + evaluatedTags += f"<span class=\"chip\">{tag}</span>" + + snippet = f""" + <div class="card" tabindex="9999"> + <img src="{post["thumbnail"]}" + alt=""> + <div> + <div class="flex-container-normal chip-container"> + {evaluatedTags} + </div> + <a href="/blog/{idx}" class="link"><h2>{post["title"]}</h2></a> + <p class="half-opacity-text"><i class="fa-solid fa-calendar"></i> {post["date"]}</p> + <p>{post["description"]}</p> + </div> + </div> + """ + + return BeautifulSoup(snippet, "html.parser") diff --git a/www/about/index.html b/www/about/index.html index bc49f24..46572ee 100644 --- a/www/about/index.html +++ b/www/about/index.html @@ -130,7 +130,7 @@ <div class="timeline-item shadow-filter">
<div>
<span class="half-opacity-text"><i class="fa-solid fa-code"></i> Project</span>
- <h2>Tank Shooter</h2>
+ <h2>Tank Shooter <i class="half-opacity-text fa-brands fa-unity"></i></h2>
<p>Created and published my first major game project. A 2D pixel art arcade shooter game.</p>
<p><a class="link" href="https://altaf-creator.itch.io/tank-shooter"><i class="fa-brands fa-itch-io"></i> / Tank Shooter →</a></p>
</div>
diff --git a/www/projects/index.html b/www/projects/index.html index cfd3ba2..fd053a2 100644 --- a/www/projects/index.html +++ b/www/projects/index.html @@ -123,7 +123,7 @@ </div>
<div class="flex full-img-card gallery-card"
style="background-image: url(/assets/images/game-hero/.png);">
- <a href="https://github.com/altaf-creator/droid-esp32-blockly" class="fill-div gradient-overlay">
+ <a href="/209.html" class="fill-div gradient-overlay">
</a>
<div class="img-card-titlebox">
<span class="img-card-subtitle"><i class="fa-solid fa-microchip"></i> Electronics</span>
diff --git a/www/scripts/onload.js b/www/scripts/onload.js index 539df36..f6089f7 100644 --- a/www/scripts/onload.js +++ b/www/scripts/onload.js @@ -33,16 +33,13 @@ function blog(n) { }
function index() {
- postList(2);
addNodes();
}
function library() {
- postList();
addNodes();
}
function blogPost() {
- postList(3);
addNodes();
}
|
