diff --git a/backend/pdfrender/pagination.go b/backend/pdfrender/pagination.go index 9b7b440..e099fd6 100644 --- a/backend/pdfrender/pagination.go +++ b/backend/pdfrender/pagination.go @@ -281,7 +281,7 @@ func (p *Paginator) applyFilter(items interface{}, filter string) interface{} { include := false switch filter { case "learned": - include = skill.IsLearned && skill.Category != "Sprache" + include = (skill.IsLearned || skill.Category == "Waffenfertigkeit") && skill.Category != "Sprache" case "unlearned": include = !skill.IsLearned && skill.Category != "Sprache" case "language", "languages": diff --git a/backend/pdfrender/pagination_helper.go b/backend/pdfrender/pagination_helper.go index 794adef..d7c78d2 100644 --- a/backend/pdfrender/pagination_helper.go +++ b/backend/pdfrender/pagination_helper.go @@ -92,7 +92,7 @@ func PreparePaginatedPageData(viewModel *CharacterSheetViewModel, templateName s for _, skill := range viewModel.Skills { if skill.Category == "Sprache" { languageSkills = append(languageSkills, skill) - } else if skill.IsLearned { + } else if skill.IsLearned || skill.Category == "Waffenfertigkeit" { learnedSkills = append(learnedSkills, skill) } } diff --git a/backend/pdfrender/weaponskills_page2_test.go b/backend/pdfrender/weaponskills_page2_test.go new file mode 100644 index 0000000..55615cc --- /dev/null +++ b/backend/pdfrender/weaponskills_page2_test.go @@ -0,0 +1,146 @@ +package pdfrender + +import ( + "testing" + + "bamort/models" +) + +func TestWeaponSkillsAppearInSkillsList(t *testing.T) { + char := &models.Char{ + BamortBase: models.BamortBase{ + ID: 1, + Name: "Test Fighter", + }, + Fertigkeiten: []models.SkFertigkeit{ + { + BamortCharTrait: models.BamortCharTrait{BamortBase: models.BamortBase{Name: "Klettern"}}, + Fertigkeitswert: 10, + Category: "Körper", + }, + }, + Waffenfertigkeiten: []models.SkWaffenfertigkeit{ + { + SkFertigkeit: models.SkFertigkeit{ + BamortCharTrait: models.BamortCharTrait{BamortBase: models.BamortBase{Name: "Langschwert"}}, + Fertigkeitswert: 12, + }, + }, + { + SkFertigkeit: models.SkFertigkeit{ + BamortCharTrait: models.BamortCharTrait{BamortBase: models.BamortBase{Name: "Dolch"}}, + Fertigkeitswert: 8, + }, + }, + }, + } + + vm, err := MapCharacterToViewModel(char) + if err != nil { + t.Fatalf("MapCharacterToViewModel failed: %v", err) + } + + // Should have 3 skills: 1 regular + 2 weapon skills + expectedSkillCount := 3 + if len(vm.Skills) != expectedSkillCount { + t.Errorf("Expected %d skills, got %d", expectedSkillCount, len(vm.Skills)) + for i, s := range vm.Skills { + t.Logf(" Skill %d: %s (Category: %s)", i, s.Name, s.Category) + } + } + + // Check that weapon skills are present + foundLangschwert := false + foundDolch := false + for _, skill := range vm.Skills { + if skill.Name == "Langschwert" && skill.Category == "Waffenfertigkeit" { + foundLangschwert = true + if skill.Value != 12 { + t.Errorf("Langschwert value: expected 12, got %d", skill.Value) + } + } + if skill.Name == "Dolch" && skill.Category == "Waffenfertigkeit" { + foundDolch = true + if skill.Value != 8 { + t.Errorf("Dolch value: expected 8, got %d", skill.Value) + } + } + } + + if !foundLangschwert { + t.Error("Langschwert weapon skill not found in Skills list") + } + if !foundDolch { + t.Error("Dolch weapon skill not found in Skills list") + } +} + +func TestWeaponSkillsAppearOnPage2(t *testing.T) { + char := &models.Char{ + BamortBase: models.BamortBase{ + ID: 1, + Name: "Test Fighter", + }, + Fertigkeiten: []models.SkFertigkeit{ + { + BamortCharTrait: models.BamortCharTrait{BamortBase: models.BamortBase{Name: "Klettern"}}, + Fertigkeitswert: 10, + Category: "Körper", + }, + }, + Waffenfertigkeiten: []models.SkWaffenfertigkeit{ + { + SkFertigkeit: models.SkFertigkeit{ + BamortCharTrait: models.BamortCharTrait{BamortBase: models.BamortBase{Name: "Langschwert"}}, + Fertigkeitswert: 12, + }, + }, + { + SkFertigkeit: models.SkFertigkeit{ + BamortCharTrait: models.BamortCharTrait{BamortBase: models.BamortBase{Name: "Dolch"}}, + Fertigkeitswert: 8, + }, + }, + }, + } + + vm, err := MapCharacterToViewModel(char) + if err != nil { + t.Fatalf("MapCharacterToViewModel failed: %v", err) + } + + pageData, err := PreparePaginatedPageData(vm, "page_2.html", 2, "2024-01-01") + if err != nil { + t.Fatalf("PreparePaginatedPageData failed: %v", err) + } + + // SkillsLearned should contain both regular skills and weapon skills + // Expected: Klettern + Langschwert + Dolch = 3 learned skills + expectedLearnedCount := 3 + if len(pageData.SkillsLearned) < expectedLearnedCount { + t.Errorf("Expected at least %d learned skills on page 2, got %d", expectedLearnedCount, len(pageData.SkillsLearned)) + t.Log("SkillsLearned contents:") + for i, s := range pageData.SkillsLearned { + t.Logf(" %d: %s (Category: %s, Value: %d)", i, s.Name, s.Category, s.Value) + } + } + + // Verify weapon skills are in SkillsLearned + foundLangschwert := false + foundDolch := false + for _, skill := range pageData.SkillsLearned { + if skill.Name == "Langschwert" { + foundLangschwert = true + } + if skill.Name == "Dolch" { + foundDolch = true + } + } + + if !foundLangschwert { + t.Error("Langschwert weapon skill not found in page 2 SkillsLearned") + } + if !foundDolch { + t.Error("Dolch weapon skill not found in page 2 SkillsLearned") + } +} diff --git a/backend/templates/Default_A4_Quer/char_p1.2_stats_a4_quer.html b/backend/templates/Default_A4_Quer/html/char_p1.2_stats_a4_quer.html similarity index 100% rename from backend/templates/Default_A4_Quer/char_p1.2_stats_a4_quer.html rename to backend/templates/Default_A4_Quer/html/char_p1.2_stats_a4_quer.html diff --git a/backend/templates/Default_A4_Quer/char_p1_stats_a4_quer.html b/backend/templates/Default_A4_Quer/html/char_p1_stats_a4_quer.html similarity index 100% rename from backend/templates/Default_A4_Quer/char_p1_stats_a4_quer.html rename to backend/templates/Default_A4_Quer/html/char_p1_stats_a4_quer.html diff --git a/backend/templates/Default_A4_Quer/char_p2.2_play_a4_quer.html b/backend/templates/Default_A4_Quer/html/char_p2.2_play_a4_quer.html similarity index 100% rename from backend/templates/Default_A4_Quer/char_p2.2_play_a4_quer.html rename to backend/templates/Default_A4_Quer/html/char_p2.2_play_a4_quer.html diff --git a/backend/templates/Default_A4_Quer/char_p2_play_a4_quer.html b/backend/templates/Default_A4_Quer/html/char_p2_play_a4_quer.html similarity index 100% rename from backend/templates/Default_A4_Quer/char_p2_play_a4_quer.html rename to backend/templates/Default_A4_Quer/html/char_p2_play_a4_quer.html diff --git a/backend/templates/Default_A4_Quer/char_p3.2_spell_a4_quer.html b/backend/templates/Default_A4_Quer/html/char_p3.2_spell_a4_quer.html similarity index 100% rename from backend/templates/Default_A4_Quer/char_p3.2_spell_a4_quer.html rename to backend/templates/Default_A4_Quer/html/char_p3.2_spell_a4_quer.html diff --git a/backend/templates/Default_A4_Quer/char_p3_spell_a4_quer.html b/backend/templates/Default_A4_Quer/html/char_p3_spell_a4_quer.html similarity index 100% rename from backend/templates/Default_A4_Quer/char_p3_spell_a4_quer.html rename to backend/templates/Default_A4_Quer/html/char_p3_spell_a4_quer.html diff --git a/backend/templates/Default_A4_Quer/char_p4_equip_a4_quer.html b/backend/templates/Default_A4_Quer/html/char_p4_equip_a4_quer.html similarity index 100% rename from backend/templates/Default_A4_Quer/char_p4_equip_a4_quer.html rename to backend/templates/Default_A4_Quer/html/char_p4_equip_a4_quer.html diff --git a/backend/templates/Default_A4_Quer/page_2.html b/backend/templates/Default_A4_Quer/page_2.html index 86c4e04..e8a4d1e 100644 --- a/backend/templates/Default_A4_Quer/page_2.html +++ b/backend/templates/Default_A4_Quer/page_2.html @@ -42,13 +42,13 @@
Abwehr + {{.DerivedValues.Abwehr}}+{{.DerivedValues.AbwehrBonus}}
-
+ mit Vert.
waffe
+
+ mit Vert. waffe
Resistenz + {{.DerivedValues.ResistenzKoerper}}+{{.DerivedValues.ResistenzBonusKoerper}}/{{.DerivedValues.ResistenzGeist}}+{{.DerivedValues.ResistenzBonusGeist}}
Zaubern + {{.DerivedValues.Zaubern}}+{{.DerivedValues.ZauberBonus}}
- + @@ -78,7 +78,7 @@
Fertigkeit
Schwimmen+(3) Wahrnehmung+(6)
Seilkunst+(3)  
- + @@ -140,7 +140,7 @@
- +
Fertigkeit
Waffe