From 18beffb1d9f610ba3f9aa3f35d8704c4bb22e677 Mon Sep 17 00:00:00 2001 From: IRBorisov <8611739+IRBorisov@users.noreply.github.com> Date: Mon, 27 May 2024 20:42:34 +0300 Subject: [PATCH] Implement editorial levels --- rsconcept/frontend/index.html | 5 +- rsconcept/frontend/src/components/Icons.tsx | 180 +++++++++--------- .../src/components/info/InfoLibraryItem.tsx | 29 --- .../src/components/info/InfoUsers.tsx | 25 +++ .../components/select/SelectConstituenta.tsx | 13 +- ...ctGrammeme.tsx => SelectMultiGrammeme.tsx} | 11 +- .../src/components/select/SelectUser.tsx | 62 ++++++ .../src/components/select/SelectVersion.tsx | 6 +- .../frontend/src/components/ui/Divider.tsx | 19 +- .../src/components/ui/LabeledValue.tsx | 10 +- .../src/context/AccessModeContext.tsx | 10 +- .../frontend/src/context/RSFormContext.tsx | 66 ++++++- .../dialogs/DlgDeleteCst/ConstituentsList.tsx | 4 +- .../src/dialogs/DlgDeleteCst/DlgDeleteCst.tsx | 11 +- .../dialogs/DlgEditEditors/DlgEditEditors.tsx | 71 +++++++ .../src/dialogs/DlgEditEditors/UsersTable.tsx | 64 +++++++ .../src/dialogs/DlgEditEditors/index.tsx | 1 + .../dialogs/DlgEditReference/EntityTab.tsx | 4 +- .../DlgEditVersions/DlgEditVersions.tsx | 6 +- .../dialogs/DlgEditVersions/VersionsTable.tsx | 8 +- .../DlgEditWordForms/DlgEditWordForms.tsx | 4 +- .../frontend/src/hooks/useConceptText.ts | 2 +- rsconcept/frontend/src/models/library.ts | 27 ++- .../frontend/src/models/miscellaneous.ts | 9 - rsconcept/frontend/src/models/user.ts | 23 ++- rsconcept/frontend/src/models/userAPI.ts | 19 ++ .../ManualsPage/items/HelpRSFormCard.tsx | 68 ++++--- .../ManualsPage/items/HelpRSFormMenu.tsx | 12 +- .../pages/ManualsPage/items/HelpTermGraph.tsx | 124 +++++++----- .../pages/ManualsPage/items/HelpVersions.tsx | 27 ++- .../EditorRSForm/EditorLibraryItem.tsx | 102 ++++++++++ .../RSFormPage/EditorRSForm/EditorRSForm.tsx | 4 +- .../RSFormPage/EditorRSForm/RSFormStats.tsx | 4 +- .../RSFormPage/EditorRSForm/RSFormToolbar.tsx | 5 +- .../src/pages/RSFormPage/RSEditContext.tsx | 76 ++++++-- .../src/pages/RSFormPage/RSTabsMenu.tsx | 44 +++-- rsconcept/frontend/src/utils/constants.ts | 2 + rsconcept/frontend/src/utils/labels.ts | 31 +-- 38 files changed, 864 insertions(+), 324 deletions(-) delete mode 100644 rsconcept/frontend/src/components/info/InfoLibraryItem.tsx create mode 100644 rsconcept/frontend/src/components/info/InfoUsers.tsx rename rsconcept/frontend/src/components/select/{SelectGrammeme.tsx => SelectMultiGrammeme.tsx} (77%) create mode 100644 rsconcept/frontend/src/components/select/SelectUser.tsx create mode 100644 rsconcept/frontend/src/dialogs/DlgEditEditors/DlgEditEditors.tsx create mode 100644 rsconcept/frontend/src/dialogs/DlgEditEditors/UsersTable.tsx create mode 100644 rsconcept/frontend/src/dialogs/DlgEditEditors/index.tsx create mode 100644 rsconcept/frontend/src/models/userAPI.ts create mode 100644 rsconcept/frontend/src/pages/RSFormPage/EditorRSForm/EditorLibraryItem.tsx diff --git a/rsconcept/frontend/index.html b/rsconcept/frontend/index.html index b2846a33..5c54ce31 100644 --- a/rsconcept/frontend/index.html +++ b/rsconcept/frontend/index.html @@ -5,7 +5,10 @@ - + diff --git a/rsconcept/frontend/src/components/Icons.tsx b/rsconcept/frontend/src/components/Icons.tsx index ccccbf21..5e93ab73 100644 --- a/rsconcept/frontend/src/components/Icons.tsx +++ b/rsconcept/frontend/src/components/Icons.tsx @@ -1,105 +1,107 @@ // Search new icons at https://reactsvgicons.com/ +// Note: save this file using Ctrl + K, Ctrl + Shift + S to disable autoformat // ==== General actions ======= -export { BiMenu as IconMenu } from 'react-icons/bi'; -export { LuLogOut as IconLogout } from 'react-icons/lu'; -export { FiSave as IconSave } from 'react-icons/fi'; -export { BiCheck as IconAccept } from 'react-icons/bi'; -export { BiX as IconRemove } from 'react-icons/bi'; -export { BiTrash as IconDestroy } from 'react-icons/bi'; -export { BiReset as IconReset } from 'react-icons/bi'; -export { LiaEdit as IconEdit } from 'react-icons/lia'; -export { FiEdit as IconEdit2 } from 'react-icons/fi'; -export { BiSearchAlt2 as IconSearch } from 'react-icons/bi'; -export { BiDownload as IconDownload } from 'react-icons/bi'; -export { BiUpload as IconUpload } from 'react-icons/bi'; -export { BiCog as IconSettings } from 'react-icons/bi'; -export { BiShareAlt as IconShare } from 'react-icons/bi'; -export { BiFilterAlt as IconFilter } from 'react-icons/bi'; -export { BiDownArrowCircle as IconOpenList } from 'react-icons/bi'; -export { LuAlertTriangle as IconAlert } from 'react-icons/lu'; +export { BiMenu as IconMenu } from 'react-icons/bi'; +export { LuLogOut as IconLogout } from 'react-icons/lu'; +export { FiSave as IconSave } from 'react-icons/fi'; +export { BiCheck as IconAccept } from 'react-icons/bi'; +export { BiX as IconRemove } from 'react-icons/bi'; +export { BiTrash as IconDestroy } from 'react-icons/bi'; +export { BiReset as IconReset } from 'react-icons/bi'; +export { LiaEdit as IconEdit } from 'react-icons/lia'; +export { FiEdit as IconEdit2 } from 'react-icons/fi'; +export { BiSearchAlt2 as IconSearch } from 'react-icons/bi'; +export { BiDownload as IconDownload } from 'react-icons/bi'; +export { BiUpload as IconUpload } from 'react-icons/bi'; +export { BiCog as IconSettings } from 'react-icons/bi'; +export { BiShareAlt as IconShare } from 'react-icons/bi'; +export { BiFilterAlt as IconFilter } from 'react-icons/bi'; +export {BiDownArrowCircle as IconOpenList } from 'react-icons/bi'; +export { LuAlertTriangle as IconAlert } from 'react-icons/lu'; // ===== UI elements ======= -export { BiX as IconClose } from 'react-icons/bi'; -export { LuChevronDown as IconDropArrow } from 'react-icons/lu'; -export { LuChevronUp as IconDropArrowUp } from 'react-icons/lu'; -export { RiMenuFoldFill as IconMenuFold } from 'react-icons/ri'; -export { RiMenuUnfoldFill as IconMenuUnfold } from 'react-icons/ri'; -export { LuMoon as IconDarkTheme } from 'react-icons/lu'; -export { LuSun as IconLightTheme } from 'react-icons/lu'; -export { LuLightbulb as IconHelp } from 'react-icons/lu'; -export { LuLightbulbOff as IconHelpOff } from 'react-icons/lu'; -export { RiPushpinFill as IconPin } from 'react-icons/ri'; -export { RiUnpinLine as IconUnpin } from 'react-icons/ri'; -export { BiCaretDown as IconSortDesc } from 'react-icons/bi'; -export { BiCaretUp as IconSortAsc } from 'react-icons/bi'; -export { BiChevronLeft as IconPageLeft } from 'react-icons/bi'; -export { BiChevronRight as IconPageRight } from 'react-icons/bi'; -export { BiFirstPage as IconPageFirst } from 'react-icons/bi'; -export { BiLastPage as IconPageLast } from 'react-icons/bi'; +export { BiX as IconClose } from 'react-icons/bi'; +export { LuChevronDown as IconDropArrow } from 'react-icons/lu'; +export { LuChevronUp as IconDropArrowUp } from 'react-icons/lu'; +export { RiMenuFoldFill as IconMenuFold } from 'react-icons/ri'; +export { RiMenuUnfoldFill as IconMenuUnfold } from 'react-icons/ri'; +export { LuMoon as IconDarkTheme } from 'react-icons/lu'; +export { LuSun as IconLightTheme } from 'react-icons/lu'; +export { LuLightbulb as IconHelp } from 'react-icons/lu'; +export { LuLightbulbOff as IconHelpOff } from 'react-icons/lu'; +export { RiPushpinFill as IconPin } from 'react-icons/ri'; +export { RiUnpinLine as IconUnpin } from 'react-icons/ri'; +export { BiCaretDown as IconSortDesc } from 'react-icons/bi'; +export { BiCaretUp as IconSortAsc } from 'react-icons/bi'; +export { BiChevronLeft as IconPageLeft } from 'react-icons/bi'; +export { BiChevronRight as IconPageRight } from 'react-icons/bi'; +export { BiFirstPage as IconPageFirst } from 'react-icons/bi'; +export { BiLastPage as IconPageLast } from 'react-icons/bi'; // ==== User status ======= -export { LuUserCircle2 as IconUser } from 'react-icons/lu'; -export { FaCircleUser as IconUser2 } from 'react-icons/fa6'; -export { LuCrown as IconOwner } from 'react-icons/lu'; -export { TbMeteor as IconAdmin } from 'react-icons/tb'; -export { TbMeteorOff as IconAdminOff } from 'react-icons/tb'; -export { LuGlasses as IconReader } from 'react-icons/lu'; +export { LuUserCircle2 as IconUser } from 'react-icons/lu'; +export { FaCircleUser as IconUser2 } from 'react-icons/fa6'; +export { LuShovel as IconEditor } from 'react-icons/lu'; +export { LuCrown as IconOwner } from 'react-icons/lu'; +export { TbMeteor as IconAdmin } from 'react-icons/tb'; +export { TbMeteorOff as IconAdminOff } from 'react-icons/tb'; +export { LuGlasses as IconReader } from 'react-icons/lu'; // ===== Domain entities ======= -export { VscLibrary as IconLibrary } from 'react-icons/vsc'; -export { IoLibrary as IconLibrary2 } from 'react-icons/io5'; -export { BiDiamond as IconTemplates } from 'react-icons/bi'; -export { LuArchive as IconArchive } from 'react-icons/lu'; -export { LuDatabase as IconDatabase } from 'react-icons/lu'; -export { LuImage as IconImage } from 'react-icons/lu'; -export { TbColumns as IconList } from 'react-icons/tb'; -export { TbColumnsOff as IconListOff } from 'react-icons/tb'; -export { LuAtSign as IconTerm } from 'react-icons/lu'; -export { LuSubscript as IconAlias } from 'react-icons/lu'; -export { TbMathFunction as IconFormula } from 'react-icons/tb'; -export { BiFontFamily as IconText } from 'react-icons/bi'; -export { BiFont as IconTextOff } from 'react-icons/bi'; -export { RiTreeLine as IconTree } from 'react-icons/ri'; -export { FaRegKeyboard as IconControls } from 'react-icons/fa6'; -export { BiCheckShield as IconImmutable } from 'react-icons/bi'; -export { RiOpenSourceLine as IconPublic } from 'react-icons/ri'; -export { BiBug as IconStatusError } from 'react-icons/bi'; -export { BiCheckCircle as IconStatusOK } from 'react-icons/bi'; -export { BiHelpCircle as IconStatusUnknown } from 'react-icons/bi'; -export { BiPauseCircle as IconStatusIncalculable } from 'react-icons/bi'; -export { LuPower as IconKeepAliasOn } from 'react-icons/lu'; -export { LuPowerOff as IconKeepAliasOff } from 'react-icons/lu'; -export { LuFlag as IconKeepTermOn } from 'react-icons/lu'; -export { LuFlagOff as IconKeepTermOff } from 'react-icons/lu'; +export { VscLibrary as IconLibrary } from 'react-icons/vsc'; +export { IoLibrary as IconLibrary2 } from 'react-icons/io5'; +export { BiDiamond as IconTemplates } from 'react-icons/bi'; +export { LuArchive as IconArchive } from 'react-icons/lu'; +export { LuDatabase as IconDatabase } from 'react-icons/lu'; +export { LuImage as IconImage } from 'react-icons/lu'; +export { TbColumns as IconList } from 'react-icons/tb'; +export { TbColumnsOff as IconListOff } from 'react-icons/tb'; +export { LuAtSign as IconTerm } from 'react-icons/lu'; +export { LuSubscript as IconAlias } from 'react-icons/lu'; +export { TbMathFunction as IconFormula } from 'react-icons/tb'; +export { BiFontFamily as IconText } from 'react-icons/bi'; +export { BiFont as IconTextOff } from 'react-icons/bi'; +export { RiTreeLine as IconTree } from 'react-icons/ri'; +export { FaRegKeyboard as IconControls } from 'react-icons/fa6'; +export { BiCheckShield as IconImmutable } from 'react-icons/bi'; +export { RiOpenSourceLine as IconPublic } from 'react-icons/ri'; +export { BiBug as IconStatusError } from 'react-icons/bi'; +export { BiCheckCircle as IconStatusOK } from 'react-icons/bi'; +export { BiHelpCircle as IconStatusUnknown } from 'react-icons/bi'; +export { BiPauseCircle as IconStatusIncalculable } from 'react-icons/bi'; +export { LuPower as IconKeepAliasOn } from 'react-icons/lu'; +export { LuPowerOff as IconKeepAliasOff } from 'react-icons/lu'; +export { LuFlag as IconKeepTermOn } from 'react-icons/lu'; +export { LuFlagOff as IconKeepTermOff } from 'react-icons/lu'; // ===== Domain actions ===== -export { BiUpvote as IconMoveUp } from 'react-icons/bi'; -export { BiDownvote as IconMoveDown } from 'react-icons/bi'; -export { BiRightArrow as IconMoveRight } from 'react-icons/bi'; -export { BiLeftArrow as IconMoveLeft } from 'react-icons/bi'; -export { FiBell as IconFollow } from 'react-icons/fi'; -export { FiBellOff as IconFollowOff } from 'react-icons/fi'; -export { FaSortAmountDownAlt as IconSortList } from 'react-icons/fa'; -export { BiPlusCircle as IconNewItem } from 'react-icons/bi'; -export { FaSquarePlus as IconNewItem2 } from 'react-icons/fa6'; -export { BiDuplicate as IconClone } from 'react-icons/bi'; -export { LuReplace as IconReplace } from 'react-icons/lu'; -export { LuNetwork as IconGenerateStructure } from 'react-icons/lu'; -export { LuBookCopy as IconInlineSynthesis } from 'react-icons/lu'; -export { LuWand2 as IconGenerateNames } from 'react-icons/lu'; +export { BiUpvote as IconMoveUp } from 'react-icons/bi'; +export { BiDownvote as IconMoveDown } from 'react-icons/bi'; +export { BiRightArrow as IconMoveRight } from 'react-icons/bi'; +export { BiLeftArrow as IconMoveLeft } from 'react-icons/bi'; +export { FiBell as IconFollow } from 'react-icons/fi'; +export { FiBellOff as IconFollowOff } from 'react-icons/fi'; +export { BiPlusCircle as IconNewItem } from 'react-icons/bi'; +export { FaSquarePlus as IconNewItem2 } from 'react-icons/fa6'; +export { BiDuplicate as IconClone } from 'react-icons/bi'; +export { LuReplace as IconReplace } from 'react-icons/lu'; +export { FaSortAmountDownAlt as IconSortList } from 'react-icons/fa'; +export { LuNetwork as IconGenerateStructure } from 'react-icons/lu'; +export { LuBookCopy as IconInlineSynthesis } from 'react-icons/lu'; +export { LuWand2 as IconGenerateNames } from 'react-icons/lu'; // ======== Graph UI ======= -export { BiCollapse as IconGraphCollapse } from 'react-icons/bi'; -export { BiExpand as IconGraphExpand } from 'react-icons/bi'; -export { LuMaximize as IconGraphMaximize } from 'react-icons/lu'; -export { BiGitBranch as IconGraphInputs } from 'react-icons/bi'; -export { BiGitMerge as IconGraphOutputs } from 'react-icons/bi'; -export { LuAtom as IconGraphCore } from 'react-icons/lu'; -export { LuRotate3D as IconRotate3D } from 'react-icons/lu'; -export { MdOutlineFitScreen as IconFitImage } from 'react-icons/md'; -export { LuSparkles as IconClustering } from 'react-icons/lu'; -export { LuSparkle as IconClusteringOff } from 'react-icons/lu'; +export { BiCollapse as IconGraphCollapse } from 'react-icons/bi'; +export { BiExpand as IconGraphExpand } from 'react-icons/bi'; +export { LuMaximize as IconGraphMaximize } from 'react-icons/lu'; +export { BiGitBranch as IconGraphInputs } from 'react-icons/bi'; +export { BiGitMerge as IconGraphOutputs } from 'react-icons/bi'; +export { LuAtom as IconGraphCore } from 'react-icons/lu'; +export { LuRotate3D as IconRotate3D } from 'react-icons/lu'; +export { MdOutlineFitScreen as IconFitImage } from 'react-icons/md'; +export { LuSparkles as IconClustering } from 'react-icons/lu'; +export { LuSparkle as IconClusteringOff } from 'react-icons/lu'; // ===== Custom elements ====== interface IconSVGProps { diff --git a/rsconcept/frontend/src/components/info/InfoLibraryItem.tsx b/rsconcept/frontend/src/components/info/InfoLibraryItem.tsx deleted file mode 100644 index 4beee062..00000000 --- a/rsconcept/frontend/src/components/info/InfoLibraryItem.tsx +++ /dev/null @@ -1,29 +0,0 @@ -import { useIntl } from 'react-intl'; - -import { useUsers } from '@/context/UsersContext'; -import { ILibraryItemEx } from '@/models/library'; - -import LabeledValue from '../ui/LabeledValue'; - -interface InfoLibraryItemProps { - item?: ILibraryItemEx; -} - -function InfoLibraryItem({ item }: InfoLibraryItemProps) { - const { getUserLabel } = useUsers(); - const intl = useIntl(); - return ( -
Карточка содержит общую информацию и статистику
-Карточка позволяет управлять атрибутами схемы и
Карточка содержит общую информацию и статистику
+
+ Карточка позволяет управлять атрибутами схемы и
+ Карточка позволяет назначать
+ Карточка позволяет изменить
Нижестоящие в списке режимы работы включают все права и доступные функции вышестоящих
+
- Версионирование позволяет сохранить текущее состояние схемы под определенным именем (версией) и использовать
- ссылку на него для совместной работы. После создания версии ее содержание изменить нельзя
+ Версионирование доступно
Версионирование сохраняет текущее состояние схемы под определенным именем (версией) с доступом по ссылке.
+После создания версии ее содержание изменить нельзя.
+ +