@@ -9,6 +9,11 struct SqpDateTime { | |||||
9 | double m_TStart; |
|
9 | double m_TStart; | |
10 | /// End time |
|
10 | /// End time | |
11 | double m_TEnd; |
|
11 | double m_TEnd; | |
|
12 | ||||
|
13 | bool contains(const SqpDateTime &dateTime) | |||
|
14 | { | |||
|
15 | return (m_TStart <= dateTime.m_TStart && m_TEnd >= dateTime.m_TEnd); | |||
|
16 | } | |||
12 | }; |
|
17 | }; | |
13 |
|
18 | |||
14 | #endif // SCIQLOP_SQPDATETIME_H |
|
19 | #endif // SCIQLOP_SQPDATETIME_H |
@@ -19,7 +19,8 class QString; | |||||
19 | */ |
|
19 | */ | |
20 | class Variable { |
|
20 | class Variable { | |
21 | public: |
|
21 | public: | |
22 |
explicit Variable(const QString &name, const QString &unit, const QString &mission |
|
22 | explicit Variable(const QString &name, const QString &unit, const QString &mission, | |
|
23 | const SqpDateTime &dateTime); | |||
23 |
|
24 | |||
24 | QString name() const noexcept; |
|
25 | QString name() const noexcept; | |
25 | QString mission() const noexcept; |
|
26 | QString mission() const noexcept; |
@@ -1,11 +1,14 | |||||
1 | #ifndef SCIQLOP_VARIABLEMODEL_H |
|
1 | #ifndef SCIQLOP_VARIABLEMODEL_H | |
2 | #define SCIQLOP_VARIABLEMODEL_H |
|
2 | #define SCIQLOP_VARIABLEMODEL_H | |
3 |
|
3 | |||
4 | #include <Common/spimpl.h> |
|
4 | ||
|
5 | #include <Data/SqpDateTime.h> | |||
5 |
|
6 | |||
6 | #include <QAbstractTableModel> |
|
7 | #include <QAbstractTableModel> | |
7 | #include <QLoggingCategory> |
|
8 | #include <QLoggingCategory> | |
8 |
|
9 | |||
|
10 | #include <Common/spimpl.h> | |||
|
11 | ||||
9 | Q_DECLARE_LOGGING_CATEGORY(LOG_VariableModel) |
|
12 | Q_DECLARE_LOGGING_CATEGORY(LOG_VariableModel) | |
10 |
|
13 | |||
11 | class IDataSeries; |
|
14 | class IDataSeries; | |
@@ -21,11 +24,13 public: | |||||
21 | /** |
|
24 | /** | |
22 | * Creates a new variable in the model |
|
25 | * Creates a new variable in the model | |
23 | * @param name the name of the new variable |
|
26 | * @param name the name of the new variable | |
|
27 | * @param dateTime the dateTime of the new variable | |||
24 | * @param defaultDataSeries the default data of the new variable |
|
28 | * @param defaultDataSeries the default data of the new variable | |
25 | * @return the pointer to the new variable |
|
29 | * @return the pointer to the new variable | |
26 | */ |
|
30 | */ | |
27 | std::shared_ptr<Variable> |
|
31 | std::shared_ptr<Variable> | |
28 |
createVariable(const QString &name, st |
|
32 | createVariable(const QString &name, const SqpDateTime &dateTime, | |
|
33 | std::unique_ptr<IDataSeries> defaultDataSeries) noexcept; | |||
29 |
|
34 | |||
30 | // /////////////////////////// // |
|
35 | // /////////////////////////// // | |
31 | // QAbstractTableModel methods // |
|
36 | // QAbstractTableModel methods // |
@@ -6,8 +6,13 | |||||
6 | Q_LOGGING_CATEGORY(LOG_Variable, "Variable") |
|
6 | Q_LOGGING_CATEGORY(LOG_Variable, "Variable") | |
7 |
|
7 | |||
8 | struct Variable::VariablePrivate { |
|
8 | struct Variable::VariablePrivate { | |
9 |
explicit VariablePrivate(const QString &name, const QString &unit, const QString &mission |
|
9 | explicit VariablePrivate(const QString &name, const QString &unit, const QString &mission, | |
10 | : m_Name{name}, m_Unit{unit}, m_Mission{mission}, m_DataSeries{nullptr} |
|
10 | const SqpDateTime &dateTime) | |
|
11 | : m_Name{name}, | |||
|
12 | m_Unit{unit}, | |||
|
13 | m_Mission{mission}, | |||
|
14 | m_DateTime{dateTime}, | |||
|
15 | m_DataSeries{nullptr} | |||
11 | { |
|
16 | { | |
12 | } |
|
17 | } | |
13 |
|
18 | |||
@@ -19,8 +24,9 struct Variable::VariablePrivate { | |||||
19 | std::unique_ptr<IDataSeries> m_DataSeries; |
|
24 | std::unique_ptr<IDataSeries> m_DataSeries; | |
20 | }; |
|
25 | }; | |
21 |
|
26 | |||
22 |
Variable::Variable(const QString &name, const QString &unit, const QString &mission |
|
27 | Variable::Variable(const QString &name, const QString &unit, const QString &mission, | |
23 | : impl{spimpl::make_unique_impl<VariablePrivate>(name, unit, mission)} |
|
28 | const SqpDateTime &dateTime) | |
|
29 | : impl{spimpl::make_unique_impl<VariablePrivate>(name, unit, mission, dateTime)} | |||
24 | { |
|
30 | { | |
25 | } |
|
31 | } | |
26 |
|
32 | |||
@@ -55,4 +61,14 IDataSeries *Variable::dataSeries() const noexcept | |||||
55 | void Variable::onXRangeChanged(SqpDateTime dateTime) |
|
61 | void Variable::onXRangeChanged(SqpDateTime dateTime) | |
56 | { |
|
62 | { | |
57 | qCInfo(LOG_Variable()) << "onXRangeChanged detected"; |
|
63 | qCInfo(LOG_Variable()) << "onXRangeChanged detected"; | |
|
64 | ||||
|
65 | if (!impl->m_DateTime.contains(dateTime)) { | |||
|
66 | // The current variable dateTime isn't enough to display the dateTime requested. | |||
|
67 | // We have to update it to the new dateTime requested. | |||
|
68 | // the correspondant new data to display will be given by the cache if possible and the | |||
|
69 | // provider if necessary. | |||
|
70 | qCInfo(LOG_Variable()) << "NEW DATE NEEDED"; | |||
|
71 | ||||
|
72 | impl->m_DateTime = dateTime; | |||
|
73 | } | |||
58 | } |
|
74 | } |
@@ -95,7 +95,7 void VariableController::createVariable(const QString &name, | |||||
95 | /// in sciqlop |
|
95 | /// in sciqlop | |
96 | auto dateTime = impl->m_TimeController->dateTime(); |
|
96 | auto dateTime = impl->m_TimeController->dateTime(); | |
97 | if (auto newVariable = impl->m_VariableModel->createVariable( |
|
97 | if (auto newVariable = impl->m_VariableModel->createVariable( | |
98 | name, generateDefaultDataSeries(*provider, dateTime))) { |
|
98 | name, dateTime, generateDefaultDataSeries(*provider, dateTime))) { | |
99 |
|
99 | |||
100 | // store in cache |
|
100 | // store in cache | |
101 | impl->m_VariableCacheController->addDateTime(newVariable, dateTime); |
|
101 | impl->m_VariableCacheController->addDateTime(newVariable, dateTime); |
@@ -26,15 +26,15 VariableModel::VariableModel(QObject *parent) | |||||
26 | } |
|
26 | } | |
27 |
|
27 | |||
28 | std::shared_ptr<Variable> |
|
28 | std::shared_ptr<Variable> | |
29 | VariableModel::createVariable(const QString &name, |
|
29 | VariableModel::createVariable(const QString &name, const SqpDateTime &dateTime, | |
30 | std::unique_ptr<IDataSeries> defaultDataSeries) noexcept |
|
30 | std::unique_ptr<IDataSeries> defaultDataSeries) noexcept | |
31 | { |
|
31 | { | |
32 | auto insertIndex = rowCount(); |
|
32 | auto insertIndex = rowCount(); | |
33 | beginInsertRows({}, insertIndex, insertIndex); |
|
33 | beginInsertRows({}, insertIndex, insertIndex); | |
34 |
|
34 | |||
35 | /// @todo For the moment, the other data of the variable is initialized with default values |
|
35 | /// @todo For the moment, the other data of the variable is initialized with default values | |
36 | auto variable |
|
36 | auto variable = std::make_shared<Variable>(name, QStringLiteral("unit"), | |
37 | = std::make_shared<Variable>(name, QStringLiteral("unit"), QStringLiteral("mission")); |
|
37 | QStringLiteral("mission"), dateTime); | |
38 | variable->addDataSeries(std::move(defaultDataSeries)); |
|
38 | variable->addDataSeries(std::move(defaultDataSeries)); | |
39 |
|
39 | |||
40 | impl->m_Variables.push_back(variable); |
|
40 | impl->m_Variables.push_back(variable); |
General Comments 0
You need to be logged in to leave comments.
Login now