Skip to content
Snippets Groups Projects
Commit c57f7380 authored by Yurov, Dmitry's avatar Yurov, Dmitry
Browse files

Graph data updated on units change

Redmine: #2106
parent 2a7dc848
No related branches found
No related tags found
No related merge requests found
......@@ -165,6 +165,16 @@ void DataItem1DView::resetToDefault()
setAxesRangeToData();
}
QPair<QVector<double>, QVector<double>> DataItem1DView::graphData(Data1DProperties* property_item)
{
const auto data = DataViewUtils::getTranslatedData(this, property_item->dataItem());
if (!data)
return {};
data->getRawDataVector();
return {QVector<double>::fromStdVector(data->getAxis(0).getBinCenters()),
QVector<double>::fromStdVector(data->getRawDataVector())};
}
void DataItem1DView::setLowerX(double xmin)
{
getItem(P_XAXIS)->setItemValue(BasicAxisItem::P_MIN, xmin);
......
......@@ -67,6 +67,9 @@ public:
//! Returns data view to default state (no dimensional units, default axes' names)
void resetToDefault();
//! Returns point data for drawing
QPair<QVector<double>, QVector<double>> graphData(Data1DProperties* property_item);
public slots:
void setLowerX(double xmin);
void setUpperX(double xmax);
......
......@@ -81,6 +81,7 @@ void Plot1D::onPropertyChanged(const QString& property_name)
if (property_name == DataItem1DView::P_AXES_UNITS) {
setAxesRangeFromItem(viewItem());
setDataFromItem(viewItem());
replot();
}
}
......@@ -191,7 +192,6 @@ void Plot1D::refreshPlotData()
m_block_update = true;
std::for_each(m_graph_map.begin(), m_graph_map.end(), [](auto pair){pair.second->data()->clear();});
setAxesRangeFromItem(view_item);
setAxesLabelsFromItem(view_item);
setDataFromItem(view_item);
......@@ -228,22 +228,16 @@ void Plot1D::setLabel(const BasicAxisItem* item, QCPAxis* axis, QString label)
axis->setLabel(QString());
}
void Plot1D::setDataFromItem(DataItem1DView* item)
void Plot1D::setDataFromItem(DataItem1DView* view_item)
{
assert(item);
auto property_items = item->propertyItems<Data1DProperties>();
assert(view_item);
auto property_items = view_item->propertyItems<Data1DProperties>();
std::for_each(property_items.begin(), property_items.end(),
[this](Data1DProperties* item) {
auto data = item->dataItem()->getOutputData();
if (!data)
return;
[this, view_item](Data1DProperties* item) {
auto data_points = view_item->graphData(item);
auto graph = m_graph_map.at(item);
for (size_t i = 0, size = data->getAllocatedSize(); i < size; ++i) {
double x = data->getAxisValue(i, 0);
double y = data->operator[](i);
graph->addData(x, y);
}
graph->setData(data_points.first, data_points.second, /*sorted =*/ true);
});
}
......
......@@ -93,7 +93,7 @@ private:
void setLabel(const BasicAxisItem* item, QCPAxis* axis, QString label);
//! Sets data item values to graphs.
void setDataFromItem(DataItem1DView* item);
void setDataFromItem(DataItem1DView* view_item);
DataItem1DView* viewItem();
const DataItem1DView* viewItem() const;
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment