使用谷歌图表api

时间:2016-01-15 09:29:50

标签: javascript charts google-visualization pie-chart google-chartwrapper

我使用谷歌图表API在我的仪表板上创建我的条形图。当我使用api创建条形图时,它会为我创建漂亮的条形图,但根据我的要求,我需要图片中提到的条形标签值的超链接。

Image shows bar chart i have and circle shows labels where i need to place a hyperlink

    function drawStackedChart(reqCategoryId,fcategoryName)
        {

        $.ajax({
        url: "http://localhost:8080/TheSanshaWorld/sfcms/fetch-complaint-result-for-other-category?categoryId="+reqCategoryId,
        datatype: "json",
        success : function(jsonData)
        {
        var data = new google.visualization.DataTable();
         // Add columns
        data.addColumn('string','categoryName');
        data.addColumn({type: 'number',role: 'interval'});
        var complaintStatus = jsonData[0].complaintStatus;

        for(var i=0;i<complaintStatus.length;i++)
        {
        data.addColumn('number',complaintStatus[i].statusName);
        data.addColumn({type: 'number',role: 'scope'});
        }
        data.addRows(jsonData.length);
        var maxVal=jsonData[0].totalCountComplaint;
        for(i=0;i<jsonData.length;i++)
        {  
// trying to create hyperlink
        data.setCell(i,0,'<a href="next.html">+jsonData[i].categoryName+</a>');
        data.setCell(i,1,jsonData[i].categoryId);
        for(j=0; j< jsonData[i].complaintStatus.length; j++)
        {
        data.setCell(i,parseInt(jsonData[i].complaintStatus[j].statusId)*2, jsonData[i].complaintStatus[j].countComplaint);
        data.setCell(i,parseInt(jsonData[i].complaintStatus[j].statusId)*2+1, jsonData[i].complaintStatus[j].statusId);
        }

        if(jsonData[i].totalCountComplaint>maxVal)
        maxVal=jsonData[i].totalCountComplaint;
        }
        var options = {
        title : fcategoryName+' Complaints Dashboard',
        titleTextStyle : {
        fontName : 'Arial',
        fontSize : 18,
        bold : true,
        },
        isStacked:true,
        chartArea: {width:'50%',height:'75%'},
        bar: {groupWidth: '50%'},
        tooltip : {
        isHtml : true,
        textStyle : {
        fontName : 'sans-serif',
        fontSize : 14,
        bold : false
        }
        },
        hAxis:{
        title:'status values',
        gridlines : {
        count : maxVal+1
           },
        baseline:maxVal,//static
        },
        vAxis:{
        title:'Complaint\'s categories',
        textStyle : {
        fontName : 'sans-serif',
        fontSize : 18,
        bold : false,
        },
        },
        };
        var chart = new google.visualization.BarChart(document.getElementById('donutchart'));
        chart.draw(data, options);

        new google.visualization.events.addListener(chart, 'select', selectionHandler);
        function selectionHandler() {
        // code for selection handler
    }

1 个答案:

答案 0 :(得分:1)

我通过添加点击事件获得了此问题的解决方案并获得了目标ID。 和target id包含有关click事件的所有信息,因此使用此目标ID我们可以轻松找到点击信息。 代码:

var handler = function(e) {
console.log(e);
var parts = e.targetID.split('#');
console.log(parts);
if(parts[0]=="vAxis")
{
if (parts.indexOf('label') >= 0) {
var idx = parts[parts.indexOf('label') + 1];
$(document).ready(function() {$('#prev').show();});
categoryName=data.getValue(parseInt(idx),0);
c=categoryId=data.getValue(parseInt(idx),1);

}
}
else if(parts[0]=="legendentry")
{
//alert(parts[1]);
var op=parseInt(parts[1]);
optionBase(op);
chart.setSelection([]);
}
else if(parts[0]=="bar")
{
categoryName=data.getValue(parseInt(parts[2]),0);
categoryId=data.getValue(parseInt(parts[2]),1);
statusId=data.getValue(parseInt(parts[2]),2);

chart.setSelection([]);
}
};
google.visualization.events.addListener(chart, 'click', handler);