I choose this library because when I search library for my genealogy tree I have found this lib more useful. For example I have created one diagram yesterday, which must show purchased ecards count by country.
So my SQL looks like following:
SELECT cntry.*, COUNT(ech.ecard_id) ecard_count FROM ecard_history ech LEFT JOIN users u ON (u.id = ech.to) LEFT JOIN user_contact uc ON (uc.user_id = u.id) LEFT JOIN city cty ON (cty.id = uc.city_id) LEFT JOIN country cntry ON (cntry.id = cty.country_id) WHERE ech.transaction = 0 AND ech.date >= ? AND ech.date <= ? GROUP BY cntry.id ORDER BY cntry.title;Generation JSON object:
JSONObject json = new JSONObject(); ArrayList<String> labels = new ArrayList<String>(); ArrayList<JSONObject> values = new ArrayList<JSONObject>(); ... labels.add("Purchased Ecards"); rs = prepStmnt.executeQuery(); while(rs.next()){ // Here goes charts for country JSONObject chartJSON = new JSONObject(); ArrayList<Integer> chartValues = new ArrayList<Integer>(); chartValues.add(rs.getInt("ecard_count")); chartJSON.put("label", rs.getString("abbreviation")); chartJSON.put("values", chartValues); values.add(chartJSON); } json.put("label", labels); json.put("values", values);Your Javascript code goes here:
function showDiagram(jsonStr){ var json = eval('(' + jsonStr + ')'); var barChart = new $jit.BarChart({ //id of the visualization container injectInto: 'infovis', //whether to add animations animate: true, //horizontal or vertical barcharts orientation: 'vertical', //bars separation barsOffset: 20, //visualization offset Margin: { top:5, left: 5, right: 5, bottom:5 }, //labels offset position labelOffset: 5, //bars style type: useGradients? 'stacked:gradient' : 'stacked', //whether to show the aggregation of the values showAggregates:true, //whether to show the labels for the bars showLabels:true, //labels style Label: { type: labelType, //Native or HTML size: 13, family: 'Arial', color: 'Black' }, //add tooltips Tips: { enable: true, onShow: function(tip, elem) { tip.innerHTML = "" + elem.name + ": " + elem.value; } } }); //load JSON data. barChart.loadJSON(json); }Call your function from jsp page and pass JSON string which we generated above.
No comments:
Post a Comment