From c4b57b2feefd3352ba2300d14d09d1c57e093cb9 Mon Sep 17 00:00:00 2001
From: Patrick Massot
Date: Wed, 18 Oct 2023 15:29:05 -0400
Subject: [PATCH] Refactor tag filtering
---
make_site.py | 5 ++-
templates/courses.html | 77 ++++++++++++++++++++++--------------------
2 files changed, 44 insertions(+), 38 deletions(-)
diff --git a/make_site.py b/make_site.py
index b03514c5af..4b8f507b92 100755
--- a/make_site.py
+++ b/make_site.py
@@ -271,8 +271,10 @@ def from_top_level(cls, index: int, title: str, children) -> 'Overview':
with (DATA/'courses.yaml').open('r', encoding='utf-8') as h_file:
courses = [Course(**e) for e in yaml.safe_load(h_file)]
+courses_tags = set()
courses.sort(key=lambda c: (-c.lean_version, -c.year, c.name))
for course in courses:
+ courses_tags.update(course.tags)
course.tags.sort()
course.tags.append(f'lean{course.lean_version}')
for field in ['experiences', 'notes', 'summary', 'experiences']:
@@ -281,6 +283,7 @@ def from_top_level(cls, index: int, title: str, children) -> 'Overview':
setattr(course, field, render_markdown(val))
elif isinstance(val, list):
setattr(course, field, render_markdown("\n".join(map(lambda v: "* " + v, val))))
+courses_tags = ['lean4', 'lean3'] + sorted(list(courses_tags))
def format_date_range(event):
if event.start_date and event.end_date:
@@ -443,7 +446,7 @@ def clean_tex(src: str) -> str:
('mathlib_stats.html', {'num_defns': num_defns, 'num_thms': num_thms, 'num_contrib': num_contrib}),
('lean_projects.html', {'projects': projects}),
('events.html', {'old_events': old_events, 'new_events': new_events}),
- ('courses.html', {'courses': courses}),
+ ('courses.html', {'courses': courses, 'tags': courses_tags}),
('teams.html', {'introduction': (DATA/'teams_intro.md').read_text(encoding='utf-8'), 'teams': teams}),
('.*.md', get_contents)
],
diff --git a/templates/courses.html b/templates/courses.html
index 49ffcf85fe..ad8d2bb693 100644
--- a/templates/courses.html
+++ b/templates/courses.html
@@ -10,6 +10,10 @@
height: 160px !important;
max-height: 5rem !important;
}
+
+.selected-tag {
+ font-weight: bolder
+}
{% endblock %}
{% block content %}
@@ -23,6 +27,13 @@ Courses using Lean
courses.yaml.
+
+Select tags to start filtering:
+{% for tag in tags %}
+{{ tag }}{{ ", " if not loop.last else "." }}
+{% endfor %}
+
+
@@ -33,7 +44,7 @@ Courses using Lean
Year |
Tags |
-
+
{% for e in courses %}
@@ -48,17 +59,15 @@ Courses using Lean
{% block extrajs %}
-
-
{% endblock %}