Merge pull request #118 from bcicen/barchart-numfmt
Allow for custom number formatting function in barchart
This commit is contained in:
commit
8d4faad061
@ -25,6 +25,7 @@ type BarChart struct {
|
|||||||
BarColor Attribute
|
BarColor Attribute
|
||||||
TextColor Attribute
|
TextColor Attribute
|
||||||
NumColor Attribute
|
NumColor Attribute
|
||||||
|
NumFmt func(int) string
|
||||||
Data []int
|
Data []int
|
||||||
DataLabels []string
|
DataLabels []string
|
||||||
BarWidth int
|
BarWidth int
|
||||||
@ -43,6 +44,7 @@ func NewBarChart() *BarChart {
|
|||||||
bc.BarColor = ThemeAttr("barchart.bar.bg")
|
bc.BarColor = ThemeAttr("barchart.bar.bg")
|
||||||
bc.NumColor = ThemeAttr("barchart.num.fg")
|
bc.NumColor = ThemeAttr("barchart.num.fg")
|
||||||
bc.TextColor = ThemeAttr("barchart.text.fg")
|
bc.TextColor = ThemeAttr("barchart.text.fg")
|
||||||
|
bc.NumFmt = func(n int) string { return fmt.Sprint(n) }
|
||||||
bc.BarGap = 1
|
bc.BarGap = 1
|
||||||
bc.BarWidth = 3
|
bc.BarWidth = 3
|
||||||
bc.CellChar = ' '
|
bc.CellChar = ' '
|
||||||
@ -57,7 +59,7 @@ func (bc *BarChart) layout() {
|
|||||||
for i := 0; i < bc.numBar && i < len(bc.DataLabels) && i < len(bc.Data); i++ {
|
for i := 0; i < bc.numBar && i < len(bc.DataLabels) && i < len(bc.Data); i++ {
|
||||||
bc.labels[i] = trimStr2Runes(bc.DataLabels[i], bc.BarWidth)
|
bc.labels[i] = trimStr2Runes(bc.DataLabels[i], bc.BarWidth)
|
||||||
n := bc.Data[i]
|
n := bc.Data[i]
|
||||||
s := fmt.Sprint(n)
|
s := bc.NumFmt(n)
|
||||||
bc.dataNum[i] = trimStr2Runes(s, bc.BarWidth)
|
bc.dataNum[i] = trimStr2Runes(s, bc.BarWidth)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -30,6 +30,7 @@ type MBarChart struct {
|
|||||||
BarColor [NumberofColors]Attribute
|
BarColor [NumberofColors]Attribute
|
||||||
TextColor Attribute
|
TextColor Attribute
|
||||||
NumColor [NumberofColors]Attribute
|
NumColor [NumberofColors]Attribute
|
||||||
|
NumFmt func(int) string
|
||||||
Data [NumberofColors][]int
|
Data [NumberofColors][]int
|
||||||
DataLabels []string
|
DataLabels []string
|
||||||
BarWidth int
|
BarWidth int
|
||||||
@ -51,6 +52,7 @@ func NewMBarChart() *MBarChart {
|
|||||||
bc.BarColor[0] = ThemeAttr("mbarchart.bar.bg")
|
bc.BarColor[0] = ThemeAttr("mbarchart.bar.bg")
|
||||||
bc.NumColor[0] = ThemeAttr("mbarchart.num.fg")
|
bc.NumColor[0] = ThemeAttr("mbarchart.num.fg")
|
||||||
bc.TextColor = ThemeAttr("mbarchart.text.fg")
|
bc.TextColor = ThemeAttr("mbarchart.text.fg")
|
||||||
|
bc.NumFmt = func(n int) string { return fmt.Sprint(n) }
|
||||||
bc.BarGap = 1
|
bc.BarGap = 1
|
||||||
bc.BarWidth = 3
|
bc.BarWidth = 3
|
||||||
return bc
|
return bc
|
||||||
@ -93,7 +95,7 @@ func (bc *MBarChart) layout() {
|
|||||||
//For each stack of bar calculate the rune
|
//For each stack of bar calculate the rune
|
||||||
for j := 0; j < LabelLen && i < bc.numBar; j++ {
|
for j := 0; j < LabelLen && i < bc.numBar; j++ {
|
||||||
n := bc.Data[i][j]
|
n := bc.Data[i][j]
|
||||||
s := fmt.Sprint(n)
|
s := bc.NumFmt(n)
|
||||||
bc.dataNum[i][j] = trimStr2Runes(s, bc.BarWidth)
|
bc.dataNum[i][j] = trimStr2Runes(s, bc.BarWidth)
|
||||||
}
|
}
|
||||||
//If color is not defined by default then populate a color that is different from the previous bar
|
//If color is not defined by default then populate a color that is different from the previous bar
|
||||||
@ -127,7 +129,7 @@ func (bc *MBarChart) layout() {
|
|||||||
|
|
||||||
//Finally Calculate max sale
|
//Finally Calculate max sale
|
||||||
if bc.ShowScale {
|
if bc.ShowScale {
|
||||||
s := fmt.Sprintf("%d", bc.max)
|
s := bc.NumFmt(bc.max)
|
||||||
bc.maxScale = trimStr2Runes(s, len(s))
|
bc.maxScale = trimStr2Runes(s, len(s))
|
||||||
bc.scale = float64(bc.max) / float64(bc.innerArea.Dy()-2)
|
bc.scale = float64(bc.max) / float64(bc.innerArea.Dy()-2)
|
||||||
} else {
|
} else {
|
||||||
|
Loading…
Reference in New Issue
Block a user