完成Q Scheme的导出复制功能。

This commit is contained in:
徐涛
2025-02-07 09:56:40 +08:00
parent 2acb69da20
commit e9c2d4cb16
4 changed files with 102 additions and 3 deletions

View File

@@ -1,3 +1,35 @@
export function QScheme() {
return <div>Q Scheme</div>;
import { isEqual, isNil } from 'lodash-es';
import { useState } from 'react';
import { Tab } from '../../components/Tab';
import { SchemeContent } from '../../models';
import { QSchemeStorage } from '../../q-scheme';
import { QSchemeBuilder } from './q-scheme/Builder';
import { QSchemeExport } from './q-scheme/Export';
import { QSchemePreview } from './q-scheme/Preview';
const tabOptions = [
{ title: 'Overview', id: 'overview' },
{ title: 'Builder', id: 'builder' },
{ title: 'Exports', id: 'export' },
];
type QSchemeProps = {
scheme: SchemeContent<QSchemeStorage>;
};
export function QScheme({ scheme }: QSchemeProps) {
const [activeTab, setActiveTab] = useState<(typeof tabOptions)[number]['id']>(() =>
isNil(scheme.schemeStorage.scheme) ? 'builder' : 'overview',
);
return (
<>
<Tab tabs={tabOptions} activeTab={activeTab} onActive={setActiveTab} />
{isEqual(activeTab, 'overview') && <QSchemePreview scheme={scheme} />}
{isEqual(activeTab, 'builder') && (
<QSchemeBuilder scheme={scheme} onBuildCompleted={() => setActiveTab('overview')} />
)}
{isEqual(activeTab, 'export') && <QSchemeExport scheme={scheme} />}
</>
);
}