diff --git a/demos/stock/demo.html b/demos/stock/demo.html index d95bbc7..a273fa7 100644 --- a/demos/stock/demo.html +++ b/demos/stock/demo.html @@ -2,9 +2,8 @@ - - - + + Highcharts Stock Demo - Morningstar Connectors Demos diff --git a/demos/stock/demo.js b/demos/stock/demo.js index d3b8d10..6e37da9 100644 --- a/demos/stock/demo.js +++ b/demos/stock/demo.js @@ -1,59 +1,57 @@ document.getElementById('postman-json').addEventListener( 'change', - async function ( - evt - ) { + async function (evt) { const target = evt.target; - const postmanJSON = JSON.parse(await target.files[0]?.text()); + const postmanJSON = await getPostmanJSON(evt.target); + + if (!postmanJSON) { + return; + } target.parentNode.style.display = 'none'; - Dashboards.board('container', { - dataPool: { - connectors: [{ - id: 'morningstar-dividend', - type: 'MorningstarTimeSeries', - options: { - postman: { - environmentJSON: postmanJSON - }, - series: 'Dividend', - securities: [{ - id: 'F0GBR06KY1', - idType: 'MSID' - }, { - id: 'LU0011963245USD', - idType: 'ISIN' - }], - startDate: '2020-01-01', - endDate: '2024-12-31' - } - }] + const dividendConnector = new MorningstarConnectors.TimeSeriesConnector({ + postman: { + environmentJSON: postmanJSON }, - gui: { - layouts: [{ - id: 'layout-1', - rows: [{ - cells: [{ - id: 'dashboard-col-0' - }] - }] - }] + series: { + type: 'Dividend' }, - components: [{ - renderTo: 'dashboard-col-0', - connector: { - id: 'morningstar-dividend', - columnAssignment: [{ - seriesId: 'F0GBR06KY1', - data: ['Date', 'F0GBR06KY1'] - }, { - seriesId: 'LU0011963245USD', - data: ['Date', 'LU0011963245USD'] - }] - }, - type: 'Highcharts', - chartConstructor: 'stockChart', + securities: [{ + id: 'F0GBR06KY1', + idType: 'MSID' + }, { + id: 'LU0011963245USD', + idType: 'ISIN' + }], + startDate: '2020-01-01', + endDate: '2024-12-31' + }); + + await dividendConnector.load(); + + Highcharts.stockChart('container', { + series: [{ + type: 'line', + table: dividendConnector.dataTable }] }); }); + +async function getPostmanJSON (htmlInputFile) { + let file; + let fileJSON; + + for (file of htmlInputFile.files) { + try { + fileJSON = JSON.parse(await file.text()); + if (MorningstarConnectors.isPostmanEnvironmentJSON(fileJSON)) { + break; + } + } catch (error) { + // fail silently + } + } + + return fileJSON +}