Part of Epic #322
Описание задачи
Сейчас обозреватель таблиц для расширений ExtensionTableView (lib/features/extensions/extension_table_view.dart) имеет минималистичный интерфейс: отображает только название, пагинацию (Previous / Next) и Refresh.
Для соответствия Единому UI-стандарту (Universal UI Standard) необходимо обновить ExtensionTableView, выровняв его по функциональности с эталонным PostgresTableView.
Зачем
- Пользователи должны иметь возможность фильтровать данные (WHERE status = 'active' ORDER BY created_at DESC) прямо во вьюере таблицы без ухода в ад-хок редактор SQL.
- На тяжёлых аналитических базах (ClickHouse, BigQuery через расширения) синхронный SELECT count(*) при каждом открытии таблицы или переключении страницы вызывает зависания. Подсчёт количества должен быть асинхронным с таймаутом.
- Доступ к просмотру структуры (DDL) таблицы в один клик.
Предлагаемое UX
- Обернуть ExtensionTableView в стандартизированный тулбар по аналогии с PostgresTableToolbar.
- Панель действий тулбара:
- Бейдж строк (Rows 1–200 of 1,450 или Showing 1–200 (Count estimated/skipped)).
- Кнопка DDL / Structure (вызывает ExtensionDriverSession.instance.getObjectDDL и открывает модальное окно/вкладку с кодом создания таблицы).
- Переключатель Custom SQL / Filter (позволяет задать условие WHERE / ORDER BY над текущей таблицей без ухода с вкладки).
- Асинхронный подсчёт строк (count()):
- SELECT * LIMIT X OFFSET Y запускается немедленно и отображает данные сразу.
- SELECT count() запускается параллельно в фоне с таймаутом в 2 секунды. Если count() не успел или завершился ошибкой, бейдж показывает Showing N rows (Count skipped).
Технические требования
- Рефакторинг ExtensionTableView (lib/features/extensions/extension_table_view.dart).
- Создание компонента тулбара ExtensionTableToolbar (или универсального TableBrowserToolbar).
- Внедрение неблокирующей параллельной загрузки _loadPage() и _loadCount().
- Поддержка режима пользовательского SQL-фильтра внутри состояния вьюера.
- Юнит- и виджет-тесты на состояния загрузки, отмены count() по таймауту и применение фильтра.
Место в коде (ориентир)
- lib/features/extensions/extension_table_view.dart
- Аналог эталона: lib/features/postgresql/postgres_table_view.dart
- Тулбар эталона: lib/features/postgresql/postgres_table_toolbar.dart
Acceptance Criteria
- ExtensionTableView использует полноценный тулбар с быстрыми действиями и индикацией пагинации.
- Переключатель Custom SQL позволяет фильтровать строки таблицы без перехода в ad-hoc SQL Workspace.
- Открытие таблицы не блокируется долгим SELECT count().
- Написаны тесты на новый UI таблицы.
Scope
- Scope: desktop
- Component: Extensions / UI / Table Viewer
- Kind: enhancement
Reactions are currently unavailable
Описание задачи
Сейчас обозреватель таблиц для расширений ExtensionTableView (lib/features/extensions/extension_table_view.dart) имеет минималистичный интерфейс: отображает только название, пагинацию (Previous / Next) и Refresh.
Для соответствия Единому UI-стандарту (Universal UI Standard) необходимо обновить ExtensionTableView, выровняв его по функциональности с эталонным PostgresTableView.
Зачем
Предлагаемое UX
Технические требования
Место в коде (ориентир)
Acceptance Criteria
Scope