mirror of
https://github.com/salexdv/bsl_console.git
synced 2025-02-01 13:08:06 +02:00
Генерация события при активации строки списка подсказок
This commit is contained in:
parent
154dc73bb2
commit
cad373a31e
@ -68,6 +68,7 @@
|
||||
| `enableQuickSuggestions` | Включает/выключает режим быстрых подсказок |
|
||||
| `minimap` | Включает/выключает отображение карты кода |
|
||||
| [`enableModificationEvent`](docs/modification_event.md) | Включает/выключает генерацию события, возникающего при изменении содержимого редактора|
|
||||
| [`enableSuggestActivationEvent`](docs/activation_event.md) | Включает/выключает генерацию события, возникающего активации пункта в списке подсказок|
|
||||
| [`switchQueryMode`](docs/switch_query.md) | Переключение между режимом запроса и режимом редактирования кода |
|
||||
| [`compare`](docs/compare.md) | Включает/выключает режим сравнения текстов |
|
||||
| `nextDiff` | Переход с следующему изменению в режиме сравнения |
|
||||
@ -100,6 +101,7 @@
|
||||
| `EVENT_CONTENT_CHANGED` | При любом изменении содержимого редактора. Вкл/откл через *enableModificationEvent* |
|
||||
| `EVENT_GET_METADATA` | Генерируется при отсутствии метаданных. В параметрах передается имя запрашиваемых метаданных |
|
||||
| `EVENT_XXX` | При выборе пользовательского пункта меню. *addContextMenuItem('Мой пункт', 'EVENT_MY')* |
|
||||
| `EVENT_ON_ACTIVATE_SUGGEST_ROW`| При активации пункта в текущем списке подсказок |
|
||||
|
||||
*Перед началом работы с редактором из 1С Предпрития желательно вызвать функцию инициализации и передать в нее текущую версию платформы.*
|
||||
Пример:
|
||||
|
39
docs/activation_event.md
Normal file
39
docs/activation_event.md
Normal file
@ -0,0 +1,39 @@
|
||||
# Функция *enableSuggestActivationEvent*
|
||||
## Назначение функции
|
||||
Функция включает/выключает генерацию события *EVENT_ON_ACTIVATE_SUGGEST_ROW*, которое возникает при активации пункта в текущем списке подсказок
|
||||
|
||||
## Параметры функции
|
||||
* **enabled** - *boolean*, активность события
|
||||
|
||||
## Пример вызова
|
||||
```javascript
|
||||
// Включение генерации события
|
||||
enableSuggestActivationEvent(true);
|
||||
|
||||
// Отключение генерации события
|
||||
enableSuggestActivationEvent(false);
|
||||
```
|
||||
|
||||
## Пример генерируемого события
|
||||
```json
|
||||
{
|
||||
"current_word": "",
|
||||
"last_word": "авансовыйотчет",
|
||||
"last_expression": "документы.авансовыйотчет.",
|
||||
"focused": "Выбрать",
|
||||
"rows": [
|
||||
"Выбрать",
|
||||
"НайтиПоНомеру",
|
||||
"НайтиПоРеквизиту",
|
||||
"ПолучитьДанныеВыбора",
|
||||
"ПолучитьМакет",
|
||||
"ПолучитьСсылку",
|
||||
"ПолучитьФорму",
|
||||
"ПолучитьФормуВыбора",
|
||||
"ПолучитьФормуНовогоДокумента",
|
||||
"ПолучитьФормуСписка",
|
||||
"ПустаяСсылка",
|
||||
"СоздатьДокумент"
|
||||
]
|
||||
}
|
||||
```
|
@ -18,6 +18,7 @@ define(['bslGlobals', 'bslMetadata', 'snippets', 'bsl_language', 'vs/editor/edit
|
||||
customSuggestions = [];
|
||||
contextMenuEnabled = false;
|
||||
err_tid = 0;
|
||||
suggestObserver = null;
|
||||
|
||||
reserMark = function() {
|
||||
|
||||
@ -651,6 +652,71 @@ define(['bslGlobals', 'bslMetadata', 'snippets', 'bsl_language', 'vs/editor/edit
|
||||
|
||||
}
|
||||
|
||||
function getSuggestWidgetRows(element) {
|
||||
|
||||
let rows = [];
|
||||
|
||||
for (let i = 0; i < element.parentElement.childNodes.length; i++) {
|
||||
|
||||
let row = element.parentElement.childNodes[i];
|
||||
|
||||
if (row.classList.contains('monaco-list-row'))
|
||||
rows.push(row.getAttribute('aria-label'));
|
||||
|
||||
}
|
||||
|
||||
return rows;
|
||||
|
||||
}
|
||||
|
||||
enableSuggestActivationEvent = function (enabled) {
|
||||
|
||||
if (suggestObserver != null) {
|
||||
suggestObserver.disconnect();
|
||||
suggestObserver = null;
|
||||
}
|
||||
|
||||
if (enabled) {
|
||||
|
||||
suggestObserver = new MutationObserver(function (mutations) {
|
||||
|
||||
mutations.forEach(function (mutation) {
|
||||
|
||||
if (mutation.target.classList.contains('monaco-list-rows') && mutation.addedNodes.length) {
|
||||
|
||||
let element = mutation.addedNodes[0];
|
||||
|
||||
if (element.classList.contains('monaco-list-row') && element.classList.contains('focused')) {
|
||||
|
||||
let bsl = new bslHelper(editor.getModel(), editor.getPosition());
|
||||
|
||||
eventParams = {
|
||||
current_word: bsl.word,
|
||||
last_word: bsl.lastRawExpression,
|
||||
last_expression: bsl.lastExpression,
|
||||
focused: element.getAttribute('aria-label'),
|
||||
rows: getSuggestWidgetRows(element)
|
||||
}
|
||||
|
||||
sendEvent('EVENT_ON_ACTIVATE_SUGGEST_ROW', eventParams);
|
||||
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
})
|
||||
|
||||
});
|
||||
|
||||
suggestObserver.observe(document, {
|
||||
childList: true,
|
||||
subtree: true,
|
||||
});
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
editor = undefined;
|
||||
|
||||
// Register languages
|
||||
@ -685,7 +751,7 @@ define(['bslGlobals', 'bslMetadata', 'snippets', 'bsl_language', 'vs/editor/edit
|
||||
theme: "bsl-white",
|
||||
value: getCode(),
|
||||
language: language.id,
|
||||
contextmenu: true,
|
||||
contextmenu: false,
|
||||
wordBasedSuggestions: false,
|
||||
customOptions: true
|
||||
});
|
||||
|
Loading…
x
Reference in New Issue
Block a user