##// END OF EJS Templates
Merge branch 'feature/SortDataSeries' into develop
Merge branch 'feature/SortDataSeries' into develop

File last commit:

r452:158d38bb6d5a
r456:e7ac423673d6 merge
Show More
CosinusProvider.cpp
101 lines | 3.3 KiB | text/x-c | CppLexer
Alexandre Leroux
Creates a default provider that will be returned by the mock plugin
r128 #include "CosinusProvider.h"
#include <Data/DataProviderParameters.h>
#include <Data/ScalarSeries.h>
Add cmath header missing
r135 #include <cmath>
Fix the cosinus bug....
r298 #include <QDateTime>
Add DownloadProgress emission for mock plugin
r428 #include <QFuture>
Add current progression for thread fix
r364 #include <QThread>
Add DownloadProgress emission for mock plugin
r428 #include <QtConcurrent/QtConcurrent>
Fix the cosinus bug....
r298
The cosinus provider can now handle data request
r231 Q_LOGGING_CATEGORY(LOG_CosinusProvider, "CosinusProvider")
Add DownloadProgress emission for mock plugin
r428 std::shared_ptr<IDataSeries> CosinusProvider::retrieveData(QUuid token, const SqpDateTime &dateTime)
Alexandre Leroux
Creates a default provider that will be returned by the mock plugin
r128 {
Add DownloadProgress emission for mock plugin
r428 // TODO: Add Mutex
Fix the cosinus bug....
r298 auto dataIndex = 0;
The cosinus provider can now handle data request
r231
// Gets the timerange from the parameters
Fix the cosinus bug....
r298 double freq = 100.0;
Alexandre Leroux
Updates cosinus provider...
r452 double start = std::ceil(dateTime.m_TStart * freq); // 100 htz
double end = std::floor(dateTime.m_TEnd * freq); // 100 htz
The cosinus provider can now handle data request
r231
// We assure that timerange is valid
if (end < start) {
std::swap(start, end);
}
// Generates scalar series containing cosinus values (one value per second)
Alexandre Leroux
Updates cosinus provider...
r452 auto dataCount = end - start;
The cosinus provider can now handle data request
r231
Alexandre Leroux
Updates cosinus provider...
r452 auto xAxisData = QVector<double>{};
xAxisData.resize(dataCount);
auto valuesData = QVector<double>{};
valuesData.resize(dataCount);
Add DownloadProgress emission for mock plugin
r428
int progress = 0;
Alexandre Leroux
Updates cosinus provider...
r452 auto progressEnd = dataCount;
The cosinus provider can now handle data request
r231 for (auto time = start; time < end; ++time, ++dataIndex) {
Add DownloadProgress emission for mock plugin
r428 auto it = m_VariableToEnableProvider.find(token);
if (it != m_VariableToEnableProvider.end() && it.value()) {
const auto timeOnFreq = time / freq;
Alexandre Leroux
Updates cosinus provider...
r452
xAxisData.replace(dataIndex, timeOnFreq);
valuesData.replace(dataIndex, std::cos(timeOnFreq));
Add DownloadProgress emission for mock plugin
r428
// progression
int currentProgress = (time - start) * 100.0 / progressEnd;
if (currentProgress != progress) {
progress = currentProgress;
emit dataProvidedProgress(token, progress);
}
}
else {
if (!it.value()) {
qCDebug(LOG_CosinusProvider())
<< "CosinusProvider::retrieveData: ARRET De l'acquisition detecté"
<< end - time;
}
}
The cosinus provider can now handle data request
r231 }
Add DownloadProgress emission for mock plugin
r428 emit dataProvidedProgress(token, 0.0);
Alexandre Leroux
Updates cosinus provider...
r452 return std::make_shared<ScalarSeries>(std::move(xAxisData), std::move(valuesData),
Unit{QStringLiteral("t"), true}, Unit{});
Alexandre Leroux
Creates a default provider that will be returned by the mock plugin
r128 }
Alexandre Leroux
Use std::shared_ptr in CosinusProvider
r310
Alexandre Leroux
Updates IDataProvider::requestDataLoading() method's signature...
r408 void CosinusProvider::requestDataLoading(QUuid token, const DataProviderParameters &parameters)
Alexandre Leroux
Use std::shared_ptr in CosinusProvider
r310 {
Add DownloadProgress emission for mock plugin
r428 // TODO: Add Mutex
m_VariableToEnableProvider[token] = true;
Change info to debug on thread display log
r367 qCDebug(LOG_CosinusProvider()) << "CosinusProvider::requestDataLoading"
<< QThread::currentThread()->objectName();
Alexandre Leroux
Use std::shared_ptr in CosinusProvider
r310 // NOTE: Try to use multithread if possible
Alexandre Leroux
Updates IDataProvider::requestDataLoading() method's signature...
r408 const auto times = parameters.m_Times;
Add DownloadProgress emission for mock plugin
r428
Alexandre Leroux
Updates IDataProvider::requestDataLoading() method's signature...
r408 for (const auto &dateTime : qAsConst(times)) {
Add DownloadProgress emission for mock plugin
r428 if (m_VariableToEnableProvider[token]) {
auto scalarSeries = this->retrieveData(token, dateTime);
emit dataProvided(token, scalarSeries, dateTime);
}
Alexandre Leroux
Use std::shared_ptr in CosinusProvider
r310 }
}
Implement of the abort download process
r422
void CosinusProvider::requestDataAborting(QUuid identifier)
{
Add DownloadProgress emission for mock plugin
r428 // TODO: Add Mutex
qCDebug(LOG_CosinusProvider()) << "CosinusProvider::requestDataAborting" << identifier
Remove abort button validity when the progress is finished (eg. == 0)
r432 << QThread::currentThread()->objectName();
Add DownloadProgress emission for mock plugin
r428 auto it = m_VariableToEnableProvider.find(identifier);
if (it != m_VariableToEnableProvider.end()) {
it.value() = false;
}
else {
qCWarning(LOG_CosinusProvider())
<< tr("Aborting progression of inexistant identifier detected !!!");
}
Implement of the abort download process
r422 }