回答編集履歴

2

dataArrayのエラー修正

2021/04/01 06:56

投稿

takapiroid
takapiroid

スコア54

test CHANGED
@@ -49,6 +49,10 @@
49
49
  google.load("visualization", "1", { packages: ["corechart"] });
50
50
 
51
51
  google.setOnLoadCallback(initialize);
52
+
53
+ var dataArray = [["breaks", "count"]];
54
+
55
+
52
56
 
53
57
 
54
58
 
@@ -130,8 +134,6 @@
130
134
 
131
135
  function initialize() {
132
136
 
133
- var dataArray = [["breaks", "count"]];
134
-
135
137
  $("#search").click(function () {
136
138
 
137
139
  $.ajax({

1

関数化した場合のコードを追加しました。

2021/04/01 06:55

投稿

takapiroid
takapiroid

スコア54

test CHANGED
@@ -31,3 +31,153 @@
31
31
  グラフ表示処理を関数化し、クリック毎にその関数を呼び出すのが良いと思います。
32
32
 
33
33
  その場合 deferred.promise() で完了を待つような処理自体不要になります。
34
+
35
+
36
+
37
+ 動作確認はしていませんが以下のようにして挙動いかがでしょうか。
38
+
39
+ スペルミスなどありましたらすみません
40
+
41
+
42
+
43
+ ```javascript
44
+
45
+ <script type="text/javascript">
46
+
47
+ // ライブラリ準備
48
+
49
+ google.load("visualization", "1", { packages: ["corechart"] });
50
+
51
+ google.setOnLoadCallback(initialize);
52
+
53
+
54
+
55
+ // 実際の描画部分
56
+
57
+ function drawChart(thres) {
58
+
59
+ let chart;
60
+
61
+ var chartdata = google.visualization.arrayToDataTable(dataArray);
62
+
63
+ if (thres == 1) {
64
+
65
+ var options = {
66
+
67
+ width: 900,
68
+
69
+ height: 600,
70
+
71
+ pieSliceText: "value",
72
+
73
+ legend: "right",
74
+
75
+ histogram: {
76
+
77
+ hideBucketItems: true,
78
+
79
+ bucketSize: 10,
80
+
81
+ },
82
+
83
+ bar: { groupWidth: "100%" },
84
+
85
+ colors: ["gray"],
86
+
87
+ };
88
+
89
+ chart = new google.visualization.Histogram(
90
+
91
+ document.getElementById("chart_div")
92
+
93
+ );
94
+
95
+ chart.draw(chartdata, options);
96
+
97
+ } else if (thres == 2) {
98
+
99
+ // chart.draw() はどこでする?
100
+
101
+ chart = new google.charts.Bar(document.getElementById("chart_div"));
102
+
103
+ } else if (thres == 4) {
104
+
105
+ // chart.draw() はどこでする?
106
+
107
+ chart = new google.visualization.PieChart(
108
+
109
+ document.getElementById("chart_div")
110
+
111
+ );
112
+
113
+ } else if (thres == 9) {
114
+
115
+ // chart.draw() はどこでする?
116
+
117
+ chart = new google.visualization.Histogram(
118
+
119
+ document.getElementById("chart_div")
120
+
121
+ );
122
+
123
+ }
124
+
125
+ }
126
+
127
+
128
+
129
+ // 描画の準備
130
+
131
+ function initialize() {
132
+
133
+ var dataArray = [["breaks", "count"]];
134
+
135
+ $("#search").click(function () {
136
+
137
+ $.ajax({
138
+
139
+ data: "post",
140
+
141
+ url: "http://localhost:3000/result/" + $("#zip").val(),
142
+
143
+ dataType: "json",
144
+
145
+ })
146
+
147
+ .done(function (data) {
148
+
149
+ console.log("success");
150
+
151
+ var data_item = data.count.map((c, i) => {
152
+
153
+ return [data.breaks[i].toString(), c];
154
+
155
+ });
156
+
157
+ dataArray.push(...data_item);
158
+
159
+ console.log(dataArray);
160
+
161
+ // thres = data.thres;
162
+
163
+ // console.log(thres);
164
+
165
+ $(data).each(function () {});
166
+
167
+ drawChart(data.thres);
168
+
169
+ })
170
+
171
+ .fail(function () {
172
+
173
+ console.log("error");
174
+
175
+ });
176
+
177
+ });
178
+
179
+ }
180
+
181
+ </script>
182
+
183
+ ```