1
0
mirror of https://github.com/salexdv/bsl_console.git synced 2024-11-28 08:48:48 +02:00

Генерация события при выборе строки из списка подсказок closes #56

This commit is contained in:
salexdv 2021-04-22 22:18:43 +03:00
parent 16ddd43eae
commit ccd6a46247
4 changed files with 67 additions and 6 deletions

View File

@ -70,6 +70,7 @@
| [`enableModificationEvent`](docs/modification_event.md) | Включает/выключает генерацию события, возникающего при изменении содержимого редактора|
| [`enableSuggestActivationEvent`](docs/activation_event.md) | Включает/выключает генерацию события, возникающего активации пункта в списке подсказок|
| [`enableBeforeShowSuggestEvent`](docs/before_suggest_event.md) | Включает/выключает генерацию события, возникающего перед появлением списка подсказок|
| [`enableSelectSuggestEvent`](docs/select_suggest_event.md) | Включает/выключает генерацию события, возникающего при выборе пункта из списка подсказок|
| [`switchQueryMode`](docs/switch_query.md) | Переключение между режимом запроса и режимом редактирования кода |
| [`compare`](docs/compare.md) | Включает/выключает режим сравнения текстов |
| `nextDiff` | Переход с следующему изменению в режиме сравнения |
@ -103,7 +104,9 @@
| `EVENT_CONTENT_CHANGED` | При любом изменении содержимого редактора. Вкл/откл через *enableModificationEvent* |
| `EVENT_GET_METADATA` | Генерируется при отсутствии метаданных. В параметрах передается имя запрашиваемых метаданных |
| `EVENT_XXX` | При выборе пользовательского пункта меню. *addContextMenuItem('Мой пункт', 'EVENT_MY')* |
| `EVENT_ON_ACTIVATE_SUGGEST_ROW`| При активации пункта в текущем списке подсказок |
| `EVENT_ON_ACTIVATE_SUGGEST_ROW`| При активации пункта в текущем списке подсказок [(подробнее)](docs/activation_event.md) |
| `EVENT_BEFORE_SHOW_SUGGEST` | Перед появлением списка подсказок [(подробнее)](docs/before_suggest_event.md) |
| `EVENT_ON_SELECT_SUGGEST_ROW` | При выборе пункта из списка подсказок [(подробнее)](docs/select_suggest_event.md) |
*Перед началом работы с редактором из 1С Предпрития желательно вызвать функцию инициализации и передать в нее текущую версию платформы.*
Пример:

View File

@ -21,7 +21,6 @@ enableBeforeShowSuggestEvent(false);
"current_word": "",
"last_word": "авансовыйотчет",
"last_expression": "документы.авансовыйотчет.",
"focused": "Выбрать",
"rows": [
"Выбрать",
"НайтиПоНомеру",

View File

@ -0,0 +1,40 @@
# Функция *enableSelectSuggestEvent*
## Назначение функции
Функция включает/выключает генерацию события *EVENT_ON_SELECT_SUGGEST_ROW*, которое возникает при выборе пункта из списка подсказок
## Параметры функции
* **enabled** - *boolean*, активность события
## Пример вызова
```javascript
// Включение генерации события
enableSelectSuggestEvent(true);
// Отключение генерации события
enableSelectSuggestEvent(false);
```
## Пример параметров генерируемого события
```json
{
"trigger": ".",
"current_word": "",
"last_word": "авансовыйотчет",
"last_expression": "документы.авансовыйотчет.",
"selected": "Выбрать",
"rows": [
"Выбрать",
"НайтиПоНомеру",
"НайтиПоРеквизиту",
"ПолучитьДанныеВыбора",
"ПолучитьМакет",
"ПолучитьСсылку",
"ПолучитьФорму",
"ПолучитьФормуВыбора",
"ПолучитьФормуНовогоДокумента",
"ПолучитьФормуСписка",
"ПустаяСсылка",
"СоздатьДокумент"
]
}
```

View File

@ -20,6 +20,7 @@ define(['bslGlobals', 'bslMetadata', 'snippets', 'bsl_language', 'vs/editor/edit
err_tid = 0;
suggestObserver = null;
generateBeforeShowSuggestEvent = false;
generateSelectSuggestEvent = false;
reserMark = function() {
@ -670,7 +671,7 @@ define(['bslGlobals', 'bslMetadata', 'snippets', 'bsl_language', 'vs/editor/edit
}
genarateEventWithSuggestData = function(eventName, suggestRows, trigger, focused) {
genarateEventWithSuggestData = function(eventName, suggestRows, trigger, extra) {
let bsl = new bslHelper(editor.getModel(), editor.getPosition());
@ -679,10 +680,14 @@ define(['bslGlobals', 'bslMetadata', 'snippets', 'bsl_language', 'vs/editor/edit
current_word: bsl.word,
last_word: bsl.lastRawExpression,
last_expression: bsl.lastExpression,
focused: focused,
rows: suggestRows
}
if (eventName == 'EVENT_ON_ACTIVATE_SUGGEST_ROW')
eventParams['focused'] = extra;
else if (eventName == 'EVENT_ON_SELECT_SUGGEST_ROW')
eventParams['selected'] = extra;
sendEvent(eventName, eventParams);
}
@ -730,6 +735,12 @@ define(['bslGlobals', 'bslMetadata', 'snippets', 'bsl_language', 'vs/editor/edit
}
enableSelectSuggestEvent = function(enabled) {
generateSelectSuggestEvent = enabled;
}
hideSuggestionsList = function() {
let widget = document.querySelector('.suggest-widget');
@ -808,6 +819,14 @@ define(['bslGlobals', 'bslMetadata', 'snippets', 'bsl_language', 'vs/editor/edit
if (e.code == 'ArrowUp' && editor.getPosition().lineNumber == 1)
scrollToTop();
else if (e.code == 'Enter' && generateSelectSuggestEvent) {
let element = document.querySelector('.monaco-list-row.focused');
if (element) {
let rows = getSuggestWidgetRows(element);
genarateEventWithSuggestData('EVENT_ON_SELECT_SUGGEST_ROW', rows, 'selection', element.getAttribute('aria-label'));
}
}
});