Поделиться через


Интеграция редактора Monaco с поддержкой язык запросов Kusto в приложении

Вы можете интегрировать редактор Monaco с поддержкой язык запросов Kusto (monaco-kusto) в приложение. Интеграция monaco-kusto в приложение обеспечивает возможности редактирования, такие как завершение, раскрашивание, рефакторинг, переименование и переход к определению. Для этого требуется создать решение для проверки подлинности, выполнения запросов, отображения результатов и изучения схемы. Он обеспечивает полную гибкость для создания пользовательского интерфейса в соответствии с вашими потребностями.

Из этой статьи вы узнаете, как добавить monaco-kusto в редактор Monaco и интегрировать его в приложение. Пакет доступен на сайте GitHub и npm.

Выполните следующие действия, чтобы интегрировать monaco-kusto в приложение с помощью npm.

Шаг 1. Установка пакета monaco-kusto

Шаг 2. Настройка приложения для использования пакета monaco-kusto

Шаг 3. Добавление схемы базы данных в редактор

Попробуйте интеграцию с нашим примером проекта!

Предварительные требования

  • Node.js (версия 6.10.3 или более поздняя)

Установка пакета monaco-kusto

  1. Установите пакет npm редактора Monaco:

    npm i monaco-editor
    

    Примечание

    Сведения о настройке собственного редактора Monaco см. в репозитории GitHub редактора Monaco.

  2. Установите пакет npm monaco-kusto :

    npm i @kusto/monaco-kusto
    

Настройка приложения для использования пакета monaco-kusto

Вы можете настроить приложение для использования monaco-kusto одним из следующих способов:

  1. Добавьте следующий HTML-код на страницы, где используется редактор Monaco, например файл index.html . Они необходимы из-за зависимости пакета kusto-language-serviceот .

    <script src="%PUBLIC_URL%/monaco-editor/min/vs/language/kusto/bridge.min.js"></script>
    <script src="%PUBLIC_URL%/monaco-editor/min/vs/language/kusto/kusto.javascript.client.min.js"></script>
    <script src="%PUBLIC_URL%/monaco-editor/min/vs/language/kusto/newtonsoft.json.min.js"></script>
    <script src="%PUBLIC_URL%/monaco-editor/min/vs/language/kusto/Kusto.Language.Bridge.min.js"></script>
    
  2. Скопируйте статические файлы из пакетов monaco и monaco-kusto в папку monaco-editor на веб-сервере. Приложению потребуется доступ к этим статическим файлам.

  3. Используйте monaco для их загрузки. Примеры см. в примерах.

Добавление схемы базы данных в редактор

Пакет monaco-kusto позволяет добавить схему базы данных в редактор. Схема позволяет редактору предоставлять предложения автозавершения и другие функции.

Чтобы определить схему, используйте следующую структуру:

const schema = {... <YOUR_DATABASE_SCHEMA> ...};

export function setSchema(editor) {
  window.monaco.languages.kusto.getKustoWorker().then((workerAccessor) => {
    const model = editor.getModel();
    workerAccessor(model.uri).then((worker) => {
      //EITHER: Set schema from a show schema command
      // worker.setSchemaFromShowSchema(
      //     schema,
      //     clusterURI,
      //     database
      // );
      //OR: Set schema from a manually created schema
      // worker.setSchema(schema);
    });
  });
}

Схему базы данных можно получить одним из следующих способов:

  1. В пользовательском веб-интерфейсе Azure Data Explorer в меню слева выберите Запрос.

  2. Выберите базу данных, для которой требуется создать схему.

  3. В окне запроса выполните следующий запрос:

    .show schema as json
    
  4. Скопируйте результат запроса и вставьте его как константу схемы . Результатом запроса является список баз данных (см. интерфейс Result в файле schema.ts ).

  5. Используйте метод , setSchemaFromShowSchema() чтобы задать схему в редакторе. Кроме того, необходимо указать универсальный код ресурса (URI) кластера и имя базы данных, используемой в редакторе.

Пример проекта

Вы можете найти пример проекта, использующего пакет monaco-kusto . Чтобы использовать пример, клонируйте репозиторий monaco-kusto GitHub. Пример можно найти в папке samples/react .

Настройка и тестирование примера проекта

Выполните следующие команды из корня клонированного репозитория:

  1. Установите зависимости и выполните сборку проекта:

    npm install
    
  2. Убедитесь, что проект работает. В случае успеха откроетсяindex.html .

    npm run watch