c80_estate 0.1.0.3 → 0.1.0.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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
  };