bal prints percents
cicd / ci (push) Successful in 2m40s
Details
cicd / ci (push) Successful in 2m40s
Details
parent
f58053ebe9
commit
0066a267a6
|
|
@ -144,7 +144,21 @@ func Main() {
|
|||
KindaGroup(group).
|
||||
Nonzero().
|
||||
Normalize(cpiNormalizer, "9")
|
||||
FPrintBalances(w, "", balances, nil, config.Query.USDOnly, config.Query.Normalize, time.Now().Format("2006-01-02"), false, maxAccW)
|
||||
|
||||
cumulatives := make(ledger.Balances)
|
||||
var sum float64
|
||||
for key := range balances {
|
||||
usd, ok := balances[key][ledger.USD]
|
||||
if ok {
|
||||
cumulatives[key] = ledger.Balance{ledger.USD: usd}
|
||||
sum += usd
|
||||
}
|
||||
}
|
||||
for key := range cumulatives {
|
||||
cumulatives[key][ledger.USD] = 100 * cumulatives[key][ledger.USD] / sum
|
||||
}
|
||||
|
||||
FPrintBalances(w, "", balances, cumulatives, config.Query.USDOnly, config.Query.Normalize, time.Now().Format("2006-01-02"), false, maxAccW, "%.0f%%%%")
|
||||
case "gra": // graph
|
||||
dateGrouping := "^[0-9]{4}-[0-9]{2}"
|
||||
if period := config.Query.Period; !period.Empty() {
|
||||
|
|
@ -306,7 +320,7 @@ func Main() {
|
|||
if shouldPrint {
|
||||
cumulative.PushAll(balances)
|
||||
cumulative = cumulative.Nonzero()
|
||||
FPrintBalancesFor(transaction[0].Description, w, "\t\t", balances, cumulative, config.Query.USDOnly, config.Query.Normalize, transaction[0].Date, config.Compact, maxAccW)
|
||||
FPrintBalancesFor(transaction[0].Description, w, "\t\t", balances, cumulative, config.Query.USDOnly, config.Query.Normalize, transaction[0].Date, config.Compact, maxAccW, "%s%.2f")
|
||||
}
|
||||
}
|
||||
default:
|
||||
|
|
@ -314,16 +328,16 @@ func Main() {
|
|||
}
|
||||
}
|
||||
|
||||
func FPrintBalancesFor(description string, w io.Writer, linePrefix string, balances, cumulatives ledger.Balances, usdOnly, normalized bool, date string, compact bool, keyW int) {
|
||||
func FPrintBalancesFor(description string, w io.Writer, linePrefix string, balances, cumulatives ledger.Balances, usdOnly, normalized bool, date string, compact bool, keyW int, cumulativeFormat string) {
|
||||
if compact {
|
||||
FPrintBalances(w, date+"\t", balances, cumulatives, usdOnly, normalized, date, compact, keyW)
|
||||
FPrintBalances(w, date+"\t", balances, cumulatives, usdOnly, normalized, date, compact, keyW, cumulativeFormat)
|
||||
} else {
|
||||
fmt.Fprintf(w, "%s\t%s\n", date, description)
|
||||
FPrintBalances(w, linePrefix, balances, cumulatives, usdOnly, normalized, date, compact, keyW)
|
||||
FPrintBalances(w, linePrefix, balances, cumulatives, usdOnly, normalized, date, compact, keyW, cumulativeFormat)
|
||||
}
|
||||
}
|
||||
|
||||
func FPrintBalances(w io.Writer, linePrefix string, balances, cumulatives ledger.Balances, usdOnly, normalized bool, date string, fullKey bool, max int) {
|
||||
func FPrintBalances(w io.Writer, linePrefix string, balances, cumulatives ledger.Balances, usdOnly, normalized bool, date string, fullKey bool, max int, cumulativeFormat string) {
|
||||
maxes := map[ledger.Currency]float64{}
|
||||
keys := []string{}
|
||||
for k, v := range balances {
|
||||
|
|
@ -338,9 +352,9 @@ func FPrintBalances(w io.Writer, linePrefix string, balances, cumulatives ledger
|
|||
|
||||
normalizer := ana.NewDefaultNormalizer()
|
||||
|
||||
format := fmt.Sprintf("%s%%-%ds\t%%s%%.2f (%%s%%.2f)\n", linePrefix, max)
|
||||
format := fmt.Sprintf("%s%%-%ds\t%%s%%.2f (%"+cumulativeFormat+")\n", linePrefix, max)
|
||||
if normalized {
|
||||
format = fmt.Sprintf("%s%%-%ds\t%%s%%.2f (%%s%%.2f (%%.2f @%%.2f (%%s%%.0f)))\n", linePrefix, max)
|
||||
format = fmt.Sprintf("%s%%-%ds\t%%s%%.2f (%%s%%.2f (%%.2f @%%.2f (%"+cumulativeFormat+")))\n", linePrefix, max)
|
||||
}
|
||||
for i, key := range keys {
|
||||
printableKey := key
|
||||
|
|
@ -375,9 +389,12 @@ func FPrintBalances(w io.Writer, linePrefix string, balances, cumulatives ledger
|
|||
for _, currency := range currencies {
|
||||
printableCurrency := currency
|
||||
format := format
|
||||
if printableCurrency != "$" {
|
||||
printableCurrency += " "
|
||||
format = strings.ReplaceAll(format, "%.2f", "%.3f")
|
||||
printPrintableCurrency := strings.Count(cumulativeFormat, "%s") > 0
|
||||
if printPrintableCurrency {
|
||||
if printableCurrency != "$" {
|
||||
printableCurrency += " "
|
||||
format = strings.ReplaceAll(format, "%.2f", "%.3f")
|
||||
}
|
||||
}
|
||||
if usdOnly && printableCurrency != "$" {
|
||||
continue
|
||||
|
|
@ -390,12 +407,22 @@ func FPrintBalances(w io.Writer, linePrefix string, balances, cumulatives ledger
|
|||
cumulative = value
|
||||
}
|
||||
|
||||
if !normalized {
|
||||
fmt.Fprintf(w, format, printableKey, printableCurrency, balances[key][currency], printableCurrency, cumulative)
|
||||
if printPrintableCurrency {
|
||||
if !normalized {
|
||||
fmt.Fprintf(w, format, printableKey, printableCurrency, balances[key][currency], printableCurrency, cumulative)
|
||||
} else {
|
||||
factor := normalizer.NormalizeFactor(key, date)
|
||||
trailingMax := maxes[currency] - math.Abs(balances[key][currency])
|
||||
fmt.Fprintf(w, format, printableKey, printableCurrency, balances[key][currency], printableCurrency, cumulative, cumulative*factor, factor, printableCurrency, factor*trailingMax)
|
||||
}
|
||||
} else {
|
||||
factor := normalizer.NormalizeFactor(key, date)
|
||||
trailingMax := maxes[currency] - math.Abs(balances[key][currency])
|
||||
fmt.Fprintf(w, format, printableKey, printableCurrency, balances[key][currency], printableCurrency, cumulative, cumulative*factor, factor, printableCurrency, factor*trailingMax)
|
||||
if !normalized {
|
||||
fmt.Fprintf(w, format, printableKey, printableCurrency, balances[key][currency], cumulative)
|
||||
} else {
|
||||
factor := normalizer.NormalizeFactor(key, date)
|
||||
trailingMax := maxes[currency] - math.Abs(balances[key][currency])
|
||||
fmt.Fprintf(w, format, printableKey, printableCurrency, balances[key][currency], printableCurrency, cumulative, cumulative*factor, factor, factor*trailingMax)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue