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.
- checksums.yaml +4 -4
- data/app/admin/c80_estate/dashboard.rb +65 -0
- data/app/admin/c80_estate/properties.rb +9 -1
- data/app/admin/c80_estate/sevents.rb +18 -12
- data/app/assets/images/property_default_logo.png +0 -0
- data/app/assets/javascript/c80_estate/backend/admin/pstats.js +231 -40
- data/app/assets/javascript/c80_estate/backend/admin/sevents.js +127 -1
- data/app/assets/javascript/c80_estate/lib/Chart.bundle.js +14282 -0
- data/app/assets/javascript/c80_estate/lib/jquery.canvasjs.min.js +560 -0
- data/app/assets/stylesheets/c80_estate/backend/admin_pstats.scss +55 -5
- data/app/assets/stylesheets/c80_estate/backend/admin_sevents.scss +5 -0
- data/app/assets/stylesheets/c80_estate/backend/dashboard/atype_in_list.scss +29 -0
- data/app/assets/stylesheets/c80_estate/backend/dashboard/common.scss +43 -0
- data/app/assets/stylesheets/c80_estate/backend/dashboard/prop_in_list.scss +52 -0
- data/app/controllers/c80_estate/ajax_view_controller.rb +23 -0
- data/app/helpers/c80_estate/app_helper.rb +55 -0
- data/app/models/c80_estate/area.rb +40 -15
- data/app/models/c80_estate/plogo.rb +6 -0
- data/app/models/c80_estate/pphoto.rb +1 -0
- data/app/models/c80_estate/property.rb +14 -0
- data/app/models/c80_estate/pstat.rb +419 -30
- data/app/models/c80_estate/sevent.rb +65 -1
- data/app/uploaders/c80_estate/plogo_uploader.rb +25 -0
- data/app/views/admin/dashboard/_atype_in_list.html.erb +3 -0
- data/app/views/admin/dashboard/_prop_in_list.html.erb +10 -0
- data/app/views/c80_estate/ajax_view/table_properties_coef_busy.js.erb +3 -0
- data/app/views/c80_estate/ajax_view/table_properties_coef_busy_sq.js.erb +3 -0
- data/app/views/c80_estate/shared/_table_properties_coef_busy.html.erb +25 -0
- data/app/views/c80_estate/shared/_table_properties_coef_busy_sq.html.erb +25 -0
- data/config/routes.rb +4 -0
- data/db/migrate/20160630012728_create_c80_estate_plogos.rb +9 -0
- data/lib/c80_estate/version.rb +1 -1
- metadata +20 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 874477f69a0669398c5c3ecffeb2749cb5083cde
|
4
|
+
data.tar.gz: 9b447c9a40b61e65e2750b23de3a75558e23af6f
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
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
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
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
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
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
|
Binary file
|
@@ -12,14 +12,34 @@ var fPstatsIndex = function () {
|
|
12
12
|
|
13
13
|
// компонент "над таблицей"
|
14
14
|
var $div_index_adds;
|
15
|
-
|
16
|
-
|
17
|
-
var $
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
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
|
-
|
39
|
-
|
40
|
-
|
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
|
-
$
|
43
|
-
$
|
44
|
-
$
|
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
|
-
$
|
47
|
-
$
|
48
|
-
$
|
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
|
-
|
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
|
-
$
|
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
|
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
|
-
$
|
87
|
-
$
|
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["
|
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
|
-
|
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
|
-
|
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
|
};
|