Helper API refactor (#40)
* api cleaup * updates * wtf * updates * snapshot. * tweaks * snapshot * api tweaks. * updates * updates * updates * changes. * updates * updates * sequence => seq * dont need to use curl, just using wget * fixing examples
This commit is contained in:
parent
43212f871f
commit
03708a90ef
100 changed files with 1687 additions and 1055 deletions
|
|
@ -3,6 +3,9 @@ package chart
|
|||
import (
|
||||
"fmt"
|
||||
"time"
|
||||
|
||||
"github.com/wcharczuk/go-chart/seq"
|
||||
"github.com/wcharczuk/go-chart/util"
|
||||
)
|
||||
|
||||
// MarketHoursRange is a special type of range that compresses a time range into just the
|
||||
|
|
@ -14,7 +17,7 @@ type MarketHoursRange struct {
|
|||
MarketOpen time.Time
|
||||
MarketClose time.Time
|
||||
|
||||
HolidayProvider HolidayProvider
|
||||
HolidayProvider util.HolidayProvider
|
||||
|
||||
ValueFormatter ValueFormatter
|
||||
|
||||
|
|
@ -39,17 +42,17 @@ func (mhr MarketHoursRange) IsZero() bool {
|
|||
|
||||
// GetMin returns the min value.
|
||||
func (mhr MarketHoursRange) GetMin() float64 {
|
||||
return Time.ToFloat64(mhr.Min)
|
||||
return util.Time.ToFloat64(mhr.Min)
|
||||
}
|
||||
|
||||
// GetMax returns the max value.
|
||||
func (mhr MarketHoursRange) GetMax() float64 {
|
||||
return Time.ToFloat64(mhr.GetEffectiveMax())
|
||||
return util.Time.ToFloat64(mhr.GetEffectiveMax())
|
||||
}
|
||||
|
||||
// GetEffectiveMax gets either the close on the max, or the max itself.
|
||||
func (mhr MarketHoursRange) GetEffectiveMax() time.Time {
|
||||
maxClose := Date.On(mhr.MarketClose, mhr.Max)
|
||||
maxClose := util.Date.On(mhr.MarketClose, mhr.Max)
|
||||
if maxClose.After(mhr.Max) {
|
||||
return maxClose
|
||||
}
|
||||
|
|
@ -58,13 +61,13 @@ func (mhr MarketHoursRange) GetEffectiveMax() time.Time {
|
|||
|
||||
// SetMin sets the min value.
|
||||
func (mhr *MarketHoursRange) SetMin(min float64) {
|
||||
mhr.Min = Time.FromFloat64(min)
|
||||
mhr.Min = util.Time.FromFloat64(min)
|
||||
mhr.Min = mhr.Min.In(mhr.GetTimezone())
|
||||
}
|
||||
|
||||
// SetMax sets the max value.
|
||||
func (mhr *MarketHoursRange) SetMax(max float64) {
|
||||
mhr.Max = Time.FromFloat64(max)
|
||||
mhr.Max = util.Time.FromFloat64(max)
|
||||
mhr.Max = mhr.Max.In(mhr.GetTimezone())
|
||||
}
|
||||
|
||||
|
|
@ -86,9 +89,9 @@ func (mhr *MarketHoursRange) SetDomain(domain int) {
|
|||
}
|
||||
|
||||
// GetHolidayProvider coalesces a userprovided holiday provider and the date.DefaultHolidayProvider.
|
||||
func (mhr MarketHoursRange) GetHolidayProvider() HolidayProvider {
|
||||
func (mhr MarketHoursRange) GetHolidayProvider() util.HolidayProvider {
|
||||
if mhr.HolidayProvider == nil {
|
||||
return defaultHolidayProvider
|
||||
return func(_ time.Time) bool { return false }
|
||||
}
|
||||
return mhr.HolidayProvider
|
||||
}
|
||||
|
|
@ -96,7 +99,7 @@ func (mhr MarketHoursRange) GetHolidayProvider() HolidayProvider {
|
|||
// GetMarketOpen returns the market open time.
|
||||
func (mhr MarketHoursRange) GetMarketOpen() time.Time {
|
||||
if mhr.MarketOpen.IsZero() {
|
||||
return NYSEOpen()
|
||||
return util.NYSEOpen()
|
||||
}
|
||||
return mhr.MarketOpen
|
||||
}
|
||||
|
|
@ -104,7 +107,7 @@ func (mhr MarketHoursRange) GetMarketOpen() time.Time {
|
|||
// GetMarketClose returns the market close time.
|
||||
func (mhr MarketHoursRange) GetMarketClose() time.Time {
|
||||
if mhr.MarketClose.IsZero() {
|
||||
return NYSEClose()
|
||||
return util.NYSEClose()
|
||||
}
|
||||
return mhr.MarketClose
|
||||
}
|
||||
|
|
@ -112,31 +115,31 @@ func (mhr MarketHoursRange) GetMarketClose() time.Time {
|
|||
// GetTicks returns the ticks for the range.
|
||||
// This is to override the default continous ticks that would be generated for the range.
|
||||
func (mhr *MarketHoursRange) GetTicks(r Renderer, defaults Style, vf ValueFormatter) []Tick {
|
||||
times := Sequence.MarketHours(mhr.Min, mhr.Max, mhr.GetMarketOpen(), mhr.GetMarketClose(), mhr.GetHolidayProvider())
|
||||
times := seq.Time.MarketHours(mhr.Min, mhr.Max, mhr.GetMarketOpen(), mhr.GetMarketClose(), mhr.GetHolidayProvider())
|
||||
timesWidth := mhr.measureTimes(r, defaults, vf, times)
|
||||
if timesWidth <= mhr.Domain {
|
||||
return mhr.makeTicks(vf, times)
|
||||
}
|
||||
|
||||
times = Sequence.MarketHourQuarters(mhr.Min, mhr.Max, mhr.GetMarketOpen(), mhr.GetMarketClose(), mhr.GetHolidayProvider())
|
||||
times = seq.Time.MarketHourQuarters(mhr.Min, mhr.Max, mhr.GetMarketOpen(), mhr.GetMarketClose(), mhr.GetHolidayProvider())
|
||||
timesWidth = mhr.measureTimes(r, defaults, vf, times)
|
||||
if timesWidth <= mhr.Domain {
|
||||
return mhr.makeTicks(vf, times)
|
||||
}
|
||||
|
||||
times = Sequence.MarketDayCloses(mhr.Min, mhr.Max, mhr.GetMarketOpen(), mhr.GetMarketClose(), mhr.GetHolidayProvider())
|
||||
times = seq.Time.MarketDayCloses(mhr.Min, mhr.Max, mhr.GetMarketOpen(), mhr.GetMarketClose(), mhr.GetHolidayProvider())
|
||||
timesWidth = mhr.measureTimes(r, defaults, vf, times)
|
||||
if timesWidth <= mhr.Domain {
|
||||
return mhr.makeTicks(vf, times)
|
||||
}
|
||||
|
||||
times = Sequence.MarketDayAlternateCloses(mhr.Min, mhr.Max, mhr.GetMarketOpen(), mhr.GetMarketClose(), mhr.GetHolidayProvider())
|
||||
times = seq.Time.MarketDayAlternateCloses(mhr.Min, mhr.Max, mhr.GetMarketOpen(), mhr.GetMarketClose(), mhr.GetHolidayProvider())
|
||||
timesWidth = mhr.measureTimes(r, defaults, vf, times)
|
||||
if timesWidth <= mhr.Domain {
|
||||
return mhr.makeTicks(vf, times)
|
||||
}
|
||||
|
||||
times = Sequence.MarketDayMondayCloses(mhr.Min, mhr.Max, mhr.GetMarketOpen(), mhr.GetMarketClose(), mhr.GetHolidayProvider())
|
||||
times = seq.Time.MarketDayMondayCloses(mhr.Min, mhr.Max, mhr.GetMarketOpen(), mhr.GetMarketClose(), mhr.GetHolidayProvider())
|
||||
timesWidth = mhr.measureTimes(r, defaults, vf, times)
|
||||
if timesWidth <= mhr.Domain {
|
||||
return mhr.makeTicks(vf, times)
|
||||
|
|
@ -165,7 +168,7 @@ func (mhr *MarketHoursRange) makeTicks(vf ValueFormatter, times []time.Time) []T
|
|||
ticks := make([]Tick, len(times))
|
||||
for index, t := range times {
|
||||
ticks[index] = Tick{
|
||||
Value: Time.ToFloat64(t),
|
||||
Value: util.Time.ToFloat64(t),
|
||||
Label: vf(t),
|
||||
}
|
||||
}
|
||||
|
|
@ -178,10 +181,10 @@ func (mhr MarketHoursRange) String() string {
|
|||
|
||||
// Translate maps a given value into the ContinuousRange space.
|
||||
func (mhr MarketHoursRange) Translate(value float64) int {
|
||||
valueTime := Time.FromFloat64(value)
|
||||
valueTimeEastern := valueTime.In(Date.Eastern())
|
||||
totalSeconds := Date.CalculateMarketSecondsBetween(mhr.Min, mhr.GetEffectiveMax(), mhr.GetMarketOpen(), mhr.GetMarketClose(), mhr.HolidayProvider)
|
||||
valueDelta := Date.CalculateMarketSecondsBetween(mhr.Min, valueTimeEastern, mhr.GetMarketOpen(), mhr.GetMarketClose(), mhr.HolidayProvider)
|
||||
valueTime := util.Time.FromFloat64(value)
|
||||
valueTimeEastern := valueTime.In(util.Date.Eastern())
|
||||
totalSeconds := util.Date.CalculateMarketSecondsBetween(mhr.Min, mhr.GetEffectiveMax(), mhr.GetMarketOpen(), mhr.GetMarketClose(), mhr.HolidayProvider)
|
||||
valueDelta := util.Date.CalculateMarketSecondsBetween(mhr.Min, valueTimeEastern, mhr.GetMarketOpen(), mhr.GetMarketClose(), mhr.HolidayProvider)
|
||||
translated := int((float64(valueDelta) / float64(totalSeconds)) * float64(mhr.Domain))
|
||||
|
||||
if mhr.IsDescending() {
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue