diff --git a/KelvinDashboardGUI/DapServiceController.cpp b/KelvinDashboardGUI/DapServiceController.cpp index 8543ef039b3ed34f5992bb6b921999ef803fe351..e1c01a2ed4f782519f4969cf0b62ab2f88a7f1b2 100644 --- a/KelvinDashboardGUI/DapServiceController.cpp +++ b/KelvinDashboardGUI/DapServiceController.cpp @@ -76,28 +76,37 @@ void DapServiceController::getWallets() const /// @param aNodeLogs List of node logs. void DapServiceController::processGetNodeLogs(const QStringList &aNodeLogs) { - for(QString s : aNodeLogs) + int counter {0}; + QStringList list; + for(int x{0}; x < aNodeLogs.size(); ++x) { - qDebug() << s; - QStringList tempList = s.split(" "); - DapLogMessage message; - if(tempList.at(1) == "[INF]") - message.setType(Type::Info); - else if(tempList.at(1) == "[WRN]") - message.setType(Type::Warning); - else if(tempList.at(1) == "[DBG]") - message.setType(Type::Debug); - else if(tempList.at(1) == "[ERR]") - message.setType(Type::Error); - QString str = tempList.at(0); - message.setTimeStamp(str.remove("[").remove("]")); - QStringList tempList2 = tempList.at(2).split("\t"); - QString str2 = tempList2.at(0); - message.setFile(str2.remove("[").remove("]")); - QString str3 = s.split("\t").at(1); - int pos = str3.indexOf('\n'); - message.setMessage(str3.remove(pos, str3.size()-pos)); - DapLogModel::getInstance().append(message); + qDebug() << aNodeLogs[x]; + if(counter == 4) + { + DapLogMessage message; + message.setTimeStamp(list.at(0)); + if(list.at(1) == "INF") + message.setType(Type::Info); + else if(list.at(1) == "WRN") + message.setType(Type::Warning); + else if(list.at(1) == "DBG") + message.setType(Type::Debug); + else if(list.at(1) == "ERR") + message.setType(Type::Error); + else if(list.at(1) == " * ") + message.setType(Type::Error); + message.setFile(list.at(2)); + message.setMessage(list.at(3)); + DapLogModel::getInstance().append(message); + list.clear(); + counter = 0; + --x; + } + else + { + list.append(aNodeLogs[x]); + ++counter; + } } } diff --git a/KelvinDashboardGUI/DapUiQmlWidgetChainNodeLogs.ui.qml b/KelvinDashboardGUI/DapUiQmlWidgetChainNodeLogs.ui.qml index ae9cd76bc17319c602ee1c054f4d8df3ecb5fd12..c1719d28d778140de89748fba0f1848a412e14de 100644 --- a/KelvinDashboardGUI/DapUiQmlWidgetChainNodeLogs.ui.qml +++ b/KelvinDashboardGUI/DapUiQmlWidgetChainNodeLogs.ui.qml @@ -16,15 +16,15 @@ Page { name: "Node 1" } - ListElement - { - name: "Node 2" - } +// ListElement +// { +// name: "Node 2" +// } - ListElement - { - name: "Node 3" - } +// ListElement +// { +// name: "Node 3" +// } } TabView @@ -55,18 +55,22 @@ Page { TableViewColumn { id: columnType -// role: "type" + role: "type" title: "Type" delegate: Item{ - Image { - id: names - anchors.centerIn: parent - source: "qrc:/Resources/Icons/dialog.png" - width: 14 - height: 14 - } + Text { + anchors.centerIn: parent + renderType: Text.NativeRendering + text: styleData.value + } +// Image { +// anchors.centerIn: parent +// source: styleData.value +// width: 14 +// height: 14 +// } } } TableViewColumn { diff --git a/KelvinDashboardGUI/Resources/Icons/dialog-error.png b/KelvinDashboardGUI/Resources/Icons/dialog-error.png new file mode 100644 index 0000000000000000000000000000000000000000..eebba2729b5dce38ccf44e7ff6c8e2fedfbf1ae0 Binary files /dev/null and b/KelvinDashboardGUI/Resources/Icons/dialog-error.png differ diff --git a/KelvinDashboardGUI/Resources/Icons/dialog-information.png b/KelvinDashboardGUI/Resources/Icons/dialog-information.png new file mode 100644 index 0000000000000000000000000000000000000000..42e42c6144ff2ee5ee48c9a102a5e27ed85e67c6 Binary files /dev/null and b/KelvinDashboardGUI/Resources/Icons/dialog-information.png differ diff --git a/KelvinDashboardGUI/Resources/Icons/dialog-question.png b/KelvinDashboardGUI/Resources/Icons/dialog-question.png new file mode 100644 index 0000000000000000000000000000000000000000..441fd9363c24a4cd4bebd27fcb8e932fabce9869 Binary files /dev/null and b/KelvinDashboardGUI/Resources/Icons/dialog-question.png differ diff --git a/KelvinDashboardGUI/Resources/Icons/dialog-warning.png b/KelvinDashboardGUI/Resources/Icons/dialog-warning.png new file mode 100644 index 0000000000000000000000000000000000000000..4149e3d1e04397814fbf114062339b9110f535f9 Binary files /dev/null and b/KelvinDashboardGUI/Resources/Icons/dialog-warning.png differ diff --git a/KelvinDashboardGUI/Resources/Icons/dialog.png b/KelvinDashboardGUI/Resources/Icons/dialog.png deleted file mode 100644 index 176bc26d4962885d56ed46d4c7fb9c62f195529e..0000000000000000000000000000000000000000 Binary files a/KelvinDashboardGUI/Resources/Icons/dialog.png and /dev/null differ diff --git a/KelvinDashboardGUI/qml.qrc b/KelvinDashboardGUI/qml.qrc index 4d465d5ce350680b684637f53e46c55395c2875c..eedcc5cd713a57ab8abb8e01513b1de28db108a7 100755 --- a/KelvinDashboardGUI/qml.qrc +++ b/KelvinDashboardGUI/qml.qrc @@ -24,10 +24,13 @@ <file>Resources/Icons/about.png</file> <file>Resources/Icons/home.png</file> <file>Resources/Icons/settings.png</file> - <file>Resources/Icons/dialog.png</file> <file>Resources/Icons/exit.png</file> <file>DapUiQmlScreenDialogAddWallet.qml</file> <file>DapUiQmlWidgetChainWallet.qml</file> <file>DapUiQmlWidgetChainWalletForm.ui.qml</file> + <file>Resources/Icons/dialog-error.png</file> + <file>Resources/Icons/dialog-information.png</file> + <file>Resources/Icons/dialog-question.png</file> + <file>Resources/Icons/dialog-warning.png</file> </qresource> </RCC> diff --git a/KelvinDashboardService/DapChainDashboardService.cpp b/KelvinDashboardService/DapChainDashboardService.cpp index b5530fcc0d07887f65829a66dde5fd0021d1dfb8..f1d558c5b33ac5ab9cdabbda14888508fb4ed82d 100755 --- a/KelvinDashboardService/DapChainDashboardService.cpp +++ b/KelvinDashboardService/DapChainDashboardService.cpp @@ -3,7 +3,7 @@ DapChainDashboardService::DapChainDashboardService() : DapRpcService(nullptr) { // Log reader - m_pDapLogReader = new DapLogReader(this); + m_pDapChainLogHandler = new DapChainLogHandler(this); m_pDapChainWalletHandler = new DapChainWalletHandler(this); @@ -38,7 +38,7 @@ bool DapChainDashboardService::start() QStringList DapChainDashboardService::getNodeLogs(int aiTimeStamp, int aiRowCount) { qInfo() << QString("getNodeLogs(%1, %2)").arg(aiTimeStamp).arg(aiRowCount); - return m_pDapLogReader->request(aiTimeStamp, aiRowCount); + return m_pDapChainLogHandler->request(aiTimeStamp, aiRowCount); } QStringList DapChainDashboardService::addWallet(const QString &asWalletName) diff --git a/KelvinDashboardService/DapChainDashboardService.h b/KelvinDashboardService/DapChainDashboardService.h index 6c0f7399e78a189b06835c81ac697484d77117de..1e4f2663e0dbc5f790dd8a0a8fda3b8af3d00321 100755 --- a/KelvinDashboardService/DapChainDashboardService.h +++ b/KelvinDashboardService/DapChainDashboardService.h @@ -23,7 +23,7 @@ #include "DapRpcTCPServer.h" #include "DapRpcService.h" -#include "DapLogReader.h" +#include "DapChainLogHandler.h" #include "DapChainWalletHandler.h" #include <QLocalServer> @@ -39,7 +39,7 @@ class DapChainDashboardService : public DapRpcService /// Socket of client connection with the service. DapUiSocketServer * m_pSocketService {nullptr}; /// Log reader. - DapLogReader * m_pDapLogReader {nullptr}; + DapChainLogHandler * m_pDapChainLogHandler {nullptr}; DapChainWalletHandler * m_pDapChainWalletHandler {nullptr}; public: diff --git a/KelvinDashboardService/DapChainLogHandler.cpp b/KelvinDashboardService/DapChainLogHandler.cpp new file mode 100644 index 0000000000000000000000000000000000000000..de6211b918f1dd4ffebc454eb9782fbe5a3e9aa0 --- /dev/null +++ b/KelvinDashboardService/DapChainLogHandler.cpp @@ -0,0 +1,41 @@ +#include "DapChainLogHandler.h" + +DapChainLogHandler::DapChainLogHandler(QObject *parent) : QObject(parent) +{ + +} + +QStringList DapChainLogHandler::parse(const QByteArray &aLogMessages) +{ + qDebug() << aLogMessages; + QRegExp rx("(\\t|\\[)([\\w\\s]{1,1}[\\w\\s\\W]+)(\\n|\\r|\\])"); + rx.setMinimal(true); + + int pos{0}; + QStringList list; + while((pos = rx.indexIn(aLogMessages, pos)) != -1) + { + list.append(rx.cap(2)); + pos += rx.matchedLength(); + } + qDebug() << list; + return list; +} + +QStringList DapChainLogHandler::request(int aiTimeStamp, int aiRowCount) +{ + QByteArray result; + QProcess process; + process.start(QString("%1 print_log ts_after %2 limit %3").arg("/home/andrey/Project/build-kelvin-node/kelvin-node-cli").arg(aiTimeStamp).arg(aiRowCount)); + process.waitForFinished(-1); + result = process.readAll(); + + if(result.isEmpty()) + qDebug() << "FALSE"; + else + { + qDebug() << "TRUE"; + } + + return parse(result); +} diff --git a/KelvinDashboardService/DapLogReader.h b/KelvinDashboardService/DapChainLogHandler.h similarity index 78% rename from KelvinDashboardService/DapLogReader.h rename to KelvinDashboardService/DapChainLogHandler.h index a164d3598eb548be7bcc81ff4ea9186d2cfed976..ed50921abb64c269d80df80ae1cf64f3d9954ff1 100644 --- a/KelvinDashboardService/DapLogReader.h +++ b/KelvinDashboardService/DapChainLogHandler.h @@ -9,7 +9,7 @@ #include "DapLogMessage.h" -class DapLogReader : public QObject +class DapChainLogHandler : public QObject { Q_OBJECT @@ -17,7 +17,7 @@ protected: virtual QStringList parse(const QByteArray& aLogMessages); public: - explicit DapLogReader(QObject *parent = nullptr); + explicit DapChainLogHandler(QObject *parent = nullptr); public slots: QStringList request(int aiTimeStamp, int aiRowCount); diff --git a/KelvinDashboardService/DapChainWalletHandler.cpp b/KelvinDashboardService/DapChainWalletHandler.cpp index 50f3669bd3805475b8037ff5fb9761dfeb7a12e7..b02cb255f3bee348afce5ad48cdf8da52ed4e8ec 100644 --- a/KelvinDashboardService/DapChainWalletHandler.cpp +++ b/KelvinDashboardService/DapChainWalletHandler.cpp @@ -16,7 +16,7 @@ QStringList DapChainWalletHandler::createWallet(const QString &asNameWallet) { QByteArray result; QProcess process; - process.start(QString("%1 wallet new -w %2").arg("/home/andrey/Demlabs/build-kelvin-node/kelvin-node-cli").arg(asNameWallet)); + process.start(QString("%1 wallet new -w %2").arg("/home/andrey/Project/build-kelvin-node/kelvin-node-cli").arg(asNameWallet)); process.waitForFinished(-1); result = process.readAll(); QStringList list; @@ -29,7 +29,7 @@ QMap<QString, QVariant> DapChainWalletHandler::getWallets() { QMap<QString, QVariant> map; QProcess process; - process.start(QString("%1 wallet list").arg("/home/andrey/Demlabs/build-kelvin-node/kelvin-node-cli")); + process.start(QString("%1 wallet list").arg("/home/andrey/Project/build-kelvin-node/kelvin-node-cli")); process.waitForFinished(-1); QString str = QString::fromLatin1(process.readAll()).remove(" "); QRegExp rx( ":\\b([a-zA-Z0-9]+)\\n" ); diff --git a/KelvinDashboardService/DapLogReader.cpp b/KelvinDashboardService/DapLogReader.cpp deleted file mode 100644 index 9907b1c834736ec59737ce759b8f1bf47a910fe2..0000000000000000000000000000000000000000 --- a/KelvinDashboardService/DapLogReader.cpp +++ /dev/null @@ -1,38 +0,0 @@ -#include "DapLogReader.h" - - - -DapLogReader::DapLogReader(QObject *parent) : QObject(parent) -{ - -} - -QStringList DapLogReader::parse(const QByteArray &aLogMessages) -{ - QStringList list = QString::fromLatin1(aLogMessages).split(";"); - - auto resultEnd = std::remove_if(list.begin(), list.end(), - [] (const QString& aLogMessage) - { - return !aLogMessage.contains('['); - }); - list.erase(resultEnd, list.end()); - return list; -} - -QStringList DapLogReader::request(int aiTimeStamp, int aiRowCount) -{ - QByteArray result; - QProcess process; - process.start(QString("%1 print_log ts_after %2 limit %3").arg("/home/andrey/Demlabs/build-kelvin-node/kelvin-node-cli").arg(aiTimeStamp).arg(aiRowCount)); - process.waitForFinished(-1); - result = process.readAll(); - - if(result.isEmpty()) - qDebug() << "FALSE"; - else - { - qDebug() << "TRUE"; - } - return parse(result); -} diff --git a/KelvinDashboardService/KelvinDashboardService.pro b/KelvinDashboardService/KelvinDashboardService.pro index 83a63af6c65033c33c60b8851cd6eba2433e3656..52458e45e6a29c1abfcf858b7ae9e6bb10a98388 100755 --- a/KelvinDashboardService/KelvinDashboardService.pro +++ b/KelvinDashboardService/KelvinDashboardService.pro @@ -41,15 +41,15 @@ SOURCES += \ DapChainDashboardService.cpp \ DapChainNode.cpp \ DapChainNodeCache.cpp \ - DapLogReader.cpp \ - DapChainWalletHandler.cpp + DapChainWalletHandler.cpp \ + DapChainLogHandler.cpp HEADERS += \ DapChainDashboardService.h \ DapChainNode.h \ DapChainNodeCache.h \ - DapLogReader.h \ - DapChainWalletHandler.h + DapChainWalletHandler.h \ + DapChainLogHandler.h include (../libdap/libdap.pri) include (../libdap-crypto/libdap-crypto.pri) diff --git a/KelvinDashboardService/main.cpp b/KelvinDashboardService/main.cpp index 7919e48f203913c5be2eefb9f56fc57c91fce1a8..9c4130e8aa6dd636ac24723797bd5b6b30df375f 100755 --- a/KelvinDashboardService/main.cpp +++ b/KelvinDashboardService/main.cpp @@ -5,7 +5,7 @@ #include "DapHalper.h" #include "DapChainDashboardService.h" #include "DapLogger.h" -#include "DapLogReader.h" +#include "DapChainLogHandler.h" int main(int argc, char *argv[]) { diff --git a/libKelvinDashboardCommon/DapLogModel.cpp b/libKelvinDashboardCommon/DapLogModel.cpp index ad8d7d4f3c080b2b11bac5a6cd55b4677ef4abd6..653c0a070634d8460b828bf0bd85a8211e9e33ef 100644 --- a/libKelvinDashboardCommon/DapLogModel.cpp +++ b/libKelvinDashboardCommon/DapLogModel.cpp @@ -20,7 +20,30 @@ QVariant DapLogModel::data(const QModelIndex &index, int role) const { if (index.row() < rowCount()) switch (role) { - case TypeRole: return m_dapLogMessage.at(index.row())->getType(); + case TypeRole: + switch (m_dapLogMessage.at(index.row())->getType()) { + case Type::Info: + return "INF"; + case Type::Warning: + return "WRG"; + case Type::Error: + return "ERR"; + case Type::Debug: + return "DBG"; + default: + break; +// case Type::Info: +// return "qrc:/Resources/Icons/dialog-information.png"; +// case Type::Warning: +// return "qrc:/Resources/Icons/dialog-warning.png"; +// case Type::Error: +// return "qrc:/Resources/Icons/dialog-error.png"; +// case Type::Debug: +// return "qrc:/Resources/Icons/dialog-question.png"; +// default: +// break; + } + case TimeStampRole: return m_dapLogMessage.at(index.row())->getTimeStamp(); case FileRole: return m_dapLogMessage.at(index.row())->getFile(); case MessageRole: return m_dapLogMessage.at(index.row())->getMessage();