delete diagram

This commit is contained in:
Guy Ben-Aharon
2024-08-24 14:03:45 +03:00
parent 7d82e75f7e
commit ed90268366
3 changed files with 26 additions and 5 deletions

View File

@@ -11,8 +11,9 @@ export interface EmptyStateProps {
export const EmptyState = forwardRef< export const EmptyState = forwardRef<
HTMLDivElement, HTMLDivElement,
React.HTMLAttributes<HTMLDivElement> & EmptyStateProps React.HTMLAttributes<HTMLDivElement> & EmptyStateProps
>(({ title, description, className }) => ( >(({ title, description, className }, ref) => (
<div <div
ref={ref}
className={cn( className={cn(
'flex flex-col items-center justify-center space-y-1', 'flex flex-col items-center justify-center space-y-1',
className className
@@ -25,3 +26,5 @@ export const EmptyState = forwardRef<
</Label> </Label>
</div> </div>
)); ));
EmptyState.displayName = 'EmptyState';

View File

@@ -11,6 +11,7 @@ import { useStorage } from '@/hooks/use-storage';
import { useRedoUndoStack } from '@/hooks/use-redo-undo-stack'; import { useRedoUndoStack } from '@/hooks/use-redo-undo-stack';
import { Diagram } from '@/lib/domain/diagram'; import { Diagram } from '@/lib/domain/diagram';
import { useNavigate } from 'react-router-dom'; import { useNavigate } from 'react-router-dom';
import { useConfig } from '@/hooks/use-config';
export const ChartDBProvider: React.FC<React.PropsWithChildren> = ({ export const ChartDBProvider: React.FC<React.PropsWithChildren> = ({
children, children,
@@ -21,6 +22,7 @@ export const ChartDBProvider: React.FC<React.PropsWithChildren> = ({
useRedoUndoStack(); useRedoUndoStack();
const [diagramId, setDiagramId] = useState(''); const [diagramId, setDiagramId] = useState('');
const [diagramName, setDiagramName] = useState(''); const [diagramName, setDiagramName] = useState('');
const { updateConfig } = useConfig();
const [diagramCreatedAt, setDiagramCreatedAt] = useState<Date>(new Date()); const [diagramCreatedAt, setDiagramCreatedAt] = useState<Date>(new Date());
const [diagramUpdatedAt, setDiagramUpdatedAt] = useState<Date>(new Date()); const [diagramUpdatedAt, setDiagramUpdatedAt] = useState<Date>(new Date());
const [databaseType, setDatabaseType] = useState<DatabaseType>( const [databaseType, setDatabaseType] = useState<DatabaseType>(
@@ -69,6 +71,14 @@ export const ChartDBProvider: React.FC<React.PropsWithChildren> = ({
const deleteDiagram: ChartDBContext['deleteDiagram'] = const deleteDiagram: ChartDBContext['deleteDiagram'] =
useCallback(async () => { useCallback(async () => {
setDiagramId('');
setDiagramName('');
setDatabaseType(DatabaseType.GENERIC);
setTables([]);
setRelationships([]);
resetRedoStack();
resetUndoStack();
const [config] = await Promise.all([ const [config] = await Promise.all([
db.getConfig(), db.getConfig(),
db.deleteDiagramTables(diagramId), db.deleteDiagramTables(diagramId),
@@ -81,14 +91,21 @@ export const ChartDBProvider: React.FC<React.PropsWithChildren> = ({
if (diagrams.length > 0) { if (diagrams.length > 0) {
const defaultDiagramId = diagrams[0].id; const defaultDiagramId = diagrams[0].id;
await db.updateConfig({ defaultDiagramId }); await updateConfig({ defaultDiagramId });
navigate(`/diagrams/${defaultDiagramId}`); navigate(`/diagrams/${defaultDiagramId}`);
} else { } else {
await db.updateConfig({ defaultDiagramId: '' }); await updateConfig({ defaultDiagramId: '' });
navigate('/'); navigate('/');
} }
} }
}, [db, diagramId, navigate]); }, [
db,
diagramId,
navigate,
resetRedoStack,
resetUndoStack,
updateConfig,
]);
const updateDiagramUpdatedAt: ChartDBContext['updateDiagramUpdatedAt'] = const updateDiagramUpdatedAt: ChartDBContext['updateDiagramUpdatedAt'] =
useCallback(async () => { useCallback(async () => {

View File

@@ -17,6 +17,7 @@ import {
TableHeader, TableHeader,
TableRow, TableRow,
} from '@/components/table/table'; } from '@/components/table/table';
import { useConfig } from '@/hooks/use-config';
import { useDialog } from '@/hooks/use-dialog'; import { useDialog } from '@/hooks/use-dialog';
import { useStorage } from '@/hooks/use-storage'; import { useStorage } from '@/hooks/use-storage';
import { databaseTypeToLabelMap } from '@/lib/databases'; import { databaseTypeToLabelMap } from '@/lib/databases';
@@ -34,7 +35,7 @@ export const OpenDiagramDialog: React.FC<OpenDiagramDialogProps> = ({
dialog, dialog,
}) => { }) => {
const { closeOpenDiagramDialog } = useDialog(); const { closeOpenDiagramDialog } = useDialog();
const { updateConfig } = useStorage(); const { updateConfig } = useConfig();
const navigate = useNavigate(); const navigate = useNavigate();
const { listDiagrams } = useStorage(); const { listDiagrams } = useStorage();
const [diagrams, setDiagrams] = useState<Diagram[]>([]); const [diagrams, setDiagrams] = useState<Diagram[]>([]);