##// 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:

r452:158d38bb6d5a
r453: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
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 }