Fix ac charts also showing actions

This commit is contained in:
Michael Zanetti 2023-03-02 23:28:38 +01:00
parent b04ca3efe0
commit 7d671c652d
6 changed files with 68 additions and 16 deletions

View File

@ -120,11 +120,11 @@ quint64 BoolSeriesAdapter::findIndex(qulonglong timestamp)
int range = idx; int range = idx;
int i = 0; int i = 0;
while (true) { while (true) {
qWarning() << "CNT:" << m_series->count() // qWarning() << "CNT:" << m_series->count()
<< "first:" << QDateTime::fromMSecsSinceEpoch(m_series->at(1).x()) // << "first:" << QDateTime::fromMSecsSinceEpoch(m_series->at(1).x())
<< "last:" << QDateTime::fromMSecsSinceEpoch(m_series->at(m_series->count()- 2).x()) // << "last:" << QDateTime::fromMSecsSinceEpoch(m_series->at(m_series->count()- 2).x())
<< "current:" << idx << QDateTime::fromMSecsSinceEpoch(m_series->at(idx).x()) // << "current:" << idx << QDateTime::fromMSecsSinceEpoch(m_series->at(idx).x())
<< "search:" << QDateTime::fromMSecsSinceEpoch(timestamp); // << "search:" << QDateTime::fromMSecsSinceEpoch(timestamp);
if (timestamp >= m_series->at(idx).x() && timestamp < m_series->at(idx-1).x()) { if (timestamp >= m_series->at(idx).x() && timestamp < m_series->at(idx-1).x()) {
return idx; return idx;
} }

View File

@ -44,7 +44,6 @@ NYMEA_LOGGING_CATEGORY(dcLogEngine, "LogEngine")
LogsModel::LogsModel(QObject *parent) : QAbstractListModel(parent) LogsModel::LogsModel(QObject *parent) : QAbstractListModel(parent)
{ {
} }
Engine *LogsModel::engine() const Engine *LogsModel::engine() const
@ -209,6 +208,19 @@ void LogsModel::setViewStartTime(const QDateTime &viewStartTime)
} }
} }
LogsModel::SourceFilters LogsModel::sourceFilter() const
{
return m_sourceFilter;
}
void LogsModel::setSourceFilter(SourceFilters sourceFilter)
{
if (m_sourceFilter != sourceFilter) {
m_sourceFilter = sourceFilter;
emit sourceFilterChanged();
}
}
int LogsModel::fetchBlockSize() const int LogsModel::fetchBlockSize() const
{ {
return m_blockSize; return m_blockSize;
@ -403,6 +415,24 @@ void LogsModel::fetchMore(const QModelIndex &parent)
} }
params.insert("typeIds", typeIds); params.insert("typeIds", typeIds);
} }
QVariantList loggingSourceFilter;
QMetaEnum loggingSourcesEnum = QMetaEnum::fromType<LogEntry::LoggingSource>();
if (m_sourceFilter.testFlag(SourceSystem)) {
loggingSourceFilter.append(loggingSourcesEnum.valueToKey(LogEntry::LoggingSourceSystem));
}
if (m_sourceFilter.testFlag(SourceRules)) {
loggingSourceFilter.append(loggingSourcesEnum.valueToKey(LogEntry::LoggingSourceRules));
}
if (m_sourceFilter.testFlag(SourceEvents)) {
loggingSourceFilter.append(loggingSourcesEnum.valueToKey(LogEntry::LoggingSourceEvents));
}
if (m_sourceFilter.testFlag(SourceStates)) {
loggingSourceFilter.append(loggingSourcesEnum.valueToKey(LogEntry::LoggingSourceStates));
}
if (m_sourceFilter.testFlag(SourceActions)) {
loggingSourceFilter.append(loggingSourcesEnum.valueToKey(LogEntry::LoggingSourceActions));
}
params.insert("loggingSources", loggingSourceFilter);
if (!m_startTime.isNull() && !m_endTime.isNull()) { if (!m_startTime.isNull() && !m_endTime.isNull()) {
QVariantList timeFilters; QVariantList timeFilters;
QVariantMap timeFilter; QVariantMap timeFilter;
@ -416,7 +446,7 @@ void LogsModel::fetchMore(const QModelIndex &parent)
params.insert("offset", m_list.count() - m_generatedEntries); params.insert("offset", m_list.count() - m_generatedEntries);
qCInfo(dcLogEngine()) << "Fetching logs from:" << m_list.count() - m_generatedEntries << "max" << m_blockSize; qCInfo(dcLogEngine()) << "Fetching logs from:" << m_list.count() - m_generatedEntries << "max" << m_blockSize;
qCDebug(dcLogEngine()) << qUtf8Printable(QJsonDocument::fromVariant(params).toJson()); qCCritical(dcLogEngine()) << qUtf8Printable(QJsonDocument::fromVariant(params).toJson());
m_engine->jsonRpcClient()->sendCommand("Logging.GetLogEntries", params, this, "logsReply"); m_engine->jsonRpcClient()->sendCommand("Logging.GetLogEntries", params, this, "logsReply");
m_fetchStartTime = QDateTime::currentDateTime(); m_fetchStartTime = QDateTime::currentDateTime();

View File

@ -55,6 +55,7 @@ class LogsModel : public QAbstractListModel, public QQmlParserStatus
Q_PROPERTY(QDateTime startTime READ startTime WRITE setStartTime NOTIFY startTimeChanged) Q_PROPERTY(QDateTime startTime READ startTime WRITE setStartTime NOTIFY startTimeChanged)
Q_PROPERTY(QDateTime endTime READ endTime WRITE setEndTime NOTIFY endTimeChanged) Q_PROPERTY(QDateTime endTime READ endTime WRITE setEndTime NOTIFY endTimeChanged)
Q_PROPERTY(QDateTime viewStartTime READ viewStartTime WRITE setViewStartTime NOTIFY viewStartTimeChanged) Q_PROPERTY(QDateTime viewStartTime READ viewStartTime WRITE setViewStartTime NOTIFY viewStartTimeChanged)
Q_PROPERTY(SourceFilters sourceFilter READ sourceFilter WRITE setSourceFilter NOTIFY sourceFilterChanged)
Q_PROPERTY(int fetchBlockSize READ fetchBlockSize WRITE setFetchBlockSize NOTIFY fetchBlockSizeChanged) Q_PROPERTY(int fetchBlockSize READ fetchBlockSize WRITE setFetchBlockSize NOTIFY fetchBlockSizeChanged)
public: public:
@ -67,6 +68,18 @@ public:
RoleLoggingEventType, RoleLoggingEventType,
RoleErrorCode RoleErrorCode
}; };
enum SourceFilter {
SourceNone = 0x00,
SourceSystem = 0x01,
SourceRules = 0x02,
SourceEvents = 0x04,
SourceStates = 0x08,
SourceActions = 0x10,
SourceAll = 0xff
};
Q_DECLARE_FLAGS(SourceFilters, SourceFilter)
Q_FLAG(SourceFilters)
explicit LogsModel(QObject *parent = nullptr); explicit LogsModel(QObject *parent = nullptr);
virtual ~LogsModel() = default; virtual ~LogsModel() = default;
@ -100,6 +113,9 @@ public:
QDateTime viewStartTime() const; QDateTime viewStartTime() const;
void setViewStartTime(const QDateTime &viewStartTime); void setViewStartTime(const QDateTime &viewStartTime);
SourceFilters sourceFilter() const;
void setSourceFilter(SourceFilters sourceFilter);
int fetchBlockSize() const; int fetchBlockSize() const;
void setFetchBlockSize(int fetchBlockSize); void setFetchBlockSize(int fetchBlockSize);
@ -117,6 +133,7 @@ signals:
void startTimeChanged(); void startTimeChanged();
void endTimeChanged(); void endTimeChanged();
void viewStartTimeChanged(); void viewStartTimeChanged();
void sourceFilterChanged();
void fetchBlockSizeChanged(); void fetchBlockSizeChanged();
void logEntryAdded(LogEntry *entry); void logEntryAdded(LogEntry *entry);
@ -133,6 +150,7 @@ protected:
QDateTime m_startTime; QDateTime m_startTime;
QDateTime m_endTime; QDateTime m_endTime;
QDateTime m_viewStartTime; QDateTime m_viewStartTime;
SourceFilters m_sourceFilter = SourceAll;
bool m_busy = false; bool m_busy = false;
bool m_live = false; bool m_live = false;

View File

@ -53,11 +53,11 @@ class LogEntry : public QObject
public: public:
enum LoggingSource { enum LoggingSource {
LoggingSourceSystem, LoggingSourceSystem = 0x01,
LoggingSourceEvents, LoggingSourceEvents = 0x02,
LoggingSourceActions, LoggingSourceActions = 0x04,
LoggingSourceStates, LoggingSourceStates = 0x08,
LoggingSourceRules LoggingSourceRules = 0x10
}; };
Q_ENUM(LoggingSource) Q_ENUM(LoggingSource)
Q_DECLARE_FLAGS(LoggingSources, LoggingSource) Q_DECLARE_FLAGS(LoggingSources, LoggingSource)

View File

@ -208,6 +208,7 @@ Page {
engine: typeIds.length > 0 ? _engine : null engine: typeIds.length > 0 ? _engine : null
thingId: thing.id thingId: thing.id
live: true live: true
sourceFilter: LogsModel.SourceStates
// graphSeries: series // graphSeries: series
viewStartTime: new Date(d.startTime.getTime() - d.range * 60000) viewStartTime: new Date(d.startTime.getTime() - d.range * 60000)
@ -256,6 +257,7 @@ Page {
objectName: "temp: " + thing.name objectName: "temp: " + thing.name
engine: typeIds.length > 0 ? _engine : null engine: typeIds.length > 0 ? _engine : null
thingId: thing.id thingId: thing.id
sourceFilter: LogsModel.SourceStates
live: true live: true
// graphSeries: series // graphSeries: series
viewStartTime: new Date(d.startTime.getTime() - d.range * 60000) viewStartTime: new Date(d.startTime.getTime() - d.range * 60000)
@ -305,6 +307,7 @@ Page {
objectName: "hum: " + thing.name objectName: "hum: " + thing.name
engine: typeIds.length > 0 ? _engine : null engine: typeIds.length > 0 ? _engine : null
thingId: thing.id thingId: thing.id
sourceFilter: LogsModel.SourceStates
live: true live: true
// graphSeries: series // graphSeries: series
viewStartTime: new Date(d.startTime.getTime() - d.range * 60000) viewStartTime: new Date(d.startTime.getTime() - d.range * 60000)
@ -351,6 +354,7 @@ Page {
objectName: "voc: " + thing.name objectName: "voc: " + thing.name
engine: typeIds.length > 0 ? _engine : null engine: typeIds.length > 0 ? _engine : null
thingId: thing.id thingId: thing.id
sourceFilter: LogsModel.SourceStates
live: true live: true
// graphSeries: series // graphSeries: series
viewStartTime: new Date(d.startTime.getTime() - d.range * 60000) viewStartTime: new Date(d.startTime.getTime() - d.range * 60000)
@ -411,6 +415,7 @@ Page {
ret.push(thing.thingClass.stateTypes.findByName("closed").id) ret.push(thing.thingClass.stateTypes.findByName("closed").id)
return ret; return ret;
} }
sourceFilter: LogsModel.SourceStates
live: true live: true
viewStartTime: new Date(d.startTime.getTime() - d.range * 60000) viewStartTime: new Date(d.startTime.getTime() - d.range * 60000)
} }
@ -465,13 +470,12 @@ Page {
typeIds: { typeIds: {
var ret = []; var ret = [];
var heatingOnStateType = thing.thingClass.stateTypes.findByName("heatingOn") var heatingOnStateType = thing.thingClass.stateTypes.findByName("heatingOn")
print("**** has heatingOn")
if (heatingOnStateType) { if (heatingOnStateType) {
print("**** true")
ret.push(heatingOnStateType.id) ret.push(heatingOnStateType.id)
} }
return ret; return ret;
} }
sourceFilter: LogsModel.SourceStates
live: true live: true
// graphSeries: heatingUpperSeries // graphSeries: heatingUpperSeries
viewStartTime: dateTimeAxis.min viewStartTime: dateTimeAxis.min

View File

@ -478,11 +478,11 @@ Item {
return Math.abs(Math.min(0, entry.production)) return Math.abs(Math.min(0, entry.production))
} }
function addEntry(entry) { function addEntry(entry) {
print("appending!", entry.timestamp, entry.value) // print("appending!", entry.timestamp, entry.value)
append(entry.timestamp.getTime(), calculateValue(entry)) append(entry.timestamp.getTime(), calculateValue(entry))
} }
function insertEntry(index, entry) { function insertEntry(index, entry) {
print("inserting!", index, entry.timestamp, entry.value) // print("inserting!", index, entry.timestamp, entry.value)
insert(index, entry.timestamp.getTime(), calculateValue(entry)) insert(index, entry.timestamp.getTime(), calculateValue(entry))
} }
} }