-
Notifications
You must be signed in to change notification settings - Fork 4
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Right click identification #839
base: rgis-develop
Are you sure you want to change the base?
Changes from 9 commits
a21df5f
8c22405
99808a0
6d06d70
eafc1c3
561e00e
57af798
4790434
3fabd97
7617335
e79d373
51d867a
e601b27
eb96de8
7d4f782
5a12ab7
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
Original file line number | Diff line number | Diff line change | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
@@ -129,6 +129,31 @@ let FlexberryMapComponent = Ember.Component.extend( | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||
'fadeAnimation', 'zoomAnimation', 'zoomAnimationThreshold', 'markerZoomAnimation' | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
], | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
/** | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Map tool that should be enabled when right clicking | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
@property rightClickToolName | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
@type String | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
@default null | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
*/ | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
rightClickToolName: null, | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
/** | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Identification map tool options | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
@property rightClickToolProperties | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
@type Object | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
@default null | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
*/ | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
rightClickToolProperties: null, | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
/** | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
List of available tools for switching to identification mode using the right click and saving active state of working tool | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
@property rightClickAvailiblePrevMapTools | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
@type String [] | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
*/ | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
rightClickAvailiblePrevMapTools: [], | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. И тут тоже можно значение по умолчанию задать. хотя бы тот же drag и zoom-in/zoom-out There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Исправил, всё тут ember-flexberry-gis/addon/services/maptool-options.js Lines 3 to 30 in 7617335
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
/** | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
List of leaflet map properties bindings. | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
*/ | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
@@ -143,6 +168,8 @@ let FlexberryMapComponent = Ember.Component.extend( | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||
*/ | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
lat: null, | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
maptoolOptionsService: Ember.inject.service('maptool-options'), | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
/** | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Map center longitude. | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
@@ -503,6 +530,10 @@ let FlexberryMapComponent = Ember.Component.extend( | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
// Store map's container as jQuery object. | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
let $leafletContainer = this.$(); | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
// Выключаем стандартный обработчик ПКМ для контейнера карты | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
$leafletContainer.on('contextmenu', (e) => e.preventDefault()); | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
this.set('_$leafletContainer', $leafletContainer); | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
let options = this.get('options'); | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
@@ -513,20 +544,95 @@ let FlexberryMapComponent = Ember.Component.extend( | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||
if (this.get('mainMap')) { | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
leafletMap.mainMap = true; | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
L.DomEvent.on(leafletMap, 'mousedown mouseup mousein mouseout', (e) => { | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
// Обработка ПКМ: Включение инструмента идентификации типа "Прямоугольник" | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
// При mouseDown включение, создание вершины, переключение в draggable-состояние для задания области идентификации | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
// При mouseUp идентификация, переключение инструмента | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
if (e.originalEvent.button === 2) { | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
DaryaNeko marked this conversation as resolved.
Show resolved
Hide resolved
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
if (!this.get('maptoolOptionsService.identifyOnRightClick')) { | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
return; | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
} | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
// ПКМ обработчик карты пока умеет работать только с identify-visible-rectangle | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
// this.rightClickToolProperties должен содержать перечень слоев для идентификации | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
if (this.get('rightClickToolName') !== 'identify-visible-rectangle' || !this.get('rightClickToolProperties')) { | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. давай все таки тут имя зашивать не будем, иначе какой смысл от того, что мы дали его определять? пусть будет на совести прикладного разработчика There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Исправил |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
return; | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
} | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
if (e.type === 'mousedown') { | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
let rightClickAvailiblePrevMapTools = this.get('rightClickAvailiblePrevMapTools'); | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
let savePrevEnabledTool = rightClickAvailiblePrevMapTools.includes(leafletMap.flexberryMap.tools.getEnabled().name); | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
// Сохраняем предыдущий инструмент из списка "включаемых" инструментов | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
if (savePrevEnabledTool) { | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
DaryaNeko marked this conversation as resolved.
Show resolved
Hide resolved
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
this.set('prevEnabledTools', { | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
name: leafletMap.flexberryMap.tools.getEnabled().name, | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
mapToolProperties: leafletMap.flexberryMap.tools.getEnabled().mapToolProperties | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
}); | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
} | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
// Включаем инструмент идентификации | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
let identifyTool = leafletMap.flexberryMap.tools.enable(this.get('rightClickToolName'), this.get('rightClickToolProperties')); | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
let identifyEditTools = Ember.get(identifyTool, '_editTools'); | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
// Инициируем нажатие ЛКМ для создания стартовой точки и перехода в состояние "перетаскивание" инструмента | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
let newMouseDownEvent = new MouseEvent('mousedown'); | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
identifyEditTools.onMousedown({ | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
latlng: e.latlng, | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
originalEvent: newMouseDownEvent | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
}); | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
} | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
if (e.type === 'mouseup') { | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
let currentMapTool = leafletMap.flexberryMap.tools.getEnabled(); | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
if (Ember.get(currentMapTool, 'name') === this.get('rightClickToolName')) { | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
let identifyEditTools = Ember.get(currentMapTool, '_editTools'); | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
if (!Ember.isNone(identifyEditTools)) { | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
identifyEditTools.stopDrawing(); | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
} | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
} | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
if (!Ember.isNone(this.get('prevEnabledTools'))) { | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
leafletMap.flexberryMap.tools.enable(this.get('prevEnabledTools.name'), this.get('prevEnabledTools.mapToolProperties')); | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
} else { | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
leafletMap.flexberryMap.tools.enable('drag'); | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
} | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
this.set('prevEnabledTools', null); | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
} | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
return; | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
} | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
// Обработка средней клавиши мыши: возможность перетаскивания карты из любого рабочего инструмента | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
// При mouseDown включение инструмента "рука" | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
// При mouseUp переключение обратно в рабочий инструмент | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
if (e.originalEvent.button === 1) { | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
if (e.type === 'mousedown') { | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
e.originalEvent.preventDefault(); | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
let enabledTools = { | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
this.set('prevEnabledTools', { | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
name: leafletMap.flexberryMap.tools.getEnabled().name, | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
mapToolProperties: leafletMap.flexberryMap.tools.getEnabled().mapToolProperties | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
}; | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
this.set('prevEnabledTools', enabledTools); | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
}); | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
leafletMap.flexberryMap.tools.enable('drag'); | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
} else { | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
leafletMap.flexberryMap.tools.enable(this.get('prevEnabledTools.name'), this.get('prevEnabledTools.mapToolProperties')); | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
this.set('prevEnabledTools', null); | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
} | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
} else if (!Ember.isNone(this.get('prevEnabledTools'))) { | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
return; | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
} | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
// Обработка ЛКМ: перезагрузить рабочий инструмент | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
// Если во время работы инструмента что-то пошло не так (двойной клик, одновременный клик лкм+пкм, выход за границы рабочей области) | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
if (e.originalEvent.button === 0) { | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
if (Ember.isNone(this.get('prevEnabledTools'))) { | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
return; | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
} | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
leafletMap.flexberryMap.tools.enable(this.get('prevEnabledTools.name'), this.get('prevEnabledTools.mapToolProperties')); | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
this.set('prevEnabledTools', null); | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
} | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,13 @@ | ||
import Ember from 'ember'; | ||
|
||
export default Ember.Service.extend({ | ||
|
||
/** | ||
Flag: indicates whether identification is performed when right-clicking on map. | ||
|
||
@property identifyOnRightClick | ||
@type Bool | ||
@default false | ||
*/ | ||
identifyOnRightClick: false, | ||
}); |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1 @@ | ||
export { default } from 'ember-flexberry-gis/services/maptool-options'; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Давай поставим значение по умолчанию зачем издеваться над прикладными проектами, и заставлять гадать, если у нас пока по сути один инструмент предполагается?)
Возможность переопределения - это отлично. но вот необходимость гадать - это уже плохо.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Исправил, всё тут
ember-flexberry-gis/addon/services/maptool-options.js
Lines 3 to 20 in 7617335