##// END OF EJS Templates
Implementation of the cache feature : download before display needs
perrinel -
r399:a2e6652524d1
parent child
Show More
@@ -60,7 +60,7 void Variable::setDataSeries(std::shared_ptr<IDataSeries> dataSeries) noexcept
60 impl->m_DataSeries->merge(dataSeries.get());
60 impl->m_DataSeries->merge(dataSeries.get());
61 impl->m_DataSeries->unlock();
61 impl->m_DataSeries->unlock();
62 dataSeries->unlock();
62 dataSeries->unlock();
63 emit updated();
63 // emit updated();
64 }
64 }
65 }
65 }
66
66
@@ -139,6 +139,7 void VariableController::createVariable(const QString &name, const QVariantHash
139 if (varIdentifier == identifier) {
139 if (varIdentifier == identifier) {
140 impl->m_VariableCacheController->addDateTime(variable, dateTimeToPutInCache);
140 impl->m_VariableCacheController->addDateTime(variable, dateTimeToPutInCache);
141 variable->setDataSeries(dataSeriesAcquired);
141 variable->setDataSeries(dataSeriesAcquired);
142 emit variable->updated();
142 }
143 }
143 }
144 }
144 };
145 };
@@ -177,37 +177,48 void VisualizationGraphWidget::onGraphMenuRequested(const QPoint &pos) noexcept
177
177
178 void VisualizationGraphWidget::onRangeChanged(const QCPRange &t1)
178 void VisualizationGraphWidget::onRangeChanged(const QCPRange &t1)
179 {
179 {
180 qCDebug(LOG_VisualizationGraphWidget()) << tr("VisualizationGraphWidget::onRangeChanged")
180 qCInfo(LOG_VisualizationGraphWidget()) << tr("VisualizationGraphWidget::onRangeChanged")
181 << QThread::currentThread()->objectName();
181 << QThread::currentThread()->objectName();
182
182
183 for (auto it = impl->m_VariableToPlotMultiMap.cbegin();
183 for (auto it = impl->m_VariableToPlotMultiMap.cbegin();
184 it != impl->m_VariableToPlotMultiMap.cend(); ++it) {
184 it != impl->m_VariableToPlotMultiMap.cend(); ++it) {
185
185
186 auto variable = it->first;
186 auto variable = it->first;
187 auto dateTime = SqpDateTime{t1.lower, t1.upper};
187 auto dateTime = SqpDateTime{t1.lower, t1.upper};
188 auto dateTimeRange = dateTime;
188
189
189 if (!variable->contains(dateTime)) {
190 auto tolerance = 0.2 * (dateTime.m_TEnd - dateTime.m_TStart);
191 auto variableDateTimeWithTolerance = dateTime;
192 variableDateTimeWithTolerance.m_TStart -= tolerance;
193 variableDateTimeWithTolerance.m_TEnd += tolerance;
194
195 qCInfo(LOG_VisualizationGraphWidget()) << "v" << dateTime;
196 qCInfo(LOG_VisualizationGraphWidget()) << "vtol" << variableDateTimeWithTolerance;
197 // If new range with tol is upper than variable datetime parameters. we need to request new
198 // data
199 if (!variable->contains(variableDateTimeWithTolerance)) {
190
200
191 auto variableDateTimeWithTolerance = dateTime;
201 auto variableDateTimeWithTolerance = dateTime;
192 if (!variable->isInside(dateTime)) {
202 if (!variable->isInside(dateTime)) {
193 auto variableDateTime = variable->dateTime();
203 auto variableDateTime = variable->dateTime();
194 if (variableDateTime.m_TStart < dateTime.m_TStart) {
204 if (variableDateTime.m_TStart < dateTime.m_TStart) {
195 qCDebug(LOG_VisualizationGraphWidget()) << tr("TDetection pan to right:");
205 qCInfo(LOG_VisualizationGraphWidget()) << tr("TORM: Detection pan to right:");
196
206
197 auto diffEndToKeepDelta = dateTime.m_TEnd - variableDateTime.m_TEnd;
207 auto diffEndToKeepDelta = dateTime.m_TEnd - variableDateTime.m_TEnd;
198 dateTime.m_TStart = variableDateTime.m_TStart + diffEndToKeepDelta;
208 dateTime.m_TStart = variableDateTime.m_TStart + diffEndToKeepDelta;
199 // Tolerance have to be added to the right
209 // Tolerance have to be added to the right
200 // add 10% tolerance for right (end) side
210 // add 10% tolerance for right (end) side
201 auto tolerance = 0.1 * (dateTime.m_TEnd - dateTime.m_TStart);
211 // auto tolerance = 0.1 * (dateTime.m_TEnd -
212 // dateTime.m_TStart);
202 variableDateTimeWithTolerance.m_TEnd += tolerance;
213 variableDateTimeWithTolerance.m_TEnd += tolerance;
203 }
214 }
204 else if (variableDateTime.m_TEnd > dateTime.m_TEnd) {
215 else if (variableDateTime.m_TEnd > dateTime.m_TEnd) {
205 qCDebug(LOG_VisualizationGraphWidget()) << tr("Detection pan to left: ");
216 qCInfo(LOG_VisualizationGraphWidget()) << tr("TORM: Detection pan to left: ");
206 auto diffStartToKeepDelta = variableDateTime.m_TStart - dateTime.m_TStart;
217 auto diffStartToKeepDelta = variableDateTime.m_TStart - dateTime.m_TStart;
207 dateTime.m_TEnd = variableDateTime.m_TEnd - diffStartToKeepDelta;
218 dateTime.m_TEnd = variableDateTime.m_TEnd - diffStartToKeepDelta;
208 // Tolerance have to be added to the left
219 // Tolerance have to be added to the left
209 // add 10% tolerance for left (start) side
220 // add 10% tolerance for left (start) side
210 auto tolerance = 0.1 * (dateTime.m_TEnd - dateTime.m_TStart);
221 tolerance = 0.2 * (dateTime.m_TEnd - dateTime.m_TStart);
211 variableDateTimeWithTolerance.m_TStart -= tolerance;
222 variableDateTimeWithTolerance.m_TStart -= tolerance;
212 }
223 }
213 else {
224 else {
@@ -216,19 +227,23 void VisualizationGraphWidget::onRangeChanged(const QCPRange &t1)
216 }
227 }
217 }
228 }
218 else {
229 else {
219 qCDebug(LOG_VisualizationGraphWidget()) << tr("Detection zoom out: ");
230 qCInfo(LOG_VisualizationGraphWidget()) << tr("Detection zoom out: ");
220 // add 10% tolerance for each side
231 // add 10% tolerance for each side
221 auto tolerance = 0.1 * (dateTime.m_TEnd - dateTime.m_TStart);
232 tolerance = 0.2 * (dateTime.m_TEnd - dateTime.m_TStart);
note

Already changed in next commits

222 variableDateTimeWithTolerance.m_TStart -= tolerance;
233 variableDateTimeWithTolerance.m_TStart -= tolerance;
223 variableDateTimeWithTolerance.m_TEnd += tolerance;
234 variableDateTimeWithTolerance.m_TEnd += tolerance;
224 }
235 }
225 variable->setDateTime(dateTime);
236 if (!variable->contains(dateTimeRange)) {
237 qCInfo(LOG_VisualizationGraphWidget()) << "newv" << dateTime;
238 variable->setDateTime(dateTime);
239 }
226
240
241 qCInfo(LOG_VisualizationGraphWidget()) << tr("Request data detection: ");
227 // CHangement detected, we need to ask controller to request data loading
242 // CHangement detected, we need to ask controller to request data loading
228 emit requestDataLoading(variable, variableDateTimeWithTolerance);
243 emit requestDataLoading(variable, variableDateTimeWithTolerance);
229 }
244 }
230 else {
245 else {
231 qCDebug(LOG_VisualizationGraphWidget()) << tr("Detection zoom in: ");
246 qCInfo(LOG_VisualizationGraphWidget()) << tr("Detection zoom in: ");
232 }
247 }
233 }
248 }
234 }
249 }
@@ -262,11 +277,22 void VisualizationGraphWidget::onDataCacheVariableUpdated()
262 // - use an ordered_multimap and the algos of std to group the values by key
277 // - use an ordered_multimap and the algos of std to group the values by key
263 // - use a map (unique keys) and store as values directly the list of components
278 // - use a map (unique keys) and store as values directly the list of components
264
279
280 auto grapheRange = ui->widget->xAxis->range();
281 auto dateTime = SqpDateTime{grapheRange.lower, grapheRange.upper};
282
265 for (auto it = impl->m_VariableToPlotMultiMap.cbegin();
283 for (auto it = impl->m_VariableToPlotMultiMap.cbegin();
266 it != impl->m_VariableToPlotMultiMap.cend(); ++it) {
284 it != impl->m_VariableToPlotMultiMap.cend(); ++it) {
267 auto variable = it->first;
285 auto variable = it->first;
268 VisualizationGraphHelper::updateData(QVector<QCPAbstractPlottable *>{} << it->second,
286 qCInfo(LOG_VisualizationGraphWidget())
269 variable->dataSeries(), variable->dateTime());
287 << "TORM: VisualizationGraphWidget::onDataCacheVariableUpdated S"
288 << variable->dateTime();
289 qCInfo(LOG_VisualizationGraphWidget())
290 << "TORM: VisualizationGraphWidget::onDataCacheVariableUpdated E" << dateTime;
291 if (dateTime.contains(variable->dateTime()) || dateTime.intersect(variable->dateTime())) {
292
293 VisualizationGraphHelper::updateData(QVector<QCPAbstractPlottable *>{} << it->second,
294 variable->dataSeries(), variable->dateTime());
295 }
270 }
296 }
271 }
297 }
272
298
General Comments 3
Under Review
author

Pull request updated. Auto status change to "Under Review"

Changed commits:
  * 3 added
  * 0 removed

Changed files:
  * A plugins/amda/tests-resources/TestAmdaResultParser/FileNotFound.txt
  * M gui/src/Visualization/operations/RescaleAxeOperation.cpp
  * M app/src/MainWindow.cpp
  * M core/include/Data/IDataProvider.h
  * M core/include/DataSource/DataSourceItemAction.h
  * M core/include/Variable/VariableController.h
  * M core/include/Variable/VariableModel.h
  * M core/include/Visualization/VisualizationController.h
  * M core/src/Network/NetworkController.cpp
  * M core/src/Variable/Variable.cpp
  * M core/src/Variable/VariableController.cpp
  * M core/src/Variable/VariableModel.cpp
  * M gui/include/Visualization/VisualizationGraphWidget.h
  * M gui/include/Visualization/VisualizationWidget.h
  * M gui/src/SqpApplication.cpp
  * M gui/src/Variable/VariableInspectorWidget.cpp
  * M gui/src/Visualization/VisualizationGraphHelper.cpp
  * M gui/src/Visualization/VisualizationGraphWidget.cpp
  * M gui/src/Visualization/VisualizationWidget.cpp
  * M gui/src/Visualization/VisualizationZoneWidget.cpp
  * M plugins/amda/include/AmdaProvider.h
  * M plugins/amda/src/AmdaProvider.cpp
  * M plugins/amda/src/AmdaResultParser.cpp
  * M plugins/amda/tests/TestAmdaResultParser.cpp
  * M plugins/mockplugin/include/CosinusProvider.h
  * M plugins/mockplugin/src/CosinusProvider.cpp
  * R COPYING
  * R app/ui/MainWindow.ui
  * R cmake/sciqlop_package_qt.cmake
  * R core/include/Common/MetaTypes.h
  * R core/include/Data/ArrayData.h
  * R core/include/Data/DataProviderParameters.h
  * R core/include/Data/DataSeries.h
  * R core/include/Data/IDataSeries.h
  * R core/include/Data/ScalarSeries.h
  * R core/include/Data/SqpDateTime.h
  * R core/include/Network/NetworkController.h
  * R core/include/Plugin/PluginManager.h
  * R core/include/Time/TimeController.h
  * R core/include/Variable/Variable.h
  * R core/include/Variable/VariableCacheController.h
  * R core/src/Data/ScalarSeries.cpp
  * R core/src/DataSource/DataSourceItemAction.cpp
  * R core/src/Plugin/PluginManager.cpp
  * R core/src/Time/TimeController.cpp
  * R core/src/Variable/VariableCacheController.cpp
  * R core/src/Visualization/VisualizationController.cpp
  * R core/tests/Variable/TestVariableCacheController.cpp
  * R gui/include/DataSource/DataSourceTreeWidgetItem.h
  * R gui/include/DataSource/DataSourceWidget.h
  * R gui/include/SidePane/SqpSidePane.h
  * R gui/include/TimeWidget/TimeWidget.h
  * R gui/include/Variable/VariableInspectorWidget.h
  * R gui/include/Variable/VariableMenuHeaderWidget.h
  * R gui/include/Visualization/IVariableContainer.h
  * R gui/include/Visualization/IVisualizationWidget.h
  * R gui/include/Visualization/IVisualizationWidgetVisitor.h
  * R gui/include/Visualization/VisualizationGraphHelper.h
  * R gui/include/Visualization/VisualizationTabWidget.h
  * R gui/include/Visualization/VisualizationZoneWidget.h
  * R gui/include/Visualization/operations/GenerateVariableMenuOperation.h
  * R gui/include/Visualization/operations/MenuBuilder.h
  * R gui/include/Visualization/operations/RemoveVariableOperation.h
  * R gui/include/Visualization/qcustomplot.h
  * R gui/resources/icones/dataSourceComponent.png
  * R gui/resources/icones/dataSourceNode.png
  * R gui/resources/icones/dataSourceProduct.png
  * R gui/resources/icones/dataSourceRoot.png
  * R gui/resources/icones/delete.png
  * R gui/resources/icones/next.png
  * R gui/resources/icones/openInspector.png
  * R gui/resources/icones/plot.png
  * R gui/resources/icones/previous.png
  * R gui/resources/icones/sciqlop2PNG_1024.png
  * R gui/resources/icones/unplot.png
  * R gui/resources/sqpguiresources.qrc
  * R gui/src/DataSource/DataSourceTreeWidgetItem.cpp
  * R gui/src/DataSource/DataSourceWidget.cpp
  * R gui/src/SidePane/SqpSidePane.cpp
  * R gui/src/TimeWidget/TimeWidget.cpp
  * R gui/src/Variable/VariableMenuHeaderWidget.cpp
  * R gui/src/Visualization/VisualizationTabWidget.cpp
  * R gui/src/Visualization/operations/GenerateVariableMenuOperation.cpp
  * R gui/src/Visualization/operations/MenuBuilder.cpp
  * R gui/src/Visualization/operations/RemoveVariableOperation.cpp
  * R gui/src/Visualization/qcustomplot.cpp
  * R gui/ui/DataSource/DataSourceWidget.ui
  * R gui/ui/SidePane/SqpSidePane.ui
  * R gui/ui/TimeWidget/TimeWidget.ui
  * R gui/ui/Variable/VariableInspectorWidget.ui
  * R gui/ui/Variable/VariableMenuHeaderWidget.ui
  * R gui/ui/Visualization/VisualizationGraphWidget.ui
  * R gui/ui/Visualization/VisualizationTabWidget.ui
  * R gui/ui/Visualization/VisualizationWidget.ui
  * R gui/ui/Visualization/VisualizationZoneWidget.ui
  * R gui/vera-exclusions/exclusions.txt
  * R plugin/CMakeLists.txt
  * R plugin/cmake/Findsciqlop-plugin.cmake
  * R plugin/include/Plugin/IPlugin.h
  * R plugins/amda/CMakeLists.txt
  * R plugins/amda/cmake/Findsciqlop-amda.cmake
  * R plugins/amda/include/AmdaDefs.h
  * R plugins/amda/include/AmdaGlobal.h
  * R plugins/amda/include/AmdaParser.h
  * R plugins/amda/include/AmdaPlugin.h
  * R plugins/amda/include/AmdaResultParser.h
  * R plugins/amda/resources/amda.json
  * R plugins/amda/resources/amdaresources.qrc
  * R plugins/amda/resources/samples/AmdaSample.json
  * R plugins/amda/src/AmdaDefs.cpp
  * R plugins/amda/src/AmdaParser.cpp
  * R plugins/amda/src/AmdaPlugin.cpp
  * R plugins/amda/tests-resources/TestAmdaParser/TwoRootsFile.json
  * R plugins/amda/tests-resources/TestAmdaParser/ValidFile1.json
  * R plugins/amda/tests-resources/TestAmdaParser/WrongRootKey.json
  * R plugins/amda/tests-resources/TestAmdaParser/WrongRootType.json
  * R plugins/amda/tests-resources/TestAmdaResultParser/NaNValue.txt
  * R plugins/amda/tests-resources/TestAmdaResultParser/NoUnit.txt
  * R plugins/amda/tests-resources/TestAmdaResultParser/TooManyValues.txt
  * R plugins/amda/tests-resources/TestAmdaResultParser/ValidScalar1.txt
  * R plugins/amda/tests-resources/TestAmdaResultParser/WrongDate.txt
  * R plugins/amda/tests-resources/TestAmdaResultParser/WrongUnit.txt
  * R plugins/amda/tests-resources/TestAmdaResultParser/WrongValue.txt
  * R plugins/amda/tests/TestAmdaParser.cpp
  * R plugins/mockplugin/CMakeLists.txt
  * R plugins/mockplugin/cmake/Findsciqlop-mockplugin.cmake
  * R plugins/mockplugin/include/MockPlugin.h
  * R plugins/mockplugin/include/MockPluginGlobal.h
  * R plugins/mockplugin/resources/mockplugin.json
  * R plugins/mockplugin/src/MockPlugin.cpp
  * R README.md
  * R app/CMakeLists.txt
  * R app/include/MainWindow.h
  * R app/src/Main.cpp
  * R app/vera-exclusions/exclusions.txt
  * R cmake/sciqlop.cmake
  * R cmake/sciqlop_applications.cmake
  * R cmake/sciqlop_package.cmake
  * R cmake/sciqlop_params.cmake
  * R core/CMakeLists.txt
  * R core/include/Common/spimpl.h
  * R core/include/DataSource/DataSourceController.h
  * R core/include/DataSource/DataSourceItem.h
  * R core/src/DataSource/DataSourceController.cpp
  * R core/src/DataSource/DataSourceItem.cpp
  * R core/tests/DataSource/TestDataSourceController.cpp
  * R core/vera-exclusions/exclusions.txt
  * R formatting/cmake/use_clangformat.cmake
  * R formatting/vera-exclusions/exclusions.txt
  * R gui/CMakeLists.txt
  * R gui/include/SqpApplication.h
  * R LICENSE
  * R app/src/mainwindow.cpp
  * R app/src/mainwindow.ui
Approved
author

Status change > Approved

You need to be logged in to leave comments. Login now