<!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>
.zc-body {
background: #fff;
}
.chart--container {
height: 100%;
width: 100%;
min-height: 530px;
}
.zc-ref {
display: none;
}
</style>
</head>
<body class="zc-body">
<div id="myChart">
<a href="https://www.zingchart.com/" rel="noopener" class="zc-ref">Powered by ZingChart</a>
</div>
<script>
ZC.LICENSE = ["569d52cefae586f634c54f86dc99e6a9", "b55b025e438fa8a98e32482b5f768ff5"];
// INIT
// -----------------------------
// Define Module Location
zingchart.MODULESDIR = "https://cdn.zingchart.com/modules/";
// Load Maps
zingchart.loadModules('maps, maps-fraL2, color-scale', init);
function init() {
let items = zingchart.maps.getItems('fraL2');
// For each department, create fake data with percentages for each party
let scores = {
REM: {},
LR: {},
PS: {}
}
// Fill w/ data
for (let i = 0; i < items.length; i++) {
let base = 35000;
let above90 = rand(0, 100) > 90;
let lenCheck = i % (Math.round(items.length / 4)) === 0;
if (above90 || lenCheck) base = 25000;
let pp1 = parseFloat((rand(base, 45000) / 1000).toFixed(3));
let pp2 = parseFloat((rand(base, 45000) / 1000).toFixed(3));
let pp3 = parseFloat((100 - pp1 - pp2).toFixed(3));
scores['REM'][items[i]] = pp1;
scores['LR'][items[i]] = pp2;
scores['PS'][items[i]] = pp3;
}
// Main chart config
let gmain = {
type: 'null',
title: {
fontSize: '13px',
text: 'Choropleth Demo'
},
shapes: [{
type: 'zingchart.maps',
options: {
name: 'fraL2',
scale: true,
zooming: false,
panning: false,
scrolling: false,
choropleth: {
aspect: 'gradient',
steps: [0, 1, 2, 3],
effect: 'darken',
},
style: {
borderAlpha: 0.1,
borderColor: '#fff',
controls: {
visible: false
},
label: {
visible: false
},
items: {}
}
}
}]
};
for (let i = 0; i < items.length; i++) {
let fVal = 0,
sPreview = '';
let aPreview = [];
aPreview.push(['REM', scores['REM'][items[i]]]);
aPreview.push(['LR', scores['LR'][items[i]]]);
aPreview.push(['PS', scores['PS'][items[i]]]);
aPreview.sort(function(a, b) {
return b[1] - a[1];
});
if (scores['REM'][items[i]] > scores['LR'][items[i]] && scores['REM'][items[i]] > scores['PS'][items[i]]) {
fVal = 0.5;
}
if (scores['LR'][items[i]] > scores['REM'][items[i]] && scores['LR'][items[i]] > scores['PS'][items[i]]) {
fVal = 1.5;
}
if (scores['PS'][items[i]] > scores['REM'][items[i]] && scores['PS'][items[i]] > scores['LR'][items[i]]) {
fVal = 2.5;
}
gmain.shapes[0].options.style.items[items[i]] = {
dataValue: fVal,
dataPreview: sPreview
};
}
// CHART CONFIG
// -----------------------------
let cdata = {
backgroundColor: '#fff',
borderColor: '#ddd',
borderWidth: '2px',
graphset: [gmain]
};
// RENDER CHARTS
// -----------------------------
zingchart.render({
id: 'myChart',
width: 600,
height: 600,
output: 'svg',
data: cdata,
modules: 'color-scale'
});
}
// HELPER FNS
// -----------------------------
function createBar(score, color) {
let sBar = "<span style='font-weight:bold;color:" + color + "'>";
for (let b = 0; b < Math.round(score / 4); b++) {
sBar += '\u2588';
}
sBar += '</span>';
return sBar;
}
function rand(min, max) {
return Math.round(min + (max - min) * Math.random());
};
</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 class="zc-body">
<div id="myChart">
<a href="https://www.zingchart.com/" rel="noopener" class="zc-ref">Powered by ZingChart</a>
</div>
</body>
</html>
.zc-body {
background: #fff;
}
.chart--container {
height: 100%;
width: 100%;
min-height: 530px;
}
.zc-ref {
display: none;
}
// INIT
// -----------------------------
// Define Module Location
zingchart.MODULESDIR = "https://cdn.zingchart.com/modules/";
// Load Maps
zingchart.loadModules('maps, maps-fraL2, color-scale', init);
function init() {
let items = zingchart.maps.getItems('fraL2');
// For each department, create fake data with percentages for each party
let scores = {
REM: {},
LR: {},
PS: {}
}
// Fill w/ data
for (let i = 0; i < items.length; i++) {
let base = 35000;
let above90 = rand(0, 100) > 90;
let lenCheck = i % (Math.round(items.length / 4)) === 0;
if (above90 || lenCheck) base = 25000;
let pp1 = parseFloat((rand(base, 45000) / 1000).toFixed(3));
let pp2 = parseFloat((rand(base, 45000) / 1000).toFixed(3));
let pp3 = parseFloat((100 - pp1 - pp2).toFixed(3));
scores['REM'][items[i]] = pp1;
scores['LR'][items[i]] = pp2;
scores['PS'][items[i]] = pp3;
}
// Main chart config
let gmain = {
type: 'null',
title: {
fontSize: '13px',
text: 'Choropleth Demo'
},
shapes: [{
type: 'zingchart.maps',
options: {
name: 'fraL2',
scale: true,
zooming: false,
panning: false,
scrolling: false,
choropleth: {
aspect: 'gradient',
steps: [0, 1, 2, 3],
effect: 'darken',
},
style: {
borderAlpha: 0.1,
borderColor: '#fff',
controls: {
visible: false
},
label: {
visible: false
},
items: {}
}
}
}]
};
for (let i = 0; i < items.length; i++) {
let fVal = 0,
sPreview = '';
let aPreview = [];
aPreview.push(['REM', scores['REM'][items[i]]]);
aPreview.push(['LR', scores['LR'][items[i]]]);
aPreview.push(['PS', scores['PS'][items[i]]]);
aPreview.sort(function(a, b) {
return b[1] - a[1];
});
if (scores['REM'][items[i]] > scores['LR'][items[i]] && scores['REM'][items[i]] > scores['PS'][items[i]]) {
fVal = 0.5;
}
if (scores['LR'][items[i]] > scores['REM'][items[i]] && scores['LR'][items[i]] > scores['PS'][items[i]]) {
fVal = 1.5;
}
if (scores['PS'][items[i]] > scores['REM'][items[i]] && scores['PS'][items[i]] > scores['LR'][items[i]]) {
fVal = 2.5;
}
gmain.shapes[0].options.style.items[items[i]] = {
dataValue: fVal,
dataPreview: sPreview
};
}
// CHART CONFIG
// -----------------------------
let cdata = {
backgroundColor: '#fff',
borderColor: '#ddd',
borderWidth: '2px',
graphset: [gmain]
};
// RENDER CHARTS
// -----------------------------
zingchart.render({
id: 'myChart',
width: 600,
height: 600,
output: 'svg',
data: cdata,
modules: 'color-scale'
});
}
// HELPER FNS
// -----------------------------
function createBar(score, color) {
let sBar = "<span style='font-weight:bold;color:" + color + "'>";
for (let b = 0; b < Math.round(score / 4); b++) {
sBar += '\u2588';
}
sBar += '</span>';
return sBar;
}
function rand(min, max) {
return Math.round(min + (max - min) * Math.random());
};