Custom QuoteFeed with asynchronous streaming
This fiddle demonstrates how to implement a custom QuoteFeed with pagination support, combined with an asynchronous streaming method.
by sonylnagale
HTML
<link rel="stylesheet" type="text/css" href="https://jsfiddle.chartiq.com/chart/css/stx-chart.css" media="screen" />
<div class="chartContainer" style="width:600px;height:400px;position:relative;"></div>
CSS
.stx_watermark {/* Optional watermark style */
font-size: 16px;
font-family: Roboto, Helvetica, sans-serif;
}
JavaScript
import { CIQ } from "https://jsfiddle.chartiq.com/chart/js/advanced.js";
// Activate the License Key
import getLicenseKey from "https://jsfiddle.chartiq.com/chart/key.js";
getLicenseKey(CIQ);
// Create your QuoteFeed object.
var myQuoteFeed = {};
myQuoteFeed.url = "https://jsfiddle.chartiq.com/sample_json.js";
// The chart uses a few different methods attached to your quotefeed to get data.
// This is where the action is, in these methods. params will tell you what the chart needs (symbol, interval, date ranges)
// Use that data to construct your query. Use our ajax, jquery, or any other method to fetch the data
// Make sure it's in the right format and return it in the callback like below. Always use cb() to return data from fetch methods! Even errors.
// This method is called by the chart to fetch initial data
myQuoteFeed.fetchInitialData = function(symbol, startDate, endDate, params, cb) {
console.log("params=", params);
var query = this.url +
"?symbol=" + symbol +
"&interval=" + params.interval +
"&startDate=" + CIQ.yyyymmddhhmm(startDate) +
"&endDate=" + CIQ.yyyymmddhhmm(endDate);
CIQ.postAjax(query, null, function(status, response) {
if (status == 200) {
cb({
quotes: JSON.parse(response),
moreAvailable: false
});
} else {
cb({
error: (response ? response : status)
});
}
});
// This sample assumes the response returns only the data and in the right format.
// Put your code here to format the response according to the specs
// and return it in the callback.
// Example code to iterate trough the reformatted responses and load them one at a time:
// var quotes=formatQuotes(response); // your function to creates a properly formated array.
// var newQuotes=[];
// for(var i=0;i<quotes.length;i++){
// newQuotes[i]={};
// newQuotes[i].Date=quotes[i][0]; // Or set newQuotes[i].DT if you have a JS Date
// newQuotes[i].Open=quotes[i][1];
...