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).
|
KindaGroup(group).
|
||||||
Nonzero().
|
Nonzero().
|
||||||
Normalize(cpiNormalizer, "9")
|
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
|
case "gra": // graph
|
||||||
dateGrouping := "^[0-9]{4}-[0-9]{2}"
|
dateGrouping := "^[0-9]{4}-[0-9]{2}"
|
||||||
if period := config.Query.Period; !period.Empty() {
|
if period := config.Query.Period; !period.Empty() {
|
||||||
|
|
@ -306,7 +320,7 @@ func Main() {
|
||||||
if shouldPrint {
|
if shouldPrint {
|
||||||
cumulative.PushAll(balances)
|
cumulative.PushAll(balances)
|
||||||
cumulative = cumulative.Nonzero()
|
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:
|
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 {
|
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 {
|
} else {
|
||||||
fmt.Fprintf(w, "%s\t%s\n", date, description)
|
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{}
|
maxes := map[ledger.Currency]float64{}
|
||||||
keys := []string{}
|
keys := []string{}
|
||||||
for k, v := range balances {
|
for k, v := range balances {
|
||||||
|
|
@ -338,9 +352,9 @@ func FPrintBalances(w io.Writer, linePrefix string, balances, cumulatives ledger
|
||||||
|
|
||||||
normalizer := ana.NewDefaultNormalizer()
|
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 {
|
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 {
|
for i, key := range keys {
|
||||||
printableKey := key
|
printableKey := key
|
||||||
|
|
@ -375,9 +389,12 @@ func FPrintBalances(w io.Writer, linePrefix string, balances, cumulatives ledger
|
||||||
for _, currency := range currencies {
|
for _, currency := range currencies {
|
||||||
printableCurrency := currency
|
printableCurrency := currency
|
||||||
format := format
|
format := format
|
||||||
if printableCurrency != "$" {
|
printPrintableCurrency := strings.Count(cumulativeFormat, "%s") > 0
|
||||||
printableCurrency += " "
|
if printPrintableCurrency {
|
||||||
format = strings.ReplaceAll(format, "%.2f", "%.3f")
|
if printableCurrency != "$" {
|
||||||
|
printableCurrency += " "
|
||||||
|
format = strings.ReplaceAll(format, "%.2f", "%.3f")
|
||||||
|
}
|
||||||
}
|
}
|
||||||
if usdOnly && printableCurrency != "$" {
|
if usdOnly && printableCurrency != "$" {
|
||||||
continue
|
continue
|
||||||
|
|
@ -390,12 +407,22 @@ func FPrintBalances(w io.Writer, linePrefix string, balances, cumulatives ledger
|
||||||
cumulative = value
|
cumulative = value
|
||||||
}
|
}
|
||||||
|
|
||||||
if !normalized {
|
if printPrintableCurrency {
|
||||||
fmt.Fprintf(w, format, printableKey, printableCurrency, balances[key][currency], printableCurrency, cumulative)
|
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 {
|
} else {
|
||||||
factor := normalizer.NormalizeFactor(key, date)
|
if !normalized {
|
||||||
trailingMax := maxes[currency] - math.Abs(balances[key][currency])
|
fmt.Fprintf(w, format, printableKey, printableCurrency, balances[key][currency], cumulative)
|
||||||
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, factor*trailingMax)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue