<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>ZingGrid: Blank Grid</title> <script nonce="undefined" src="https://cdn.zingchart.com/zingchart.min.js"></script> <!-- can also render the modules ahead of time here --> <!-- <script nonce="undefined" src="https://cdn.zingchart.com/modules/zingchart-zoom-buttons.min.js"></script> --> <style> html, body { height: 100%; width: 100%; margin: 0; padding: 0; } #myChart { height: 100%; width: 100%; min-height: 150px; } .zc-ref { display: none; } </style> </head> <body> <!-- CHART CONTAINER --> <div id="myChart"> <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 myConfig = { globals: { fontFamily: 'Lucida Sans Unicode' }, type: 'area', plot: { mode: 'fast', exact: true, smartSampling: true, hintTs: true, maxNodes: 150, maxTrackers: 150, }, plotarea: { margin: '50 40 40 80' }, preview: { borderWidth: 1, handle: { lineWidth: 0, height: 20 }, adjustLayout: true }, crosshairX: {}, scrollX: {}, scaleX: { transform: { type: 'date' }, item: { fontSize: 10 }, zooming: true }, scaleY: { autoFit: true, minValue: 'auto', short: true, label: { text: 'VOLUMES' }, item: { fontSize: 10 }, guide: { lineStyle: 'solid' } }, noData: { text: 'No data found', backgroundColor: '#efefef' }, // if fetching data remotely define an empty series series: [{ values: [] }] }; // defined ABOVE the render and sets flags // globally for ALL charts on a page zingchart.DEV.CACHECANVASTEXT = true; zingchart.DEV.CHECKDECIMALS = false; zingchart.DEV.CACHESELECTION = true; zingchart.DEV.MEDIARULES = false; // zingchart.DEV.SKIPTRACKERS = true; // ONLY ONCE we have loaded the zoom-button module zingchart.loadModules('zoom-buttons', () => { // render the chart right away zingchart.render({ id: 'myChart', data: myConfig, height: '100%', width: '100%', output: 'canvas', modules: 'zoom-buttons', }); // fetch the data remotely fetch('https://cdn.zingchart.com/datasets/timeseries-sample-data.json') .then(res => res.json()) .then(timeseriesData => { // assign data to chart zingchart.exec('myChart', 'setseriesvalues', { plotindex: 0, values: timeseriesData.values }); }) .catch(e => { // if error, render blank chart console.error('--- error fetching data from: https://cdn.zingchart.com/datasets/timeseries-sample-data.json ---'); myConfig.title = {}; myConfig.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: myConfig }); }); }); }); </script> </body> </html>
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>ZingGrid: Blank Grid</title> <script src="https://cdn.zingchart.com/zingchart.min.js"></script> <!-- can also render the modules ahead of time here --> <!-- <script src="https://cdn.zingchart.com/modules/zingchart-zoom-buttons.min.js"></script> --> </head> <body> <!-- CHART CONTAINER --> <div id="myChart"> <a class="zc-ref" href="https://www.zingchart.com">Powered by ZingChart</a> </div> </body> </html>
html, body { height: 100%; width: 100%; margin: 0; padding: 0; } #myChart { height: 100%; width: 100%; min-height: 150px; } .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 myConfig = { globals: { fontFamily: 'Lucida Sans Unicode' }, type: 'area', plot: { mode: 'fast', exact: true, smartSampling: true, hintTs: true, maxNodes: 150, maxTrackers: 150, }, plotarea: { margin: '50 40 40 80' }, preview: { borderWidth: 1, handle: { lineWidth: 0, height: 20 }, adjustLayout: true }, crosshairX: {}, scrollX: {}, scaleX: { transform: { type: 'date' }, item: { fontSize: 10 }, zooming: true }, scaleY: { autoFit: true, minValue: 'auto', short: true, label: { text: 'VOLUMES' }, item: { fontSize: 10 }, guide: { lineStyle: 'solid' } }, noData: { text: 'No data found', backgroundColor: '#efefef' }, // if fetching data remotely define an empty series series: [{ values: [] }] }; // defined ABOVE the render and sets flags // globally for ALL charts on a page zingchart.DEV.CACHECANVASTEXT = true; zingchart.DEV.CHECKDECIMALS = false; zingchart.DEV.CACHESELECTION = true; zingchart.DEV.MEDIARULES = false; // zingchart.DEV.SKIPTRACKERS = true; // ONLY ONCE we have loaded the zoom-button module zingchart.loadModules('zoom-buttons', () => { // render the chart right away zingchart.render({ id: 'myChart', data: myConfig, height: '100%', width: '100%', output: 'canvas', modules: 'zoom-buttons', }); // fetch the data remotely fetch('https://cdn.zingchart.com/datasets/timeseries-sample-data.json') .then(res => res.json()) .then(timeseriesData => { // assign data to chart zingchart.exec('myChart', 'setseriesvalues', { plotindex: 0, values: timeseriesData.values }); }) .catch(e => { // if error, render blank chart console.error('--- error fetching data from: https://cdn.zingchart.com/datasets/timeseries-sample-data.json ---'); myConfig.title = {}; myConfig.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: myConfig }); }); }); });