Files
CPLv4.0/components/navigation/Navigation.tsx
Ismail Ali 5c3f91cad2 feat: integriere Systemspannungen und Temperaturen mit Redux Thunk und Slice
- Neues Slice systemVoltTempSlice.ts erstellt für Speicherung von Spannungen und Verlauf
- Thunk fetchSystemVoltTempThunk.ts implementiert für asynchrones Laden der Systemwerte
- Service fetchSystemVoltTempService.ts verwendet API /api/cpl/systemVoltTempAPIHandler
- Mock-Daten in systemVoltTempMockData.js definiert
- system.tsx auf Redux umgestellt: useSelector für Werte und Verlauf, fetch per Thunk
- store.ts angepasst: systemVoltTempSlice hinzugefügt
- Chart.js Darstellung von Spannungen und Temperaturen mit Echtzeit-Update alle 5 Sekunden
2025-04-27 11:25:54 +02:00

60 lines
2.0 KiB
TypeScript

"use client"; // components/Navigation.jsx
import React, { useEffect, useState } from "react";
import Link from "next/link";
import { usePathname } from "next/navigation";
interface NavigationProps {
className?: string;
}
const Navigation: React.FC<NavigationProps> = ({ className }) => {
const pathname = usePathname();
const [activeLink, setActiveLink] = useState("");
useEffect(() => {
if (pathname) {
setActiveLink(pathname);
}
}, [pathname]);
const formatPath = (path: string) => {
return process.env.NODE_ENV === "production" ? `${path}.html` : path;
};
const menuItems = [
{ name: "Übersicht", path: "/dashboard" },
{ name: "Kabelüberwachung ", path: "/kabelueberwachung" },
{ name: "Meldungseingänge ", path: "/digitalInputs" }, //vorher Digitale Ein -und Ausgänge
{ name: "Schaltausgänge ", path: "/digitalOutputs" }, //vorher Digitale Ein -und Ausgänge
{ name: "Messwertüberwachung ", path: "/analogeEingaenge" }, //vorher Analoge Eingänge
{ name: "Berichte ", path: "/meldungen" },
{ name: "System ", path: "/system" },
{ name: "Einstellungen ", path: "/einstellungen" },
//{ name: "Zutriffskontrolle", path: "/zutrittskontrolle" },
// Weitere Menüpunkte hier
];
return (
<aside>
<nav className={`h-full flex-shrink-0 mt-16 ${className || "w-48"}`}>
{menuItems.map((item) => (
<Link href={formatPath(item.path)} key={item.name}>
<div
className={`block px-4 py-2 mb-4 font-bold whitespace-nowrap transition duration-300 text-[1rem] sm:text-[1rem] md:text-[1rem] lg:text-[1rem] xl:text-sm 2xl:text-lg ${
activeLink.startsWith(item.path)
? "bg-sky-500 text-white rounded-r-full xl:mr-4 xl:w-full "
: "text-black hover:bg-gray-200 rounded-r-full"
}`}
>
{item.name}
</div>
</Link>
))}
</nav>
</aside>
);
};
export default Navigation;