From 639d274714b956139e50c532a938ad22eec0a9e4 Mon Sep 17 00:00:00 2001 From: IRBorisov <8611739+IRBorisov@users.noreply.github.com> Date: Wed, 1 Nov 2023 13:41:32 +0300 Subject: [PATCH] Prepare fontend templates integration --- .../frontend/src/context/LibraryContext.tsx | 34 ++++++++++++------- .../frontend/src/context/RSFormContext.tsx | 2 +- .../frontend/src/pages/CreateRSFormPage.tsx | 4 +-- .../frontend/src/pages/LibraryPage/index.tsx | 2 +- .../src/pages/RSFormPage/DlgCloneRSForm.tsx | 4 +-- .../src/pages/RSFormPage/DlgTemplates.tsx | 21 ------------ .../frontend/src/pages/RSFormPage/RSTabs.tsx | 6 ++-- rsconcept/frontend/src/utils/backendAPI.ts | 8 +++++ 8 files changed, 38 insertions(+), 43 deletions(-) diff --git a/rsconcept/frontend/src/context/LibraryContext.tsx b/rsconcept/frontend/src/context/LibraryContext.tsx index 9a5436bf..0505bb12 100644 --- a/rsconcept/frontend/src/context/LibraryContext.tsx +++ b/rsconcept/frontend/src/context/LibraryContext.tsx @@ -1,24 +1,25 @@ import { createContext, useCallback, useContext, useEffect, useState } from 'react'; import { ErrorInfo } from '../components/BackendError'; -import { ILibraryFilter } from '../models/miscelanious'; -import { IRSFormCreateData, IRSFormData } from '../models/rsform'; import { matchLibraryItem } from '../models/library'; import { ILibraryItem } from '../models/library'; -import { DataCallback, deleteLibraryItem, getLibrary, postCloneLibraryItem, postNewRSForm } from '../utils/backendAPI'; +import { ILibraryFilter } from '../models/miscelanious'; +import { IRSFormCreateData, IRSFormData } from '../models/rsform'; +import { DataCallback, deleteLibraryItem, getLibrary, getTemplates, postCloneLibraryItem, postNewRSForm } from '../utils/backendAPI'; import { useAuth } from './AuthContext'; interface ILibraryContext { items: ILibraryItem[] + templates: ILibraryItem[] loading: boolean processing: boolean error: ErrorInfo setError: (error: ErrorInfo) => void - filter: (params: ILibraryFilter) => ILibraryItem[] - createSchema: (data: IRSFormCreateData, callback?: DataCallback) => void - cloneSchema: (target: number, data: IRSFormCreateData, callback: DataCallback) => void - destroySchema: (target: number, callback?: () => void) => void + applyFilter: (params: ILibraryFilter) => ILibraryItem[] + createItem: (data: IRSFormCreateData, callback?: DataCallback) => void + cloneItem: (target: number, data: IRSFormCreateData, callback: DataCallback) => void + destroyItem: (target: number, callback?: () => void) => void } const LibraryContext = createContext(null) @@ -38,12 +39,13 @@ interface LibraryStateProps { export const LibraryState = ({ children }: LibraryStateProps) => { const [ items, setItems ] = useState([]) + const [ templates, setTemplates ] = useState([]) const [ loading, setLoading ] = useState(false); const [ processing, setProcessing ] = useState(false); const [ error, setError ] = useState(undefined); const { user } = useAuth(); - const filter = useCallback( + const applyFilter = useCallback( (params: ILibraryFilter) => { let result = items; if (params.is_owned) { @@ -80,13 +82,19 @@ export const LibraryState = ({ children }: LibraryStateProps) => { if (callback) callback(); } }); + + setTemplates([]); + getTemplates({ + showError: true, + onSuccess: newData => setTemplates(newData) + }); }, []); useEffect(() => { reload(); }, [reload, user]); - const createSchema = useCallback( + const createItem = useCallback( (data: IRSFormCreateData, callback?: DataCallback) => { setError(undefined); postNewRSForm({ @@ -103,7 +111,7 @@ export const LibraryState = ({ children }: LibraryStateProps) => { }); }, [reload, user]); - const destroySchema = useCallback( + const destroyItem = useCallback( (target: number, callback?: () => void) => { setError(undefined) deleteLibraryItem(String(target), { @@ -119,7 +127,7 @@ export const LibraryState = ({ children }: LibraryStateProps) => { }); }, [setError, reload, user]); - const cloneSchema = useCallback( + const cloneItem = useCallback( (target: number, data: IRSFormCreateData, callback: DataCallback) => { if (!user) { return; @@ -141,8 +149,8 @@ export const LibraryState = ({ children }: LibraryStateProps) => { return ( { children } diff --git a/rsconcept/frontend/src/context/RSFormContext.tsx b/rsconcept/frontend/src/context/RSFormContext.tsx index 5a22dea5..8842af08 100644 --- a/rsconcept/frontend/src/context/RSFormContext.tsx +++ b/rsconcept/frontend/src/context/RSFormContext.tsx @@ -3,12 +3,12 @@ import { createContext, useCallback, useContext, useMemo, useState } from 'react import { type ErrorInfo } from '../components/BackendError' import { useRSFormDetails } from '../hooks/useRSFormDetails' import { ILibraryItem } from '../models/library' +import { ILibraryUpdateData } from '../models/library' import { IConstituentaList, IConstituentaMeta, ICstCreateData, ICstMovetoData, ICstRenameData, ICstUpdateData, IRSForm, IRSFormUploadData } from '../models/rsform' -import { ILibraryUpdateData } from '../models/library' import { type DataCallback, deleteUnsubscribe, getTRSFile, diff --git a/rsconcept/frontend/src/pages/CreateRSFormPage.tsx b/rsconcept/frontend/src/pages/CreateRSFormPage.tsx index 5bac427e..f8f9e05f 100644 --- a/rsconcept/frontend/src/pages/CreateRSFormPage.tsx +++ b/rsconcept/frontend/src/pages/CreateRSFormPage.tsx @@ -22,7 +22,7 @@ import { EXTEOR_TRS_FILE } from '../utils/constants'; function CreateRSFormPage() { const location = useLocation(); const { navigateTo, navigateHistory } = useConceptNavigation(); - const { createSchema, error, setError, processing } = useLibrary(); + const { createItem, error, setError, processing } = useLibrary(); const [title, setTitle] = useState(''); const [alias, setAlias] = useState(''); @@ -60,7 +60,7 @@ function CreateRSFormPage() { file: file, fileName: file?.name }; - createSchema(data, (newSchema) => { + createItem(data, (newSchema) => { toast.success('Схема успешно создана'); navigateTo(`/rsforms/${newSchema.id}`); }); diff --git a/rsconcept/frontend/src/pages/LibraryPage/index.tsx b/rsconcept/frontend/src/pages/LibraryPage/index.tsx index 54945c34..2cd37733 100644 --- a/rsconcept/frontend/src/pages/LibraryPage/index.tsx +++ b/rsconcept/frontend/src/pages/LibraryPage/index.tsx @@ -28,7 +28,7 @@ function LibraryPage() { useLayoutEffect( () => { - setItems(library.filter(filter)); + setItems(library.applyFilter(filter)); }, [library, filter, filter.query]); const resetQuery = useCallback( diff --git a/rsconcept/frontend/src/pages/RSFormPage/DlgCloneRSForm.tsx b/rsconcept/frontend/src/pages/RSFormPage/DlgCloneRSForm.tsx index 2bae659c..75654ec7 100644 --- a/rsconcept/frontend/src/pages/RSFormPage/DlgCloneRSForm.tsx +++ b/rsconcept/frontend/src/pages/RSFormPage/DlgCloneRSForm.tsx @@ -22,7 +22,7 @@ function DlgCloneRSForm({ hideWindow }: DlgCloneRSFormProps) { const [common, setCommon] = useState(false); const [canonical, setCanonical] = useState(false); - const { cloneSchema } = useLibrary(); + const { cloneItem } = useLibrary(); const { schema } = useRSForm(); useEffect(() => { @@ -47,7 +47,7 @@ function DlgCloneRSForm({ hideWindow }: DlgCloneRSFormProps) { is_common: common, is_canonical: canonical }; - cloneSchema(schema.id, data, newSchema => { + cloneItem(schema.id, data, newSchema => { toast.success(`Схема создана: ${newSchema.alias}`); navigateTo(`/rsforms/${newSchema.id}`); }); diff --git a/rsconcept/frontend/src/pages/RSFormPage/DlgTemplates.tsx b/rsconcept/frontend/src/pages/RSFormPage/DlgTemplates.tsx index 7a06a543..8c10ad08 100644 --- a/rsconcept/frontend/src/pages/RSFormPage/DlgTemplates.tsx +++ b/rsconcept/frontend/src/pages/RSFormPage/DlgTemplates.tsx @@ -61,27 +61,6 @@ function DlgTemplates({ hideWindow, schema, onCreate }: DlgTemplatesProps) { } }, [alias, selectedType, schema]); -{/* */} - //
- // - // - - //
- return ( { + destroyItem(schema.id, () => { toast.success('Схема удалена'); navigateTo('/library'); }); - }, [schema, destroySchema, navigateTo]); + }, [schema, destroyItem, navigateTo]); const onClaimSchema = useCallback( () => { diff --git a/rsconcept/frontend/src/utils/backendAPI.ts b/rsconcept/frontend/src/utils/backendAPI.ts index 4e87c546..9598eb59 100644 --- a/rsconcept/frontend/src/utils/backendAPI.ts +++ b/rsconcept/frontend/src/utils/backendAPI.ts @@ -131,6 +131,14 @@ export function getLibrary(request: FrontPull) { }); } +export function getTemplates(request: FrontPull) { + AxiosGet({ + title: 'Available LibraryItems list', + endpoint: '/api/library/templates', + request: request + }); +} + export function postNewRSForm(request: FrontExchange) { AxiosPost({ title: 'New RSForm',