fix: support floats in the opinion profile

pull/21/head
Dominique Merle 3 years ago
parent b72f708409
commit 7235317cdc

@ -31,50 +31,43 @@ func (t *TextOpinionFormatter) Format(
}
proposalsTallies := pollTally.Proposals
// → sort them as well?
biggestRank := 1
for _, proposalResult := range proposalsResults {
if biggestRank < proposalResult.Rank {
biggestRank = proposalResult.Rank
}
}
//amountOfDigitsForRank := countDigits(biggestRank)
amountOfCharactersForProposal := 1
maximumAmountOfCharactersForProposal := 30
amountOfCharactersForProposalName := 1
amountOfCharactersForProposalNameThreshold := 30
for _, proposal := range proposals {
thatProposalLength := measureStringLength(proposal)
if thatProposalLength > amountOfCharactersForProposal {
amountOfCharactersForProposal = thatProposalLength
if thatProposalLength > amountOfCharactersForProposalName {
amountOfCharactersForProposalName = thatProposalLength
}
}
if amountOfCharactersForProposal > maximumAmountOfCharactersForProposal {
amountOfCharactersForProposal = maximumAmountOfCharactersForProposal
if amountOfCharactersForProposalName > amountOfCharactersForProposalNameThreshold {
amountOfCharactersForProposalName = amountOfCharactersForProposalNameThreshold
}
amountOfCharactersForGrade := 1
maximumAmountOfCharactersForGrade := 20
amountOfCharactersForGradeThreshold := 20
for _, grade := range grades {
thatGradeLength := measureStringLength(grade)
if thatGradeLength > amountOfCharactersForGrade {
amountOfCharactersForGrade = thatGradeLength
}
}
if amountOfCharactersForGrade > maximumAmountOfCharactersForGrade {
amountOfCharactersForGrade = maximumAmountOfCharactersForGrade
if amountOfCharactersForGrade > amountOfCharactersForGradeThreshold {
amountOfCharactersForGrade = amountOfCharactersForGradeThreshold
}
maximumAmountOfJudgmentsForGrade := uint64(0)
for gradeIndex := range grades {
cumulatedAmountOfJudgmentsForGrade := uint64(0)
for _, proposalTally := range proposalsTallies {
cumulatedAmountOfJudgmentsForGrade += proposalTally.Tally[gradeIndex]
cumulatedAmountOfJudgmentsForGrade += proposalTally.Tally[gradeIndex] // * uint64(options.Scale)
}
if cumulatedAmountOfJudgmentsForGrade > maximumAmountOfJudgmentsForGrade {
maximumAmountOfJudgmentsForGrade = cumulatedAmountOfJudgmentsForGrade
}
}
amountOfCharactersForTotal := countDigits(maximumAmountOfCharactersForGrade)
amountOfCharactersForTotal := countDigits(int(maximumAmountOfJudgmentsForGrade))
chartWidth := 0
tableWidth := 0
@ -85,7 +78,12 @@ func (t *TextOpinionFormatter) Format(
cumulatedAmountOfJudgmentsForGrade += proposalTally.Tally[gradeIndex]
}
line := fmt.Sprintf("%*d ", amountOfCharactersForTotal, cumulatedAmountOfJudgmentsForGrade)
line := ""
if options.Scale == 1.0 {
line += fmt.Sprintf("%*d ", amountOfCharactersForTotal, cumulatedAmountOfJudgmentsForGrade)
} else {
line += fmt.Sprintf("%*.2f ", amountOfCharactersForTotal, float64(cumulatedAmountOfJudgmentsForGrade)/options.Scale)
}
line += fmt.Sprintf("%*s ", amountOfCharactersForGrade, truncateString(
gradeName,
@ -122,18 +120,6 @@ func (t *TextOpinionFormatter) Format(
out += "\n"
out += makeTextLegend("Legend:", legendDefinitions, tableWidth, expectedWidth)
//out += "\n Legend: "
//for proposalIndex, proposalResult := range proposalsResults {
// if proposalIndex > 0 {
// out += " "
// }
// out += fmt.Sprintf(
// "%s=%s",
// getCharForIndex(proposalResult.Index),
// proposals[proposalResult.Index],
// )
//}
return out, nil
}

Loading…
Cancel
Save