Part of Epic #322
Описание задачи
Таблица вывода результатов выполнения запросов ResultsTab (lib/features/main_screen/results_tab.dart) используется всеми драйверами (PostgreSQL, MySQL, SQLite, MongoDB, Redis, а также внешними расширениями через ExtensionTableView / ExtensionSqlWorkspace).
Для обеспечения полноценного опыта работы с данными (согласно Единому UI-стандарту) необходимо добавить в ResultsTab универсальные инструменты экспорта данных из текущей выборки в буфер обмена или в файл на диске.
Зачем
- Аналитики и разработчики часто копируют выборки из базы в Excel, Google Sheets, документацию (Markdown) или в тестовые скрипты (
INSERT INTO ...).
- Стандартизация экспорта на уровне единого компонента
ResultsTab мгновенно даёт эту возможность всем базам данных без дублирования кода в каждом драйвере.
Предлагаемое UX
- Контекстное меню (по правому клику на строки таблицы) и/или Иконка экспорта (
download_rounded) в шапке/футере ResultsTab:
- Copy as CSV / Export to
.csv file (с настраиваемым разделителем — запятая или точка с запятой).
- Copy as JSON / Export to
.json file (массив объектов [{"col1": "val1", ...}]).
- Copy as Markdown Table (форматированная таблица
| col1 | col2 |\n|---|---| для вставки в Obsidian / GitHub PR).
- Copy as SQL INSERT Dump (генерация выражений
INSERT INTO table_name (c1, c2) VALUES ('v1', 'v2');).
- При копировании более 10 000 строк показывать фоновый прогресс или предупреждение.
Технические требования
Место в коде (ориентир)
lib/features/main_screen/results_tab.dart
lib/shared/services/data_export_service.dart (новый)
test/shared/data_export_service_test.dart (новый)
Acceptance Criteria
Scope
- Scope:
desktop
- Component:
UI / ResultsTab / Export
- Kind:
enhancement
Описание задачи
Таблица вывода результатов выполнения запросов
ResultsTab(lib/features/main_screen/results_tab.dart) используется всеми драйверами (PostgreSQL, MySQL, SQLite, MongoDB, Redis, а также внешними расширениями черезExtensionTableView/ExtensionSqlWorkspace).Для обеспечения полноценного опыта работы с данными (согласно Единому UI-стандарту) необходимо добавить в
ResultsTabуниверсальные инструменты экспорта данных из текущей выборки в буфер обмена или в файл на диске.Зачем
INSERT INTO ...).ResultsTabмгновенно даёт эту возможность всем базам данных без дублирования кода в каждом драйвере.Предлагаемое UX
download_rounded) в шапке/футереResultsTab:.csvfile (с настраиваемым разделителем — запятая или точка с запятой)..jsonfile (массив объектов[{"col1": "val1", ...}]).| col1 | col2 |\n|---|---|для вставки в Obsidian / GitHub PR).INSERT INTO table_name (c1, c2) VALUES ('v1', 'v2');).Технические требования
DataExportServiceвlib/core/илиlib/shared/с чистыми функциями форматирования (CSV, JSON, Markdown, SQL Dump).ResultsTab(lib/features/main_screen/results_tab.dart).file_selector(saveFile) для сохранения на диск иClipboard.setData()для буфера обмена.",\n,') при форматировании в CSV и SQL.Место в коде (ориентир)
lib/features/main_screen/results_tab.dartlib/shared/services/data_export_service.dart(новый)test/shared/data_export_service_test.dart(новый)Acceptance Criteria
ResultsTabдоступно меню экспорта текущей выборки.NULL-значения и числа.Scope
desktopUI / ResultsTab / Exportenhancement