59fe69d35d
BREAKING CHANGE: Template names changed from page1_stats.html to page_1.html ## Phase 1: Unified Pagination Function - Implemented PaginateMultiList() to replace PaginateSkills(), PaginateSpells(), and PaginatePage2PlayLists() - Single metadata-driven function handles all list types (skills, weapons, spells, equipment) - Properly handles filters (learned/unlearned/language) via template metadata - Shares list trackers by ListType+Filter combination to avoid duplication - Added comprehensive tests for all edge cases ## Phase 2: Template Naming Convention - Renamed templates to be data-agnostic: - page1_stats.html -> page_1.html - page1.2_stats.html -> page_1.2.html - page2_play.html -> page_2.html - page2.2_play.html -> page_2.2.html - page3_spell.html -> page_3.html - page3.2_spell.html -> page_3.2.html - page4_equip.html -> page_4.html - Updated GenerateContinuationTemplateName() for new naming (page_1.html -> page_1.2.html) - Updated ExtractBaseTemplateName() to handle new format - Updated all test files and source files with new template names ## Phase 3: Simplified RenderPageWithContinuations - Removed hardcoded switch statements based on template names - Replaced with generic dataMap and unified pagination call - Extracted populatePageDataFromDistribution() to handle data mapping - Template type detection now driven by metadata, not hardcoded names ## Benefits - ✅ Extensibility: Add new templates without code changes - ✅ Maintainability: One pagination algorithm instead of three - ✅ Clarity: Template names reflect page numbers, not content types - ✅ Flexibility: Templates can mix any data types - ✅ All 40+ tests passing ## Technical Details - Added SkillsColumn3 and SkillsColumn4 fields to PageData for continuation pages - Template metadata loaded from HTML comments drives pagination behavior - Backward compatibility maintained for old template references in comments
36 lines
822 B
Docker
36 lines
822 B
Docker
# Development Dockerfile für Go Backend mit Live-Reloading
|
|
FROM golang:1.25-alpine
|
|
|
|
# Install necessary packages for CGO and SQLite
|
|
RUN apk add --no-cache gcc musl-dev sqlite-dev
|
|
|
|
# Install Chromium for PDF rendering
|
|
RUN apk add --no-cache \
|
|
chromium \
|
|
chromium-chromedriver \
|
|
nss \
|
|
freetype \
|
|
harfbuzz \
|
|
ca-certificates \
|
|
ttf-freefont
|
|
|
|
# Set Chrome path for chromedp
|
|
ENV CHROME_BIN=/usr/bin/chromium-browser \
|
|
CHROME_PATH=/usr/bin/chromium-browser
|
|
|
|
# Install Air für Live-Reloading (kompatible Version für Go 1.23)
|
|
#RUN go install github.com/cosmtrek/air@v1.49.0
|
|
RUN go install github.com/air-verse/air@latest
|
|
|
|
WORKDIR /app
|
|
|
|
# Copy go.mod and go.sum first
|
|
COPY go.mod go.sum ./
|
|
RUN go mod download
|
|
|
|
# Expose port
|
|
EXPOSE 8180
|
|
|
|
# Use Air for live reloading
|
|
CMD ["air", "-c", ".air.toml"]
|