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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: cff696e63608d8386e3d7baa206968ec7ad384de
4
- data.tar.gz: fe024fdcf05afc19cec74aefb7bf80e979522fbf
3
+ metadata.gz: cd402c21ec64c35a2a3a09ad26d35a8873a63a17
4
+ data.tar.gz: ad3e206c8d0bdb1f4df97c175b0c94f3c86ffd7a
5
5
  SHA512:
6
- metadata.gz: 69575f20ece0dc07f340a126668bc2937d8c612c8c139b97cbf3b5cab2aa97d671554e96d0a865745ebba59894cc649974221d6e873e9cc3c59e1a26bbf896e3
7
- data.tar.gz: f1f8d6eaa87c215abfe33b9b3e52427c01dad964b38351d1380edbbe3f44004fafae3436f1b7e9c95e49ad3bef3b645b4c6cfa52b04b9092cfe2d8951105052c
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 = C80MapFloors::Area.find(params[:apolygon_id])
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 = C80MapFloors::Floor.find(params[:floor_id])
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 find_shops
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 = MapBuilding.offset(rand(MapBuilding.count)).first
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 = map_building.floors.offset(rand(map_building.floors.count)).first
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.fetch_unlinked_floors> Отправляем ответ: result = #{result}"
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 }
@@ -1,3 +1,3 @@
1
1
  module C80MapFloors
2
- VERSION = '0.1.0.18'
2
+ VERSION = '0.1.0.19'
3
3
  end
@@ -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.18
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-22 00:00:00.000000000 Z
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