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

View File

@ -70,7 +70,7 @@ AlarmEventDataModel::AlarmEventDataModel(QObject* parent)
//实时数据测试
m_simulatedDataTimer = new QTimer(this);
connect(m_simulatedDataTimer, &QTimer::timeout, this, &AlarmEventDataModel::onTimeoutSimulateData);
m_simulatedDataTimer->start(5000);
m_simulatedDataTimer->start(2500);
}
AlarmEventDataModel::~AlarmEventDataModel()
@ -218,19 +218,30 @@ void AlarmEventDataModel::applyFilter()
{}
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)
{
@ -254,6 +265,20 @@ void AlarmEventDataModel::updateEventData(int index, const EventData& updatedEve
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()
{
//模拟实时告警数据