feat(frontend): settings page added

This commit is contained in:
2025-03-04 16:43:03 -06:00
parent 44ba7d9feb
commit 88f2cf07f5
5 changed files with 100 additions and 5 deletions

View File

@@ -0,0 +1,47 @@
import {LstCard} from "@/components/extendedUI/LstCard";
import {useSessionStore} from "@/lib/store/sessionStore";
import {useModuleStore} from "@/lib/store/useModuleStore";
import {useQuery} from "@tanstack/react-query";
import {useRouter} from "@tanstack/react-router";
import axios from "axios";
export default function SettingsPage() {
const token = localStorage.getItem("auth_token");
const {user} = useSessionStore();
const {modules} = useModuleStore();
const router = useRouter();
const fetchSettings = async () => {
const {data} = await axios.get("/api/server/settings", {headers: {Authorization: `Bearer ${token}`}});
return data.data;
};
const adminModule = modules.filter((n) => n.name === "admin");
const userLevel = user?.roles.filter((r) => r.module_id === adminModule[0].module_id) || [];
if (!adminModule[0].roles.includes(userLevel[0]?.role)) {
router.navigate({to: "/"});
}
const {data, isError, error, isLoading} = useQuery({
queryKey: ["settings"],
queryFn: fetchSettings,
enabled: !!token,
refetchOnWindowFocus: true,
});
if (isLoading) {
return <div>Loading.....</div>;
}
if (isError) {
return <div>{JSON.stringify(error)}</div>;
}
return (
<div>
{data.map((i) => {
return <LstCard key={i.settings_id}>{i.name}</LstCard>;
})}
</div>
);
}

View File

@@ -22,7 +22,7 @@ export function AppSidebar() {
{moduleActive("production") && <ProductionSideBar />}
{moduleActive("logistics") && hasAccess(user, "logistics", modules) && <LogisticsSideBar />}
{moduleActive("forklift") && hasAccess(user, "forklift", modules) && <ForkliftSideBar />}
{moduleActive("admin") && hasAccess(user, "eom", modules) && <EomSideBar />}
{moduleActive("eom") && hasAccess(user, "eom", modules) && <EomSideBar />}
{moduleActive("quality") && hasAccess(user, "quality", modules) && <QualitySideBar />}
{moduleActive("admin") && hasAccess(user, "admin", modules) && <AdminSideBar />}
</SidebarContent>

View File

@@ -29,7 +29,7 @@ const data = {
items: [
{
title: "Settings",
url: "#",
url: "/settings",
icon: Settings,
isActive: false,
},
@@ -53,9 +53,16 @@ const data = {
},
{
title: "UCD",
url: "#",
url: "https://ucd.alpla.net:8443/",
icon: Atom,
isActive: false,
newWindow: true,
},
{
title: "Lst Api",
url: "/api/docs",
icon: Webhook,
isActive: false,
},
],
},
@@ -85,7 +92,7 @@ export function AdminSideBar() {
{item.items.map((item) => (
<SidebarMenuSubItem key={item.title}>
<SidebarMenuSubButton asChild isActive={item.isActive}>
<a href={item.url}>
<a href={item.url} target={item.newWindow ? "_blank" : "_self"}>
<item.icon />
<span>{item.title}</span>
</a>