#!/usr/bin/env python3 """ Move Relationer to center column + add dynamic column distribution JS. """ with open('app/modules/sag/templates/detail.html', 'r', encoding='utf-8') as f: content = f.read() # ── 1. Extract the relations block from inner-left-col ─────────────────────── start_marker = '
\n
\n
\n
\n
')] print(f"Extracted relations block: chars {start_idx} - {end_idx}") print(f"Relations block starts with: {relations_block[:80]!r}") print(f"Relations block ends with: {relations_block[-60:]!r}") # ── 2. Remove the relations block + spacers from inner-left-col ────────────── content = content[:start_idx] + content[end_idx:] print("Removed relations + spacers from inner-left-col") # ── 3. Insert relations into inner-center-col (before ROW 3: Files) ────────── insert_before = ' ' insert_idx = content.find(insert_before) if insert_idx == -1: print("ERROR: Could not find ROW 3 insertion point") exit(1) relations_in_center = '\n \n' + relations_block + '\n\n' content = content[:insert_idx] + relations_in_center + content[insert_idx:] print(f"Inserted relations before ROW 3 at char {insert_idx}") # ── 4. Add updateInnerColumnVisibility() after updateRightColumnVisibility() ─ old_js = """ function updateRightColumnVisibility() { const rightColumn = document.getElementById('case-right-column'); const leftColumn = document.getElementById('case-left-column'); if (!rightColumn || !leftColumn) return; const visibleRightModules = rightColumn.querySelectorAll('.right-module-card:not(.d-none)'); if (visibleRightModules.length === 0) { rightColumn.classList.add('d-none'); rightColumn.classList.remove('col-lg-4'); leftColumn.classList.remove('col-lg-8'); leftColumn.classList.add('col-12'); } else { rightColumn.classList.remove('d-none'); rightColumn.classList.add('col-lg-4'); leftColumn.classList.add('col-lg-8'); leftColumn.classList.remove('col-12'); } }""" new_js = """ function updateRightColumnVisibility() { const rightColumn = document.getElementById('case-right-column'); const leftColumn = document.getElementById('case-left-column'); if (!rightColumn || !leftColumn) return; const visibleRightModules = rightColumn.querySelectorAll('.right-module-card:not(.d-none)'); if (visibleRightModules.length === 0) { rightColumn.classList.add('d-none'); rightColumn.classList.remove('col-lg-4'); leftColumn.classList.remove('col-lg-8'); leftColumn.classList.add('col-12'); } else { rightColumn.classList.remove('d-none'); rightColumn.classList.add('col-lg-4'); leftColumn.classList.add('col-lg-8'); leftColumn.classList.remove('col-12'); } } function updateInnerColumnVisibility() { const leftCol = document.getElementById('inner-left-col'); const centerCol = document.getElementById('inner-center-col'); if (!leftCol || !centerCol) return; // Tæl synlige moduler i venstre kolonnen (mb-3 wrappers der ikke er skjulte) const visibleLeftModules = leftCol.querySelectorAll('.mb-3:not(.d-none) [data-module]'); const hasVisibleLeft = visibleLeftModules.length > 0; if (!hasVisibleLeft) { // Ingen synlige moduler i venstre - udvid center til fuld bredde leftCol.classList.add('d-none'); centerCol.classList.remove('col-xl-8'); centerCol.classList.add('col-xl-12'); } else { // Gendan 4/8 split leftCol.classList.remove('d-none'); centerCol.classList.remove('col-xl-12'); centerCol.classList.add('col-xl-8'); } }""" if old_js in content: content = content.replace(old_js, new_js) print("Added updateInnerColumnVisibility() function") else: print("ERROR: Could not find updateRightColumnVisibility() for JS patch") exit(1) # ── 5. Call updateInnerColumnVisibility() from applyViewLayout ─────────────── old_call = ' updateRightColumnVisibility();\n }' new_call = ' updateRightColumnVisibility();\n updateInnerColumnVisibility();\n }' if old_call in content: content = content.replace(old_call, new_call, 1) print("Added updateInnerColumnVisibility() call in applyViewLayout") else: print("ERROR: Could not find updateRightColumnVisibility() call") exit(1) # ── Write file ──────────────────────────────────────────────────────────────── with open('app/modules/sag/templates/detail.html', 'w', encoding='utf-8') as f: f.write(content) print("\n✅ Done! Lines written:", content.count('\n'))