diff --git a/app.py b/app.py index 78631b7..77d7e26 100644 --- a/app.py +++ b/app.py @@ -1,4 +1,5 @@ import os +from datetime import datetime from flask import Flask, render_template, abort, jsonify, request from comics_data import COMICS, FULL_WIDTH_DEFAULT, PLAIN_DEFAULT @@ -26,6 +27,18 @@ def is_plain(comic): return PLAIN_DEFAULT +def format_comic_date(date_str): + """Format date string (YYYY-MM-DD) to 'Day name, Month name day, year'""" + try: + date_obj = datetime.strptime(date_str, '%Y-%m-%d') + # Use %d and strip leading zero for cross-platform compatibility + day = date_obj.strftime('%d').lstrip('0') + formatted = date_obj.strftime(f'%A, %B {day}, %Y') + return formatted + except: + return date_str + + def enrich_comic(comic): """Add computed properties to comic data""" if comic is None: @@ -33,6 +46,7 @@ def enrich_comic(comic): enriched = comic.copy() enriched['full_width'] = is_full_width(comic) enriched['plain'] = is_plain(comic) + enriched['formatted_date'] = format_comic_date(comic['date']) return enriched diff --git a/static/css/style.css b/static/css/style.css index 3f7fb77..435712f 100644 --- a/static/css/style.css +++ b/static/css/style.css @@ -265,15 +265,13 @@ main { color: #999; } -.comic-number { - padding: 0.4rem 0.8rem; - background-color: #000; - color: #fff; - border: 2px solid #000; +.comic-date-display { + padding: 0 0.5rem; + color: #000; font-weight: bold; margin: 0 0.25rem; - font-size: 0.8rem; - text-transform: uppercase; + font-size: 0.85rem; + font-style: italic; } /* Comic Transcript */ @@ -363,9 +361,8 @@ main { font-size: 0.75rem; } - .comic-number { - padding: 0.3rem 0.6rem; - font-size: 0.75rem; + .comic-date-display { + font-size: 0.7rem; } .archive-grid { diff --git a/static/js/comic-nav.js b/static/js/comic-nav.js index 846c531..4802dec 100644 --- a/static/js/comic-nav.js +++ b/static/js/comic-nav.js @@ -92,7 +92,7 @@ } // Update navigation buttons - updateNavButtons(comic.number); + updateNavButtons(comic.number, comic.formatted_date); // Update page title document.title = `${title} - Sunday Comics`; @@ -126,7 +126,7 @@ } // Update navigation button states - function updateNavButtons(currentNumber) { + function updateNavButtons(currentNumber, formattedDate) { const navButtons = document.querySelector('.nav-buttons'); // First button @@ -149,8 +149,10 @@ prevBtn.onclick = null; } - // Comic number display - navButtons.children[2].textContent = `Comic #${currentNumber}`; + // Comic date display + if (formattedDate) { + navButtons.children[2].textContent = formattedDate; + } // Next button const nextBtn = navButtons.children[3]; @@ -187,7 +189,10 @@ const currentNumber = parseInt(document.querySelector('.comic-container').dataset.comicNumber || 0); if (currentNumber && totalComics) { - updateNavButtons(currentNumber); + // Get the formatted date from the DOM (already rendered by server) + const dateDisplay = document.querySelector('.comic-date-display'); + const formattedDate = dateDisplay ? dateDisplay.textContent : null; + updateNavButtons(currentNumber, formattedDate); updateComicImageLink(currentNumber); } diff --git a/templates/comic.html b/templates/comic.html index 2e35022..22bbadf 100644 --- a/templates/comic.html +++ b/templates/comic.html @@ -37,7 +37,7 @@ Previous {% endif %} - Comic #{{ comic.number }} + {{ comic.formatted_date }} {% if comic.number < total_comics %} Next