diff --git a/include/alarmEventDataView.h b/include/alarmEventDataView.h index 7716326..d3d5bd8 100644 --- a/include/alarmEventDataView.h +++ b/include/alarmEventDataView.h @@ -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 m_displayEvents; //当前(页)展示的事件 QVector m_allEvents; //所有事件 + QVector m_filteredEvents; //过滤后的事件 + QVector m_displayEvents; //当前(页)展示的事件 QVector m_headerData; PaginationInfo m_paginationInfo; diff --git a/source/alarmEventDataView.cpp b/source/alarmEventDataView.cpp index 980ae86..25c8965 100644 --- a/source/alarmEventDataView.cpp +++ b/source/alarmEventDataView.cpp @@ -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(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() { //模拟实时告警数据