c80_map_floors 0.1.0.4 → 0.1.0.5
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 +4 -4
- data/app/assets/javascripts/buttons/admin_buttons/button_edit.js +52 -12
- data/app/assets/javascripts/src/state_controller.js +48 -3
- data/app/assets/javascripts/view/building_info/mobj_info_parser.js +2 -1
- data/app/assets/stylesheets/ui/tabs_js.scss +8 -1
- data/app/models/c80_map_floors/floor_representator.rb +3 -1
- data/lib/c80_map_floors/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 6a621c6552044c23f3aba24c38c9714175f54813
|
4
|
+
data.tar.gz: da3c3965d536d3501cb4e6863abff84622635321
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
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
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
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
|
-
|
40
|
+
console.log("<EditButton.setState> Кнопка EDIT перешла в состояние state = " + state);
|
23
41
|
|
24
|
-
|
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
|
-
|
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
|
-
|
92
|
-
_this.el.
|
93
|
-
|
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
|
-
//
|
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('
|
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
|
}
|
@@ -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
|
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
|
+
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-
|
11
|
+
date: 2016-12-02 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|