c80_map_floors 0.1.0.18 → 0.1.0.19
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/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
|