c80_map_floors 0.1.0.4 → 0.1.0.5

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: 91d37bea3434e0d10977e8898d1db9795c43a7cd
4
- data.tar.gz: 0aa35d9922a21214f3c00362cab648250b9beb6d
3
+ metadata.gz: 6a621c6552044c23f3aba24c38c9714175f54813
4
+ data.tar.gz: da3c3965d536d3501cb4e6863abff84622635321
5
5
  SHA512:
6
- metadata.gz: e56584f2ae7aa2536b880c7ac011de97003d32bf913fc2bff321e6697433ecb42ad2696b50bd6cb0e2abcbc4ef4a1520c9627ebc225f6d0b669d0928ed3853d3
7
- data.tar.gz: 114a367c49d227dac7aa1008a7f51855604c12581048e9e3b14332be9c03160747c63ad78537812e4ad3ff1bbaadd62974e341b48e2a97647ce390b3e8bc977a
6
+ metadata.gz: 34d71d53422cb9e531945e43f9f701355d569874f36fe57af8d4b403fb33acc9bc86526825ad2f28f023662ca598ef74c0f49977c60e654cb10e1130baf5b447
7
+ data.tar.gz: ce9396846ff4c5ed651e0b4a19d68270b431af3d7f34fc90229cc33dc42c79c3c9db45cbbcc3ec7db783570a1333ae6dfebb25fcd5dc8a75dad78a7f59a0ff93
@@ -1,9 +1,11 @@
1
1
  "use strict";
2
2
 
3
- // именно эта кнопка контролирует переходы между состояниями:
3
+ // именно эта кнопка контролирует переходы между состояниями приложения:
4
4
  // - viewing, editing;
5
5
  // - view_building, edit_building;
6
6
  // - view_area, edit_area;
7
+ // - view_floor, edit_floor
8
+
7
9
  function EditButton() {
8
10
 
9
11
  var _map = null;
@@ -11,17 +13,34 @@ function EditButton() {
11
13
  _this.state = 'init'; // editing / viewing
12
14
  _this.el = null;
13
15
 
14
- // состояние этой кнопки извне меняет приложение,
15
- // когда входим в здание\площадь (вот тут [a1x7]),
16
- // и чтобы не происходило бесконечного зацикленного вызова,
17
- // вводится флаг mark_change_only_inner_state
18
- this.setState = function (state,mark_change_only_inner_state) {
16
+ // если true - значит кнопка имеется на странице и код в методах будет исполняться
17
+ var mark_button_present = false;
18
+
19
+ /** Изменить состояние кнопки.
20
+ *
21
+ * @param {string} state
22
+ * @param {boolean} [mark_change_only_inner_state]
23
+ *
24
+ * NOTE:: Клик по этой кнопке изменит состояние этой кнопки и поменяет режим приложения.
25
+ *
26
+ * Также: приложение меняет состояние этой кнопки,
27
+ * когда входим в здание\площадь (вот тут [a1x7]),
28
+ * и чтобы не происходило бесконечного зацикленного вызова,
29
+ * вводится флаг mark_change_only_inner_state.
30
+ *
31
+ * http://usejsdoc.org/tags-param.html
32
+ *
33
+ */
34
+ this.setState = function (state, mark_change_only_inner_state) {
35
+ if (!mark_button_present) return;
36
+
19
37
  if (mark_change_only_inner_state == undefined) {
20
38
  mark_change_only_inner_state = false;
21
39
  }
22
- //console.log("<EditButton.setState> state = " + state);
40
+ console.log("<EditButton.setState> Кнопка EDIT перешла в состояние state = " + state);
23
41
 
24
- // этот код коррелирует с [x9cs7]
42
+ //<editor-fold desc="//Впишем режим в cssClass кнопки">
43
+ // NOTE: этот код коррелирует с [x9cs7]. Возможно, нужен рефакторинг, но на него нет времени сейчас.
25
44
  _this.state = state;
26
45
  _this.el.removeClass('editing');
27
46
  _this.el.removeClass('viewing');
@@ -30,14 +49,20 @@ function EditButton() {
30
49
  _this.el.removeClass('edit_building');
31
50
  _this.el.removeClass('view_area');
32
51
  _this.el.removeClass('edit_area');
52
+ _this.el.removeClass('eb_view_floor');
53
+ _this.el.removeClass('eb_edit_floor');
33
54
  _this.el.addClass(state);
55
+ //</editor-fold>
34
56
 
57
+ // NOTE:: изменим режим приложения
35
58
  if (!mark_change_only_inner_state) {
36
- _map.setMode(state);
59
+ var s = state.split('eb_').join('');
60
+ _map.setMode(s);
37
61
  }
38
62
 
39
63
  };
40
64
 
65
+ // слушаем клики по кнопке (внутренняя state машина)
41
66
  this.onClick = function (e) {
42
67
  e.preventDefault();
43
68
 
@@ -75,6 +100,15 @@ function EditButton() {
75
100
  mark_restore_svg_overlay = true;
76
101
  break;
77
102
 
103
+ case 'eb_view_floor':
104
+ _this.setState('eb_edit_floor');
105
+ mark_restore_svg_overlay = true;
106
+ break;
107
+
108
+ case 'eb_edit_floor':
109
+ _this.setState('eb_view_floor');
110
+ break;
111
+
78
112
  }
79
113
 
80
114
  // покажем для клика мышкой все полигоны из svg_overlay
@@ -88,9 +122,15 @@ function EditButton() {
88
122
  this.init = function (button_css_selector, link_to_map) {
89
123
  _map = link_to_map;
90
124
  _this.el = $(button_css_selector);
91
- _this.state = _map.mode;
92
- _this.el.addClass(_map.mode);
93
- _this.el.on('click', this.onClick);
125
+
126
+ if (_this.el.length) {
127
+ mark_button_present = true;
128
+ _this.state = _map.mode;
129
+ _this.el.addClass(_map.mode);
130
+ _this.el.on('click', this.onClick);
131
+ }
132
+
133
+ //console.log('button_edit.js: init: for breakpoint: ' + _this.el.length);
94
134
  };
95
135
 
96
136
  }
@@ -45,6 +45,8 @@ function StateController() {
45
45
  _map.container.removeClass("edit_building");
46
46
  _map.container.removeClass("view_area");
47
47
  _map.container.removeClass("edit_area");
48
+ _map.container.removeClass("view_floor");
49
+ _map.container.removeClass("edit_floor");
48
50
  _map.container.addClass(mode);
49
51
  //</editor-fold>
50
52
 
@@ -331,7 +333,7 @@ function StateController() {
331
333
 
332
334
  //_this.main_map.css('opacity','0.7');
333
335
 
334
- // включим слой svg_overlay - а кто там живёт (запомятовал)?
336
+ // т.к. этот слой используется испключительно в помощь при рисовании обводки площадей и перехватывает клики при dnd, то тут он нам не нужен
335
337
  _this.svg_overlay.css('display', 'block');
336
338
 
337
339
  // выдвигаем инфо-панель
@@ -349,8 +351,8 @@ function StateController() {
349
351
  // прячем кнопку "отправить заявку на аренду площади"
350
352
  _this.area_order_button.css('display', 'none');
351
353
 
352
- // кнопку "редактировать переводим в СООТВЕТСТВУЮЩЕЕ состояние
353
- _map.edit_button_klass.setState('edit_button_view_floor', true); // [a1x7]
354
+ // кнопку "редактировать" переводим в СООТВЕТСТВУЮЩЕЕ состояние
355
+ _map.edit_button_klass.setState('eb_view_floor', true); // [a1x7]
354
356
 
355
357
  // сбросим z-index (пояснение "что это" см. в комментах к resetOverlayZindex)
356
358
  //if (_map.current_building != undefined) _map.current_building.resetOverlayZindex();
@@ -370,6 +372,49 @@ function StateController() {
370
372
  //</editor-fold>
371
373
  break;
372
374
 
375
+ // начали редактировать этаж
376
+ case 'edit_floor':
377
+ //<editor-fold desc="...">
378
+
379
+ // спрячем кнопку "обратно на карту"
380
+ _map.back_to_map_button_klass.hide();
381
+
382
+ // покажем кнопку "связать здание с полигоном"
383
+ //_map.building_link_button_klass.show();
384
+
385
+ // т.к. этот слой используется испключительно в помощь при рисовании обводки площадей и перехватывает клики при dnd, то тут он нам не нужен
386
+ _this.svg_overlay.css('display', 'none');
387
+
388
+ // заодно поменяем z-index слоёв с колоннами и слоя с svg полигонами площадей, чтобы можно было добраться мышкой до этих полигонов и редактировать их
389
+ if (_map.current_building != undefined) _map.current_building.changeOverlayZindex();
390
+
391
+ // покажем кнопку "добавить фигуру"
392
+ OpacityButtonsUtils.show(_this.new_button);
393
+ _map.new_button_klass.resetState();
394
+
395
+ // покажем кнопку "удалить фигуру"
396
+ OpacityButtonsUtils.show(_this.remove_button);
397
+
398
+ // покажем кнопку "ред"
399
+ OpacityButtonsUtils.show(_this.edit_button);
400
+
401
+ // спрячем инфу о здании
402
+ _this.building_info.css("top", -500);
403
+
404
+ // спрячем статус строки "вы создаёте полигон" и ...
405
+ _this.map_creating.css('display', 'none');
406
+ _this.map_removing.css('display', 'none');
407
+
408
+ // покажем, возможно спрятанные, zoom кнопки
409
+ _this.mzoom_buttons.css('opacity', '1');
410
+
411
+ // покажем кнопку "сохранить"
412
+ _map.save_button_klass.show();
413
+ _map.save_button_klass.check_and_enable();
414
+
415
+ //</editor-fold>
416
+ break;
417
+
373
418
  }
374
419
  };
375
420
 
@@ -24,6 +24,7 @@ var MobjInfoParser = function () {
24
24
  result += _this._row('square', json);
25
25
  result += _this._row('square_free', json);
26
26
  result += _this._row('floor_height', json);
27
+ result += _this._row('communications', json);
27
28
  result += _this._row('areas_count', json);
28
29
  result += _this._row('areas_free_count', json);
29
30
  result += _this._row('price_string', json);
@@ -38,7 +39,7 @@ var MobjInfoParser = function () {
38
39
  this._row = function (key, json) {
39
40
  var s = '';
40
41
  if (key == 'price_string') {
41
- s = "<li>" + json['data'][key] + "</li>";
42
+ s = "<li class='price'>" + json['data'][key] + "</li>";
42
43
  } else {
43
44
  s = "<li>" + _i18n.t(key) + ": " + "<span class='dd'>" + json['data'][key] + "</span>" + "</li>"
44
45
  }
@@ -22,8 +22,15 @@ div.tabs_js {
22
22
  transition: all 0.3s;
23
23
 
24
24
  span {
25
- color: #6f6f6f;
25
+ color: #4271B5;
26
+ font-weight: bold;
26
27
  }
28
+
29
+ &.price {
30
+ padding-top: 15px;
31
+ font-size: 20px;
32
+ }
33
+
27
34
  }
28
35
  }
29
36
 
@@ -52,7 +52,9 @@ module C80MapFloors
52
52
  square_free: self.square_free,
53
53
  areas_count: self.areas.count,
54
54
  areas_free_count: self.areas.free_areas.count,
55
- price_string: self.price_string
55
+ price_string: self.price_string,
56
+ floor_height: self.floor_height,
57
+ communications: self.communications
56
58
  }
57
59
  result.as_json
58
60
  end
@@ -1,3 +1,3 @@
1
1
  module C80MapFloors
2
- VERSION = '0.1.0.4'
2
+ VERSION = '0.1.0.5'
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.4
4
+ version: 0.1.0.5
5
5
  platform: ruby
6
6
  authors:
7
7
  - C80609A
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2016-12-01 00:00:00.000000000 Z
11
+ date: 2016-12-02 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler