I've got a terrible problem and I don't know why. I have a web application 
divided in two parts, one part is public and the other part is private. The 
public part works fine with Google Charts, but private part works wrong 
because duplicate calls to other functions!!!

To represent chart graphics I have defined the next directive:


privateApp.directive("columnChart", function(){ return{ restrict: "A", scope: { 
titleChart: "=", data: "=", columns: "=", min: "=", max: "=", vAxisTitle: "=", 
hAxisTitle: "=", tooltipColumn: "=", isClicked: "=", callbackFn: "&", width: 
"=", height: "=" }, link: function(scope, $elm, $attr){ var data = new 
google.visualization.DataTable(); //Definimos las columnas que va a tener 
nuestra tabla de datos for (var i = 0; i < scope.columns.length; i++){ 
data.addColumn(scope.columns[i].tipo, scope.columns[i].nombreColumna); }; var 
widthChart = 400; var heightChart = 400; if (scope.width != null) widthChart = 
scope.width; if (scope.height != null) heightChart = scope.height; 
scope.$watch("data", function (newValue, oldValue){ scope.options = { width: 
widthChart, height: heightChart, bar: {groupWidth: "95%"}, title: 
scope.titleChart, legend: {position: "none"}, annotations: { alwaysOutside: 
true }, chartArea : {left:50,top:50,width:'90%',height:'80%'}, vAxis: {title: 
scope.vAxisTitle}, hAxis: {title: scope.hAxisTitle, textPosition: "out"} }; if 
(scope.data != null){ //Eliminamos datos del DataTable data.removeRows(0, 
data.getNumberOfRows()); //Insertamos filas a la tabla for (var i = scope.min; 
i <= scope.max; i++){ data.addRow(scope.data[i]); }; var view = new 
google.visualization.DataView(data); view.setColumns([0, 1, { calc: 
"stringify", sourceColumn: 1, type: "string", role: "annotation" }, { calc: 
"stringify", sourceColumn: scope.tooltipColumn, type: "string", role: "tooltip" 
}]); var chart = new google.visualization.ColumnChart($elm[0]); 
//chart.draw(data, scope.options); chart.draw(view, scope.options); if 
(scope.isClicked){ //Detectamos el clic sobre el gráfico 
google.visualization.events.addListener(chart, "click", selectHandler); } } }); 
scope.$watch("min", function (newValue, oldValue){ scope.options = { width: 
400, height: 400, bar: {groupWidth: "95%"}, title: scope.titleChart, legend: 
{position: "none"}, annotations: { alwaysOutside: true }, chartArea : 
{left:50,top:50,width:'90%',height:'80%'}, vAxis: {title: scope.vAxisTitle}, 
hAxis: {title: scope.hAxisTitle, textPosition: "out"} }; if (scope.data != 
null){ //Eliminamos datos del DataTable data.removeRows(0, 
data.getNumberOfRows()); //Insertamos nuevos datos en la tabla for (var i = 
scope.min; i <= scope.max; i++){ data.addRow(scope.data[i]); }; var view = new 
google.visualization.DataView(data); view.setColumns([0, 1, { calc: 
"stringify", sourceColumn: 1, type: "string", role: "annotation" }, { calc: 
"stringify", sourceColumn: scope.tooltipColumn, type: "string", role: "tooltip" 
}]); var chart = new google.visualization.ColumnChart($elm[0]); 
chart.draw(view, scope.options); if (scope.isClicked){ //Detectamos el clic 
sobre el gráfico google.visualization.events.addListener(chart, "click", 
selectHandler); } } }); function selectHandler(e){ var index; index = 
parseInt(e.targetID.substring("bar#0#".length, e.targetID.length)); 
scope.callbackFn({arg1: data.getValue(index, 4)}); //alert(data.getValue(index, 
4)); } } }; });

And in the layout, I have added this code witch works fine in the public part 
and makes me to call twice functions when I load page or fire any event:


<script type = "text/javascript"> google.charts.setOnLoadCallback(function(){ 
angular.bootstrap(document.body, ["privateProfileModule"]); }); 
google.charts.load("current", {packages: ["corechart"]}); </script>

You can check on the next picture the duplicate calls to the functions and the 
final error that I get.


<https://lh3.googleusercontent.com/-t8MD-PJi5kc/VzxAr22qZ7I/AAAAAAAAAEY/93mnr3RKsAk_MBe7iGCbbpQo4faAMcLxACLcB/s1600/Captura%2Bde%2Bpantalla%2Bde%2B2016-05-18%2B12%253A05%253A18.png>

I don't have any idea why is happend this!!! Please, help me!!! Thank you in 
advance!!!

-- 
You received this message because you are subscribed to the Google Groups 
"Google Visualization API" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To post to this group, send email to [email protected].
Visit this group at https://groups.google.com/group/google-visualization-api.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/google-visualization-api/7a49f5dc-189b-41c7-9864-3bce190ae7b6%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to