@using Highsoft.Web.Mvc.Stocks
@using Highsoft.Web.Mvc.Stocks.Rendering
<script src="https://code.highcharts.com/stock/highstock.js"></script>
<script src="https://code.highcharts.com/modules/exporting.js"></script>
<script type="text/javascript">
/**
* Load new data depending on the selected min and max
*/
function afterSetExtremes(e) {
var chart = $('#chart').highcharts();
chart.showLoading('Loading data from server...');
$.getJSON('https://demo-live-data.highcharts.com/aapl-historical.json?start=' + Math.round(e.min) +
'&end=' + Math.round(e.max) + '&callback=?', function (data) {
chart.series[0].setData(data);
chart.hideLoading();
});
}
function updateChart() {
$.getJSON('https://demo-live-data.highcharts.com/aapl-historical.json', function (data) {
// Add a null value for the end date
data = [].concat(data, [[Date.UTC(2011, 9, 14, 19, 59), null, null, null, null]]);
var chart = $('#chart').highcharts();
chart.showLoading('Loading data from server...');
chart.series[0].setData(data);
chart.series[1].setData(data);
chart.hideLoading();
});
}
</script>
@{ var chartOptions =
new Highstock
{
Chart = new Highsoft.Web.Mvc.Stocks.Chart
{
ZoomType = ChartZoomType.X,
Events = new ChartEvents
{
Load = "updateChart"
}
},
Navigator = new Navigator
{
AdaptToUpdatedData = false,
},
Scrollbar = new Scrollbar
{
LiveRedraw = false
},
Title = new Title
{
Text = "AAPL history by the minute from 1998 to 2011"
},
Subtitle = new Subtitle
{
Text = "Displaying 1.7 million data points in Highcharts Stock by async server loading"
},
RangeSelector = new RangeSelector
{
InputEnabled = false,
Buttons = new List<RangeSelectorButton>() { new RangeSelectorButton() { Type = "minute", Count = 60, Text = "1h" }, new RangeSelectorButton() { Type = "month", Count = 1, Text = "1m" }, new RangeSelectorButton() { Type = "month", Count = 12, Text = "1y" }, new RangeSelectorButton() { Type = "all", Text = "all" } },
Selected = 2
},
XAxis = new List<XAxis>
{
new XAxis
{
Events = new XAxisEvents
{
AfterSetExtremes = "afterSetExtremes"
},
MinRange = 3600 * 1000 // one hour
}
},
YAxis = new List<YAxis>
{
new YAxis
{
Floor = 0
},
},
Series = new List<Series>
{
new CandleStickSeries
{
DataGrouping = new CandleStickSeriesDataGrouping
{
Enabled = false
}
}
}
};
chartOptions.ID = "chart";
var renderer = new HighstockRenderer(chartOptions);
}
@Html.Raw(renderer.RenderHtml())