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}
-
+