feat:添加报警事件数据条件过滤模块
This commit is contained in:
parent
b22eedf228
commit
8a524a5e0d
|
|
@ -22,8 +22,11 @@ public:
|
|||
|
||||
bool matches(const EventData& event);
|
||||
void clear();
|
||||
QVector<EventData> apply(const QVector<EventData>& events);
|
||||
|
||||
private:
|
||||
bool isEmpty();
|
||||
|
||||
QDateTime m_startTime;
|
||||
QDateTime m_endTime;
|
||||
QString m_station;
|
||||
|
|
|
|||
|
|
@ -55,6 +55,35 @@ void AlarmEventDataFilter::clear()
|
|||
m_status = -1;
|
||||
}
|
||||
|
||||
QVector<EventData> AlarmEventDataFilter::apply(const QVector<EventData>& events)
|
||||
{
|
||||
if(isEmpty())
|
||||
return events;
|
||||
|
||||
QVector<EventData> filteredEvents;
|
||||
filteredEvents.reserve(events.size()); //分配好内存,防止后面执行append时造成的多次扩容开销
|
||||
|
||||
for(const EventData& event : events)
|
||||
{
|
||||
if(matches(event))
|
||||
filteredEvents.append(event);
|
||||
}
|
||||
|
||||
return filteredEvents; //RVO + QT的隐式共享(QVector),不用担心开销
|
||||
}
|
||||
|
||||
bool AlarmEventDataFilter::isEmpty()
|
||||
{
|
||||
return !m_startTime.isValid() &&
|
||||
!m_endTime.isValid() &&
|
||||
m_station.isEmpty() &&
|
||||
m_bay.isEmpty() &&
|
||||
m_type == -1 &&
|
||||
m_severity.isEmpty() &&
|
||||
m_description.isEmpty() &&
|
||||
m_status == -1;
|
||||
}
|
||||
|
||||
|
||||
///////------AlarmEventDataModel-----
|
||||
AlarmEventDataModel::AlarmEventDataModel(QObject* parent)
|
||||
|
|
|
|||
Loading…
Reference in New Issue