From 53a795d3ecc5c5f7d9edf16019315bbf6f61723c Mon Sep 17 00:00:00 2001 From: Ivan <8611739+IRBorisov@users.noreply.github.com> Date: Wed, 12 Feb 2025 15:12:59 +0300 Subject: [PATCH] R: library feature boundary --- rsconcept/frontend/src/app/GlobalDialogs.tsx | 6 ++-- .../src/components/Input/SearchBar.tsx | 3 +- .../features/library/backend/useFolders.tsx | 3 +- .../library/backend/useUpdateTimestamp.tsx | 4 +-- .../library/components/EditorLibraryItem.tsx | 16 +++++++-- .../components/MiniSelectorOSS.tsx | 7 ++-- .../components/PickSchema.tsx | 10 +++--- .../library/components/SelectAccessPolicy.tsx | 4 +-- .../library/components/SelectItemType.tsx | 4 +-- .../library/components/SelectLibraryItem.tsx | 8 ++--- .../library/components/SelectLocation.tsx | 2 +- .../components/SelectLocationContext.tsx | 4 +-- .../library/components/SelectLocationHead.tsx | 10 ++++-- .../components/SelectVersion.tsx | 12 +++---- .../components}/ToolbarItemAccess.tsx | 23 ++++++++----- .../library/dialogs/DlgChangeLocation.tsx | 4 +-- .../dialogs/DlgCloneLibraryItem.tsx | 17 +++++----- .../dialogs/DlgCreateVersion.tsx | 25 ++++++-------- .../DlgEditVersions/DlgEditVersions.tsx | 19 +++++------ .../dialogs/DlgEditVersions/TableVersions.tsx | 11 ++++--- .../dialogs/DlgEditVersions/index.tsx | 0 .../frontend/src/features/library/index.ts | 22 +++++++++++++ .../src/features/library/models/library.ts | 11 ------- .../pages/CreateItemPage/FormCreateItem.tsx | 8 ++--- .../pages/LibraryPage/ViewSideLocation.tsx | 2 +- .../src/features/oss/backend/OssLoader.ts | 4 +-- .../frontend/src/features/oss/backend/api.ts | 18 +++++----- .../features/oss/backend/useInputCreate.tsx | 5 ++- .../features/oss/backend/useInputUpdate.tsx | 5 ++- .../features/oss/backend/useMutatingOss.tsx | 2 +- .../src/features/oss/backend/useOSS.tsx | 9 +++-- .../oss/backend/useOperationCreate.tsx | 5 ++- .../oss/backend/useOperationDelete.tsx | 5 ++- .../oss/backend/useOperationExecute.tsx | 5 ++- .../oss/backend/useOperationUpdate.tsx | 6 ++-- .../oss/backend/useRelocateConstituents.tsx | 2 +- .../oss/backend/useUpdatePositions.tsx | 5 ++- .../oss/dialogs/DlgChangeInputSchema.tsx | 4 +-- .../DlgCreateOperation/TabInputOperation.tsx | 12 +++---- .../dialogs/DlgEditOperation/TabArguments.tsx | 3 +- .../oss/dialogs/DlgRelocateConstituents.tsx | 8 ++--- .../frontend/src/features/oss/models/oss.ts | 8 ++--- .../src/features/oss/models/ossAPI.ts | 6 ++-- .../OssPage/EditorOssCard/EditorOssCard.tsx | 2 +- .../pages/OssPage/EditorOssCard/FormOSS.tsx | 4 +-- .../pages/OssPage/EditorOssGraph/OssFlow.tsx | 2 +- .../oss/pages/OssPage/MenuOssTabs.tsx | 3 +- .../oss/pages/OssPage/OssEditContext.tsx | 9 ++--- .../features/rsform/backend/RSFormLoader.ts | 5 ++- .../src/features/rsform/backend/api.ts | 33 ++++++++----------- .../rsform/backend/useCheckConstituenta.tsx | 4 +-- .../features/rsform/backend/useCstCreate.tsx | 5 ++- .../features/rsform/backend/useCstDelete.tsx | 5 ++- .../features/rsform/backend/useCstMove.tsx | 5 ++- .../features/rsform/backend/useCstRename.tsx | 5 ++- .../rsform/backend/useCstSubstitute.tsx | 5 ++- .../features/rsform/backend/useCstUpdate.tsx | 5 ++- .../rsform/backend/useDownloadRSForm.tsx | 4 +-- .../rsform/backend/useInlineSynthesis.tsx | 2 +- .../rsform/backend/useMutatingRSForm.tsx | 2 +- .../rsform/backend/useProduceStructure.tsx | 5 ++- .../src/features/rsform/backend/useRSForm.tsx | 8 ++--- .../features/rsform/backend/useRSForms.tsx | 4 +-- .../rsform/backend/useResetAliases.tsx | 5 ++- .../rsform/backend/useRestoreOrder.tsx | 5 ++- .../features/rsform/backend/useUploadTRS.tsx | 2 +- .../rsform/components/PickSubstitutions.tsx | 3 +- .../dialogs/DlgCstTemplate/TabTemplate.tsx | 2 +- .../dialogs/DlgInlineSynthesis/TabSource.tsx | 6 ++-- .../rsform/dialogs/DlgUploadRSForm.tsx | 3 +- .../src/features/rsform/models/rsform.ts | 14 ++++---- .../ToolbarConstituenta.tsx | 2 +- .../EditorRSFormCard/EditorRSFormCard.tsx | 2 +- .../EditorRSFormCard/FormRSForm.tsx | 7 ++-- .../EditorRSFormCard/ToolbarRSFormCard.tsx | 11 +++---- .../EditorRSFormCard/ToolbarVersioning.tsx | 2 +- .../RSFormPage/EditorRSList/ToolbarRSList.tsx | 2 +- .../EditorTermGraph/SchemasGuide.tsx | 5 ++- .../EditorTermGraph/ToolbarTermGraph.tsx | 2 +- .../rsform/pages/RSFormPage/MenuRSTabs.tsx | 3 +- .../rsform/pages/RSFormPage/RSEditContext.tsx | 23 ++++++------- .../rsform/pages/RSFormPage/RSFormPage.tsx | 3 +- .../ViewConstituents/ViewConstituents.tsx | 3 +- .../frontend/src/features/users/index.ts | 2 +- .../src/features/users/models/user.ts | 10 ------ .../src/features/users/stores/role.ts | 10 +++++- rsconcept/frontend/src/stores/dialogs.ts | 6 ++-- rsconcept/frontend/src/utils/labels.ts | 2 +- 88 files changed, 275 insertions(+), 324 deletions(-) rename rsconcept/frontend/src/features/{rsform => library}/components/MiniSelectorOSS.tsx (88%) rename rsconcept/frontend/src/features/{rsform => library}/components/PickSchema.tsx (93%) rename rsconcept/frontend/src/features/{rsform => library}/components/SelectVersion.tsx (74%) rename rsconcept/frontend/src/features/{rsform/pages/RSFormPage/EditorRSFormCard => library/components}/ToolbarItemAccess.tsx (78%) rename rsconcept/frontend/src/features/{rsform => library}/dialogs/DlgCloneLibraryItem.tsx (88%) rename rsconcept/frontend/src/features/{rsform => library}/dialogs/DlgCreateVersion.tsx (77%) rename rsconcept/frontend/src/features/{rsform => library}/dialogs/DlgEditVersions/DlgEditVersions.tsx (85%) rename rsconcept/frontend/src/features/{rsform => library}/dialogs/DlgEditVersions/TableVersions.tsx (92%) rename rsconcept/frontend/src/features/{rsform => library}/dialogs/DlgEditVersions/index.tsx (100%) create mode 100644 rsconcept/frontend/src/features/library/index.ts diff --git a/rsconcept/frontend/src/app/GlobalDialogs.tsx b/rsconcept/frontend/src/app/GlobalDialogs.tsx index ffa6afe6..45b19a74 100644 --- a/rsconcept/frontend/src/app/GlobalDialogs.tsx +++ b/rsconcept/frontend/src/app/GlobalDialogs.tsx @@ -6,17 +6,17 @@ import { DialogType, useDialogsStore } from '@/stores/dialogs'; const DlgChangeInputSchema = React.lazy(() => import('@/features/oss/dialogs/DlgChangeInputSchema')); const DlgChangeLocation = React.lazy(() => import('@/features/library/dialogs/DlgChangeLocation')); -const DlgCloneLibraryItem = React.lazy(() => import('@/features/rsform/dialogs/DlgCloneLibraryItem')); +const DlgCloneLibraryItem = React.lazy(() => import('@/features/library/dialogs/DlgCloneLibraryItem')); const DlgCreateCst = React.lazy(() => import('@/features/rsform/dialogs/DlgCreateCst')); const DlgCreateOperation = React.lazy(() => import('@/features/oss/dialogs/DlgCreateOperation')); -const DlgCreateVersion = React.lazy(() => import('@/features/rsform/dialogs/DlgCreateVersion')); +const DlgCreateVersion = React.lazy(() => import('@/features/library/dialogs/DlgCreateVersion')); const DlgCstTemplate = React.lazy(() => import('@/features/rsform/dialogs/DlgCstTemplate')); const DlgDeleteCst = React.lazy(() => import('@/features/rsform/dialogs/DlgDeleteCst')); const DlgDeleteOperation = React.lazy(() => import('@/features/oss/dialogs/DlgDeleteOperation')); const DlgEditEditors = React.lazy(() => import('@/features/library/dialogs/DlgEditEditors')); const DlgEditOperation = React.lazy(() => import('@/features/oss/dialogs/DlgEditOperation')); const DlgEditReference = React.lazy(() => import('@/features/rsform/dialogs/DlgEditReference')); -const DlgEditVersions = React.lazy(() => import('@/features/rsform/dialogs/DlgEditVersions')); +const DlgEditVersions = React.lazy(() => import('@/features/library/dialogs/DlgEditVersions')); const DlgEditWordForms = React.lazy(() => import('@/features/rsform/dialogs/DlgEditWordForms')); const DlgGraphParams = React.lazy(() => import('@/features/rsform/dialogs/DlgGraphParams')); const DlgInlineSynthesis = React.lazy(() => import('@/features/rsform/dialogs/DlgInlineSynthesis')); diff --git a/rsconcept/frontend/src/components/Input/SearchBar.tsx b/rsconcept/frontend/src/components/Input/SearchBar.tsx index cce2c634..cb4812e1 100644 --- a/rsconcept/frontend/src/components/Input/SearchBar.tsx +++ b/rsconcept/frontend/src/components/Input/SearchBar.tsx @@ -2,9 +2,10 @@ import clsx from 'clsx'; import { Overlay } from '@/components/Container'; import { IconSearch } from '@/components/Icons'; -import { TextInput } from '@/components/Input'; import { CProps } from '@/components/props'; +import { TextInput } from './TextInput'; + interface SearchBarProps extends CProps.Styling { /** Id of the search bar. */ id?: string; diff --git a/rsconcept/frontend/src/features/library/backend/useFolders.tsx b/rsconcept/frontend/src/features/library/backend/useFolders.tsx index 399985cd..b266e01e 100644 --- a/rsconcept/frontend/src/features/library/backend/useFolders.tsx +++ b/rsconcept/frontend/src/features/library/backend/useFolders.tsx @@ -1,5 +1,4 @@ -import { FolderTree } from '@/features/library/models/FolderTree'; - +import { FolderTree } from '../models/FolderTree'; import { LocationHead } from '../models/library'; import { useLibrary } from './useLibrary'; diff --git a/rsconcept/frontend/src/features/library/backend/useUpdateTimestamp.tsx b/rsconcept/frontend/src/features/library/backend/useUpdateTimestamp.tsx index cedcd851..37d73b39 100644 --- a/rsconcept/frontend/src/features/library/backend/useUpdateTimestamp.tsx +++ b/rsconcept/frontend/src/features/library/backend/useUpdateTimestamp.tsx @@ -1,12 +1,12 @@ import { useQueryClient } from '@tanstack/react-query'; -import { ILibraryItem, LibraryItemID } from '../models/library'; +import { ILibraryItem } from '../models/library'; import { libraryApi } from './api'; export function useUpdateTimestamp() { const client = useQueryClient(); return { - updateTimestamp: (target: LibraryItemID) => + updateTimestamp: (target: number) => client.setQueryData( libraryApi.libraryListKey, // (prev: ILibraryItem[] | undefined) => diff --git a/rsconcept/frontend/src/features/library/components/EditorLibraryItem.tsx b/rsconcept/frontend/src/features/library/components/EditorLibraryItem.tsx index 62502895..8fd538f0 100644 --- a/rsconcept/frontend/src/features/library/components/EditorLibraryItem.tsx +++ b/rsconcept/frontend/src/features/library/components/EditorLibraryItem.tsx @@ -16,8 +16,7 @@ import { import { Loader } from '@/components/Loader'; import { CProps } from '@/components/props'; import { ValueIcon } from '@/components/View'; -import { InfoUsers, SelectUser, useLabelUser, useRoleStore } from '@/features/users'; -import { UserRole } from '@/features/users/models/user'; +import { InfoUsers, SelectUser, useLabelUser, useRoleStore, UserRole } from '@/features/users'; import { useDialogsStore } from '@/stores/dialogs'; import { useModificationStore } from '@/stores/modification'; import { prefixes } from '@/utils/constants'; @@ -26,9 +25,20 @@ import { promptText } from '@/utils/labels'; import { useMutatingLibrary } from '../backend/useMutatingLibrary'; import { useSetLocation } from '../backend/useSetLocation'; import { useSetOwner } from '../backend/useSetOwner'; -import { ILibraryItemEditor } from '../models/library'; +import { ILibraryItemData } from '../models/library'; import { useLibrarySearchStore } from '../stores/librarySearch'; +/** + * Represents common {@link ILibraryItem} editor controller. + */ +export interface ILibraryItemEditor { + schema: ILibraryItemData; + deleteSchema: () => void; + + isMutable: boolean; + isAttachedToOSS: boolean; +} + interface EditorLibraryItemProps { controller: ILibraryItemEditor; } diff --git a/rsconcept/frontend/src/features/rsform/components/MiniSelectorOSS.tsx b/rsconcept/frontend/src/features/library/components/MiniSelectorOSS.tsx similarity index 88% rename from rsconcept/frontend/src/features/rsform/components/MiniSelectorOSS.tsx rename to rsconcept/frontend/src/features/library/components/MiniSelectorOSS.tsx index 7b0f07d4..76f2a17a 100644 --- a/rsconcept/frontend/src/features/rsform/components/MiniSelectorOSS.tsx +++ b/rsconcept/frontend/src/features/library/components/MiniSelectorOSS.tsx @@ -7,15 +7,16 @@ import { Dropdown, DropdownButton, useDropdown } from '@/components/Dropdown'; import { IconOSS } from '@/components/Icons'; import { Label } from '@/components/Input'; import { CProps } from '@/components/props'; -import { ILibraryItemReference } from '@/features/library/models/library'; import { prefixes } from '@/utils/constants'; +import { ILibraryItemReference } from '../models/library'; + interface MiniSelectorOSSProps extends CProps.Styling { items: ILibraryItemReference[]; onSelect: (event: CProps.EventMouse, newValue: ILibraryItemReference) => void; } -function MiniSelectorOSS({ items, onSelect, className, ...restProps }: MiniSelectorOSSProps) { +export function MiniSelectorOSS({ items, onSelect, className, ...restProps }: MiniSelectorOSSProps) { const ossMenu = useDropdown(); function onToggle(event: CProps.EventMouse) { @@ -50,5 +51,3 @@ function MiniSelectorOSS({ items, onSelect, className, ...restProps }: MiniSelec ); } - -export default MiniSelectorOSS; diff --git a/rsconcept/frontend/src/features/rsform/components/PickSchema.tsx b/rsconcept/frontend/src/features/library/components/PickSchema.tsx similarity index 93% rename from rsconcept/frontend/src/features/rsform/components/PickSchema.tsx rename to rsconcept/frontend/src/features/library/components/PickSchema.tsx index 365ec192..ac911919 100644 --- a/rsconcept/frontend/src/features/rsform/components/PickSchema.tsx +++ b/rsconcept/frontend/src/features/library/components/PickSchema.tsx @@ -9,17 +9,17 @@ import { Dropdown, useDropdown } from '@/components/Dropdown'; import { IconClose, IconFolderTree } from '@/components/Icons'; import { SearchBar } from '@/components/Input'; import { CProps } from '@/components/props'; -import { ILibraryItem, LibraryItemID, LibraryItemType } from '@/features/library/models/library'; -import { matchLibraryItem } from '@/features/library/models/libraryAPI'; import { APP_COLORS } from '@/styling/colors'; import { prefixes } from '@/utils/constants'; -import SelectLocation from '../../library/components/SelectLocation'; +import { ILibraryItem, LibraryItemType } from '../models/library'; +import { matchLibraryItem } from '../models/libraryAPI'; +import SelectLocation from './SelectLocation'; interface PickSchemaProps extends CProps.Styling { id?: string; - value: LibraryItemID | null; - onChange: (newValue: LibraryItemID) => void; + value: number | null; + onChange: (newValue: number) => void; initialFilter?: string; rows?: number; diff --git a/rsconcept/frontend/src/features/library/components/SelectAccessPolicy.tsx b/rsconcept/frontend/src/features/library/components/SelectAccessPolicy.tsx index 43258ee8..6a72083a 100644 --- a/rsconcept/frontend/src/features/library/components/SelectAccessPolicy.tsx +++ b/rsconcept/frontend/src/features/library/components/SelectAccessPolicy.tsx @@ -17,7 +17,7 @@ interface SelectAccessPolicyProps extends CProps.Styling { stretchLeft?: boolean; } -function SelectAccessPolicy({ value, disabled, stretchLeft, onChange, ...restProps }: SelectAccessPolicyProps) { +export function SelectAccessPolicy({ value, disabled, stretchLeft, onChange, ...restProps }: SelectAccessPolicyProps) { const menu = useDropdown(); function handleChange(newValue: AccessPolicy) { @@ -51,5 +51,3 @@ function SelectAccessPolicy({ value, disabled, stretchLeft, onChange, ...restPro ); } - -export default SelectAccessPolicy; diff --git a/rsconcept/frontend/src/features/library/components/SelectItemType.tsx b/rsconcept/frontend/src/features/library/components/SelectItemType.tsx index 3d654d1e..86d38606 100644 --- a/rsconcept/frontend/src/features/library/components/SelectItemType.tsx +++ b/rsconcept/frontend/src/features/library/components/SelectItemType.tsx @@ -16,7 +16,7 @@ interface SelectItemTypeProps extends CProps.Styling { stretchLeft?: boolean; } -function SelectItemType({ value, disabled, stretchLeft, onChange, ...restProps }: SelectItemTypeProps) { +export function SelectItemType({ value, disabled, stretchLeft, onChange, ...restProps }: SelectItemTypeProps) { const menu = useDropdown(); function handleChange(newValue: LibraryItemType) { @@ -52,5 +52,3 @@ function SelectItemType({ value, disabled, stretchLeft, onChange, ...restProps } ); } - -export default SelectItemType; diff --git a/rsconcept/frontend/src/features/library/components/SelectLibraryItem.tsx b/rsconcept/frontend/src/features/library/components/SelectLibraryItem.tsx index 4df1585e..b7eec2d4 100644 --- a/rsconcept/frontend/src/features/library/components/SelectLibraryItem.tsx +++ b/rsconcept/frontend/src/features/library/components/SelectLibraryItem.tsx @@ -5,7 +5,7 @@ import clsx from 'clsx'; import { SelectSingle } from '@/components/Input'; import { CProps } from '@/components/props'; -import { ILibraryItem, LibraryItemID } from '../models/library'; +import { ILibraryItem } from '../models/library'; import { matchLibraryItem } from '../models/libraryAPI'; interface SelectLibraryItemProps extends CProps.Styling { @@ -17,7 +17,7 @@ interface SelectLibraryItemProps extends CProps.Styling { noBorder?: boolean; } -function SelectLibraryItem({ +export function SelectLibraryItem({ className, items, value, @@ -31,7 +31,7 @@ function SelectLibraryItem({ label: `${cst.alias}: ${cst.title}` })) ?? []; - function filter(option: { value: LibraryItemID | undefined; label: string }, inputValue: string) { + function filter(option: { value: number | undefined; label: string }, inputValue: string) { const item = items?.find(item => item.id === option.value); return !item ? false : matchLibraryItem(item, inputValue); } @@ -49,5 +49,3 @@ function SelectLibraryItem({ /> ); } - -export default SelectLibraryItem; diff --git a/rsconcept/frontend/src/features/library/components/SelectLocation.tsx b/rsconcept/frontend/src/features/library/components/SelectLocation.tsx index 21da62ef..1135dc6a 100644 --- a/rsconcept/frontend/src/features/library/components/SelectLocation.tsx +++ b/rsconcept/frontend/src/features/library/components/SelectLocation.tsx @@ -6,10 +6,10 @@ import { useEffect, useState } from 'react'; import { MiniButton } from '@/components/Control'; import { IconFolder, IconFolderClosed, IconFolderEmpty, IconFolderOpened } from '@/components/Icons'; import { CProps } from '@/components/props'; -import { FolderNode } from '@/features/library/models/FolderTree'; import { useFolders } from '../backend/useFolders'; import { labelFolderNode } from '../labels'; +import { FolderNode } from '../models/FolderTree'; interface SelectLocationProps extends CProps.Styling { value: string; diff --git a/rsconcept/frontend/src/features/library/components/SelectLocationContext.tsx b/rsconcept/frontend/src/features/library/components/SelectLocationContext.tsx index 8b3a48bc..c2356779 100644 --- a/rsconcept/frontend/src/features/library/components/SelectLocationContext.tsx +++ b/rsconcept/frontend/src/features/library/components/SelectLocationContext.tsx @@ -17,7 +17,7 @@ interface SelectLocationContextProps extends CProps.Styling { stretchTop?: boolean; } -function SelectLocationContext({ +export function SelectLocationContext({ value, title = 'Проводник...', onChange, @@ -56,5 +56,3 @@ function SelectLocationContext({ ); } - -export default SelectLocationContext; diff --git a/rsconcept/frontend/src/features/library/components/SelectLocationHead.tsx b/rsconcept/frontend/src/features/library/components/SelectLocationHead.tsx index 419ba58f..f0dbd213 100644 --- a/rsconcept/frontend/src/features/library/components/SelectLocationHead.tsx +++ b/rsconcept/frontend/src/features/library/components/SelectLocationHead.tsx @@ -17,7 +17,13 @@ interface SelectLocationHeadProps extends CProps.Styling { excluded?: LocationHead[]; } -function SelectLocationHead({ value, excluded = [], onChange, className, ...restProps }: SelectLocationHeadProps) { +export function SelectLocationHead({ + value, + excluded = [], + onChange, + className, + ...restProps +}: SelectLocationHeadProps) { const menu = useDropdown(); function handleChange(newValue: LocationHead) { @@ -60,5 +66,3 @@ function SelectLocationHead({ value, excluded = [], onChange, className, ...rest ); } - -export default SelectLocationHead; diff --git a/rsconcept/frontend/src/features/rsform/components/SelectVersion.tsx b/rsconcept/frontend/src/features/library/components/SelectVersion.tsx similarity index 74% rename from rsconcept/frontend/src/features/rsform/components/SelectVersion.tsx rename to rsconcept/frontend/src/features/library/components/SelectVersion.tsx index a1bbc623..a21f8608 100644 --- a/rsconcept/frontend/src/features/rsform/components/SelectVersion.tsx +++ b/rsconcept/frontend/src/features/library/components/SelectVersion.tsx @@ -4,21 +4,21 @@ import clsx from 'clsx'; import { SelectSingle } from '@/components/Input'; import { CProps } from '@/components/props'; -import { IVersionInfo, VersionID } from '@/features/library/models/library'; -import { labelVersion } from '../labels'; +import { labelVersion } from '../../rsform/labels'; +import { IVersionInfo } from '../models/library'; interface SelectVersionProps extends CProps.Styling { id?: string; items?: IVersionInfo[]; - value?: VersionID; - onChange: (newValue?: VersionID) => void; + value?: number; + onChange: (newValue?: number) => void; placeholder?: string; noBorder?: boolean; } -function SelectVersion({ id, className, items, value, onChange, ...restProps }: SelectVersionProps) { +export function SelectVersion({ id, className, items, value, onChange, ...restProps }: SelectVersionProps) { const options = [ { value: undefined, @@ -46,5 +46,3 @@ function SelectVersion({ id, className, items, value, onChange, ...restProps }: /> ); } - -export default SelectVersion; diff --git a/rsconcept/frontend/src/features/rsform/pages/RSFormPage/EditorRSFormCard/ToolbarItemAccess.tsx b/rsconcept/frontend/src/features/library/components/ToolbarItemAccess.tsx similarity index 78% rename from rsconcept/frontend/src/features/rsform/pages/RSFormPage/EditorRSFormCard/ToolbarItemAccess.tsx rename to rsconcept/frontend/src/features/library/components/ToolbarItemAccess.tsx index 71d295b4..f8b83689 100644 --- a/rsconcept/frontend/src/features/rsform/pages/RSFormPage/EditorRSFormCard/ToolbarItemAccess.tsx +++ b/rsconcept/frontend/src/features/library/components/ToolbarItemAccess.tsx @@ -4,14 +4,15 @@ import { VisibilityIcon } from '@/components/DomainIcons'; import { IconImmutable, IconMutable } from '@/components/Icons'; import { Label } from '@/components/Input'; import { BadgeHelp, HelpTopic } from '@/features/help'; -import { useMutatingLibrary } from '@/features/library/backend/useMutatingLibrary'; -import { useSetAccessPolicy } from '@/features/library/backend/useSetAccessPolicy'; -import SelectAccessPolicy from '@/features/library/components/SelectAccessPolicy'; -import { AccessPolicy, ILibraryItemEditor } from '@/features/library/models/library'; -import { useRoleStore } from '@/features/users'; -import { UserRole } from '@/features/users/models/user'; +import { useRoleStore, UserRole } from '@/features/users'; import { PARAMETER } from '@/utils/constants'; +import { useMutatingLibrary } from '../backend/useMutatingLibrary'; +import { useSetAccessPolicy } from '../backend/useSetAccessPolicy'; +import { AccessPolicy } from '../models/library'; +import { ILibraryItemEditor } from './EditorLibraryItem'; +import { SelectAccessPolicy } from './SelectAccessPolicy'; + interface ToolbarItemAccessProps { visible: boolean; toggleVisible: () => void; @@ -20,7 +21,13 @@ interface ToolbarItemAccessProps { controller: ILibraryItemEditor; } -function ToolbarItemAccess({ visible, toggleVisible, readOnly, toggleReadOnly, controller }: ToolbarItemAccessProps) { +export function ToolbarItemAccess({ + visible, + toggleVisible, + readOnly, + toggleReadOnly, + controller +}: ToolbarItemAccessProps) { const role = useRoleStore(state => state.role); const isProcessing = useMutatingLibrary(); const policy = controller.schema.access_policy; @@ -65,5 +72,3 @@ function ToolbarItemAccess({ visible, toggleVisible, readOnly, toggleReadOnly, c ); } - -export default ToolbarItemAccess; diff --git a/rsconcept/frontend/src/features/library/dialogs/DlgChangeLocation.tsx b/rsconcept/frontend/src/features/library/dialogs/DlgChangeLocation.tsx index 40f132ce..269c7589 100644 --- a/rsconcept/frontend/src/features/library/dialogs/DlgChangeLocation.tsx +++ b/rsconcept/frontend/src/features/library/dialogs/DlgChangeLocation.tsx @@ -12,8 +12,8 @@ import { useDialogsStore } from '@/stores/dialogs'; import { limits } from '@/utils/constants'; import { errorMsg } from '@/utils/labels'; -import SelectLocationContext from '../components/SelectLocationContext'; -import SelectLocationHead from '../components/SelectLocationHead'; +import { SelectLocationContext } from '../components/SelectLocationContext'; +import { SelectLocationHead } from '../components/SelectLocationHead'; import { LocationHead } from '../models/library'; import { combineLocation, validateLocation } from '../models/libraryAPI'; diff --git a/rsconcept/frontend/src/features/rsform/dialogs/DlgCloneLibraryItem.tsx b/rsconcept/frontend/src/features/library/dialogs/DlgCloneLibraryItem.tsx similarity index 88% rename from rsconcept/frontend/src/features/rsform/dialogs/DlgCloneLibraryItem.tsx rename to rsconcept/frontend/src/features/library/dialogs/DlgCloneLibraryItem.tsx index 3674f1d0..beddf13e 100644 --- a/rsconcept/frontend/src/features/rsform/dialogs/DlgCloneLibraryItem.tsx +++ b/rsconcept/frontend/src/features/library/dialogs/DlgCloneLibraryItem.tsx @@ -10,21 +10,20 @@ import { VisibilityIcon } from '@/components/DomainIcons'; import { Checkbox, Label, TextArea, TextInput } from '@/components/Input'; import { ModalForm } from '@/components/Modal'; import { useAuthSuspense } from '@/features/auth'; -import { ICloneLibraryItemDTO, schemaCloneLibraryItem } from '@/features/library/backend/api'; -import { useCloneItem } from '@/features/library/backend/useCloneItem'; -import SelectAccessPolicy from '@/features/library/components/SelectAccessPolicy'; -import SelectLocationContext from '@/features/library/components/SelectLocationContext'; -import SelectLocationHead from '@/features/library/components/SelectLocationHead'; -import { AccessPolicy, ILibraryItem, LocationHead } from '@/features/library/models/library'; -import { cloneTitle, combineLocation } from '@/features/library/models/libraryAPI'; import { useDialogsStore } from '@/stores/dialogs'; -import { ConstituentaID } from '../models/rsform'; +import { ICloneLibraryItemDTO, schemaCloneLibraryItem } from '../backend/api'; +import { useCloneItem } from '../backend/useCloneItem'; +import { SelectAccessPolicy } from '../components/SelectAccessPolicy'; +import { SelectLocationContext } from '../components/SelectLocationContext'; +import { SelectLocationHead } from '../components/SelectLocationHead'; +import { AccessPolicy, ILibraryItem, LocationHead } from '../models/library'; +import { cloneTitle, combineLocation } from '../models/libraryAPI'; export interface DlgCloneLibraryItemProps { base: ILibraryItem; initialLocation: string; - selected: ConstituentaID[]; + selected: number[]; totalCount: number; } diff --git a/rsconcept/frontend/src/features/rsform/dialogs/DlgCreateVersion.tsx b/rsconcept/frontend/src/features/library/dialogs/DlgCreateVersion.tsx similarity index 77% rename from rsconcept/frontend/src/features/rsform/dialogs/DlgCreateVersion.tsx rename to rsconcept/frontend/src/features/library/dialogs/DlgCreateVersion.tsx index 7bc162bc..f165298c 100644 --- a/rsconcept/frontend/src/features/rsform/dialogs/DlgCreateVersion.tsx +++ b/rsconcept/frontend/src/features/library/dialogs/DlgCreateVersion.tsx @@ -6,31 +6,26 @@ import { Controller, useForm, useWatch } from 'react-hook-form'; import { Checkbox, TextArea, TextInput } from '@/components/Input'; import { ModalForm } from '@/components/Modal'; -import { IVersionCreateDTO, schemaVersionCreate } from '@/features/library/backend/api'; -import { useVersionCreate } from '@/features/library/backend/useVersionCreate'; -import { IVersionInfo, LibraryItemID, VersionID } from '@/features/library/models/library'; -import { nextVersion } from '@/features/library/models/libraryAPI'; import { useDialogsStore } from '@/stores/dialogs'; import { errorMsg } from '@/utils/labels'; -import { ConstituentaID } from '../models/rsform'; +import { IVersionCreateDTO, schemaVersionCreate } from '../backend/api'; +import { useVersionCreate } from '../backend/useVersionCreate'; +import { IVersionInfo } from '../models/library'; +import { nextVersion } from '../models/libraryAPI'; export interface DlgCreateVersionProps { - itemID: LibraryItemID; + itemID: number; versions: IVersionInfo[]; - onCreate: (newVersion: VersionID) => void; - selected: ConstituentaID[]; + onCreate: (newVersion: number) => void; + selected: number[]; totalCount: number; } function DlgCreateVersion() { - const { - itemID, // - versions, - selected, - totalCount, - onCreate - } = useDialogsStore(state => state.props as DlgCreateVersionProps); + const { itemID, versions, selected, totalCount, onCreate } = useDialogsStore( + state => state.props as DlgCreateVersionProps + ); const { versionCreate } = useVersionCreate(); const { register, handleSubmit, control } = useForm({ diff --git a/rsconcept/frontend/src/features/rsform/dialogs/DlgEditVersions/DlgEditVersions.tsx b/rsconcept/frontend/src/features/library/dialogs/DlgEditVersions/DlgEditVersions.tsx similarity index 85% rename from rsconcept/frontend/src/features/rsform/dialogs/DlgEditVersions/DlgEditVersions.tsx rename to rsconcept/frontend/src/features/library/dialogs/DlgEditVersions/DlgEditVersions.tsx index ccbeaf18..4a91c2a9 100644 --- a/rsconcept/frontend/src/features/rsform/dialogs/DlgEditVersions/DlgEditVersions.tsx +++ b/rsconcept/frontend/src/features/library/dialogs/DlgEditVersions/DlgEditVersions.tsx @@ -9,20 +9,19 @@ import { MiniButton } from '@/components/Control'; import { IconReset, IconSave } from '@/components/Icons'; import { TextArea, TextInput } from '@/components/Input'; import { ModalView } from '@/components/Modal'; -import { IVersionUpdateDTO, schemaVersionUpdate } from '@/features/library/backend/api'; -import { useMutatingLibrary } from '@/features/library/backend/useMutatingLibrary'; -import { useVersionDelete } from '@/features/library/backend/useVersionDelete'; -import { useVersionUpdate } from '@/features/library/backend/useVersionUpdate'; -import { LibraryItemID, VersionID } from '@/features/library/models/library'; +import { useRSFormSuspense } from '@/features/rsform/backend/useRSForm'; import { useDialogsStore } from '@/stores/dialogs'; import { errorMsg } from '@/utils/labels'; -import { useRSFormSuspense } from '../../backend/useRSForm'; +import { IVersionUpdateDTO, schemaVersionUpdate } from '../../backend/api'; +import { useMutatingLibrary } from '../../backend/useMutatingLibrary'; +import { useVersionDelete } from '../../backend/useVersionDelete'; +import { useVersionUpdate } from '../../backend/useVersionUpdate'; import TableVersions from './TableVersions'; export interface DlgEditVersionsProps { - itemID: LibraryItemID; - afterDelete: (targetVersion: VersionID) => void; + itemID: number; + afterDelete: (targetVersion: number) => void; } function DlgEditVersions() { @@ -56,7 +55,7 @@ function DlgEditVersions() { [schema, versionID, versionName] ); - function handleSelectVersion(targetVersion: VersionID) { + function handleSelectVersion(targetVersion: number) { const ver = schema.versions.find(ver => ver.id === targetVersion); if (!ver) { return; @@ -64,7 +63,7 @@ function DlgEditVersions() { reset({ ...ver }); } - function handleDeleteVersion(targetVersion: VersionID) { + function handleDeleteVersion(targetVersion: number) { const nextVer = schema.versions.find(ver => ver.id !== targetVersion); void versionDelete({ itemID: itemID, versionID: targetVersion }).then(() => { if (!nextVer) { diff --git a/rsconcept/frontend/src/features/rsform/dialogs/DlgEditVersions/TableVersions.tsx b/rsconcept/frontend/src/features/library/dialogs/DlgEditVersions/TableVersions.tsx similarity index 92% rename from rsconcept/frontend/src/features/rsform/dialogs/DlgEditVersions/TableVersions.tsx rename to rsconcept/frontend/src/features/library/dialogs/DlgEditVersions/TableVersions.tsx index f62200e7..f1012f05 100644 --- a/rsconcept/frontend/src/features/rsform/dialogs/DlgEditVersions/TableVersions.tsx +++ b/rsconcept/frontend/src/features/library/dialogs/DlgEditVersions/TableVersions.tsx @@ -6,15 +6,16 @@ import { useIntl } from 'react-intl'; import { MiniButton } from '@/components/Control'; import DataTable, { createColumnHelper, IConditionalStyle } from '@/components/DataTable'; import { IconRemove } from '@/components/Icons'; -import { IVersionInfo, VersionID } from '@/features/library/models/library'; import { APP_COLORS } from '@/styling/colors'; +import { IVersionInfo } from '../../models/library'; + interface TableVersionsProps { processing: boolean; items: IVersionInfo[]; - selected?: VersionID; - onDelete: (versionID: VersionID) => void; - onSelect: (versionID: VersionID) => void; + selected?: number; + onDelete: (versionID: number) => void; + onSelect: (versionID: number) => void; } const columnHelper = createColumnHelper(); @@ -22,7 +23,7 @@ const columnHelper = createColumnHelper(); function TableVersions({ processing, items, onDelete, selected, onSelect }: TableVersionsProps) { const intl = useIntl(); - function handleDeleteVersion(event: React.MouseEvent, targetVersion: VersionID) { + function handleDeleteVersion(event: React.MouseEvent, targetVersion: number) { event.preventDefault(); event.stopPropagation(); onDelete(targetVersion); diff --git a/rsconcept/frontend/src/features/rsform/dialogs/DlgEditVersions/index.tsx b/rsconcept/frontend/src/features/library/dialogs/DlgEditVersions/index.tsx similarity index 100% rename from rsconcept/frontend/src/features/rsform/dialogs/DlgEditVersions/index.tsx rename to rsconcept/frontend/src/features/library/dialogs/DlgEditVersions/index.tsx diff --git a/rsconcept/frontend/src/features/library/index.ts b/rsconcept/frontend/src/features/library/index.ts new file mode 100644 index 00000000..ff387c0b --- /dev/null +++ b/rsconcept/frontend/src/features/library/index.ts @@ -0,0 +1,22 @@ +export { libraryApi } from './backend/api'; +export { useDeleteItem } from './backend/useDeleteItem'; +export { useLibrary, useLibrarySuspense } from './backend/useLibrary'; +export { useMutatingLibrary } from './backend/useMutatingLibrary'; +export { useTemplatesSuspense } from './backend/useTemplates'; +export { useUpdateItem } from './backend/useUpdateItem'; +export { useUpdateTimestamp } from './backend/useUpdateTimestamp'; +export { useVersionRestore } from './backend/useVersionRestore'; +export { EditorLibraryItem, type ILibraryItemEditor } from './components/EditorLibraryItem'; +export { MiniSelectorOSS } from './components/MiniSelectorOSS'; +export { PickSchema } from './components/PickSchema'; +export { SelectLibraryItem } from './components/SelectLibraryItem'; +export { SelectVersion } from './components/SelectVersion'; +export { ToolbarItemAccess } from './components/ToolbarItemAccess'; +export { + AccessPolicy, + type ILibraryItem, + type ILibraryItemReference, + type IVersionInfo, + LibraryItemType +} from './models/library'; +export { useLibrarySearchStore } from './stores/librarySearch'; diff --git a/rsconcept/frontend/src/features/library/models/library.ts b/rsconcept/frontend/src/features/library/models/library.ts index f2d91a9d..bd15ef55 100644 --- a/rsconcept/frontend/src/features/library/models/library.ts +++ b/rsconcept/frontend/src/features/library/models/library.ts @@ -90,17 +90,6 @@ export interface ILibraryItemVersioned extends ILibraryItemData { versions: IVersionInfo[]; } -/** - * Represents common {@link ILibraryItem} editor controller. - */ -export interface ILibraryItemEditor { - schema: ILibraryItemData; - deleteSchema: () => void; - - isMutable: boolean; - isAttachedToOSS: boolean; -} - /** * Represents Library filter parameters. */ diff --git a/rsconcept/frontend/src/features/library/pages/CreateItemPage/FormCreateItem.tsx b/rsconcept/frontend/src/features/library/pages/CreateItemPage/FormCreateItem.tsx index f3ec86d5..69db2e0c 100644 --- a/rsconcept/frontend/src/features/library/pages/CreateItemPage/FormCreateItem.tsx +++ b/rsconcept/frontend/src/features/library/pages/CreateItemPage/FormCreateItem.tsx @@ -17,10 +17,10 @@ import { EXTEOR_TRS_FILE } from '@/utils/constants'; import { ICreateLibraryItemDTO, schemaCreateLibraryItem } from '../../backend/api'; import { useCreateItem } from '../../backend/useCreateItem'; -import SelectAccessPolicy from '../../components/SelectAccessPolicy'; -import SelectItemType from '../../components/SelectItemType'; -import SelectLocationContext from '../../components/SelectLocationContext'; -import SelectLocationHead from '../../components/SelectLocationHead'; +import { SelectAccessPolicy } from '../../components/SelectAccessPolicy'; +import { SelectItemType } from '../../components/SelectItemType'; +import { SelectLocationContext } from '../../components/SelectLocationContext'; +import { SelectLocationHead } from '../../components/SelectLocationHead'; import { AccessPolicy, LibraryItemType, LocationHead } from '../../models/library'; import { combineLocation } from '../../models/libraryAPI'; import { useLibrarySearchStore } from '../../stores/librarySearch'; diff --git a/rsconcept/frontend/src/features/library/pages/LibraryPage/ViewSideLocation.tsx b/rsconcept/frontend/src/features/library/pages/LibraryPage/ViewSideLocation.tsx index 3d08731c..d640e721 100644 --- a/rsconcept/frontend/src/features/library/pages/LibraryPage/ViewSideLocation.tsx +++ b/rsconcept/frontend/src/features/library/pages/LibraryPage/ViewSideLocation.tsx @@ -7,7 +7,6 @@ import { IconFolderEdit, IconFolderTree } from '@/components/Icons'; import { CProps } from '@/components/props'; import { useAuthSuspense } from '@/features/auth'; import { BadgeHelp, HelpTopic } from '@/features/help'; -import { FolderNode } from '@/features/library/models/FolderTree'; import useWindowSize from '@/hooks/useWindowSize'; import { useFitHeight } from '@/stores/appLayout'; import { PARAMETER, prefixes } from '@/utils/constants'; @@ -15,6 +14,7 @@ import { infoMsg } from '@/utils/labels'; import { useLibrary } from '../../backend/useLibrary'; import SelectLocation from '../../components/SelectLocation'; +import { FolderNode } from '../../models/FolderTree'; import { useLibrarySearchStore } from '../../stores/librarySearch'; interface ViewSideLocationProps { diff --git a/rsconcept/frontend/src/features/oss/backend/OssLoader.ts b/rsconcept/frontend/src/features/oss/backend/OssLoader.ts index a55990c4..15c236d0 100644 --- a/rsconcept/frontend/src/features/oss/backend/OssLoader.ts +++ b/rsconcept/frontend/src/features/oss/backend/OssLoader.ts @@ -2,7 +2,7 @@ * Module: OSS data loading and processing. */ -import { ILibraryItem, LibraryItemID } from '@/features/library/models/library'; +import { ILibraryItem } from '@/features/library/models/library'; import { IOperation, IOperationSchema, @@ -22,7 +22,7 @@ export class OssLoader { private oss: IOperationSchemaDTO; private graph: Graph = new Graph(); private operationByID = new Map(); - private schemaIDs: LibraryItemID[] = []; + private schemaIDs: number[] = []; private items: ILibraryItem[]; constructor(input: IOperationSchemaDTO, items: ILibraryItem[]) { diff --git a/rsconcept/frontend/src/features/oss/backend/api.ts b/rsconcept/frontend/src/features/oss/backend/api.ts index eecefaa9..3b8a0e87 100644 --- a/rsconcept/frontend/src/features/oss/backend/api.ts +++ b/rsconcept/frontend/src/features/oss/backend/api.ts @@ -3,7 +3,7 @@ import { z } from 'zod'; import { axiosGet, axiosPatch, axiosPost } from '@/backend/apiTransport'; import { DELAYS } from '@/backend/configuration'; -import { ILibraryItem, ILibraryItemData, LibraryItemID } from '@/features/library/models/library'; +import { ILibraryItem, ILibraryItemData } from '@/features/library/models/library'; import { IArgument, ICstSubstituteEx, IOperation, OperationID, OperationType } from '@/features/oss/models/oss'; import { schemaCstSubstitute } from '@/features/rsform/backend/api'; import { IConstituentaReference, ITargetCst } from '@/features/rsform/models/rsform'; @@ -149,7 +149,7 @@ export type ICstRelocateDTO = z.infer; export const ossApi = { baseKey: 'oss', - getOssQueryOptions: ({ itemID }: { itemID?: LibraryItemID }) => { + getOssQueryOptions: ({ itemID }: { itemID?: number }) => { return queryOptions({ queryKey: [ossApi.baseKey, 'item', itemID], staleTime: DELAYS.staleShort, @@ -168,7 +168,7 @@ export const ossApi = { positions, isSilent }: { - itemID: LibraryItemID; + itemID: number; positions: IOperationPosition[]; isSilent?: boolean; }) => @@ -180,7 +180,7 @@ export const ossApi = { } }), - operationCreate: ({ itemID, data }: { itemID: LibraryItemID; data: IOperationCreateDTO }) => + operationCreate: ({ itemID, data }: { itemID: number; data: IOperationCreateDTO }) => axiosPost({ endpoint: `/api/oss/${itemID}/create-operation`, request: { @@ -188,7 +188,7 @@ export const ossApi = { successMessage: response => infoMsg.newOperation(response.new_operation.alias) } }), - operationDelete: ({ itemID, data }: { itemID: LibraryItemID; data: IOperationDeleteDTO }) => + operationDelete: ({ itemID, data }: { itemID: number; data: IOperationDeleteDTO }) => axiosPatch({ endpoint: `/api/oss/${itemID}/delete-operation`, request: { @@ -196,7 +196,7 @@ export const ossApi = { successMessage: infoMsg.operationDestroyed } }), - inputCreate: ({ itemID, data }: { itemID: LibraryItemID; data: ITargetOperation }) => + inputCreate: ({ itemID, data }: { itemID: number; data: ITargetOperation }) => axiosPatch({ endpoint: `/api/oss/${itemID}/create-input`, request: { @@ -204,7 +204,7 @@ export const ossApi = { successMessage: infoMsg.newLibraryItem } }), - inputUpdate: ({ itemID, data }: { itemID: LibraryItemID; data: IInputUpdateDTO }) => + inputUpdate: ({ itemID, data }: { itemID: number; data: IInputUpdateDTO }) => axiosPatch({ endpoint: `/api/oss/${itemID}/set-input`, request: { @@ -212,7 +212,7 @@ export const ossApi = { successMessage: infoMsg.changesSaved } }), - operationUpdate: ({ itemID, data }: { itemID: LibraryItemID; data: IOperationUpdateDTO }) => + operationUpdate: ({ itemID, data }: { itemID: number; data: IOperationUpdateDTO }) => axiosPatch({ endpoint: `/api/oss/${itemID}/update-operation`, request: { @@ -220,7 +220,7 @@ export const ossApi = { successMessage: infoMsg.changesSaved } }), - operationExecute: ({ itemID, data }: { itemID: LibraryItemID; data: ITargetOperation }) => + operationExecute: ({ itemID, data }: { itemID: number; data: ITargetOperation }) => axiosPost({ endpoint: `/api/oss/${itemID}/execute-operation`, request: { diff --git a/rsconcept/frontend/src/features/oss/backend/useInputCreate.tsx b/rsconcept/frontend/src/features/oss/backend/useInputCreate.tsx index 0036ebce..3df53467 100644 --- a/rsconcept/frontend/src/features/oss/backend/useInputCreate.tsx +++ b/rsconcept/frontend/src/features/oss/backend/useInputCreate.tsx @@ -1,7 +1,6 @@ import { useMutation, useQueryClient } from '@tanstack/react-query'; -import { libraryApi } from '@/features/library/backend/api'; -import { LibraryItemID } from '@/features/library/models/library'; +import { libraryApi } from '@/features/library'; import { rsformsApi } from '@/features/rsform/backend/api'; import { ITargetOperation, ossApi } from './api'; @@ -20,7 +19,7 @@ export const useInputCreate = () => { } }); return { - inputCreate: (data: { itemID: LibraryItemID; data: ITargetOperation }) => + inputCreate: (data: { itemID: number; data: ITargetOperation }) => mutation.mutateAsync(data).then(response => response.new_schema) }; }; diff --git a/rsconcept/frontend/src/features/oss/backend/useInputUpdate.tsx b/rsconcept/frontend/src/features/oss/backend/useInputUpdate.tsx index 45bf1ba5..e65580b5 100644 --- a/rsconcept/frontend/src/features/oss/backend/useInputUpdate.tsx +++ b/rsconcept/frontend/src/features/oss/backend/useInputUpdate.tsx @@ -1,7 +1,6 @@ import { useMutation, useQueryClient } from '@tanstack/react-query'; -import { libraryApi } from '@/features/library/backend/api'; -import { LibraryItemID } from '@/features/library/models/library'; +import { libraryApi } from '@/features/library'; import { rsformsApi } from '@/features/rsform/backend/api'; import { IInputUpdateDTO, ossApi } from './api'; @@ -20,6 +19,6 @@ export const useInputUpdate = () => { } }); return { - inputUpdate: (data: { itemID: LibraryItemID; data: IInputUpdateDTO }) => mutation.mutateAsync(data) + inputUpdate: (data: { itemID: number; data: IInputUpdateDTO }) => mutation.mutateAsync(data) }; }; diff --git a/rsconcept/frontend/src/features/oss/backend/useMutatingOss.tsx b/rsconcept/frontend/src/features/oss/backend/useMutatingOss.tsx index fac27d60..37e449fa 100644 --- a/rsconcept/frontend/src/features/oss/backend/useMutatingOss.tsx +++ b/rsconcept/frontend/src/features/oss/backend/useMutatingOss.tsx @@ -1,6 +1,6 @@ import { useIsMutating } from '@tanstack/react-query'; -import { libraryApi } from '@/features/library/backend/api'; +import { libraryApi } from '@/features/library'; import { ossApi } from './api'; diff --git a/rsconcept/frontend/src/features/oss/backend/useOSS.tsx b/rsconcept/frontend/src/features/oss/backend/useOSS.tsx index 2932d83d..dd70c6a8 100644 --- a/rsconcept/frontend/src/features/oss/backend/useOSS.tsx +++ b/rsconcept/frontend/src/features/oss/backend/useOSS.tsx @@ -1,13 +1,12 @@ import { useQuery, useSuspenseQuery } from '@tanstack/react-query'; import { useLibrary, useLibrarySuspense } from '@/features/library/backend/useLibrary'; -import { LibraryItemID } from '@/features/library/models/library'; -import { OssLoader } from '@/features/oss/backend/OssLoader'; import { queryClient } from '../../../backend/queryClient'; import { ossApi } from './api'; +import { OssLoader } from './OssLoader'; -export function useOss({ itemID }: { itemID?: LibraryItemID }) { +export function useOss({ itemID }: { itemID?: number }) { const { items: libraryItems, isLoading: libraryLoading } = useLibrary(); const { data, isLoading, error } = useQuery({ ...ossApi.getOssQueryOptions({ itemID }) @@ -17,7 +16,7 @@ export function useOss({ itemID }: { itemID?: LibraryItemID }) { return { schema: schema, isLoading: isLoading || libraryLoading, error: error }; } -export function useOssSuspense({ itemID }: { itemID: LibraryItemID }) { +export function useOssSuspense({ itemID }: { itemID: number }) { const { items: libraryItems } = useLibrarySuspense(); const { data } = useSuspenseQuery({ ...ossApi.getOssQueryOptions({ itemID }) @@ -26,7 +25,7 @@ export function useOssSuspense({ itemID }: { itemID: LibraryItemID }) { return { schema }; } -export function prefetchOSS({ itemID }: { itemID?: LibraryItemID }) { +export function prefetchOSS({ itemID }: { itemID?: number }) { if (!itemID) { return null; } diff --git a/rsconcept/frontend/src/features/oss/backend/useOperationCreate.tsx b/rsconcept/frontend/src/features/oss/backend/useOperationCreate.tsx index 88458072..86b87eae 100644 --- a/rsconcept/frontend/src/features/oss/backend/useOperationCreate.tsx +++ b/rsconcept/frontend/src/features/oss/backend/useOperationCreate.tsx @@ -1,7 +1,6 @@ import { useMutation, useQueryClient } from '@tanstack/react-query'; -import { useUpdateTimestamp } from '@/features/library/backend/useUpdateTimestamp'; -import { LibraryItemID } from '@/features/library/models/library'; +import { useUpdateTimestamp } from '@/features/library'; import { IOperationCreateDTO, ossApi } from './api'; @@ -17,6 +16,6 @@ export const useOperationCreate = () => { } }); return { - operationCreate: (data: { itemID: LibraryItemID; data: IOperationCreateDTO }) => mutation.mutateAsync(data) + operationCreate: (data: { itemID: number; data: IOperationCreateDTO }) => mutation.mutateAsync(data) }; }; diff --git a/rsconcept/frontend/src/features/oss/backend/useOperationDelete.tsx b/rsconcept/frontend/src/features/oss/backend/useOperationDelete.tsx index 69bc217d..ae3de11b 100644 --- a/rsconcept/frontend/src/features/oss/backend/useOperationDelete.tsx +++ b/rsconcept/frontend/src/features/oss/backend/useOperationDelete.tsx @@ -1,7 +1,6 @@ import { useMutation, useQueryClient } from '@tanstack/react-query'; -import { libraryApi } from '@/features/library/backend/api'; -import { LibraryItemID } from '@/features/library/models/library'; +import { libraryApi } from '@/features/library'; import { rsformsApi } from '@/features/rsform/backend/api'; import { IOperationDeleteDTO, ossApi } from './api'; @@ -20,6 +19,6 @@ export const useOperationDelete = () => { } }); return { - operationDelete: (data: { itemID: LibraryItemID; data: IOperationDeleteDTO }) => mutation.mutateAsync(data) + operationDelete: (data: { itemID: number; data: IOperationDeleteDTO }) => mutation.mutateAsync(data) }; }; diff --git a/rsconcept/frontend/src/features/oss/backend/useOperationExecute.tsx b/rsconcept/frontend/src/features/oss/backend/useOperationExecute.tsx index 8f5da96e..8b3788ae 100644 --- a/rsconcept/frontend/src/features/oss/backend/useOperationExecute.tsx +++ b/rsconcept/frontend/src/features/oss/backend/useOperationExecute.tsx @@ -1,7 +1,6 @@ import { useMutation, useQueryClient } from '@tanstack/react-query'; -import { libraryApi } from '@/features/library/backend/api'; -import { LibraryItemID } from '@/features/library/models/library'; +import { libraryApi } from '@/features/library'; import { rsformsApi } from '@/features/rsform/backend/api'; import { ITargetOperation, ossApi } from './api'; @@ -20,6 +19,6 @@ export const useOperationExecute = () => { } }); return { - operationExecute: (data: { itemID: LibraryItemID; data: ITargetOperation }) => mutation.mutateAsync(data) + operationExecute: (data: { itemID: number; data: ITargetOperation }) => mutation.mutateAsync(data) }; }; diff --git a/rsconcept/frontend/src/features/oss/backend/useOperationUpdate.tsx b/rsconcept/frontend/src/features/oss/backend/useOperationUpdate.tsx index a4481514..3b981d6e 100644 --- a/rsconcept/frontend/src/features/oss/backend/useOperationUpdate.tsx +++ b/rsconcept/frontend/src/features/oss/backend/useOperationUpdate.tsx @@ -1,7 +1,7 @@ import { useMutation, useQueryClient } from '@tanstack/react-query'; -import { libraryApi } from '@/features/library/backend/api'; -import { ILibraryItem, LibraryItemID } from '@/features/library/models/library'; +import { libraryApi } from '@/features/library'; +import { ILibraryItem } from '@/features/library/models/library'; import { rsformsApi } from '@/features/rsform/backend/api'; import { IOperationUpdateDTO, ossApi } from './api'; @@ -30,6 +30,6 @@ export const useOperationUpdate = () => { } }); return { - operationUpdate: (data: { itemID: LibraryItemID; data: IOperationUpdateDTO }) => mutation.mutateAsync(data) + operationUpdate: (data: { itemID: number; data: IOperationUpdateDTO }) => mutation.mutateAsync(data) }; }; diff --git a/rsconcept/frontend/src/features/oss/backend/useRelocateConstituents.tsx b/rsconcept/frontend/src/features/oss/backend/useRelocateConstituents.tsx index 4067fb5f..465df171 100644 --- a/rsconcept/frontend/src/features/oss/backend/useRelocateConstituents.tsx +++ b/rsconcept/frontend/src/features/oss/backend/useRelocateConstituents.tsx @@ -1,6 +1,6 @@ import { useMutation, useQueryClient } from '@tanstack/react-query'; -import { libraryApi } from '@/features/library/backend/api'; +import { libraryApi } from '@/features/library'; import { rsformsApi } from '@/features/rsform/backend/api'; import { ICstRelocateDTO, ossApi } from './api'; diff --git a/rsconcept/frontend/src/features/oss/backend/useUpdatePositions.tsx b/rsconcept/frontend/src/features/oss/backend/useUpdatePositions.tsx index cd138f42..fbda7ca6 100644 --- a/rsconcept/frontend/src/features/oss/backend/useUpdatePositions.tsx +++ b/rsconcept/frontend/src/features/oss/backend/useUpdatePositions.tsx @@ -1,7 +1,6 @@ import { useMutation } from '@tanstack/react-query'; -import { useUpdateTimestamp } from '@/features/library/backend/useUpdateTimestamp'; -import { LibraryItemID } from '@/features/library/models/library'; +import { useUpdateTimestamp } from '@/features/library'; import { IOperationPosition, ossApi } from './api'; @@ -14,7 +13,7 @@ export const useUpdatePositions = () => { }); return { updatePositions: (data: { - itemID: LibraryItemID; // + itemID: number; // positions: IOperationPosition[]; isSilent?: boolean; }) => mutation.mutateAsync(data) diff --git a/rsconcept/frontend/src/features/oss/dialogs/DlgChangeInputSchema.tsx b/rsconcept/frontend/src/features/oss/dialogs/DlgChangeInputSchema.tsx index c85b23be..7e5cb4b9 100644 --- a/rsconcept/frontend/src/features/oss/dialogs/DlgChangeInputSchema.tsx +++ b/rsconcept/frontend/src/features/oss/dialogs/DlgChangeInputSchema.tsx @@ -8,9 +8,7 @@ import { MiniButton } from '@/components/Control'; import { IconReset } from '@/components/Icons'; import { Label } from '@/components/Input'; import { ModalForm } from '@/components/Modal'; -import { useLibrary } from '@/features/library/backend/useLibrary'; -import { ILibraryItem, LibraryItemType } from '@/features/library/models/library'; -import { PickSchema } from '@/features/rsform/components/PickSchema'; +import { ILibraryItem, LibraryItemType, PickSchema, useLibrary } from '@/features/library'; import { useDialogsStore } from '@/stores/dialogs'; import { IInputUpdateDTO, IOperationPosition, schemaInputUpdate } from '../backend/api'; diff --git a/rsconcept/frontend/src/features/oss/dialogs/DlgCreateOperation/TabInputOperation.tsx b/rsconcept/frontend/src/features/oss/dialogs/DlgCreateOperation/TabInputOperation.tsx index fca956c9..c9f51cf5 100644 --- a/rsconcept/frontend/src/features/oss/dialogs/DlgCreateOperation/TabInputOperation.tsx +++ b/rsconcept/frontend/src/features/oss/dialogs/DlgCreateOperation/TabInputOperation.tsx @@ -5,13 +5,11 @@ import { Controller, useFormContext, useWatch } from 'react-hook-form'; import { MiniButton } from '@/components/Control'; import { IconReset } from '@/components/Icons'; import { Checkbox, Label, TextArea, TextInput } from '@/components/Input'; -import { useLibrary } from '@/features/library/backend/useLibrary'; -import { ILibraryItem, LibraryItemID, LibraryItemType } from '@/features/library/models/library'; -import { sortItemsForOSS } from '@/features/oss/models/ossAPI'; -import { PickSchema } from '@/features/rsform/components/PickSchema'; +import { ILibraryItem, LibraryItemType, PickSchema, useLibrary } from '@/features/library'; import { useDialogsStore } from '@/stores/dialogs'; import { IOperationCreateDTO } from '../../backend/api'; +import { sortItemsForOSS } from '../../models/ossAPI'; import { DlgCreateOperationProps } from './DlgCreateOperation'; function TabInputOperation() { @@ -38,12 +36,12 @@ function TabInputOperation() { setValue('create_schema', value); } - function handleSetInput(value: LibraryItemID) { - const schema = libraryItems.find(item => item.id === value); + function handleSetInput(inputID: number) { + const schema = libraryItems.find(item => item.id === inputID); if (!schema) { return; } - setValue('item_data.result', value); + setValue('item_data.result', inputID); setValue('create_schema', false); setValue('item_data.alias', schema.alias); setValue('item_data.title', schema.title); diff --git a/rsconcept/frontend/src/features/oss/dialogs/DlgEditOperation/TabArguments.tsx b/rsconcept/frontend/src/features/oss/dialogs/DlgEditOperation/TabArguments.tsx index 903174bc..ef08b449 100644 --- a/rsconcept/frontend/src/features/oss/dialogs/DlgEditOperation/TabArguments.tsx +++ b/rsconcept/frontend/src/features/oss/dialogs/DlgEditOperation/TabArguments.tsx @@ -3,7 +3,6 @@ import { Controller, useFormContext } from 'react-hook-form'; import { FlexColumn } from '@/components/Container'; import { Label } from '@/components/Input'; -import { LibraryItemID } from '@/features/library/models/library'; import { useDialogsStore } from '@/stores/dialogs'; import { IOperationUpdateDTO } from '../../backend/api'; @@ -16,7 +15,7 @@ function TabArguments() { const potentialCycle = [target.id, ...oss.graph.expandAllOutputs([target.id])]; const filtered = oss.items.filter(item => !potentialCycle.includes(item.id)); - function handleChangeArguments(prev: LibraryItemID[], newValue: LibraryItemID[]) { + function handleChangeArguments(prev: number[], newValue: number[]) { setValue('arguments', newValue); if (prev.some(id => !newValue.includes(id))) { setValue('substitutions', []); diff --git a/rsconcept/frontend/src/features/oss/dialogs/DlgRelocateConstituents.tsx b/rsconcept/frontend/src/features/oss/dialogs/DlgRelocateConstituents.tsx index 9199c544..353ecf4a 100644 --- a/rsconcept/frontend/src/features/oss/dialogs/DlgRelocateConstituents.tsx +++ b/rsconcept/frontend/src/features/oss/dialogs/DlgRelocateConstituents.tsx @@ -10,9 +10,7 @@ import { RelocateUpIcon } from '@/components/DomainIcons'; import { Loader } from '@/components/Loader'; import { ModalForm } from '@/components/Modal'; import { HelpTopic } from '@/features/help'; -import { useLibrary } from '@/features/library/backend/useLibrary'; -import SelectLibraryItem from '@/features/library/components/SelectLibraryItem'; -import { ILibraryItem, LibraryItemID } from '@/features/library/models/library'; +import { ILibraryItem, SelectLibraryItem, useLibrary } from '@/features/library'; import { useRSForm } from '@/features/rsform/backend/useRSForm'; import PickMultiConstituenta from '@/features/rsform/components/PickMultiConstituenta'; import { useDialogsStore } from '@/stores/dialogs'; @@ -63,10 +61,10 @@ function DlgRelocateConstituents() { return []; } const node = oss.graph.at(operation.id)!; - const ids: LibraryItemID[] = directionUp + const schemaIds: number[] = directionUp ? node.inputs.map(id => oss.operationByID.get(id)!.result).filter(id => id !== null) : node.outputs.map(id => oss.operationByID.get(id)!.result).filter(id => id !== null); - return ids.map(id => libraryItems.find(item => item.id === id)).filter(item => item !== undefined); + return schemaIds.map(id => libraryItems.find(item => item.id === id)).filter(item => item !== undefined); })(); const sourceData = useRSForm({ itemID: source?.id }); diff --git a/rsconcept/frontend/src/features/oss/models/oss.ts b/rsconcept/frontend/src/features/oss/models/oss.ts index e7238565..88088093 100644 --- a/rsconcept/frontend/src/features/oss/models/oss.ts +++ b/rsconcept/frontend/src/features/oss/models/oss.ts @@ -1,7 +1,7 @@ /** * Module: Schema of Synthesis Operations. */ -import { ILibraryItem, ILibraryItemData, LibraryItemID } from '@/features/library/models/library'; +import { ILibraryItem, ILibraryItemData } from '@/features/library/models/library'; import { ICstSubstitute } from '@/features/rsform/backend/api'; import { IConstituenta } from '@/features/rsform/models/rsform'; @@ -26,7 +26,7 @@ export enum OperationType { export interface IOperation { id: OperationID; operation_type: OperationType; - oss: LibraryItemID; + oss: number; alias: string; title: string; @@ -35,7 +35,7 @@ export interface IOperation { position_x: number; position_y: number; - result: LibraryItemID | null; + result: number | null; is_owned: boolean; is_consolidation: boolean; // aka 'diamond synthesis' @@ -93,7 +93,7 @@ export interface IOperationSchema extends ILibraryItemData { substitutions: ICstSubstituteEx[]; graph: Graph; - schemas: LibraryItemID[]; + schemas: number[]; stats: IOperationSchemaStats; operationByID: Map; } diff --git a/rsconcept/frontend/src/features/oss/models/ossAPI.ts b/rsconcept/frontend/src/features/oss/models/ossAPI.ts index 4230cdbb..40c76c52 100644 --- a/rsconcept/frontend/src/features/oss/models/ossAPI.ts +++ b/rsconcept/frontend/src/features/oss/models/ossAPI.ts @@ -2,7 +2,7 @@ * Module: API for OperationSystem. */ -import { ILibraryItem, LibraryItemID } from '@/features/library/models/library'; +import { ILibraryItem } from '@/features/library/models/library'; import { ICstSubstitute } from '@/features/rsform/backend/api'; import { ConstituentaID, CstClass, CstType, IConstituenta, IRSForm } from '@/features/rsform/models/rsform'; import { AliasMapping, ParsingStatus } from '@/features/rsform/models/rslang'; @@ -56,7 +56,7 @@ export function sortItemsForOSS(oss: IOperationSchema, items: ILibraryItem[]): I return result; } -type CrossMapping = Map; +type CrossMapping = Map; /** * Validator for Substitution table. @@ -72,7 +72,7 @@ export class SubstitutionValidator { private mapping: CrossMapping = new Map(); private cstByID = new Map(); - private schemaByID = new Map(); + private schemaByID = new Map(); private schemaByCst = new Map(); constructor(schemas: IRSForm[], substitutions: ICstSubstitute[]) { diff --git a/rsconcept/frontend/src/features/oss/pages/OssPage/EditorOssCard/EditorOssCard.tsx b/rsconcept/frontend/src/features/oss/pages/OssPage/EditorOssCard/EditorOssCard.tsx index c7b338ff..2c92fee8 100644 --- a/rsconcept/frontend/src/features/oss/pages/OssPage/EditorOssCard/EditorOssCard.tsx +++ b/rsconcept/frontend/src/features/oss/pages/OssPage/EditorOssCard/EditorOssCard.tsx @@ -3,7 +3,7 @@ import clsx from 'clsx'; import { FlexColumn } from '@/components/Container'; -import { EditorLibraryItem } from '@/features/library/components/EditorLibraryItem'; +import { EditorLibraryItem } from '@/features/library'; import ToolbarRSFormCard from '@/features/rsform/pages/RSFormPage/EditorRSFormCard/ToolbarRSFormCard'; import { useModificationStore } from '@/stores/modification'; import { globals } from '@/utils/constants'; diff --git a/rsconcept/frontend/src/features/oss/pages/OssPage/EditorOssCard/FormOSS.tsx b/rsconcept/frontend/src/features/oss/pages/OssPage/EditorOssCard/FormOSS.tsx index 09637f09..2a3ad332 100644 --- a/rsconcept/frontend/src/features/oss/pages/OssPage/EditorOssCard/FormOSS.tsx +++ b/rsconcept/frontend/src/features/oss/pages/OssPage/EditorOssCard/FormOSS.tsx @@ -9,10 +9,8 @@ import { useForm, useWatch } from 'react-hook-form'; import { SubmitButton } from '@/components/Control'; import { IconSave } from '@/components/Icons'; import { TextArea, TextInput } from '@/components/Input'; +import { LibraryItemType, ToolbarItemAccess, useUpdateItem } from '@/features/library'; import { IUpdateLibraryItemDTO, schemaUpdateLibraryItem } from '@/features/library/backend/api'; -import { useUpdateItem } from '@/features/library/backend/useUpdateItem'; -import { LibraryItemType } from '@/features/library/models/library'; -import ToolbarItemAccess from '@/features/rsform/pages/RSFormPage/EditorRSFormCard/ToolbarItemAccess'; import { useModificationStore } from '@/stores/modification'; import { globals } from '@/utils/constants'; diff --git a/rsconcept/frontend/src/features/oss/pages/OssPage/EditorOssGraph/OssFlow.tsx b/rsconcept/frontend/src/features/oss/pages/OssPage/EditorOssGraph/OssFlow.tsx index d336601e..f2e9e2af 100644 --- a/rsconcept/frontend/src/features/oss/pages/OssPage/EditorOssGraph/OssFlow.tsx +++ b/rsconcept/frontend/src/features/oss/pages/OssPage/EditorOssGraph/OssFlow.tsx @@ -19,7 +19,7 @@ import { import { urls, useConceptNavigation } from '@/app'; import { Overlay } from '@/components/Container'; import { CProps } from '@/components/props'; -import { useLibrary } from '@/features/library/backend/useLibrary'; +import { useLibrary } from '@/features/library'; import { useMainHeight } from '@/stores/appLayout'; import { useModificationStore } from '@/stores/modification'; import { APP_COLORS } from '@/styling/colors'; diff --git a/rsconcept/frontend/src/features/oss/pages/OssPage/MenuOssTabs.tsx b/rsconcept/frontend/src/features/oss/pages/OssPage/MenuOssTabs.tsx index 5babde47..f3d089e4 100644 --- a/rsconcept/frontend/src/features/oss/pages/OssPage/MenuOssTabs.tsx +++ b/rsconcept/frontend/src/features/oss/pages/OssPage/MenuOssTabs.tsx @@ -20,8 +20,7 @@ import { } from '@/components/Icons'; import { useAuthSuspense } from '@/features/auth'; import { useMutatingOss } from '@/features/oss/backend/useMutatingOss'; -import { useRoleStore } from '@/features/users'; -import { UserRole } from '@/features/users/models/user'; +import { useRoleStore, UserRole } from '@/features/users'; import { describeAccessMode as describeUserRole, labelAccessMode as labelUserRole } from '@/utils/labels'; import { sharePage } from '@/utils/utils'; diff --git a/rsconcept/frontend/src/features/oss/pages/OssPage/OssEditContext.tsx b/rsconcept/frontend/src/features/oss/pages/OssPage/OssEditContext.tsx index aca2f9c0..10987b63 100644 --- a/rsconcept/frontend/src/features/oss/pages/OssPage/OssEditContext.tsx +++ b/rsconcept/frontend/src/features/oss/pages/OssPage/OssEditContext.tsx @@ -4,12 +4,9 @@ import { createContext, useContext, useEffect, useState } from 'react'; import { urls, useConceptNavigation } from '@/app'; import { useAuthSuspense } from '@/features/auth'; -import { useDeleteItem } from '@/features/library/backend/useDeleteItem'; -import { ILibraryItemEditor, LibraryItemID } from '@/features/library/models/library'; -import { useLibrarySearchStore } from '@/features/library/stores/librarySearch'; +import { ILibraryItemEditor, useDeleteItem, useLibrarySearchStore } from '@/features/library'; import { RSTabID } from '@/features/rsform/pages/RSFormPage/RSEditContext'; -import { useRoleStore } from '@/features/users'; -import { UserRole } from '@/features/users/models/user'; +import { useRoleStore, UserRole } from '@/features/users'; import { useDialogsStore } from '@/stores/dialogs'; import { usePreferencesStore } from '@/stores/preferences'; import { promptText } from '@/utils/labels'; @@ -66,7 +63,7 @@ export const useOssEdit = () => { }; interface OssEditStateProps { - itemID: LibraryItemID; + itemID: number; } export const OssEditState = ({ itemID, children }: React.PropsWithChildren) => { diff --git a/rsconcept/frontend/src/features/rsform/backend/RSFormLoader.ts b/rsconcept/frontend/src/features/rsform/backend/RSFormLoader.ts index de92c091..ccaeb65c 100644 --- a/rsconcept/frontend/src/features/rsform/backend/RSFormLoader.ts +++ b/rsconcept/frontend/src/features/rsform/backend/RSFormLoader.ts @@ -2,7 +2,6 @@ * Module: RSForm data loading and processing. */ -import { LibraryItemID } from '@/features/library/models/library'; import { Graph } from '@/models/Graph'; import { ConstituentaID, CstType, IConstituenta, IRSForm, IRSFormStats } from '../models/rsform'; @@ -62,8 +61,8 @@ export class RSFormLoader { } private inferCstAttributes() { - const schemaByCst = new Map(); - const parents: LibraryItemID[] = []; + const schemaByCst = new Map(); + const parents: number[] = []; this.schema.inheritance.forEach(item => { if (item.child_source === this.schema.id) { schemaByCst.set(item.child, item.parent_source); diff --git a/rsconcept/frontend/src/features/rsform/backend/api.ts b/rsconcept/frontend/src/features/rsform/backend/api.ts index d4d26003..cfa470e5 100644 --- a/rsconcept/frontend/src/features/rsform/backend/api.ts +++ b/rsconcept/frontend/src/features/rsform/backend/api.ts @@ -3,12 +3,7 @@ import { z } from 'zod'; import { axiosGet, axiosPatch, axiosPost } from '@/backend/apiTransport'; import { DELAYS } from '@/backend/configuration'; -import { - ILibraryItemReference, - ILibraryItemVersioned, - LibraryItemID, - VersionID -} from '@/features/library/models/library'; +import { ILibraryItemReference, ILibraryItemVersioned } from '@/features/library/models/library'; import { errorMsg, infoMsg } from '@/utils/labels'; import { @@ -48,7 +43,7 @@ export interface IRSFormDTO extends ILibraryItemVersioned { * Represents data, used for uploading {@link IRSForm} as file. */ export interface IRSFormUploadDTO { - itemID: LibraryItemID; + itemID: number; load_metadata: boolean; file: File; fileName: string; @@ -178,7 +173,7 @@ export type ICstSubstitutionsDTO = z.infer; export const rsformsApi = { baseKey: 'rsform', - getRSFormQueryOptions: ({ itemID, version }: { itemID?: LibraryItemID; version?: VersionID }) => { + getRSFormQueryOptions: ({ itemID, version }: { itemID?: number; version?: number }) => { return queryOptions({ queryKey: [rsformsApi.baseKey, 'item', itemID, version ?? ''], staleTime: DELAYS.staleShort, @@ -192,7 +187,7 @@ export const rsformsApi = { }); }, - download: ({ itemID, version }: { itemID: LibraryItemID; version?: VersionID }) => + download: ({ itemID, version }: { itemID: number; version?: number }) => axiosGet({ endpoint: version ? `/api/versions/${version}/export-file` : `/api/rsforms/${itemID}/export-trs`, options: { responseType: 'blob' } @@ -211,7 +206,7 @@ export const rsformsApi = { } }), - cstCreate: ({ itemID, data }: { itemID: LibraryItemID; data: ICstCreateDTO }) => + cstCreate: ({ itemID, data }: { itemID: number; data: ICstCreateDTO }) => axiosPost({ endpoint: `/api/rsforms/${itemID}/create-cst`, request: { @@ -219,7 +214,7 @@ export const rsformsApi = { successMessage: response => infoMsg.newConstituent(response.new_cst.alias) } }), - cstUpdate: ({ itemID, data }: { itemID: LibraryItemID; data: ICstUpdateDTO }) => + cstUpdate: ({ itemID, data }: { itemID: number; data: ICstUpdateDTO }) => axiosPatch({ endpoint: `/api/rsforms/${itemID}/update-cst`, request: { @@ -227,7 +222,7 @@ export const rsformsApi = { successMessage: infoMsg.changesSaved } }), - cstDelete: ({ itemID, data }: { itemID: LibraryItemID; data: IConstituentaList }) => + cstDelete: ({ itemID, data }: { itemID: number; data: IConstituentaList }) => axiosPatch({ endpoint: `/api/rsforms/${itemID}/delete-multiple-cst`, request: { @@ -235,7 +230,7 @@ export const rsformsApi = { successMessage: infoMsg.constituentsDestroyed(data.items.length) } }), - cstRename: ({ itemID, data }: { itemID: LibraryItemID; data: ICstRenameDTO }) => + cstRename: ({ itemID, data }: { itemID: number; data: ICstRenameDTO }) => axiosPatch({ endpoint: `/api/rsforms/${itemID}/rename-cst`, request: { @@ -243,7 +238,7 @@ export const rsformsApi = { successMessage: infoMsg.changesSaved } }), - cstSubstitute: ({ itemID, data }: { itemID: LibraryItemID; data: ICstSubstitutionsDTO }) => + cstSubstitute: ({ itemID, data }: { itemID: number; data: ICstSubstitutionsDTO }) => axiosPatch({ endpoint: `/api/rsforms/${itemID}/substitute`, request: { @@ -251,13 +246,13 @@ export const rsformsApi = { successMessage: infoMsg.substituteSingle } }), - cstMove: ({ itemID, data }: { itemID: LibraryItemID; data: ICstMoveDTO }) => + cstMove: ({ itemID, data }: { itemID: number; data: ICstMoveDTO }) => axiosPatch({ endpoint: `/api/rsforms/${itemID}/move-cst`, request: { data: data } }), - produceStructure: ({ itemID, data }: { itemID: LibraryItemID; data: ITargetCst }) => + produceStructure: ({ itemID, data }: { itemID: number; data: ITargetCst }) => axiosPatch({ endpoint: `/api/rsforms/${itemID}/produce-structure`, request: { @@ -273,18 +268,18 @@ export const rsformsApi = { successMessage: infoMsg.inlineSynthesisComplete } }), - restoreOrder: ({ itemID }: { itemID: LibraryItemID }) => + restoreOrder: ({ itemID }: { itemID: number }) => axiosPatch({ endpoint: `/api/rsforms/${itemID}/restore-order`, request: { successMessage: infoMsg.reorderComplete } }), - resetAliases: ({ itemID }: { itemID: LibraryItemID }) => + resetAliases: ({ itemID }: { itemID: number }) => axiosPatch({ endpoint: `/api/rsforms/${itemID}/reset-aliases`, request: { successMessage: infoMsg.reindexComplete } }), - checkConstituenta: ({ itemID, data }: { itemID: LibraryItemID; data: ICheckConstituentaDTO }) => + checkConstituenta: ({ itemID, data }: { itemID: number; data: ICheckConstituentaDTO }) => axiosPost({ endpoint: `/api/rsforms/${itemID}/check-constituenta`, request: { data: data } diff --git a/rsconcept/frontend/src/features/rsform/backend/useCheckConstituenta.tsx b/rsconcept/frontend/src/features/rsform/backend/useCheckConstituenta.tsx index 90fe3c41..5ed414b6 100644 --- a/rsconcept/frontend/src/features/rsform/backend/useCheckConstituenta.tsx +++ b/rsconcept/frontend/src/features/rsform/backend/useCheckConstituenta.tsx @@ -1,7 +1,5 @@ import { useMutation } from '@tanstack/react-query'; -import { LibraryItemID } from '@/features/library/models/library'; - import { ICheckConstituentaDTO, rsformsApi } from './api'; export const useCheckConstituenta = () => { @@ -10,7 +8,7 @@ export const useCheckConstituenta = () => { mutationFn: rsformsApi.checkConstituenta }); return { - checkConstituenta: (data: { itemID: LibraryItemID; data: ICheckConstituentaDTO }) => mutation.mutateAsync(data), + checkConstituenta: (data: { itemID: number; data: ICheckConstituentaDTO }) => mutation.mutateAsync(data), isPending: mutation.isPending, error: mutation.error }; diff --git a/rsconcept/frontend/src/features/rsform/backend/useCstCreate.tsx b/rsconcept/frontend/src/features/rsform/backend/useCstCreate.tsx index 77798cde..30f935b5 100644 --- a/rsconcept/frontend/src/features/rsform/backend/useCstCreate.tsx +++ b/rsconcept/frontend/src/features/rsform/backend/useCstCreate.tsx @@ -1,7 +1,6 @@ import { useMutation, useQueryClient } from '@tanstack/react-query'; -import { useUpdateTimestamp } from '@/features/library/backend/useUpdateTimestamp'; -import { LibraryItemID } from '@/features/library/models/library'; +import { useUpdateTimestamp } from '@/features/library'; import { ossApi } from '@/features/oss/backend/api'; import { ICstCreateDTO, rsformsApi } from './api'; @@ -26,7 +25,7 @@ export const useCstCreate = () => { } }); return { - cstCreate: (data: { itemID: LibraryItemID; data: ICstCreateDTO }) => + cstCreate: (data: { itemID: number; data: ICstCreateDTO }) => mutation.mutateAsync(data).then(response => response.new_cst) }; }; diff --git a/rsconcept/frontend/src/features/rsform/backend/useCstDelete.tsx b/rsconcept/frontend/src/features/rsform/backend/useCstDelete.tsx index 42b7d908..b436f591 100644 --- a/rsconcept/frontend/src/features/rsform/backend/useCstDelete.tsx +++ b/rsconcept/frontend/src/features/rsform/backend/useCstDelete.tsx @@ -1,7 +1,6 @@ import { useMutation, useQueryClient } from '@tanstack/react-query'; -import { useUpdateTimestamp } from '@/features/library/backend/useUpdateTimestamp'; -import { LibraryItemID } from '@/features/library/models/library'; +import { useUpdateTimestamp } from '@/features/library'; import { ossApi } from '@/features/oss/backend/api'; import { IConstituentaList } from '../models/rsform'; @@ -27,6 +26,6 @@ export const useCstDelete = () => { } }); return { - cstDelete: (data: { itemID: LibraryItemID; data: IConstituentaList }) => mutation.mutateAsync(data) + cstDelete: (data: { itemID: number; data: IConstituentaList }) => mutation.mutateAsync(data) }; }; diff --git a/rsconcept/frontend/src/features/rsform/backend/useCstMove.tsx b/rsconcept/frontend/src/features/rsform/backend/useCstMove.tsx index 327b079f..35450d8d 100644 --- a/rsconcept/frontend/src/features/rsform/backend/useCstMove.tsx +++ b/rsconcept/frontend/src/features/rsform/backend/useCstMove.tsx @@ -1,7 +1,6 @@ import { useMutation, useQueryClient } from '@tanstack/react-query'; -import { useUpdateTimestamp } from '@/features/library/backend/useUpdateTimestamp'; -import { LibraryItemID } from '@/features/library/models/library'; +import { useUpdateTimestamp } from '@/features/library'; import { ICstMoveDTO, rsformsApi } from './api'; @@ -17,6 +16,6 @@ export const useCstMove = () => { } }); return { - cstMove: (data: { itemID: LibraryItemID; data: ICstMoveDTO }) => mutation.mutateAsync(data) + cstMove: (data: { itemID: number; data: ICstMoveDTO }) => mutation.mutateAsync(data) }; }; diff --git a/rsconcept/frontend/src/features/rsform/backend/useCstRename.tsx b/rsconcept/frontend/src/features/rsform/backend/useCstRename.tsx index 3a6cdf3c..1d2f3503 100644 --- a/rsconcept/frontend/src/features/rsform/backend/useCstRename.tsx +++ b/rsconcept/frontend/src/features/rsform/backend/useCstRename.tsx @@ -1,7 +1,6 @@ import { useMutation, useQueryClient } from '@tanstack/react-query'; -import { useUpdateTimestamp } from '@/features/library/backend/useUpdateTimestamp'; -import { LibraryItemID } from '@/features/library/models/library'; +import { useUpdateTimestamp } from '@/features/library'; import { ossApi } from '@/features/oss/backend/api'; import { ICstRenameDTO, rsformsApi } from './api'; @@ -26,6 +25,6 @@ export const useCstRename = () => { } }); return { - cstRename: (data: { itemID: LibraryItemID; data: ICstRenameDTO }) => mutation.mutateAsync(data) + cstRename: (data: { itemID: number; data: ICstRenameDTO }) => mutation.mutateAsync(data) }; }; diff --git a/rsconcept/frontend/src/features/rsform/backend/useCstSubstitute.tsx b/rsconcept/frontend/src/features/rsform/backend/useCstSubstitute.tsx index 932d821c..a9f37b93 100644 --- a/rsconcept/frontend/src/features/rsform/backend/useCstSubstitute.tsx +++ b/rsconcept/frontend/src/features/rsform/backend/useCstSubstitute.tsx @@ -1,7 +1,6 @@ import { useMutation, useQueryClient } from '@tanstack/react-query'; -import { useUpdateTimestamp } from '@/features/library/backend/useUpdateTimestamp'; -import { LibraryItemID } from '@/features/library/models/library'; +import { useUpdateTimestamp } from '@/features/library'; import { ossApi } from '@/features/oss/backend/api'; import { ICstSubstitutionsDTO, rsformsApi } from './api'; @@ -26,6 +25,6 @@ export const useCstSubstitute = () => { } }); return { - cstSubstitute: (data: { itemID: LibraryItemID; data: ICstSubstitutionsDTO }) => mutation.mutateAsync(data) + cstSubstitute: (data: { itemID: number; data: ICstSubstitutionsDTO }) => mutation.mutateAsync(data) }; }; diff --git a/rsconcept/frontend/src/features/rsform/backend/useCstUpdate.tsx b/rsconcept/frontend/src/features/rsform/backend/useCstUpdate.tsx index bbe20b55..ab0ffd6a 100644 --- a/rsconcept/frontend/src/features/rsform/backend/useCstUpdate.tsx +++ b/rsconcept/frontend/src/features/rsform/backend/useCstUpdate.tsx @@ -1,7 +1,6 @@ import { useMutation, useQueryClient } from '@tanstack/react-query'; -import { useUpdateTimestamp } from '@/features/library/backend/useUpdateTimestamp'; -import { LibraryItemID } from '@/features/library/models/library'; +import { useUpdateTimestamp } from '@/features/library'; import { ossApi } from '@/features/oss/backend/api'; import { ICstUpdateDTO, rsformsApi } from './api'; @@ -22,6 +21,6 @@ export const useCstUpdate = () => { } }); return { - cstUpdate: (data: { itemID: LibraryItemID; data: ICstUpdateDTO }) => mutation.mutateAsync(data) + cstUpdate: (data: { itemID: number; data: ICstUpdateDTO }) => mutation.mutateAsync(data) }; }; diff --git a/rsconcept/frontend/src/features/rsform/backend/useDownloadRSForm.tsx b/rsconcept/frontend/src/features/rsform/backend/useDownloadRSForm.tsx index 8203670f..45cdeb2e 100644 --- a/rsconcept/frontend/src/features/rsform/backend/useDownloadRSForm.tsx +++ b/rsconcept/frontend/src/features/rsform/backend/useDownloadRSForm.tsx @@ -1,7 +1,5 @@ import { useMutation } from '@tanstack/react-query'; -import { LibraryItemID, VersionID } from '@/features/library/models/library'; - import { rsformsApi } from './api'; export const useDownloadRSForm = () => { @@ -10,6 +8,6 @@ export const useDownloadRSForm = () => { mutationFn: rsformsApi.download }); return { - download: (data: { itemID: LibraryItemID; version?: VersionID }) => mutation.mutateAsync(data) + download: (data: { itemID: number; version?: number }) => mutation.mutateAsync(data) }; }; diff --git a/rsconcept/frontend/src/features/rsform/backend/useInlineSynthesis.tsx b/rsconcept/frontend/src/features/rsform/backend/useInlineSynthesis.tsx index 28bd8595..7d7a1ad4 100644 --- a/rsconcept/frontend/src/features/rsform/backend/useInlineSynthesis.tsx +++ b/rsconcept/frontend/src/features/rsform/backend/useInlineSynthesis.tsx @@ -1,6 +1,6 @@ import { useMutation, useQueryClient } from '@tanstack/react-query'; -import { useUpdateTimestamp } from '@/features/library/backend/useUpdateTimestamp'; +import { useUpdateTimestamp } from '@/features/library'; import { ossApi } from '@/features/oss/backend/api'; import { IInlineSynthesisDTO, rsformsApi } from './api'; diff --git a/rsconcept/frontend/src/features/rsform/backend/useMutatingRSForm.tsx b/rsconcept/frontend/src/features/rsform/backend/useMutatingRSForm.tsx index 16d3f3d1..325fb58f 100644 --- a/rsconcept/frontend/src/features/rsform/backend/useMutatingRSForm.tsx +++ b/rsconcept/frontend/src/features/rsform/backend/useMutatingRSForm.tsx @@ -1,6 +1,6 @@ import { useIsMutating } from '@tanstack/react-query'; -import { libraryApi } from '@/features/library/backend/api'; +import { libraryApi } from '@/features/library'; import { rsformsApi } from './api'; diff --git a/rsconcept/frontend/src/features/rsform/backend/useProduceStructure.tsx b/rsconcept/frontend/src/features/rsform/backend/useProduceStructure.tsx index e4f55682..07a865d3 100644 --- a/rsconcept/frontend/src/features/rsform/backend/useProduceStructure.tsx +++ b/rsconcept/frontend/src/features/rsform/backend/useProduceStructure.tsx @@ -1,7 +1,6 @@ import { useMutation, useQueryClient } from '@tanstack/react-query'; -import { useUpdateTimestamp } from '@/features/library/backend/useUpdateTimestamp'; -import { LibraryItemID } from '@/features/library/models/library'; +import { useUpdateTimestamp } from '@/features/library'; import { ossApi } from '@/features/oss/backend/api'; import { ITargetCst } from '../models/rsform'; @@ -27,7 +26,7 @@ export const useProduceStructure = () => { } }); return { - produceStructure: (data: { itemID: LibraryItemID; data: ITargetCst }) => + produceStructure: (data: { itemID: number; data: ITargetCst }) => mutation.mutateAsync(data).then(response => response.cst_list) }; }; diff --git a/rsconcept/frontend/src/features/rsform/backend/useRSForm.tsx b/rsconcept/frontend/src/features/rsform/backend/useRSForm.tsx index 54946318..023ee667 100644 --- a/rsconcept/frontend/src/features/rsform/backend/useRSForm.tsx +++ b/rsconcept/frontend/src/features/rsform/backend/useRSForm.tsx @@ -1,12 +1,10 @@ import { useQuery, useSuspenseQuery } from '@tanstack/react-query'; -import { LibraryItemID, VersionID } from '@/features/library/models/library'; - import { queryClient } from '../../../backend/queryClient'; import { rsformsApi } from './api'; import { RSFormLoader } from './RSFormLoader'; -export function useRSForm({ itemID, version }: { itemID?: LibraryItemID; version?: VersionID }) { +export function useRSForm({ itemID, version }: { itemID?: number; version?: number }) { const { data, isLoading, error } = useQuery({ ...rsformsApi.getRSFormQueryOptions({ itemID, version }) }); @@ -15,7 +13,7 @@ export function useRSForm({ itemID, version }: { itemID?: LibraryItemID; version return { schema, isLoading, error }; } -export function useRSFormSuspense({ itemID, version }: { itemID: LibraryItemID; version?: VersionID }) { +export function useRSFormSuspense({ itemID, version }: { itemID: number; version?: number }) { const { data } = useSuspenseQuery({ ...rsformsApi.getRSFormQueryOptions({ itemID, version }) }); @@ -23,7 +21,7 @@ export function useRSFormSuspense({ itemID, version }: { itemID: LibraryItemID; return { schema }; } -export function prefetchRSForm({ itemID, version }: { itemID?: LibraryItemID; version?: VersionID }) { +export function prefetchRSForm({ itemID, version }: { itemID?: number; version?: number }) { if (!itemID) { return null; } diff --git a/rsconcept/frontend/src/features/rsform/backend/useRSForms.tsx b/rsconcept/frontend/src/features/rsform/backend/useRSForms.tsx index 89df1fe8..eb77627d 100644 --- a/rsconcept/frontend/src/features/rsform/backend/useRSForms.tsx +++ b/rsconcept/frontend/src/features/rsform/backend/useRSForms.tsx @@ -1,12 +1,10 @@ import { useSuspenseQueries } from '@tanstack/react-query'; -import { LibraryItemID } from '@/features/library/models/library'; - import { DELAYS } from '../../../backend/configuration'; import { rsformsApi } from './api'; import { RSFormLoader } from './RSFormLoader'; -export function useRSForms(itemIDs: LibraryItemID[]) { +export function useRSForms(itemIDs: number[]) { const results = useSuspenseQueries({ queries: itemIDs.map(itemID => ({ ...rsformsApi.getRSFormQueryOptions({ itemID }), diff --git a/rsconcept/frontend/src/features/rsform/backend/useResetAliases.tsx b/rsconcept/frontend/src/features/rsform/backend/useResetAliases.tsx index 6e4a37ae..238facdd 100644 --- a/rsconcept/frontend/src/features/rsform/backend/useResetAliases.tsx +++ b/rsconcept/frontend/src/features/rsform/backend/useResetAliases.tsx @@ -1,7 +1,6 @@ import { useMutation, useQueryClient } from '@tanstack/react-query'; -import { useUpdateTimestamp } from '@/features/library/backend/useUpdateTimestamp'; -import { LibraryItemID } from '@/features/library/models/library'; +import { useUpdateTimestamp } from '@/features/library'; import { ossApi } from '@/features/oss/backend/api'; import { rsformsApi } from './api'; @@ -26,6 +25,6 @@ export const useResetAliases = () => { } }); return { - resetAliases: (data: { itemID: LibraryItemID }) => mutation.mutateAsync(data) + resetAliases: (data: { itemID: number }) => mutation.mutateAsync(data) }; }; diff --git a/rsconcept/frontend/src/features/rsform/backend/useRestoreOrder.tsx b/rsconcept/frontend/src/features/rsform/backend/useRestoreOrder.tsx index 7ebdceda..ee5bba0b 100644 --- a/rsconcept/frontend/src/features/rsform/backend/useRestoreOrder.tsx +++ b/rsconcept/frontend/src/features/rsform/backend/useRestoreOrder.tsx @@ -1,7 +1,6 @@ import { useMutation, useQueryClient } from '@tanstack/react-query'; -import { useUpdateTimestamp } from '@/features/library/backend/useUpdateTimestamp'; -import { LibraryItemID } from '@/features/library/models/library'; +import { useUpdateTimestamp } from '@/features/library'; import { rsformsApi } from './api'; @@ -17,6 +16,6 @@ export const useRestoreOrder = () => { } }); return { - restoreOrder: (data: { itemID: LibraryItemID }) => mutation.mutateAsync(data) + restoreOrder: (data: { itemID: number }) => mutation.mutateAsync(data) }; }; diff --git a/rsconcept/frontend/src/features/rsform/backend/useUploadTRS.tsx b/rsconcept/frontend/src/features/rsform/backend/useUploadTRS.tsx index dd2d7268..87834b37 100644 --- a/rsconcept/frontend/src/features/rsform/backend/useUploadTRS.tsx +++ b/rsconcept/frontend/src/features/rsform/backend/useUploadTRS.tsx @@ -1,6 +1,6 @@ import { useMutation, useQueryClient } from '@tanstack/react-query'; -import { libraryApi } from '@/features/library/backend/api'; +import { libraryApi } from '@/features/library'; import { ILibraryItem } from '@/features/library/models/library'; import { ossApi } from '@/features/oss/backend/api'; diff --git a/rsconcept/frontend/src/features/rsform/components/PickSubstitutions.tsx b/rsconcept/frontend/src/features/rsform/components/PickSubstitutions.tsx index f363dabe..d10c1ac7 100644 --- a/rsconcept/frontend/src/features/rsform/components/PickSubstitutions.tsx +++ b/rsconcept/frontend/src/features/rsform/components/PickSubstitutions.tsx @@ -9,8 +9,7 @@ import DataTable, { createColumnHelper, IConditionalStyle } from '@/components/D import { IconAccept, IconPageLeft, IconPageRight, IconRemove, IconReplace } from '@/components/Icons'; import { CProps } from '@/components/props'; import { NoData } from '@/components/View'; -import SelectLibraryItem from '@/features/library/components/SelectLibraryItem'; -import { ILibraryItem } from '@/features/library/models/library'; +import { ILibraryItem, SelectLibraryItem } from '@/features/library'; import { IMultiSubstitution } from '@/features/oss/models/oss'; import { APP_COLORS } from '@/styling/colors'; import { errorMsg } from '@/utils/labels'; diff --git a/rsconcept/frontend/src/features/rsform/dialogs/DlgCstTemplate/TabTemplate.tsx b/rsconcept/frontend/src/features/rsform/dialogs/DlgCstTemplate/TabTemplate.tsx index 6595eff6..c8231e24 100644 --- a/rsconcept/frontend/src/features/rsform/dialogs/DlgCstTemplate/TabTemplate.tsx +++ b/rsconcept/frontend/src/features/rsform/dialogs/DlgCstTemplate/TabTemplate.tsx @@ -3,7 +3,7 @@ import { Dispatch, useEffect, useState } from 'react'; import { SelectSingle, TextArea } from '@/components/Input'; -import { useTemplatesSuspense } from '@/features/library/backend/useTemplates'; +import { useTemplatesSuspense } from '@/features/library'; import PickConstituenta from '@/features/rsform/components/PickConstituenta'; import RSInput from '../../components/RSInput'; diff --git a/rsconcept/frontend/src/features/rsform/dialogs/DlgInlineSynthesis/TabSource.tsx b/rsconcept/frontend/src/features/rsform/dialogs/DlgInlineSynthesis/TabSource.tsx index 0593bb3d..38822d0a 100644 --- a/rsconcept/frontend/src/features/rsform/dialogs/DlgInlineSynthesis/TabSource.tsx +++ b/rsconcept/frontend/src/features/rsform/dialogs/DlgInlineSynthesis/TabSource.tsx @@ -3,12 +3,10 @@ import { useFormContext, useWatch } from 'react-hook-form'; import { TextInput } from '@/components/Input'; -import { useLibrary } from '@/features/library/backend/useLibrary'; -import { LibraryItemID, LibraryItemType } from '@/features/library/models/library'; +import { LibraryItemType, PickSchema, useLibrary } from '@/features/library'; import { useDialogsStore } from '@/stores/dialogs'; import { IInlineSynthesisDTO } from '../../backend/api'; -import { PickSchema } from '../../components/PickSchema'; import { sortItemsForInlineSynthesis } from '../../models/rsformAPI'; import { DlgInlineSynthesisProps } from './DlgInlineSynthesis'; @@ -21,7 +19,7 @@ function TabSource() { const selectedInfo = libraryItems.find(item => item.id === sourceID); const sortedItems = sortItemsForInlineSynthesis(receiver, libraryItems); - function handleSelectSource(newValue: LibraryItemID) { + function handleSelectSource(newValue: number) { if (newValue === sourceID) { return; } diff --git a/rsconcept/frontend/src/features/rsform/dialogs/DlgUploadRSForm.tsx b/rsconcept/frontend/src/features/rsform/dialogs/DlgUploadRSForm.tsx index 0f2c39df..afde84fd 100644 --- a/rsconcept/frontend/src/features/rsform/dialogs/DlgUploadRSForm.tsx +++ b/rsconcept/frontend/src/features/rsform/dialogs/DlgUploadRSForm.tsx @@ -4,13 +4,12 @@ import { useState } from 'react'; import { Checkbox, FileInput } from '@/components/Input'; import { ModalForm } from '@/components/Modal'; -import { LibraryItemID } from '@/features/library/models/library'; import { useUploadTRS } from '@/features/rsform/backend/useUploadTRS'; import { useDialogsStore } from '@/stores/dialogs'; import { EXTEOR_TRS_FILE } from '@/utils/constants'; export interface DlgUploadRSFormProps { - itemID: LibraryItemID; + itemID: number; } function DlgUploadRSForm() { diff --git a/rsconcept/frontend/src/features/rsform/models/rsform.ts b/rsconcept/frontend/src/features/rsform/models/rsform.ts index 9dd0fd18..ca94c58c 100644 --- a/rsconcept/frontend/src/features/rsform/models/rsform.ts +++ b/rsconcept/frontend/src/features/rsform/models/rsform.ts @@ -2,7 +2,7 @@ * Module: Models for formal representation for systems of concepts. */ -import { ILibraryItemReference, ILibraryItemVersioned, LibraryItemID } from '@/features/library/models/library'; +import { ILibraryItemReference, ILibraryItemVersioned } from '@/features/library/models/library'; import { Graph } from '@/models/Graph'; import { IArgumentInfo, ParsingStatus, ValueClass } from './rslang'; @@ -94,8 +94,8 @@ export interface IConstituenta extends IConstituentaMeta { args: IArgumentInfo[]; }; - /** {@link LibraryItemID} of this {@link IConstituenta}. */ - schema: LibraryItemID; + /** Identifier of {@link LibraryItem} containing this {@link IConstituenta}. */ + schema: number; /** {@link CstClass} of this {@link IConstituenta}. */ cst_class: CstClass; @@ -111,8 +111,8 @@ export interface IConstituenta extends IConstituentaMeta { * 0 - not inherited, 1 - inherited by 1st schema, 2 - inherited by 2nd schema, etc. */ parent_schema_index: number; - /** {@link LibraryItemID} that contains parent of this inherited {@link IConstituenta}. */ - parent_schema?: LibraryItemID; + /** {@link LibraryItem} that contains parent of this inherited {@link IConstituenta}. */ + parent_schema?: number; /** Indicates if this {@link IConstituenta} is inherited. */ is_inherited: boolean; /** Indicates if this {@link IConstituenta} has children that are inherited. */ @@ -169,9 +169,9 @@ export interface IRSFormStats { */ export interface IInheritanceInfo { child: ConstituentaID; - child_source: LibraryItemID; + child_source: number; parent: ConstituentaID; - parent_source: LibraryItemID; + parent_source: number; } /** diff --git a/rsconcept/frontend/src/features/rsform/pages/RSFormPage/EditorConstituenta/ToolbarConstituenta.tsx b/rsconcept/frontend/src/features/rsform/pages/RSFormPage/EditorConstituenta/ToolbarConstituenta.tsx index 35f042f0..343cb0f8 100644 --- a/rsconcept/frontend/src/features/rsform/pages/RSFormPage/EditorConstituenta/ToolbarConstituenta.tsx +++ b/rsconcept/frontend/src/features/rsform/pages/RSFormPage/EditorConstituenta/ToolbarConstituenta.tsx @@ -18,6 +18,7 @@ import { IconSave } from '@/components/Icons'; import { BadgeHelp, HelpTopic } from '@/features/help'; +import { MiniSelectorOSS } from '@/features/library'; import { useFindPredecessor } from '@/features/oss/backend/useFindPredecessor'; import { useModificationStore } from '@/stores/modification'; import { usePreferencesStore } from '@/stores/preferences'; @@ -26,7 +27,6 @@ import { tooltipText } from '@/utils/labels'; import { prepareTooltip } from '@/utils/utils'; import { useMutatingRSForm } from '../../../backend/useMutatingRSForm'; -import MiniSelectorOSS from '../../../components/MiniSelectorOSS'; import { ConstituentaID, IConstituenta } from '../../../models/rsform'; import { RSTabID, useRSEdit } from '../RSEditContext'; diff --git a/rsconcept/frontend/src/features/rsform/pages/RSFormPage/EditorRSFormCard/EditorRSFormCard.tsx b/rsconcept/frontend/src/features/rsform/pages/RSFormPage/EditorRSFormCard/EditorRSFormCard.tsx index a511af27..b35adc81 100644 --- a/rsconcept/frontend/src/features/rsform/pages/RSFormPage/EditorRSFormCard/EditorRSFormCard.tsx +++ b/rsconcept/frontend/src/features/rsform/pages/RSFormPage/EditorRSFormCard/EditorRSFormCard.tsx @@ -3,7 +3,7 @@ import clsx from 'clsx'; import { FlexColumn } from '@/components/Container'; -import { EditorLibraryItem } from '@/features/library/components/EditorLibraryItem'; +import { EditorLibraryItem } from '@/features/library'; import { useModificationStore } from '@/stores/modification'; import { globals } from '@/utils/constants'; diff --git a/rsconcept/frontend/src/features/rsform/pages/RSFormPage/EditorRSFormCard/FormRSForm.tsx b/rsconcept/frontend/src/features/rsform/pages/RSFormPage/EditorRSFormCard/FormRSForm.tsx index bd1aa291..38928cf5 100644 --- a/rsconcept/frontend/src/features/rsform/pages/RSFormPage/EditorRSFormCard/FormRSForm.tsx +++ b/rsconcept/frontend/src/features/rsform/pages/RSFormPage/EditorRSFormCard/FormRSForm.tsx @@ -10,16 +10,13 @@ import { urls, useConceptNavigation } from '@/app'; import { SubmitButton } from '@/components/Control'; import { IconSave } from '@/components/Icons'; import { Label, TextArea, TextInput } from '@/components/Input'; +import { LibraryItemType, SelectVersion, ToolbarItemAccess, useUpdateItem } from '@/features/library'; import { IUpdateLibraryItemDTO, schemaUpdateLibraryItem } from '@/features/library/backend/api'; -import { useUpdateItem } from '@/features/library/backend/useUpdateItem'; -import { LibraryItemType, VersionID } from '@/features/library/models/library'; import { useModificationStore } from '@/stores/modification'; import { globals } from '@/utils/constants'; import { useMutatingRSForm } from '../../../backend/useMutatingRSForm'; -import SelectVersion from '../../../components/SelectVersion'; import { useRSEdit } from '../RSEditContext'; -import ToolbarItemAccess from './ToolbarItemAccess'; import ToolbarVersioning from './ToolbarVersioning'; function FormRSForm() { @@ -55,7 +52,7 @@ function FormRSForm() { setIsModified(isDirty); }, [isDirty, setIsModified]); - function handleSelectVersion(version?: VersionID) { + function handleSelectVersion(version?: number) { router.push(urls.schema(controller.schema.id, version)); } diff --git a/rsconcept/frontend/src/features/rsform/pages/RSFormPage/EditorRSFormCard/ToolbarRSFormCard.tsx b/rsconcept/frontend/src/features/rsform/pages/RSFormPage/EditorRSFormCard/ToolbarRSFormCard.tsx index 0e1651e5..b75034e1 100644 --- a/rsconcept/frontend/src/features/rsform/pages/RSFormPage/EditorRSFormCard/ToolbarRSFormCard.tsx +++ b/rsconcept/frontend/src/features/rsform/pages/RSFormPage/EditorRSFormCard/ToolbarRSFormCard.tsx @@ -4,17 +4,14 @@ import { Overlay } from '@/components/Container'; import { MiniButton } from '@/components/Control'; import { IconDestroy, IconSave, IconShare } from '@/components/Icons'; import { BadgeHelp, HelpTopic } from '@/features/help'; -import { useMutatingLibrary } from '@/features/library/backend/useMutatingLibrary'; -import { AccessPolicy, ILibraryItemEditor, LibraryItemType } from '@/features/library/models/library'; -import { useRoleStore } from '@/features/users'; -import { UserRole } from '@/features/users/models/user'; +import { ILibraryItemEditor, MiniSelectorOSS, useMutatingLibrary } from '@/features/library'; +import { AccessPolicy, LibraryItemType } from '@/features/library'; +import { useRoleStore, UserRole } from '@/features/users'; import { useModificationStore } from '@/stores/modification'; import { PARAMETER } from '@/utils/constants'; import { tooltipText } from '@/utils/labels'; -import { prepareTooltip } from '@/utils/utils'; -import { sharePage } from '@/utils/utils'; +import { prepareTooltip, sharePage } from '@/utils/utils'; -import MiniSelectorOSS from '../../../components/MiniSelectorOSS'; import { IRSForm } from '../../../models/rsform'; import { IRSEditContext } from '../RSEditContext'; diff --git a/rsconcept/frontend/src/features/rsform/pages/RSFormPage/EditorRSFormCard/ToolbarVersioning.tsx b/rsconcept/frontend/src/features/rsform/pages/RSFormPage/EditorRSFormCard/ToolbarVersioning.tsx index 907d9ba8..dd9779c7 100644 --- a/rsconcept/frontend/src/features/rsform/pages/RSFormPage/EditorRSFormCard/ToolbarVersioning.tsx +++ b/rsconcept/frontend/src/features/rsform/pages/RSFormPage/EditorRSFormCard/ToolbarVersioning.tsx @@ -4,7 +4,7 @@ import { Overlay } from '@/components/Container'; import { MiniButton } from '@/components/Control'; import { IconNewVersion, IconUpload, IconVersions } from '@/components/Icons'; import { BadgeHelp, HelpTopic } from '@/features/help'; -import { useVersionRestore } from '@/features/library/backend/useVersionRestore'; +import { useVersionRestore } from '@/features/library'; import { useDialogsStore } from '@/stores/dialogs'; import { useModificationStore } from '@/stores/modification'; import { PARAMETER } from '@/utils/constants'; diff --git a/rsconcept/frontend/src/features/rsform/pages/RSFormPage/EditorRSList/ToolbarRSList.tsx b/rsconcept/frontend/src/features/rsform/pages/RSFormPage/EditorRSList/ToolbarRSList.tsx index aa1e4774..553c24dc 100644 --- a/rsconcept/frontend/src/features/rsform/pages/RSFormPage/EditorRSList/ToolbarRSList.tsx +++ b/rsconcept/frontend/src/features/rsform/pages/RSFormPage/EditorRSList/ToolbarRSList.tsx @@ -12,11 +12,11 @@ import { IconReset } from '@/components/Icons'; import { BadgeHelp, HelpTopic } from '@/features/help'; +import { MiniSelectorOSS } from '@/features/library'; import { prefixes } from '@/utils/constants'; import { prepareTooltip } from '@/utils/utils'; import { useMutatingRSForm } from '../../../backend/useMutatingRSForm'; -import MiniSelectorOSS from '../../../components/MiniSelectorOSS'; import { getCstTypeShortcut, labelCstType } from '../../../labels'; import { CstType } from '../../../models/rsform'; import { useRSEdit } from '../RSEditContext'; diff --git a/rsconcept/frontend/src/features/rsform/pages/RSFormPage/EditorTermGraph/SchemasGuide.tsx b/rsconcept/frontend/src/features/rsform/pages/RSFormPage/EditorTermGraph/SchemasGuide.tsx index 903a6d2f..a8301090 100644 --- a/rsconcept/frontend/src/features/rsform/pages/RSFormPage/EditorTermGraph/SchemasGuide.tsx +++ b/rsconcept/frontend/src/features/rsform/pages/RSFormPage/EditorTermGraph/SchemasGuide.tsx @@ -1,7 +1,6 @@ import { Tooltip } from '@/components/Container'; import { IconHelp } from '@/components/Icons'; -import { useLibrary } from '@/features/library/backend/useLibrary'; -import { LibraryItemID } from '@/features/library/models/library'; +import { useLibrary } from '@/features/library'; import { globals, prefixes } from '@/utils/constants'; import { colorBgSchemas } from '../../../colors'; @@ -15,7 +14,7 @@ function SchemasGuide({ schema }: SchemasGuideProps) { const { items: libraryItems } = useLibrary(); const schemas = (() => { - const processed = new Set(); + const processed = new Set(); const aliases: string[] = []; const indexes: number[] = []; schema.items.forEach(cst => { diff --git a/rsconcept/frontend/src/features/rsform/pages/RSFormPage/EditorTermGraph/ToolbarTermGraph.tsx b/rsconcept/frontend/src/features/rsform/pages/RSFormPage/EditorTermGraph/ToolbarTermGraph.tsx index f13d4067..4974b2d9 100644 --- a/rsconcept/frontend/src/features/rsform/pages/RSFormPage/EditorTermGraph/ToolbarTermGraph.tsx +++ b/rsconcept/frontend/src/features/rsform/pages/RSFormPage/EditorTermGraph/ToolbarTermGraph.tsx @@ -14,11 +14,11 @@ import { IconTypeGraph } from '@/components/Icons'; import { BadgeHelp, HelpTopic } from '@/features/help'; +import { MiniSelectorOSS } from '@/features/library'; import { useDialogsStore } from '@/stores/dialogs'; import { PARAMETER } from '@/utils/constants'; import { useMutatingRSForm } from '../../../backend/useMutatingRSForm'; -import MiniSelectorOSS from '../../../components/MiniSelectorOSS'; import { useRSEdit } from '../RSEditContext'; interface ToolbarTermGraphProps { diff --git a/rsconcept/frontend/src/features/rsform/pages/RSFormPage/MenuRSTabs.tsx b/rsconcept/frontend/src/features/rsform/pages/RSFormPage/MenuRSTabs.tsx index 920f1c10..a8b6f989 100644 --- a/rsconcept/frontend/src/features/rsform/pages/RSFormPage/MenuRSTabs.tsx +++ b/rsconcept/frontend/src/features/rsform/pages/RSFormPage/MenuRSTabs.tsx @@ -34,8 +34,7 @@ import { import { useAuthSuspense } from '@/features/auth'; import { AccessPolicy, LocationHead } from '@/features/library/models/library'; import { OssTabID } from '@/features/oss/pages/OssPage/OssEditContext'; -import { useRoleStore } from '@/features/users'; -import { UserRole } from '@/features/users/models/user'; +import { useRoleStore, UserRole } from '@/features/users'; import { useDialogsStore } from '@/stores/dialogs'; import { useModificationStore } from '@/stores/modification'; import { EXTEOR_TRS_FILE } from '@/utils/constants'; diff --git a/rsconcept/frontend/src/features/rsform/pages/RSFormPage/RSEditContext.tsx b/rsconcept/frontend/src/features/rsform/pages/RSFormPage/RSEditContext.tsx index 2d03f6aa..caa1d864 100644 --- a/rsconcept/frontend/src/features/rsform/pages/RSFormPage/RSEditContext.tsx +++ b/rsconcept/frontend/src/features/rsform/pages/RSFormPage/RSEditContext.tsx @@ -4,12 +4,9 @@ import { createContext, useContext, useEffect, useState } from 'react'; import { urls, useConceptNavigation } from '@/app'; import { useAuthSuspense } from '@/features/auth'; -import { useDeleteItem } from '@/features/library/backend/useDeleteItem'; -import { ILibraryItemEditor, LibraryItemID, VersionID } from '@/features/library/models/library'; -import { useLibrarySearchStore } from '@/features/library/stores/librarySearch'; +import { ILibraryItemEditor, useDeleteItem, useLibrarySearchStore } from '@/features/library'; import { OssTabID } from '@/features/oss/pages/OssPage/OssEditContext'; -import { useRoleStore } from '@/features/users'; -import { UserRole } from '@/features/users/models/user'; +import { useRoleStore, UserRole } from '@/features/users'; import { useDialogsStore } from '@/stores/dialogs'; import { useModificationStore } from '@/stores/modification'; import { usePreferencesStore } from '@/stores/preferences'; @@ -35,7 +32,7 @@ export interface IRSEditContext extends ILibraryItemEditor { schema: IRSForm; selected: ConstituentaID[]; activeCst?: IConstituenta; - activeVersion?: VersionID; + activeVersion?: number; isOwned: boolean; isArchive: boolean; @@ -44,10 +41,10 @@ export interface IRSEditContext extends ILibraryItemEditor { isAttachedToOSS: boolean; canDeleteSelected: boolean; - navigateVersion: (versionID: VersionID | undefined) => void; + navigateVersion: (versionID: number | undefined) => void; navigateRSForm: ({ tab, activeID }: { tab: RSTabID; activeID?: ConstituentaID }) => void; navigateCst: (cstID: ConstituentaID) => void; - navigateOss: (target: LibraryItemID, newTab?: boolean) => void; + navigateOss: (ossID: number, newTab?: boolean) => void; deleteSchema: () => void; @@ -75,9 +72,9 @@ export const useRSEdit = () => { }; interface RSEditStateProps { - itemID: LibraryItemID; + itemID: number; activeTab: RSTabID; - activeVersion?: VersionID; + activeVersion?: number; } export const RSEditState = ({ @@ -127,12 +124,12 @@ export const RSEditState = ({ [schema, adjustRole, isOwned, user, adminMode] ); - function navigateVersion(versionID: VersionID | undefined) { + function navigateVersion(versionID: number | undefined) { router.push(urls.schema(schema.id, versionID)); } - function navigateOss(target: LibraryItemID, newTab?: boolean) { - router.push(urls.oss(target), newTab); + function navigateOss(ossID: number, newTab?: boolean) { + router.push(urls.oss(ossID), newTab); } function navigateRSForm({ tab, activeID }: { tab: RSTabID; activeID?: ConstituentaID }) { diff --git a/rsconcept/frontend/src/features/rsform/pages/RSFormPage/RSFormPage.tsx b/rsconcept/frontend/src/features/rsform/pages/RSFormPage/RSFormPage.tsx index 68617a61..93d24610 100644 --- a/rsconcept/frontend/src/features/rsform/pages/RSFormPage/RSFormPage.tsx +++ b/rsconcept/frontend/src/features/rsform/pages/RSFormPage/RSFormPage.tsx @@ -10,7 +10,6 @@ import { isAxiosError } from '@/backend/apiTransport'; import { Divider } from '@/components/Container'; import { TextURL } from '@/components/Control'; import { ErrorData } from '@/components/InfoError'; -import { LibraryItemID } from '@/features/library/models/library'; import useQueryStrings from '@/hooks/useQueryStrings'; import { useModificationStore } from '@/stores/modification'; @@ -72,7 +71,7 @@ function ProcessError({ }: { error: ErrorData; isArchive: boolean; - itemID?: LibraryItemID; + itemID?: number; }): React.ReactElement | null { if (isAxiosError(error) && error.response) { if (error.response.status === 404) { diff --git a/rsconcept/frontend/src/features/rsform/pages/RSFormPage/ViewConstituents/ViewConstituents.tsx b/rsconcept/frontend/src/features/rsform/pages/RSFormPage/ViewConstituents/ViewConstituents.tsx index 0e7b1adb..5497b0bf 100644 --- a/rsconcept/frontend/src/features/rsform/pages/RSFormPage/ViewConstituents/ViewConstituents.tsx +++ b/rsconcept/frontend/src/features/rsform/pages/RSFormPage/ViewConstituents/ViewConstituents.tsx @@ -3,8 +3,7 @@ import clsx from 'clsx'; import { useState } from 'react'; -import { useRoleStore } from '@/features/users'; -import { UserRole } from '@/features/users/models/user'; +import { useRoleStore, UserRole } from '@/features/users'; import useWindowSize from '@/hooks/useWindowSize'; import { useFitHeight } from '@/stores/appLayout'; import { PARAMETER } from '@/utils/constants'; diff --git a/rsconcept/frontend/src/features/users/index.ts b/rsconcept/frontend/src/features/users/index.ts index 1ba45770..adeefd76 100644 --- a/rsconcept/frontend/src/features/users/index.ts +++ b/rsconcept/frontend/src/features/users/index.ts @@ -3,4 +3,4 @@ export { useUsers } from './backend/useUsers'; export { InfoUsers } from './components/InfoUsers'; export { SelectUser } from './components/SelectUser'; export { TableUsers } from './components/TableUsers'; -export { useRoleStore } from './stores/role'; +export { useRoleStore, UserRole } from './stores/role'; diff --git a/rsconcept/frontend/src/features/users/models/user.ts b/rsconcept/frontend/src/features/users/models/user.ts index d11e15c5..2c571d48 100644 --- a/rsconcept/frontend/src/features/users/models/user.ts +++ b/rsconcept/frontend/src/features/users/models/user.ts @@ -29,13 +29,3 @@ export interface IUserProfile extends Omit {} * Represents user reference information. */ export interface IUserInfo extends Omit {} - -/** - * Represents user access mode. - */ -export enum UserRole { - READER = 0, - EDITOR, - OWNER, - ADMIN -} diff --git a/rsconcept/frontend/src/features/users/stores/role.ts b/rsconcept/frontend/src/features/users/stores/role.ts index d7797c93..2f7b1e4b 100644 --- a/rsconcept/frontend/src/features/users/stores/role.ts +++ b/rsconcept/frontend/src/features/users/stores/role.ts @@ -1,6 +1,14 @@ import { create } from 'zustand'; -import { UserRole } from '../models/user'; +/** + * Represents user access mode. + */ +export enum UserRole { + READER = 0, + EDITOR, + OWNER, + ADMIN +} export interface RoleFlags { isOwner: boolean; diff --git a/rsconcept/frontend/src/stores/dialogs.ts b/rsconcept/frontend/src/stores/dialogs.ts index a87ee264..0d10f007 100644 --- a/rsconcept/frontend/src/stores/dialogs.ts +++ b/rsconcept/frontend/src/stores/dialogs.ts @@ -1,19 +1,19 @@ import { create } from 'zustand'; import { DlgChangeLocationProps } from '@/features/library/dialogs/DlgChangeLocation'; +import { DlgCloneLibraryItemProps } from '@/features/library/dialogs/DlgCloneLibraryItem'; +import { DlgCreateVersionProps } from '@/features/library/dialogs/DlgCreateVersion'; import { DlgEditEditorsProps } from '@/features/library/dialogs/DlgEditEditors/DlgEditEditors'; +import { DlgEditVersionsProps } from '@/features/library/dialogs/DlgEditVersions/DlgEditVersions'; import { DlgChangeInputSchemaProps } from '@/features/oss/dialogs/DlgChangeInputSchema'; import { DlgCreateOperationProps } from '@/features/oss/dialogs/DlgCreateOperation/DlgCreateOperation'; import { DlgDeleteOperationProps } from '@/features/oss/dialogs/DlgDeleteOperation'; import { DlgEditOperationProps } from '@/features/oss/dialogs/DlgEditOperation/DlgEditOperation'; import { DlgRelocateConstituentsProps } from '@/features/oss/dialogs/DlgRelocateConstituents'; -import { DlgCloneLibraryItemProps } from '@/features/rsform/dialogs/DlgCloneLibraryItem'; import { DlgCreateCstProps } from '@/features/rsform/dialogs/DlgCreateCst/DlgCreateCst'; -import { DlgCreateVersionProps } from '@/features/rsform/dialogs/DlgCreateVersion'; import { DlgCstTemplateProps } from '@/features/rsform/dialogs/DlgCstTemplate/DlgCstTemplate'; import { DlgDeleteCstProps } from '@/features/rsform/dialogs/DlgDeleteCst/DlgDeleteCst'; import { DlgEditReferenceProps } from '@/features/rsform/dialogs/DlgEditReference/DlgEditReference'; -import { DlgEditVersionsProps } from '@/features/rsform/dialogs/DlgEditVersions/DlgEditVersions'; import { DlgEditWordFormsProps } from '@/features/rsform/dialogs/DlgEditWordForms/DlgEditWordForms'; import { DlgInlineSynthesisProps } from '@/features/rsform/dialogs/DlgInlineSynthesis/DlgInlineSynthesis'; import { DlgRenameCstProps } from '@/features/rsform/dialogs/DlgRenameCst'; diff --git a/rsconcept/frontend/src/utils/labels.ts b/rsconcept/frontend/src/utils/labels.ts index d72931f9..5e6c2b3c 100644 --- a/rsconcept/frontend/src/utils/labels.ts +++ b/rsconcept/frontend/src/utils/labels.ts @@ -5,7 +5,7 @@ * Description is a long description used in tooltips. */ import { AccessPolicy, LibraryItemType } from '@/features/library/models/library'; -import { UserRole } from '@/features/users/models/user'; +import { UserRole } from '@/features/users/stores/role'; /** * Retrieves label for {@link UserRole}.