Compare commits

..

2 Commits

Author SHA1 Message Date
09f80b1f42 Fixed sidebar and did problem
All checks were successful
checks-impure / test (pull_request) Successful in 26s
checks / test (pull_request) Successful in 1m13s
2024-01-25 14:47:52 +01:00
170ada9382 Fixed sidebar and did problem 2024-01-25 14:47:37 +01:00
6 changed files with 65 additions and 62 deletions

View File

@@ -168,6 +168,14 @@ def get_entity_by_roles(
return entity 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]) @router.get("/api/v1/entities", response_model=List[Entity], tags=[Tags.entities])
def get_all_entities( def get_all_entities(
skip: int = 0, limit: int = 100, db: Session = Depends(sql_db.get_db) skip: int = 0, limit: int = 100, db: Session = Depends(sql_db.get_db)

View File

@@ -40,7 +40,7 @@ def test_health(api_client: ApiClient) -> None:
def create_entities(num: int = 5, role: str = "entity") -> list[EntityCreate]: def create_entities(num: int = 5, role: str = "entity") -> list[EntityCreate]:
res = [] res = []
for i in range(num): for i in range(1, num + 1):
en = EntityCreate( en = EntityCreate(
did=f"did:sov:test:12{i}", did=f"did:sov:test:12{i}",
name=f"C{i}", name=f"C{i}",
@@ -125,8 +125,7 @@ random.seed(77)
def create_eventmessages(num: int = 4) -> list[EventmessageCreate]: def create_eventmessages(num: int = 4) -> list[EventmessageCreate]:
res = [] res = []
starttime = int(time.time()) starttime = int(time.time())
for idx in range(num): for i2 in range(1, num + 1):
i2 = idx + 1
group_id = i2 % 5 + random.getrandbits(6) + 1 group_id = i2 % 5 + random.getrandbits(6) + 1
em_req_send = EventmessageCreate( em_req_send = EventmessageCreate(
timestamp=starttime + i2 * 10, timestamp=starttime + i2 * 10,

View File

@@ -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 <Client params={params} />;
}

View File

@@ -26,6 +26,7 @@ import useGetEntityByNameOrDid from "@/components/hooks/useGetEntityByNameOrDid"
import { useGetAllServices } from "@/api/services/services"; import { useGetAllServices } from "@/api/services/services";
import axios from "axios"; import axios from "axios";
import CloseIcon from "@mui/icons-material/Close"; import CloseIcon from "@mui/icons-material/Close";
import { useSearchParams } from "next/navigation";
interface SnackMessage { interface SnackMessage {
message: string; message: string;
@@ -105,8 +106,10 @@ const AttachButton = ({
); );
}; };
export default function Client({ params }: { params: { name: string } }) { export default function Client() {
const { name } = params; const searchParams = useSearchParams();
console.log("params: ", searchParams);
const name = searchParams.get("name") ?? "";
const { entity: entity } = useGetEntityByNameOrDid(name); const { entity: entity } = useGetEntityByNameOrDid(name);
const { const {

View File

@@ -0,0 +1,5 @@
import Client from "@/app/client/client";
export default function Page() {
return <Client />;
}

View File

@@ -9,7 +9,8 @@ import {
Tooltip, Tooltip,
useMediaQuery, useMediaQuery,
} from "@mui/material"; } 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 Image from "next/image";
import React, { ReactNode } from "react"; import React, { ReactNode } from "react";
@@ -34,8 +35,6 @@ type MenuEntry = {
subMenuEntries?: MenuEntry[]; subMenuEntries?: MenuEntry[];
}; };
export let menuEntityEntries: MenuEntry[] = [];
export const menuEntries: MenuEntry[] = [ export const menuEntries: MenuEntry[] = [
{ {
icon: <HomeIcon />, icon: <HomeIcon />,
@@ -72,7 +71,9 @@ interface SidebarProps {
} }
export function Sidebar(props: SidebarProps) { export function Sidebar(props: SidebarProps) {
const { data: entityData } = useGetAllEntities(); const { data: entityData } = useGetEntityByRole({
role: Role.service_prosumer,
});
const { show, onClose } = props; const { show, onClose } = props;
const [activeMenuItem, setActiveMenuItem] = React.useState( const [activeMenuItem, setActiveMenuItem] = React.useState(
typeof window !== "undefined" ? window.location.pathname : "", typeof window !== "undefined" ? window.location.pathname : "",
@@ -89,19 +90,22 @@ export function Sidebar(props: SidebarProps) {
setCollapseMenuOpen(!collapseMenuOpen); setCollapseMenuOpen(!collapseMenuOpen);
}; };
React.useEffect(() => { const menuEntityEntries: MenuEntry[] = React.useMemo(() => {
if (entityData) { if (entityData) {
menuEntityEntries = Array.isArray(entityData.data) return Array.isArray(entityData.data)
? entityData.data ? entityData.data.map((entity) => ({
.filter((entity) => entity.name !== "AP" && entity.name !== "DLG") icon: <PersonIcon />,
.map((entity) => ({ label: entity.name,
icon: <PersonIcon />, to: entity.name,
label: entity.name, disabled: false,
to: `/client/${entity.name}`, }))
disabled: false,
}))
: []; : [];
} else {
return [];
} }
}, [entityData]);
React.useEffect(() => {
if (isSmallerScreen) { if (isSmallerScreen) {
setCollapseMenuOpen(false); setCollapseMenuOpen(false);
} else { } else {
@@ -203,30 +207,35 @@ export function Sidebar(props: SidebarProps) {
> >
<List component="div" disablePadding> <List component="div" disablePadding>
{menuEntityEntries?.map((menuEntry, idx) => ( {menuEntityEntries?.map((menuEntry, idx) => (
<ListItemButton <Link
key={idx} key={"entity-link-" + idx}
sx={{ pl: 4 }} href={`/client?name=${menuEntry.to}`}
className="lg:justify-normal" style={{ textDecoration: "none", color: "white" }}
LinkComponent={Link}
href={menuEntry.to}
disabled={menuEntry.disabled}
selected={activeMenuItem === menuEntry.to}
onClick={() => handleMenuItemClick(menuEntry.to)}
> >
<ListItemIcon <ListItemButton
color="inherit" key={idx}
className="overflow-hidden text-white lg:justify-normal" sx={{ pl: 4 }}
className="lg:justify-normal"
LinkComponent={Link}
disabled={menuEntry.disabled}
selected={activeMenuItem === menuEntry.to}
onClick={() => handleMenuItemClick(menuEntry.to)}
> >
{menuEntry.icon} <ListItemIcon
</ListItemIcon> color="inherit"
<ListItemText className="overflow-hidden text-white lg:justify-normal"
primary={menuEntry.label} >
primaryTypographyProps={{ {menuEntry.icon}
color: "inherit", </ListItemIcon>
}} <ListItemText
className="hidden lg:block" primary={menuEntry.label}
/> primaryTypographyProps={{
</ListItemButton> color: "inherit",
}}
className="hidden lg:block"
/>
</ListItemButton>
</Link>
))} ))}
</List> </List>
</Collapse> </Collapse>