JSFiddle - React, Tailwind, and code Playground
HTML
<script src="https://igniteui.com/js/modernizr.min.js"></script>
<script src="https://code.jquery.com/jquery-1.9.1.min.js"></script>
<script src="https://code.jquery.com/ui/1.10.3/jquery-ui.min.js"></script>
<script src="https://cdn-na.infragistics.com/igniteui/latest/js/infragistics.core.js"></script>
<script src="https://cdn-na.infragistics.com/igniteui/latest/js/infragistics.dv.js"></script>
<script src="https://igniteui.com/js-data/Data"></script>
<link href="https://cdn-na.infragistics.com/igniteui/latest/css/themes/infragistics/infragistics.theme.css" rel="stylesheet"></link>
<link href="https://cdn-na.infragistics.com/igniteui/latest/css/structure/infragistics.css" rel="stylesheet"></link>
<link href="https://cdn-na.infragistics.com/igniteui/latest/css/structure/modules/infragistics.ui.chart.css" rel="stylesheet"></link>
<link href="https://cdn-na.infragistics.com/igniteui/latest/css/structure/modules/infragistics.ui.financialchart.css" rel="stylesheet"></link>
<div id="chart" style="width:95%;height:500px"></div>
JavaScript
$(function () {
function CalloutItem(index, value, content) {
this.index = index;
this.value = value;
this.content = content;
}
var data = PriceData.AMZN();
var calloutData = [];
function generateCalloutData() {
var intervalSplit = Math.floor(Math.random() * 300) + 280;
var intervalDiv = Math.floor(Math.random() * 400) + 360;
var index = 0;
var priceLowest = new CalloutItem(index, Number.MAX_SAFE_INTEGER, "MIN PRICE");
var priceHighest = new CalloutItem(index, Number.MIN_SAFE_INTEGER, "MAX PRICE");
calloutData.push(priceLowest);
calloutData.push(priceHighest);
for (var item of data) {// finding item with lowest price
if (priceLowest.value > item.close)
{
priceLowest.value = item.close;
priceLowest.index = index;
}
// finding item with highest price
if (priceHighest.value < item.close)
{
priceHighest.value = item.close;
priceHighest.index = index;
}
// creating SPLIT/DIVIDEND events at specific intervals
if (index % intervalSplit === 5)
{
var stockEvent = new CalloutItem(index, item.close, "SPLIT");
calloutData.push(stockEvent);
}
else if (index % intervalDiv === 5)
{
var stockEvent = new CalloutItem(index, item.close, "DIV");
calloutData.push(stockEvent);
}
++index;
}
...