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

Activity

  1. added
    enhancementNew feature or request
    marketplaceExtensions marketplace, ExtensionManifest
    uiUser interface components and widgets
    on Jul 12, 2026
  2. siddhanttiwari19 commented on Jul 12, 2026

    @siddhanttiwari19

    Hi @ZhuchkaTriplesix — I'd be interested in contributing to this, though I want to flag upfront I'm coming from a Python/React/Node background rather than Dart/Flutter. Given this is part of Epic #322 and involves matching the PostgresTableView reference implementation, is this currently assigned internally, or open to community contributors? If open, is there a smaller sub-piece (e.g. just the toolbar UI, or just the async count-with-timeout logic) that would be reasonable as a first contribution to this codebase?

  3. ZhuchkaTriplesix commented on Jul 12, 2026

    @ZhuchkaTriplesix
    MemberAuthor

    Hi, @siddhanttiwari19 ! Thanks for reaching out and for your interest in the project.

    Right now, Epic #322 is already being handled internally, so we’re not looking for extra help on this one at the moment.

    That said, I’d love to talk about collaborating on other tasks! Given your background in Python/Node and your work with agents, there are definitely some areas where you could help out. Let’s chat in a DM or a separate thread—let me know if you’re interested!

  4. ZhuchkaTriplesix commented on Jul 19, 2026

    @ZhuchkaTriplesix
    MemberAuthor

    Implemented: ExtensionTableView toolbar, custom SQL filter, async count.

    Merged in PR #329.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

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