c80_estate 0.1.0.3 → 0.1.0.4

Sign up to get free protection for your applications and to get access to all the features.
Files changed (33) hide show
  1. checksums.yaml +4 -4
  2. data/app/admin/c80_estate/dashboard.rb +65 -0
  3. data/app/admin/c80_estate/properties.rb +9 -1
  4. data/app/admin/c80_estate/sevents.rb +18 -12
  5. data/app/assets/images/property_default_logo.png +0 -0
  6. data/app/assets/javascript/c80_estate/backend/admin/pstats.js +231 -40
  7. data/app/assets/javascript/c80_estate/backend/admin/sevents.js +127 -1
  8. data/app/assets/javascript/c80_estate/lib/Chart.bundle.js +14282 -0
  9. data/app/assets/javascript/c80_estate/lib/jquery.canvasjs.min.js +560 -0
  10. data/app/assets/stylesheets/c80_estate/backend/admin_pstats.scss +55 -5
  11. data/app/assets/stylesheets/c80_estate/backend/admin_sevents.scss +5 -0
  12. data/app/assets/stylesheets/c80_estate/backend/dashboard/atype_in_list.scss +29 -0
  13. data/app/assets/stylesheets/c80_estate/backend/dashboard/common.scss +43 -0
  14. data/app/assets/stylesheets/c80_estate/backend/dashboard/prop_in_list.scss +52 -0
  15. data/app/controllers/c80_estate/ajax_view_controller.rb +23 -0
  16. data/app/helpers/c80_estate/app_helper.rb +55 -0
  17. data/app/models/c80_estate/area.rb +40 -15
  18. data/app/models/c80_estate/plogo.rb +6 -0
  19. data/app/models/c80_estate/pphoto.rb +1 -0
  20. data/app/models/c80_estate/property.rb +14 -0
  21. data/app/models/c80_estate/pstat.rb +419 -30
  22. data/app/models/c80_estate/sevent.rb +65 -1
  23. data/app/uploaders/c80_estate/plogo_uploader.rb +25 -0
  24. data/app/views/admin/dashboard/_atype_in_list.html.erb +3 -0
  25. data/app/views/admin/dashboard/_prop_in_list.html.erb +10 -0
  26. data/app/views/c80_estate/ajax_view/table_properties_coef_busy.js.erb +3 -0
  27. data/app/views/c80_estate/ajax_view/table_properties_coef_busy_sq.js.erb +3 -0
  28. data/app/views/c80_estate/shared/_table_properties_coef_busy.html.erb +25 -0
  29. data/app/views/c80_estate/shared/_table_properties_coef_busy_sq.html.erb +25 -0
  30. data/config/routes.rb +4 -0
  31. data/db/migrate/20160630012728_create_c80_estate_plogos.rb +9 -0
  32. data/lib/c80_estate/version.rb +1 -1
  33. metadata +20 -2
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 347ae43df7eb3ed899e9ae21f3a85648fff17baa
4
- data.tar.gz: 38e409296f4dd3fb71867a38918da9c68823b678
3
+ metadata.gz: 874477f69a0669398c5c3ecffeb2749cb5083cde
4
+ data.tar.gz: 9b447c9a40b61e65e2750b23de3a75558e23af6f
5
5
  SHA512:
6
- metadata.gz: 858bcd250a2e8c33bbd56e5b28aa8c3849e9843392868a3433b53498cd3574dd7d5faccbd014f917816f6a918fc951e3533b02d0bebcaa4dc93c2fdacae44a22
7
- data.tar.gz: 01a4d0cf2c9c6edf973f25c782ecbd1d09405592e206d8ee5dff257c86b22a010332947f266f1119c3d391ab211785bac73671530ebbec93a63c67ae19225ef3
6
+ metadata.gz: 67de432c20fcc77bc29dcb3ae67360974e382f5f0ed1986ce09f5e9be10359142e7797c56610ee8f1bb6a55f359f6be283a5d5e8e7219f0a7497eeae8b39af8a
7
+ data.tar.gz: 29ba6d1171311bca2b3abbdf56985da00dda295e45b36384d69b8f944a799d704981f5cb3a627f9ae423afe97504f5819a61f8eacfebcde643000d8f544fa162
@@ -0,0 +1,65 @@
1
+ ActiveAdmin.register_page "Dashboard" do
2
+
3
+ menu priority: 1, label: proc { I18n.t("active_admin.dashboard") }
4
+
5
+ content title: proc { I18n.t("active_admin.dashboard") } do
6
+
7
+ columns do
8
+
9
+ column do
10
+
11
+ panel 'Объекты недвижимости', class:'clearfix' do
12
+ # para "Объекты недвижимости", class: 'title'
13
+ C80Estate::Property.all.each do |prop|
14
+ render partial: 'prop_in_list', locals: {prop: prop}
15
+ end
16
+ end
17
+
18
+ panel 'Типы площадей', class:'clearfix' do
19
+ # para 'Типы площадей', class: 'title'
20
+ C80Estate::Atype.all.each do |atype|
21
+ render partial: 'atype_in_list', locals: {atype: atype}
22
+ end
23
+ end
24
+
25
+ end
26
+
27
+ column do
28
+ panel 'Рейтинг занятости', class:'clearfix' do
29
+ render_table_prop_busy_coef
30
+ end
31
+ panel 'Рейтинг занятости в м.кв.', class:'clearfix' do
32
+ render_table_prop_busy_coef_sq
33
+ end
34
+ end
35
+
36
+ end
37
+
38
+ # div class: "blank_slate_container", id: "dashboard_default_message" do
39
+ # span class: "blank_slate" do
40
+ # span I18n.t("active_admin.dashboard_welcome.welcome")
41
+ # small I18n.t("active_admin.dashboard_welcome.call_to_action")
42
+ # end
43
+ # end
44
+
45
+ # Here is an example of a simple dashboard with columns and panels.
46
+ #
47
+ # columns do
48
+ # column do
49
+ # panel "Recent Posts" do
50
+ # ul do
51
+ # Post.recent(5).map do |post|
52
+ # li link_to(post.title, admin_post_path(post))
53
+ # end
54
+ # end
55
+ # end
56
+ # end
57
+
58
+ # column do
59
+ # panel "Info" do
60
+ # para "Welcome to ActiveAdmin."
61
+ # end
62
+ # end
63
+ # end
64
+ end # content
65
+ end
@@ -13,7 +13,9 @@ ActiveAdmin.register C80Estate::Property, as: 'Property' do
13
13
  :owner_id,
14
14
  :owner_type,
15
15
  :assigned_person_id,
16
- :assigned_person_type
16
+ :assigned_person_type,
17
+ :pphotos_attributes => [:id,:image,:_destroy],
18
+ :plogos_attributes => [:id,:image,:_destroy]
17
19
 
18
20
  config.sort_order = 'id_asc'
19
21
 
@@ -62,6 +64,12 @@ ActiveAdmin.register C80Estate::Property, as: 'Property' do
62
64
  :hint => image_tag(gp.object.image.thumb512)
63
65
  end
64
66
 
67
+ f.has_many :plogos, :allow_destroy => true do |gp|
68
+ gp.input :image,
69
+ :as => :file,
70
+ :hint => image_tag(gp.object.image.thumb128)
71
+ end
72
+
65
73
  end
66
74
 
67
75
  f.actions
@@ -13,24 +13,24 @@ ActiveAdmin.register C80Estate::Sevent, as: 'Sevent' do
13
13
 
14
14
  config.sort_order = 'id_asc'
15
15
 
16
- # filter :property_id,
17
- # :as => :select,
18
- # :collection => -> { C80Estate::Property.all.map { |p| ["#{p.title}", p.id] } },
19
- # :input_html => {:class => 'selectpicker', 'data-size' => "10", 'data-width' => '100%'}
16
+ filter :property_id,
17
+ :as => :select,
18
+ :collection => -> { C80Estate::Property.all.map { |p| ["#{p.title}", p.id] } },
19
+ :input_html => {:class => 'selectpicker', 'data-size' => "10", 'data-width' => '100%'}
20
20
  filter :area_id,
21
21
  :as => :select,
22
22
  :collection => -> { C80Estate::Area.all.map { |a|
23
23
  ["#{a.property.title}: #{a.title}", a.id]
24
24
  } },
25
25
  :input_html => {:class => 'selectpicker', 'data-size' => "10", 'data-width' => '100%'}
26
- # filter :atype_id,
27
- # :as => :select,
28
- # :collection => -> { C80Estate::Atype.all.map { |p| ["#{p.title}", p.id] } },
29
- # :input_html => {:class => 'selectpicker', 'data-size' => "10", 'data-width' => '100%'}
30
- # filter :auser_id,
31
- # :as => :select,
32
- # :collection => -> { AdminUser.all.map { |u| ["#{u.email}", u.id] } },
33
- # :input_html => {:class => 'selectpicker', 'data-size' => "10", 'data-width' => '100%'}
26
+ filter :atype_id,
27
+ :as => :select,
28
+ :collection => -> { C80Estate::Atype.all.map { |p| ["#{p.title}", p.id] } },
29
+ :input_html => {:class => 'selectpicker', 'data-size' => "10", 'data-width' => '100%'}
30
+ filter :auser_id,
31
+ :as => :select,
32
+ :collection => -> { AdminUser.all.map { |u| ["#{u.email}", u.id] } },
33
+ :input_html => {:class => 'selectpicker', 'data-size' => "10", 'data-width' => '100%'}
34
34
  filter :created_at
35
35
  # filter :updated_at
36
36
 
@@ -46,6 +46,12 @@ ActiveAdmin.register C80Estate::Sevent, as: 'Sevent' do
46
46
  column :astatus do |sevent|
47
47
  sevent.astatus_title
48
48
  end
49
+ column :atype do |sevent|
50
+ sevent.atype.title
51
+ end
52
+ column :auser do |sevent|
53
+ sevent.auser_title
54
+ end
49
55
  column :created_at
50
56
  column :property do |sevent|
51
57
  sevent.property_title
@@ -12,14 +12,34 @@ var fPstatsIndex = function () {
12
12
 
13
13
  // компонент "над таблицей"
14
14
  var $div_index_adds;
15
- var $div_busy_coef;
16
- var $p_busy_coef; // здесь выводим число - коэф-т эффективности
17
- var $p_ecoef_mess; // здесь вешаем hint на подпись "эффективность"
18
- var $p_ecoef_comment; // здесь выводим комментарий
19
- var $div_area_text_stats;
20
- var $ul_props; // здесь выводим текстовые свойства
21
- var $div_graph; // в этом div живет график
22
- var $div_graph2; // в этом div живет график
15
+
16
+ // блок ЗАНЯТОСТЬ
17
+ var $div_busy_coef,
18
+ $p_busy_coef, // здесь выводим число - занятость
19
+ $p_busy_coef_mess, // здесь вешаем hint на подпись "занятость"
20
+ $p_busy_coef_comment; // здесь выводим комментарий
21
+
22
+ // блок ЗАНЯТОСТЬ М.КВ)
23
+ var $div_busy_coef_sq,
24
+ $p_busy_coef_sq, // здесь выводим число - занятость в м.кв
25
+ $p_busy_coef_mess_sq, // здесь вешаем hint на подпись "занятость в м"
26
+ $p_busy_coef_comment_sq; // здесь выводим комментарий
27
+
28
+ var $div_area_text_stats,
29
+ $ul_props; // здесь выводим текстовые свойства
30
+
31
+ var $div_area_text_stats_sq,
32
+ $ul_props_sq; // здесь выводим текстовые свойства занятости в метрах
33
+
34
+
35
+ var $div_graph; // в этом div живет график занятости
36
+ var $div_graph2, // в этом div живет график занятости
37
+ $div_graph2canvas;
38
+
39
+ var $div_graph3, // в этом div живет график занятости в метрах
40
+ $div_graph3canvas;
41
+
42
+ var $ajax_div, $ajax_div2;
23
43
 
24
44
  var fBuild = function () {
25
45
 
@@ -31,37 +51,44 @@ var fPstatsIndex = function () {
31
51
  $input_end_date = $("#q_created_at_lteq");
32
52
  $h2_page_title = $("h2#page_title");
33
53
 
54
+ $ajax_div = $("<div id='ajax_div'></div>");
55
+ $ajax_div2 = $("<div id='ajax_div2'></div>");
56
+
34
57
  // построим компонент "над таблицей"
35
58
  $div_index_adds = $("<div id='index_adds'></div>");
36
59
 
37
- $div_busy_coef = $("<div id='coef'></div>");
38
- $p_busy_coef = $("<p class='val'></p>");
39
- $p_ecoef_mess = $("<p class='title'><abbr class='abbr_ecoef' title='TITLE'>Занятость</abbr></p>");
40
- $p_ecoef_comment = $("<p class='comment'></p>");
60
+ $div_busy_coef = $("<div id='coef'></div>").appendTo($div_index_adds);
61
+ $p_busy_coef = $("<p class='val'></p>").appendTo($div_busy_coef);
62
+ $p_busy_coef_mess = $("<p class='title'><abbr class='abbr_busy_coef' title='TITLE'>Занятость</abbr></p>").appendTo($div_busy_coef);
63
+ $p_busy_coef_comment = $("<p class='comment'></p>").appendTo($div_busy_coef);
64
+
65
+ $div_area_text_stats = $("<div id='text_stats'></div>").appendTo($div_index_adds);
66
+ $ul_props = $("<ul><li id='title'></li><li id='born_date'></li><li id='atype_filter'></li><li id='all_areas_count'></li><li id='free_areas_count'></li><li id='busy_areas_count'></li></ul>");
67
+ $div_area_text_stats.append($ul_props);
41
68
 
42
- $div_busy_coef.append($p_busy_coef);
43
- $div_busy_coef.append($p_ecoef_mess);
44
- $div_busy_coef.append($p_ecoef_comment);
69
+ $div_busy_coef_sq = $("<div id='coef_sq'></div>").appendTo($div_index_adds);
70
+ $p_busy_coef_sq = $("<p class='val'></p>").appendTo($div_busy_coef_sq);
71
+ $p_busy_coef_mess_sq = $("<p class='title'><abbr class='abbr_busy_coef_sq' title='TITLE'>Занятость (в м.кв.)</abbr></p>").appendTo($div_busy_coef_sq);
72
+ $p_busy_coef_comment_sq = $("<p class='comment'></p>").appendTo($div_busy_coef_sq);
45
73
 
46
- $div_area_text_stats = $("<div id='text_stats'></div>");
47
- $ul_props = $("<ul><li id='title'></li><li id='born_date'></li><li id='atype_filter'></li><li id='all_areas_count'></li><li id='free_areas_count'></li><li id='busy_areas_count'></li></ul>");
48
- $div_area_text_stats.append($ul_props);
74
+ $div_area_text_stats_sq = $("<div id='text_stats_sq'></div>").appendTo($div_index_adds);
75
+ $ul_props_sq = $("<ul><li id='all_areas_count_sq'></li><li id='free_areas_count_sq'></li><li id='busy_areas_count_sq'></li></ul>");
76
+ $div_area_text_stats_sq.append($ul_props_sq);
49
77
 
50
- $div_graph = $("<div id='graph'></div>");
51
- $div_graph2 = $("<div id='graph2'></div>");
78
+ //$div_graph = $("<div id='graph'></div>").appendTo($div_index_adds);
79
+ $div_graph2 = $("<div id='graph2'></div>").appendTo($div_index_adds);
52
80
 
53
- $div_index_adds.append($div_busy_coef);
54
- $div_index_adds.append($div_area_text_stats);
55
- $div_index_adds.append($div_graph);
56
- $div_index_adds.append($div_graph2);
81
+ $div_graph3 = $("<div id='graph3'></div>").appendTo($div_index_adds);
57
82
 
83
+ $main_content.prepend($ajax_div2);
84
+ $main_content.prepend($ajax_div);
58
85
  $main_content.prepend($div_index_adds);
59
86
 
60
87
  // теперь покажем
61
88
  $main_content.css('opacity', '1.0');
62
89
  };
63
90
 
64
- var fRequest = function () {
91
+ var fRequestCoefs = function () {
65
92
 
66
93
  var atype_id = $select_atype.val();
67
94
  var property_id = $select_property.val();
@@ -80,15 +107,21 @@ var fPstatsIndex = function () {
80
107
  }
81
108
  }).done(function (data, result) {
82
109
  if (result == 'success') {
110
+
83
111
  console.log(data);
84
112
 
113
+ var i, iob, itag, ival, $ili;
114
+
85
115
  $p_busy_coef.text(data["busy_coef"]);
86
- $p_ecoef_comment.html(data["comment"]);
87
- $p_ecoef_mess.find('.abbr_ecoef').attr('title', data["abbr"]);
116
+ $p_busy_coef_comment.html(data["comment"]);
117
+ $p_busy_coef_mess.find('.abbr_busy_coef').attr('title', data["abbr"]);
118
+
119
+ $p_busy_coef_sq.text(data["busy_coef_sq"]);
120
+ $p_busy_coef_comment_sq.html(data["comment_sq"]);
121
+ $p_busy_coef_mess_sq.find('.abbr_busy_coef').attr('title', data["abbr_sq"]);
88
122
 
89
123
  if (data["props"] != undefined) {
90
124
 
91
- var i, iob, itag, ival, $ili;
92
125
  for (i = 0; i < data["props"].length; i++) {
93
126
  iob = data["props"][i];
94
127
  itag = iob["tag"];
@@ -99,10 +132,26 @@ var fPstatsIndex = function () {
99
132
 
100
133
  }
101
134
 
102
- if (data["graph"] != undefined) {
135
+ if (data["props_sq"] != undefined) {
136
+
137
+ for (i = 0; i < data["props_sq"].length; i++) {
138
+ iob = data["props_sq"][i];
139
+ itag = iob["tag"];
140
+ ival = iob["val"];
141
+ $ili = $ul_props_sq.find("#" + itag);
142
+ $ili.html(ival);
143
+ }
144
+
145
+ }
146
+
147
+ if (data["graph"] != undefined || data["graph_dynamic"] != undefined) {
103
148
  fDrawChart(data["graph"], data["graph_dynamic"]);
104
149
  }
105
150
 
151
+ if (data["graph_dynamic_sq"] != undefined) {
152
+ fDrawChartSq(data["graph_dynamic_sq"]);
153
+ }
154
+
106
155
  $h2_page_title.text(data["title"]);
107
156
  $h2_page_title.css('opacity', '1.0');
108
157
  $(document).attr('title', data["title"]);
@@ -116,9 +165,34 @@ var fPstatsIndex = function () {
116
165
  //fPreloaderShow();
117
166
  };
118
167
 
168
+ var fRequestCharts = function () {
169
+
170
+ var atype_id = $select_atype.val();
171
+
172
+ $.ajax({
173
+ url:'/estate/table_properties_coef_busy',
174
+ type:'POST',
175
+ data:{atype_id: atype_id},
176
+ dataType:'script'
177
+ }).done(function (data, result) {
178
+ //alert(result);
179
+ });
180
+
181
+ $.ajax({
182
+ url:'/estate/table_properties_coef_busy_sq',
183
+ type:'POST',
184
+ data:{atype_id: atype_id},
185
+ dataType:'script'
186
+ }).done(function (data, result) {
187
+ //alert(result);
188
+ });
189
+
190
+ };
191
+
119
192
  var fInit = function () {
120
193
  fBuild();
121
- fRequest();
194
+ fRequestCoefs();
195
+ fRequestCharts();
122
196
  };
123
197
 
124
198
  var fDrawChart = function (data_array_rows_radial, data_array_rows_dynamic) {
@@ -131,18 +205,18 @@ var fPstatsIndex = function () {
131
205
  var data, options, chart;
132
206
 
133
207
  if (data_array_rows_radial != undefined) {
134
- data = google.visualization.arrayToDataTable(data_array_rows_radial);
135
-
136
- options = {
137
- title: ''
138
- };
139
-
140
- chart = new google.visualization.PieChart(document.getElementById('graph'));
141
-
142
- chart.draw(data, options);
208
+ //data = google.visualization.arrayToDataTable(data_array_rows_radial);
209
+ //
210
+ //options = {
211
+ // title: ''
212
+ //};
213
+
214
+ //chart = new google.visualization.PieChart(document.getElementById('graph'));
215
+ //
216
+ //chart.draw(data, options);
143
217
  }
144
218
 
145
- if (data_array_rows_dynamic != undefined) {
219
+ if (data_array_rows_dynamic != undefined && false) {
146
220
  //data_array = [
147
221
  // ['Director (Year)', 'Rotten Tomatoes', 'IMDB'],
148
222
  // ['Alfred Hitchcock (1935)', 8.4, 7.9],
@@ -184,6 +258,64 @@ var fPstatsIndex = function () {
184
258
  chart.draw(data, options);
185
259
  }
186
260
 
261
+ if (data_array_rows_dynamic) {
262
+
263
+
264
+ var dataPoints = [];
265
+ //[
266
+ // {x: new Date(2012,0), y: 8.3} ,
267
+ // {x: new Date(2012,1), y: 8.3} ,
268
+ // {x: new Date(2012,2), y: 8.2} ,
269
+ // {x: new Date(2012,3), y: 8.1} ,
270
+ // {x: new Date(2012,4), y: 8.2} ,
271
+ // {x: new Date(2012,5), y: 8.2} ,
272
+ // {x: new Date(2012,6), y: 8.2} ,
273
+ // {x: new Date(2012,7), y: 8.1} ,
274
+ // {x: new Date(2012,8), y: 7.8} ,
275
+ // {x: new Date(2012,9), y: 7.9} ,
276
+ // {x: new Date(2012,10), y:7.8} ,
277
+ // {x: new Date(2012,11), y:7.8} ,
278
+ // {x: new Date(2013,0), y:7.9} ,
279
+ // {x: new Date(2013,1), y:7.7} ,
280
+ // {x: new Date(2013,2), y:7.6} ,
281
+ // {x: new Date(2013,3), y:7.5}
282
+ //]
283
+
284
+ var i, iob;
285
+ for (i = 0; i < data_array_rows_dynamic.length; i ++) {
286
+ iob = data_array_rows_dynamic[i];
287
+ dataPoints.push({
288
+ x: new Date(iob["year"], iob["month"], iob["day"]),
289
+ y: iob["val"]
290
+ })
291
+ }
292
+
293
+ var chart = new CanvasJS.Chart("graph2",
294
+ {
295
+ title:{
296
+ text: "Занятость"
297
+ },
298
+ animationEnabled: true,
299
+ axisY:{
300
+ includeZero: false,
301
+ interval: 10,
302
+ valueFormatString: ""
303
+ },
304
+ data: [
305
+ {
306
+ type: "stepArea",
307
+ toolTipContent: "{x}: {y}%",
308
+ markerSize: 5,
309
+ dataPoints: dataPoints
310
+ }
311
+
312
+ ]
313
+ });
314
+
315
+ $('#graph2').css('opacity','1.0').css('display','block');
316
+ chart.render();
317
+ }
318
+
187
319
  }
188
320
 
189
321
  if (data_array_rows_radial != undefined) {
@@ -196,6 +328,65 @@ var fPstatsIndex = function () {
196
328
 
197
329
  };
198
330
 
331
+ var fDrawChartSq = function (data) {
332
+
333
+
334
+ var dataPoints = [];
335
+ //[
336
+ // {x: new Date(2012,0), y: 8.3} ,
337
+ // {x: new Date(2012,1), y: 8.3} ,
338
+ // {x: new Date(2012,2), y: 8.2} ,
339
+ // {x: new Date(2012,3), y: 8.1} ,
340
+ // {x: new Date(2012,4), y: 8.2} ,
341
+ // {x: new Date(2012,5), y: 8.2} ,
342
+ // {x: new Date(2012,6), y: 8.2} ,
343
+ // {x: new Date(2012,7), y: 8.1} ,
344
+ // {x: new Date(2012,8), y: 7.8} ,
345
+ // {x: new Date(2012,9), y: 7.9} ,
346
+ // {x: new Date(2012,10), y:7.8} ,
347
+ // {x: new Date(2012,11), y:7.8} ,
348
+ // {x: new Date(2013,0), y:7.9} ,
349
+ // {x: new Date(2013,1), y:7.7} ,
350
+ // {x: new Date(2013,2), y:7.6} ,
351
+ // {x: new Date(2013,3), y:7.5}
352
+ //]
353
+
354
+ var i, iob;
355
+ for (i = 0; i < data.length; i ++) {
356
+ iob = data[i];
357
+ dataPoints.push({
358
+ x: new Date(iob["year"], iob["month"], iob["day"]),
359
+ y: iob["val"]
360
+ })
361
+ }
362
+
363
+ var chart = new CanvasJS.Chart("graph3",
364
+ {
365
+ title:{
366
+ text: "Занятость в м.кв."
367
+ },
368
+ animationEnabled: true,
369
+ axisY:{
370
+ includeZero: false,
371
+ interval: 10,
372
+ valueFormatString: ""
373
+ },
374
+ data: [
375
+ {
376
+ type: "stepArea",
377
+ toolTipContent: "{x}: {y}%",
378
+ markerSize: 5,
379
+ dataPoints: dataPoints
380
+ }
381
+
382
+ ]
383
+ });
384
+
385
+ $('#graph3').css('opacity','1.0').css('display','block');
386
+ chart.render();
387
+
388
+ };
389
+
199
390
  fInit();
200
391
 
201
392
  };