I am trying to attach to two databases when onCreateReport event triggered. Inside that event i'm making rest call to get data and register with report. but those databases wont appear on designer->dictionary section.Is it possible make async operation inside onCreateReport event???
this is my sample code.
Code: Select all
var dataSources = [{
name: 'photos',
url: "https://jsonplaceholder.typicode.com/photos"
},{
name: 'comments',
url: "https://jsonplaceholder.typicode.com/comments"
}
]
var HttpClient = function() {
this.get = function(aUrl, aCallback) {
var anHttpRequest = new XMLHttpRequest();
anHttpRequest.onreadystatechange = function() {
if (anHttpRequest.readyState == 4 && anHttpRequest.status == 200)
aCallback(anHttpRequest.responseText);
}
anHttpRequest.open( "GET", aUrl, true );
anHttpRequest.send( null );
}
}
designer.onCreateReport = function (event) {
event.report.dictionary.databases.clear()
dataSources.forEach(function (dataSrc) {
(function (r, d) {
var request = new HttpClient();
request.get(d.url, function (data) {
var dataSet = new Stimulsoft.System.Data.DataSet(d.name);
dataSet.readJson(data);
r.regData(d.name, d.name, dataSet);
r.dictionary.connect(false);
r.dictionary.synchronize();
});
})(event.report, dataSrc);
});
}