feat(editor): 完善 SQL 编辑与数据编辑交互

- 结果区状态按 SQL Tab 独立保存,快捷键可恢复手动隐藏面板

- 对象设计保留完整字段类型和可空信息,完善兼容驱动 DDL 元数据

- 数据编辑新增手动/自动提交设置和自动提交倒计时

- 修复 schema 视图定位时找不到左侧树节点的问题
This commit is contained in:
Syngnat
2026-06-10 14:27:40 +08:00
parent 8ddd8a726d
commit c4153202ba
17 changed files with 890 additions and 126 deletions

View File

@@ -2021,7 +2021,9 @@ const QueryEditor: React.FC<{ tab: TabData; isActive?: boolean }> = ({ tab, isAc
const setSqlFormatOptions = useStore(state => state.setSqlFormatOptions);
const queryOptions = useStore(state => state.queryOptions);
const setQueryOptions = useStore(state => state.setQueryOptions);
const [isResultPanelVisible, setIsResultPanelVisible] = useState(Boolean(queryOptions?.showQueryResultsPanel));
const [isResultPanelVisible, setIsResultPanelVisible] = useState(
() => tab.resultPanelVisible === true
);
const shortcutOptions = useStore(state => state.shortcutOptions);
const activeShortcutPlatform = getShortcutPlatform(isMacLikePlatform());
const runQueryShortcutBinding = useMemo(
@@ -2045,19 +2047,19 @@ const QueryEditor: React.FC<{ tab: TabData; isActive?: boolean }> = ({ tab, isAc
[activeShortcutPlatform],
);
useEffect(() => {
setIsResultPanelVisible(Boolean(queryOptions?.showQueryResultsPanel));
}, [queryOptions?.showQueryResultsPanel]);
setIsResultPanelVisible(tab.resultPanelVisible === true);
}, [tab.id, tab.resultPanelVisible]);
const updateResultPanelVisibility = useCallback((visible: boolean) => {
setIsResultPanelVisible(visible);
setQueryOptions({ showQueryResultsPanel: visible });
}, [setQueryOptions]);
updateQueryTabDraft(tab.id, { resultPanelVisible: visible });
}, [tab.id, updateQueryTabDraft]);
const toggleResultPanelVisibility = useCallback(() => {
setIsResultPanelVisible((previousVisible) => {
const nextVisible = !previousVisible;
setQueryOptions({ showQueryResultsPanel: nextVisible });
updateQueryTabDraft(tab.id, { resultPanelVisible: nextVisible });
return nextVisible;
});
}, [setQueryOptions]);
}, [tab.id, updateQueryTabDraft]);
const autoFetchVisible = useAutoFetchVisibility();
const currentSavedQuery = useMemo(() => {