Enhance historygraph to allow size based on date

Due to the increasing number of connections, the *number* of history
entries is no longer a good way to size the width of the graph.
In addition to adding a much larger FIFO, I have chosen to add
a date constraint.  This means I do not have to keep making the FIFO
bigger daily and, when numbers fall, the graph will not change
shape.
This commit is contained in:
Peter L Jones 2020-03-20 23:03:56 +00:00
parent 600a4a544b
commit b55aa67496
2 changed files with 11 additions and 2 deletions

View file

@ -135,6 +135,9 @@ void AHistoryGraph::Update ( )
// store current date for reference // store current date for reference
curDate = QDate::currentDate(); curDate = QDate::currentDate();
// set oldest date to draw
QDate minDate = curDate.addDays ( MAX_DAYS_HISTORY * -1 );
// get oldest date in history // get oldest date in history
QDate oldestDate = curDate.addDays ( 1 ); // one day in the future QDate oldestDate = curDate.addDays ( 1 ); // one day in the future
const int iNumItemsForHistory = vHistoryDataFifo.Size(); const int iNumItemsForHistory = vHistoryDataFifo.Size();
@ -150,6 +153,10 @@ void AHistoryGraph::Update ( )
} }
} }
} }
if (oldestDate < minDate)
{
oldestDate = minDate;
}
const int iNumDaysInHistory = -curDate.daysTo ( oldestDate ) + 1; const int iNumDaysInHistory = -curDate.daysTo ( oldestDate ) + 1;
// draw frame of the graph // draw frame of the graph
@ -159,7 +166,7 @@ void AHistoryGraph::Update ( )
for ( i = 0; i < iNumItemsForHistory; i++ ) for ( i = 0; i < iNumItemsForHistory; i++ )
{ {
// only use valid dates // only use valid dates
if ( vHistoryDataFifo[i].DateTime.date().isValid() ) if ( vHistoryDataFifo[i].DateTime.date().isValid() && oldestDate <= vHistoryDataFifo[i].DateTime.date() )
{ {
AddMarker ( vHistoryDataFifo[i] ); AddMarker ( vHistoryDataFifo[i] );
} }

View file

@ -44,7 +44,9 @@
/* Definitions ****************************************************************/ /* Definitions ****************************************************************/
// number of history items to store // number of history items to store
#define NUM_ITEMS_HISTORY 600 #define NUM_ITEMS_HISTORY 4800
// oldest item to draw
#define MAX_DAYS_HISTORY 60
/* Interface ******************************************************************/ /* Interface ******************************************************************/