-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathhistoricaldata.cpp
More file actions
131 lines (126 loc) · 4.62 KB
/
historicaldata.cpp
File metadata and controls
131 lines (126 loc) · 4.62 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
#include "historicaldata.h"
#include "QStringList"
#include "QHeaderView"
#include "mainwindow.h"
#include <QSqlDatabase>
#include <QSqlQuery>
#include <QVariant>
#include <QMessageBox>
HistoricalData::HistoricalData(QWidget *parent) :
QWidget(parent),
tableModel(new QSqlTableModel(this, MainWindow::getDatabase())),
dataTable(new QTableView(this)),
selectNode(new QComboBox(this)),
sortOrder(new QComboBox(this)),
startingTimeLabel(new QLabel(this)),
terminalTimeLabel(new QLabel(this)),
startingTime(new QDateTimeEdit(this)),
terminalTime(new QDateTimeEdit(this)),
selectButton(new QPushButton(this)),
layout(new QGridLayout(this))
{
setFixedSize(1200, 500);
tableModel->setTable("log");
tableModel->setEditStrategy(QSqlTableModel::OnFieldChange);
tableModel->select();
dataTable->setModel(tableModel);
selectNode->addItem("");
sortOrder->addItem("Ascending Order");
sortOrder->addItem("Descending Order");
QObject::connect(selectButton, &QPushButton::clicked, this, &HistoricalData::selected);
if(sortOrder->currentText() == "Ascending Order")
tableModel->sort(1, Qt::AscendingOrder);
else
tableModel->sort(1, Qt::DescendingOrder);
QObject::connect(sortOrder, static_cast<void (QComboBox::*)(const QString&)>(&QComboBox::currentIndexChanged), [&](const QString ¤tString){
if(currentString == "Ascending Order")
tableModel->sort(1, Qt::AscendingOrder);
else
tableModel->sort(1, Qt::DescendingOrder);
#ifdef QT_DEBUG
qDebug() << currentString << " now Order";
#endif
});
startingTimeLabel->setText("Start");
terminalTimeLabel->setText("Terminal");
layout->addWidget(dataTable, 0, 0, 8, 7);
layout->addWidget(startingTimeLabel, 8, 0, 1, 1);
layout->addWidget(startingTime, 8, 1, 1, 1);
layout->addWidget(terminalTimeLabel, 8, 2, 1, 1);
layout->addWidget(terminalTime, 8, 3, 1, 1);
layout->addWidget(selectNode, 8, 4, 1, 1);
layout->addWidget(sortOrder, 8, 5, 1, 1);
layout->addWidget(selectButton, 8, 6, 1, 1);
/*dataTable->setEditTriggers(QAbstractItemView::NoEditTriggers);
dataTable->verticalHeader()->setVisible(false);
dataTable->setColumnCount(5);
dataTable->setRowCount(6);
QStringList dataTableHeaders;
dataTableHeaders << "Date" << "Time" << "Roll" << "Pitch" << "Drift";
dataTable->setHorizontalHeaderLabels(dataTableHeaders);
//dataTable->hide();
selectBox->addItem("Thermo");
selectBox->addItem("Acceleration");
selectBox->addItem("Gyro");
selectBox->addItem("Angel");
selectBox->hide();
sortOrder->addItem("Descending Order");
sortOrder->addItem("ascending Order");
selectBox->hide();
terminalTime->hide();
startingTime->hide();
startingTime->setCalendarPopup(true);*/
//QObject::connect(w, &MainWindow::historicalDataShow, [=](){this->show();});
}
HistoricalData::~HistoricalData()
{
}
void HistoricalData::show()
{
//remove all items but the empty one
for(int i = 0; i < selectNode->count() - 1; i++)
selectNode->removeItem(1);
QString nodeQueryString = "select node from log group by node";
QSqlQuery nodeQuery(MainWindow::getDatabase());
if(nodeQuery.exec(nodeQueryString))
{
while(nodeQuery.next())
{
QVariant node = nodeQuery.value(0).toInt();
selectNode->addItem(QString::number(nodeQuery.value(0).toInt()), node);
}
}
#ifdef QT_DEBUG
else
qDebug() << __FILE__ << __func__ << __LINE__ << "error";
#endif
tableModel->setFilter("");
tableModel->select();
QWidget::show();
}
/**
* @brief HistoricalData::selected
* Calling slot when the selectButton is clicked
* select datetime and given node
*/
void HistoricalData::selected()
{
if(terminalTime->dateTime() < startingTime->dateTime())
{
#ifdef QT_DEBUG
qDebug() << "Terminal time should later than starting time.";
#endif
QMessageBox::critical(nullptr, QString::fromUtf8("Error"), QString::fromUtf8("Terminal time should later than starting time."));
return;
}
QString terminalTimeString = terminalTime->dateTime().toString("yyyy-MM-dd HH:mm:ss.zzz");
QString startingTimeString = startingTime->dateTime().toString("yyyy-MM-dd HH:mm:ss.zzz");
QString filterString = "time >= '" + startingTimeString + "' and time <= '" + terminalTimeString + "'";
if(selectNode->currentIndex() != 0)
filterString += " and node = " + QString::number(selectNode->currentData().toInt());
#ifdef QT_DEBUG
qDebug() << filterString;
#endif
tableModel->setFilter(filterString);
tableModel->select();
}