c80_map_floors 0.1.0.21 → 0.1.0.22

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: 2a17a5fbb3602490d393889c404ff4f313310453
4
- data.tar.gz: 7d1107a8aca32d330db425f07eff5f758f9f67d7
3
+ metadata.gz: 7c19b3fe1da442d13d1f54bfb641b14b63b8573a
4
+ data.tar.gz: 3c479c6827f66281d2590d47e77553623dbe04ea
5
5
  SHA512:
6
- metadata.gz: b65b359a6467ded738329ee15579b5603241e24aa3d71216636df1810c498ac427f95a3936171ad4e8904f1c86a78f8b94fda4efdb8b1a481a9f8af4d83ff96c
7
- data.tar.gz: c205ef48c9d29ee610783f9915c86932456ffdd0793439fc01a21aeb8983e3933bf547dfe9e7db0719df12838131f14d9396039d9d2f6a9681114455ac2558e9
6
+ metadata.gz: 4529e548eb9038680402dddf8b8d9a796c70879929acda5224a3dd78a150a00047678cce8a5bd26984b45dd184a133fe3500d342322623a9198e8783cc3d6d56
7
+ data.tar.gz: b5d3df1cec7ff3fd3853a524b2970b44ced96bcd528369f1fa06afe2a1b3188f81b3151a159683fa5de8b021db317049af8d05dccf1f6b01ee90b39e946bbedf
@@ -8,6 +8,7 @@ function BackToMapButton() {
8
8
  var _cnt = null;
9
9
  var _btn = null;
10
10
 
11
+ // вспомогательно: относительно окна выравниваем кнопку
11
12
  var _$building_info = null;
12
13
 
13
14
  var _onClick = function () {
@@ -48,6 +49,7 @@ function BackToMapButton() {
48
49
  _btn.on('click', _onClick);
49
50
  _cnt.append(_btn);
50
51
 
52
+ // фиксируем вспомогательный элемент
51
53
  _$building_info = $('.building_info');
52
54
 
53
55
  };
@@ -130,7 +130,7 @@ function Area() {
130
130
 
131
131
  // optimisation
132
132
  var timeoutEnter = function () {
133
- _map.showAreaInfo(_this._options["data"], _this._options["parent_floor_json"]);
133
+ _map.showAreaInfo(_this._options, _this._options["parent_floor_json"]);
134
134
  _map.setMode('view_area');
135
135
  };
136
136
 
@@ -44,7 +44,7 @@ var InitMap = function (params) {
44
44
  var Map = function () {
45
45
  var self = this;
46
46
 
47
- self.debug = true;
47
+ self.debug = false;
48
48
  self.o = {
49
49
  source: 'locations.json', // data
50
50
  height: 400, // viewbox height, pixels
@@ -130,6 +130,13 @@ var InitMap = function (params) {
130
130
  self.o.deeplinking = false;
131
131
  }*/
132
132
 
133
+ // инициализиуем класс, занимающийся отображением данных о здании\этаже\площади
134
+ self.building_info_klass = new BuildingInfo({
135
+ onFloorTabChange: function (floor_id) {
136
+ self.current_building.enterFloor(floor_id); //#-> только с помощью клика по табам можно войти на Этаж
137
+ }
138
+ });
139
+
133
140
  if (typeof self.o.source === 'string') {
134
141
  // Loading .json file with AJAX
135
142
  $.getJSON(self.o.source, function (data) { // Success
@@ -290,13 +297,6 @@ var InitMap = function (params) {
290
297
  // проверим, всё ли уместилось
291
298
  self.ivalidateViewArea();
292
299
 
293
- // инициализиуем класс, занимающийся отображением данных о здании\этаже\площади
294
- self.building_info_klass = new BuildingInfo({
295
- onFloorTabChange: function (floor_id) {
296
- self.current_building.enterFloor(floor_id); //#-> только с помощью клика по табам можно войти на Этаж
297
- }
298
- });
299
-
300
300
  // инициализируем класс, обслуживающий поиск
301
301
  self.search_gui_klass = new SearchGUI(self);
302
302
 
@@ -329,8 +329,8 @@ var InitMap = function (params) {
329
329
  // т.е. меняем масштаб
330
330
  if (self.mark_virgin) {
331
331
  // рассчитаем масштаб, при котором можно вписать главный прямоугольник карты в прямоугольник рабочей области
332
- var scaleX = self.calcScale(self.o.mapwidth*0.15, self.o.mapwidth *.85, self.X10, self.X20);
333
- var scaleY = self.calcScale(self.o.mapheight*0.15, self.o.mapheight *.85, self.Y10, self.Y20);
332
+ var scaleX = self.calcScale(self.o.mapwidth*0.05, self.o.mapwidth *.95, self.X10, self.X20);
333
+ var scaleY = self.calcScale(self.o.mapheight*0.05, self.o.mapheight *.95, self.Y10, self.Y20);
334
334
  var scale = (scaleX < scaleY) ? scaleX : scaleY;
335
335
  self.scale = scale; /* NOTE:: вызывается во время window resize */
336
336
  }
@@ -728,7 +728,6 @@ var InitMap = function (params) {
728
728
 
729
729
  var _$m = $("#map_wrapper");
730
730
  var _$b = $('.container');//$('footer .container');
731
- var $building_info = $('.building_info'); // "layouts/shared/map_row/building_info"
732
731
  var $area_order_button = $('.area_order_button');
733
732
  var $container_buttons = $('#container_buttons');
734
733
  var _is_debug_drawn = false;
@@ -756,7 +755,7 @@ var InitMap = function (params) {
756
755
  self.Y20 = _$m.height();
757
756
 
758
757
  // позиционируем элементы
759
- $building_info.css("left", self.X2 + "px");
758
+ self.building_info_klass.set_left(self.X2);
760
759
  $area_order_button.css("left", self.X2 + "px");
761
760
  if (self.container) $container_buttons.css("margin-top", (self.container.height() -10) + "px");
762
761
 
@@ -1373,102 +1372,9 @@ var InitMap = function (params) {
1373
1372
  //if (self.minimap) self.minimap.update(x, y);
1374
1373
  };
1375
1374
 
1376
- // показать инфо о здании
1377
- self.showBuildingInfo_old = function (rent_building_hash) {
1378
- //console.log("<main.showBuildingInfo> Показать информацию о Rent-здании с id = " + rent_building_hash.id);
1379
-
1380
- //"rent_building_hash": {
1381
- // "id": 2,
1382
- // "title": "Здание 2",
1383
- // "props": {
1384
- // "square": "1234 кв.м.",
1385
- // "square_free": "124 кв. м",
1386
- // "floor_height": "124 кв. м",
1387
- // "column_step": "2 м",
1388
- // "gate_type": "распашные",
1389
- // "communications": "Интернет, электричество, водоснабжение",
1390
- // "price": "от 155 руб/кв.м в месяц"
1391
- // }
1392
-
1393
- if (rent_building_hash.id == undefined) {
1394
- $building_info.css('display','none');
1395
- } else {
1396
- $building_info.css('display','block');
1397
- $building_info.find("h2").text(rent_building_hash["title"]);
1398
-
1399
- var v, $ili, p;
1400
- for (p in rent_building_hash["props"]) {
1401
-
1402
- v = rent_building_hash["props"][p];
1403
- $ili = $building_info.find("#" + p);
1404
- $ili.find('span').text(v);
1405
- //console.log("."+v+".");
1406
-
1407
- // Не показывать пользователю карты незаполненные поля
1408
- var li_css_display = 'block';
1409
- if (v == '' || v == '-1' || v === 'null' || v == null) {
1410
- li_css_display = 'none';
1411
- }
1412
- $ili.css('display',li_css_display);
1413
-
1414
-
1415
- }
1416
-
1417
- $building_info.find("#square_free").css('height', 'auto');
1418
- }
1419
- };
1420
-
1421
- // TODO:: показать инфо о просматриваемой площади (это код, который остался без изменений от c80_map)
1375
+ // показать инфо о просматриваемой площади
1422
1376
  self.showAreaInfo = function (area_json, parent_floor_json) {
1423
- //console.log(area_hash);
1424
-
1425
- // так было в c80_map
1426
- //"area_hash": {
1427
- // "id": 2,
1428
- // "title": "Площадь 2.12",
1429
- // "is_free": false,
1430
- // "props": {
1431
- // "square": "100 кв.м.",
1432
- // "floor_height": "6 кв. м",
1433
- // "column_step": "2 м",
1434
- // "gate_type": "распашные",
1435
- // "communications": "Интернет, электричество, водоснабжение",
1436
- // "price": "от 155 руб/кв.м в месяц"
1437
- // }
1438
-
1439
- // так стало в c80_map_floors
1440
- //"rent_building_hash": {
1441
- // "id": 2,
1442
- // "title": "Здание 2",
1443
- // "props": {
1444
- // "square": "1234 кв.м.",
1445
- // "square_free": "124 кв. м",
1446
- // "floor_height": "6 кв. м",
1447
- // "column_step": "2 м",
1448
- // "gate_type": "распашные",
1449
- // "communications": "Интернет, электричество, водоснабжение",
1450
- // "price": "от 155 руб/кв.м в месяц"
1451
- // }
1452
-
1453
- if (area_json == null || area_json == undefined) {
1454
- alert('[ERROR] У полигона нет привязки к Площади. Привяжите полигон площади.');
1455
- } else {
1456
- $building_info.find("h2").html("</span>" + area_json["title"] + "<span style='color:#D0B2B2;'> / " + parent_floor_json["title"]);
1457
-
1458
- var v;
1459
- for (var p in area_json["props"]) {
1460
- v = area_json["props"][p];
1461
- $building_info.find("#" + p).find('span').text(v);
1462
- }
1463
-
1464
- $building_info.find("#square_free").css('height', '0');
1465
-
1466
- // заполняем данными ссылку 'Оставить заявку'
1467
- var $a_make_order = $building_info.find('.c80_order_invoking_btn');
1468
- $a_make_order.data('comment-text', 'Здравствуйте, оставляю заявку на площадь: ' + area_json["title"]);
1469
- $a_make_order.data('subj-id', area_json["id"]);
1470
- }
1471
-
1377
+ self.building_info_klass.show_area_info(area_json, parent_floor_json);
1472
1378
  };
1473
1379
 
1474
1380
  // перевод экранных координат в логические
@@ -15,7 +15,6 @@ function StateController() {
15
15
  _this.map_removing = $('#map_removing');
16
16
  _this.main_map = $('.main_map'); /*qwwqq*/
17
17
  _this.svg_overlay = $('#svg_overlay');
18
- _this.building_info = $('.building_info');
19
18
  _this.area_order_button = $('.area_order_button');
20
19
  _this.edit_button = $('.mapplic-edit-button');
21
20
  _this.masked = $('#masked');
@@ -67,7 +66,6 @@ function StateController() {
67
66
  if (_this.map_removing.length == 0) _this.map_removing = $('#map_removing');
68
67
  if (_this.main_map.length == 0) _this.main_map = $('.main_map'); /*qwwqq*/
69
68
  if (_this.svg_overlay.length == 0) _this.svg_overlay = $('#svg_overlay');
70
- if (_this.building_info.length == 0) _this.building_info = $('.building_info');
71
69
  if (_this.area_order_button.length == 0) _this.area_order_button = $('.area_order_button');
72
70
  if (_this.masked.length == 0) _this.masked = $("#masked");
73
71
  //</editor-fold>
@@ -158,12 +156,8 @@ function StateController() {
158
156
  // скроем слой, в котором рисуем анимацию по маске, который нужен только когда внутри здания\площади
159
157
  _this.masked.addClass('hiddn');
160
158
 
161
- // скроем табличку с данными о здании
162
- if (_this.building_info.data("init") == undefined) {
163
- _this.building_info.data('init', _this.building_info.css("top"));
164
- }
165
- _this.building_info.css("top", -400);
166
- _this.building_info.css("display", "block");
159
+ // спрячем инфу о здании
160
+ _map.building_info_klass.hide();
167
161
 
168
162
  // скроем кнопку "забронировать площадь"
169
163
  _this.area_order_button.css('display', 'none');
@@ -242,7 +236,9 @@ function StateController() {
242
236
  //_this.main_map.css('opacity','0.7');
243
237
  _this.svg_overlay.css('display', 'block');
244
238
 
245
- _this.building_info.css("top", _this.building_info.data("init"));
239
+ // покажем инфо-панель
240
+ _map.building_info_klass.show();
241
+
246
242
  _this.masked.addClass('hiddn');
247
243
 
248
244
  _this.area_order_button.css('display', 'none');
@@ -293,7 +289,7 @@ function StateController() {
293
289
  OpacityButtonsUtils.show(_this.edit_button);
294
290
 
295
291
  // спрячем инфу о здании
296
- _this.building_info.css("top", -300);
292
+ _map.building_info_klass.hide();
297
293
 
298
294
  // спрячем статус строку "вы создаёте полигон"
299
295
  _this.map_creating.css('display', 'none');
@@ -322,7 +318,7 @@ function StateController() {
322
318
  _this.masked.removeClass('hiddn');
323
319
 
324
320
  // выдвигаем инфо-панель
325
- _this.building_info.css("top", _this.building_info.data("init"));
321
+ _map.building_info_klass.show();
326
322
 
327
323
  // TODO:: реализовать показ кнопки 'оставить заявку'
328
324
  //<editor-fold desc="// спозиционируем и покажем кнопку 'оставить заявку'">
@@ -369,7 +365,7 @@ function StateController() {
369
365
  _map.edit_button_klass.setState('edit_area', true); // [a1x7]
370
366
 
371
367
  // спрячем инфу о здании
372
- _this.building_info.css("top", -500);
368
+ _map.building_info_klass.hide();
373
369
 
374
370
  // скроем форму поиска
375
371
  _map.search_gui_klass.position_hide();
@@ -391,7 +387,7 @@ function StateController() {
391
387
  _this.svg_overlay.css('display', 'block');
392
388
 
393
389
  // выдвигаем инфо-панель
394
- _this.building_info.css("top", _this.building_info.data("init"));
390
+ _map.building_info_klass.show();
395
391
 
396
392
  // покажем кнопку "обратно на карту"
397
393
  _map.back_to_map_button_klass.show();
@@ -459,7 +455,7 @@ function StateController() {
459
455
  OpacityButtonsUtils.show(_this.edit_button);
460
456
 
461
457
  // спрячем инфу о здании
462
- _this.building_info.css("top", -500);
458
+ _map.building_info_klass.hide();
463
459
 
464
460
  // спрячем статус строки "вы создаёте полигон" и ...
465
461
  _this.map_creating.css('display', 'none');
@@ -12,6 +12,8 @@ function BuildingInfo(options) {
12
12
 
13
13
  var _this = this;
14
14
 
15
+ var _el_building_info = null;
16
+
15
17
  // текуще отображаемое здание (Это данные от C80MapFloors::MapBuilding, метод my_as_json5)
16
18
  var _cur_map_building_json;
17
19
 
@@ -134,6 +136,102 @@ function BuildingInfo(options) {
134
136
  $('div.tab_content').css('max-height',max_height+'px');
135
137
  };
136
138
 
139
+ this.show = function() {
140
+ _el_building_info.css("top", _el_building_info.data("init"));
141
+ };
142
+
143
+ this.hide = function() {
144
+
145
+ if (_el_building_info.data("init") == undefined) {
146
+ _el_building_info.data('init', _el_building_info.css("top"));
147
+ }
148
+
149
+ var h = _el_building_info.height() + 100;
150
+ _el_building_info.css("top", -h+'px');
151
+ _el_building_info.css("display", "block");
152
+ };
153
+
154
+ /**
155
+ * Показать инфо о просматриваемой площади (это код, который остался без изменений от c80_map)
156
+ *
157
+ * @param area_json
158
+ * @param parent_floor_json
159
+ */
160
+ this.show_area_info = function (area_json, parent_floor_json) {
161
+
162
+ console.log('<BuildingInfo.show_area_info>');
163
+
164
+ //console.log(area_hash);
165
+
166
+ // так было в c80_map
167
+ //"area_hash": {
168
+ // "id": 2,
169
+ // "title": "Площадь 2.12",
170
+ // "is_free": false,
171
+ // "props": {
172
+ // "square": "100 кв.м.",
173
+ // "floor_height": "6 кв. м",
174
+ // "column_step": "2 м",
175
+ // "gate_type": "распашные",
176
+ // "communications": "Интернет, электричество, водоснабжение",
177
+ // "price": "от 155 руб/кв.м в месяц"
178
+ // }
179
+
180
+ // так стало в c80_map_floors
181
+ //"rent_building_hash": {
182
+ // "id": 2,
183
+ // "title": "Здание 2",
184
+ // "props": {
185
+ // "square": "1234 кв.м.",
186
+ // "square_free": "124 кв. м",
187
+ // "floor_height": "6 кв. м",
188
+ // "column_step": "2 м",
189
+ // "gate_type": "распашные",
190
+ // "communications": "Интернет, электричество, водоснабжение",
191
+ // "price": "от 155 руб/кв.м в месяц"
192
+ // }
193
+
194
+ // 20170328: если площадь занята, то:
195
+ // {
196
+ // id: 458,
197
+ // desc: 'От 400 руб за м.',
198
+ // is_free: false,
199
+ // title: 'ИЕ-12',
200
+ // square: 120,
201
+ // price_string: null,
202
+ // shop: {
203
+ // desc: ,
204
+ // id: 555,
205
+ // site:
206
+ // tel:
207
+ // url:
208
+ // }
209
+ // }
210
+
211
+ if (area_json == null || area_json == undefined) {
212
+ alert('[ERROR] У полигона нет привязки к Площади. Привяжите полигон площади.');
213
+ } else {
214
+
215
+ // сначала скроем всё
216
+ $('.li_area').css('display','none');
217
+
218
+ // покажем только релевантный
219
+ $('.li_area#li_area_'+area_json["id"]).css('display','block');
220
+
221
+ // TODO:: этот код должен переехать туда, где будем выводить инфо о площади без арендатора
222
+ /*// заполняем данными ссылку 'Оставить заявку'
223
+ var $a_make_order = _el_building_info.find('.c80_order_invoking_btn');
224
+ $a_make_order.data('comment-text', 'Здравствуйте, оставляю заявку на площадь: ' + area_json["title"]);
225
+ $a_make_order.data('subj-id', area_json["id"]);*/
226
+
227
+ }
228
+
229
+ };
230
+
231
+ this.set_left = function(left) {
232
+ _el_building_info.css("left", left + "px");
233
+ };
234
+
137
235
  //------------------------------------------------------------------------------------------------------------------------
138
236
 
139
237
  /**
@@ -153,6 +251,10 @@ function BuildingInfo(options) {
153
251
  //---[ dsd ]---------------------------------------------------------------------------------------------------------------------
154
252
 
155
253
  this._fInit = function (options) {
254
+
255
+ // фиксируем html-узел
256
+ _el_building_info = $('.building_info');
257
+
156
258
  // TODO:: _options extend options
157
259
  _options = $.extend(_options, options);
158
260
 
@@ -165,7 +267,7 @@ function BuildingInfo(options) {
165
267
  });
166
268
 
167
269
  // находим заголовок
168
- _$title = $('.building_info').find('h3');
270
+ _$title = _el_building_info.find('h3');
169
271
 
170
272
  };
171
273
 
@@ -16,7 +16,8 @@ function MobjInfoParser() {
16
16
  // используется в _row_area_with_shop() и в _row_area_shop()
17
17
  // 20170327-hover: был добавлен id='link_shop_{MAP_AREA_ID}', для подсветки полигона, который соответствует магазину при наведении мышкой на ссылку
18
18
  // 20170327-hover: в тех же целях был добавлен css-класс
19
- var _row_area_shop_pattern = "<li><a class='link_shop' href='{HREF}' id='link_shop_{MAP_AREA_ID}' title='{TITLE}' target='_blank'>{TITLE}</a> ({AREA_TITLE}), {PHONE}</li>";
19
+ // 20170328-view_area: был добавлен id вцелом элементу списка, чтобы можно было скрывать нерелевантные элементы при входе в площадь
20
+ var _row_area_shop_pattern = "<li id='li_area_{MAP_AREA_ID}' class='li_area'><a class='link_shop' href='{HREF}' id='link_shop_{MAP_AREA_ID}' title='{TITLE}' target='_blank'>{TITLE}</a> ({AREA_TITLE}), {PHONE}</li>";
20
21
 
21
22
  // используется в _row_area_data()
22
23
  var _row_area_pattern = "<li><a href='{HREF}' title='{AREA_TITLE}' target='_blank'>{AREA_TITLE}</a></li>";
@@ -35,6 +35,9 @@ div.tabs_js {
35
35
  overflow-y: scroll;
36
36
  overflow-x: hidden;
37
37
 
38
+ width: 445px;
39
+ white-space: nowrap;
40
+
38
41
  ul {
39
42
  list-style: none;
40
43
  margin-left: 0;
@@ -58,6 +61,18 @@ div.tabs_js {
58
61
  font-size: 20px;
59
62
  }
60
63
 
64
+ a {
65
+ font-weight: bold;
66
+ color: #048bce;
67
+ text-decoration: underline !important;
68
+
69
+ &:hover {
70
+ color: #006ca1;
71
+ text-decoration: underline !important;
72
+ }
73
+
74
+ }
75
+
61
76
  }
62
77
  }
63
78
 
@@ -1,3 +1,3 @@
1
1
  module C80MapFloors
2
- VERSION = '0.1.0.21'
2
+ VERSION = '0.1.0.22'
3
3
  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.21
4
+ version: 0.1.0.22
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-27 00:00:00.000000000 Z
11
+ date: 2017-03-29 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler