diff --git a/mapping_workbench/frontend/src/hooks/use-items-store.js b/mapping_workbench/frontend/src/hooks/use-items-store.js index f447c71ff..114fde7f9 100644 --- a/mapping_workbench/frontend/src/hooks/use-items-store.js +++ b/mapping_workbench/frontend/src/hooks/use-items-store.js @@ -1,16 +1,19 @@ -import PropTypes from 'prop-types'; import {useEffect, useState} from 'react'; export const useItemsStore = (sectionApi) => { const [state, setState] = useState({ items: [], - itemsCount: 0 + itemsCount: 0, + load: true }); const handleItemsGet = () => { sectionApi.getItems() .then(res => setState({items: res.items, itemsCount: res.count})) - .catch(err => console.error(err)) + .catch(err => { + setState(prev => ({...prev, error: true})) + console.error(err) + }) } useEffect(() => { diff --git a/mapping_workbench/frontend/src/pages/app/conceptual-mapping-rules/develop/index.js b/mapping_workbench/frontend/src/pages/app/conceptual-mapping-rules/develop/index.js index 0774d2ac8..628b70880 100644 --- a/mapping_workbench/frontend/src/pages/app/conceptual-mapping-rules/develop/index.js +++ b/mapping_workbench/frontend/src/pages/app/conceptual-mapping-rules/develop/index.js @@ -17,6 +17,7 @@ import {conceptualMappingRulesApi as sectionApi} from 'src/api/conceptual-mappin import AddEditDrawer from "src/sections/app/conceptual-mapping-rule/develop/add-edit-drawer"; import {ConceptualMappingTabs} from 'src/sections/app/conceptual-mapping-rule/conceptual-mapping-tabs'; import {NavigationTabsWrapper} from '../../../../components/navigation-tabs-wrapper'; +import {TableLoadWrapper} from '../../../../sections/components/table-load-wrapper'; const SEARCH_COLUMNS = [ "source_structural_element_sdk_element_id", @@ -34,7 +35,8 @@ export const Page = () => { const [itemsStore, setItemsStore] = useState({ items: [], - itemsCount: 0 + itemsCount: 0, + load: true }); @@ -46,7 +48,10 @@ export const Page = () => { const handleItemsGet = () => { sectionApi.getItems({rowsPerPage: -1}) .then(res => setItemsStore({items: res.items, itemsCount: res.count})) - .catch(err => console.warn(err)) + .catch(err => { + setItemsStore(prev => ({...prev, error: true})) + console.warn(err) + }) } const handleGetOntologyFragments = () => { @@ -120,19 +125,22 @@ export const Page = () => { Add - + + + { - + + + { const [state, setState] = useState({ items: [], - itemsCount: 0 + itemsCount: 0, + load: true }); const handleItemsGet = () => { sectionApi.getItems({}, null, '/fields_registry/elements') - .then(res => setState({ - items: res.items, - itemsCount: res.count - })) - .catch(err => console.error(err)) + .then(res => { setState({items: res.items, itemsCount: res.count, load: false}) }) + .catch(err => { + setState(prev => ({...prev, error: true})) + console.error(err) + }) } useEffect(() => { @@ -63,6 +65,8 @@ const Page = () => { usePageView(); + // const {load,error} = itemsStore + return ( <> @@ -129,17 +133,21 @@ const Page = () => { - + + + + ); diff --git a/mapping_workbench/frontend/src/pages/app/fields-and-nodes/tree-view/index.js b/mapping_workbench/frontend/src/pages/app/fields-and-nodes/tree-view/index.js index 221ed7390..c2fc4930a 100644 --- a/mapping_workbench/frontend/src/pages/app/fields-and-nodes/tree-view/index.js +++ b/mapping_workbench/frontend/src/pages/app/fields-and-nodes/tree-view/index.js @@ -1,12 +1,11 @@ -import Card from '@mui/material/Card'; -import Stack from '@mui/material/Stack'; +import Paper from '@mui/material/Paper'; import {Seo} from 'src/components/seo'; import {Layout as AppLayout} from 'src/layouts/app'; import TreeView from "src/sections/app/tree-view/tree-view"; import {fieldsRegistryApi as sectionApi} from 'src/api/fields-registry'; import {ElementsDefinitionTabs} from 'src/sections/app/elements-definition'; -import {NavigationTabsWrapper} from '../../../../components/navigation-tabs-wrapper'; +import {NavigationTabsWrapper} from 'src/components/navigation-tabs-wrapper'; export const Page = () => { return ( @@ -15,12 +14,9 @@ export const Page = () => { - - - - - + + + ) }; diff --git a/mapping_workbench/frontend/src/sections/app/tree-view/tree-view.js b/mapping_workbench/frontend/src/sections/app/tree-view/tree-view.js index 2d7e94cf5..1ee25e386 100644 --- a/mapping_workbench/frontend/src/sections/app/tree-view/tree-view.js +++ b/mapping_workbench/frontend/src/sections/app/tree-view/tree-view.js @@ -1,12 +1,13 @@ import {useEffect, useState} from "react"; -import {SimpleTreeView} from '@mui/x-tree-view/SimpleTreeView'; +import AlbumIcon from '@mui/icons-material/Album'; +import AdjustIcon from '@mui/icons-material/Adjust'; import ChevronRightIcon from '@mui/icons-material/ChevronRight'; import ExpandMoreIcon from '@mui/icons-material/ExpandMore'; -import {TreeItem, treeItemClasses} from "@mui/x-tree-view"; + import Stack from "@mui/material/Stack"; -import AlbumIcon from '@mui/icons-material/Album'; -import AdjustIcon from '@mui/icons-material/Adjust'; +import {TreeItem, treeItemClasses} from "@mui/x-tree-view"; +import {SimpleTreeView} from '@mui/x-tree-view/SimpleTreeView'; import CircularProgress from "@mui/material/CircularProgress"; import {TableErrorFetching, TableNoData} from "../shacl-validation-report/utils"; @@ -51,6 +52,7 @@ const TreeView = (props) => { if (state.loading) { return diff --git a/mapping_workbench/frontend/src/sections/components/table-load-wrapper.js b/mapping_workbench/frontend/src/sections/components/table-load-wrapper.js new file mode 100644 index 000000000..34d5e4da3 --- /dev/null +++ b/mapping_workbench/frontend/src/sections/components/table-load-wrapper.js @@ -0,0 +1,33 @@ +import Alert from '@mui/material/Alert'; +import Skeleton from '@mui/material/Skeleton'; +import Stack from '@mui/material/Stack'; + +export const TableLoadWrapper = ({children, data, dataState, lines}) => { + if (dataState.load) return + if (dataState.error) return + if (!data.length) return + return children +} + + +export const TableSkeleton = ({lines = 5}) => { + return
+ {new Array(lines).fill("").map((e, i) => + )} +
+} + +export const TableNoData = () => { + return + No Data ! + +} + +export const TableErrorFetching = () => { + return + Error on fetching data ! + +} \ No newline at end of file