javascript - 使用谷歌图表API的可点击条形图标签

标签 javascript charts pie-chart google-visualization

我正在使用谷歌图表 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
    }

最佳答案

我通过添加点击事件并获得了目标ID来解决这个问题。 而target id包含了有关点击事件的所有信息,因此使用这个target 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);

关于javascript - 使用谷歌图表API的可点击条形图标签,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34808002/

相关文章:

javascript - 在使用 makeStyles 的 Material ui 中,是否可以编写仅在元素具有两个类时才适用的 css 规则?

javascript - 每个顶层都嵌套在 Handlebars 中

Javascript - 将值与关联数组索引进行比较

Highcharts - 饼图/ donut chart 组小部分

javascript - 无法从本地主机中的 php 文件获取 json 数据

javascript - 更改 amCharts 的标签样式

html - 谷歌图表烛台去掉了蜡烛条以外的所有东西

javascript - 如何在图表中心添加文本js圆环图

D3.js 圆环图... arc.centroid(d) 不受 d.innerRadius 和 d.outerRadius 的影响

python - 如何给饼图添加标签?