diff --git a/dataPanel/dpBarsChart.cpp b/dataPanel/dpBarsChart.cpp index ec66ad0..02a31dc 100644 --- a/dataPanel/dpBarsChart.cpp +++ b/dataPanel/dpBarsChart.cpp @@ -132,6 +132,8 @@ dpBarsChart::dpBarsChart(QWidget* parent) dpBarsChart::~dpBarsChart() { + if(!m_requestDataList.isEmpty()) + MeasurementDataManager::instance()->cancelRequest(m_requestDataList, this); } void dpBarsChart::initQCP() @@ -244,6 +246,8 @@ void dpBarsChart::synchronizeConfigData(const configurationResults& cfg) QVector tickLabels; QHash> groupedBars; //按数据类型对bar进行分组,以实现可以按组放置以及设置颜色等操作 + QStringList newRequestDataList; + QStringList cancelRequestDataList; for(int i = 0; i < cfg.m_pModel_dataSource->rowCount(); i++) { QString itemText = cfg.m_pModel_dataSource->item(i, 0)->text(); @@ -293,8 +297,25 @@ void dpBarsChart::synchronizeConfigData(const configurationResults& cfg) double randomFloat = min + QRandomGenerator::global()->generateDouble() * (max - min); return QVariant::fromValue(randomFloat); });*/ + + newRequestDataList << dataID; } + QSet dataSet(newRequestDataList.begin(), newRequestDataList.end()); + for(const QString& data : std::as_const(m_requestDataList)) + { + if(!dataSet.contains(data)) + cancelRequestDataList << data; + } + + //获取实时数据 + if(!cancelRequestDataList.isEmpty()) + MeasurementDataManager::instance()->cancelRequest(cancelRequestDataList, this); + if(!newRequestDataList.isEmpty()) + MeasurementDataManager::instance()->requestData(newRequestDataList, this); + + m_requestDataList = QStringList(std::move(newRequestDataList)); + if(groupByType) { for(auto it = groupedBars.begin(); it != groupedBars.end(); ++it) diff --git a/dataPanel/dpBarsChart.h b/dataPanel/dpBarsChart.h index eec1451..bef7d8c 100644 --- a/dataPanel/dpBarsChart.h +++ b/dataPanel/dpBarsChart.h @@ -81,6 +81,7 @@ private: QHash m_bars; QHash m_barsGroups; bool m_updateData; + QStringList m_requestDataList; }; #endif diff --git a/source/measurementDataManager.cpp b/source/measurementDataManager.cpp index 90e6e17..8002a41 100644 --- a/source/measurementDataManager.cpp +++ b/source/measurementDataManager.cpp @@ -309,7 +309,7 @@ void MeasurementDataManager::requestData(const QStringList& measurements, QObjec for(const QString& dataID : measurements) { auto it = m_dataRequesetRecord.find(dataID); - if(it != m_dataRequesetRecord.end() && !it.value().contains(requester)) + if(it != m_dataRequesetRecord.end()/* && !it.value().contains(requester)*/) it.value().insert(requester); else {