##// END OF EJS Templates
It's now possible to create the variable and ask data to be retreived...
It's now possible to create the variable and ask data to be retreived asynchronously

File last commit:

r318:fc4b2122dbde
r319:c71a61da7f3d
Show More
Variable.cpp
94 lines | 2.2 KiB | text/x-c | CppLexer
#include "Variable/Variable.h"
#include <Data/IDataSeries.h>
#include <Data/SqpDateTime.h>
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<IDataSeries> m_DataSeries;
};
Variable::Variable(const QString &name, const QString &unit, const QString &mission,
const SqpDateTime &dateTime)
: impl{spimpl::make_unique_impl<VariablePrivate>(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<IDataSeries> 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});
}