diff --git a/kjvstudy_org/jinja_filters.py b/kjvstudy_org/jinja_filters.py index f779963..4c62994 100644 --- a/kjvstudy_org/jinja_filters.py +++ b/kjvstudy_org/jinja_filters.py @@ -146,15 +146,17 @@ def link_verse_references_in_text(text): return re.sub(pattern, replace_reference, text) -def inject_word_markers(text, word_studies, verse_num): +def inject_word_markers(text, word_studies, verse_num, auto_expand=False): """Inject sidenote markers into verse text next to annotated words. Word studies are collapsed by default, showing only the word and Greek/Hebrew term. Clicking expands to show transliteration and full definition. + If auto_expand is True, show expanded by default. """ if not word_studies: return text + expanded_class = ' expanded' if auto_expand else '' for idx, study in enumerate(word_studies, 1): word = study['word'] # Link the original term to Strong's page if we have a Strong's number @@ -167,7 +169,7 @@ def inject_word_markers(text, word_studies, verse_num): marker = ( f'' f'' - f'' + f'' f'{word}: {term_html}' f' ({study["translit"]}). {study["note"]}' f'' diff --git a/kjvstudy_org/routes/bible.py b/kjvstudy_org/routes/bible.py index a3137b3..ef00d01 100644 --- a/kjvstudy_org/routes/bible.py +++ b/kjvstudy_org/routes/bible.py @@ -204,6 +204,8 @@ async def read_chapter(request: Request, book: str, chapter: int): cooldown_verses = 5 # Don't repeat same word within 5 verses last_xref_verse = 0 # Track last verse with cross-refs xref_cooldown = 2 # Collapse when within 2 verses + last_word_study_verse = 0 # Track last verse with word study + word_study_cooldown = 2 # Collapse when within 2 verses for verse in verses: commentary = generate_commentary(book, chapter, verse) # Filter out words shown recently (within cooldown period) @@ -211,6 +213,13 @@ async def read_chapter(request: Request, book: str, chapter: int): # Add word study sidenotes word_studies = generate_word_study_sidenotes(verse.text, book, chapter, verse.verse, excluded_words) commentary['word_studies'] = word_studies + # Auto-expand word studies when there's room + if word_studies: + if verse.verse - last_word_study_verse < word_study_cooldown: + commentary['word_study_auto_expand'] = False + else: + commentary['word_study_auto_expand'] = True + last_word_study_verse = verse.verse # Track which words were shown for study in word_studies: recent_words[study['word'].lower()] = verse.verse diff --git a/kjvstudy_org/templates/chapter.html b/kjvstudy_org/templates/chapter.html index be3591b..8ee0f80 100644 --- a/kjvstudy_org/templates/chapter.html +++ b/kjvstudy_org/templates/chapter.html @@ -461,7 +461,7 @@ document.body.dataset.resourceReader = 'false'; {% set commentary = commentaries[verse.verse] if commentaries and verse.verse in commentaries else none %} {% set has_commentary = commentary and (commentary.get('is_enhanced') or commentary.get('analysis')) %}

- {{ verse.verse }} {{ verse.text | red_letter(book, chapter, verse.verse) | inject_word_markers(commentary.word_studies if commentary else [], verse.verse) | link_names | safe }} + {{ verse.verse }} {{ verse.text | red_letter(book, chapter, verse.verse) | inject_word_markers(commentary.word_studies if commentary else [], verse.verse, commentary.word_study_auto_expand if commentary else false) | link_names | safe }} {% if commentary %} {% if commentary.cross_reference_groups %} {% set total_refs = commentary.cross_reference_groups | sum(attribute='refs', start=[]) | length %}