##// END OF EJS Templates
Updates UI to not call the sort method when update graphs, as data series are already sorted
Updates UI to not call the sort method when update graphs, as data series are already sorted

File last commit:

r418:158d38bb6d5a
r419:a8d8791b7e7a
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
r120 #include "CosinusProvider.h"
#include <Data/DataProviderParameters.h>
#include <Data/ScalarSeries.h>
Add cmath header missing
r127 #include <cmath>
Fix the cosinus bug....
r276 #include <QDateTime>
Add DownloadProgress emission for mock plugin
r394 #include <QFuture>
Add current progression for thread fix
r336 #include <QThread>
Add DownloadProgress emission for mock plugin
r394 #include <QtConcurrent/QtConcurrent>
Fix the cosinus bug....
r276
The cosinus provider can now handle data request
r215 Q_LOGGING_CATEGORY(LOG_CosinusProvider, "CosinusProvider")
Add DownloadProgress emission for mock plugin
r394 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
r120 {
Add DownloadProgress emission for mock plugin
r394 // TODO: Add Mutex
Fix the cosinus bug....
r276 auto dataIndex = 0;
The cosinus provider can now handle data request
r215
// Gets the timerange from the parameters
Fix the cosinus bug....
r276 double freq = 100.0;
Alexandre Leroux
Updates cosinus provider...
r418 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
r215
// 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...
r418 auto dataCount = end - start;
The cosinus provider can now handle data request
r215
Alexandre Leroux
Updates cosinus provider...
r418 auto xAxisData = QVector<double>{};
xAxisData.resize(dataCount);
auto valuesData = QVector<double>{};
valuesData.resize(dataCount);
Add DownloadProgress emission for mock plugin
r394
int progress = 0;
Alexandre Leroux
Updates cosinus provider...
r418 auto progressEnd = dataCount;
The cosinus provider can now handle data request
r215 for (auto time = start; time < end; ++time, ++dataIndex) {
Add DownloadProgress emission for mock plugin
r394 auto it = m_VariableToEnableProvider.find(token);
if (it != m_VariableToEnableProvider.end() && it.value()) {
const auto timeOnFreq = time / freq;
Alexandre Leroux
Updates cosinus provider...
r418
xAxisData.replace(dataIndex, timeOnFreq);
valuesData.replace(dataIndex, std::cos(timeOnFreq));
Add DownloadProgress emission for mock plugin
r394
// 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
r215 }
Add DownloadProgress emission for mock plugin
r394 emit dataProvidedProgress(token, 0.0);
Alexandre Leroux
Updates cosinus provider...
r418 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
r120 }
Alexandre Leroux
Use std::shared_ptr in CosinusProvider
r287
Alexandre Leroux
Updates IDataProvider::requestDataLoading() method's signature...
r375 void CosinusProvider::requestDataLoading(QUuid token, const DataProviderParameters &parameters)
Alexandre Leroux
Use std::shared_ptr in CosinusProvider
r287 {
Add DownloadProgress emission for mock plugin
r394 // TODO: Add Mutex
m_VariableToEnableProvider[token] = true;
Change info to debug on thread display log
r339 qCDebug(LOG_CosinusProvider()) << "CosinusProvider::requestDataLoading"
<< QThread::currentThread()->objectName();
Alexandre Leroux
Use std::shared_ptr in CosinusProvider
r287 // NOTE: Try to use multithread if possible
Alexandre Leroux
Updates IDataProvider::requestDataLoading() method's signature...
r375 const auto times = parameters.m_Times;
Add DownloadProgress emission for mock plugin
r394
Alexandre Leroux
Updates IDataProvider::requestDataLoading() method's signature...
r375 for (const auto &dateTime : qAsConst(times)) {
Add DownloadProgress emission for mock plugin
r394 if (m_VariableToEnableProvider[token]) {
auto scalarSeries = this->retrieveData(token, dateTime);
emit dataProvided(token, scalarSeries, dateTime);
}
Alexandre Leroux
Use std::shared_ptr in CosinusProvider
r287 }
}
Implement of the abort download process
r388
void CosinusProvider::requestDataAborting(QUuid identifier)
{
Add DownloadProgress emission for mock plugin
r394 // TODO: Add Mutex
qCDebug(LOG_CosinusProvider()) << "CosinusProvider::requestDataAborting" << identifier
Remove abort button validity when the progress is finished (eg. == 0)
r398 << QThread::currentThread()->objectName();
Add DownloadProgress emission for mock plugin
r394 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
r388 }