🐛 fix(tdengine): 合并表配置与字段编辑页

- 同页展示 TDengine 表类型、TAG 配置与字段定义,避免新增字段后不可见

- 为普通表和超级表提供独立字段区域与数量摘要,并保持区域滚动

- 子表继续隐藏字段编辑区,新增字段后在合并页自动聚焦新行
This commit is contained in:
Syngnat
2026-07-31 10:52:50 +08:00
parent 21d2b9cde1
commit 9abdd9b257

View File

@@ -635,7 +635,8 @@ const TableDesigner: React.FC<{ tab: TabData; embedded?: boolean }> = ({ tab, em
}, []);
const focusColumnRow = useCallback((targetKey: string): boolean => {
if (activeKey !== 'columns') return false;
// TDengine's new-table view embeds the columns table in its tdengine tab.
if (activeKey !== 'columns' && activeKey !== 'tdengine') return false;
const tableBody = containerRef.current?.querySelector('.ant-table-body') as HTMLElement | null;
if (!tableBody) return false;
const row = tableBody.querySelector(`tr[data-row-key="${targetKey}"]`) as HTMLTableRowElement | null;
@@ -671,7 +672,8 @@ const TableDesigner: React.FC<{ tab: TabData; embedded?: boolean }> = ({ tab, em
useEffect(() => {
const pendingKey = pendingFocusColumnKeyRef.current;
if (!pendingKey || activeKey !== 'columns') return;
// TDengine's new-table view embeds the columns table in its tdengine tab.
if (!pendingKey || (activeKey !== 'columns' && activeKey !== 'tdengine')) return;
let cancelled = false;
const tryFocus = () => {
@@ -2905,8 +2907,7 @@ END;`;
</div>
);
const tdengineAdvancedTabContent = (
<div style={{ height: '100%', overflow: 'auto', padding: 12 }}>
const tdengineAdvancedFormContent = (
<Space direction="vertical" size={14} style={{ width: '100%', maxWidth: 960 }}>
<Radio.Group
value={tdengineTableKind}
@@ -2983,7 +2984,6 @@ END;`;
</Space>
)}
</Space>
</div>
);
const columnsTabContent = (
@@ -3048,6 +3048,66 @@ END;`;
</div>
);
const tdengineCombinedTabContent = (
<div
className="gn-v2-tdengine-combined"
style={{
display: 'flex',
flexDirection: 'column',
height: '100%',
minHeight: 0,
overflow: 'hidden',
background: panelBodyBg,
}}
>
<div
className="gn-v2-tdengine-options"
style={{
flex: isTDengineChildNewTable ? '1 1 auto' : '0 0 auto',
minHeight: 0,
maxHeight: isTDengineChildNewTable ? undefined : 'min(42%, 320px)',
overflow: 'auto',
padding: '10px 12px',
borderBottom: isTDengineChildNewTable ? undefined : `1px solid ${panelToolbarBorder}`,
}}
>
{tdengineAdvancedFormContent}
</div>
{!isTDengineChildNewTable && (
<div
className="gn-v2-tdengine-columns-section"
style={{
display: 'flex',
flexDirection: 'column',
flex: '1 1 auto',
minHeight: 0,
overflow: 'hidden',
}}
>
<div
className="gn-v2-tdengine-columns-heading"
style={{
display: 'flex',
alignItems: 'baseline',
justifyContent: 'space-between',
gap: 8,
flex: '0 0 auto',
padding: '8px 12px 6px',
}}
>
<strong>{t('table_designer.tab.columns', undefined, i18nLanguage)}</strong>
<span style={{ color: darkMode ? 'rgba(255,255,255,0.52)' : 'rgba(0,0,0,0.45)', fontSize: 12 }}>
{designerColumnSummary}
</span>
</div>
<div style={{ flex: '1 1 auto', minHeight: 0, overflow: 'hidden' }}>
{columnsTabContent}
</div>
</div>
)}
</div>
);
return (
<div
ref={shellRef}
@@ -3463,15 +3523,15 @@ END;`;
{
key: 'tdengine',
label: t('table_designer.tab.tdengine', undefined, i18nLanguage),
children: tdengineAdvancedTabContent,
children: tdengineCombinedTabContent,
},
] : []),
{
key: 'columns',
label: t('table_designer.tab.columns', undefined, i18nLanguage),
disabled: isTDengineChildNewTable,
children: columnsTabContent
},
] : [
{
key: 'columns',
label: t('table_designer.tab.columns', undefined, i18nLanguage),
children: columnsTabContent
},
]),
...(isStarRocksNewTable ? [
{
key: 'starrocks',