javascript - google visualization getColumnId -
i have datatable several columns. i'm building chart view of datatable. when item legend of chart clicked i'd column of underlying datatable.
code:
var score_select = google.visualization.events.addlistener(score_chart, 'select', function(){ var chrt = score_chart.getchart().getselection()[0].column;//i'm using chartwrapper var dt = score_chart.getdatatable().getcolumnid(chrt); var dt_check = score_chart.getdatatable().getnumberofcolumns(); alert(dt); \\ alert(dt_check) returns proper number of columns });
problem:
the column number referred chrt
equal column number of view not column number of underlying datatable. mean, if datatable has 10 columns , view of datatable used score_chart
has 2 columns chrt
return either 1 or 2 regardless of columns datatable used in view. causing getcolumnid(...) return column different like.
any advice great help. thanks
assuming view specified in chartwrapper's view
parameter, need reference view.columns
array column index reference underlying datatable. also, since select
event fires when users deselect element, possible array of selected elements empty, cause line throw error:
var chrt = score_chart.getchart().getselection()[0].column;
so need test length of array (and possibly iterate on array elements if multi-select enabled in chart). code should this:
var score_select = google.visualization.events.addlistener(score_chart, 'select', function(){ var selection = score_chart.getchart().getselection(); if (selection.length) { var chrt = selection[0].column; var dt = score_chart.getdatatable().getcolumnid(chrt); var dt_check = dt.getnumberofcolumns(); var view = score_chart.getview(); var dtcolumnindex = view.columns[chart]; alert('the selected column ' + dt.getcolumnlabel(dtcolumnindex)); } });
this assumes view.columns
contains column references - if contains calculated columns, have decide want those.
Comments
Post a Comment