/*
 * Copyright 2011 Manuel Munz <freifunk at somakoma dot de>
 * Licensed to the public under the Apache License 2.0.
 */

'use strict';

return L.Class.extend({
	title: _('OLSRd'),

	rrdargs: function(graph, host, plugin, plugin_instance, dtype) {
		var g = [];

		if (plugin_instance == "routes") {
			g.push({
				/* diagram data description */
				title: "%H: Total amount of OLSR routes", vlabel: "n",
				number_format: "%5.0lf", data: {
					types: [ "routes" ],
					options: {
						routes: {
							color: "ff0000",
							title: "Total number of routes"
						}
					}
				}
			}, {
				title: "%H: Average route ETX", vlabel: "ETX", detail: true,
				number_format: "%5.1lf", data: {
					instances: [ "average" ], /* falls es irgendwann mal welche pro ip gibt, wie bei links, dann werden die hier excludiert */
					types: [ "route_etx" ],
					options: {
						route_etx: {
							title: "Average route ETX"
						}
					}
				}
			}, {
				title: "%H: Average route metric", vlabel: "metric", detail: true,
				number_format: "%5.1lf", data: {
					instances: [ "average" ], /* falls es irgendwann mal welche pro ip gibt, wie bei links, dann werden die hier excludiert */
					types: [ "route_metric" ],
					options: {
						route_metric: {
							title: "Average route metric"
						}
					}
				}
			});
		}
		else if (plugin_instance == "links") {
			g.push({
				/* diagram data description */
				title: "%H: Total amount of OLSR neighbours", vlabel: "n",
				number_format: "%5.0lf", data: {
					instances: [ "" ],
					types: [ "links" ],
					options: {
						links: {
							color: "00ff00",
							title: "Number of neighbours"
						}
					}
				}
			});

			var instances = graph.dataInstances(host, plugin, plugin_instance, "signal_quality").sort();

			/* define one diagram per host, containing the rx and lq values */
			for (var i = 0; i < instances.length; i += 2) {
				var dsn1 = "signal_quality_%s_value".format(instances[i].replace(/\W+/g, '_')),
				    dsn2 = "signal_quality_%s_value".format(instances[i+1].replace(/\W+/g, '_')),
				    host = instances[i].match(/^[^-]+-([^-]+)-.+$/),
				    host = host ? host[1] : 'avg',
				    opts = {};

				opts[dsn1] = { color: "00ff00", title: "LQ (%s)".format(host) };
				opts[dns2] = { color: "0000ff", title: "NLQ (%s)".format(host), flip: true };

				g.push({
					title: "%H: Signal Quality (%s)".format(host), vlabel: "ETX",
					number_format: "%5.2lf", detail: true,
					data: {
						types: [ "signal_quality" ],

						instances: {
							signal_quality: [ instances[i], instances[i+1] ],
						},

						options: opts
					}
				});
			}
		}
		else if (plugin_instance == "topology") {
			g.push({
				title: "%H: Total amount of OLSR links", vlabel: "n",
				number_format: "%5.0lf", data: {
					instances: [ "" ],
					types: [ "links" ],
					options: {
						links: {
							color: "0000ff",
							title: "Total number of links"
						}
					}
				}
			}, {
				title: "%H: Average signal quality", vlabel: "n",
				number_format: "%5.2lf", detail: true,
				data: {
					instances: [ "average" ], /* exclude possible per-ip stuff */
					types: [ "signal_quality" ],
					options: {
						signal_quality: {
							color: "0000ff",
							title: "Average signal quality"
						}
					}
				}
			});
		}

		return g;
	}
});