diff --git a/gui/src/Visualization/AxisRenderingUtils.cpp b/gui/src/Visualization/AxisRenderingUtils.cpp index f5ce4cb..2ff3f44 100644 --- a/gui/src/Visualization/AxisRenderingUtils.cpp +++ b/gui/src/Visualization/AxisRenderingUtils.cpp @@ -101,7 +101,9 @@ struct AxisSetter: auto valuesUnit = dataSeries.valuesUnit(); dataSeries.unlock(); - setAxisProperties(*plot.xAxis, xAxisUnit); +// setAxisProperties(*plot.xAxis, xAxisUnit); + // This is cheating but it's ok ;) + setAxisProperties(*plot.xAxis, Unit{"s", true}); setAxisProperties(*plot.yAxis, valuesUnit); } }; @@ -138,7 +140,9 @@ struct AxisSetteraxis(), valuesUnit, QCPAxis::stLogarithmic); } diff --git a/gui/src/Visualization/VisualizationGraphWidget.cpp b/gui/src/Visualization/VisualizationGraphWidget.cpp index 9466168..9e80723 100644 --- a/gui/src/Visualization/VisualizationGraphWidget.cpp +++ b/gui/src/Visualization/VisualizationGraphWidget.cpp @@ -471,12 +471,23 @@ void VisualizationGraphWidget::addVariable(std::shared_ptr variable, D impl->m_VariableToPlotMultiMap.insert({variable, std::move(createdPlottables)}); + setGraphRange(range); // If the variable already has its data loaded, load its units and its range in the graph if (variable->dataSeries() != nullptr) { impl->m_RenderingDelegate->setAxesUnits(*variable); - this->setFlags(GraphFlag::DisableAll); - setGraphRange(range); - this->setFlags(GraphFlag::EnableAll); + } + else + { + auto context = new QObject{this}; + connect(variable.get(), &Variable::updated, context, + [this, variable, context, range](QUuid) + { + this->impl->m_RenderingDelegate->setAxesUnits(*variable); + this->impl->rescaleY(); + this->impl->m_plot->replot(QCustomPlot::rpQueuedReplot); + delete context; + } + ); } //@TODO this is bad! when variable is moved to another graph it still fires // even if this has been deleted diff --git a/gui/src/Visualization/VisualizationZoneWidget.cpp b/gui/src/Visualization/VisualizationZoneWidget.cpp index 4bf69f5..a3e886f 100644 --- a/gui/src/Visualization/VisualizationZoneWidget.cpp +++ b/gui/src/Visualization/VisualizationZoneWidget.cpp @@ -528,10 +528,26 @@ void VisualizationZoneWidget::dropMimeDataOnGraph(VisualizationDragWidget *dragW mimeData->data(MIME_TYPE_PRODUCT_LIST)); auto context = new QObject{this}; + auto range = TimeController::timeRangeForMimeData(mimeData->data(MIME_TYPE_TIME_RANGE)); + // BTW this is really dangerous, this assumes the next created variable will be this one... connect(&sqpApp->variableController(), &VariableController2::variableAdded, context, - [this, graphWidget, context](auto variable) { - graphWidget->addVariable(variable, graphWidget->graphRange()); - delete context; // removes the connection + [this, graphWidget, context, range](auto variable) { + if(sqpApp->variableController().isReady(variable)) + { + graphWidget->addVariable(variable, range); + delete context; + } + else + { + // -> this is pure insanity! this is a workaround to make a bad design work + QObject::connect(variable.get(), &Variable::updated,context, + [graphWidget, context, range, variable]() + { + graphWidget->addVariable(variable, range); + delete context; + }); + } + }, Qt::QueuedConnection);