diff --git a/plugins/mockplugin/include/CosinusProvider.h b/plugins/mockplugin/include/CosinusProvider.h index cc48a53..218623a 100644 --- a/plugins/mockplugin/include/CosinusProvider.h +++ b/plugins/mockplugin/include/CosinusProvider.h @@ -3,6 +3,10 @@ #include +#include + +Q_DECLARE_LOGGING_CATEGORY(LOG_CosinusProvider) + /** * @brief The CosinusProvider class is an example of how a data provider can generate data */ @@ -11,6 +15,12 @@ public: /// @sa IDataProvider::retrieveData() std::unique_ptr retrieveData(const DataProviderParameters ¶meters) const override; + + void requestDataLoading(const QVector &dateTimeList) override; + + +private: + std::shared_ptr retrieveDataSeries(const SqpDateTime &dateTime); }; #endif // SCIQLOP_COSINUSPROVIDER_H diff --git a/plugins/mockplugin/src/CosinusProvider.cpp b/plugins/mockplugin/src/CosinusProvider.cpp index 44e159c..d661359 100644 --- a/plugins/mockplugin/src/CosinusProvider.cpp +++ b/plugins/mockplugin/src/CosinusProvider.cpp @@ -5,6 +5,8 @@ #include +Q_LOGGING_CATEGORY(LOG_CosinusProvider, "CosinusProvider") + std::unique_ptr CosinusProvider::retrieveData(const DataProviderParameters ¶meters) const { @@ -30,3 +32,40 @@ CosinusProvider::retrieveData(const DataProviderParameters ¶meters) const return scalarSeries; } + +void CosinusProvider::requestDataLoading(const QVector &dateTimeList) +{ + // NOTE: Try to use multithread if possible + foreach (const auto &dateTime, dateTimeList) { + + auto scalarSeries = this->retrieveDataSeries(dateTime); + + emit dataProvided(scalarSeries, dateTime); + } +} + + +std::shared_ptr retrieveDataSeries(const SqpDateTime &dateTime) +{ + + // Gets the timerange from the parameters + auto start = dateTime.m_TStart; + auto end = dateTime.m_TEnd; + + // We assure that timerange is valid + if (end < start) { + std::swap(start, end); + } + + // Generates scalar series containing cosinus values (one value per second) + auto scalarSeries + = std::make_shared(end - start, Unit{QStringLiteral("t"), true}, Unit{}); + + auto dataIndex = 0; + for (auto time = start; time < end; ++time, ++dataIndex) { + scalarSeries->setData(dataIndex, time, std::cos(time)); + } + + + return scalarSeries; +}