Add convenience method to set range with two dates

This commit is contained in:
Thomas Lauf 2018-06-13 23:09:12 +02:00
parent 9dd106116c
commit c0039b6ff5
7 changed files with 16 additions and 8 deletions

View file

@ -212,6 +212,12 @@ void Interval::setRange (const Range& range)
end = range.end;
}
void Interval::setRange (const Datetime& start, const Datetime& end)
{
this->start = start;
this->end = end;
}
Interval Interval::fromJson (std::string jsonString)
{
Interval interval = Interval ();

View file

@ -44,6 +44,7 @@ public:
void untag (const std::string&);
void setRange (const Range& range);
void setRange (const Datetime& start, const Datetime& end);
std::string serialize () const;
std::string json () const;
@ -54,6 +55,7 @@ public:
public:
int id {0};
bool synthetic {false};
std::string annotation {};
private:
std::set <std::string> _tags {};

View file

@ -60,7 +60,7 @@ int CmdChartDay (
if (rules.has ("reports.day.range"))
expandIntervalHint (rules.get ("reports.day.range"), filter);
else
filter.setRange (Range (Datetime ("today"), Datetime ("tomorrow")));
filter.setRange (Datetime ("today"), Datetime ("tomorrow"));
}
return renderChart (cli, "day", filter, rules, database);
@ -79,7 +79,7 @@ int CmdChartWeek (
if (rules.has ("reports.week.range"))
expandIntervalHint (rules.get ("reports.week.range"), filter);
else
filter.setRange (Range (Datetime ("sow"), Datetime ("eow")));
filter.setRange (Datetime ("sow"), Datetime ("eow"));
}
return renderChart (cli, "week", filter, rules, database);
@ -98,7 +98,7 @@ int CmdChartMonth (
if (rules.has ("reports.month.range"))
expandIntervalHint (rules.get ("reports.month.range"), filter);
else
filter.setRange (Range (Datetime ("som"), Datetime ("eom")));
filter.setRange (Datetime ("som"), Datetime ("eom"));
}
return renderChart (cli, "month", filter, rules, database);

View file

@ -44,7 +44,7 @@ int CmdGaps (
if (rules.has ("reports.gaps.range"))
expandIntervalHint (rules.get ("reports.gaps.range"), filter);
else
filter.setRange (Range (Datetime ("today"), Datetime ("tomorrow")));
filter.setRange (Datetime ("today"), Datetime ("tomorrow"));
}
// Is the :blank hint being used?

View file

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

View file

@ -175,7 +175,7 @@ void validate (
// Create a filter, and if empty, choose 'today'.
auto filter = getFilter (cli);
if (! filter.is_started ())
filter.setRange (Range (Datetime ("today"), Datetime ("tomorrow")));
filter.setRange (Datetime ("today"), Datetime ("tomorrow"));
// All validation performed here.
if (findHint (cli, ":fill"))

View file

@ -201,12 +201,12 @@ int main (int, char**)
// bool matchesFilter (const Interval& interval, const Interval& filter);
Interval refOpen;
refOpen.setRange (Range (Datetime (2016, 6, 1), Datetime (0)));
refOpen.setRange (Datetime (2016, 6, 1), Datetime (0));
refOpen.tag ("tag1");
refOpen.tag ("tag2");
Interval refClosed;
refClosed.setRange (Range (Datetime (2016, 6, 1), Datetime (2016, 6, 30)));
refClosed.setRange (Datetime (2016, 6, 1), Datetime (2016, 6, 30));
refClosed.tag ("tag1");
refClosed.tag ("tag2");