Browse Source

fix coarse affecting stat options in created item, change sorting of requirements.

master
Gisle Aune 3 years ago
parent
commit
d114f0d38c
  1. 2
      frontend/src/lib/components/project/RequirementSection.svelte
  2. 18
      usecases/projects/result.go

2
frontend/src/lib/components/project/RequirementSection.svelte

@ -24,7 +24,9 @@
</OptionsRow> </OptionsRow>
<LabeledProgressRow> <LabeledProgressRow>
{#each requirement.stats as stat (stat.id)} {#each requirement.stats as stat (stat.id)}
{#if !requirement.isCoarse || stat.required > 0}
<LabeledProgress count={stat.acquired} target={stat.required} name={stat.name} /> <LabeledProgress count={stat.acquired} target={stat.required} name={stat.name} />
{/if}
{/each} {/each}
</LabeledProgressRow> </LabeledProgressRow>
{#each requirement.items as item (item.id)} {#each requirement.items as item (item.id)}

18
usecases/projects/result.go

@ -6,6 +6,7 @@ import (
"git.aiterp.net/stufflog3/stufflog3/usecases/items" "git.aiterp.net/stufflog3/stufflog3/usecases/items"
"git.aiterp.net/stufflog3/stufflog3/usecases/scopes" "git.aiterp.net/stufflog3/stufflog3/usecases/scopes"
"math" "math"
"sort"
"time" "time"
) )
@ -196,18 +197,31 @@ func generateRequirementResult(req entities.Requirement, scope scopes.Result, re
resReq.Items = append(resReq.Items, item) resReq.Items = append(resReq.Items, item)
} }
// Sort items so that they're in order of created, with acquired items being in order of acquired below.
sort.Slice(resReq.Items, func(i, j int) bool {
ii := resReq.Items[i]
ij := resReq.Items[j]
if ii.AcquiredTime != nil && ij.AcquiredTime != nil {
return ii.AcquiredTime.Before(*ij.AcquiredTime)
} else if ii.AcquiredTime != nil && ij.AcquiredTime == nil {
return false
} else if ii.AcquiredTime == nil && ij.AcquiredTime != nil {
return true
}
return ii.CreatedTime.Before(ij.CreatedTime)
})
for _, stat := range scope.Stats { for _, stat := range scope.Stats {
if rs := resStats[stat.ID]; rs != nil && rs.Required > 0 { if rs := resStats[stat.ID]; rs != nil && rs.Required > 0 {
resReq.Stats = append(resReq.Stats, *rs) resReq.Stats = append(resReq.Stats, *rs)
} }
} }
if !req.IsCoarse {
for _, stat := range scope.Stats { for _, stat := range scope.Stats {
if rs := resStats[stat.ID]; rs != nil && rs.Required == 0 { if rs := resStats[stat.ID]; rs != nil && rs.Required == 0 {
resReq.Stats = append(resReq.Stats, *rs) resReq.Stats = append(resReq.Stats, *rs)
} }
} }
}
totalAcquired := 0.0 totalAcquired := 0.0
totalRequired := 0.0 totalRequired := 0.0

Loading…
Cancel
Save