@@ -25,7 +25,7 struct Variable::VariablePrivate { | |||||
25 | SqpRange m_Range; |
|
25 | SqpRange m_Range; | |
26 | SqpRange m_CacheRange; |
|
26 | SqpRange m_CacheRange; | |
27 | QVariantHash m_Metadata; |
|
27 | QVariantHash m_Metadata; | |
28 |
std:: |
|
28 | std::shared_ptr<IDataSeries> m_DataSeries; | |
29 |
|
29 | |||
30 | QReadWriteLock m_Lock; |
|
30 | QReadWriteLock m_Lock; | |
31 | }; |
|
31 | }; | |
@@ -75,7 +75,8 void Variable::setCacheRange(const SqpRange &cacheRange) noexcept | |||||
75 |
|
75 | |||
76 | void Variable::setDataSeries(std::shared_ptr<IDataSeries> dataSeries) noexcept |
|
76 | void Variable::setDataSeries(std::shared_ptr<IDataSeries> dataSeries) noexcept | |
77 | { |
|
77 | { | |
78 |
qC |
|
78 | qCDebug(LOG_Variable()) << "TORM Variable::setDataSeries" | |
|
79 | << QThread::currentThread()->objectName(); | |||
79 | if (!dataSeries) { |
|
80 | if (!dataSeries) { | |
80 | /// @todo ALX : log |
|
81 | /// @todo ALX : log | |
81 | return; |
|
82 | return; | |
@@ -87,7 +88,7 void Variable::setDataSeries(std::shared_ptr<IDataSeries> dataSeries) noexcept | |||||
87 |
|
88 | |||
88 | void Variable::mergeDataSeries(std::shared_ptr<IDataSeries> dataSeries) noexcept |
|
89 | void Variable::mergeDataSeries(std::shared_ptr<IDataSeries> dataSeries) noexcept | |
89 | { |
|
90 | { | |
90 | qCDebug(LOG_Variable()) << "Variable::mergeDataSeries" |
|
91 | qCDebug(LOG_Variable()) << "TORM Variable::mergeDataSeries" | |
91 | << QThread::currentThread()->objectName(); |
|
92 | << QThread::currentThread()->objectName(); | |
92 | if (!dataSeries) { |
|
93 | if (!dataSeries) { | |
93 | /// @todo ALX : log |
|
94 | /// @todo ALX : log | |
@@ -107,16 +108,15 void Variable::mergeDataSeries(std::shared_ptr<IDataSeries> dataSeries) noexcept | |||||
107 |
|
108 | |||
108 | // sub the data |
|
109 | // sub the data | |
109 | auto subData = this->dataSeries()->subData(this->cacheRange()); |
|
110 | auto subData = this->dataSeries()->subData(this->cacheRange()); | |
110 |
qC |
|
111 | qCDebug(LOG_Variable()) << "TORM: Variable::mergeDataSeries sub" << subData->range(); | |
111 | this->setDataSeries(subData); |
|
112 | this->setDataSeries(subData); | |
112 |
qC |
|
113 | qCDebug(LOG_Variable()) << "TORM: Variable::mergeDataSeries set" << this->dataSeries()->range(); | |
113 | << this->dataSeries()->range(); |
|
|||
114 | } |
|
114 | } | |
115 |
|
115 | |||
116 |
IDataSeries |
|
116 | std::shared_ptr<IDataSeries> Variable::dataSeries() const noexcept | |
117 | { |
|
117 | { | |
118 | impl->lockRead(); |
|
118 | impl->lockRead(); | |
119 |
auto dataSeries = impl->m_DataSeries |
|
119 | auto dataSeries = impl->m_DataSeries; | |
120 | impl->unlock(); |
|
120 | impl->unlock(); | |
121 |
|
121 | |||
122 | return dataSeries; |
|
122 | return dataSeries; |
@@ -51,7 +51,7 void VariableAcquisitionWorker::pushVariableRequest(QUuid vIdentifier, SqpRange | |||||
51 | DataProviderParameters parameters, |
|
51 | DataProviderParameters parameters, | |
52 | std::shared_ptr<IDataProvider> provider) |
|
52 | std::shared_ptr<IDataProvider> provider) | |
53 | { |
|
53 | { | |
54 |
qC |
|
54 | qCInfo(LOG_VariableAcquisitionWorker()) | |
55 | << tr("TORM VariableAcquisitionWorker::pushVariableRequest ") << cacheRangeRequested; |
|
55 | << tr("TORM VariableAcquisitionWorker::pushVariableRequest ") << cacheRangeRequested; | |
56 |
|
56 | |||
57 | // Request creation |
|
57 | // Request creation | |
@@ -173,7 +173,7 void VariableAcquisitionWorker::onVariableDataAcquired(QUuid acqIdentifier, | |||||
173 |
|
173 | |||
174 | void VariableAcquisitionWorker::onExecuteRequest(QUuid acqIdentifier) |
|
174 | void VariableAcquisitionWorker::onExecuteRequest(QUuid acqIdentifier) | |
175 | { |
|
175 | { | |
176 |
qC |
|
176 | qCInfo(LOG_VariableAcquisitionWorker()) << tr("onExecuteRequest") << QThread::currentThread(); | |
177 | impl->lockRead(); |
|
177 | impl->lockRead(); | |
178 | auto it = impl->m_AcqIdentifierToAcqRequestMap.find(acqIdentifier); |
|
178 | auto it = impl->m_AcqIdentifierToAcqRequestMap.find(acqIdentifier); | |
179 | if (it != impl->m_AcqIdentifierToAcqRequestMap.cend()) { |
|
179 | if (it != impl->m_AcqIdentifierToAcqRequestMap.cend()) { |
@@ -274,6 +274,7 void VariableController::onDataProvided(QUuid vIdentifier, const SqpRange &range | |||||
274 | qCDebug(LOG_VariableController()) << tr("3: onDataProvided") |
|
274 | qCDebug(LOG_VariableController()) << tr("3: onDataProvided") | |
275 | << retrievedDataSeries->range(); |
|
275 | << retrievedDataSeries->range(); | |
276 | var->mergeDataSeries(retrievedDataSeries); |
|
276 | var->mergeDataSeries(retrievedDataSeries); | |
|
277 | qCDebug(LOG_VariableController()) << tr("4: onDataProvided"); | |||
277 | emit var->updated(); |
|
278 | emit var->updated(); | |
278 | } |
|
279 | } | |
279 | else { |
|
280 | else { | |
@@ -358,8 +359,8 void VariableController::onRequestDataLoading(QVector<std::shared_ptr<Variable> | |||||
358 | { |
|
359 | { | |
359 | // NOTE: oldRange isn't really necessary since oldRange == variable->range(). |
|
360 | // NOTE: oldRange isn't really necessary since oldRange == variable->range(). | |
360 |
|
361 | |||
361 |
qC |
|
362 | qCInfo(LOG_VariableController()) << "VariableController::onRequestDataLoading" | |
362 |
|
|
363 | << QThread::currentThread()->objectName(); | |
363 | // we want to load data of the variable for the dateTime. |
|
364 | // we want to load data of the variable for the dateTime. | |
364 | // First we check if the cache contains some of them. |
|
365 | // First we check if the cache contains some of them. | |
365 | // For the other, we ask the provider to give them. |
|
366 | // For the other, we ask the provider to give them. | |
@@ -466,8 +467,6 void VariableController::VariableControllerPrivate::processRequest(std::shared_p | |||||
466 | auto notInCacheRangeList = var->provideNotInCacheRangeList(varRangesRequested.second); |
|
467 | auto notInCacheRangeList = var->provideNotInCacheRangeList(varRangesRequested.second); | |
467 |
|
468 | |||
468 | if (!notInCacheRangeList.empty()) { |
|
469 | if (!notInCacheRangeList.empty()) { | |
469 | // Display part of data which are already there |
|
|||
470 | // Ask the provider for each data on the dateTimeListNotInCache |
|
|||
471 | auto identifier = m_VariableToIdentifierMap.at(var); |
|
470 | auto identifier = m_VariableToIdentifierMap.at(var); | |
472 | auto varProvider = m_VariableToProviderMap.at(var); |
|
471 | auto varProvider = m_VariableToProviderMap.at(var); | |
473 | if (varProvider != nullptr) { |
|
472 | if (varProvider != nullptr) { | |
@@ -511,8 +510,8 VariableController::VariableControllerPrivate::findVariable(QUuid vIdentifier) | |||||
511 | std::shared_ptr<IDataSeries> VariableController::VariableControllerPrivate::retrieveDataSeries( |
|
510 | std::shared_ptr<IDataSeries> VariableController::VariableControllerPrivate::retrieveDataSeries( | |
512 | const QVector<AcquisitionDataPacket> acqDataPacketVector) |
|
511 | const QVector<AcquisitionDataPacket> acqDataPacketVector) | |
513 | { |
|
512 | { | |
514 |
qC |
|
513 | qCDebug(LOG_VariableController()) << tr("TORM: retrieveDataSeries acqDataPacketVector size") | |
515 | << acqDataPacketVector.size(); |
|
514 | << acqDataPacketVector.size(); | |
516 | std::shared_ptr<IDataSeries> dataSeries; |
|
515 | std::shared_ptr<IDataSeries> dataSeries; | |
517 | if (!acqDataPacketVector.isEmpty()) { |
|
516 | if (!acqDataPacketVector.isEmpty()) { | |
518 | dataSeries = acqDataPacketVector[0].m_DateSeries; |
|
517 | dataSeries = acqDataPacketVector[0].m_DateSeries; | |
@@ -520,7 +519,8 std::shared_ptr<IDataSeries> VariableController::VariableControllerPrivate::retr | |||||
520 | dataSeries->merge(acqDataPacketVector[i].m_DateSeries.get()); |
|
519 | dataSeries->merge(acqDataPacketVector[i].m_DateSeries.get()); | |
521 | } |
|
520 | } | |
522 | } |
|
521 | } | |
523 |
|
522 | qCDebug(LOG_VariableController()) << tr("TORM: retrieveDataSeries acqDataPacketVector size END") | ||
|
523 | << acqDataPacketVector.size(); | |||
524 | return dataSeries; |
|
524 | return dataSeries; | |
525 | } |
|
525 | } | |
526 |
|
526 | |||
@@ -528,8 +528,8 void VariableController::VariableControllerPrivate::registerProvider( | |||||
528 | std::shared_ptr<IDataProvider> provider) |
|
528 | std::shared_ptr<IDataProvider> provider) | |
529 | { |
|
529 | { | |
530 | if (m_ProviderSet.find(provider) == m_ProviderSet.end()) { |
|
530 | if (m_ProviderSet.find(provider) == m_ProviderSet.end()) { | |
531 |
qC |
|
531 | qCDebug(LOG_VariableController()) << tr("Registering of a new provider") | |
532 | << provider->objectName(); |
|
532 | << provider->objectName(); | |
533 | m_ProviderSet.insert(provider); |
|
533 | m_ProviderSet.insert(provider); | |
534 | connect(provider.get(), &IDataProvider::dataProvided, m_VariableAcquisitionWorker.get(), |
|
534 | connect(provider.get(), &IDataProvider::dataProvided, m_VariableAcquisitionWorker.get(), | |
535 | &VariableAcquisitionWorker::onVariableDataAcquired); |
|
535 | &VariableAcquisitionWorker::onVariableDataAcquired); |
@@ -31,8 +31,8 struct VisualizationGraphHelper { | |||||
31 | static QVector<QCPAbstractPlottable *> create(std::shared_ptr<Variable> variable, |
|
31 | static QVector<QCPAbstractPlottable *> create(std::shared_ptr<Variable> variable, | |
32 | QCustomPlot &plot) noexcept; |
|
32 | QCustomPlot &plot) noexcept; | |
33 |
|
33 | |||
34 |
static void updateData(QVector<QCPAbstractPlottable *> plotableVect, |
|
34 | static void updateData(QVector<QCPAbstractPlottable *> plotableVect, | |
35 | const SqpRange &dateTime); |
|
35 | std::shared_ptr<IDataSeries> dataSeries, const SqpRange &dateTime); | |
36 | }; |
|
36 | }; | |
37 |
|
37 | |||
38 | #endif // SCIQLOP_VISUALIZATIONGRAPHHELPER_H |
|
38 | #endif // SCIQLOP_VISUALIZATIONGRAPHHELPER_H |
@@ -35,21 +35,21 QSharedPointer<QCPAxisTicker> axisTicker(bool isTimeAxis) | |||||
35 | } |
|
35 | } | |
36 | } |
|
36 | } | |
37 |
|
37 | |||
38 |
void updateScalarData(QCPAbstractPlottable *component, ScalarSeries |
|
38 | void updateScalarData(QCPAbstractPlottable *component, std::shared_ptr<ScalarSeries> scalarSeries, | |
39 | const SqpRange &dateTime) |
|
39 | const SqpRange &dateTime) | |
40 | { |
|
40 | { | |
41 | qCDebug(LOG_VisualizationGraphHelper()) << "TORM: updateScalarData" |
|
41 | qCDebug(LOG_VisualizationGraphHelper()) << "TORM: updateScalarData" | |
42 | << QThread::currentThread()->objectName(); |
|
42 | << QThread::currentThread()->objectName(); | |
43 | if (auto qcpGraph = dynamic_cast<QCPGraph *>(component)) { |
|
43 | if (auto qcpGraph = dynamic_cast<QCPGraph *>(component)) { | |
44 |
scalarSeries |
|
44 | scalarSeries->lockRead(); | |
45 | { |
|
45 | { | |
46 |
const auto &xData = scalarSeries |
|
46 | const auto &xData = scalarSeries->xAxisData()->cdata(); | |
47 |
const auto &valuesData = scalarSeries |
|
47 | const auto &valuesData = scalarSeries->valuesData()->cdata(); | |
48 |
|
48 | |||
49 | auto xDataBegin = xData.cbegin(); |
|
49 | auto xDataBegin = xData.cbegin(); | |
50 | auto xDataEnd = xData.cend(); |
|
50 | auto xDataEnd = xData.cend(); | |
51 |
|
51 | |||
52 |
qCInfo(LOG_VisualizationGraphHelper()) << "TO |
|
52 | qCInfo(LOG_VisualizationGraphHelper()) << "TODEBUG: Current points in cache" | |
53 | << xData.count(); |
|
53 | << xData.count(); | |
54 |
|
54 | |||
55 | auto sqpDataContainer = QSharedPointer<SqpDataContainer>::create(); |
|
55 | auto sqpDataContainer = QSharedPointer<SqpDataContainer>::create(); | |
@@ -65,10 +65,10 void updateScalarData(QCPAbstractPlottable *component, ScalarSeries &scalarSerie | |||||
65 | sqpDataContainer->appendGraphData(QCPGraphData(*xAxisDataIt, *valuesDataIt)); |
|
65 | sqpDataContainer->appendGraphData(QCPGraphData(*xAxisDataIt, *valuesDataIt)); | |
66 | } |
|
66 | } | |
67 |
|
67 | |||
68 |
qCInfo(LOG_VisualizationGraphHelper()) << "TO |
|
68 | qCInfo(LOG_VisualizationGraphHelper()) << "TODEBUG: Current points displayed" | |
69 | << sqpDataContainer->size(); |
|
69 | << sqpDataContainer->size(); | |
70 | } |
|
70 | } | |
71 |
scalarSeries |
|
71 | scalarSeries->unlock(); | |
72 |
|
72 | |||
73 |
|
73 | |||
74 | // Display all data |
|
74 | // Display all data | |
@@ -79,14 +79,14 void updateScalarData(QCPAbstractPlottable *component, ScalarSeries &scalarSerie | |||||
79 | } |
|
79 | } | |
80 | } |
|
80 | } | |
81 |
|
81 | |||
82 |
QCPAbstractPlottable *createScalarSeriesComponent(ScalarSeries |
|
82 | QCPAbstractPlottable *createScalarSeriesComponent(std::shared_ptr<ScalarSeries> scalarSeries, | |
83 | const SqpRange &dateTime) |
|
83 | QCustomPlot &plot, const SqpRange &dateTime) | |
84 | { |
|
84 | { | |
85 | auto component = plot.addGraph(); |
|
85 | auto component = plot.addGraph(); | |
86 |
|
86 | |||
87 | if (component) { |
|
87 | if (component) { | |
88 | // // Graph data |
|
88 | // // Graph data | |
89 |
component->setData(scalarSeries |
|
89 | component->setData(scalarSeries->xAxisData()->data(), scalarSeries->valuesData()->data(), | |
90 | true); |
|
90 | true); | |
91 |
|
91 | |||
92 | updateScalarData(component, scalarSeries, dateTime); |
|
92 | updateScalarData(component, scalarSeries, dateTime); | |
@@ -102,8 +102,8 QCPAbstractPlottable *createScalarSeriesComponent(ScalarSeries &scalarSeries, QC | |||||
102 | // ticker (depending on the type of unit) |
|
102 | // ticker (depending on the type of unit) | |
103 | axis->setTicker(axisTicker(unit.m_TimeUnit)); |
|
103 | axis->setTicker(axisTicker(unit.m_TimeUnit)); | |
104 | }; |
|
104 | }; | |
105 |
setAxisProperties(plot.xAxis, scalarSeries |
|
105 | setAxisProperties(plot.xAxis, scalarSeries->xAxisUnit()); | |
106 |
setAxisProperties(plot.yAxis, scalarSeries |
|
106 | setAxisProperties(plot.yAxis, scalarSeries->valuesUnit()); | |
107 |
|
107 | |||
108 | // Display all data |
|
108 | // Display all data | |
109 | component->rescaleAxes(); |
|
109 | component->rescaleAxes(); | |
@@ -127,8 +127,8 QVector<QCPAbstractPlottable *> VisualizationGraphHelper::create(std::shared_ptr | |||||
127 | if (variable) { |
|
127 | if (variable) { | |
128 | // Gets the data series of the variable to call the creation of the right components |
|
128 | // Gets the data series of the variable to call the creation of the right components | |
129 | // according to its type |
|
129 | // according to its type | |
130 |
if (auto scalarSeries = dynamic_cast<ScalarSeries |
|
130 | if (auto scalarSeries = std::dynamic_pointer_cast<ScalarSeries>(variable->dataSeries())) { | |
131 |
result.append(createScalarSeriesComponent( |
|
131 | result.append(createScalarSeriesComponent(scalarSeries, plot, variable->range())); | |
132 | } |
|
132 | } | |
133 | else { |
|
133 | else { | |
134 | qCDebug(LOG_VisualizationGraphHelper()) |
|
134 | qCDebug(LOG_VisualizationGraphHelper()) | |
@@ -144,11 +144,12 QVector<QCPAbstractPlottable *> VisualizationGraphHelper::create(std::shared_ptr | |||||
144 | } |
|
144 | } | |
145 |
|
145 | |||
146 | void VisualizationGraphHelper::updateData(QVector<QCPAbstractPlottable *> plotableVect, |
|
146 | void VisualizationGraphHelper::updateData(QVector<QCPAbstractPlottable *> plotableVect, | |
147 |
IDataSeries |
|
147 | std::shared_ptr<IDataSeries> dataSeries, | |
|
148 | const SqpRange &dateTime) | |||
148 | { |
|
149 | { | |
149 |
if (auto scalarSeries = dynamic_cast<ScalarSeries |
|
150 | if (auto scalarSeries = std::dynamic_pointer_cast<ScalarSeries>(dataSeries)) { | |
150 | if (plotableVect.size() == 1) { |
|
151 | if (plotableVect.size() == 1) { | |
151 |
updateScalarData(plotableVect.at(0), |
|
152 | updateScalarData(plotableVect.at(0), scalarSeries, dateTime); | |
152 | } |
|
153 | } | |
153 | else { |
|
154 | else { | |
154 | qCCritical(LOG_VisualizationGraphHelper()) << QObject::tr( |
|
155 | qCCritical(LOG_VisualizationGraphHelper()) << QObject::tr( |
@@ -235,7 +235,7 void VisualizationGraphWidget::onRangeChanged(const QCPRange &t1, const QCPRange | |||||
235 | !impl->m_IsCalibration); |
|
235 | !impl->m_IsCalibration); | |
236 |
|
236 | |||
237 | if (!impl->m_IsCalibration) { |
|
237 | if (!impl->m_IsCalibration) { | |
238 |
qC |
|
238 | qCDebug(LOG_VisualizationGraphWidget()) | |
239 | << tr("TORM: VisualizationGraphWidget::Synchronize notify !!") |
|
239 | << tr("TORM: VisualizationGraphWidget::Synchronize notify !!") | |
240 | << QThread::currentThread()->objectName() << graphRange << oldGraphRange; |
|
240 | << QThread::currentThread()->objectName() << graphRange << oldGraphRange; | |
241 | emit synchronize(graphRange, oldGraphRange); |
|
241 | emit synchronize(graphRange, oldGraphRange); |
@@ -81,6 +81,7 void CosinusProvider::requestDataLoading(QUuid acqIdentifier, | |||||
81 | for (const auto &dateTime : qAsConst(times)) { |
|
81 | for (const auto &dateTime : qAsConst(times)) { | |
82 | if (m_VariableToEnableProvider[acqIdentifier]) { |
|
82 | if (m_VariableToEnableProvider[acqIdentifier]) { | |
83 | auto scalarSeries = this->retrieveData(acqIdentifier, dateTime); |
|
83 | auto scalarSeries = this->retrieveData(acqIdentifier, dateTime); | |
|
84 | qCCritical(LOG_CosinusProvider()) << "CosinusProvider::dataProvided"; | |||
84 | emit dataProvided(acqIdentifier, scalarSeries, dateTime); |
|
85 | emit dataProvided(acqIdentifier, scalarSeries, dateTime); | |
85 | } |
|
86 | } | |
86 | } |
|
87 | } |
General Comments 0
You need to be logged in to leave comments.
Login now