{"id":190,"date":"2014-11-14T23:03:24","date_gmt":"2014-11-14T23:03:24","guid":{"rendered":"http:\/\/www.honobono-life.info\/wpeng\/?p=190"},"modified":"2017-11-14T22:44:10","modified_gmt":"2017-11-14T22:44:10","slug":"google-chart-2-way-data-binding","status":"publish","type":"post","link":"http:\/\/www.honobono-life.info\/wpeng\/google-chart-2-way-data-binding\/","title":{"rendered":"Google Chart 2-way data binding"},"content":{"rendered":"<ul>\r\n<li>AngularJS : 1.6.5<\/li>\r\n<li>Bootstrap : 3.x<\/li>\r\n<\/ul>\r\n<!--more-->\r\n<div role=\"tabpanel\">\r\n  <ul class=\"nav nav-tabs\">\r\n    <li class=\"active\"><a href=\"#demo1\" data-toggle=\"tab\">demo<\/a><\/li>\r\n    <li><a href=\"#html1\" data-toggle=\"tab\">markup<\/a><\/li>\r\n    <li><a href=\"#script1\" data-toggle=\"tab\">script<\/a><\/li>\r\n  <\/ul>\r\n  <div class=\"tab-content\">\r\n    <div class=\"tab-pane active\" id=\"demo1\">\r\n\r\n<a href=\"http:\/\/www.honobono-life.info\/wpeng\/wp-content\/themes\/ang\/assets\/templates\/gglchart-ng-2way.html\" rel=\"noopener\" target=\"_blank\">Demo<\/a>\r\n\r\n    <\/div>\r\n    <div class=\"tab-pane\" id=\"html1\">\r\n<pre>\r\n  &lt;head>\r\n\/\/\r\n    &lt;script type=\"text\/javascript\" src=\"https:\/\/www.gstatic.com\/charts\/loader.js\">&lt;\/script>\r\n  &lt;\/head>\r\n  &lt;body>\r\n    &lt;div ng-controller=\"MyCtrl\">\r\n      &lt;div g-chart>&lt;\/div>\r\n      &lt;select id=\"chartType\" ng-model=\"chartType\"\r\n              ng-change=\"selectType(chartType)\" \r\n              ng-options=\"c.typeName for c in chartTypes\">\r\n      &lt;\/select>\r\n    &lt;\/div>\r\n    &lt;script type='text\/javascript' src='js\/angular.min.js'>&lt;\/script>\r\n    &lt;script type=\"text\/javascript\" src=\"js\/app.js\">&lt;\/script>\r\n  &lt;\/body>\r\n<\/pre>\r\n    <\/div>\r\n\r\n    <div class=\"tab-pane\" id=\"script1\">\r\n<pre>\r\ngoogle.charts.load('current', {packages: ['corechart']});\r\n\r\ngoogle.charts.setOnLoadCallback(function() {\r\n  angular.bootstrap(document.body, ['myApp']);\r\n});\r\n\r\nvar mymodule=angular.module('myApp', [])\r\n\r\nmymodule.controller('MyCtrl', ['$scope',\r\n  function($scope) {\r\n    var data = new google.visualization.DataTable();\r\n    data.addColumn('string', 'Topping');\r\n    data.addColumn('number', 'Slices');\r\n    data.addRows([\r\n      ['Mushrooms', 3],\r\n      ['Onions', 1],\r\n      ['Olives', 1],\r\n      ['Zucchini', 1],\r\n      ['Pepperoni', 2]\r\n    ]);\r\n    var options = {'title':'How Much Pizza I Ate Last Night',\r\n                   'width':400,\r\n                   'height':300};\r\n    var chart = {};\r\n\r\n    chart.data = data;\r\n    chart.options = options;\r\n\r\n    $scope.chartTypes = [\r\n      {typeName: 'LineChart', typeValue: '1'},\r\n      {typeName: 'BarChart', typeValue: '2'},\r\n      {typeName: 'ColumnChart', typeValue: '3'},\r\n      {typeName: 'PieChart', typeValue: '4'}\r\n    ];\r\n    $scope.chartType = $scope.chartTypes[0];\r\n\r\n    $scope.selectType = function(type) {\r\n      $scope.chart.type = type.typeValue;\r\n    }\r\n    chart.type = $scope.chartTypes[0].typeValue;\r\n\r\n    $scope.chart = chart;\r\n  }\r\n]);\r\n\r\nmymodule.directive('gChart', function() {\r\n  return {\r\n    restrict: 'A',\r\n    link: function($scope, elm, attrs) {\r\n      $scope.$watch('chart', function() {\r\n        var type = $scope.chart.type;\r\n        var chart = '';\r\n\r\n        if (type == '1') {\r\n          chart = new google.visualization.LineChart(elm[0]);\r\n        } else if (type == '2') {\r\n          chart = new google.visualization.BarChart(elm[0]);\r\n        } else if (type == '3') {\r\n          chart = new google.visualization.ColumnChart(elm[0]);\r\n        } else if (type == '4') {\r\n          chart = new google.visualization.PieChart(elm[0]);\r\n        }\r\n\r\n        chart.draw($scope.chart.data, $scope.chart.options);\r\n      },true);\r\n    }\r\n  };\r\n});\r\n<\/pre>\r\n    <\/div><!-- \/.tab-pane -->\r\n\r\n  <\/div><!-- \/.tab-content -->\r\n<\/div><!-- \/.tabpanel -->\r\n","protected":false},"excerpt":{"rendered":"<p>AngularJS : 1.6.5 Bootstrap : 3.x<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[36],"tags":[],"amp_enabled":true,"_links":{"self":[{"href":"http:\/\/www.honobono-life.info\/wpeng\/wp-json\/wp\/v2\/posts\/190"}],"collection":[{"href":"http:\/\/www.honobono-life.info\/wpeng\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/www.honobono-life.info\/wpeng\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/www.honobono-life.info\/wpeng\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"http:\/\/www.honobono-life.info\/wpeng\/wp-json\/wp\/v2\/comments?post=190"}],"version-history":[{"count":14,"href":"http:\/\/www.honobono-life.info\/wpeng\/wp-json\/wp\/v2\/posts\/190\/revisions"}],"predecessor-version":[{"id":1589,"href":"http:\/\/www.honobono-life.info\/wpeng\/wp-json\/wp\/v2\/posts\/190\/revisions\/1589"}],"wp:attachment":[{"href":"http:\/\/www.honobono-life.info\/wpeng\/wp-json\/wp\/v2\/media?parent=190"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/www.honobono-life.info\/wpeng\/wp-json\/wp\/v2\/categories?post=190"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/www.honobono-life.info\/wpeng\/wp-json\/wp\/v2\/tags?post=190"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}