-
Notifications
You must be signed in to change notification settings - Fork 312
Enhanced Traffic Graph Widget with Multi-timeframe Support and Data Persistence #866
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: master
Are you sure you want to change the base?
Changes from all commits
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -53,7 +53,6 @@ | |
using util::Join; | ||
|
||
const int CONSOLE_HISTORY = 50; | ||
const int INITIAL_TRAFFIC_GRAPH_MINS = 30; | ||
const QSize FONT_RANGE(4, 40); | ||
const char fontSizeSettingsKey[] = "consoleFontSize"; | ||
|
||
|
@@ -566,7 +565,6 @@ RPCConsole::RPCConsole(interfaces::Node& node, const PlatformStyle *_platformSty | |
connect(ui->clearButton, &QAbstractButton::clicked, [this] { clear(); }); | ||
connect(ui->fontBiggerButton, &QAbstractButton::clicked, this, &RPCConsole::fontBigger); | ||
connect(ui->fontSmallerButton, &QAbstractButton::clicked, this, &RPCConsole::fontSmaller); | ||
connect(ui->btnClearTrafficGraph, &QPushButton::clicked, ui->trafficGraph, &TrafficGraphWidget::clear); | ||
|
||
// disable the wallet selector by default | ||
ui->WalletSelector->setVisible(false); | ||
|
@@ -578,7 +576,7 @@ RPCConsole::RPCConsole(interfaces::Node& node, const PlatformStyle *_platformSty | |
// based timer interface | ||
m_node.rpcSetTimerInterfaceIfUnset(rpcTimerInterface); | ||
|
||
setTrafficGraphRange(INITIAL_TRAFFIC_GRAPH_MINS); | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Why are we losing this default constant? There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. because it isn't needed - on startup it "defaults" to the first non-full range |
||
setTrafficGraphRange(1); // 1 is the lowest setting (0 bumps up) | ||
updateDetailWidget(); | ||
|
||
consoleFontSize = settings.value(fontSizeSettingsKey, QFont().pointSize()).toInt(); | ||
|
@@ -1166,21 +1164,44 @@ void RPCConsole::scrollToEnd() | |
|
||
void RPCConsole::on_sldGraphRange_valueChanged(int value) | ||
{ | ||
const int multiplier = 5; // each position on the slider represents 5 min | ||
int mins = value * multiplier; | ||
setTrafficGraphRange(mins); | ||
setTrafficGraphRange((value + 100) / 200 + 1); | ||
} | ||
|
||
void RPCConsole::setTrafficGraphRange(int mins) | ||
void RPCConsole::setTrafficGraphRange(int value) | ||
{ | ||
ui->trafficGraph->setGraphRange(std::chrono::minutes{mins}); | ||
int mins = ui->trafficGraph->setGraphRange(value); | ||
if (value) | ||
m_set_slider_value = (value - 1) * 200; | ||
else { | ||
// When bumping, calculate the proper slider position based on the traffic graph's new value | ||
unsigned int new_graph_value = ui->trafficGraph->getCurrentRangeIndex() + 1; // +1 because the index is 0-based | ||
m_set_slider_value = (new_graph_value - 1) * 200; | ||
ui->sldGraphRange->blockSignals(true); | ||
ui->sldGraphRange->setValue(m_set_slider_value); | ||
ui->sldGraphRange->blockSignals(false); | ||
} | ||
ui->lblGraphRange->setText(GUIUtil::formatDurationStr(std::chrono::minutes{mins})); | ||
} | ||
|
||
void RPCConsole::on_sldGraphRange_sliderReleased() | ||
{ | ||
ui->sldGraphRange->setValue(m_set_slider_value); | ||
m_slider_in_use = false; | ||
} | ||
|
||
void RPCConsole::on_sldGraphRange_sliderPressed() { m_slider_in_use = true; } | ||
|
||
void RPCConsole::updateTrafficStats(quint64 totalBytesIn, quint64 totalBytesOut) | ||
{ | ||
ui->lblBytesIn->setText(GUIUtil::formatBytes(totalBytesIn)); | ||
ui->lblBytesOut->setText(GUIUtil::formatBytes(totalBytesOut)); | ||
if (!m_slider_in_use && ui->trafficGraph->graphRangeBump()) | ||
setTrafficGraphRange(0); // bump it up | ||
|
||
// Add baseline values to the current node values | ||
quint64 totalIn = totalBytesIn + ui->trafficGraph->getBaselineBytesRecv(); | ||
quint64 totalOut = totalBytesOut + ui->trafficGraph->getBaselineBytesSent(); | ||
|
||
ui->lblBytesIn->setText(GUIUtil::formatBytes(totalIn)); | ||
ui->lblBytesOut->setText(GUIUtil::formatBytes(totalOut)); | ||
} | ||
|
||
void RPCConsole::updateDetailWidget() | ||
|
Large diffs are not rendered by default.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
If we're deleting this, maybe there should be a way for the user to insert a reference line?
For now, I'd move removal of anything to a separate PR.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The user can effectively remove the data by deleting the .dat file - is there any basis for being able to do this while the client is running?