added pinpoint adjustment for the legend
This commit is contained in:
parent
ae6e895d8a
commit
88a935d6d3
|
@ -8,7 +8,7 @@ runcharts:
|
||||||
script: curl -o /dev/null -s -w '%{time_total}' https://search.yahoo.com/
|
script: curl -o /dev/null -s -w '%{time_total}' https://search.yahoo.com/
|
||||||
- label: BING
|
- label: BING
|
||||||
script: curl -o /dev/null -s -w '%{time_total}' https://www.bing.com/
|
script: curl -o /dev/null -s -w '%{time_total}' https://www.bing.com/
|
||||||
refresh-rate-ms: 500
|
refresh-rate-ms: 200
|
||||||
decimal-places: 3
|
decimal-places: 3
|
||||||
alert:
|
alert:
|
||||||
value:
|
value:
|
||||||
|
@ -20,7 +20,7 @@ runcharts:
|
||||||
beep: true
|
beep: true
|
||||||
legend:
|
legend:
|
||||||
enabled: true
|
enabled: true
|
||||||
details: true
|
details: false
|
||||||
position:
|
position:
|
||||||
x: 0
|
x: 0
|
||||||
y: 0
|
y: 0
|
||||||
|
|
|
@ -97,7 +97,7 @@ func (c *RunChart) renderAxes(buffer *ui.Buffer) {
|
||||||
|
|
||||||
func (c *RunChart) getTimeRange(linesCount int) TimeRange {
|
func (c *RunChart) getTimeRange(linesCount int) TimeRange {
|
||||||
|
|
||||||
if c.mode == Pinpoint {
|
if c.mode == ModePinpoint {
|
||||||
return c.grid.timeRange
|
return c.grid.timeRange
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -8,10 +8,11 @@ import (
|
||||||
)
|
)
|
||||||
|
|
||||||
const (
|
const (
|
||||||
xAxisLegendIndent = 10
|
xAxisLegendIndent = 10
|
||||||
yAxisLegendIndent = 1
|
yAxisLegendIndent = 1
|
||||||
heightWithLabelOnly = 3
|
heightOnDefault = 2
|
||||||
heightWithDetails = 7
|
heightOnPinpoint = 4
|
||||||
|
heightOnDetails = 6
|
||||||
)
|
)
|
||||||
|
|
||||||
type Legend struct {
|
type Legend struct {
|
||||||
|
@ -25,9 +26,12 @@ func (c *RunChart) renderLegend(buffer *ui.Buffer, rectangle image.Rectangle) {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
height := heightWithLabelOnly
|
height := heightOnDefault
|
||||||
if c.legend.Details {
|
|
||||||
height = heightWithDetails
|
if c.mode == ModePinpoint {
|
||||||
|
height = heightOnPinpoint
|
||||||
|
} else if c.legend.Details {
|
||||||
|
height = heightOnDetails
|
||||||
}
|
}
|
||||||
|
|
||||||
rowCount := (c.Dx() - yAxisLegendIndent) / (height + yAxisLegendIndent)
|
rowCount := (c.Dx() - yAxisLegendIndent) / (height + yAxisLegendIndent)
|
||||||
|
@ -44,8 +48,9 @@ func (c *RunChart) renderLegend(buffer *ui.Buffer, rectangle image.Rectangle) {
|
||||||
|
|
||||||
line := c.lines[row+rowCount*col]
|
line := c.lines[row+rowCount*col]
|
||||||
extrema := getLineValueExtrema(line.points)
|
extrema := getLineValueExtrema(line.points)
|
||||||
|
|
||||||
x := c.Inner.Max.X - (columnWidth+xAxisLegendIndent)*(col+1)
|
x := c.Inner.Max.X - (columnWidth+xAxisLegendIndent)*(col+1)
|
||||||
y := c.Inner.Min.Y + yAxisLegendIndent + row*(height)
|
y := c.Inner.Min.Y + yAxisLegendIndent + row*height
|
||||||
|
|
||||||
titleStyle := ui.NewStyle(line.color)
|
titleStyle := ui.NewStyle(line.color)
|
||||||
detailsStyle := ui.NewStyle(ui.ColorWhite)
|
detailsStyle := ui.NewStyle(ui.ColorWhite)
|
||||||
|
@ -53,6 +58,10 @@ func (c *RunChart) renderLegend(buffer *ui.Buffer, rectangle image.Rectangle) {
|
||||||
buffer.SetString(string(ui.DOT), titleStyle, image.Pt(x-2, y))
|
buffer.SetString(string(ui.DOT), titleStyle, image.Pt(x-2, y))
|
||||||
buffer.SetString(line.label, titleStyle, image.Pt(x, y))
|
buffer.SetString(line.label, titleStyle, image.Pt(x, y))
|
||||||
|
|
||||||
|
if c.mode == ModePinpoint {
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
|
||||||
if !c.legend.Details {
|
if !c.legend.Details {
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
|
|
|
@ -30,8 +30,8 @@ const (
|
||||||
type Mode int
|
type Mode int
|
||||||
|
|
||||||
const (
|
const (
|
||||||
Default Mode = 0
|
ModeDefault Mode = 0
|
||||||
Pinpoint Mode = 1
|
ModePinpoint Mode = 1
|
||||||
)
|
)
|
||||||
|
|
||||||
type RunChart struct {
|
type RunChart struct {
|
||||||
|
@ -79,7 +79,7 @@ func NewRunChart(title string, precision int, refreshRateMs int, legend Legend)
|
||||||
timescale: calculateTimescale(refreshRateMs),
|
timescale: calculateTimescale(refreshRateMs),
|
||||||
mutex: &sync.Mutex{},
|
mutex: &sync.Mutex{},
|
||||||
precision: precision,
|
precision: precision,
|
||||||
mode: Default,
|
mode: ModeDefault,
|
||||||
legend: legend,
|
legend: legend,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -230,7 +230,7 @@ func (c *RunChart) renderLines(buffer *ui.Buffer, drawArea image.Rectangle) {
|
||||||
|
|
||||||
canvas.Draw(buffer)
|
canvas.Draw(buffer)
|
||||||
|
|
||||||
if c.mode == Pinpoint {
|
if c.mode == ModePinpoint {
|
||||||
for lineIndex, point := range selectionPoints {
|
for lineIndex, point := range selectionPoints {
|
||||||
buffer.SetCell(ui.NewCell(console.SymbolSelection, ui.NewStyle(c.lines[lineIndex].color)), point)
|
buffer.SetCell(ui.NewCell(console.SymbolSelection, ui.NewStyle(c.lines[lineIndex].color)), point)
|
||||||
if c.lines[lineIndex].selection == 0 {
|
if c.lines[lineIndex].selection == 0 {
|
||||||
|
@ -285,8 +285,8 @@ func (c *RunChart) getMaxValueLength() int {
|
||||||
|
|
||||||
func (c *RunChart) MoveSelection(shift int) {
|
func (c *RunChart) MoveSelection(shift int) {
|
||||||
|
|
||||||
if c.mode == Default {
|
if c.mode == ModeDefault {
|
||||||
c.mode = Pinpoint
|
c.mode = ModePinpoint
|
||||||
c.selection = getMidRangeTime(c.grid.timeRange)
|
c.selection = getMidRangeTime(c.grid.timeRange)
|
||||||
return
|
return
|
||||||
} else {
|
} else {
|
||||||
|
@ -304,8 +304,8 @@ func (c *RunChart) MoveSelection(shift int) {
|
||||||
}
|
}
|
||||||
|
|
||||||
func (c *RunChart) DisableSelection() {
|
func (c *RunChart) DisableSelection() {
|
||||||
if c.mode == Pinpoint {
|
if c.mode == ModePinpoint {
|
||||||
c.mode = Default
|
c.mode = ModeDefault
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue