From 967eabde5149de460c57f596dc123a9a213b8a11 Mon Sep 17 00:00:00 2001 From: Ivan <8611739+IRBorisov@users.noreply.github.com> Date: Thu, 1 Aug 2024 11:55:45 +0300 Subject: [PATCH] F: Improve RSForm UI for inherited cst --- rsconcept/backend/apps/oss/views/oss.py | 2 +- rsconcept/frontend/src/components/Icons.tsx | 2 ++ .../components/select/PickSubstitutions.tsx | 6 ++++++ .../components/select/SelectConstituenta.tsx | 2 +- .../ManualsPage/items/HelpCstAttributes.tsx | 2 +- .../pages/ManualsPage/items/HelpCstEditor.tsx | 1 - .../pages/ManualsPage/items/HelpPortal.tsx | 2 +- .../ManualsPage/items/HelpRSFormCard.tsx | 7 +++---- .../ManualsPage/items/HelpRSFormItems.tsx | 19 +++++++++++-------- .../ManualsPage/items/HelpRSLangCorrect.tsx | 3 +-- .../ManualsPage/items/HelpRSLangInterpret.tsx | 3 +-- .../items/HelpRSLangOperations.tsx | 7 +++---- .../pages/ManualsPage/items/HelpTermGraph.tsx | 14 ++++++++------ .../EditorConstituenta/EditorConstituenta.tsx | 2 +- .../EditorConstituenta/FormConstituenta.tsx | 17 ++++++++++++----- .../ToolbarConstituenta.tsx | 8 +++++++- .../EditorRSFormCard/EditorLibraryItem.tsx | 2 +- .../EditorRSFormCard/FormRSForm.tsx | 3 ++- .../EditorRSFormCard/ToolbarVersioning.tsx | 16 ++++++++++++---- .../RSFormPage/EditorRSList/EditorRSList.tsx | 4 ++-- .../RSFormPage/EditorRSList/ToolbarRSList.tsx | 4 ++-- .../EditorTermGraph/EditorTermGraph.tsx | 6 +++--- .../EditorTermGraph/ToolbarTermGraph.tsx | 2 +- .../RSFormPage/EditorTermGraph/ViewHidden.tsx | 9 ++++++++- .../src/pages/RSFormPage/RSEditContext.tsx | 14 ++++++++++---- rsconcept/frontend/src/utils/labels.ts | 3 ++- 26 files changed, 102 insertions(+), 58 deletions(-) diff --git a/rsconcept/backend/apps/oss/views/oss.py b/rsconcept/backend/apps/oss/views/oss.py index e436ec9b..0a07471b 100644 --- a/rsconcept/backend/apps/oss/views/oss.py +++ b/rsconcept/backend/apps/oss/views/oss.py @@ -253,7 +253,7 @@ class OssViewSet(viewsets.GenericViewSet, generics.ListAPIView, generics.Retriev if operation.result is not None: can_edit = permissions.can_edit_item(request.user, operation.result) - if can_edit: + if can_edit or operation.operation_type == m.OperationType.SYNTHESIS: operation.result.alias = operation.alias operation.result.title = operation.title operation.result.comment = operation.comment diff --git a/rsconcept/frontend/src/components/Icons.tsx b/rsconcept/frontend/src/components/Icons.tsx index c9a507d1..f35f6252 100644 --- a/rsconcept/frontend/src/components/Icons.tsx +++ b/rsconcept/frontend/src/components/Icons.tsx @@ -63,6 +63,8 @@ export { IoLibrary as IconLibrary2 } from 'react-icons/io5'; export { BiDiamond as IconTemplates } from 'react-icons/bi'; export { GiHoneycomb as IconOSS } from 'react-icons/gi'; export { LuBaby as IconChild } from 'react-icons/lu'; +export { RiParentLine as IconParent } from 'react-icons/ri'; +export { TbOld as IconPredecessor } from 'react-icons/tb'; export { RiHexagonLine as IconRSForm } from 'react-icons/ri'; export { LuArchive as IconArchive } from 'react-icons/lu'; export { LuDatabase as IconDatabase } from 'react-icons/lu'; diff --git a/rsconcept/frontend/src/components/select/PickSubstitutions.tsx b/rsconcept/frontend/src/components/select/PickSubstitutions.tsx index 46fa9a2d..3fc50fe4 100644 --- a/rsconcept/frontend/src/components/select/PickSubstitutions.tsx +++ b/rsconcept/frontend/src/components/select/PickSubstitutions.tsx @@ -110,6 +110,12 @@ function PickSubstitutions({ toast.error(errors.reuseOriginal); return; } + if (leftArgument === rightArgument) { + if ((deleteRight && rightCst?.is_inherited) || (!deleteRight && leftCst?.is_inherited)) { + toast.error(errors.substituteInherited); + return; + } + } setSubstitutions(prev => [...prev, newSubstitution]); setLeftCst(undefined); setRightCst(undefined); diff --git a/rsconcept/frontend/src/components/select/SelectConstituenta.tsx b/rsconcept/frontend/src/components/select/SelectConstituenta.tsx index a1bd6631..9d7f99f0 100644 --- a/rsconcept/frontend/src/components/select/SelectConstituenta.tsx +++ b/rsconcept/frontend/src/components/select/SelectConstituenta.tsx @@ -32,7 +32,7 @@ function SelectConstituenta({ return ( items?.map(cst => ({ value: cst.id, - label: `${cst.alias}: ${describeConstituenta(cst)}` + label: `${cst.alias}${cst.is_inherited ? '*' : ''}: ${describeConstituenta(cst)}` })) ?? [] ); }, [items]); diff --git a/rsconcept/frontend/src/pages/ManualsPage/items/HelpCstAttributes.tsx b/rsconcept/frontend/src/pages/ManualsPage/items/HelpCstAttributes.tsx index a5ce1b41..34fbc591 100644 --- a/rsconcept/frontend/src/pages/ManualsPage/items/HelpCstAttributes.tsx +++ b/rsconcept/frontend/src/pages/ManualsPage/items/HelpCstAttributes.tsx @@ -1,6 +1,6 @@ import { HelpTopic } from '@/models/miscellaneous'; -import LinkTopic from '../../../components/ui/LinkTopic'; +import LinkTopic from '@/components/ui/LinkTopic'; function HelpCstAttributes() { return ( diff --git a/rsconcept/frontend/src/pages/ManualsPage/items/HelpCstEditor.tsx b/rsconcept/frontend/src/pages/ManualsPage/items/HelpCstEditor.tsx index 3b066e7e..a2a45cbb 100644 --- a/rsconcept/frontend/src/pages/ManualsPage/items/HelpCstEditor.tsx +++ b/rsconcept/frontend/src/pages/ManualsPage/items/HelpCstEditor.tsx @@ -74,7 +74,6 @@ function HelpCstEditor() { Alt + вверх/вниз – перемещение
  • фильтрация в верхней части
  • -
  • при наведении на имя конституенты отображаются атрибуты
  • цветом фона выделена текущая конституента
  • diff --git a/rsconcept/frontend/src/pages/ManualsPage/items/HelpPortal.tsx b/rsconcept/frontend/src/pages/ManualsPage/items/HelpPortal.tsx index d98d3e08..03541561 100644 --- a/rsconcept/frontend/src/pages/ManualsPage/items/HelpPortal.tsx +++ b/rsconcept/frontend/src/pages/ManualsPage/items/HelpPortal.tsx @@ -1,10 +1,10 @@ import { urls } from '@/app/urls'; import { IconLibrary2, IconManuals, IconUser2 } from '@/components/Icons'; +import LinkTopic from '@/components/ui/LinkTopic'; import TextURL from '@/components/ui/TextURL'; import { HelpTopic } from '@/models/miscellaneous'; import { external_urls, prefixes } from '@/utils/constants'; -import LinkTopic from '../../../components/ui/LinkTopic'; import TopicItem from '../TopicItem'; function HelpPortal() { diff --git a/rsconcept/frontend/src/pages/ManualsPage/items/HelpRSFormCard.tsx b/rsconcept/frontend/src/pages/ManualsPage/items/HelpRSFormCard.tsx index b47c5c4f..e85e99c6 100644 --- a/rsconcept/frontend/src/pages/ManualsPage/items/HelpRSFormCard.tsx +++ b/rsconcept/frontend/src/pages/ManualsPage/items/HelpRSFormCard.tsx @@ -1,5 +1,3 @@ -import { HelpTopic } from '@/models/miscellaneous'; - import { IconClone, IconDestroy, @@ -10,8 +8,9 @@ import { IconOwner, IconPublic, IconSave -} from '../../../components/Icons'; -import LinkTopic from '../../../components/ui/LinkTopic'; +} from '@/components/Icons'; +import LinkTopic from '@/components/ui/LinkTopic'; +import { HelpTopic } from '@/models/miscellaneous'; function HelpRSFormCard() { return ( diff --git a/rsconcept/frontend/src/pages/ManualsPage/items/HelpRSFormItems.tsx b/rsconcept/frontend/src/pages/ManualsPage/items/HelpRSFormItems.tsx index ee77a8c8..75a1f5a1 100644 --- a/rsconcept/frontend/src/pages/ManualsPage/items/HelpRSFormItems.tsx +++ b/rsconcept/frontend/src/pages/ManualsPage/items/HelpRSFormItems.tsx @@ -1,7 +1,3 @@ -import InfoCstStatus from '@/components/info/InfoCstStatus'; -import Divider from '@/components/ui/Divider'; -import { HelpTopic } from '@/models/miscellaneous'; - import { IconAlias, IconClone, @@ -11,17 +7,24 @@ import { IconNewItem, IconOpenList, IconReset -} from '../../../components/Icons'; -import LinkTopic from '../../../components/ui/LinkTopic'; +} from '@/components/Icons'; +import InfoCstStatus from '@/components/info/InfoCstStatus'; +import Divider from '@/components/ui/Divider'; +import LinkTopic from '@/components/ui/LinkTopic'; +import { HelpTopic } from '@/models/miscellaneous'; function HelpRSFormItems() { return (

    Список конституент

    -

    +

  • Конституенты обладают уникальным -

    +
  • +
  • при наведении на имя отображаются атрибуты
  • +
  • + пунктиром отображаются конституенты +
  • Управление списком

  • diff --git a/rsconcept/frontend/src/pages/ManualsPage/items/HelpRSLangCorrect.tsx b/rsconcept/frontend/src/pages/ManualsPage/items/HelpRSLangCorrect.tsx index b20a09f4..a7e370ca 100644 --- a/rsconcept/frontend/src/pages/ManualsPage/items/HelpRSLangCorrect.tsx +++ b/rsconcept/frontend/src/pages/ManualsPage/items/HelpRSLangCorrect.tsx @@ -1,7 +1,6 @@ +import LinkTopic from '@/components/ui/LinkTopic'; import { HelpTopic } from '@/models/miscellaneous'; -import LinkTopic from '../../../components/ui/LinkTopic'; - function HelpRSLangCorrect() { return (
    diff --git a/rsconcept/frontend/src/pages/ManualsPage/items/HelpRSLangInterpret.tsx b/rsconcept/frontend/src/pages/ManualsPage/items/HelpRSLangInterpret.tsx index 478262f1..b8542bb6 100644 --- a/rsconcept/frontend/src/pages/ManualsPage/items/HelpRSLangInterpret.tsx +++ b/rsconcept/frontend/src/pages/ManualsPage/items/HelpRSLangInterpret.tsx @@ -1,7 +1,6 @@ +import LinkTopic from '@/components/ui/LinkTopic'; import { HelpTopic } from '@/models/miscellaneous'; -import LinkTopic from '../../../components/ui/LinkTopic'; - function HelpRSLangInterpret() { return (
    diff --git a/rsconcept/frontend/src/pages/ManualsPage/items/HelpRSLangOperations.tsx b/rsconcept/frontend/src/pages/ManualsPage/items/HelpRSLangOperations.tsx index f8f42b72..f02b5193 100644 --- a/rsconcept/frontend/src/pages/ManualsPage/items/HelpRSLangOperations.tsx +++ b/rsconcept/frontend/src/pages/ManualsPage/items/HelpRSLangOperations.tsx @@ -1,5 +1,3 @@ -import { HelpTopic } from '@/models/miscellaneous'; - import { IconGenerateNames, IconGenerateStructure, @@ -7,8 +5,9 @@ import { IconReplace, IconSortList, IconTemplates -} from '../../../components/Icons'; -import LinkTopic from '../../../components/ui/LinkTopic'; +} from '@/components/Icons'; +import LinkTopic from '@/components/ui/LinkTopic'; +import { HelpTopic } from '@/models/miscellaneous'; function HelpRSLangOperations() { return ( diff --git a/rsconcept/frontend/src/pages/ManualsPage/items/HelpTermGraph.tsx b/rsconcept/frontend/src/pages/ManualsPage/items/HelpTermGraph.tsx index 614f1e14..1315f0d4 100644 --- a/rsconcept/frontend/src/pages/ManualsPage/items/HelpTermGraph.tsx +++ b/rsconcept/frontend/src/pages/ManualsPage/items/HelpTermGraph.tsx @@ -1,8 +1,3 @@ -import Divider from '@/components/ui/Divider'; -import LinkTopic from '@/components/ui/LinkTopic'; -import { useConceptOptions } from '@/context/ConceptOptionsContext'; -import { HelpTopic } from '@/models/miscellaneous'; - import { IconClustering, IconDestroy, @@ -20,7 +15,11 @@ import { IconReset, IconRotate3D, IconText -} from '../../../components/Icons'; +} from '@/components/Icons'; +import Divider from '@/components/ui/Divider'; +import LinkTopic from '@/components/ui/LinkTopic'; +import { useConceptOptions } from '@/context/ConceptOptionsContext'; +import { HelpTopic } from '@/models/miscellaneous'; function HelpTermGraph() { const { colors } = useConceptOptions(); @@ -80,6 +79,9 @@ function HelpTermGraph() {
  • Сохранить в формат PNG
  • +
  • + * в ОСС +
  • diff --git a/rsconcept/frontend/src/pages/RSFormPage/EditorConstituenta/EditorConstituenta.tsx b/rsconcept/frontend/src/pages/RSFormPage/EditorConstituenta/EditorConstituenta.tsx index 45e83f7b..097db066 100644 --- a/rsconcept/frontend/src/pages/RSFormPage/EditorConstituenta/EditorConstituenta.tsx +++ b/rsconcept/frontend/src/pages/RSFormPage/EditorConstituenta/EditorConstituenta.tsx @@ -89,7 +89,7 @@ function EditorConstituenta({ activeCst, isModified, setIsModified, onOpenEdit } onMoveDown={controller.moveDown} onSubmit={initiateSubmit} onReset={() => setToggleReset(prev => !prev)} - onDelete={controller.deleteCst} + onDelete={controller.promptDeleteCst} onClone={controller.cloneCst} onCreate={() => controller.createCst(activeCst?.cst_type, false)} onToggleList={() => setShowList(prev => !prev)} diff --git a/rsconcept/frontend/src/pages/RSFormPage/EditorConstituenta/FormConstituenta.tsx b/rsconcept/frontend/src/pages/RSFormPage/EditorConstituenta/FormConstituenta.tsx index 5494c167..b63fbb0c 100644 --- a/rsconcept/frontend/src/pages/RSFormPage/EditorConstituenta/FormConstituenta.tsx +++ b/rsconcept/frontend/src/pages/RSFormPage/EditorConstituenta/FormConstituenta.tsx @@ -5,7 +5,7 @@ import { AnimatePresence } from 'framer-motion'; import { useEffect, useLayoutEffect, useMemo, useState } from 'react'; import { toast } from 'react-toastify'; -import { IconChild, IconSave } from '@/components/Icons'; +import { IconChild, IconParent, IconSave } from '@/components/Icons'; import RefsInput from '@/components/RefsInput'; import MiniButton from '@/components/ui/MiniButton'; import Overlay from '@/components/ui/Overlay'; @@ -241,15 +241,22 @@ function FormConstituenta({ disabled={disabled || !isModified} icon={} /> - {state?.is_inherited ? ( - + + {state?.is_inherited_parent ? ( } disabled titleHtml='Внимание!
    Конституента имеет потомков
    в операционной схеме синтеза' /> -
    - ) : null} + ) : null} + {state?.is_inherited ? ( + } + disabled + titleHtml='Внимание!
    Конституента является наследником
    ' + /> + ) : null} +
    ) : null} diff --git a/rsconcept/frontend/src/pages/RSFormPage/EditorConstituenta/ToolbarConstituenta.tsx b/rsconcept/frontend/src/pages/RSFormPage/EditorConstituenta/ToolbarConstituenta.tsx index b8e506e8..2192569a 100644 --- a/rsconcept/frontend/src/pages/RSFormPage/EditorConstituenta/ToolbarConstituenta.tsx +++ b/rsconcept/frontend/src/pages/RSFormPage/EditorConstituenta/ToolbarConstituenta.tsx @@ -1,3 +1,5 @@ +'use client'; + import { IconClone, IconDestroy, @@ -16,6 +18,8 @@ import { HelpTopic } from '@/models/miscellaneous'; import { PARAMETER } from '@/utils/constants'; import { prepareTooltip, tooltips } from '@/utils/labels'; +import { useRSEdit } from '../RSEditContext'; + interface ToolbarConstituentaProps { disabled: boolean; modified: boolean; @@ -46,6 +50,8 @@ function ToolbarConstituenta({ onCreate, onToggleList }: ToolbarConstituentaProps) { + const controller = useRSEdit(); + return ( } /> diff --git a/rsconcept/frontend/src/pages/RSFormPage/EditorRSFormCard/EditorLibraryItem.tsx b/rsconcept/frontend/src/pages/RSFormPage/EditorRSFormCard/EditorLibraryItem.tsx index 97d26b97..eb3b52c7 100644 --- a/rsconcept/frontend/src/pages/RSFormPage/EditorRSFormCard/EditorLibraryItem.tsx +++ b/rsconcept/frontend/src/pages/RSFormPage/EditorRSFormCard/EditorLibraryItem.tsx @@ -15,7 +15,7 @@ import { UserID, UserLevel } from '@/models/user'; import { prefixes } from '@/utils/constants'; import { prompts } from '@/utils/labels'; -import LabeledValue from '../../../components/ui/LabeledValue'; +import LabeledValue from '@/components/ui/LabeledValue'; interface EditorLibraryItemProps { item?: ILibraryItemData; diff --git a/rsconcept/frontend/src/pages/RSFormPage/EditorRSFormCard/FormRSForm.tsx b/rsconcept/frontend/src/pages/RSFormPage/EditorRSFormCard/FormRSForm.tsx index efb7b10a..0cde98ef 100644 --- a/rsconcept/frontend/src/pages/RSFormPage/EditorRSFormCard/FormRSForm.tsx +++ b/rsconcept/frontend/src/pages/RSFormPage/EditorRSFormCard/FormRSForm.tsx @@ -105,6 +105,7 @@ function FormRSForm({ id, isModified, setIsModified }: FormRSFormProps) { onClick={() => ossMenu.toggle()} /> +