app/models/c80_estate/pstat.rb in c80_estate-0.1.0.13 vs app/models/c80_estate/pstat.rb in c80_estate-0.1.0.14
- old
+ new
@@ -88,11 +88,11 @@
result[:raw_props] = {}
result[:raw_props][:all_areas_count] = free_areas_atnow + busy_areas_atnow
result[:raw_props][:free_areas_count] = free_areas_atnow
result[:raw_props][:busy_areas_atnow] = busy_areas_atnow
result[:graph_dynamic] = _parse_for_js_dynamic_graph_canvasjs(pstats.ordered_by_created_at)
- result[:graph_radial] = _parse_for_js_radial_graph(free_areas_atnow,busy_areas_atnow)
+ result[:graph_radial] = _parse_for_js_radial_graph(free_areas_atnow, busy_areas_atnow)
# Rails.logger.debug "<Pstat.busy_coef> busy_areas_count = #{ busy_areas_count }"
# Rails.logger.debug "<Pstat.busy_coef> all_areas_count = #{ all_areas_count }"
# Rails.logger.debug "<Pstat.busy_coef> result[:busy_coef] = #{ result[:busy_coef] }"
@@ -185,114 +185,119 @@
end
# если в этот промежуток небыло событий - значит промежуток целиком попал в какое-то событие
# найдем его
# заодно поднимем вспомогательный флаг, который обработаем во view
- mark_whole = false
+ # mark_whole = false
if pstats.count == 0
- pstats = [self.where(:property_id => prop_id).where("created_at < ?", used_start_date).last]
- mark_whole = true
+ l = self.where(:property_id => prop_id).where("created_at < ?", used_start_date).last
+ if l.present?
+ pstats = [l]
+ # mark_whole = true
+ end
# sevents.each do |se|
# Rails.logger.debug "\t\t\t #{used_start_date - se.created_at}"
# end
end
# Занятость -----
+ if pstats.count > 0
- # если сортируем по типу, то берём последнюю запись,
- # иначе - берём последнюю запись с общими данными
- if atype_id.nil?
- free_areas_atnow = pstats.where(:atype_id => nil).last.free_areas
- busy_areas_atnow = pstats.where(:atype_id => nil).last.busy_areas
- graph_data = _parse_for_js_dynamic_graph_canvasjs(pstats.where(:atype_id => nil).ordered_by_created_at)
- else
- free_areas_atnow = pstats.last.free_areas
- busy_areas_atnow = pstats.last.busy_areas
- graph_data = _parse_for_js_dynamic_graph_canvasjs(pstats.ordered_by_created_at)
- end
+ # если сортируем по типу, то берём последнюю запись,
+ # иначе - берём последнюю запись с общими данными
+ if atype_id.nil?
+ free_areas_atnow = pstats.where(:atype_id => nil).last.free_areas
+ busy_areas_atnow = pstats.where(:atype_id => nil).last.busy_areas
+ graph_data = _parse_for_js_dynamic_graph_canvasjs(pstats.where(:atype_id => nil).ordered_by_created_at)
+ else
+ free_areas_atnow = pstats.last.free_areas
+ busy_areas_atnow = pstats.last.busy_areas
+ graph_data = _parse_for_js_dynamic_graph_canvasjs(pstats.ordered_by_created_at)
+ end
- # Rails.logger.debug("\t\t atype_id = #{atype_id}")
- # Rails.logger.debug("\t\t free_areas_atnow = #{free_areas_atnow}")
- # Rails.logger.debug("\t\t busy_areas_atnow = #{busy_areas_atnow}")
+ # Rails.logger.debug("\t\t atype_id = #{atype_id}")
+ # Rails.logger.debug("\t\t free_areas_atnow = #{free_areas_atnow}")
+ # Rails.logger.debug("\t\t busy_areas_atnow = #{busy_areas_atnow}")
- # защищаемся от деления на ноль
- if free_areas_atnow + busy_areas_atnow == 0
- bcoef = 0.0
- else
- bcoef = busy_areas_atnow*1.0 / (free_areas_atnow + busy_areas_atnow) * 100.0
- end
+ # защищаемся от деления на ноль
+ if free_areas_atnow + busy_areas_atnow == 0
+ bcoef = 0.0
+ else
+ bcoef = busy_areas_atnow*1.0 / (free_areas_atnow + busy_areas_atnow) * 100.0
+ end
- result[:busy_coef] = sprintf "%.2f%", bcoef
- result[:comment] = "<abbr title='Период рассчёта занятости'>C #{used_start_date_str} по #{used_end_date_str}</abbr>"
- result[:abbr] = 'Занятость объекта в конце указанного периода: число b/N, где b - кол-во свободных, N - всего площадей'
- result[:graph_radial] = _parse_for_js_radial_graph(free_areas_atnow,busy_areas_atnow)
- result[:graph_dynamic] = graph_data
+ result[:busy_coef] = sprintf "%.2f%", bcoef
+ result[:comment] = "<abbr title='Период рассчёта занятости'>C #{used_start_date_str} по #{used_end_date_str}</abbr>"
+ result[:abbr] = 'Занятость объекта в конце указанного периода: число b/N, где b - кол-во свободных, N - всего площадей'
+ result[:graph_radial] = _parse_for_js_radial_graph(free_areas_atnow, busy_areas_atnow)
+ result[:graph_dynamic] = graph_data
- result[:raw_props] = {}
- result[:raw_props][:all_areas_count] = free_areas_atnow + busy_areas_atnow
- result[:raw_props][:free_areas_count] = free_areas_atnow
- result[:raw_props][:busy_areas_atnow] = busy_areas_atnow
+ result[:raw_props] = {}
+ result[:raw_props][:all_areas_count] = free_areas_atnow + busy_areas_atnow
+ result[:raw_props][:free_areas_count] = free_areas_atnow
+ result[:raw_props][:busy_areas_atnow] = busy_areas_atnow
- # Занятость в метрах ------
+ # Занятость в метрах ------
- if atype_id.nil?
- free_areas_atnow_sq = pstats.where(:atype_id => nil).last.free_areas_sq
- busy_areas_atnow_sq = pstats.where(:atype_id => nil).last.busy_areas_sq
- graph_data_sq = _parse_for_js_dynamic_graph3_canvasjs(pstats.where(:atype_id => nil).ordered_by_created_at)
- else
- free_areas_atnow_sq = pstats.last.free_areas_sq
- busy_areas_atnow_sq = pstats.last.busy_areas_sq
- graph_data_sq = _parse_for_js_dynamic_graph3_canvasjs(pstats.ordered_by_created_at)
- end
+ if atype_id.nil?
+ free_areas_atnow_sq = pstats.where(:atype_id => nil).last.free_areas_sq
+ busy_areas_atnow_sq = pstats.where(:atype_id => nil).last.busy_areas_sq
+ graph_data_sq = _parse_for_js_dynamic_graph3_canvasjs(pstats.where(:atype_id => nil).ordered_by_created_at)
+ else
+ free_areas_atnow_sq = pstats.last.free_areas_sq
+ busy_areas_atnow_sq = pstats.last.busy_areas_sq
+ graph_data_sq = _parse_for_js_dynamic_graph3_canvasjs(pstats.ordered_by_created_at)
+ end
- # защищаемся от деления на ноль
- if busy_areas_atnow_sq + free_areas_atnow_sq == 0
- bcoef_sq = 0.0
- else
- bcoef_sq = busy_areas_atnow_sq*1.0/(busy_areas_atnow_sq + free_areas_atnow_sq)*100.0
- end
+ # защищаемся от деления на ноль
+ if busy_areas_atnow_sq + free_areas_atnow_sq == 0
+ bcoef_sq = 0.0
+ else
+ bcoef_sq = busy_areas_atnow_sq*1.0/(busy_areas_atnow_sq + free_areas_atnow_sq)*100.0
+ end
- result[:busy_coef_sq] = sprintf "%.2f%", bcoef_sq
- result[:comment_sq] = "<abbr title='Период рассчёта занятости в МЕТРАХ КВ'>C #{used_start_date_str} по #{used_end_date_str}</abbr>"
- result[:abbr_sq] = 'Занятость объекта в МЕТРАХ в конце указанного периода: число b/N, где b - кол-во свободных МЕТРОВ, N - всего МЕТРОВ КВ'
- result[:graph_dynamic_sq] = graph_data_sq
- result[:graph_radial_sq] = _parse_for_js_radial_graph_sq(free_areas_atnow_sq,busy_areas_atnow_sq)
+ result[:busy_coef_sq] = sprintf "%.2f%", bcoef_sq
+ result[:comment_sq] = "<abbr title='Период рассчёта занятости в МЕТРАХ КВ'>C #{used_start_date_str} по #{used_end_date_str}</abbr>"
+ result[:abbr_sq] = 'Занятость объекта в МЕТРАХ в конце указанного периода: число b/N, где b - кол-во свободных МЕТРОВ, N - всего МЕТРОВ КВ'
+ result[:graph_dynamic_sq] = graph_data_sq
+ result[:graph_radial_sq] = _parse_for_js_radial_graph_sq(free_areas_atnow_sq, busy_areas_atnow_sq)
- result[:props_sq] = [
- {tag: 'all_areas_count_sq', val: "Кв.м. всего: #{busy_areas_atnow_sq + free_areas_atnow_sq}"},
- {tag: 'free_areas_count_sq', val: "Свободных: #{free_areas_atnow_sq}"},
- {tag: 'busy_areas_count_sq', val: "Занятых: #{busy_areas_atnow_sq}"}
- ]
+ result[:props_sq] = [
+ {tag: 'all_areas_count_sq', val: "Кв.м. всего: #{busy_areas_atnow_sq + free_areas_atnow_sq}"},
+ {tag: 'free_areas_count_sq', val: "Свободных: #{free_areas_atnow_sq}"},
+ {tag: 'busy_areas_count_sq', val: "Занятых: #{busy_areas_atnow_sq}"}
+ ]
- result[:raw_props_sq] = {}
- result[:raw_props_sq][:all_areas_count_sq] = free_areas_atnow_sq + busy_areas_atnow_sq
- result[:raw_props_sq][:free_areas_count_sq] = free_areas_atnow_sq
- result[:raw_props_sq][:busy_areas_atnow_sq] = busy_areas_atnow_sq
+ result[:raw_props_sq] = {}
+ result[:raw_props_sq][:all_areas_count_sq] = free_areas_atnow_sq + busy_areas_atnow_sq
+ result[:raw_props_sq][:free_areas_count_sq] = free_areas_atnow_sq
+ result[:raw_props_sq][:busy_areas_atnow_sq] = busy_areas_atnow_sq
- # common
+ # common
- result[:title] = "Статистика - Объект - #{property.title}"
- # result[:graph] = _parse_for_js_radial_graph(free_areas_atnow,busy_areas_atnow)
+ result[:title] = "Статистика - Объект - #{property.title}"
+ # result[:graph] = _parse_for_js_radial_graph(free_areas_atnow,busy_areas_atnow)
- # if atype_id.present?
- # result[:title] += " (#{Atype.find(atype_id).title})"
- # end
+ # if atype_id.present?
+ # result[:title] += " (#{Atype.find(atype_id).title})"
+ # end
- dc_str = property.areas.first.created_at.in_time_zone('Moscow').strftime('%Y/%m/%d')
- dc_abbr = 'За дату создания объекта недвижимости при рассчетах берётся дата создания первой площади объекта'
+ dc_str = property.areas.first.created_at.in_time_zone('Moscow').strftime('%Y/%m/%d')
+ dc_abbr = 'За дату создания объекта недвижимости при рассчетах берётся дата создания первой площади объекта'
- result[:props] = [
- {tag: 'title', val: "#{property.title}"},
- {tag: 'born_date', val: "<abbr title='#{dc_abbr}'>Дата создания: #{dc_str}"},
- {tag: 'all_areas_count', val: "<abbr title='В конце указанного периода'>Площадей всего</abbr>: #{ free_areas_atnow + busy_areas_atnow }"},
- {tag: 'free_areas_count', val: "<abbr title='В конце указанного периода'>Свободных площадей</abbr>: #{ free_areas_atnow }"},
- {tag: 'busy_areas_count', val: "<abbr title='В конце указанного периода'>Занятых площадей</abbr>: #{ busy_areas_atnow }"}
- ]
+ result[:props] = [
+ {tag: 'title', val: "#{property.title}"},
+ {tag: 'born_date', val: "<abbr title='#{dc_abbr}'>Дата создания: #{dc_str}"},
+ {tag: 'all_areas_count', val: "<abbr title='В конце указанного периода'>Площадей всего</abbr>: #{ free_areas_atnow + busy_areas_atnow }"},
+ {tag: 'free_areas_count', val: "<abbr title='В конце указанного периода'>Свободных площадей</abbr>: #{ free_areas_atnow }"},
+ {tag: 'busy_areas_count', val: "<abbr title='В конце указанного периода'>Занятых площадей</abbr>: #{ busy_areas_atnow }"}
+ ]
- if atype_id.present?
- result[:props] << {tag: 'atype_filter', val: "Фильтр по типу площади: #{ Atype.find(atype_id).title }"}
+ if atype_id.present?
+ result[:props] << {tag: 'atype_filter', val: "Фильтр по типу площади: #{ Atype.find(atype_id).title }"}
+ end
end
else
result[:props] = [
{tag: 'title', val: "#{property.title} не имеет площадей"}
@@ -375,11 +380,11 @@
result[:busy_coef] = sprintf "%.2f%", bcoef
result[:comment] = "<abbr title='Период рассчёта занятости'>C #{used_start_date_str} по #{used_end_date_str}</abbr>"
result[:abbr] = 'Занятость объекта в конце указанного периода: число b/N, где b - кол-во свободных, N - всего площадей'
result[:graph_dynamic] = _parse_for_js_dynamic_graph_canvasjs(pstats.ordered_by_created_at)
- result[:graph_radial] = _parse_for_js_radial_graph(free_areas_atnow,busy_areas_atnow)
+ result[:graph_radial] = _parse_for_js_radial_graph(free_areas_atnow, busy_areas_atnow)
result[:raw_props] = {}
result[:raw_props][:all_areas_count] = free_areas_atnow + busy_areas_atnow
result[:raw_props][:free_areas_count] = free_areas_atnow
result[:raw_props][:busy_areas_atnow] = busy_areas_atnow
@@ -399,11 +404,11 @@
result[:busy_coef_sq] = sprintf "%.2f%", bcoef_sq
result[:comment_sq] = "<abbr title='Период рассчёта занятости в МЕТРАХ КВ'>C #{used_start_date_str} по #{used_end_date_str}</abbr>"
result[:abbr_sq] = 'Занятость объекта в МЕТРАХ в конце указанного периода: число b/N, где b - кол-во свободных МЕТРОВ, N - всего МЕТРОВ КВ'
result[:graph_dynamic_sq] = graph_data_sq
- result[:graph_radial_sq] = _parse_for_js_radial_graph_sq(free_areas_atnow_sq,busy_areas_atnow_sq)
+ result[:graph_radial_sq] = _parse_for_js_radial_graph_sq(free_areas_atnow_sq, busy_areas_atnow_sq)
result[:props_sq] = [
{tag: 'all_areas_count_sq', val: "Кв.м. всего: #{busy_areas_atnow_sq + free_areas_atnow_sq}"},
{tag: 'free_areas_count_sq', val: "Свободных: #{free_areas_atnow_sq}"},
{tag: 'busy_areas_count_sq', val: "Занятых: #{busy_areas_atnow_sq}"}
@@ -685,11 +690,11 @@
sum_free_areas += ppstats.free_areas
sum_busy_areas += ppstats.busy_areas
end
end
{
- sum_free_areas:sum_free_areas,
- sum_busy_areas:sum_busy_areas
+ sum_free_areas: sum_free_areas,
+ sum_busy_areas: sum_busy_areas
}
end
end
end
\ No newline at end of file