From 170ada93825552d5efdd800cbe4e7664716b74d8 Mon Sep 17 00:00:00 2001 From: Luis-Hebendanz Date: Thu, 25 Jan 2024 14:47:37 +0100 Subject: [PATCH] Fixed sidebar and did problem --- .../clan_cli/webui/routers/endpoints.py | 8 ++ pkgs/clan-cli/tests/test_db_api.py | 5 +- pkgs/ui/src/app/client/[name]/page.tsx | 21 ----- pkgs/ui/src/app/client/client.tsx | 7 +- pkgs/ui/src/components/sidebar/index.tsx | 81 ++++++++++--------- 5 files changed, 60 insertions(+), 62 deletions(-) delete mode 100644 pkgs/ui/src/app/client/[name]/page.tsx diff --git a/pkgs/clan-cli/clan_cli/webui/routers/endpoints.py b/pkgs/clan-cli/clan_cli/webui/routers/endpoints.py index bbf36b7..0403b57 100644 --- a/pkgs/clan-cli/clan_cli/webui/routers/endpoints.py +++ b/pkgs/clan-cli/clan_cli/webui/routers/endpoints.py @@ -168,6 +168,14 @@ def get_entity_by_roles( return entity +@router.get("/api/v1/entity_by_role", response_model=List[Entity], tags=[Tags.entities]) +def get_entity_by_role( + role: Role, db: Session = Depends(sql_db.get_db) +) -> List[sql_models.Entity]: + entity = sql_crud.get_entity_by_role(db, roles=[role]) + return entity + + @router.get("/api/v1/entities", response_model=List[Entity], tags=[Tags.entities]) def get_all_entities( skip: int = 0, limit: int = 100, db: Session = Depends(sql_db.get_db) diff --git a/pkgs/clan-cli/tests/test_db_api.py b/pkgs/clan-cli/tests/test_db_api.py index 1c88810..eb50c9b 100644 --- a/pkgs/clan-cli/tests/test_db_api.py +++ b/pkgs/clan-cli/tests/test_db_api.py @@ -40,7 +40,7 @@ def test_health(api_client: ApiClient) -> None: def create_entities(num: int = 5, role: str = "entity") -> list[EntityCreate]: res = [] - for i in range(num): + for i in range(1, num + 1): en = EntityCreate( did=f"did:sov:test:12{i}", name=f"C{i}", @@ -125,8 +125,7 @@ random.seed(77) def create_eventmessages(num: int = 4) -> list[EventmessageCreate]: res = [] starttime = int(time.time()) - for idx in range(num): - i2 = idx + 1 + for i2 in range(1, num + 1): group_id = i2 % 5 + random.getrandbits(6) + 1 em_req_send = EventmessageCreate( timestamp=starttime + i2 * 10, diff --git a/pkgs/ui/src/app/client/[name]/page.tsx b/pkgs/ui/src/app/client/[name]/page.tsx deleted file mode 100644 index 1068f34..0000000 --- a/pkgs/ui/src/app/client/[name]/page.tsx +++ /dev/null @@ -1,21 +0,0 @@ -import Client from "@/app/client/client"; -import { menuEntityEntries } from "@/components/sidebar"; - -export const dynamic = "error"; -export const dynamicParams = false; -/* -The generateStaticParams function can be used in combination with dynamic route segments -to statically generate routes at build time instead of on-demand at request time. -During next dev, generateStaticParams will be called when you navigate to a route. -During next build, generateStaticParams runs before the corresponding Layouts or Pages are generated. -https://nextjs.org/docs/app/api-reference/functions/generate-static-params -*/ -export function generateStaticParams() { - return menuEntityEntries.map((entry) => ({ - name: entry.label, - })); -} - -export default function Page({ params }: { params: { name: string } }) { - return ; -} diff --git a/pkgs/ui/src/app/client/client.tsx b/pkgs/ui/src/app/client/client.tsx index 8871887..2be8284 100644 --- a/pkgs/ui/src/app/client/client.tsx +++ b/pkgs/ui/src/app/client/client.tsx @@ -26,6 +26,7 @@ import useGetEntityByNameOrDid from "@/components/hooks/useGetEntityByNameOrDid" import { useGetAllServices } from "@/api/services/services"; import axios from "axios"; import CloseIcon from "@mui/icons-material/Close"; +import { useSearchParams } from "next/navigation"; interface SnackMessage { message: string; @@ -105,8 +106,10 @@ const AttachButton = ({ ); }; -export default function Client({ params }: { params: { name: string } }) { - const { name } = params; +export default function Client() { + const searchParams = useSearchParams(); + console.log("params: ", searchParams); + const name = searchParams.get("name") ?? ""; const { entity: entity } = useGetEntityByNameOrDid(name); const { diff --git a/pkgs/ui/src/components/sidebar/index.tsx b/pkgs/ui/src/components/sidebar/index.tsx index b2b7f25..69ac216 100644 --- a/pkgs/ui/src/components/sidebar/index.tsx +++ b/pkgs/ui/src/components/sidebar/index.tsx @@ -9,7 +9,8 @@ import { Tooltip, useMediaQuery, } from "@mui/material"; -import { useGetAllEntities } from "@/api/entities/entities"; +import { useGetEntityByRole } from "@/api/entities/entities"; +import { Role } from "@/api/model/role"; import Image from "next/image"; import React, { ReactNode } from "react"; @@ -34,8 +35,6 @@ type MenuEntry = { subMenuEntries?: MenuEntry[]; }; -export let menuEntityEntries: MenuEntry[] = []; - export const menuEntries: MenuEntry[] = [ { icon: , @@ -72,7 +71,9 @@ interface SidebarProps { } export function Sidebar(props: SidebarProps) { - const { data: entityData } = useGetAllEntities(); + const { data: entityData } = useGetEntityByRole({ + role: Role.service_prosumer, + }); const { show, onClose } = props; const [activeMenuItem, setActiveMenuItem] = React.useState( typeof window !== "undefined" ? window.location.pathname : "", @@ -89,19 +90,22 @@ export function Sidebar(props: SidebarProps) { setCollapseMenuOpen(!collapseMenuOpen); }; - React.useEffect(() => { + const menuEntityEntries: MenuEntry[] = React.useMemo(() => { if (entityData) { - menuEntityEntries = Array.isArray(entityData.data) - ? entityData.data - .filter((entity) => entity.name !== "AP" && entity.name !== "DLG") - .map((entity) => ({ - icon: , - label: entity.name, - to: `/client/${entity.name}`, - disabled: false, - })) + return Array.isArray(entityData.data) + ? entityData.data.map((entity) => ({ + icon: , + label: entity.name, + to: entity.name, + disabled: false, + })) : []; + } else { + return []; } + }, [entityData]); + + React.useEffect(() => { if (isSmallerScreen) { setCollapseMenuOpen(false); } else { @@ -203,30 +207,35 @@ export function Sidebar(props: SidebarProps) { > {menuEntityEntries?.map((menuEntry, idx) => ( - handleMenuItemClick(menuEntry.to)} + - handleMenuItemClick(menuEntry.to)} > - {menuEntry.icon} - - - + + {menuEntry.icon} + + + + ))}