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 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