7 #ifndef PJ_TIMESERIES_H 8 #define PJ_TIMESERIES_H 15 template <
typename Value>
27 , _max_range_x(
std::numeric_limits<double>::max())
44 _max_range_x = max_range;
58 return (index < 0) ? std::nullopt : std::optional(
_points[index].
y);
69 bool need_sorting = (!
_points.empty() && p.x < this->
back().x);
74 [](
const auto& a,
const auto& b)
75 {
return a.x < b.x; });
88 if(_max_range_x < std::numeric_limits<double>::max() && !
_points.empty())
90 auto const back_point_x =
_points.back().x;
91 while (
_points.size() > 2 && (back_point_x -
_points.front().x) > _max_range_x)
106 template <
typename Value>
115 auto index = std::distance(
_points.begin(), lower);
126 if (index > 0 && (abs(
_points[index - 1].x - x) < abs(
_points[index].x - x)))
TimeseriesBase(const std::string &name, PlotGroup::Ptr group)
std::shared_ptr< PlotGroup > Ptr
virtual void insert(Iterator it, Point &&p)
int getIndexFromX(double x) const
void pushBack(Point &&p) override
void setMaximumRangeX(double max_range)
std::optional< Value > getYfromX(double x) const
std::deque< Point > _points
const T & move(const T &v)
typename PlotDataBase< double, StringRef >::Point Point
const PlotGroup::Ptr & group() const
void pushBack(const Point &p) override
TimeseriesBase & operator=(const TimeseriesBase &other)=delete
const Point & back() const
static bool TimeCompare(const Point &a, const Point &b)
virtual void pushBack(const Point &p)
virtual bool isTimeseries() const override
double maximumRangeX() const