<!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;
}
}