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