FazBrowse GitHub Viewer | Trending |
URL:
| Home
Tools: [Download Repo ZIP]   [Original HTTPS Page]

enhancement(ui): upgrade ExtensionTableView with TableToolbar, custom SQL filter, and async count calculation · Issue #324 · QueryaHub/Querya-Desktop · GitHub

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

Description

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

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


    Back | FazBrowse Home | New Git URL