# #
#############################################################################*/
+#include "../colors.h"
#include "../graph.h"
+#include "../i18n.h"
#include "loadavg.h"
+// Set some colors
+#define COLOR_LOAD15 COLOR_RED
+#define COLOR_LOAD5 COLOR_ORANGE
+#define COLOR_LOAD1 COLOR_YELLOW
+
+static int loadavg_render(collecty_ctx* ctx,
+ collecty_graph* graph, collecty_args* args, const char* object) {
+ int r;
+
+ // This requires the loadavg module
+ r = collecty_graph_require_module(graph, args, "loadavg", object);
+ if (r < 0)
+ return r;
+
+ // Add 15-minute load average
+ r = collecty_args_push(args,
+ DRAW("AREA", "load15", COLOR_WITH_ALPHA(COLOR_LOAD15, OPACITY_25P)));
+ if (r < 0)
+ return r;
+
+ r = collecty_args_push(args,
+ DRAW_WITH_LABEL("LINE1", "load15", COLOR_LOAD15), _("15 Minutes"));
+ if (r < 0)
+ return r;
+
+ r = collecty_args_push(args, PRINT_FLOAT("load15_cur"));
+ if (r < 0)
+ return r;
+
+ r = collecty_args_push(args, PRINT_FLOAT("load15_avg"));
+ if (r < 0)
+ return r;
+
+ r = collecty_args_push(args, PRINT_FLOAT("load15_min"));
+ if (r < 0)
+ return r;
+
+ r = collecty_args_push(args, PRINT_FLOAT("load15_max") EOL);
+ if (r < 0)
+ return r;
+
+ // Add 5-minute load average
+ r = collecty_args_push(args,
+ DRAW("AREA", "load5", COLOR_WITH_ALPHA(COLOR_LOAD5, OPACITY_25P)));
+ if (r < 0)
+ return r;
+
+ r = collecty_args_push(args,
+ DRAW_WITH_LABEL("LINE1", "load5", COLOR_LOAD5), _("5 Minutes"));
+ if (r < 0)
+ return r;
+
+ r = collecty_args_push(args, PRINT_FLOAT("load5_cur"));
+ if (r < 0)
+ return r;
+
+ r = collecty_args_push(args, PRINT_FLOAT("load5_avg"));
+ if (r < 0)
+ return r;
+
+ r = collecty_args_push(args, PRINT_FLOAT("load5_min"));
+ if (r < 0)
+ return r;
+
+ r = collecty_args_push(args, PRINT_FLOAT("load5_max") EOL);
+ if (r < 0)
+ return r;
+
+ // Add 1-minute load average
+ r = collecty_args_push(args,
+ DRAW("AREA", "load1", COLOR_WITH_ALPHA(COLOR_LOAD1, OPACITY_25P)));
+ if (r < 0)
+ return r;
+
+ r = collecty_args_push(args,
+ DRAW_WITH_LABEL("LINE1", "load1", COLOR_LOAD1), _("1 Minute"));
+ if (r < 0)
+ return r;
+
+ r = collecty_args_push(args, PRINT_FLOAT("load1_cur"));
+ if (r < 0)
+ return r;
+
+ r = collecty_args_push(args, PRINT_FLOAT("load1_avg"));
+ if (r < 0)
+ return r;
+
+ r = collecty_args_push(args, PRINT_FLOAT("load1_min"));
+ if (r < 0)
+ return r;
+
+ r = collecty_args_push(args, PRINT_FLOAT("load1_max") EOL);
+ if (r < 0)
+ return r;
+
+ // Add an empty line
+ r = collecty_args_push(args, EMPTY_COLUMN);
+ if (r < 0)
+ return r;
+
+ // Add the headline for the "Current" column
+ r = collecty_args_push(args, HEADER, _("Current"));
+ if (r < 0)
+ return r;
+
+ // Add the headline for the "Average" column
+ r = collecty_args_push(args, HEADER, _("Average"));
+ if (r < 0)
+ return r;
+
+ // Add the headline for the "Minimum" column
+ r = collecty_args_push(args, HEADER, _("Minimum"));
+ if (r < 0)
+ return r;
+
+ // Add the headline for the "Maximum" column
+ r = collecty_args_push(args, HEADER EOL, _("Maximum"));
+ if (r < 0)
+ return r;
+
+ return 0;
+}
+
const collecty_graph_impl loadavg_graph = {
.name = "LoadAverage",
+ .render = loadavg_render,
};