Browse Source

add item-based progress bar on requirements with only 0-required stats.

master
Gisle Aune 3 years ago
parent
commit
ed828b0227
  1. 2
      frontend/src/lib/components/project/RequirementSection.svelte
  2. 2
      frontend/src/lib/modals/ItemCreateModal.svelte
  3. 19
      usecases/projects/result.go

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

@ -9,7 +9,7 @@
import LabeledProgressRow from "../common/LabeledProgressRow.svelte"; import LabeledProgressRow from "../common/LabeledProgressRow.svelte";
import { STATUS_ICONS } from "../common/StatusIcon.svelte"; import { STATUS_ICONS } from "../common/StatusIcon.svelte";
import ItemEntry from "./ItemSubSection.svelte"; import ItemEntry from "./ItemSubSection.svelte";
import Icon from "../layout/Icon.svelte";
import Icon from "../layout/Icon.svelte";
export let requirement: Requirement; export let requirement: Requirement;
</script> </script>

2
frontend/src/lib/modals/ItemCreateModal.svelte

@ -79,7 +79,7 @@ import { getSprintListContext } from "$lib/components/contexts/SprintListContext
function initEdit(current: Item, requirement?: Requirement, scope?: Scope) { function initEdit(current: Item, requirement?: Requirement, scope?: Scope) {
const req = $project.requirements?.find(r => r.id === current.requirementId); const req = $project.requirements?.find(r => r.id === current.requirementId);
let ctxStats = requirement?.stats.map(s => ({statId: s.id, required: 0, acquired: 0})); let ctxStats = requirement?.stats.map(s => ({statId: s.id, required: 0, acquired: 0}));
if (ctxStats == null) {
if (ctxStats == null || ctxStats.length === 0) {
ctxStats = scope.stats.map(s => ({statId: s.id, required: 0, acquired: 0})) ctxStats = scope.stats.map(s => ({statId: s.id, required: 0, acquired: 0}))
} }
const inputStats = current.stats.map(s => ({statId: s.id, acquired: s.acquired, required: s.required})); const inputStats = current.stats.map(s => ({statId: s.id, acquired: s.acquired, required: s.required}));

19
usecases/projects/result.go

@ -233,6 +233,15 @@ func generateRequirementResult(req entities.Requirement, scope scopes.Result, re
} }
} }
hasRequiredStats := false
for _, stat := range resReq.Stats {
if stat.Required > 0 {
hasRequiredStats = true
break
}
}
if hasRequiredStats {
totalAcquired := 0.0 totalAcquired := 0.0
totalRequired := 0.0 totalRequired := 0.0
totalPlanned := 0.0 totalPlanned := 0.0
@ -246,6 +255,16 @@ func generateRequirementResult(req entities.Requirement, scope scopes.Result, re
resReq.TotalRequired += totalRequired resReq.TotalRequired += totalRequired
resReq.TotalAcquired += math.Min(totalAcquired, totalRequired) resReq.TotalAcquired += math.Min(totalAcquired, totalRequired)
resReq.TotalPlanned += math.Min(totalPlanned, totalRequired) resReq.TotalPlanned += math.Min(totalPlanned, totalRequired)
} else {
for _, item := range resReq.Items {
if item.AcquiredTime != nil {
resReq.TotalAcquired += item.WeightedRequired
}
resReq.TotalRequired += item.WeightedRequired
}
resReq.TotalPlanned = resReq.TotalRequired
}
return resReq return resReq
} }
Loading…
Cancel
Save