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