c80_map_floors 0.1.0.21 → 0.1.0.22

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