feat:完成历史告警数据的加载逻辑

This commit is contained in:
duanshengchao 2025-10-24 17:28:14 +08:00
parent ed64a0378d
commit b22eedf228
2 changed files with 38 additions and 12 deletions

View File

@ -106,13 +106,14 @@ private:
private: private:
void iniHeaderData(); void iniHeaderData();
void updateCurPageData(); //更新当前页的数据 void updatePaginationInfo();
void updateTotalCount(); //更新总记录数
int findEventDataIndexById(const QString& eventId); int findEventDataIndexById(const QString& eventId);
void updateEventData(int index, const EventData& updatedEvent); void updateEventData(int index, const EventData& updatedEvent);
void updateCurPageData();
QVector<EventData> m_displayEvents; //当前(页)展示的事件
QVector<EventData> m_allEvents; //所有事件 QVector<EventData> m_allEvents; //所有事件
QVector<EventData> m_filteredEvents; //过滤后的事件
QVector<EventData> m_displayEvents; //当前(页)展示的事件
QVector<SectionData> m_headerData; QVector<SectionData> m_headerData;
PaginationInfo m_paginationInfo; PaginationInfo m_paginationInfo;

View File

@ -70,7 +70,7 @@ AlarmEventDataModel::AlarmEventDataModel(QObject* parent)
//实时数据测试 //实时数据测试
m_simulatedDataTimer = new QTimer(this); m_simulatedDataTimer = new QTimer(this);
connect(m_simulatedDataTimer, &QTimer::timeout, this, &AlarmEventDataModel::onTimeoutSimulateData); connect(m_simulatedDataTimer, &QTimer::timeout, this, &AlarmEventDataModel::onTimeoutSimulateData);
m_simulatedDataTimer->start(5000); m_simulatedDataTimer->start(2500);
} }
AlarmEventDataModel::~AlarmEventDataModel() AlarmEventDataModel::~AlarmEventDataModel()
@ -218,19 +218,30 @@ void AlarmEventDataModel::applyFilter()
{} {}
void AlarmEventDataModel::refresh() void AlarmEventDataModel::refresh()
{}
void AlarmEventDataModel::updateCurPageData()
{ {
beginResetModel(); m_allEvents.clear();
m_filteredEvents.clear();
m_displayEvents.clear(); //1.通过服务获取当前时间段的所有事件-m_allEvents
endResetModel(); //2.过滤事件(时间区间作为服务请求参数,其它过滤在本地完成)-m_filteredEvents
if(m_allEvents.size() > 0)
{}
//3.更新页码数据
updatePaginationInfo();
//4.根据页码刷新当前页面数据()-m_displayEvents
updateCurPageData();
} }
void AlarmEventDataModel::updateTotalCount() void AlarmEventDataModel::updatePaginationInfo()
{} {
m_paginationInfo.totalEntries = m_filteredEvents.size();
m_paginationInfo.totalPages = qCeil(static_cast<qreal>(m_paginationInfo.totalEntries) / m_paginationInfo.entriesPerPage);
if(m_paginationInfo.totalPages == 0)
m_paginationInfo.currentPage = 1;
else if(m_paginationInfo.currentPage > m_paginationInfo.totalPages)
m_paginationInfo.currentPage = m_paginationInfo.totalPages;
}
int AlarmEventDataModel::findEventDataIndexById(const QString& eventId) int AlarmEventDataModel::findEventDataIndexById(const QString& eventId)
{ {
@ -254,6 +265,20 @@ void AlarmEventDataModel::updateEventData(int index, const EventData& updatedEve
emit dataChanged(modelIndex, modelIndex); emit dataChanged(modelIndex, modelIndex);
} }
void AlarmEventDataModel::updateCurPageData()
{
m_displayEvents.clear();
int startIndex = (m_paginationInfo.currentPage - 1) * m_paginationInfo.entriesPerPage;
int endIndex = qMin(startIndex + m_paginationInfo.entriesPerPage, m_filteredEvents.size());
beginResetModel();
if(startIndex < m_filteredEvents.size())
m_displayEvents = m_filteredEvents.mid(startIndex, endIndex - startIndex);
endResetModel();
}
void AlarmEventDataModel::onTimeoutSimulateData() void AlarmEventDataModel::onTimeoutSimulateData()
{ {
//模拟实时告警数据 //模拟实时告警数据