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.
- 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
|
};
|