fix for consistent panning of charts
Costa Tsaousis (ktsaou) committed
Oct 25, 2015 at 17:50 UTC
fd0ff00b37c8d5260df9ee997d13109b1351acb9
1 file changed
+12
-14
src/rrd2json.c
+12
-14
@@ -573,7 +573,7 @@ RRDR *rrd2rrdr(RRDSET *st, long points, time_t after, time_t before, int group_m
573
return NULL;
574
}
575
576
-unsigned long rrd_stats_json(int type, RRDSET *st, struct web_buffer *wb, int entries_to_show, int group, int group_method, time_t after, time_t before, int only_non_zero)
576
+unsigned long rrd_stats_json(int type, RRDSET *st, struct web_buffer *wb, int points, int group, int group_method, time_t after, time_t before, int only_non_zero)
577
{
578
int c;
579
pthread_rwlock_rdlock(&st->rwlock);
@@ -600,16 +600,11 @@ unsigned long rrd_stats_json(int type, RRDSET *st, struct web_buffer *wb, int en
600
// -------------------------------------------------------------------------
601
// validate the parameters
602
603
- if(entries_to_show < 1) entries_to_show = 1;
603
+ if(points < 1) points = 1;
604
if(group < 1) group = 1;
605
606
- time_t time_init = rrdset_last_entry_t(st);
607
-
608
- if(before == 0 || before > time_init) before = time_init;
609
- if(after == 0) after = rrdset_first_entry_t(st);
610
-
611
- before -= before % group;
612
- after -= after % group;
606
+ if(before == 0 || before > rrdset_last_entry_t(st)) before = rrdset_last_entry_t(st);
607
+ if(after == 0 || after < rrdset_first_entry_t(st)) after = rrdset_first_entry_t(st);
608
609
// ---
610
@@ -643,7 +638,7 @@ unsigned long rrd_stats_json(int type, RRDSET *st, struct web_buffer *wb, int en
638
639
640
// -------------------------------------------------------------------------
646
- // checks for debuging
641
+ // checks for debugging
642
643
if(st->debug) {
644
debug(D_RRD_STATS, "%s first_entry_t = %lu, last_entry_t = %lu, duration = %lu, after = %lu, before = %lu, duration = %lu, entries_to_show = %lu, group = %lu"
@@ -654,7 +649,7 @@ unsigned long rrd_stats_json(int type, RRDSET *st, struct web_buffer *wb, int en
649
, after
650
, before
651
, before - after
657
- , entries_to_show
652
+ , points
653
, group
654
);
655
@@ -733,7 +728,10 @@ unsigned long rrd_stats_json(int type, RRDSET *st, struct web_buffer *wb, int en
728
stop_at_t = rrdset_time2slot(st, after),
729
stop_now = 0;
730
736
- time_t now = rrdset_slot2time(st, t), dt = st->update_every;
731
+ t -= t % group;
732
+
733
+ time_t now = rrdset_slot2time(st, t),
734
+ dt = st->update_every;
735
736
long count = 0, printed = 0, group_count = 0;
737
last_timestamp = 0;
@@ -742,7 +740,7 @@ unsigned long rrd_stats_json(int type, RRDSET *st, struct web_buffer *wb, int en
740
, st->id
741
, after
742
, before
745
- , entries_to_show
743
+ , points
744
, group
745
, st->current_entry
746
, rrdset_first_entry_t(st)
@@ -781,7 +779,7 @@ unsigned long rrd_stats_json(int type, RRDSET *st, struct web_buffer *wb, int en
779
780
// check if we have to print this now
781
if(group_count == group) {
784
- if(printed >= entries_to_show) {
782
+ if(printed >= points) {
783
// debug(D_RRD_STATS, "Already printed all rows. Stopping.");
784
break;
785
}