==================
Редакторы и панели
==================
.. _projEditor :
Редактор проекта pgCodeKeeper
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Редактор проекта – основной способ работы с pgCodeKeeper. Интерфейс редактора, состоящий из нескольких основных частей:
#. Панель инструментов Eclipse
#. Панель инструментов редактора
#. Таблица различий
#. Панель инструментов cравнения
#. Панель сравнения
#. Счетчик объектов
.. image:: ../images/main_view.png
**Панель инструментов Eclipse** содержит инструменты для работы с редактором SQL. Кнопка |file| позволяет открыть новый :ref:`sqlEditor`.
**Панель инструментов редактора** предназначена для работы со списком объектов. Существуют следующие возможности:
- |check_all| – выбрать все элементы.
- |uncheck_all| – снять выбор со всех элементов.
- |loop_obj| – инвертировать выбор элементов.
- |copy_edit| – копировать набор выбранных элементов в буфер обмена как регулярное выражение.
- |empty_filter| – неактивный / |filter_tsk| – активный фильтр объектов.
- |search| – отфильтровать список объектов по имени или регулярному выражению.
- |save_edit| – применить изменения
- |triangle| – выпадающее меню с направлениями изменений. При клике по лейблу DB/БД также отображается меню с направлениями изменений.
- |refresh| – получить изменения
- |triangle| – выпадающее меню с источниками баз данных. Источники баз данных можно выбрать в контекстном меню выбранной БД |source_name| на панели инструментов редактора (2).
Выпадающие меню |triangle| позволяют запустить операции получения или применения изменений с переопределением некоторых настроек.
Переопределяемые настройки для получения изменений
.. image:: ../images/changes_with_presents.png
Переопределяемые настройки для применения изменений
.. image:: ../images/apply_with_presents.png
**Таблица различий** отображает список объектов, которые различаются в сравниваемых схемах БД. Здесь доступна информация: тип объекта, тип изменения, имя объекта, контейнер, пользователь git, пользователь базы данных.
Тип объекта - поддерживаются следующие типы объектов:
**PostgreSQL** - AGGREGATE, CAST, CONSTRAINT, DOMAIN, EVENT EXTENSION, FTS_CONFIGURATION, FTS_DICTIONARY, FTS_PARSER, FTS_TEMPLATE, FUNCTION, INDEX, OPERATOR, POLICY, PROCEDURE, RULE, SCHEMA, SEQUENCE, STATICTICS, TABLE, TRIGER, TRIGGER, TYPE, VIEW.
**MS SQL** - ASSEMBLY, CONSTRAINT, FUNCTION, INDEX, PROCEDURE, ROLE, SCHEMA, SEQUENCE, TABLE, TRIGGER, TYPE, USER, VIEW.
**ClickHouse** - CONSTRAINT, DICTIONARY, FUNCTION, INDEX, ROLE, SCHEMA(DATABASE), TABLE, USER, VIEW.
Тип изменения - объект может находиться в трех состояниях: существовать только в базе данных, только в проекте или и в проекте и в базе данных. В зависимости от состояния и направления изменений, объекты в списке изменений помечаются как delete, add и edit или CREATE, DROP и ALTER соответственно.
.. _container :
Контейнер - имя родительского объекта, например для индекса - это имя таблицы или представления, которому он принадлежит.
Пользователь git - имя пользователя, который последним изменил файл проекта для данного объекта. В том случае, если файлы были изменены локально, то к имени пользователя будет добавлен символ '*'. Для отображения данного столбца, проект должен быть подключен к системе контроля версий и должна быть включена соответствующая опция на странице настроек :ref:`projEditorPref`.
Пользователь базы данных - имя пользователя базы данных, который последним изменил объект в базе данных. Для отображения данного столбца необходимо расширение `pg_dbo_timestamp `_.
**Панель инструментов сравнения** предназначена для работы с панелью сравнения. Существуют следующие возможности:
- |switch| - поменять местами код объектов в панели сравнения.
- |show_children| - отобразить в панели сравнения код всех дочерних объектов даже если в них нет различий.
**Панель сравнения** показывает изменения, произошедшие в SQL представлении объекта.
**Счетчик объектов** отображает выбранное и общее количество объектов в таблице.
.. |check_all| image:: ../images/pgcodekeeper_project_view/check_all.png
.. |uncheck_all| image:: ../images/pgcodekeeper_project_view/uncheck_all.png
.. |loop_obj| image:: ../images/pgcodekeeper_project_view/loop_obj.png
.. |copy_edit| image:: ../images/pgcodekeeper_project_view/copy_edit.png
.. |empty_filter| image:: ../images/pgcodekeeper_project_view/empty_filter.png
.. |filter_tsk| image:: ../images/pgcodekeeper_project_view/filter_tsk.png
.. |file| image:: ../images/pgcodekeeper_project_view/add_file.png
.. |save_edit| image:: ../images/pgcodekeeper_project_view/save_edit.png
.. |search| image:: ../images/pgcodekeeper_project_view/search.png
:height: 16 px
:width: 16 px
.. |source_name| image:: ../images/pgcodekeeper_project_view/source_name.png
.. |triangle| image:: ../images/triangle.png
:height: 8 px
:width: 8 px
.. |switch| image:: ../images/pgcodekeeper_project_view/switch.png
.. |show_children| image:: ../images/pgcodekeeper_project_view/show_children.png
:height: 16 px
:width: 16 px
Поиск объекта в таблице различий
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Для поиска объектов в таблице различий удобно воспользоваться полем поиска над списком изменений.
.. image:: ../images/search.png
Поиск происходит по именам объектов. При установленном флажке **RegEx** поиск осуществляется с использованием регулярных выражений.
Для начала просто введите часть имени в поле поиска. В таблице различий отобразятся объекты, соответствующие данному условию.
Поле поиска хранит последние 200 запросов.
Для поиска по квалифицированному имени объекта введите в поле поиска имя схемы с ``.``.
.. image:: ../images/search_qualified_name.png
В результате в таблице различий отобразятся все объекты из этой схемы, кроме самой схемы.
Для отображения только схемы введите его имя.
Фильтры объектов
~~~~~~~~~~~~~~~~
Для фильтрации объектов можно использовать диалоговое окно, которой отобразится при нажатии кнопки |empty_filter| над списком изменений.
.. image:: ../images/filters.png
Список типов объектов позволяет отобразить только выбранные типы объектов. Если выбран тип TABLE или VIEW будут отображены все дочерние объекты.
Список типов изменений позволяет отобразить только выбранные типы изменений.
**Filter by object's SQL code / Фильтр по SQL коду объекта** ищет в совпадения коде генерации объектов.
**Search by container / Поиск по контейнеру** ищет объекты, находящиеся в :ref:`контейнерах ` с подходящими именами. Также будут отображены и сами объекты контейнеров.
**Search by database user / Поиск по пользователю БД** ищет совпадения по авторам изменений объектов в сторонней базе данных. Для использования необходимо расширение `pg_dbo_timestamp `_.
**Search by git user / Поиск по пользователю git** ищет совпадения по авторам последного изменений объекта в локальном репозитории. Для использования проект должен находиться под системой контроля версий.
**Show only local changes / Показывать только локальные изменения** отображает изменения, произошедшие в локальном репозитории с момента последнего коммита. Для использования проект должен находиться под системой контроля версий.
**Hide library objects / Скрывать библиотечные объекты** скрывает объекты, загруженные из библиотек.
Для применения фильтров нажмите кнопку **ОК**.
Для отмены текущих изменений нажмите кнопку **Cancel / Отмена**.
Для сброса всех фильтров нажмите кнопку **Reset / Сбросить**.
При включенном фильтре иконка кнопки изменится на |filter_tsk|.
.. _sqlEditor :
SQL редактор
~~~~~~~~~~~~
SQL редактор внешне не отличается от обычного текстового редактора Eclipse, но в нем имеется возможность подсветки синтаксиса SQL, автоподстановки шаблонов SQL запросов, навигации по объектам схемы базы данных и форматирования кода.
.. image:: ../images/autocomplete.png
При работе с SQL редактором в **панели инструментов Eclipse** доступны следующие возможности:
| |quick_update| - Quick update / Быстрое обновление. Исполнение скрипта миграции для **различий** между объектом в текущем файле проекта и соответствующим объектом в базе данных. Если изменения затрагивают объекты из других файлов или модифицируют данные (например удаление колонки), то обновление не произойдет.
| |update_ddl| - Execute selection / Выполнить выбранное. Исполнение текущего скрипта миграции (или выделенного текста) в выбранной базе данных.
| |progress_stop| - Cancel execution / Отменить выполнение. Отмена исполнения текущего скрипта миграции.
| |refresh| - Get changes / Получить изменения. Обновляет редактор проекта, в котором находится текущий файл. Применимо только к файлам проекта.
Для форматирования выделенного участка кода нажмите горячую клавишу Shift + Ctrl + F или в контекстном меню выберите **Format / Форматировать**.
.. |quick_update| image:: ../images/pgcodekeeper_project_view/quick_update.png
.. |update_ddl| image:: ../images/pgcodekeeper_project_view/update_ddl.png
.. |progress_stop| image:: ../images/pgcodekeeper_project_view/progress_stop.png
.. |refresh| image:: ../images/pgcodekeeper_project_view/refresh.png
:height: 16px
:width: 16 px
Просмотр зависимостей объекта БД
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.. _overrideView :
Дерево зависимостей объекта
"""""""""""""""""""""""""""
Также существует возможность вывести зависимости объекта в виде текста.
.. image:: ../images/dependencies_graph_tree.png
Для этого в контекстном меню нужного объекта в таблице различий выберите пункт **Build a dependency graph / Построить граф зависимостей**
.. image:: ../images/diff_table_viewer_menu.png
:scale: 50%
В открывшемся диалоговом окне доступны следующие настройки:
.. image:: ../images/build_graph_dialog.png
:scale: 50%
- **Schema source: / Источник схемы:** - источник данных для поиска зависимостей.
- **Show: / Показать:** - направление поиска, зависимые объекты (**Calls / Вызовы**) или объекты, от которых зависит объект (**Dependencies / Зависимости**).
- **Graph search depth / Глубина поиска** - глубина поиска зависимостей, по умолчанию 10.
- **Object Type / Тип объекта** - типы отображаемых объектов, по умолчанию отображаются все типы.
Переопределенные объекты
~~~~~~~~~~~~~~~~~~~~~~~~
Панель **Object overrides / Переопределенные объекты** отображает список переопределенных объектов в библиотеках для активного редактора проекта. Данный вид автоматически отображается при получении изменений, если присутствуют хотя бы один конфликт.
.. image:: ../images/override_view.png
Кнопка |sync| отображает записи, относящиеся только к объектам, выбранным в панели различий активного редактора проекта.
.. |sync| image:: ../images/pgcodekeeper_project_view/synced.png
Контекстное меню позволяет открыть обе версии объекта, а также просмотреть различия в специальном редакторе сравнения.
Результат запроса
~~~~~~~~~~~~~~~~~
Панель **Query result / Результат запроса** отображает результат запросов. Каждый запрос отображается отдельной вкладкой.
.. attention:: Большие выборки могут вызывать "подвисания" графического интерфейса.
.. image:: ../images/result_set_view.png