From 2a9f9952864554ca68af9668b54ab46221dbf1e6 Mon Sep 17 00:00:00 2001 From: Simon Roberts Date: Thu, 19 Aug 2021 09:05:39 +1000 Subject: [PATCH 1/3] Store default chart range in configuration file --- cointop/cointop.go | 1 + cointop/config.go | 69 ++++++++++++++++++++++++++++++---------------- 2 files changed, 46 insertions(+), 24 deletions(-) diff --git a/cointop/cointop.go b/cointop/cointop.go index 40dccf8..1f16367 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 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()") From 719f0cc3cb39311f1e6c2a18ff60f64259e828bc Mon Sep 17 00:00:00 2001 From: Simon Roberts Date: Thu, 19 Aug 2021 09:06:16 +1000 Subject: [PATCH 2/3] Simple documentation for default_chart_range --- docs/content/config.md | 1 + docs/content/faq.md | 6 ++++++ 2 files changed, 7 insertions(+) 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. From 6ec915abe92e2cd8a4457cb0097ae421f44e4986 Mon Sep 17 00:00:00 2001 From: Simon Roberts Date: Thu, 19 Aug 2021 16:40:54 +1000 Subject: [PATCH 3/3] Include DefaultChartRange in default config --- cointop/cointop.go | 1 + 1 file changed, 1 insertion(+) diff --git a/cointop/cointop.go b/cointop/cointop.go index 1f16367..17a9843 100644 --- a/cointop/cointop.go +++ b/cointop/cointop.go @@ -244,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),