Introduce default range parameter when requesting filter from CLI

Signed-off-by: Thomas Lauf <thomas.lauf@tngtech.com>
This commit is contained in:
Thomas Lauf 2020-06-03 17:38:41 +02:00
parent 7e11fde992
commit 6117ce1a84
4 changed files with 21 additions and 24 deletions

View file

@ -636,7 +636,7 @@ std::vector <std::string> CLI::getDomReferences () const
// <duration> ["before"|"after" <date>]
// <duration> "ago"
//
Interval CLI::getFilter () const
Interval CLI::getFilter (const Range& default_range) const
{
// One instance, so we can directly compare.
Datetime now;
@ -708,8 +708,13 @@ Interval CLI::getFilter () const
}
}
if (args.empty ())
{
filter.setRange(default_range);
}
// <date>
if (args.size () == 1 &&
else if (args.size () == 1 &&
args[0] == "<date>")
{
filter.setRange ({Datetime (start), 0});

View file

@ -72,7 +72,7 @@ public:
std::string getAnnotation() const;
Duration getDuration() const;
std::vector<std::string> getDomReferences () const;
Interval getFilter () const;
Interval getFilter (const Range& = {}) const;
std::string dump (const std::string& title = "CLI Parser") const;
private:

View file

@ -45,13 +45,11 @@ int CmdChartDay (
Rules& rules,
Database& database)
{
// Create a filter, and if empty, choose the current day.
auto filter = cli.getFilter ();
Range default_range = {};
expandIntervalHint (rules.get ("reports.day.range", ":day"), default_range);
if (! filter.is_started ())
{
expandIntervalHint (rules.get ("reports.day.range", ":day"), filter);
}
// Create a filter, and if empty, choose the current day.
auto filter = cli.getFilter (default_range);
return renderChart (cli, "day", filter, rules, database);
}
@ -62,13 +60,11 @@ int CmdChartWeek (
Rules& rules,
Database& database)
{
// Create a filter, and if empty, choose the current week.
auto filter = cli.getFilter ();
Range default_range = {};
expandIntervalHint (rules.get ("reports.week.range", ":week"), default_range);
if (! filter.is_started ())
{
expandIntervalHint (rules.get ("reports.week.range", ":week"), filter);
}
// Create a filter, and if empty, choose the current week.
auto filter = cli.getFilter (default_range);
return renderChart (cli, "week", filter, rules, database);
}
@ -79,13 +75,11 @@ int CmdChartMonth (
Rules& rules,
Database& database)
{
// Create a filter, and if empty, choose the current month.
auto filter = cli.getFilter ();
Range default_range = {};
expandIntervalHint (rules.get ("reports.month.range", ":month"), default_range);
if (! filter.is_started ())
{
expandIntervalHint (rules.get ("reports.month.range", ":month"), filter);
}
// Create a filter, and if empty, choose the current month.
auto filter = cli.getFilter (default_range);
return renderChart (cli, "month", filter, rules, database);
}

View file

@ -45,9 +45,7 @@ int CmdSummary (
auto verbose = rules.getBoolean ("verbose");
// Create a filter, and if empty, choose 'today'.
auto filter = cli.getFilter ();
if (! filter.is_started ())
filter.setRange (Datetime ("today"), Datetime ("tomorrow"));
auto filter = cli.getFilter (Range { Datetime ("today"), Datetime ("tomorrow") });
if (! filter.is_ended())
filter.end = filter.start + Duration("1d").toTime_t();