summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMiguel Mota <hello@miguelmota.com>2021-08-22 04:18:48 -0700
committerMiguel Mota <hello@miguelmota.com>2021-08-22 04:18:48 -0700
commit1c14561662712fa8ddd863bae6fe7d05e7fdc135 (patch)
treef034b0b4c1e6d18080b13b7dd3522fb0df6c1fdb
parent56084e44a3dca0449bca1e7483da8510b8004b0a (diff)
parentbecca5e46c95137b12436085f748847dbd8e0d3e (diff)
Merge branch 'simon-anz-feature/configurable-chart-range'
-rw-r--r--cointop/cointop.go2
-rw-r--r--cointop/config.go69
-rw-r--r--docs/content/config.md1
-rw-r--r--docs/content/faq.md6
4 files changed, 54 insertions, 24 deletions
diff --git a/cointop/cointop.go b/cointop/cointop.go
index 40dccf8..17a9843 100644
--- a/cointop/cointop.go
+++ b/cointop/cointop.go
@@ -44,6 +44,7 @@ type State struct {
coinsTableColumns []string
convertMenuVisible bool
defaultView string
+ defaultChartRange string
// DEPRECATED: favorites by 'symbol' is deprecated because of collisions.
favoritesBySymbol map[string]bool
@@ -243,6 +244,7 @@ func NewCointop(config *Config) (*Cointop, error) {
cacheDir: DefaultCacheDir,
coinsTableColumns: DefaultCoinTableHeaders,
currencyConversion: DefaultCurrency,
+ defaultChartRange: DefaultChartRange,
// DEPRECATED: favorites by 'symbol' is deprecated because of collisions. Kept for backward compatibility.
favoritesBySymbol: make(map[string]bool),
favorites: make(map[string]bool),
diff --git a/cointop/config.go b/cointop/config.go
index 9464e4d..e158768 100644
--- a/cointop/config.go
+++ b/cointop/config.go
@@ -31,18 +31,19 @@ var possibleConfigPaths = []string{
}
type config struct {
- Shortcuts map[string]interface{} `toml:"shortcuts"`
- Favorites map[string]interface{} `toml:"favorites"`
- Portfolio map[string]interface{} `toml:"portfolio"`
- PriceAlerts map[string]interface{} `toml:"price_alerts"`
- Currency interface{} `toml:"currency"`
- DefaultView interface{} `toml:"default_view"`
- CoinMarketCap map[string]interface{} `toml:"coinmarketcap"`
- API interface{} `toml:"api"`
- Colorscheme interface{} `toml:"colorscheme"`
- RefreshRate interface{} `toml:"refresh_rate"`
- CacheDir interface{} `toml:"cache_dir"`
- Table map[string]interface{} `toml:"table"`
+ Shortcuts map[string]interface{} `toml:"shortcuts"`
+ Favorites map[string]interface{} `toml:"favorites"`
+ Portfolio map[string]interface{} `toml:"portfolio"`
+ PriceAlerts map[string]interface{} `toml:"price_alerts"`
+ Currency interface{} `toml:"currency"`
+ DefaultView interface{} `toml:"default_view"`
+ DefaultChartRange interface{} `toml:"default_chart_range"`
+ CoinMarketCap map[string]interface{} `toml:"coinmarketcap"`
+ API interface{} `toml:"api"`
+ Colorscheme interface{} `toml:"colorscheme"`
+ RefreshRate interface{} `toml:"refresh_rate"`
+ CacheDir interface{} `toml:"cache_dir"`
+ Table map[string]interface{} `toml:"table"`
}
// SetupConfig loads config file
@@ -69,6 +70,9 @@ func (ct *Cointop) SetupConfig() error {
if err := ct.loadDefaultViewFromConfig(); err != nil {
return err
}
+ if err := ct.loadDefaultChartRangeFromConfig(); err != nil {
+ return err
+ }
if err := ct.loadAPIKeysFromConfig(); err != nil {
return err
}
@@ -255,6 +259,7 @@ func (ct *Cointop) configToToml() ([]byte, error) {
var currencyIfc interface{} = ct.State.currencyConversion
var defaultViewIfc interface{} = ct.State.defaultView
+ var defaultChartRangeIfc interface{} = ct.State.defaultChartRange
var colorschemeIfc interface{} = ct.colorschemeName
var refreshRateIfc interface{} = uint(ct.State.refreshRate.Seconds())
var cacheDirIfc interface{} = ct.State.cacheDir
@@ -289,18 +294,19 @@ func (ct *Cointop) configToToml() ([]byte, error) {
tableMapIfc["keep_row_focus_on_sort"] = keepRowFocusOnSortIfc
var inputs = &config{
- API: apiChoiceIfc,
- Colorscheme: colorschemeIfc,
- CoinMarketCap: cmcIfc,
- Currency: currencyIfc,
- DefaultView: defaultViewIfc,
- Favorites: favoritesMapIfc,
- RefreshRate: refreshRateIfc,
- Shortcuts: shortcutsIfcs,
- Portfolio: portfolioIfc,
- PriceAlerts: priceAlertsMapIfc,
- CacheDir: cacheDirIfc,
- Table: tableMapIfc,
+ API: apiChoiceIfc,
+ Colorscheme: colorschemeIfc,
+ CoinMarketCap: cmcIfc,
+ Currency: currencyIfc,
+ DefaultView: defaultViewIfc,
+ DefaultChartRange: defaultChartRangeIfc,
+ Favorites: favoritesMapIfc,
+ RefreshRate: refreshRateIfc,
+ Shortcuts: shortcutsIfcs,
+ Portfolio: portfolioIfc,
+ PriceAlerts: priceAlertsMapIfc,
+ CacheDir: cacheDirIfc,
+ Table: tableMapIfc,
}
var b bytes.Buffer
@@ -399,6 +405,21 @@ func (ct *Cointop) loadDefaultViewFromConfig() error {
return nil
}
+// LoadDefaultChartRangeFromConfig loads default chart range from config file to struct
+func (ct *Cointop) loadDefaultChartRangeFromConfig() error {
+ ct.debuglog("loadDefaultChartRangeFromConfig()")
+ if defaultChartRange, ok := ct.config.DefaultChartRange.(string); ok {
+ // validate configured value
+ _, present := ct.chartRangesMap[defaultChartRange]
+ if !present {
+ defaultChartRange = DefaultChartRange
+ }
+ ct.State.defaultChartRange = defaultChartRange
+ ct.State.selectedChartRange = defaultChartRange
+ }
+ return nil
+}
+
// LoadAPIKeysFromConfig loads API keys from config file to struct
func (ct *Cointop) loadAPIKeysFromConfig() error {
ct.debuglog("loadAPIKeysFromConfig()")
diff --git a/docs/content/config.md b/docs/content/config.md
index 275aea0..6c6dac2 100644
--- a/docs/content/config.md
+++ b/docs/content/config.md
@@ -39,6 +39,7 @@ You can configure the actions you want for each key in `config.toml`:
```toml
currency = "USD"
default_view = ""
+default_chart_range = "1Y"
api = "coingecko"
colorscheme = "cointop"
refresh_rate = 60
diff --git a/docs/content/faq.md b/docs/content/faq.md
index 65c42bc..605e2f3 100644
--- a/docs/content/faq.md
+++ b/docs/content/faq.md
@@ -328,6 +328,12 @@ draft: false
In the config file, set `default_view = "default"`
+## How do I set the default chart range?
+
+ In the config file, set `default_chart_range = "3M"`
+
+ Supported date ranges are `All Time`, `YTD`, `1Y`, `6M`, `3M`, `1M`, `7D`, `3D`, `24H`.
+
## How can use a different config file other than the default?
Run cointop with the `--config` flag, eg `cointop --config="/path/to/config.toml"`, to use the specified file as the config.