mirror of
https://github.com/RetroShare/RetroShare.git
synced 2024-10-01 02:35:48 -04:00
improved display of graphs
git-svn-id: http://svn.code.sf.net/p/retroshare/code/trunk@7614 b45a01b8-16f6-495d-af2f-9b41ad6348cc
This commit is contained in:
parent
01fdb95c30
commit
b51c34d23b
@ -40,6 +40,7 @@ RSGraphSource::RSGraphSource()
|
|||||||
_update_period_msecs = 1*1000 ;
|
_update_period_msecs = 1*1000 ;
|
||||||
_time_orig_msecs = QDateTime::currentMSecsSinceEpoch() ;
|
_time_orig_msecs = QDateTime::currentMSecsSinceEpoch() ;
|
||||||
_timer = new QTimer ;
|
_timer = new QTimer ;
|
||||||
|
_digits = 2 ;
|
||||||
|
|
||||||
QObject::connect(_timer,SIGNAL(timeout()),this,SLOT(update())) ;
|
QObject::connect(_timer,SIGNAL(timeout()),this,SLOT(update())) ;
|
||||||
}
|
}
|
||||||
@ -80,7 +81,7 @@ QString RSGraphSource::displayName(int i) const
|
|||||||
|
|
||||||
QString RSGraphSource::displayValue(float v) const
|
QString RSGraphSource::displayValue(float v) const
|
||||||
{
|
{
|
||||||
return QString::number(v,'f',2) + " " + unitName() ;
|
return QString::number(v,'f',_digits) + " " + unitName() ;
|
||||||
}
|
}
|
||||||
|
|
||||||
void RSGraphSource::getCurrentValues(std::vector<float>& vals) const
|
void RSGraphSource::getCurrentValues(std::vector<float>& vals) const
|
||||||
@ -91,6 +92,11 @@ void RSGraphSource::getCurrentValues(std::vector<float>& vals) const
|
|||||||
vals.push_back(it->second.back().second) ;
|
vals.push_back(it->second.back().second) ;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
QString RSGraphSource::legend(int i,float v) const
|
||||||
|
{
|
||||||
|
return displayName(i) + " (" + displayValue(v) + " )";
|
||||||
|
}
|
||||||
|
|
||||||
void RSGraphSource::getDataPoints(int index,std::vector<QPointF>& pts) const
|
void RSGraphSource::getDataPoints(int index,std::vector<QPointF>& pts) const
|
||||||
{
|
{
|
||||||
pts.clear() ;
|
pts.clear() ;
|
||||||
@ -182,7 +188,6 @@ RSGraphWidget::RSGraphWidget(QWidget *parent)
|
|||||||
_timer = new QTimer ;
|
_timer = new QTimer ;
|
||||||
QObject::connect(_timer,SIGNAL(timeout()),this,SLOT(update())) ;
|
QObject::connect(_timer,SIGNAL(timeout()),this,SLOT(update())) ;
|
||||||
|
|
||||||
_precision_digits = 1 ;
|
|
||||||
_y_scale = 1.0f ;
|
_y_scale = 1.0f ;
|
||||||
_timer->start(1000);
|
_timer->start(1000);
|
||||||
}
|
}
|
||||||
@ -482,7 +487,7 @@ void RSGraphWidget::paintLegend()
|
|||||||
{
|
{
|
||||||
qreal paintStep = 4+FONT_SIZE;
|
qreal paintStep = 4+FONT_SIZE;
|
||||||
qreal pos = 20+i*paintStep;
|
qreal pos = 20+i*paintStep;
|
||||||
QString text = _source->displayName(i) + " (" + _source->displayValue(vals[i]) + " )";
|
QString text = _source->legend(i,vals[i]) ;
|
||||||
|
|
||||||
QPen oldPen = _painter->pen();
|
QPen oldPen = _painter->pen();
|
||||||
_painter->setPen(QPen(getColor(i), Qt::SolidLine));
|
_painter->setPen(QPen(getColor(i), Qt::SolidLine));
|
||||||
|
@ -70,6 +70,9 @@ public:
|
|||||||
// return the vector of last values up to date
|
// return the vector of last values up to date
|
||||||
virtual void getCurrentValues(std::vector<float>& vals) const ;
|
virtual void getCurrentValues(std::vector<float>& vals) const ;
|
||||||
|
|
||||||
|
// returns what to display in the legend. Derive this to show additional info.
|
||||||
|
virtual QString legend(int i,float v) const ;
|
||||||
|
|
||||||
// Returns the n^th interpolated value at the given time in floating point seconds backward.
|
// Returns the n^th interpolated value at the given time in floating point seconds backward.
|
||||||
virtual void getDataPoints(int index, std::vector<QPointF>& pts) const ;
|
virtual void getDataPoints(int index, std::vector<QPointF>& pts) const ;
|
||||||
|
|
||||||
@ -82,6 +85,8 @@ public:
|
|||||||
// Sets the time period for collecting new values. Units=milliseconds.
|
// Sets the time period for collecting new values. Units=milliseconds.
|
||||||
void setCollectionTimePeriod(qint64 msecs) ;
|
void setCollectionTimePeriod(qint64 msecs) ;
|
||||||
|
|
||||||
|
void setDigits(int d) { _digits = d ;}
|
||||||
|
|
||||||
protected slots:
|
protected slots:
|
||||||
// Calls the internal source for a new data points; called by the timer. You might want to overload this
|
// Calls the internal source for a new data points; called by the timer. You might want to overload this
|
||||||
// if the collection system needs it. Otherwise, the default method will call getValues()
|
// if the collection system needs it. Otherwise, the default method will call getValues()
|
||||||
@ -101,6 +106,7 @@ protected:
|
|||||||
qint64 _time_limit_msecs ;
|
qint64 _time_limit_msecs ;
|
||||||
qint64 _update_period_msecs ;
|
qint64 _update_period_msecs ;
|
||||||
qint64 _time_orig_msecs ;
|
qint64 _time_orig_msecs ;
|
||||||
|
int _digits ;
|
||||||
};
|
};
|
||||||
|
|
||||||
class RSGraphWidget: public QFrame
|
class RSGraphWidget: public QFrame
|
||||||
@ -139,8 +145,6 @@ class RSGraphWidget: public QFrame
|
|||||||
/** Toggles display of data counters. */
|
/** Toggles display of data counters. */
|
||||||
//void setShowCounters(bool showRSDHT, bool showALLDHT);
|
//void setShowCounters(bool showRSDHT, bool showALLDHT);
|
||||||
|
|
||||||
void setScaleParams(int precision_digits) { _precision_digits = precision_digits ; }
|
|
||||||
|
|
||||||
void setFlags(uint32_t flag) { _flags |= flag ; }
|
void setFlags(uint32_t flag) { _flags |= flag ; }
|
||||||
void resetFlags(uint32_t flag) { _flags &= ~flag ; }
|
void resetFlags(uint32_t flag) { _flags &= ~flag ; }
|
||||||
protected:
|
protected:
|
||||||
@ -190,7 +194,6 @@ class RSGraphWidget: public QFrame
|
|||||||
qreal pixelsToValue(qreal) ;
|
qreal pixelsToValue(qreal) ;
|
||||||
qreal valueToPixels(qreal) ;
|
qreal valueToPixels(qreal) ;
|
||||||
int _maxPoints;
|
int _maxPoints;
|
||||||
int _precision_digits ;
|
|
||||||
|
|
||||||
qreal _time_scale ; // horizontal scale in pixels per sec.
|
qreal _time_scale ; // horizontal scale in pixels per sec.
|
||||||
|
|
||||||
|
@ -88,6 +88,17 @@ QString RttGraphSource::unitName() const
|
|||||||
{
|
{
|
||||||
return QObject::tr("secs") ;
|
return QObject::tr("secs") ;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
QString RttGraphSource::displayName(int i) const
|
||||||
|
{
|
||||||
|
int n=0 ;
|
||||||
|
for(std::map<std::string, std::list<std::pair<qint64,float> > >::const_iterator it=_points.begin();it!=_points.end();++it,++n)
|
||||||
|
if(n==i)
|
||||||
|
return QString::fromUtf8(rsPeers->getPeerName(RsPeerId(it->first)).c_str()) ;
|
||||||
|
|
||||||
|
return QString() ;
|
||||||
|
}
|
||||||
|
|
||||||
void RttGraphSource::getValues(std::map<std::string,float>& vals) const
|
void RttGraphSource::getValues(std::map<std::string,float>& vals) const
|
||||||
{
|
{
|
||||||
std::list<RsPeerId> idList;
|
std::list<RsPeerId> idList;
|
||||||
@ -111,13 +122,14 @@ RttStatisticsGraph::RttStatisticsGraph(QWidget *parent)
|
|||||||
|
|
||||||
src->setCollectionTimeLimit(10*60*1000) ; // 10 mins
|
src->setCollectionTimeLimit(10*60*1000) ; // 10 mins
|
||||||
src->setCollectionTimePeriod(1000) ; // collect every second
|
src->setCollectionTimePeriod(1000) ; // collect every second
|
||||||
|
src->setDigits(1) ;
|
||||||
src->start() ;
|
src->start() ;
|
||||||
|
|
||||||
addSource(src) ;
|
addSource(src) ;
|
||||||
|
|
||||||
setTimeScale(2.0f) ; // 1 pixels per second of time.
|
setTimeScale(2.0f) ; // 1 pixels per second of time.
|
||||||
setScaleParams(2) ;
|
|
||||||
|
|
||||||
resetFlags(RSGRAPH_FLAGS_LOG_SCALE_Y) ;
|
resetFlags(RSGRAPH_FLAGS_LOG_SCALE_Y) ;
|
||||||
resetFlags(RSGRAPH_FLAGS_PAINT_STYLE_PLAIN) ;
|
resetFlags(RSGRAPH_FLAGS_PAINT_STYLE_PLAIN) ;
|
||||||
|
setFlags(RSGRAPH_FLAGS_SHOW_LEGEND) ;
|
||||||
}
|
}
|
||||||
|
@ -36,6 +36,7 @@ public:
|
|||||||
|
|
||||||
virtual void getValues(std::map<std::string,float>& vals) const ;
|
virtual void getValues(std::map<std::string,float>& vals) const ;
|
||||||
virtual QString unitName() const ;
|
virtual QString unitName() const ;
|
||||||
|
virtual QString displayName(int i) const ;
|
||||||
};
|
};
|
||||||
|
|
||||||
class RttStatisticsGraph: public RSGraphWidget
|
class RttStatisticsGraph: public RSGraphWidget
|
||||||
|
@ -11,11 +11,47 @@ public:
|
|||||||
RsConfigDataRates totalRates;
|
RsConfigDataRates totalRates;
|
||||||
rsConfig->getTotalBandwidthRates(totalRates);
|
rsConfig->getTotalBandwidthRates(totalRates);
|
||||||
|
|
||||||
values.insert(std::make_pair(std::string("Bytes in"),(float)totalRates.mRateIn)) ;
|
values.insert(std::make_pair(std::string("Bytes in"),1024 * (float)totalRates.mRateIn)) ;
|
||||||
values.insert(std::make_pair(std::string("Bytes out"),(float)totalRates.mRateOut)) ;
|
values.insert(std::make_pair(std::string("Bytes out"),1024 * (float)totalRates.mRateOut)) ;
|
||||||
|
|
||||||
|
_total_sent += 1024 * totalRates.mRateOut * _update_period_msecs/1000.0f ;
|
||||||
|
_total_recv += 1024 * totalRates.mRateIn * _update_period_msecs/1000.0f ;
|
||||||
}
|
}
|
||||||
|
|
||||||
virtual QString unitName() const { return tr("KB/s"); }
|
virtual QString unitName() const { return tr("KB/s"); }
|
||||||
|
|
||||||
|
virtual QString displayValue(float v) const
|
||||||
|
{
|
||||||
|
if(v < 1000)
|
||||||
|
return QString::number(v,'f',2) + " B/s" ;
|
||||||
|
else if(v < 1000*1024)
|
||||||
|
return QString::number(v/1024.0,'f',2) + " KB/s" ;
|
||||||
|
else
|
||||||
|
return QString::number(v/(1024.0*1024),'f',2) + " MB/s" ;
|
||||||
|
}
|
||||||
|
|
||||||
|
virtual QString legend(int i,float v) const
|
||||||
|
{
|
||||||
|
if(i==0)
|
||||||
|
return RSGraphSource::legend(i,v) + " Total: " + niceNumber(_total_recv) ;
|
||||||
|
else
|
||||||
|
return RSGraphSource::legend(i,v) + " Total: " + niceNumber(_total_sent) ;
|
||||||
|
}
|
||||||
|
private:
|
||||||
|
QString niceNumber(float v) const
|
||||||
|
{
|
||||||
|
if(v < 1000)
|
||||||
|
return QString::number(v,'f',2) + " B" ;
|
||||||
|
else if(v < 1000*1024)
|
||||||
|
return QString::number(v/1024.0,'f',2) + " KB" ;
|
||||||
|
else if(v < 1000*1024*1024)
|
||||||
|
return QString::number(v/(1024*1024.0),'f',2) + " MB" ;
|
||||||
|
else
|
||||||
|
return QString::number(v/(1024*1024.0*1024),'f',2) + " GB";
|
||||||
|
}
|
||||||
|
|
||||||
|
mutable float _total_sent ;
|
||||||
|
mutable float _total_recv ;
|
||||||
};
|
};
|
||||||
|
|
||||||
class BWGraph: public RSGraphWidget
|
class BWGraph: public RSGraphWidget
|
||||||
@ -27,13 +63,13 @@ class BWGraph: public RSGraphWidget
|
|||||||
BWGraphSource *src = new BWGraphSource() ;
|
BWGraphSource *src = new BWGraphSource() ;
|
||||||
|
|
||||||
src->setCollectionTimeLimit(30*60*1000) ; // 30 mins
|
src->setCollectionTimeLimit(30*60*1000) ; // 30 mins
|
||||||
src->setCollectionTimePeriod(1000) ; // collect every second
|
src->setCollectionTimePeriod(1000) ; // collect every second
|
||||||
|
src->setDigits(2) ;
|
||||||
src->start() ;
|
src->start() ;
|
||||||
|
|
||||||
addSource(src) ;
|
addSource(src) ;
|
||||||
|
|
||||||
setTimeScale(1.0f) ; // 1 pixels per second of time.
|
setTimeScale(1.0f) ; // 1 pixels per second of time.
|
||||||
setScaleParams(2) ;
|
|
||||||
|
|
||||||
resetFlags(RSGRAPH_FLAGS_LOG_SCALE_Y) ;
|
resetFlags(RSGRAPH_FLAGS_LOG_SCALE_Y) ;
|
||||||
resetFlags(RSGRAPH_FLAGS_PAINT_STYLE_PLAIN) ;
|
resetFlags(RSGRAPH_FLAGS_PAINT_STYLE_PLAIN) ;
|
||||||
|
@ -33,10 +33,6 @@
|
|||||||
class DHTGraphSource: public RSGraphSource
|
class DHTGraphSource: public RSGraphSource
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
virtual int n_values() const
|
|
||||||
{
|
|
||||||
return 1 ;
|
|
||||||
}
|
|
||||||
virtual void getValues(std::map<std::string,float>& values) const
|
virtual void getValues(std::map<std::string,float>& values) const
|
||||||
{
|
{
|
||||||
RsConfigNetStatus config;
|
RsConfigNetStatus config;
|
||||||
@ -67,13 +63,13 @@ class DhtGraph : public RSGraphWidget
|
|||||||
DHTGraphSource *src = new DHTGraphSource() ;
|
DHTGraphSource *src = new DHTGraphSource() ;
|
||||||
|
|
||||||
src->setCollectionTimeLimit(30*60*1000) ; // 30 mins
|
src->setCollectionTimeLimit(30*60*1000) ; // 30 mins
|
||||||
src->setCollectionTimePeriod(1000) ; // collect every second
|
src->setCollectionTimePeriod(1000) ; // collect every second
|
||||||
|
src->setDigits(0) ;
|
||||||
src->start() ;
|
src->start() ;
|
||||||
|
|
||||||
addSource(src) ;
|
addSource(src) ;
|
||||||
|
|
||||||
setTimeScale(1.0f) ; // 1 pixels per second of time.
|
setTimeScale(1.0f) ; // 1 pixels per second of time.
|
||||||
setScaleParams(0) ;
|
|
||||||
|
|
||||||
resetFlags(RSGRAPH_FLAGS_LOG_SCALE_Y) ;
|
resetFlags(RSGRAPH_FLAGS_LOG_SCALE_Y) ;
|
||||||
setFlags(RSGRAPH_FLAGS_PAINT_STYLE_PLAIN) ;
|
setFlags(RSGRAPH_FLAGS_PAINT_STYLE_PLAIN) ;
|
||||||
|
@ -38,17 +38,18 @@ class TurtleGraph: public RSGraphWidget
|
|||||||
TurtleGraphSource *src = new TurtleGraphSource() ;
|
TurtleGraphSource *src = new TurtleGraphSource() ;
|
||||||
|
|
||||||
src->setCollectionTimeLimit(30*60*1000) ; // 30 mins
|
src->setCollectionTimeLimit(30*60*1000) ; // 30 mins
|
||||||
src->setCollectionTimePeriod(1000) ; // collect every second
|
src->setCollectionTimePeriod(1000) ; // collect every second
|
||||||
|
src->setDigits(2) ;
|
||||||
src->start() ;
|
src->start() ;
|
||||||
|
|
||||||
addSource(src) ;
|
addSource(src) ;
|
||||||
|
|
||||||
setTimeScale(1.0f) ; // 1 pixels per second of time.
|
setTimeScale(1.0f) ; // 1 pixels per second of time.
|
||||||
setScaleParams(2) ;
|
|
||||||
|
|
||||||
resetFlags(RSGRAPH_FLAGS_LOG_SCALE_Y) ;
|
resetFlags(RSGRAPH_FLAGS_LOG_SCALE_Y) ;
|
||||||
resetFlags(RSGRAPH_FLAGS_PAINT_STYLE_PLAIN) ;
|
resetFlags(RSGRAPH_FLAGS_PAINT_STYLE_PLAIN) ;
|
||||||
}
|
setFlags(RSGRAPH_FLAGS_SHOW_LEGEND) ;
|
||||||
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user