moved layout html templates to subfolder html
weaponskill should be i list of skills when exported to PDF
This commit is contained in:
@@ -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":
|
||||
|
||||
@@ -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)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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")
|
||||
}
|
||||
}
|
||||
@@ -42,13 +42,13 @@
|
||||
<!-- Combat stats -->
|
||||
<div class="combat-stats">
|
||||
<div><strong>Abwehr + {{.DerivedValues.Abwehr}}+{{.DerivedValues.AbwehrBonus}}</strong></div>
|
||||
<div><strong>+</strong> <span class="combat-stats-small">mit Vert.<br>waffe</span></div>
|
||||
<div><strong>+</strong> <span class="combat-stats-small">mit Vert. waffe</span></div>
|
||||
<div><strong>Resistenz + {{.DerivedValues.ResistenzKoerper}}+{{.DerivedValues.ResistenzBonusKoerper}}/{{.DerivedValues.ResistenzGeist}}+{{.DerivedValues.ResistenzBonusGeist}}</strong></div>
|
||||
<div><strong>Zaubern + {{.DerivedValues.Zaubern}}+{{.DerivedValues.ZauberBonus}}</strong></div>
|
||||
</div>
|
||||
<!-- Skills tables -->
|
||||
<div class="skills-row">
|
||||
<!-- BLOCK: skills_learned, TYPE: skills, MAX: 22, FILTER: learned -->
|
||||
<!-- BLOCK: skills_learned, TYPE: skills, MAX: 19, FILTER: learned -->
|
||||
<table class="skills-table">
|
||||
<tr>
|
||||
<th>Fertigkeit</th>
|
||||
@@ -78,7 +78,7 @@
|
||||
<tr><td>Schwimmen+(3)</td> <td>Wahrnehmung+(6)</td></tr>
|
||||
<tr><td>Seilkunst+(3)</td> <td> </td></tr>
|
||||
</table>
|
||||
<!-- BLOCK: skills_languages, TYPE: skills, MAX: 8, FILTER: language -->
|
||||
<!-- BLOCK: skills_languages, TYPE: skills, MAX: 5, FILTER: language -->
|
||||
<table class="skills-table" style="width: 100%; height: unset;">
|
||||
<tr>
|
||||
<th>Fertigkeit</th>
|
||||
@@ -140,7 +140,7 @@
|
||||
|
||||
<!-- Weapons table -->
|
||||
<div class="margin-bottom-3">
|
||||
<!-- BLOCK: weapons_main, TYPE: weapons, MAX: 22 -->
|
||||
<!-- BLOCK: weapons_main, TYPE: weapons, MAX: 21 -->
|
||||
<table class="weapons-table">
|
||||
<tr>
|
||||
<th>Waffe</th>
|
||||
|
||||
Reference in New Issue
Block a user