#include "Variable/Variable.h" #include #include Q_LOGGING_CATEGORY(LOG_Variable, "Variable") struct Variable::VariablePrivate { explicit VariablePrivate(const QString &name, const QString &unit, const QString &mission, const SqpDateTime &dateTime) : m_Name{name}, m_Unit{unit}, m_Mission{mission}, m_DateTime{dateTime}, m_DataSeries{nullptr} { } QString m_Name; QString m_Unit; QString m_Mission; SqpDateTime m_DateTime; // The dateTime available in the view and loaded. not the cache. std::unique_ptr m_DataSeries; }; Variable::Variable(const QString &name, const QString &unit, const QString &mission, const SqpDateTime &dateTime) : impl{spimpl::make_unique_impl(name, unit, mission, dateTime)} { } QString Variable::name() const noexcept { return impl->m_Name; } QString Variable::mission() const noexcept { return impl->m_Mission; } QString Variable::unit() const noexcept { return impl->m_Unit; } SqpDateTime Variable::dateTime() const noexcept { return impl->m_DateTime; } void Variable::setDateTime(const SqpDateTime &dateTime) noexcept { impl->m_DateTime = dateTime; } void Variable::setDataSeries(std::shared_ptr dataSeries) noexcept { if (!dataSeries) { /// @todo ALX : log return; } // Inits the data series of the variable if (!impl->m_DataSeries) { impl->m_DataSeries = dataSeries->clone(); } else { impl->m_DataSeries->merge(dataSeries.get()); emit updated(); } } IDataSeries *Variable::dataSeries() const noexcept { return impl->m_DataSeries.get(); } bool Variable::contains(const SqpDateTime &dateTime) const noexcept { return impl->m_DateTime.contains(dateTime); } bool Variable::intersect(const SqpDateTime &dateTime) const noexcept { return impl->m_DateTime.intersect(dateTime); } bool Variable::isInside(const SqpDateTime &dateTime) const noexcept { return dateTime.contains(SqpDateTime{impl->m_DateTime.m_TStart, impl->m_DateTime.m_TEnd}); }