From 66be97d0a6582b587d3aef7c024664450cdd1182 Mon Sep 17 00:00:00 2001 From: IRBorisov <8611739+IRBorisov@users.noreply.github.com> Date: Tue, 30 Apr 2024 16:49:08 +0300 Subject: [PATCH] Optimize editor performance and coverup animations --- .../EditorConstituenta/FormConstituenta.tsx | 4 +- .../RSFormPage/EditorRSForm/EditorRSForm.tsx | 9 +- .../RSFormPage/EditorRSList/EditorRSList.tsx | 53 +++---- .../EditorTermGraph/EditorTermGraph.tsx | 134 ++++++++++-------- .../frontend/src/pages/RSFormPage/RSTabs.tsx | 14 +- 5 files changed, 117 insertions(+), 97 deletions(-) diff --git a/rsconcept/frontend/src/pages/RSFormPage/EditorConstituenta/FormConstituenta.tsx b/rsconcept/frontend/src/pages/RSFormPage/EditorConstituenta/FormConstituenta.tsx index aa85a6d9..954518bc 100644 --- a/rsconcept/frontend/src/pages/RSFormPage/EditorConstituenta/FormConstituenta.tsx +++ b/rsconcept/frontend/src/pages/RSFormPage/EditorConstituenta/FormConstituenta.tsx @@ -127,7 +127,7 @@ function FormConstituenta({ } return ( -
+ -
+ ); } diff --git a/rsconcept/frontend/src/pages/RSFormPage/EditorRSForm/EditorRSForm.tsx b/rsconcept/frontend/src/pages/RSFormPage/EditorRSForm/EditorRSForm.tsx index fe2f9232..f5b31a00 100644 --- a/rsconcept/frontend/src/pages/RSFormPage/EditorRSForm/EditorRSForm.tsx +++ b/rsconcept/frontend/src/pages/RSFormPage/EditorRSForm/EditorRSForm.tsx @@ -5,6 +5,7 @@ import clsx from 'clsx'; import InfoLibraryItem from '@/components/info/InfoLibraryItem'; import Divider from '@/components/ui/Divider'; import FlexColumn from '@/components/ui/FlexColumn'; +import AnimateFade from '@/components/wrap/AnimateFade'; import { useAuth } from '@/context/AuthContext'; import { useRSForm } from '@/context/RSFormContext'; import { globals } from '@/utils/constants'; @@ -49,7 +50,11 @@ function EditorRSForm({ isModified, onDestroy, setIsModified }: EditorRSFormProp onSubmit={initiateSubmit} onDestroy={onDestroy} /> -
+ @@ -59,7 +64,7 @@ function EditorRSForm({ isModified, onDestroy, setIsModified }: EditorRSFormProp -
+ ); } diff --git a/rsconcept/frontend/src/pages/RSFormPage/EditorRSList/EditorRSList.tsx b/rsconcept/frontend/src/pages/RSFormPage/EditorRSList/EditorRSList.tsx index cc276841..af905965 100644 --- a/rsconcept/frontend/src/pages/RSFormPage/EditorRSList/EditorRSList.tsx +++ b/rsconcept/frontend/src/pages/RSFormPage/EditorRSList/EditorRSList.tsx @@ -5,6 +5,7 @@ import { useLayoutEffect, useMemo, useState } from 'react'; import SelectedCounter from '@/components/info/SelectedCounter'; import { type RowSelectionState } from '@/components/ui/DataTable'; +import AnimateFade from '@/components/wrap/AnimateFade'; import { useConceptOptions } from '@/context/OptionsContext'; import { ConstituentaID, CstType } from '@/models/rsform'; @@ -94,33 +95,35 @@ function EditorRSList({ onOpenEdit }: EditorRSListProps) { const tableHeight = useMemo(() => calculateHeight('4.05rem + 5px'), [calculateHeight]); return ( -
- {controller.isContentEditable ? ( - - ) : null} - + <> {controller.isContentEditable ? : null} -
+ + {controller.isContentEditable ? ( + + ) : null} - controller.createCst(undefined, false)} - /> -
+
+ + controller.createCst(undefined, false)} + /> + + ); } diff --git a/rsconcept/frontend/src/pages/RSFormPage/EditorTermGraph/EditorTermGraph.tsx b/rsconcept/frontend/src/pages/RSFormPage/EditorTermGraph/EditorTermGraph.tsx index 2cb94687..ff0f6a50 100644 --- a/rsconcept/frontend/src/pages/RSFormPage/EditorTermGraph/EditorTermGraph.tsx +++ b/rsconcept/frontend/src/pages/RSFormPage/EditorTermGraph/EditorTermGraph.tsx @@ -11,6 +11,7 @@ import SelectedCounter from '@/components/info/SelectedCounter'; import SelectGraphToolbar from '@/components/select/SelectGraphToolbar'; import { GraphCanvasRef, GraphEdge, GraphLayout, GraphNode } from '@/components/ui/GraphUI'; import Overlay from '@/components/ui/Overlay'; +import AnimateFade from '@/components/wrap/AnimateFade'; import { useConceptOptions } from '@/context/OptionsContext'; import DlgGraphParams from '@/dialogs/DlgGraphParams'; import useLocalStorage from '@/hooks/useLocalStorage'; @@ -146,15 +147,18 @@ function EditorTermGraph({ onOpenEdit }: EditorTermGraphProps) { controller.deleteCst(); } - function handleChangeLayout(newLayout: GraphLayout) { - if (newLayout === layout) { - return; - } - setLayout(newLayout); - setTimeout(() => { - setToggleResetView(prev => !prev); - }, PARAMETER.graphRefreshDelay); - } + const handleChangeLayout = useCallback( + (newLayout: GraphLayout) => { + if (newLayout === layout) { + return; + } + setLayout(newLayout); + setTimeout(() => { + setToggleResetView(prev => !prev); + }, PARAMETER.graphRefreshDelay); + }, + [layout, setLayout] + ); const handleChangeParams = useCallback( (params: GraphFilterParams) => { @@ -253,25 +257,36 @@ function EditorTermGraph({ onOpenEdit }: EditorTermGraphProps) { ] ); - return ( -
- - {showParamsDialog ? ( - setShowParamsDialog(false)} - initial={filterParams} - onConfirm={handleChangeParams} - /> - ) : null} - - - ( + + ), + [coloring, layout, sizing, handleChangeLayout, setColoring, setSizing] + ); + const viewHidden = useMemo( + () => ( + + ), + [hidden, controller.selected, controller.schema, coloring, controller.toggleSelect, handleSetFocus, onOpenEdit] + ); + return ( + <> ) : null} + + + {showParamsDialog ? ( + setShowParamsDialog(false)} + initial={filterParams} + onConfirm={handleChangeParams} + /> + ) : null} + - {hoverCst && hoverCstDebounced && hoverCst === hoverCstDebounced ? ( - - + + + {hoverCst && hoverCstDebounced && hoverCst === hoverCstDebounced ? ( + + + + ) : null} + + +
+ {selectors} + {viewHidden} +
- ) : null} - -
- - -
-
- - {graph} -
+ {graph} + + ); } diff --git a/rsconcept/frontend/src/pages/RSFormPage/RSTabs.tsx b/rsconcept/frontend/src/pages/RSFormPage/RSTabs.tsx index 8532087b..3b3bdecf 100644 --- a/rsconcept/frontend/src/pages/RSFormPage/RSTabs.tsx +++ b/rsconcept/frontend/src/pages/RSFormPage/RSTabs.tsx @@ -221,19 +221,13 @@ function RSTabs() { - - {cardPanel} - + {cardPanel} - - {listPanel} - + {listPanel} - - {editorPanel} - + {editorPanel} - +