fixing market hours
This commit is contained in:
parent
200116c193
commit
6d2a61b790
3 changed files with 23 additions and 15 deletions
|
@ -90,13 +90,6 @@ func (mhr *MarketHoursRange) GetTicks(vf ValueFormatter) []Tick {
|
||||||
cursor := date.On(mhr.MarketClose, mhr.Min)
|
cursor := date.On(mhr.MarketClose, mhr.Min)
|
||||||
maxClose := date.On(mhr.MarketClose, mhr.Max)
|
maxClose := date.On(mhr.MarketClose, mhr.Max)
|
||||||
|
|
||||||
if mhr.Min.Before(cursor) {
|
|
||||||
ticks = append(ticks, Tick{
|
|
||||||
Value: TimeToFloat64(cursor),
|
|
||||||
Label: vf(cursor),
|
|
||||||
})
|
|
||||||
}
|
|
||||||
|
|
||||||
for date.BeforeDate(cursor, maxClose) {
|
for date.BeforeDate(cursor, maxClose) {
|
||||||
if date.IsWeekDay(cursor.Weekday()) && !mhr.GetHolidayProvider()(cursor) {
|
if date.IsWeekDay(cursor.Weekday()) && !mhr.GetHolidayProvider()(cursor) {
|
||||||
ticks = append(ticks, Tick{
|
ticks = append(ticks, Tick{
|
||||||
|
@ -115,6 +108,7 @@ func (mhr *MarketHoursRange) GetTicks(vf ValueFormatter) []Tick {
|
||||||
Label: vf(endMarketClose),
|
Label: vf(endMarketClose),
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
return ticks
|
return ticks
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -55,7 +55,7 @@ func TestMarketHoursRangeGetTicks(t *testing.T) {
|
||||||
|
|
||||||
ticks := r.GetTicks(TimeValueFormatter)
|
ticks := r.GetTicks(TimeValueFormatter)
|
||||||
assert.NotEmpty(ticks)
|
assert.NotEmpty(ticks)
|
||||||
assert.Len(ticks, 6)
|
assert.Len(ticks, 5)
|
||||||
assert.NotEqual(TimeToFloat64(r.Min), ticks[0].Value)
|
assert.NotEqual(TimeToFloat64(r.Min), ticks[0].Value)
|
||||||
assert.NotEmpty(ticks[0].Label)
|
assert.NotEmpty(ticks[0].Label)
|
||||||
}
|
}
|
||||||
|
|
28
xaxis.go
28
xaxis.go
|
@ -67,21 +67,36 @@ func (xa XAxis) GetGridLines(ticks []Tick) []GridLine {
|
||||||
|
|
||||||
// Measure returns the bounds of the axis.
|
// Measure returns the bounds of the axis.
|
||||||
func (xa XAxis) Measure(r Renderer, canvasBox Box, ra Range, defaults Style, ticks []Tick) Box {
|
func (xa XAxis) Measure(r Renderer, canvasBox Box, ra Range, defaults Style, ticks []Tick) Box {
|
||||||
xa.Style.InheritFrom(defaults).WriteToRenderer(r)
|
tickStyle := xa.Style.InheritFrom(defaults)
|
||||||
sort.Sort(Ticks(ticks))
|
sort.Sort(Ticks(ticks))
|
||||||
|
|
||||||
|
tp := xa.GetTickPosition()
|
||||||
|
|
||||||
var left, right, top, bottom = math.MaxInt32, 0, math.MaxInt32, 0
|
var left, right, top, bottom = math.MaxInt32, 0, math.MaxInt32, 0
|
||||||
for _, t := range ticks {
|
for index, t := range ticks {
|
||||||
v := t.Value
|
v := t.Value
|
||||||
lx := ra.Translate(v)
|
tickStyle.GetTextOptions().WriteToRenderer(r)
|
||||||
tb := r.MeasureText(t.Label)
|
tb := r.MeasureText(t.Label)
|
||||||
|
|
||||||
tx := canvasBox.Left + lx
|
var ltx, rtx int
|
||||||
|
tx := ra.Translate(v)
|
||||||
ty := canvasBox.Bottom + DefaultXAxisMargin + tb.Height()
|
ty := canvasBox.Bottom + DefaultXAxisMargin + tb.Height()
|
||||||
|
switch tp {
|
||||||
|
case TickPositionUnderTick, TickPositionUnset:
|
||||||
|
ltx = tx - tb.Width()>>1
|
||||||
|
rtx = tx + tb.Width()>>1
|
||||||
|
break
|
||||||
|
case TickPositionBetweenTicks:
|
||||||
|
if index > 0 {
|
||||||
|
ltx = ra.Translate(ticks[index-1].Value)
|
||||||
|
rtx = tx
|
||||||
|
}
|
||||||
|
break
|
||||||
|
}
|
||||||
|
|
||||||
top = Math.MinInt(top, canvasBox.Bottom)
|
top = Math.MinInt(top, canvasBox.Bottom)
|
||||||
left = Math.MinInt(left, tx-(tb.Width()>>1))
|
left = Math.MinInt(left, ltx)
|
||||||
right = Math.MaxInt(right, tx+(tb.Width()>>1))
|
right = Math.MaxInt(right, rtx)
|
||||||
bottom = Math.MaxInt(bottom, ty)
|
bottom = Math.MaxInt(bottom, ty)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -139,7 +154,6 @@ func (xa XAxis) Render(r Renderer, canvasBox Box, ra Range, defaults Style, tick
|
||||||
}
|
}
|
||||||
break
|
break
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if xa.GridMajorStyle.Show || xa.GridMinorStyle.Show {
|
if xa.GridMajorStyle.Show || xa.GridMinorStyle.Show {
|
||||||
|
|
Loading…
Reference in a new issue