<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>ZingSoft Demo</title> <script nonce="undefined" src="https://cdn.zingchart.com/zingchart.min.js"></script> <script nonce="undefined" src="https://cdn.zingchart.com/modules/zingchart-zoom-buttons.min.js"></script> <style> .chart--container { min-height: 530px; width: 100%; height: 100%; } input { font-family: 'Lucida Sans Unicode'; } .zc-ref { display: none; } </style> </head> <body> <div id="myChart" class="chart--container"> <a class="zc-ref" href="https://www.zingchart.com/">Powered by ZingChart</a> </div> <script> ZC.LICENSE = ["569d52cefae586f634c54f86dc99e6a9", "b55b025e438fa8a98e32482b5f768ff5"]; // window:load event for Javascript to run after HTML // because this Javascript is injected into the document head window.addEventListener('load', () => { // Javascript code to execute after DOM content // full ZingChart schema can be found here: // https://www.zingchart.com/docs/api/json-configuration/ let chartConfig = { type: 'area', globals: { fontFamily: 'Lucida Sans Unicode' }, plotarea: { margin: '50px 40px 40px 80px' }, scaleX: { item: { fontSize: '10px' }, transform: { type: 'date' }, zooming: true }, scaleY: { autoFit: true, guide: { lineStyle: 'solid' }, item: { fontSize: '10px' }, label: { text: 'VOLUMES' }, minValue: 'auto', short: true }, preview: { adjustLayout: true, borderWidth: '1px', handle: { height: '20px', lineWidth: '0px' } }, noData: { text: 'No data found', backgroundColor: '#efefef' }, // if fetching data remotely define an empty series series: [{}] }; // render the chart right away zingchart.render({ id: 'myChart', data: chartConfig }); // ONLY ONCE we have loaded the zoom-button module zingchart.loadModules('zoom-buttons', () => { // fetch the data remotely fetch('https://cdn.zingchart.com/datasets/timeseries-sample-data-2019.json') .then(res => res.json()) .then(timeseriesData => { // assign data chartConfig.series[0].values = timeseriesData.values; // destroy the chart since we have to render the // chart with a module. if there is no module, // just use set data like the catch statement zingchart.exec('myChart', 'destroy'); // render chart with width and height to // fill the parent container CSS dimensions zingchart.render({ id: 'myChart', data: chartConfig, height: '100%', width: '100%', modules: 'zoom-buttons' }); }) .catch(e => { // if error, render blank chart console.error('--- error fetching data from: https://cdn.zingchart.com/datasets/timeseries-sample-data.json ---'); chartConfig.title = {}; chartConfig.title.text = 'Error Fetching https://cdn.zingchart.com/datasets/timeseries-sample-data.json'; // just exec setdata api method since we don't need to render the zoom modules // https://www.zingchart.com/docs/api/methods/ zingchart.exec('myChart', 'setdata', { data: chartConfig }); }); }); }); </script> </body> </html>
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>ZingSoft Demo</title> <script src="https://cdn.zingchart.com/zingchart.min.js"></script> <script src="https://cdn.zingchart.com/modules/zingchart-zoom-buttons.min.js"></script> </head> <body> <div id="myChart" class="chart--container"> <a class="zc-ref" href="https://www.zingchart.com/">Powered by ZingChart</a> </div> </body> </html>
.chart--container { min-height: 530px; width: 100%; height: 100%; } input { font-family: 'Lucida Sans Unicode'; } .zc-ref { display: none; }
// window:load event for Javascript to run after HTML // because this Javascript is injected into the document head window.addEventListener('load', () => { // Javascript code to execute after DOM content // full ZingChart schema can be found here: // https://www.zingchart.com/docs/api/json-configuration/ let chartConfig = { type: 'area', globals: { fontFamily: 'Lucida Sans Unicode' }, plotarea: { margin: '50px 40px 40px 80px' }, scaleX: { item: { fontSize: '10px' }, transform: { type: 'date' }, zooming: true }, scaleY: { autoFit: true, guide: { lineStyle: 'solid' }, item: { fontSize: '10px' }, label: { text: 'VOLUMES' }, minValue: 'auto', short: true }, preview: { adjustLayout: true, borderWidth: '1px', handle: { height: '20px', lineWidth: '0px' } }, noData: { text: 'No data found', backgroundColor: '#efefef' }, // if fetching data remotely define an empty series series: [{}] }; // render the chart right away zingchart.render({ id: 'myChart', data: chartConfig }); // ONLY ONCE we have loaded the zoom-button module zingchart.loadModules('zoom-buttons', () => { // fetch the data remotely fetch('https://cdn.zingchart.com/datasets/timeseries-sample-data-2019.json') .then(res => res.json()) .then(timeseriesData => { // assign data chartConfig.series[0].values = timeseriesData.values; // destroy the chart since we have to render the // chart with a module. if there is no module, // just use set data like the catch statement zingchart.exec('myChart', 'destroy'); // render chart with width and height to // fill the parent container CSS dimensions zingchart.render({ id: 'myChart', data: chartConfig, height: '100%', width: '100%', modules: 'zoom-buttons' }); }) .catch(e => { // if error, render blank chart console.error('--- error fetching data from: https://cdn.zingchart.com/datasets/timeseries-sample-data.json ---'); chartConfig.title = {}; chartConfig.title.text = 'Error Fetching https://cdn.zingchart.com/datasets/timeseries-sample-data.json'; // just exec setdata api method since we don't need to render the zoom modules // https://www.zingchart.com/docs/api/methods/ zingchart.exec('myChart', 'setdata', { data: chartConfig }); }); }); });