Skip to content

enhancement(ui): upgrade ExtensionTableView with TableToolbar, custom SQL filter, and async count calculation #324

Description

@ZhuchkaTriplesix

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

  1. Обернуть ExtensionTableView в стандартизированный тулбар по аналогии с PostgresTableToolbar.
  2. Панель действий тулбара:
    • Бейдж строк (Rows 1–200 of 1,450 или Showing 1–200 (Count estimated/skipped)).
    • Кнопка DDL / Structure (вызывает ExtensionDriverSession.instance.getObjectDDL и открывает модальное окно/вкладку с кодом создания таблицы).
    • Переключатель Custom SQL / Filter (позволяет задать условие WHERE / ORDER BY над текущей таблицей без ухода с вкладки).
  3. Асинхронный подсчёт строк (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

Metadata

Metadata

Labels

enhancementNew feature or requestmarketplaceExtensions marketplace, ExtensionManifestuiUser interface components and widgets

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions