using System.Collections.Generic;
using System.IO;
using System.Runtime.Serialization;
using System.Runtime.Serialization.Json;
namespace RevolvingCow.Highcharts
{
///
/// Highchart graph object.
///
[DataContract]
public class Highchart
{
///
/// Gets or sets the chart.
///
[DataMember(Name = "chart", EmitDefaultValue = false, IsRequired = false)]
public HighchartChart Chart { get; set; }
///
/// Gets or sets a list of colors.
///
[DataMember(Name = "colors", EmitDefaultValue = false, IsRequired = false)]
public IEnumerable Colors { get; set; }
///
/// Gets or sets the credits.
///
[DataMember(Name = "credits", EmitDefaultValue = false, IsRequired = false)]
public HighchartCredits Credits { get; set; }
///
/// Gets or sets the drilldown configuration.
///
[DataMember(Name = "drilldown", EmitDefaultValue = false, IsRequired = false)]
public HighchartDrilldown Drilldown { get; set; }
///
/// Gets or sets the exporting options.
///
[DataMember(Name = "exporting", EmitDefaultValue = false, IsRequired = false)]
public HighchartExporting Exporting { get; set; }
///
/// Gets or sets the labels.
///
[DataMember(Name = "labels", EmitDefaultValue = false, IsRequired = false)]
public HighchartLabels Labels { get; set; }
///
/// Gets or sets the legend.
///
[DataMember(Name = "legend", EmitDefaultValue = false, IsRequired = false)]
public HighchartLegend Legend { get; set; }
///
/// Gets or sets the loading options.
///
[DataMember(Name = "loading", EmitDefaultValue = false, IsRequired = false)]
public HighchartLoading Loading { get; set; }
///
/// Gets or sets the navigation.
///
[DataMember(Name = "navigation", EmitDefaultValue = false, IsRequired = false)]
public HighchartNavigation Navigation { get; set; }
///
/// Gets or sets the "no data" options.
///
/// Requires the "no data" plugin.
[DataMember(Name = "noData", EmitDefaultValue = false, IsRequired = false)]
public HighchartNoData NoData { get; set; }
///
/// Gets or sets the pane.
///
[DataMember(Name = "pane", EmitDefaultValue = false, IsRequired = false)]
public HighchartPane Pane { get; set; }
///
/// Gets or sets the plot options.
///
[DataMember(Name = "plotOptions", EmitDefaultValue = false, IsRequired = false)]
public HighchartPlotOptions PlotOptions { get; set; }
///
/// Gets or sets the series.
///
[DataMember(Name = "series", EmitDefaultValue = false, IsRequired = false)]
public IEnumerable Series { get; set; }
///
/// Gets or sets the subtitle.
///
[DataMember(Name = "subtitle", EmitDefaultValue = false, IsRequired = false)]
public HighchartSubtitle Subtitle { get; set; }
///
/// Gets or sets the title.
///
[DataMember(Name = "title", EmitDefaultValue = false, IsRequired = false)]
public HighchartTitle Title { get; set; }
///
/// Gets or sets the tooltip.
///
[DataMember(Name = "tooltip", EmitDefaultValue = false, IsRequired = false)]
public HighchartTooltip Tooltip { get; set; }
///
/// Gets or sets the x-axis.
///
[DataMember(Name = "xAxis", EmitDefaultValue = false, IsRequired = false)]
public HighchartAxis XAxis { get; set; }
///
/// Gets or sets the y-axis.
///
[DataMember(Name = "yAxis", EmitDefaultValue = false, IsRequired = false)]
public HighchartAxis YAxis { get; set; }
///
/// Returns the graph in a JSON format.
///
/// JSON format of the object.
public override string ToString()
{
string json = null;
using (var memoryStream = new MemoryStream())
{
var serializer = new DataContractJsonSerializer(this.GetType());
serializer.WriteObject(memoryStream, this);
memoryStream.Position = 0;
using (var reader = new StreamReader(memoryStream))
{
json = reader.ReadToEnd();
}
}
return json;
}
}
}