From c0235e573a6bcf65102d20556eaa3b7a7ac27421 Mon Sep 17 00:00:00 2001 From: Ivan <8611739+IRBorisov@users.noreply.github.com> Date: Fri, 30 Aug 2024 20:18:21 +0300 Subject: [PATCH] M: Small UI fixes --- .../src/components/info/InfoConstituenta.tsx | 4 ++-- .../src/components/select/PickConstituenta.tsx | 1 + rsconcept/frontend/src/components/ui/Modal.tsx | 7 ++++++- .../DlgConstituentaTemplate.tsx | 15 ++++++++++++++- .../RSFormPage/EditorRSList/EditorRSList.tsx | 2 +- .../frontend/src/pages/RSFormPage/MenuRSTabs.tsx | 2 +- rsconcept/frontend/src/utils/labels.ts | 1 + 7 files changed, 26 insertions(+), 6 deletions(-) diff --git a/rsconcept/frontend/src/components/info/InfoConstituenta.tsx b/rsconcept/frontend/src/components/info/InfoConstituenta.tsx index 4ab13c7a..2b4b8c83 100644 --- a/rsconcept/frontend/src/components/info/InfoConstituenta.tsx +++ b/rsconcept/frontend/src/components/info/InfoConstituenta.tsx @@ -12,7 +12,7 @@ interface InfoConstituentaProps extends CProps.Div { function InfoConstituenta({ data, className, ...restProps }: InfoConstituentaProps) { return ( -
+

{data.alias} {data.is_inherited ? ' (наследуется)' : ''} @@ -28,7 +28,7 @@ function InfoConstituenta({ data, className, ...restProps }: InfoConstituentaPro {labelCstTypification(data)}

{data.definition_formal ? ( -

+

Выражение: {data.definition_formal}

diff --git a/rsconcept/frontend/src/components/select/PickConstituenta.tsx b/rsconcept/frontend/src/components/select/PickConstituenta.tsx index 976c2f3b..c380d9e2 100644 --- a/rsconcept/frontend/src/components/select/PickConstituenta.tsx +++ b/rsconcept/frontend/src/components/select/PickConstituenta.tsx @@ -90,6 +90,7 @@ function PickConstituenta({
setFilterText(newValue)} diff --git a/rsconcept/frontend/src/components/ui/Modal.tsx b/rsconcept/frontend/src/components/ui/Modal.tsx index a6aaa2b3..4e8ced08 100644 --- a/rsconcept/frontend/src/components/ui/Modal.tsx +++ b/rsconcept/frontend/src/components/ui/Modal.tsx @@ -24,6 +24,7 @@ export interface ModalProps extends CProps.Styling { overflowVisible?: boolean; hideWindow: () => void; + beforeSubmit?: () => boolean; onSubmit?: () => void; onCancel?: () => void; @@ -33,6 +34,7 @@ export interface ModalProps extends CProps.Styling { function Modal({ header, hideWindow, + beforeSubmit, onSubmit, readonly, onCancel, @@ -53,8 +55,11 @@ function Modal({ }; const handleSubmit = () => { - hideWindow(); + if (beforeSubmit && !beforeSubmit()) { + return; + } if (onSubmit) onSubmit(); + hideWindow(); }; return ( diff --git a/rsconcept/frontend/src/dialogs/DlgConstituentaTemplate/DlgConstituentaTemplate.tsx b/rsconcept/frontend/src/dialogs/DlgConstituentaTemplate/DlgConstituentaTemplate.tsx index 57eb6ea3..e4841eac 100644 --- a/rsconcept/frontend/src/dialogs/DlgConstituentaTemplate/DlgConstituentaTemplate.tsx +++ b/rsconcept/frontend/src/dialogs/DlgConstituentaTemplate/DlgConstituentaTemplate.tsx @@ -16,6 +16,7 @@ import { CstType, ICstCreateData, IRSForm } from '@/models/rsform'; import { generateAlias, validateNewAlias } from '@/models/rsformAPI'; import { inferTemplatedType, substituteTemplateArgs } from '@/models/rslangAPI'; import { PARAMETER } from '@/utils/constants'; +import { prompts } from '@/utils/labels'; import FormCreateCst from '../DlgCreateCst/FormCreateCst'; import TabArguments, { IArgumentsState } from './TabArguments'; @@ -55,7 +56,18 @@ function DlgConstituentaTemplate({ hideWindow, schema, onCreate, insertAfter }: }); const [validated, setValidated] = useState(false); - const handleSubmit = () => onCreate(constituenta); + + function handleSubmit() { + onCreate(constituenta); + } + + function handlePrompt(): boolean { + const definedSomeArgs = substitutes.arguments.some(arg => !!arg.value); + if (!definedSomeArgs && !window.confirm(prompts.templateUndefined)) { + return false; + } + return true; + } useLayoutEffect(() => { if (!template.templateID) { @@ -151,6 +163,7 @@ function DlgConstituentaTemplate({ hideWindow, schema, onCreate, insertAfter }: className='w-[43rem] h-[36.5rem] px-6' hideWindow={hideWindow} canSubmit={validated} + beforeSubmit={handlePrompt} onSubmit={handleSubmit} > diff --git a/rsconcept/frontend/src/pages/RSFormPage/EditorRSList/EditorRSList.tsx b/rsconcept/frontend/src/pages/RSFormPage/EditorRSList/EditorRSList.tsx index 739cb45a..23f73fc6 100644 --- a/rsconcept/frontend/src/pages/RSFormPage/EditorRSList/EditorRSList.tsx +++ b/rsconcept/frontend/src/pages/RSFormPage/EditorRSList/EditorRSList.tsx @@ -158,7 +158,7 @@ function EditorRSList({ onOpenEdit }: EditorRSListProps) {
) : null} - + } diff --git a/rsconcept/frontend/src/pages/RSFormPage/MenuRSTabs.tsx b/rsconcept/frontend/src/pages/RSFormPage/MenuRSTabs.tsx index 1f85ca3b..688c490f 100644 --- a/rsconcept/frontend/src/pages/RSFormPage/MenuRSTabs.tsx +++ b/rsconcept/frontend/src/pages/RSFormPage/MenuRSTabs.tsx @@ -254,7 +254,7 @@ function MenuRSTabs({ onDestroy }: MenuRSTabsProps) { text='Порождение структуры' titleHtml='Раскрыть структуру типизации
выделенной конституенты' icon={} - disabled={!controller.isContentEditable || !controller.canProduceStructure} + disabled={!controller.isContentEditable || !controller.canProduceStructure || controller.isProcessing} onClick={handleProduceStructure} />