<!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, #myChart { width: 100%; } </style> </head> <body> <div id='myChart'></div> <script> ZC.LICENSE = ["569d52cefae586f634c54f86dc99e6a9", "b55b025e438fa8a98e32482b5f768ff5"]; ZC.customFn = {}; //Global wrapper var globalArray = []; var inputData = [114, 164, 154, 97, 87, 133, 180]; function initGraphData() { //initialze globalArray with this function to create whatever custom values you want customFormatingFunction(); //initiate graph JSON var myConfig = { type: "mixed", theme: "light", plot: { valueBox: { //this is for displaying percentage value all the time jsRule: "ZC.customFn.myfunc()", //function will be called once for each node before render! placement: "top", padding: 5, backgroundColor: "#c4c4c4", shadow: false, rules: [{ rule: "%p == 1", // If plot is bar graph, hide the value box. Otherwise we will visible: false // have two of the same valueBoxes. }] }, }, title: { text: "Sales" }, scaleX: { values: ["Jan", "Feb", "March", "April", "May", "June", "July"] }, scaleY: { "values": "0:250:50", }, series: [{ //first graph type: 'bar', values: inputData, //input data is the same for the line to map it to the top of the bar graph tooltip: { text: '%kv had %v sales' }, }, { //second graph type: 'line', lineColor: "#c0c0c0", marker: { backgroundColor: "#c0c0c0", size: 3, type: "square", borderColor: "#c0c0c0" }, values: inputData, //input data is the same for the line to map it to the top of the bar graph tooltip: { visible: false }, }, ] }; return myConfig; } // ZC is a object (wrapper) // This function determines the text value and color value // based on if we went up or down in sales ZC.customFn.myfunc = function(p) { var value = globalArray[p.nodeindex]; var textValue = "%" + value; var color = "red"; if (p.nodeindex === 0) //if januaray display no text textValue = ""; if (value > 0) color = "green"; return { text: textValue, fontColor: color } }; //make this function calculate whatever you want! function customFormatingFunction() { for (var i = 0; i < inputData.length; i++) { var sumTotal = 0; if (i === 0) { //display no text on the first plot (January) globalArray.push(''); } else { sumTotal = inputData[i] + inputData[i - 1]; globalArray.push(Math.round((inputData[i] - inputData[i - 1]) / sumTotal * 100)) } } } //this renders the chart, does not need to be in window.:load function zingchart.render({ id: 'myChart', data: initGraphData(), height: 400, width: '100%' }); </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'></div> </body> </html>
html, body, #myChart { width: 100%; }
ZC.customFn = {}; //Global wrapper var globalArray = []; var inputData = [114, 164, 154, 97, 87, 133, 180]; function initGraphData() { //initialze globalArray with this function to create whatever custom values you want customFormatingFunction(); //initiate graph JSON var myConfig = { type: "mixed", theme: "light", plot: { valueBox: { //this is for displaying percentage value all the time jsRule: "ZC.customFn.myfunc()", //function will be called once for each node before render! placement: "top", padding: 5, backgroundColor: "#c4c4c4", shadow: false, rules: [{ rule: "%p == 1", // If plot is bar graph, hide the value box. Otherwise we will visible: false // have two of the same valueBoxes. }] }, }, title: { text: "Sales" }, scaleX: { values: ["Jan", "Feb", "March", "April", "May", "June", "July"] }, scaleY: { "values": "0:250:50", }, series: [{ //first graph type: 'bar', values: inputData, //input data is the same for the line to map it to the top of the bar graph tooltip: { text: '%kv had %v sales' }, }, { //second graph type: 'line', lineColor: "#c0c0c0", marker: { backgroundColor: "#c0c0c0", size: 3, type: "square", borderColor: "#c0c0c0" }, values: inputData, //input data is the same for the line to map it to the top of the bar graph tooltip: { visible: false }, }, ] }; return myConfig; } // ZC is a object (wrapper) // This function determines the text value and color value // based on if we went up or down in sales ZC.customFn.myfunc = function(p) { var value = globalArray[p.nodeindex]; var textValue = "%" + value; var color = "red"; if (p.nodeindex === 0) //if januaray display no text textValue = ""; if (value > 0) color = "green"; return { text: textValue, fontColor: color } }; //make this function calculate whatever you want! function customFormatingFunction() { for (var i = 0; i < inputData.length; i++) { var sumTotal = 0; if (i === 0) { //display no text on the first plot (January) globalArray.push(''); } else { sumTotal = inputData[i] + inputData[i - 1]; globalArray.push(Math.round((inputData[i] - inputData[i - 1]) / sumTotal * 100)) } } } //this renders the chart, does not need to be in window.:load function zingchart.render({ id: 'myChart', data: initGraphData(), height: 400, width: '100%' });