<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>ZingSoft Demo</title> <script nonce="undefined" src="https://cdn.zingchart.com/zingchart.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> <div id="myChart"><a class="zc-ref" href="https://www.zingchart.com">Powered by ZingChart</a></div> <script> ZC.LICENSE = ["569d52cefae586f634c54f86dc99e6a9", "b55b025e438fa8a98e32482b5f768ff5"]; // must load maps and first map we are going to render zingchart.loadModules('maps,maps-usa'); var arrayOfColors = ['#EF9A9A #E57373', '#F48FB1 #F06292', '#B39DDB #9575CD', '#90CAF9 #64B5F6', '#80DEEA #4DD0E1', '#80CBC4 #4DB6AC', '#A5D6A7 #81C784', '#E6EE9C #DCE775', '#FFE082 #FFD54F', '#FFAB91 #FF8A65']; var colorIndex = 0; var listOfStates = ["al", "ak", "az", "ar", "ca", "co", "ct", "de", "dc", "fl", "ga", "hi", "id", "il", "in", "ia", "ks", "ky", "la", "me", "md", "ma", "mi", "mn", "ms", "mo", "mt", "ne", "nv", "nh", "nj", "nm", "ny", "nc", "nd", "oh", "ok", "or", "pa", "ri", "sc", "sd", "tn", "tx", "ut", "vt", "va", "wa", "wv", "wi", "wy"]; /* * need this function to render the first map load with random colors */ var objectStates = function(arrayOfStates) { var objectOfStates = {}; for (var i = 0; i < arrayOfStates.length; i++) { var itemId = arrayOfStates[i].toUpperCase(); colorIndexCheck(); objectOfStates[itemId] = { 'background-color': arrayOfColors[colorIndex++] } } return objectOfStates; }(listOfStates); console.log('---- object form of states ----', objectStates); // initial config for first chart var myConfig = { shapes: [{ type: 'zingchart.maps', options: { name: 'usa', zooming: false, panning: false, scrolling: false, style: { controls: { visible: false }, fillType: 'radial', cursor: 'pointer', hoverState: { alpha: 0.3, backgroundColor: 'white', }, items: objectStates, //include specific shape regions with unique styles tooltip: { alpha: 0.8, backgroundColor: 'white', borderColor: 'white', borderRadius: 3, fontColor: 'black', fontFamily: 'Georgia', fontSize: 12, textAlpha: 1 } } } }] }; zingchart.render({ id: 'myChart', data: myConfig, height: '100%', width: '100%' }); // use this function to assign random colors zingchart.bind('myChart', 'dataparse', function(e, oGraph) { console.log(arguments) // if graphset exists if (oGraph && oGraph.graphset[0]) { // if shapes exist if (oGraph.graphset[0].shapes) { oGraph.graphset[0].shapes = oGraph.graphset[0].shapes.map(function(curVal) { if (curVal && curVal['map-item']) { colorIndexCheck(); curVal['background-color'] = arrayOfColors[colorIndex++]; } return curVal; }); } } return oGraph; }); //drilldown chart configuration var drilldownConfig = { shapes: [{ //Drilldown maps. type: 'zingchart.maps', options: { name: '', zooming: false, panning: false, scrolling: false, style: { controls: { visible: false }, backgroundColor: 'pink', hoverState: { alpha: 0.3, backgroundColor: 'white', }, tooltip: { alpha: 0.8, backgroundColor: 'white', borderColor: 'white', borderRadius: 3, fontColor: 'black', fontFamily: 'Georgia', fontSize: 12, textAlpha: 1 } } } }, { //Button to go back to main map. id: 'back_button', type: 'rectangle', height: 25, width: 40, x: 20, y: 20, backgroundColor: '#C4C4C4', borderRadius: 3, cursor: 'hand', hoverState: { alpha: 0.3, backgroundColor: 'white' }, label: { text: 'Back', } } ] }; // stringify the maps to load them into page using loadModules() var stringifyMapList = listOfStates.reduce(function(acc, curVal, index) { if (index === 1) acc = 'maps-usa_' + acc; return acc + ',' + 'maps-usa_' + curVal; }); console.log('---stringified map modules ----', stringifyMapList); // for maps that exist in our library. Pre-load them later on zingchart.loadModules(stringifyMapList); /* * shape click is when we render a new chart or load the original chart */ zingchart.bind('myChart', 'shape_click', function(e) { var newMapId = 'usa_' + String(e.shapeid).toLowerCase(); var shapeId = e.shapeid; // if shape is our back button and not the map if (shapeId == 'back_button') { // since we are using setdata, reload will reload the original chartJSON zingchart.exec('myChart', 'reload'); return; } if (hasDrilldownData(newMapId)) { drilldownConfig.shapes[0].options.name = newMapId; zingchart.exec('myChart', 'setdata', { data: drilldownConfig }); } }); // used in the shape_click event to determine if we should drilldown function hasDrilldownData(newMapId) { var drillDownCountries = listOfStates.map(function(curVal) { return 'usa_' + curVal; }); for (var i = 0; i < drillDownCountries.length; i++) { if (newMapId === drillDownCountries[i]) return true; } return false; } // update colorindex for assigning random colors function colorIndexCheck() { if (colorIndex >= arrayOfColors.length) { colorIndex = 0; } } </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> </head> <body> <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; }
// must load maps and first map we are going to render zingchart.loadModules('maps,maps-usa'); var arrayOfColors = ['#EF9A9A #E57373', '#F48FB1 #F06292', '#B39DDB #9575CD', '#90CAF9 #64B5F6', '#80DEEA #4DD0E1', '#80CBC4 #4DB6AC', '#A5D6A7 #81C784', '#E6EE9C #DCE775', '#FFE082 #FFD54F', '#FFAB91 #FF8A65']; var colorIndex = 0; var listOfStates = ["al", "ak", "az", "ar", "ca", "co", "ct", "de", "dc", "fl", "ga", "hi", "id", "il", "in", "ia", "ks", "ky", "la", "me", "md", "ma", "mi", "mn", "ms", "mo", "mt", "ne", "nv", "nh", "nj", "nm", "ny", "nc", "nd", "oh", "ok", "or", "pa", "ri", "sc", "sd", "tn", "tx", "ut", "vt", "va", "wa", "wv", "wi", "wy"]; /* * need this function to render the first map load with random colors */ var objectStates = function(arrayOfStates) { var objectOfStates = {}; for (var i = 0; i < arrayOfStates.length; i++) { var itemId = arrayOfStates[i].toUpperCase(); colorIndexCheck(); objectOfStates[itemId] = { 'background-color': arrayOfColors[colorIndex++] } } return objectOfStates; }(listOfStates); console.log('---- object form of states ----', objectStates); // initial config for first chart var myConfig = { shapes: [{ type: 'zingchart.maps', options: { name: 'usa', zooming: false, panning: false, scrolling: false, style: { controls: { visible: false }, fillType: 'radial', cursor: 'pointer', hoverState: { alpha: 0.3, backgroundColor: 'white', }, items: objectStates, //include specific shape regions with unique styles tooltip: { alpha: 0.8, backgroundColor: 'white', borderColor: 'white', borderRadius: 3, fontColor: 'black', fontFamily: 'Georgia', fontSize: 12, textAlpha: 1 } } } }] }; zingchart.render({ id: 'myChart', data: myConfig, height: '100%', width: '100%' }); // use this function to assign random colors zingchart.bind('myChart', 'dataparse', function(e, oGraph) { console.log(arguments) // if graphset exists if (oGraph && oGraph.graphset[0]) { // if shapes exist if (oGraph.graphset[0].shapes) { oGraph.graphset[0].shapes = oGraph.graphset[0].shapes.map(function(curVal) { if (curVal && curVal['map-item']) { colorIndexCheck(); curVal['background-color'] = arrayOfColors[colorIndex++]; } return curVal; }); } } return oGraph; }); //drilldown chart configuration var drilldownConfig = { shapes: [{ //Drilldown maps. type: 'zingchart.maps', options: { name: '', zooming: false, panning: false, scrolling: false, style: { controls: { visible: false }, backgroundColor: 'pink', hoverState: { alpha: 0.3, backgroundColor: 'white', }, tooltip: { alpha: 0.8, backgroundColor: 'white', borderColor: 'white', borderRadius: 3, fontColor: 'black', fontFamily: 'Georgia', fontSize: 12, textAlpha: 1 } } } }, { //Button to go back to main map. id: 'back_button', type: 'rectangle', height: 25, width: 40, x: 20, y: 20, backgroundColor: '#C4C4C4', borderRadius: 3, cursor: 'hand', hoverState: { alpha: 0.3, backgroundColor: 'white' }, label: { text: 'Back', } } ] }; // stringify the maps to load them into page using loadModules() var stringifyMapList = listOfStates.reduce(function(acc, curVal, index) { if (index === 1) acc = 'maps-usa_' + acc; return acc + ',' + 'maps-usa_' + curVal; }); console.log('---stringified map modules ----', stringifyMapList); // for maps that exist in our library. Pre-load them later on zingchart.loadModules(stringifyMapList); /* * shape click is when we render a new chart or load the original chart */ zingchart.bind('myChart', 'shape_click', function(e) { var newMapId = 'usa_' + String(e.shapeid).toLowerCase(); var shapeId = e.shapeid; // if shape is our back button and not the map if (shapeId == 'back_button') { // since we are using setdata, reload will reload the original chartJSON zingchart.exec('myChart', 'reload'); return; } if (hasDrilldownData(newMapId)) { drilldownConfig.shapes[0].options.name = newMapId; zingchart.exec('myChart', 'setdata', { data: drilldownConfig }); } }); // used in the shape_click event to determine if we should drilldown function hasDrilldownData(newMapId) { var drillDownCountries = listOfStates.map(function(curVal) { return 'usa_' + curVal; }); for (var i = 0; i < drillDownCountries.length; i++) { if (newMapId === drillDownCountries[i]) return true; } return false; } // update colorindex for assigning random colors function colorIndexCheck() { if (colorIndex >= arrayOfColors.length) { colorIndex = 0; } }