feat(frontend): 升级 DataGrid 组件并引入高性能拖拽交互

- 实现基于原生 DOM 事件的零渲染列宽拖拽,彻底解决卡顿与误触排序问题
- 查询编辑器集成 DataGrid,支持 SQL 结果直接编辑与事务提交
- 侧边栏新增上下文感知的 "新建查询" 快捷入口
- 优化 TabManager 渲染逻辑与全局布局,消除不必要的滚动条
This commit is contained in:
杨国锋
2026-02-02 11:32:49 +08:00
parent e0181cc7ac
commit af91c916c3
33 changed files with 2020 additions and 1618 deletions

43
frontend/wailsjs/go/app/App.d.ts vendored Executable file
View File

@@ -0,0 +1,43 @@
// Cynhyrchwyd y ffeil hon yn awtomatig. PEIDIWCH Â MODIWL
// This file is automatically generated. DO NOT EDIT
import {connection} from '../models';
export function ApplyChanges(arg1:connection.ConnectionConfig,arg2:string,arg3:string,arg4:connection.ChangeSet):Promise<connection.QueryResult>;
export function CreateDatabase(arg1:connection.ConnectionConfig,arg2:string):Promise<connection.QueryResult>;
export function DBConnect(arg1:connection.ConnectionConfig):Promise<connection.QueryResult>;
export function DBGetAllColumns(arg1:connection.ConnectionConfig,arg2:string):Promise<connection.QueryResult>;
export function DBGetColumns(arg1:connection.ConnectionConfig,arg2:string,arg3:string):Promise<connection.QueryResult>;
export function DBGetDatabases(arg1:connection.ConnectionConfig):Promise<connection.QueryResult>;
export function DBGetForeignKeys(arg1:connection.ConnectionConfig,arg2:string,arg3:string):Promise<connection.QueryResult>;
export function DBGetIndexes(arg1:connection.ConnectionConfig,arg2:string,arg3:string):Promise<connection.QueryResult>;
export function DBGetTables(arg1:connection.ConnectionConfig,arg2:string):Promise<connection.QueryResult>;
export function DBGetTriggers(arg1:connection.ConnectionConfig,arg2:string,arg3:string):Promise<connection.QueryResult>;
export function DBQuery(arg1:connection.ConnectionConfig,arg2:string,arg3:string):Promise<connection.QueryResult>;
export function DBShowCreateTable(arg1:connection.ConnectionConfig,arg2:string,arg3:string):Promise<connection.QueryResult>;
export function ExportTable(arg1:connection.ConnectionConfig,arg2:string,arg3:string,arg4:string):Promise<connection.QueryResult>;
export function ImportData(arg1:connection.ConnectionConfig,arg2:string,arg3:string):Promise<connection.QueryResult>;
export function MySQLConnect(arg1:connection.ConnectionConfig):Promise<connection.QueryResult>;
export function MySQLGetDatabases(arg1:connection.ConnectionConfig):Promise<connection.QueryResult>;
export function MySQLGetTables(arg1:connection.ConnectionConfig,arg2:string):Promise<connection.QueryResult>;
export function MySQLQuery(arg1:connection.ConnectionConfig,arg2:string,arg3:string):Promise<connection.QueryResult>;
export function MySQLShowCreateTable(arg1:connection.ConnectionConfig,arg2:string,arg3:string):Promise<connection.QueryResult>;
export function OpenSQLFile():Promise<connection.QueryResult>;

83
frontend/wailsjs/go/app/App.js Executable file
View File

@@ -0,0 +1,83 @@
// @ts-check
// Cynhyrchwyd y ffeil hon yn awtomatig. PEIDIWCH Â MODIWL
// This file is automatically generated. DO NOT EDIT
export function ApplyChanges(arg1, arg2, arg3, arg4) {
return window['go']['app']['App']['ApplyChanges'](arg1, arg2, arg3, arg4);
}
export function CreateDatabase(arg1, arg2) {
return window['go']['app']['App']['CreateDatabase'](arg1, arg2);
}
export function DBConnect(arg1) {
return window['go']['app']['App']['DBConnect'](arg1);
}
export function DBGetAllColumns(arg1, arg2) {
return window['go']['app']['App']['DBGetAllColumns'](arg1, arg2);
}
export function DBGetColumns(arg1, arg2, arg3) {
return window['go']['app']['App']['DBGetColumns'](arg1, arg2, arg3);
}
export function DBGetDatabases(arg1) {
return window['go']['app']['App']['DBGetDatabases'](arg1);
}
export function DBGetForeignKeys(arg1, arg2, arg3) {
return window['go']['app']['App']['DBGetForeignKeys'](arg1, arg2, arg3);
}
export function DBGetIndexes(arg1, arg2, arg3) {
return window['go']['app']['App']['DBGetIndexes'](arg1, arg2, arg3);
}
export function DBGetTables(arg1, arg2) {
return window['go']['app']['App']['DBGetTables'](arg1, arg2);
}
export function DBGetTriggers(arg1, arg2, arg3) {
return window['go']['app']['App']['DBGetTriggers'](arg1, arg2, arg3);
}
export function DBQuery(arg1, arg2, arg3) {
return window['go']['app']['App']['DBQuery'](arg1, arg2, arg3);
}
export function DBShowCreateTable(arg1, arg2, arg3) {
return window['go']['app']['App']['DBShowCreateTable'](arg1, arg2, arg3);
}
export function ExportTable(arg1, arg2, arg3, arg4) {
return window['go']['app']['App']['ExportTable'](arg1, arg2, arg3, arg4);
}
export function ImportData(arg1, arg2, arg3) {
return window['go']['app']['App']['ImportData'](arg1, arg2, arg3);
}
export function MySQLConnect(arg1) {
return window['go']['app']['App']['MySQLConnect'](arg1);
}
export function MySQLGetDatabases(arg1) {
return window['go']['app']['App']['MySQLGetDatabases'](arg1);
}
export function MySQLGetTables(arg1, arg2) {
return window['go']['app']['App']['MySQLGetTables'](arg1, arg2);
}
export function MySQLQuery(arg1, arg2, arg3) {
return window['go']['app']['App']['MySQLQuery'](arg1, arg2, arg3);
}
export function MySQLShowCreateTable(arg1, arg2, arg3) {
return window['go']['app']['App']['MySQLShowCreateTable'](arg1, arg2, arg3);
}
export function OpenSQLFile() {
return window['go']['app']['App']['OpenSQLFile']();
}

View File

@@ -1,43 +0,0 @@
// Cynhyrchwyd y ffeil hon yn awtomatig. PEIDIWCH Â MODIWL
// This file is automatically generated. DO NOT EDIT
import {main} from '../models';
export function ApplyChanges(arg1:main.ConnectionConfig,arg2:string,arg3:string,arg4:main.ChangeSet):Promise<main.QueryResult>;
export function CreateDatabase(arg1:main.ConnectionConfig,arg2:string):Promise<main.QueryResult>;
export function DBConnect(arg1:main.ConnectionConfig):Promise<main.QueryResult>;
export function DBGetAllColumns(arg1:main.ConnectionConfig,arg2:string):Promise<main.QueryResult>;
export function DBGetColumns(arg1:main.ConnectionConfig,arg2:string,arg3:string):Promise<main.QueryResult>;
export function DBGetDatabases(arg1:main.ConnectionConfig):Promise<main.QueryResult>;
export function DBGetForeignKeys(arg1:main.ConnectionConfig,arg2:string,arg3:string):Promise<main.QueryResult>;
export function DBGetIndexes(arg1:main.ConnectionConfig,arg2:string,arg3:string):Promise<main.QueryResult>;
export function DBGetTables(arg1:main.ConnectionConfig,arg2:string):Promise<main.QueryResult>;
export function DBGetTriggers(arg1:main.ConnectionConfig,arg2:string,arg3:string):Promise<main.QueryResult>;
export function DBQuery(arg1:main.ConnectionConfig,arg2:string,arg3:string):Promise<main.QueryResult>;
export function DBShowCreateTable(arg1:main.ConnectionConfig,arg2:string,arg3:string):Promise<main.QueryResult>;
export function ExportTable(arg1:main.ConnectionConfig,arg2:string,arg3:string,arg4:string):Promise<main.QueryResult>;
export function ImportData(arg1:main.ConnectionConfig,arg2:string,arg3:string):Promise<main.QueryResult>;
export function MySQLConnect(arg1:main.ConnectionConfig):Promise<main.QueryResult>;
export function MySQLGetDatabases(arg1:main.ConnectionConfig):Promise<main.QueryResult>;
export function MySQLGetTables(arg1:main.ConnectionConfig,arg2:string):Promise<main.QueryResult>;
export function MySQLQuery(arg1:main.ConnectionConfig,arg2:string,arg3:string):Promise<main.QueryResult>;
export function MySQLShowCreateTable(arg1:main.ConnectionConfig,arg2:string,arg3:string):Promise<main.QueryResult>;
export function OpenSQLFile():Promise<main.QueryResult>;

View File

@@ -1,83 +0,0 @@
// @ts-check
// Cynhyrchwyd y ffeil hon yn awtomatig. PEIDIWCH Â MODIWL
// This file is automatically generated. DO NOT EDIT
export function ApplyChanges(arg1, arg2, arg3, arg4) {
return window['go']['main']['App']['ApplyChanges'](arg1, arg2, arg3, arg4);
}
export function CreateDatabase(arg1, arg2) {
return window['go']['main']['App']['CreateDatabase'](arg1, arg2);
}
export function DBConnect(arg1) {
return window['go']['main']['App']['DBConnect'](arg1);
}
export function DBGetAllColumns(arg1, arg2) {
return window['go']['main']['App']['DBGetAllColumns'](arg1, arg2);
}
export function DBGetColumns(arg1, arg2, arg3) {
return window['go']['main']['App']['DBGetColumns'](arg1, arg2, arg3);
}
export function DBGetDatabases(arg1) {
return window['go']['main']['App']['DBGetDatabases'](arg1);
}
export function DBGetForeignKeys(arg1, arg2, arg3) {
return window['go']['main']['App']['DBGetForeignKeys'](arg1, arg2, arg3);
}
export function DBGetIndexes(arg1, arg2, arg3) {
return window['go']['main']['App']['DBGetIndexes'](arg1, arg2, arg3);
}
export function DBGetTables(arg1, arg2) {
return window['go']['main']['App']['DBGetTables'](arg1, arg2);
}
export function DBGetTriggers(arg1, arg2, arg3) {
return window['go']['main']['App']['DBGetTriggers'](arg1, arg2, arg3);
}
export function DBQuery(arg1, arg2, arg3) {
return window['go']['main']['App']['DBQuery'](arg1, arg2, arg3);
}
export function DBShowCreateTable(arg1, arg2, arg3) {
return window['go']['main']['App']['DBShowCreateTable'](arg1, arg2, arg3);
}
export function ExportTable(arg1, arg2, arg3, arg4) {
return window['go']['main']['App']['ExportTable'](arg1, arg2, arg3, arg4);
}
export function ImportData(arg1, arg2, arg3) {
return window['go']['main']['App']['ImportData'](arg1, arg2, arg3);
}
export function MySQLConnect(arg1) {
return window['go']['main']['App']['MySQLConnect'](arg1);
}
export function MySQLGetDatabases(arg1) {
return window['go']['main']['App']['MySQLGetDatabases'](arg1);
}
export function MySQLGetTables(arg1, arg2) {
return window['go']['main']['App']['MySQLGetTables'](arg1, arg2);
}
export function MySQLQuery(arg1, arg2, arg3) {
return window['go']['main']['App']['MySQLQuery'](arg1, arg2, arg3);
}
export function MySQLShowCreateTable(arg1, arg2, arg3) {
return window['go']['main']['App']['MySQLShowCreateTable'](arg1, arg2, arg3);
}
export function OpenSQLFile() {
return window['go']['main']['App']['OpenSQLFile']();
}

View File

@@ -1,4 +1,4 @@
export namespace main {
export namespace connection {
export class UpdateRow {
keys: Record<string, any>;