summaryrefslogtreecommitdiffstats
path: root/web/api/formatters/json/json.c
diff options
context:
space:
mode:
authorDaniel Baumann <daniel.baumann@progress-linux.org>2023-06-14 19:20:36 +0000
committerDaniel Baumann <daniel.baumann@progress-linux.org>2023-06-14 19:20:36 +0000
commitdd24e74edfbafc09eaeb2dde0fda7eb3e1e86d0b (patch)
tree1e52f4dac2622ab377c7649f218fb49003b4cbb9 /web/api/formatters/json/json.c
parentReleasing debian version 1.39.1-2. (diff)
downloadnetdata-dd24e74edfbafc09eaeb2dde0fda7eb3e1e86d0b.tar.xz
netdata-dd24e74edfbafc09eaeb2dde0fda7eb3e1e86d0b.zip
Merging upstream version 1.40.0.
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'web/api/formatters/json/json.c')
-rw-r--r--web/api/formatters/json/json.c26
1 files changed, 17 insertions, 9 deletions
diff --git a/web/api/formatters/json/json.c b/web/api/formatters/json/json.c
index d5b8c7570..3a7a23ba1 100644
--- a/web/api/formatters/json/json.c
+++ b/web/api/formatters/json/json.c
@@ -244,12 +244,12 @@ void rrdr2json(RRDR *r, BUFFER *wb, RRDR_OPTIONS options, int datatable) {
//info("RRD2JSON(): %s: END", r->st->id);
}
-
void rrdr2json_v2(RRDR *r, BUFFER *wb) {
QUERY_TARGET *qt = r->internal.qt;
RRDR_OPTIONS options = qt->window.options;
- bool expose_gbc = query_target_aggregatable(qt);
+ bool send_count = query_target_aggregatable(qt);
+ bool send_hidden = send_count && r->vh && query_has_group_by_aggregation_percentage(qt);
buffer_json_member_add_object(wb, "result");
@@ -267,12 +267,17 @@ void rrdr2json_v2(RRDR *r, BUFFER *wb) {
buffer_json_array_close(wb); // labels
buffer_json_member_add_object(wb, "point");
- buffer_json_member_add_uint64(wb, "value", 0);
- buffer_json_member_add_uint64(wb, "arp", 1);
- buffer_json_member_add_uint64(wb, "pa", 2);
- if(expose_gbc)
- buffer_json_member_add_uint64(wb, "count", 3);
- buffer_json_object_close(wb);
+ {
+ size_t point_count = 0;
+ buffer_json_member_add_uint64(wb, "value", point_count++);
+ buffer_json_member_add_uint64(wb, "arp", point_count++);
+ buffer_json_member_add_uint64(wb, "pa", point_count++);
+ if (send_count)
+ buffer_json_member_add_uint64(wb, "count", point_count++);
+ if (send_hidden)
+ buffer_json_member_add_uint64(wb, "hidden", point_count++);
+ }
+ buffer_json_object_close(wb); // point
buffer_json_member_add_array(wb, "data");
if(i) {
@@ -286,6 +291,7 @@ void rrdr2json_v2(RRDR *r, BUFFER *wb) {
// for each line in the array
for (i = start; i != end; i += step) {
NETDATA_DOUBLE *cn = &r->v[ i * r->d ];
+ NETDATA_DOUBLE *ch = send_hidden ? &r->vh[i * r->d ] : NULL;
RRDR_VALUE_FLAGS *co = &r->o[ i * r->d ];
NETDATA_DOUBLE *ar = &r->ar[ i * r->d ];
uint32_t *gbc = &r->gbc [ i * r->d ];
@@ -325,8 +331,10 @@ void rrdr2json_v2(RRDR *r, BUFFER *wb) {
buffer_json_add_array_item_uint64(wb, o);
// add the count
- if(expose_gbc)
+ if(send_count)
buffer_json_add_array_item_uint64(wb, gbc[d]);
+ if(send_hidden)
+ buffer_json_add_array_item_double(wb, ch[d]);
buffer_json_array_close(wb); // point
}