Major refactor: deduplicate routes, sync, JS, and fix bugs
- Extract 8 common route patterns into factory functions in routes/shared.py (favourite, upload, replace cover, save defaults, clone, save JSON, get missing, clear covers) — removes ~1,100 lines across 9 route files - Extract generic _sync_category() in sync.py — 7 sync functions become one-liner wrappers, removing ~350 lines - Extract shared detail page JS into static/js/detail-common.js — all 9 detail templates now call initDetailPage() with minimal config - Extract layout inline JS into static/js/layout-utils.js (~185 lines) - Extract library toolbar JS into static/js/library-toolbar.js - Fix finalize missing-image bug: raise RuntimeError instead of logging warning so job is marked failed - Fix missing scheduler default in _default_checkpoint_data() - Fix N+1 query in Character.get_available_outfits() with batch IN query - Convert all print() to logger across services and routes - Add missing tags display to styles, scenes, detailers, checkpoints detail - Update delete buttons to use trash.png icon with solid red background - Update CLAUDE.md to reflect new architecture Net reduction: ~1,600 lines Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -307,11 +307,24 @@
|
||||
applyGrid() {
|
||||
const container = state.dom.container;
|
||||
if (!container) return;
|
||||
|
||||
// Reset any custom positioning
|
||||
|
||||
// Reset container styles set by other layouts
|
||||
container.style.height = '';
|
||||
container.style.position = '';
|
||||
container.style.gap = '';
|
||||
|
||||
// Reset any custom positioning on cards and their children
|
||||
state.images.forEach(img => {
|
||||
if (img.element) {
|
||||
img.element.style.cssText = '';
|
||||
|
||||
// Reset child element inline styles set by mosaic/other layouts
|
||||
const imgEl = img.element.querySelector('img');
|
||||
if (imgEl) imgEl.style.cssText = '';
|
||||
const badge = img.element.querySelector('.cat-badge');
|
||||
if (badge) badge.style.cssText = '';
|
||||
const overlay = img.element.querySelector('.overlay');
|
||||
if (overlay) overlay.style.cssText = '';
|
||||
}
|
||||
});
|
||||
},
|
||||
|
||||
Reference in New Issue
Block a user