From 85f427f84e81a8737bf15a3bd3de51c7694ef6fa 2017-07-03 09:25:27 From: mperrinel Date: 2017-07-03 09:25:27 Subject: [PATCH] variable time is now set to range graphe displayed when it is displayed in it --- diff --git a/gui/include/Visualization/VisualizationGraphWidget.h b/gui/include/Visualization/VisualizationGraphWidget.h index 5e0d037..da3e1bd 100644 --- a/gui/include/Visualization/VisualizationGraphWidget.h +++ b/gui/include/Visualization/VisualizationGraphWidget.h @@ -28,6 +28,7 @@ public: virtual ~VisualizationGraphWidget(); void addVariable(std::shared_ptr variable); + void addVariableUsingGraph(std::shared_ptr variable); /// Removes a variable from the graph void removeVariable(std::shared_ptr variable) noexcept; diff --git a/gui/src/Visualization/VisualizationGraphWidget.cpp b/gui/src/Visualization/VisualizationGraphWidget.cpp index 059beb8..ffe2f2f 100644 --- a/gui/src/Visualization/VisualizationGraphWidget.cpp +++ b/gui/src/Visualization/VisualizationGraphWidget.cpp @@ -80,6 +80,38 @@ void VisualizationGraphWidget::addVariable(std::shared_ptr variable) connect(variable.get(), SIGNAL(updated()), this, SLOT(onDataCacheVariableUpdated())); } +void VisualizationGraphWidget::addVariableUsingGraph(std::shared_ptr variable) +{ + + // when adding a variable, we need to set its time range to the current graph range + auto grapheRange = ui->widget->xAxis->range(); + auto dateTime = SqpDateTime{grapheRange.lower, grapheRange.upper}; + variable->setDateTime(dateTime); + qCInfo(LOG_VisualizationGraphWidget()) << "ADD Variable with range : " << dateTime; + + auto variableDateTimeWithTolerance = dateTime; + + // add 10% tolerance for each side + auto tolerance = 0.1 * (dateTime.m_TEnd - dateTime.m_TStart); + variableDateTimeWithTolerance.m_TStart -= tolerance; + variableDateTimeWithTolerance.m_TEnd += tolerance; + + qCInfo(LOG_VisualizationGraphWidget()) << "ADD Variable with range TOL: " + << variableDateTimeWithTolerance; + + // Uses delegate to create the qcpplot components according to the variable + auto createdPlottables = VisualizationGraphHelper::create(variable, *ui->widget); + + for (auto createdPlottable : qAsConst(createdPlottables)) { + impl->m_VariableToPlotMultiMap.insert({variable, createdPlottable}); + } + + connect(variable.get(), SIGNAL(updated()), this, SLOT(onDataCacheVariableUpdated())); + + // CHangement detected, we need to ask controller to request data loading + emit requestDataLoading(variable, variableDateTimeWithTolerance); +} + void VisualizationGraphWidget::removeVariable(std::shared_ptr variable) noexcept { // Each component associated to the variable : diff --git a/gui/src/Visualization/operations/GenerateVariableMenuOperation.cpp b/gui/src/Visualization/operations/GenerateVariableMenuOperation.cpp index 37f1955..dec20d8 100644 --- a/gui/src/Visualization/operations/GenerateVariableMenuOperation.cpp +++ b/gui/src/Visualization/operations/GenerateVariableMenuOperation.cpp @@ -137,7 +137,7 @@ void GenerateVariableMenuOperation::visit(VisualizationGraphWidget *graphWidget) if (graphWidget) { impl->visitLeaf( *graphWidget, QObject::tr("Open in %1").arg(graphWidget->name()), - [ var = impl->m_Variable, graphWidget ]() { graphWidget->addVariable(var); }); + [ var = impl->m_Variable, graphWidget ]() { graphWidget->addVariableUsingGraph(var); }); } else { qCCritical(LOG_GenerateVariableMenuOperation(),