c80_map_floors 0.1.0.18 → 0.1.0.19
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/app/controllers/c80_map_floors/ajax_controller.rb +97 -6
- data/lib/c80_map_floors/version.rb +1 -1
- data/lib/search_result.rb +74 -0
- metadata +3 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: cd402c21ec64c35a2a3a09ad26d35a8873a63a17
|
4
|
+
data.tar.gz: ad3e206c8d0bdb1f4df97c175b0c94f3c86ffd7a
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 01fa267d667e73588d98210efcc03c493c7d10193972f2221fc89693f3a8033a74472fff57cfa619ad94253c12be9f108cbea4e0f189ccda55c995affcfcafba
|
7
|
+
data.tar.gz: 4bc2711144221a20f268a95cb5d74db32c6eb99494885db2792fc0ae36a838bed26ea9580cba2ad2eb65ee0ecf42b68b0a196c047b6f187f3a2e58f2220147fe
|
@@ -1,3 +1,5 @@
|
|
1
|
+
require 'search_result'
|
2
|
+
|
1
3
|
module C80MapFloors
|
2
4
|
# noinspection RubyResolve
|
3
5
|
class AjaxController < ApplicationController
|
@@ -48,7 +50,7 @@ module C80MapFloors
|
|
48
50
|
|
49
51
|
# фиксируем участников
|
50
52
|
rent_area = ::Area.find(params[:area_id])
|
51
|
-
area
|
53
|
+
area = C80MapFloors::Area.find(params[:apolygon_id])
|
52
54
|
|
53
55
|
# rent_area has_one area(полигон)
|
54
56
|
rent_area.area.delete_all if rent_area.area.present?
|
@@ -96,7 +98,7 @@ module C80MapFloors
|
|
96
98
|
|
97
99
|
# фиксируем участников
|
98
100
|
sfloor = Sfloor.find(params[:sfloor_id])
|
99
|
-
floor
|
101
|
+
floor = C80MapFloors::Floor.find(params[:floor_id])
|
100
102
|
|
101
103
|
# sfloor has_one floor
|
102
104
|
sfloor.floor.delete_all if sfloor.floor.present?
|
@@ -113,9 +115,98 @@ module C80MapFloors
|
|
113
115
|
|
114
116
|
end
|
115
117
|
|
118
|
+
def find_shops
|
119
|
+
Rails.logger.debug "[TRACE] <AjaxController.find_shops> params = #{params}"
|
120
|
+
# [TRACE] <AjaxController.find_shops> params = {"stext"=>"Ванны акриловые", "counter"=>"1", }
|
121
|
+
|
122
|
+
# result = {
|
123
|
+
# buildings: [],
|
124
|
+
# buildings_shops_count: [],
|
125
|
+
# floors: [], #
|
126
|
+
# floors_shops_count: [],
|
127
|
+
# areas: [] # сюда собираем айдишники полигонов площадей
|
128
|
+
# }
|
129
|
+
|
130
|
+
result = SearchResult.new
|
131
|
+
|
132
|
+
# 1. Находим категорию, title которой равен строке.
|
133
|
+
cats = Cat.where(:name => params[:stext])
|
134
|
+
if cats.count > 0
|
135
|
+
# работаем только с первой попавшейся категорией
|
136
|
+
cat = cats[0]
|
137
|
+
|
138
|
+
# если у категории имеются связанные магазины
|
139
|
+
if cat.shops.count > 0
|
140
|
+
|
141
|
+
# переберём их
|
142
|
+
cat.shops.each do |shop|
|
143
|
+
|
144
|
+
# добираемся до Rent::Area каждого магазина
|
145
|
+
if shop.areas.count > 0
|
146
|
+
|
147
|
+
shop.areas.each do |rent_area|
|
148
|
+
|
149
|
+
# если у Rent::Area имеется связанный полигон
|
150
|
+
if rent_area.area.present? # has_one
|
151
|
+
|
152
|
+
map_area = rent_area.area
|
153
|
+
|
154
|
+
# NOTE:: теперь, зная C80MapFloors::Area.id, находим id полигона этажа и id полигона здания
|
155
|
+
|
156
|
+
Rails.logger.debug "[TRACE] <AjaxController.find_shops> add_area: #{map_area.id}"
|
157
|
+
# result[:areas] << rent_area.area.id
|
158
|
+
result.add_area(map_area.id)
|
159
|
+
|
160
|
+
# посмотрим, имеется ли у полигона площади родители
|
161
|
+
if map_area.floor.present?
|
162
|
+
|
163
|
+
map_floor = map_area.floor
|
164
|
+
Rails.logger.debug "[TRACE] <AjaxController.find_shops> add_floor: #{map_floor.id}"
|
165
|
+
result.add_floor(map_floor.id)
|
166
|
+
|
167
|
+
if map_floor.map_building.present?
|
168
|
+
Rails.logger.debug "[TRACE] <AjaxController.find_shops> add_building: #{map_floor.map_building}"
|
169
|
+
result.add_building(map_floor.map_building.id)
|
170
|
+
else
|
171
|
+
Rails.logger.debug "[TRACE] <AjaxController.find_shops> У Rent::Area нет родителей: #{rent_area.name}"
|
172
|
+
end
|
173
|
+
|
174
|
+
else
|
175
|
+
Rails.logger.debug "[TRACE] <AjaxController.find_shops> У полигона площади нет родителей: #{rent_area.name}"
|
176
|
+
end
|
177
|
+
|
178
|
+
|
179
|
+
else
|
180
|
+
Rails.logger.debug "[TRACE] <AjaxController.find_shops> У Rent::Area нет полигона: #{rent_area.name}"
|
181
|
+
end
|
182
|
+
|
183
|
+
end
|
184
|
+
|
185
|
+
else
|
186
|
+
Rails.logger.debug "[TRACE] <AjaxController.find_shops> У магазина нет Rent::Area: #{shop.name}"
|
187
|
+
end
|
188
|
+
|
189
|
+
end
|
190
|
+
|
191
|
+
else
|
192
|
+
Rails.logger.debug "[TRACE] <AjaxController.find_shops> У этой категории нет магазинов: #{params[:stext]}"
|
193
|
+
end
|
194
|
+
|
195
|
+
else
|
196
|
+
Rails.logger.debug "[TRACE] <AjaxController.find_shops> Нет категории с таким именем = #{params[:stext]}"
|
197
|
+
end
|
198
|
+
|
199
|
+
Rails.logger.debug "[TRACE] <AjaxController.find_shops> Отправляем ответ: result = #{result.data}"
|
200
|
+
|
201
|
+
respond_to do |format|
|
202
|
+
format.json { render json: result.data }
|
203
|
+
end
|
204
|
+
|
205
|
+
end
|
206
|
+
|
116
207
|
# от js пришла строка с названием категории. Необходимо найти магазины, соответствующие этой категории.
|
117
208
|
# noinspection RailsChecklist01
|
118
|
-
def
|
209
|
+
def _find_shops
|
119
210
|
Rails.logger.debug "[TRACE] <AjaxController.find_shops> params = #{params}"
|
120
211
|
# [TRACE] <AjaxController.find_shops> params = {"stext"=>"Хозтовары", "counter"=>"1", "controller"=>"c80_map_floors/ajax", "action"=>"find_shops"}
|
121
212
|
|
@@ -163,14 +254,14 @@ module C80MapFloors
|
|
163
254
|
# находим 3 рандомных полигона зданий (генерим случайное число для каждого здания)
|
164
255
|
3.times do
|
165
256
|
|
166
|
-
map_building
|
257
|
+
map_building = MapBuilding.offset(rand(MapBuilding.count)).first
|
167
258
|
map_building_count = rand(20)
|
168
259
|
|
169
260
|
result[:buildings] << map_building.id
|
170
261
|
result[:buildings_shops_count] << map_building_count
|
171
262
|
|
172
263
|
# в каждом полигоне здания находим один рандомный полигон этажа (генерим случайное число для каждого этажа)
|
173
|
-
map_floor
|
264
|
+
map_floor = map_building.floors.offset(rand(map_building.floors.count)).first
|
174
265
|
map_floor_count = rand(20)
|
175
266
|
|
176
267
|
result[:floors] << map_floor.id
|
@@ -186,7 +277,7 @@ module C80MapFloors
|
|
186
277
|
|
187
278
|
end
|
188
279
|
|
189
|
-
Rails.logger.debug "[TRACE] <AjaxController.
|
280
|
+
Rails.logger.debug "[TRACE] <AjaxController.find_shops> Отправляем ответ: result = #{result}"
|
190
281
|
|
191
282
|
respond_to do |format|
|
192
283
|
format.json { render json: result }
|
@@ -0,0 +1,74 @@
|
|
1
|
+
## 20170323: stroy101map
|
2
|
+
# Предназначен для сбора данных о результате поиска
|
3
|
+
# (see /home/scout/git/research/kata_ruby/spec/003_my_arrays_spec.rb)
|
4
|
+
|
5
|
+
module C80MapFloors
|
6
|
+
|
7
|
+
class SearchResult
|
8
|
+
|
9
|
+
attr_reader :data
|
10
|
+
|
11
|
+
def initialize
|
12
|
+
@data = {
|
13
|
+
buildings: [], # содержит айдишники полигонов зданий, в которых найдены магазины
|
14
|
+
buildings_shops_count: [], # содержит кол-во найденных в *соответствующем* здании магазинов
|
15
|
+
floors: [], # содержит айдишники картинок этажей, в которых найдены магазины
|
16
|
+
floors_shops_count: [], # содержит кол-во найденных магазинов на *соответствующей* картинке этажа
|
17
|
+
areas: [] # сюда собираем айдишники полигонов площадей
|
18
|
+
}
|
19
|
+
end
|
20
|
+
|
21
|
+
def add_floor(floor_id)
|
22
|
+
indx = @data[:floors].index(floor_id.to_i)
|
23
|
+
if indx.nil?
|
24
|
+
@data[:floors] << floor_id.to_i
|
25
|
+
@data[:floors_shops_count] << 1
|
26
|
+
else
|
27
|
+
@data[:floors_shops_count][indx] += 1
|
28
|
+
end
|
29
|
+
end
|
30
|
+
|
31
|
+
def add_building(building_id)
|
32
|
+
indx = @data[:buildings].index(building_id.to_i)
|
33
|
+
if indx.nil?
|
34
|
+
@data[:buildings] << building_id.to_i
|
35
|
+
@data[:buildings_shops_count] << 1
|
36
|
+
else
|
37
|
+
@data[:buildings_shops_count][indx] += 1
|
38
|
+
end
|
39
|
+
end
|
40
|
+
|
41
|
+
def add_area(area_id)
|
42
|
+
indx = @data[:areas].index(area_id.to_i)
|
43
|
+
if indx.nil?
|
44
|
+
@data[:areas] << area_id.to_i
|
45
|
+
end
|
46
|
+
end
|
47
|
+
|
48
|
+
|
49
|
+
|
50
|
+
# for testing (see /home/scout/git/research/kata_ruby/spec/003_my_arrays_spec.rb)
|
51
|
+
|
52
|
+
def floors
|
53
|
+
@data[:floors]
|
54
|
+
end
|
55
|
+
|
56
|
+
def floors_shops_count
|
57
|
+
@data[:floors_shops_count]
|
58
|
+
end
|
59
|
+
|
60
|
+
def buildings
|
61
|
+
@data[:buildings]
|
62
|
+
end
|
63
|
+
|
64
|
+
def areas
|
65
|
+
@data[:areas]
|
66
|
+
end
|
67
|
+
|
68
|
+
def buildings_shops_count
|
69
|
+
@data[:buildings_shops_count]
|
70
|
+
end
|
71
|
+
|
72
|
+
end
|
73
|
+
|
74
|
+
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: c80_map_floors
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.0.
|
4
|
+
version: 0.1.0.19
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- C80609A
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2017-03-
|
11
|
+
date: 2017-03-23 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -219,6 +219,7 @@ files:
|
|
219
219
|
- lib/c80_map_floors/engine.rb
|
220
220
|
- lib/c80_map_floors/version.rb
|
221
221
|
- lib/integer.rb
|
222
|
+
- lib/search_result.rb
|
222
223
|
homepage: http://www.vorsa-park.ru
|
223
224
|
licenses:
|
224
225
|
- MIT
|