diff --git a/src/client/dd-hub-react/src/sections/document/view/doc-search-view.tsx b/src/client/dd-hub-react/src/sections/document/view/doc-search-view.tsx index b7261d2..fa1a779 100644 --- a/src/client/dd-hub-react/src/sections/document/view/doc-search-view.tsx +++ b/src/client/dd-hub-react/src/sections/document/view/doc-search-view.tsx @@ -7,8 +7,8 @@ import Typography from '@mui/material/Typography'; import Pagination from '@mui/material/Pagination'; import { DashboardContent } from 'src/layouts/dashboard'; +import docService, { Doc } from 'src/services/document-service'; import { Attribute, getAttributes } from 'src/services/attribute-service'; -import { Doc, getDocumentByAttributes, getDocuments } from 'src/services/document-service'; import { Iconify } from 'src/components/iconify'; @@ -40,7 +40,7 @@ export function DocSearchView() { const [docs, setDocs] = useState([]); useEffect(() => { - getDocuments({}).then((res) => { + docService.getDocuments({}).then((res) => { setDocs(res); }); }, []); @@ -49,7 +49,7 @@ export function DocSearchView() { const [attributes, setAttributes] = useState>({}); useEffect(() => { - getDocumentByAttributes(attributes).then(setDocs); + docService.getDocumentByAttributes(attributes).then(setDocs); }, [attributes]); function setAttribute(name: string, serilizedValue: string) { diff --git a/src/client/dd-hub-react/src/services/document-service.ts b/src/client/dd-hub-react/src/services/document-service.ts index 8031a81..7487369 100644 --- a/src/client/dd-hub-react/src/services/document-service.ts +++ b/src/client/dd-hub-react/src/services/document-service.ts @@ -77,31 +77,35 @@ export type DocQuery = { attributes?: Record } -export function getDocuments(query: DocQuery | undefined = undefined): Promise { - let documents = _documents; +class DocService { + getDocuments(query: DocQuery | undefined = undefined): Promise { + let documents = _documents; - if (query?.id) - documents = documents.filter(d => d.id === query.id); + if (query?.id) + documents = documents.filter(d => d.id === query.id); - if (query?.name) - documents = documents.filter(d => d.name === query.name); + if (query?.name) + documents = documents.filter(d => d.name === query.name); - for (const name in query?.attributes) { - const attr = query.attributes[name]; - documents = documents.filter(d => d.attributes.find(a => a.name === name)?.serilizedValue.toLowerCase().includes(attr.toLowerCase())); + for (const name in query?.attributes) { + const attr = query.attributes[name]; + documents = documents.filter(d => d.attributes.find(a => a.name === name)?.serilizedValue.toLowerCase().includes(attr.toLowerCase())); + } + + return Promise.resolve(documents); } - return Promise.resolve(documents); + getDocumentById(id: number): Promise { + return this.getDocuments({ id: id }); + } + + getDocumentByName(name: string): Promise { + return this.getDocuments({ name: name }); + } + + getDocumentByAttributes(attributes: Record): Promise { + return this.getDocuments({ attributes: attributes }); + } } -export function getDocumentById(id: number): Promise { - return getDocuments({ id: id }); -} - -export function getDocumentByName(name: string): Promise { - return getDocuments({ name: name }); -} - -export function getDocumentByAttributes(attributes: Record): Promise { - return getDocuments({ attributes: attributes }); -} \ No newline at end of file +export default new DocService(); \ No newline at end of file