rule engine UI, services and API integration

This commit is contained in:
hagiye
2026-06-01 16:01:51 +03:00
45 changed files with 6785 additions and 78 deletions

View File

@@ -1,8 +1,7 @@
import { Navigate, Outlet, Route, Routes, useLocation, useNavigate } from "react-router-dom";
import { QueryClient, QueryClientProvider } from '@tanstack/react-query';
import { DashboardLayout, type SidebarItem } from "@edr/ui-common";
import { LayoutDashboard, Network, Settings } from "lucide-react";
import { LayoutDashboard, Network, Paperclip, Settings } from "lucide-react";
import { useAuth } from "./auth/useAuth";
import LoginPage from "./pages/auth/LoginPage";
import OverviewPage from "./pages/dashboard/OverviewPage";
@@ -11,6 +10,8 @@ import PermissionsPage from "./pages/dashboard/user-management/PermissionsPage";
import RolesPage from "./pages/dashboard/user-management/RolesPage";
import UserManagementPage from "./pages/dashboard/user-management/UserManagementPage";
import LoadingScreen from "./components/LoadingScreen";
import FileUploadSettingsPage from "./pages/documents/FileUploadSettingsPage";
import DropdownSettingsPage from "./pages/dropdown_settings/DropdownSettingsPage";
import DemoUser1Page from "./pages/dashboard/demo/DemoUser1Page";
import DemoUser2Page from "./pages/dashboard/demo/DemoUser2Page";
import { RuleEnginePage } from "./pages/ruleEngine/RuleEngine";
@@ -26,6 +27,38 @@ const queryClient = new QueryClient({
},
});
// const sidebarItems: SidebarItem[] = [
// {
// label: "Overview",
// href: "/dashboard/overview",
// icon: <LayoutDashboard />,
// },
// {
// label: "User management",
// href: "/dashboard/user-management",
// icon: <Network />,
// children: [
// {
// label: "Employees",
// href: "/dashboard/user-management/employees",
// },
// {
// label: "Permissions",
// href: "/dashboard/user-management/permissions",
// },
// {
// label: "Roles",
// href: "/dashboard/user-management/roles",
// },
// ],
// },
// {
// label: "Rule Engine",
// href: "/dashboard/rule-engine",
// icon: <Settings />,
// },
// ];
const sidebarItems: SidebarItem[] = [
{
label: "Overview",
@@ -51,11 +84,21 @@ const sidebarItems: SidebarItem[] = [
},
],
},
{
label: "File Settings",
href: "/dashboard/file-settings",
icon: <Paperclip />,
},
{
label: "Dropdown Settings",
href: "/dashboard/dropdown-settings",
icon: <Settings />,
},
{
label: "Rule Engine",
href: "/dashboard/rule-engine",
icon: <Settings />,
},
}
];
const hasPermission = (
@@ -70,62 +113,10 @@ const hasPermission = (
),
);
};
const DashboardShell = () => {
const navigate = useNavigate();
const location = useLocation();
const { user, logout } = useAuth();
const sidebarItems: SidebarItem[] = [
{
label: "Overview",
href: "/dashboard/overview",
icon: <LayoutDashboard />,
},
{
label: "User management",
href: "/dashboard/user-management",
icon: <Network />,
children: [
{
label: "Employees",
href: "/dashboard/user-management/employees",
},
{
label: "Permissions",
href: "/dashboard/user-management/permissions",
},
{
label: "Roles",
href: "/dashboard/user-management/roles",
},
],
},
{
label: "Rule Engine",
href: "/dashboard/rule-engine",
icon: <Settings />,
},
...(hasPermission(user, "can:demo:user1")
? ([
{
label: "User1",
href: "/dashboard/user1",
icon: <Settings />,
},
] as SidebarItem[])
: []),
...(hasPermission(user, "can:demo:user2")
? ([
{
label: "User2",
href: "/dashboard/user2",
icon: <Settings />,
},
] as SidebarItem[])
: []),
];
const displayName = user?.name?.en || user?.username || user?.email || "User";
return (
@@ -164,22 +155,6 @@ const App = () => {
return (
<QueryClientProvider client={queryClient}>
{/* <Routes>
<Route path="/" element={<Navigate to="/dashboard/overview" replace />} />
<Route path="/dashboard" element={<Navigate to="/dashboard/overview" replace />} />
<Route path="/dashboard" element={<DashboardShell />}>
<Route path="overview" element={<OverviewPage />} />
<Route path="user-management" element={<UserManagementPage />} />
<Route path="rule-engine" element={<RuleEnginePage />} />
<Route path="user-management/employees" element={<EmployeesPage />} />
<Route path="user-management/permissions" element={<PermissionsPage />} />
<Route path="user-management/roles" element={<RolesPage />} />
<Route path="org-structure" element={<Navigate to="/dashboard/user-management" replace />} />
<Route path="org-structure/*" element={<Navigate to="/dashboard/user-management" replace />} />
</Route>
<Route path="*" element={<Navigate to="/dashboard/overview" replace />} />
</Routes>
======= */}
<Routes>
<Route path="/" element={<Navigate to="/dashboard/overview" replace />} />
<Route path="/dashboard" element={<Navigate to="/dashboard/overview" replace />} />
@@ -192,6 +167,8 @@ const App = () => {
<Route path="user-management/roles" element={<RolesPage />} />
<Route path="user1" element={<DemoUser1Page />} />
<Route path="user2" element={<DemoUser2Page />} />
<Route path="file-settings" element={<FileUploadSettingsPage />} />
<Route path="dropdown-settings" element={<DropdownSettingsPage />} />
<Route path="org-structure" element={<Navigate to="/dashboard/user-management" replace />} />
<Route path="org-structure/*" element={<Navigate to="/dashboard/user-management" replace />} />
</Route>