mirror of
https://github.com/OneUptime/oneuptime.git
synced 2026-01-11 19:56:44 +00:00
Merge pull request #2213 from OneUptime/exception-refactor
Some checks are pending
Push Release Images to Docker Hub and GitHub Container Registry / generate-build-number (push) Waiting to run
Push Release Images to Docker Hub and GitHub Container Registry / read-version (push) Waiting to run
Push Release Images to Docker Hub and GitHub Container Registry / helm-chart-deploy (push) Blocked by required conditions
Push Release Images to Docker Hub and GitHub Container Registry / mcp-docker-image-deploy (push) Blocked by required conditions
Push Release Images to Docker Hub and GitHub Container Registry / nginx-docker-image-deploy (push) Blocked by required conditions
Push Release Images to Docker Hub and GitHub Container Registry / ai-agent-docker-image-deploy (push) Blocked by required conditions
Push Release Images to Docker Hub and GitHub Container Registry / publish-npm-packages (push) Blocked by required conditions
Push Release Images to Docker Hub and GitHub Container Registry / docs-docker-image-deploy (push) Blocked by required conditions
Push Release Images to Docker Hub and GitHub Container Registry / worker-docker-image-deploy (push) Blocked by required conditions
Push Release Images to Docker Hub and GitHub Container Registry / workflow-docker-image-deploy (push) Blocked by required conditions
Push Release Images to Docker Hub and GitHub Container Registry / e2e-docker-image-deploy (push) Blocked by required conditions
Push Release Images to Docker Hub and GitHub Container Registry / isolated-vm-docker-image-deploy (push) Blocked by required conditions
Push Release Images to Docker Hub and GitHub Container Registry / home-docker-image-deploy (push) Blocked by required conditions
Push Release Images to Docker Hub and GitHub Container Registry / test-server-docker-image-deploy (push) Blocked by required conditions
Push Release Images to Docker Hub and GitHub Container Registry / otel-collector-docker-image-deploy (push) Blocked by required conditions
Push Release Images to Docker Hub and GitHub Container Registry / status-page-docker-image-deploy (push) Blocked by required conditions
Push Release Images to Docker Hub and GitHub Container Registry / test-docker-image-deploy (push) Blocked by required conditions
Push Release Images to Docker Hub and GitHub Container Registry / probe-ingest-docker-image-deploy (push) Blocked by required conditions
Push Release Images to Docker Hub and GitHub Container Registry / server-monitor-ingest-docker-image-deploy (push) Blocked by required conditions
Push Release Images to Docker Hub and GitHub Container Registry / telemetry-docker-image-deploy (push) Blocked by required conditions
Push Release Images to Docker Hub and GitHub Container Registry / incoming-request-ingest-docker-image-deploy (push) Blocked by required conditions
Push Release Images to Docker Hub and GitHub Container Registry / probe-docker-image-deploy (push) Blocked by required conditions
Push Release Images to Docker Hub and GitHub Container Registry / admin-dashboard-docker-image-deploy (push) Blocked by required conditions
Push Release Images to Docker Hub and GitHub Container Registry / dashboard-docker-image-deploy (push) Blocked by required conditions
Push Release Images to Docker Hub and GitHub Container Registry / app-docker-image-deploy (push) Blocked by required conditions
Push Release Images to Docker Hub and GitHub Container Registry / accounts-docker-image-deploy (push) Blocked by required conditions
Push Release Images to Docker Hub and GitHub Container Registry / infrastructure-agent-deploy (push) Blocked by required conditions
Push Release Images to Docker Hub and GitHub Container Registry / Publish GitHub release (push) Blocked by required conditions
Push Release Images to Docker Hub and GitHub Container Registry / publish-terraform-provider (push) Blocked by required conditions
Push Release Images to Docker Hub and GitHub Container Registry / api-reference-docker-image-deploy (push) Blocked by required conditions
Push Release Images to Docker Hub and GitHub Container Registry / Push release tags before GitHub release (push) Blocked by required conditions
Push Release Images to Docker Hub and GitHub Container Registry / test-e2e-release-saas (push) Blocked by required conditions
Push Release Images to Docker Hub and GitHub Container Registry / test-e2e-release-self-hosted (push) Blocked by required conditions
Push Release Images to Docker Hub and GitHub Container Registry / Create draft GitHub release (push) Blocked by required conditions
Some checks are pending
Push Release Images to Docker Hub and GitHub Container Registry / generate-build-number (push) Waiting to run
Push Release Images to Docker Hub and GitHub Container Registry / read-version (push) Waiting to run
Push Release Images to Docker Hub and GitHub Container Registry / helm-chart-deploy (push) Blocked by required conditions
Push Release Images to Docker Hub and GitHub Container Registry / mcp-docker-image-deploy (push) Blocked by required conditions
Push Release Images to Docker Hub and GitHub Container Registry / nginx-docker-image-deploy (push) Blocked by required conditions
Push Release Images to Docker Hub and GitHub Container Registry / ai-agent-docker-image-deploy (push) Blocked by required conditions
Push Release Images to Docker Hub and GitHub Container Registry / publish-npm-packages (push) Blocked by required conditions
Push Release Images to Docker Hub and GitHub Container Registry / docs-docker-image-deploy (push) Blocked by required conditions
Push Release Images to Docker Hub and GitHub Container Registry / worker-docker-image-deploy (push) Blocked by required conditions
Push Release Images to Docker Hub and GitHub Container Registry / workflow-docker-image-deploy (push) Blocked by required conditions
Push Release Images to Docker Hub and GitHub Container Registry / e2e-docker-image-deploy (push) Blocked by required conditions
Push Release Images to Docker Hub and GitHub Container Registry / isolated-vm-docker-image-deploy (push) Blocked by required conditions
Push Release Images to Docker Hub and GitHub Container Registry / home-docker-image-deploy (push) Blocked by required conditions
Push Release Images to Docker Hub and GitHub Container Registry / test-server-docker-image-deploy (push) Blocked by required conditions
Push Release Images to Docker Hub and GitHub Container Registry / otel-collector-docker-image-deploy (push) Blocked by required conditions
Push Release Images to Docker Hub and GitHub Container Registry / status-page-docker-image-deploy (push) Blocked by required conditions
Push Release Images to Docker Hub and GitHub Container Registry / test-docker-image-deploy (push) Blocked by required conditions
Push Release Images to Docker Hub and GitHub Container Registry / probe-ingest-docker-image-deploy (push) Blocked by required conditions
Push Release Images to Docker Hub and GitHub Container Registry / server-monitor-ingest-docker-image-deploy (push) Blocked by required conditions
Push Release Images to Docker Hub and GitHub Container Registry / telemetry-docker-image-deploy (push) Blocked by required conditions
Push Release Images to Docker Hub and GitHub Container Registry / incoming-request-ingest-docker-image-deploy (push) Blocked by required conditions
Push Release Images to Docker Hub and GitHub Container Registry / probe-docker-image-deploy (push) Blocked by required conditions
Push Release Images to Docker Hub and GitHub Container Registry / admin-dashboard-docker-image-deploy (push) Blocked by required conditions
Push Release Images to Docker Hub and GitHub Container Registry / dashboard-docker-image-deploy (push) Blocked by required conditions
Push Release Images to Docker Hub and GitHub Container Registry / app-docker-image-deploy (push) Blocked by required conditions
Push Release Images to Docker Hub and GitHub Container Registry / accounts-docker-image-deploy (push) Blocked by required conditions
Push Release Images to Docker Hub and GitHub Container Registry / infrastructure-agent-deploy (push) Blocked by required conditions
Push Release Images to Docker Hub and GitHub Container Registry / Publish GitHub release (push) Blocked by required conditions
Push Release Images to Docker Hub and GitHub Container Registry / publish-terraform-provider (push) Blocked by required conditions
Push Release Images to Docker Hub and GitHub Container Registry / api-reference-docker-image-deploy (push) Blocked by required conditions
Push Release Images to Docker Hub and GitHub Container Registry / Push release tags before GitHub release (push) Blocked by required conditions
Push Release Images to Docker Hub and GitHub Container Registry / test-e2e-release-saas (push) Blocked by required conditions
Push Release Images to Docker Hub and GitHub Container Registry / test-e2e-release-self-hosted (push) Blocked by required conditions
Push Release Images to Docker Hub and GitHub Container Registry / Create draft GitHub release (push) Blocked by required conditions
Exception refactor
This commit is contained in:
commit
da4f5f6c03
30 changed files with 392 additions and 833 deletions
|
|
@ -397,12 +397,14 @@ export const StatusPageApiClientUrl: URL = new URL(
|
|||
new Route(StatusPageApiRoute.toString()),
|
||||
);
|
||||
|
||||
// Internal URL for server-to-server communication (uses internal Docker hostname)
|
||||
export const StatusPageApiInternalUrl: URL = new URL(
|
||||
Protocol.HTTP,
|
||||
AppApiHostname.toString(),
|
||||
new Route(StatusPageApiRoute.toString()),
|
||||
);
|
||||
/*
|
||||
*Internal URL for server-to-server communication (uses internal Docker hostname)
|
||||
*Note: The internal path is /api/status-page (not /status-page-api) because
|
||||
* /status-page-api is the external route that Nginx rewrites to /api/status-page
|
||||
*/
|
||||
export const StatusPageApiInternalUrl: URL = URL.fromString(
|
||||
AppApiClientUrl.toString(),
|
||||
).addRoute(new Route("/status-page"));
|
||||
|
||||
export const DashboardClientUrl: URL = new URL(
|
||||
HttpProtocol,
|
||||
|
|
|
|||
|
|
@ -143,6 +143,7 @@ enum IconProp {
|
|||
Brain = "Brain",
|
||||
FlowDiagram = "FlowDiagram",
|
||||
GitHub = "GitHub",
|
||||
Bug = "Bug",
|
||||
}
|
||||
|
||||
export default IconProp;
|
||||
|
|
|
|||
|
|
@ -1319,6 +1319,17 @@ const Icon: FunctionComponent<ComponentProps> = ({
|
|||
/>
|
||||
</>,
|
||||
);
|
||||
} else if (icon === IconProp.Bug) {
|
||||
// Bug icon for exceptions - matching home page
|
||||
return getSvgWrapper(
|
||||
<>
|
||||
<ellipse cx="12" cy="14" rx="5" ry="6" />
|
||||
<path
|
||||
strokeLinecap="round"
|
||||
d="M9 8.5C9 6.5 10.5 5 12 5s3 1.5 3 3.5M4 11l3 1m10-1 3 1M4 17l3-1m10 1 3-1M12 8v12M9 14h6"
|
||||
/>
|
||||
</>,
|
||||
);
|
||||
}
|
||||
|
||||
return <></>;
|
||||
|
|
|
|||
|
|
@ -84,6 +84,24 @@ const NavBarMenuItem: FunctionComponent<ComponentProps> = (
|
|||
hoverBg: "hover:bg-violet-50",
|
||||
hoverRing: "group-hover:ring-violet-300",
|
||||
},
|
||||
orange: {
|
||||
bg: "bg-orange-50",
|
||||
ring: "ring-orange-200",
|
||||
hoverBg: "hover:bg-orange-50",
|
||||
hoverRing: "group-hover:ring-orange-300",
|
||||
},
|
||||
stone: {
|
||||
bg: "bg-stone-100",
|
||||
ring: "ring-stone-300",
|
||||
hoverBg: "hover:bg-stone-50",
|
||||
hoverRing: "group-hover:ring-stone-400",
|
||||
},
|
||||
sky: {
|
||||
bg: "bg-sky-50",
|
||||
ring: "ring-sky-200",
|
||||
hoverBg: "hover:bg-sky-50",
|
||||
hoverRing: "group-hover:ring-sky-300",
|
||||
},
|
||||
};
|
||||
|
||||
const colors: {
|
||||
|
|
|
|||
|
|
@ -178,6 +178,11 @@ const AIAgentTasksRoutes: React.LazyExoticComponent<
|
|||
> = lazy(() => {
|
||||
return import("./Routes/AIAgentTasksRoutes");
|
||||
});
|
||||
const ExceptionsRoutes: React.LazyExoticComponent<
|
||||
React.FunctionComponent<PageComponentProps>
|
||||
> = lazy(() => {
|
||||
return import("./Routes/ExceptionsRoutes");
|
||||
});
|
||||
const PageNotFound: React.LazyExoticComponent<
|
||||
React.FunctionComponent<PageComponentProps>
|
||||
> = lazy(() => {
|
||||
|
|
@ -610,6 +615,13 @@ const App: () => JSX.Element = () => {
|
|||
element={<AIAgentTasksRoutes {...commonPageProps} />}
|
||||
/>
|
||||
|
||||
{/** Exceptions */}
|
||||
|
||||
<PageRoute
|
||||
path={RouteMap[PageMap.EXCEPTIONS_ROOT]?.toString() || ""}
|
||||
element={<ExceptionsRoutes {...commonPageProps} />}
|
||||
/>
|
||||
|
||||
{/* 👇️ only match this when no other routes match */}
|
||||
<PageRoute
|
||||
path="*"
|
||||
|
|
|
|||
|
|
@ -20,7 +20,7 @@ const TelemetryExceptionElement: FunctionComponent<ComponentProps> = (
|
|||
props: ComponentProps,
|
||||
): ReactElement => {
|
||||
const viewRoute: Route = RouteUtil.populateRouteParams(
|
||||
RouteMap[PageMap.TELEMETRY_EXCEPTIONS_ROOT]!,
|
||||
RouteMap[PageMap.EXCEPTIONS_VIEW_ROOT]!,
|
||||
);
|
||||
|
||||
const getResolvedIcon: GetReactElementFunction = (): ReactElement => {
|
||||
|
|
|
|||
|
|
@ -503,7 +503,7 @@ const ExceptionExplorer: FunctionComponent<ComponentProps> = (
|
|||
modelType={TelemetryException}
|
||||
modelId={props.telemetryExceptionId}
|
||||
onDeleteSuccess={() => {
|
||||
Navigation.navigate(RouteMap[PageMap.TELEMETRY] as Route);
|
||||
Navigation.navigate(RouteMap[PageMap.EXCEPTIONS] as Route);
|
||||
}}
|
||||
/>
|
||||
</div>
|
||||
|
|
|
|||
|
|
@ -11,7 +11,6 @@ import TelemetryExceptionElement from "./ExceptionElement";
|
|||
import RouteMap, { RouteUtil } from "../../Utils/RouteMap";
|
||||
import Route from "Common/Types/API/Route";
|
||||
import PageMap from "../../Utils/PageMap";
|
||||
import User from "Common/Models/DatabaseModels/User";
|
||||
import {
|
||||
BulkActionFailed,
|
||||
BulkActionOnClickProps,
|
||||
|
|
@ -35,19 +34,10 @@ export interface ComponentProps {
|
|||
const TelemetryExceptionTable: FunctionComponent<ComponentProps> = (
|
||||
props: ComponentProps,
|
||||
): ReactElement => {
|
||||
let viewRoute: Route = RouteUtil.populateRouteParams(
|
||||
RouteMap[PageMap.TELEMETRY_EXCEPTIONS_ROOT]!,
|
||||
const viewRoute: Route = RouteUtil.populateRouteParams(
|
||||
RouteMap[PageMap.EXCEPTIONS_VIEW_ROOT]!,
|
||||
);
|
||||
|
||||
if (props.telemetryServiceId) {
|
||||
viewRoute = RouteUtil.populateRouteParams(
|
||||
RouteMap[PageMap.TELEMETRY_SERVICES_VIEW_EXCEPTIONS]!,
|
||||
{
|
||||
modelId: props.telemetryServiceId,
|
||||
},
|
||||
);
|
||||
}
|
||||
|
||||
return (
|
||||
<Fragment>
|
||||
<ModelTable<TelemetryException>
|
||||
|
|
@ -399,21 +389,6 @@ const TelemetryExceptionTable: FunctionComponent<ComponentProps> = (
|
|||
title: "Marked As Resolved At",
|
||||
type: FieldType.Date,
|
||||
},
|
||||
{
|
||||
field: {
|
||||
markedAsResolvedByUser: true,
|
||||
},
|
||||
title: "Marked As Resolved At",
|
||||
type: FieldType.EntityArray,
|
||||
filterEntityType: User,
|
||||
filterQuery: {
|
||||
projectId: ProjectUtil.getCurrentProjectId()!,
|
||||
},
|
||||
filterDropdownField: {
|
||||
label: "name",
|
||||
value: "_id",
|
||||
},
|
||||
},
|
||||
{
|
||||
field: {
|
||||
isArchived: true,
|
||||
|
|
@ -428,21 +403,6 @@ const TelemetryExceptionTable: FunctionComponent<ComponentProps> = (
|
|||
title: "Marked As Archived At",
|
||||
type: FieldType.Date,
|
||||
},
|
||||
{
|
||||
field: {
|
||||
markedAsArchivedByUser: true,
|
||||
},
|
||||
title: "Marked As Archived At",
|
||||
type: FieldType.EntityArray,
|
||||
filterEntityType: User,
|
||||
filterQuery: {
|
||||
projectId: ProjectUtil.getCurrentProjectId()!,
|
||||
},
|
||||
filterDropdownField: {
|
||||
label: "name",
|
||||
value: "_id",
|
||||
},
|
||||
},
|
||||
]}
|
||||
selectMoreFields={{
|
||||
isResolved: true,
|
||||
|
|
|
|||
|
|
@ -92,6 +92,15 @@ const DashboardNavbar: FunctionComponent<ComponentProps> = (
|
|||
icon: IconProp.Brain,
|
||||
iconColor: "violet",
|
||||
},
|
||||
{
|
||||
title: "Exceptions",
|
||||
description: "Track and manage exceptions.",
|
||||
route: RouteUtil.populateRouteParams(
|
||||
RouteMap[PageMap.EXCEPTIONS] as Route,
|
||||
),
|
||||
icon: IconProp.Bug,
|
||||
iconColor: "orange",
|
||||
},
|
||||
{
|
||||
title: "Service Catalog",
|
||||
description: "Manage services and dependencies.",
|
||||
|
|
|
|||
|
|
@ -1,9 +1,9 @@
|
|||
import PageComponentProps from "../../PageComponentProps";
|
||||
import PageComponentProps from "../PageComponentProps";
|
||||
import ErrorMessage from "Common/UI/Components/ErrorMessage/ErrorMessage";
|
||||
import React, { FunctionComponent, ReactElement } from "react";
|
||||
import ExceptionsTable from "../../../Components/Exceptions/ExceptionsTable";
|
||||
import ExceptionsTable from "../../Components/Exceptions/ExceptionsTable";
|
||||
|
||||
const Services: FunctionComponent<PageComponentProps> = (
|
||||
const ArchivedExceptionsPage: FunctionComponent<PageComponentProps> = (
|
||||
props: PageComponentProps,
|
||||
): ReactElement => {
|
||||
const disableTelemetryForThisProject: boolean =
|
||||
|
|
@ -26,4 +26,4 @@ const Services: FunctionComponent<PageComponentProps> = (
|
|||
);
|
||||
};
|
||||
|
||||
export default Services;
|
||||
export default ArchivedExceptionsPage;
|
||||
35
Dashboard/src/Pages/Exceptions/Layout.tsx
Normal file
35
Dashboard/src/Pages/Exceptions/Layout.tsx
Normal file
|
|
@ -0,0 +1,35 @@
|
|||
import { getExceptionsBreadcrumbs } from "../../Utils/Breadcrumbs";
|
||||
import PageMap from "../../Utils/PageMap";
|
||||
import RouteMap, { RouteUtil } from "../../Utils/RouteMap";
|
||||
import PageComponentProps from "../PageComponentProps";
|
||||
import SideMenu from "./SideMenu";
|
||||
import Page from "Common/UI/Components/Page/Page";
|
||||
import Navigation from "Common/UI/Utils/Navigation";
|
||||
import React, { FunctionComponent, ReactElement } from "react";
|
||||
import { Outlet } from "react-router-dom";
|
||||
|
||||
const ExceptionsLayout: FunctionComponent<
|
||||
PageComponentProps
|
||||
> = (): ReactElement => {
|
||||
const path: string = Navigation.getRoutePath(RouteUtil.getRoutes());
|
||||
|
||||
if (path.endsWith("exceptions") || path.endsWith("exceptions/*")) {
|
||||
Navigation.navigate(
|
||||
RouteUtil.populateRouteParams(RouteMap[PageMap.EXCEPTIONS_UNRESOLVED]!),
|
||||
);
|
||||
|
||||
return <></>;
|
||||
}
|
||||
|
||||
return (
|
||||
<Page
|
||||
title="Exceptions"
|
||||
breadcrumbLinks={getExceptionsBreadcrumbs(path)}
|
||||
sideMenu={<SideMenu />}
|
||||
>
|
||||
<Outlet />
|
||||
</Page>
|
||||
);
|
||||
};
|
||||
|
||||
export default ExceptionsLayout;
|
||||
|
|
@ -1,9 +1,9 @@
|
|||
import PageComponentProps from "../../PageComponentProps";
|
||||
import PageComponentProps from "../PageComponentProps";
|
||||
import ErrorMessage from "Common/UI/Components/ErrorMessage/ErrorMessage";
|
||||
import React, { FunctionComponent, ReactElement } from "react";
|
||||
import ExceptionsTable from "../../../Components/Exceptions/ExceptionsTable";
|
||||
import ExceptionsTable from "../../Components/Exceptions/ExceptionsTable";
|
||||
|
||||
const Services: FunctionComponent<PageComponentProps> = (
|
||||
const ResolvedExceptionsPage: FunctionComponent<PageComponentProps> = (
|
||||
props: PageComponentProps,
|
||||
): ReactElement => {
|
||||
const disableTelemetryForThisProject: boolean =
|
||||
|
|
@ -27,4 +27,4 @@ const Services: FunctionComponent<PageComponentProps> = (
|
|||
);
|
||||
};
|
||||
|
||||
export default Services;
|
||||
export default ResolvedExceptionsPage;
|
||||
59
Dashboard/src/Pages/Exceptions/SideMenu.tsx
Normal file
59
Dashboard/src/Pages/Exceptions/SideMenu.tsx
Normal file
|
|
@ -0,0 +1,59 @@
|
|||
import TelemetryException from "Common/Models/DatabaseModels/TelemetryException";
|
||||
import PageMap from "../../Utils/PageMap";
|
||||
import RouteMap, { RouteUtil } from "../../Utils/RouteMap";
|
||||
import Route from "Common/Types/API/Route";
|
||||
import IconProp from "Common/Types/Icon/IconProp";
|
||||
import SideMenu, {
|
||||
SideMenuSectionProps,
|
||||
} from "Common/UI/Components/SideMenu/SideMenu";
|
||||
import React, { FunctionComponent, ReactElement } from "react";
|
||||
import { BadgeType } from "Common/UI/Components/Badge/Badge";
|
||||
import ProjectUtil from "Common/UI/Utils/Project";
|
||||
|
||||
const DashboardSideMenu: FunctionComponent = (): ReactElement => {
|
||||
const sections: SideMenuSectionProps[] = [
|
||||
{
|
||||
title: "Exceptions",
|
||||
items: [
|
||||
{
|
||||
link: {
|
||||
title: "Unresolved",
|
||||
to: RouteUtil.populateRouteParams(
|
||||
RouteMap[PageMap.EXCEPTIONS_UNRESOLVED] as Route,
|
||||
),
|
||||
},
|
||||
badgeType: BadgeType.DANGER,
|
||||
icon: IconProp.Alert,
|
||||
modelType: TelemetryException,
|
||||
countQuery: {
|
||||
projectId: ProjectUtil.getCurrentProjectId()!,
|
||||
isResolved: false,
|
||||
isArchived: false,
|
||||
} as any,
|
||||
},
|
||||
{
|
||||
link: {
|
||||
title: "Resolved",
|
||||
to: RouteUtil.populateRouteParams(
|
||||
RouteMap[PageMap.EXCEPTIONS_RESOLVED] as Route,
|
||||
),
|
||||
},
|
||||
icon: IconProp.Check,
|
||||
},
|
||||
{
|
||||
link: {
|
||||
title: "Archived",
|
||||
to: RouteUtil.populateRouteParams(
|
||||
RouteMap[PageMap.EXCEPTIONS_ARCHIVED] as Route,
|
||||
),
|
||||
},
|
||||
icon: IconProp.Archive,
|
||||
},
|
||||
],
|
||||
},
|
||||
];
|
||||
|
||||
return <SideMenu sections={sections} />;
|
||||
};
|
||||
|
||||
export default DashboardSideMenu;
|
||||
|
|
@ -1,9 +1,9 @@
|
|||
import PageComponentProps from "../../PageComponentProps";
|
||||
import PageComponentProps from "../PageComponentProps";
|
||||
import ErrorMessage from "Common/UI/Components/ErrorMessage/ErrorMessage";
|
||||
import React, { FunctionComponent, ReactElement } from "react";
|
||||
import ExceptionsTable from "../../../Components/Exceptions/ExceptionsTable";
|
||||
import ExceptionsTable from "../../Components/Exceptions/ExceptionsTable";
|
||||
|
||||
const Services: FunctionComponent<PageComponentProps> = (
|
||||
const UnresolvedExceptionsPage: FunctionComponent<PageComponentProps> = (
|
||||
props: PageComponentProps,
|
||||
): ReactElement => {
|
||||
const disableTelemetryForThisProject: boolean =
|
||||
|
|
@ -27,4 +27,4 @@ const Services: FunctionComponent<PageComponentProps> = (
|
|||
);
|
||||
};
|
||||
|
||||
export default Services;
|
||||
export default UnresolvedExceptionsPage;
|
||||
|
|
@ -1,10 +1,10 @@
|
|||
import Navigation from "Common/UI/Utils/Navigation";
|
||||
import ExceptionExplorer from "../../../../Components/Exceptions/ExceptionExplorer";
|
||||
import PageComponentProps from "../../../PageComponentProps";
|
||||
import ExceptionExplorer from "../../../Components/Exceptions/ExceptionExplorer";
|
||||
import PageComponentProps from "../../PageComponentProps";
|
||||
import React, { Fragment, FunctionComponent, ReactElement } from "react";
|
||||
import ObjectID from "Common/Types/ObjectID";
|
||||
|
||||
const TelemetryMetricViewPage: FunctionComponent<
|
||||
const ExceptionViewPage: FunctionComponent<
|
||||
PageComponentProps
|
||||
> = (): ReactElement => {
|
||||
const exceptionId: string = Navigation.getLastParamAsString(0);
|
||||
|
|
@ -16,4 +16,4 @@ const TelemetryMetricViewPage: FunctionComponent<
|
|||
);
|
||||
};
|
||||
|
||||
export default TelemetryMetricViewPage;
|
||||
export default ExceptionViewPage;
|
||||
|
|
@ -1,22 +1,20 @@
|
|||
import { getTelemetryBreadcrumbs } from "../../../../Utils/Breadcrumbs";
|
||||
import RouteMap, { RouteUtil } from "../../../../Utils/RouteMap";
|
||||
import PageComponentProps from "../../../PageComponentProps";
|
||||
import { getExceptionsBreadcrumbs } from "../../../Utils/Breadcrumbs";
|
||||
import RouteMap, { RouteUtil } from "../../../Utils/RouteMap";
|
||||
import PageComponentProps from "../../PageComponentProps";
|
||||
import Page from "Common/UI/Components/Page/Page";
|
||||
import Navigation from "Common/UI/Utils/Navigation";
|
||||
import React, { FunctionComponent, ReactElement } from "react";
|
||||
import { Outlet } from "react-router-dom";
|
||||
import PageMap from "../../../../Utils/PageMap";
|
||||
import PageMap from "../../../Utils/PageMap";
|
||||
|
||||
const MetricsLayout: FunctionComponent<
|
||||
const ExceptionViewLayout: FunctionComponent<
|
||||
PageComponentProps
|
||||
> = (): ReactElement => {
|
||||
const path: string = Navigation.getRoutePath(RouteUtil.getRoutes());
|
||||
|
||||
if (path.endsWith("exceptions")) {
|
||||
Navigation.navigate(
|
||||
RouteUtil.populateRouteParams(
|
||||
RouteMap[PageMap.TELEMETRY_EXCEPTIONS_UNRESOLVED]!,
|
||||
),
|
||||
RouteUtil.populateRouteParams(RouteMap[PageMap.EXCEPTIONS_UNRESOLVED]!),
|
||||
);
|
||||
|
||||
return <></>;
|
||||
|
|
@ -25,11 +23,11 @@ const MetricsLayout: FunctionComponent<
|
|||
return (
|
||||
<Page
|
||||
title="Exception Explorer"
|
||||
breadcrumbLinks={getTelemetryBreadcrumbs(path)}
|
||||
breadcrumbLinks={getExceptionsBreadcrumbs(path)}
|
||||
>
|
||||
<Outlet />
|
||||
</Page>
|
||||
);
|
||||
};
|
||||
|
||||
export default MetricsLayout;
|
||||
export default ExceptionViewLayout;
|
||||
|
|
@ -1,86 +0,0 @@
|
|||
import PageComponentProps from "../../../../PageComponentProps";
|
||||
import ObjectID from "Common/Types/ObjectID";
|
||||
import Navigation from "Common/UI/Utils/Navigation";
|
||||
import React, {
|
||||
FunctionComponent,
|
||||
ReactElement,
|
||||
useEffect,
|
||||
useState,
|
||||
} from "react";
|
||||
import TelemetryService from "Common/Models/DatabaseModels/TelemetryService";
|
||||
import ErrorMessage from "Common/UI/Components/ErrorMessage/ErrorMessage";
|
||||
import PageLoader from "Common/UI/Components/Loader/PageLoader";
|
||||
import ModelAPI from "Common/UI/Utils/ModelAPI/ModelAPI";
|
||||
import API from "Common/UI/Utils/API/API";
|
||||
import { PromiseVoidFunction } from "Common/Types/FunctionTypes";
|
||||
import ExceptionsTable from "../../../../../Components/Exceptions/ExceptionsTable";
|
||||
|
||||
const MetricsTablePage: FunctionComponent<
|
||||
PageComponentProps
|
||||
> = (): ReactElement => {
|
||||
const modelId: ObjectID = Navigation.getLastParamAsObjectID(2);
|
||||
|
||||
const [telemetryService, setTelemetryService] =
|
||||
useState<TelemetryService | null>(null);
|
||||
const [isLoading, setIsLoading] = useState<boolean>(false);
|
||||
const [error, setError] = useState<string>("");
|
||||
|
||||
useEffect(() => {
|
||||
fetchTelemetryService().catch((err: Error) => {
|
||||
setError(API.getFriendlyMessage(err));
|
||||
});
|
||||
}, []);
|
||||
|
||||
const fetchTelemetryService: PromiseVoidFunction =
|
||||
async (): Promise<void> => {
|
||||
try {
|
||||
setIsLoading(true);
|
||||
|
||||
const telemetryService: TelemetryService | null =
|
||||
await ModelAPI.getItem({
|
||||
modelType: TelemetryService,
|
||||
id: modelId,
|
||||
select: {
|
||||
name: true,
|
||||
},
|
||||
});
|
||||
|
||||
if (!telemetryService) {
|
||||
setIsLoading(false);
|
||||
setError("Telemetry Service not found.");
|
||||
return;
|
||||
}
|
||||
|
||||
setTelemetryService(telemetryService);
|
||||
setIsLoading(false);
|
||||
} catch (err) {
|
||||
setIsLoading(false);
|
||||
setError(API.getFriendlyMessage(err));
|
||||
}
|
||||
};
|
||||
|
||||
if (error) {
|
||||
return <ErrorMessage message={error} />;
|
||||
}
|
||||
|
||||
if (isLoading) {
|
||||
return <PageLoader isVisible={true} />;
|
||||
}
|
||||
|
||||
if (!telemetryService) {
|
||||
return <ErrorMessage message="Telemetry Service not found." />;
|
||||
}
|
||||
|
||||
return (
|
||||
<ExceptionsTable
|
||||
query={{
|
||||
isArchived: true,
|
||||
}}
|
||||
telemetryServiceId={telemetryService.id!}
|
||||
title="Archived Exceptions"
|
||||
description="All the exceptions that have been archived. You will not be notified about these exceptions."
|
||||
/>
|
||||
);
|
||||
};
|
||||
|
||||
export default MetricsTablePage;
|
||||
|
|
@ -1,87 +0,0 @@
|
|||
import PageComponentProps from "../../../../PageComponentProps";
|
||||
import ObjectID from "Common/Types/ObjectID";
|
||||
import Navigation from "Common/UI/Utils/Navigation";
|
||||
import React, {
|
||||
FunctionComponent,
|
||||
ReactElement,
|
||||
useEffect,
|
||||
useState,
|
||||
} from "react";
|
||||
import TelemetryService from "Common/Models/DatabaseModels/TelemetryService";
|
||||
import ErrorMessage from "Common/UI/Components/ErrorMessage/ErrorMessage";
|
||||
import PageLoader from "Common/UI/Components/Loader/PageLoader";
|
||||
import ModelAPI from "Common/UI/Utils/ModelAPI/ModelAPI";
|
||||
import API from "Common/UI/Utils/API/API";
|
||||
import { PromiseVoidFunction } from "Common/Types/FunctionTypes";
|
||||
import ExceptionsTable from "../../../../../Components/Exceptions/ExceptionsTable";
|
||||
|
||||
const MetricsTablePage: FunctionComponent<
|
||||
PageComponentProps
|
||||
> = (): ReactElement => {
|
||||
const modelId: ObjectID = Navigation.getLastParamAsObjectID(2);
|
||||
|
||||
const [telemetryService, setTelemetryService] =
|
||||
useState<TelemetryService | null>(null);
|
||||
const [isLoading, setIsLoading] = useState<boolean>(false);
|
||||
const [error, setError] = useState<string>("");
|
||||
|
||||
useEffect(() => {
|
||||
fetchTelemetryService().catch((err: Error) => {
|
||||
setError(API.getFriendlyMessage(err));
|
||||
});
|
||||
}, []);
|
||||
|
||||
const fetchTelemetryService: PromiseVoidFunction =
|
||||
async (): Promise<void> => {
|
||||
try {
|
||||
setIsLoading(true);
|
||||
|
||||
const telemetryService: TelemetryService | null =
|
||||
await ModelAPI.getItem({
|
||||
modelType: TelemetryService,
|
||||
id: modelId,
|
||||
select: {
|
||||
name: true,
|
||||
},
|
||||
});
|
||||
|
||||
if (!telemetryService) {
|
||||
setIsLoading(false);
|
||||
setError("Telemetry Service not found.");
|
||||
return;
|
||||
}
|
||||
|
||||
setTelemetryService(telemetryService);
|
||||
setIsLoading(false);
|
||||
} catch (err) {
|
||||
setIsLoading(false);
|
||||
setError(API.getFriendlyMessage(err));
|
||||
}
|
||||
};
|
||||
|
||||
if (error) {
|
||||
return <ErrorMessage message={error} />;
|
||||
}
|
||||
|
||||
if (isLoading) {
|
||||
return <PageLoader isVisible={true} />;
|
||||
}
|
||||
|
||||
if (!telemetryService) {
|
||||
return <ErrorMessage message="Telemetry Service not found." />;
|
||||
}
|
||||
|
||||
return (
|
||||
<ExceptionsTable
|
||||
telemetryServiceId={telemetryService.id!}
|
||||
query={{
|
||||
isResolved: true,
|
||||
isArchived: false,
|
||||
}}
|
||||
title="Resolved Exceptions"
|
||||
description="All the exceptions that have been resolved."
|
||||
/>
|
||||
);
|
||||
};
|
||||
|
||||
export default MetricsTablePage;
|
||||
|
|
@ -1,87 +0,0 @@
|
|||
import PageComponentProps from "../../../../PageComponentProps";
|
||||
import ObjectID from "Common/Types/ObjectID";
|
||||
import Navigation from "Common/UI/Utils/Navigation";
|
||||
import React, {
|
||||
FunctionComponent,
|
||||
ReactElement,
|
||||
useEffect,
|
||||
useState,
|
||||
} from "react";
|
||||
import TelemetryService from "Common/Models/DatabaseModels/TelemetryService";
|
||||
import ErrorMessage from "Common/UI/Components/ErrorMessage/ErrorMessage";
|
||||
import PageLoader from "Common/UI/Components/Loader/PageLoader";
|
||||
import ModelAPI from "Common/UI/Utils/ModelAPI/ModelAPI";
|
||||
import API from "Common/UI/Utils/API/API";
|
||||
import { PromiseVoidFunction } from "Common/Types/FunctionTypes";
|
||||
import ExceptionsTable from "../../../../../Components/Exceptions/ExceptionsTable";
|
||||
|
||||
const MetricsTablePage: FunctionComponent<
|
||||
PageComponentProps
|
||||
> = (): ReactElement => {
|
||||
const modelId: ObjectID = Navigation.getLastParamAsObjectID(2);
|
||||
|
||||
const [telemetryService, setTelemetryService] =
|
||||
useState<TelemetryService | null>(null);
|
||||
const [isLoading, setIsLoading] = useState<boolean>(false);
|
||||
const [error, setError] = useState<string>("");
|
||||
|
||||
useEffect(() => {
|
||||
fetchTelemetryService().catch((err: Error) => {
|
||||
setError(API.getFriendlyMessage(err));
|
||||
});
|
||||
}, []);
|
||||
|
||||
const fetchTelemetryService: PromiseVoidFunction =
|
||||
async (): Promise<void> => {
|
||||
try {
|
||||
setIsLoading(true);
|
||||
|
||||
const telemetryService: TelemetryService | null =
|
||||
await ModelAPI.getItem({
|
||||
modelType: TelemetryService,
|
||||
id: modelId,
|
||||
select: {
|
||||
name: true,
|
||||
},
|
||||
});
|
||||
|
||||
if (!telemetryService) {
|
||||
setIsLoading(false);
|
||||
setError("Telemetry Service not found.");
|
||||
return;
|
||||
}
|
||||
|
||||
setTelemetryService(telemetryService);
|
||||
setIsLoading(false);
|
||||
} catch (err) {
|
||||
setIsLoading(false);
|
||||
setError(API.getFriendlyMessage(err));
|
||||
}
|
||||
};
|
||||
|
||||
if (error) {
|
||||
return <ErrorMessage message={error} />;
|
||||
}
|
||||
|
||||
if (isLoading) {
|
||||
return <PageLoader isVisible={true} />;
|
||||
}
|
||||
|
||||
if (!telemetryService) {
|
||||
return <ErrorMessage message="Telemetry Service not found." />;
|
||||
}
|
||||
|
||||
return (
|
||||
<ExceptionsTable
|
||||
query={{
|
||||
isResolved: false,
|
||||
isArchived: false,
|
||||
}}
|
||||
telemetryServiceId={telemetryService.id!}
|
||||
title="Unresolved Exceptions"
|
||||
description="All the exceptions that have not been resolved."
|
||||
/>
|
||||
);
|
||||
};
|
||||
|
||||
export default MetricsTablePage;
|
||||
|
|
@ -1,19 +0,0 @@
|
|||
import PageComponentProps from "../../../../../PageComponentProps";
|
||||
import ObjectID from "Common/Types/ObjectID";
|
||||
import Navigation from "Common/UI/Utils/Navigation";
|
||||
import React, { Fragment, FunctionComponent, ReactElement } from "react";
|
||||
import ExceptionExplorer from "../../../../../../Components/Exceptions/ExceptionExplorer";
|
||||
|
||||
const ServiceDelete: FunctionComponent<
|
||||
PageComponentProps
|
||||
> = (): ReactElement => {
|
||||
const modelId: ObjectID = Navigation.getLastParamAsObjectID();
|
||||
|
||||
return (
|
||||
<Fragment>
|
||||
<ExceptionExplorer telemetryExceptionId={modelId} />
|
||||
</Fragment>
|
||||
);
|
||||
};
|
||||
|
||||
export default ServiceDelete;
|
||||
|
|
@ -3,14 +3,10 @@ import RouteMap, { RouteUtil } from "../../../../Utils/RouteMap";
|
|||
import Route from "Common/Types/API/Route";
|
||||
import IconProp from "Common/Types/Icon/IconProp";
|
||||
import ObjectID from "Common/Types/ObjectID";
|
||||
import { BadgeType } from "Common/UI/Components/Badge/Badge";
|
||||
import SideMenu from "Common/UI/Components/SideMenu/SideMenu";
|
||||
import SideMenuItem from "Common/UI/Components/SideMenu/SideMenuItem";
|
||||
import SideMenuSection from "Common/UI/Components/SideMenu/SideMenuSection";
|
||||
import React, { FunctionComponent, ReactElement } from "react";
|
||||
import TelemetryException from "Common/Models/DatabaseModels/TelemetryException";
|
||||
import CountModelSideMenuItem from "Common/UI/Components/SideMenu/CountModelSideMenuItem";
|
||||
import ProjectUtil from "Common/UI/Utils/Project";
|
||||
|
||||
export interface ComponentProps {
|
||||
modelId: ObjectID;
|
||||
|
|
@ -75,52 +71,6 @@ const DashboardSideMenu: FunctionComponent<ComponentProps> = (
|
|||
icon={IconProp.ChartBar}
|
||||
/>
|
||||
</SideMenuSection>
|
||||
<SideMenuSection title="Exceptions">
|
||||
<CountModelSideMenuItem<TelemetryException>
|
||||
link={{
|
||||
title: "Unresolved",
|
||||
to: RouteUtil.populateRouteParams(
|
||||
RouteMap[
|
||||
PageMap.TELEMETRY_SERVICES_VIEW_EXCEPTIONS_UNRESOLVED
|
||||
] as Route,
|
||||
{ modelId: props.modelId },
|
||||
),
|
||||
}}
|
||||
badgeType={BadgeType.DANGER}
|
||||
icon={IconProp.Alert}
|
||||
countQuery={{
|
||||
projectId: ProjectUtil.getCurrentProjectId()!,
|
||||
isResolved: false,
|
||||
isArchived: false,
|
||||
telemetryServiceId: props.modelId,
|
||||
}}
|
||||
modelType={TelemetryException}
|
||||
/>
|
||||
<SideMenuItem
|
||||
link={{
|
||||
title: "Resolved",
|
||||
to: RouteUtil.populateRouteParams(
|
||||
RouteMap[
|
||||
PageMap.TELEMETRY_SERVICES_VIEW_EXCEPTIONS_RESOLVED
|
||||
] as Route,
|
||||
{ modelId: props.modelId },
|
||||
),
|
||||
}}
|
||||
icon={IconProp.Check}
|
||||
/>
|
||||
<SideMenuItem
|
||||
link={{
|
||||
title: "Archived",
|
||||
to: RouteUtil.populateRouteParams(
|
||||
RouteMap[
|
||||
PageMap.TELEMETRY_SERVICES_VIEW_EXCEPTIONS_ARCHIVED
|
||||
] as Route,
|
||||
{ modelId: props.modelId },
|
||||
),
|
||||
}}
|
||||
icon={IconProp.Archive}
|
||||
/>
|
||||
</SideMenuSection>
|
||||
<SideMenuSection title="Advanced">
|
||||
<SideMenuItem
|
||||
link={{
|
||||
|
|
|
|||
|
|
@ -1,4 +1,3 @@
|
|||
import TelemetryException from "Common/Models/DatabaseModels/TelemetryException";
|
||||
import PageMap from "../../Utils/PageMap";
|
||||
import RouteMap, { RouteUtil } from "../../Utils/RouteMap";
|
||||
import Route from "Common/Types/API/Route";
|
||||
|
|
@ -7,8 +6,6 @@ import SideMenu, {
|
|||
SideMenuSectionProps,
|
||||
} from "Common/UI/Components/SideMenu/SideMenu";
|
||||
import React, { FunctionComponent, ReactElement } from "react";
|
||||
import { BadgeType } from "Common/UI/Components/Badge/Badge";
|
||||
import ProjectUtil from "Common/UI/Utils/Project";
|
||||
|
||||
const DashboardSideMenu: FunctionComponent = (): ReactElement => {
|
||||
const sections: SideMenuSectionProps[] = [
|
||||
|
|
@ -67,45 +64,6 @@ const DashboardSideMenu: FunctionComponent = (): ReactElement => {
|
|||
},
|
||||
],
|
||||
},
|
||||
{
|
||||
title: "Exceptions",
|
||||
items: [
|
||||
{
|
||||
link: {
|
||||
title: "Unresolved",
|
||||
to: RouteUtil.populateRouteParams(
|
||||
RouteMap[PageMap.TELEMETRY_EXCEPTIONS_UNRESOLVED] as Route,
|
||||
),
|
||||
},
|
||||
badgeType: BadgeType.DANGER,
|
||||
icon: IconProp.Alert,
|
||||
modelType: TelemetryException,
|
||||
countQuery: {
|
||||
projectId: ProjectUtil.getCurrentProjectId()!,
|
||||
isResolved: false,
|
||||
isArchived: false,
|
||||
} as any,
|
||||
},
|
||||
{
|
||||
link: {
|
||||
title: "Resolved",
|
||||
to: RouteUtil.populateRouteParams(
|
||||
RouteMap[PageMap.TELEMETRY_EXCEPTIONS_RESOLVED] as Route,
|
||||
),
|
||||
},
|
||||
icon: IconProp.Check,
|
||||
},
|
||||
{
|
||||
link: {
|
||||
title: "Archived",
|
||||
to: RouteUtil.populateRouteParams(
|
||||
RouteMap[PageMap.TELEMETRY_EXCEPTIONS_ARCHIVED] as Route,
|
||||
),
|
||||
},
|
||||
icon: IconProp.Archive,
|
||||
},
|
||||
],
|
||||
},
|
||||
];
|
||||
|
||||
return <SideMenu sections={sections} />;
|
||||
|
|
|
|||
117
Dashboard/src/Routes/ExceptionsRoutes.tsx
Normal file
117
Dashboard/src/Routes/ExceptionsRoutes.tsx
Normal file
|
|
@ -0,0 +1,117 @@
|
|||
import Loader from "../Components/Loader/Loader";
|
||||
import ComponentProps from "../Pages/PageComponentProps";
|
||||
import ExceptionsLayout from "../Pages/Exceptions/Layout";
|
||||
import ExceptionViewLayout from "../Pages/Exceptions/View/Layout";
|
||||
import PageMap from "../Utils/PageMap";
|
||||
import RouteMap, { ExceptionsRoutePath } from "../Utils/RouteMap";
|
||||
import Route from "Common/Types/API/Route";
|
||||
import React, {
|
||||
FunctionComponent,
|
||||
LazyExoticComponent,
|
||||
ReactElement,
|
||||
Suspense,
|
||||
lazy,
|
||||
} from "react";
|
||||
import { Route as PageRoute, Routes } from "react-router-dom";
|
||||
|
||||
// Lazy Pages
|
||||
const ExceptionsUnresolved: LazyExoticComponent<
|
||||
FunctionComponent<ComponentProps>
|
||||
> = lazy(() => {
|
||||
return import("../Pages/Exceptions/Unresolved");
|
||||
});
|
||||
|
||||
const ExceptionsResolved: LazyExoticComponent<
|
||||
FunctionComponent<ComponentProps>
|
||||
> = lazy(() => {
|
||||
return import("../Pages/Exceptions/Resolved");
|
||||
});
|
||||
|
||||
const ExceptionsArchived: LazyExoticComponent<
|
||||
FunctionComponent<ComponentProps>
|
||||
> = lazy(() => {
|
||||
return import("../Pages/Exceptions/Archived");
|
||||
});
|
||||
|
||||
const ExceptionView: LazyExoticComponent<FunctionComponent<ComponentProps>> =
|
||||
lazy(() => {
|
||||
return import("../Pages/Exceptions/View/Index");
|
||||
});
|
||||
|
||||
const ExceptionsRoutes: FunctionComponent<ComponentProps> = (
|
||||
props: ComponentProps,
|
||||
): ReactElement => {
|
||||
return (
|
||||
<Routes>
|
||||
<PageRoute path="/" element={<ExceptionsLayout {...props} />}>
|
||||
<PageRoute
|
||||
index
|
||||
element={
|
||||
<Suspense fallback={Loader}>
|
||||
<ExceptionsUnresolved
|
||||
{...props}
|
||||
pageRoute={RouteMap[PageMap.EXCEPTIONS] as Route}
|
||||
/>
|
||||
</Suspense>
|
||||
}
|
||||
/>
|
||||
|
||||
<PageRoute
|
||||
path={ExceptionsRoutePath[PageMap.EXCEPTIONS_UNRESOLVED] || ""}
|
||||
element={
|
||||
<Suspense fallback={Loader}>
|
||||
<ExceptionsUnresolved
|
||||
{...props}
|
||||
pageRoute={RouteMap[PageMap.EXCEPTIONS_UNRESOLVED] as Route}
|
||||
/>
|
||||
</Suspense>
|
||||
}
|
||||
/>
|
||||
|
||||
<PageRoute
|
||||
path={ExceptionsRoutePath[PageMap.EXCEPTIONS_RESOLVED] || ""}
|
||||
element={
|
||||
<Suspense fallback={Loader}>
|
||||
<ExceptionsResolved
|
||||
{...props}
|
||||
pageRoute={RouteMap[PageMap.EXCEPTIONS_RESOLVED] as Route}
|
||||
/>
|
||||
</Suspense>
|
||||
}
|
||||
/>
|
||||
|
||||
<PageRoute
|
||||
path={ExceptionsRoutePath[PageMap.EXCEPTIONS_ARCHIVED] || ""}
|
||||
element={
|
||||
<Suspense fallback={Loader}>
|
||||
<ExceptionsArchived
|
||||
{...props}
|
||||
pageRoute={RouteMap[PageMap.EXCEPTIONS_ARCHIVED] as Route}
|
||||
/>
|
||||
</Suspense>
|
||||
}
|
||||
/>
|
||||
</PageRoute>
|
||||
|
||||
{/* Exception View - separate from main layout */}
|
||||
<PageRoute
|
||||
path={ExceptionsRoutePath[PageMap.EXCEPTIONS_VIEW] || ""}
|
||||
element={<ExceptionViewLayout {...props} />}
|
||||
>
|
||||
<PageRoute
|
||||
index
|
||||
element={
|
||||
<Suspense fallback={Loader}>
|
||||
<ExceptionView
|
||||
{...props}
|
||||
pageRoute={RouteMap[PageMap.EXCEPTIONS_VIEW] as Route}
|
||||
/>
|
||||
</Suspense>
|
||||
}
|
||||
/>
|
||||
</PageRoute>
|
||||
</Routes>
|
||||
);
|
||||
};
|
||||
|
||||
export default ExceptionsRoutes;
|
||||
|
|
@ -2,7 +2,6 @@ import Loader from "../Components/Loader/Loader";
|
|||
import ComponentProps from "../Pages/PageComponentProps";
|
||||
import TelemetryServiceViewLayout from "../Pages/Telemetry/Services/View/Layout";
|
||||
import TelemetryMetricLayout from "../Pages/Telemetry/Metrics/View/Layout";
|
||||
import TelemetryExceptionViewLayout from "../Pages/Telemetry/Exceptions/View/Layout";
|
||||
import TelemetryTraceLayout from "../Pages/Telemetry/Traces/View/Layout";
|
||||
import TelemetryViewLayout from "../Pages/Telemetry/Layout";
|
||||
import PageMap from "../Utils/PageMap";
|
||||
|
|
@ -46,36 +45,6 @@ const TelemetryTraces: LazyExoticComponent<FunctionComponent<ComponentProps>> =
|
|||
return import("../Pages/Telemetry/Traces");
|
||||
});
|
||||
|
||||
const TelemetryExceptionsUnresolved: LazyExoticComponent<
|
||||
FunctionComponent<ComponentProps>
|
||||
> = lazy(() => {
|
||||
return import("../Pages/Telemetry/Exceptions/Unresolved");
|
||||
});
|
||||
|
||||
const TelemetryExceptionsResolved: LazyExoticComponent<
|
||||
FunctionComponent<ComponentProps>
|
||||
> = lazy(() => {
|
||||
return import("../Pages/Telemetry/Exceptions/Resolved");
|
||||
});
|
||||
|
||||
const TelemetryServiceViewException: LazyExoticComponent<
|
||||
FunctionComponent<ComponentProps>
|
||||
> = lazy(() => {
|
||||
return import("../Pages/Telemetry/Services/View/Exceptions/View/Index");
|
||||
});
|
||||
|
||||
const TelemetryExceptionsArchived: LazyExoticComponent<
|
||||
FunctionComponent<ComponentProps>
|
||||
> = lazy(() => {
|
||||
return import("../Pages/Telemetry/Exceptions/Archived");
|
||||
});
|
||||
|
||||
const TelemetryViewException: LazyExoticComponent<
|
||||
FunctionComponent<ComponentProps>
|
||||
> = lazy(() => {
|
||||
return import("../Pages/Telemetry/Exceptions/View/Index");
|
||||
});
|
||||
|
||||
const TelemetryMetrics: LazyExoticComponent<FunctionComponent<ComponentProps>> =
|
||||
lazy(() => {
|
||||
return import("../Pages/Telemetry/Metrics");
|
||||
|
|
@ -128,25 +97,6 @@ const TelemetryServiceViewMetrics: LazyExoticComponent<
|
|||
return import("../Pages/Telemetry/Services/View/Metrics/Index");
|
||||
});
|
||||
|
||||
// Exceptions Service
|
||||
const TelemetryExceptionsServiceUnresolved: LazyExoticComponent<
|
||||
FunctionComponent<ComponentProps>
|
||||
> = lazy(() => {
|
||||
return import("../Pages/Telemetry/Services/View/Exceptions/Unresolved");
|
||||
});
|
||||
|
||||
const TelemetryExceptionsServiceResolved: LazyExoticComponent<
|
||||
FunctionComponent<ComponentProps>
|
||||
> = lazy(() => {
|
||||
return import("../Pages/Telemetry/Services/View/Exceptions/Resolved");
|
||||
});
|
||||
|
||||
const TelemetryExceptionsServiceArchived: LazyExoticComponent<
|
||||
FunctionComponent<ComponentProps>
|
||||
> = lazy(() => {
|
||||
return import("../Pages/Telemetry/Services/View/Exceptions/Archived");
|
||||
});
|
||||
|
||||
const TelemetryServicesViewSettings: LazyExoticComponent<
|
||||
FunctionComponent<ComponentProps>
|
||||
> = lazy(() => {
|
||||
|
|
@ -213,54 +163,6 @@ const TelemetryRoutes: FunctionComponent<ComponentProps> = (
|
|||
}
|
||||
/>
|
||||
|
||||
{/** Exceptions - Unresolved, Resolved, Archived */}
|
||||
|
||||
<PageRoute
|
||||
path={
|
||||
TelemetryRoutePath[PageMap.TELEMETRY_EXCEPTIONS_UNRESOLVED] || ""
|
||||
}
|
||||
element={
|
||||
<Suspense fallback={Loader}>
|
||||
<TelemetryExceptionsUnresolved
|
||||
{...props}
|
||||
pageRoute={
|
||||
RouteMap[PageMap.TELEMETRY_EXCEPTIONS_UNRESOLVED] as Route
|
||||
}
|
||||
/>
|
||||
</Suspense>
|
||||
}
|
||||
/>
|
||||
|
||||
<PageRoute
|
||||
path={TelemetryRoutePath[PageMap.TELEMETRY_EXCEPTIONS_RESOLVED] || ""}
|
||||
element={
|
||||
<Suspense fallback={Loader}>
|
||||
<TelemetryExceptionsResolved
|
||||
{...props}
|
||||
pageRoute={
|
||||
RouteMap[PageMap.TELEMETRY_EXCEPTIONS_RESOLVED] as Route
|
||||
}
|
||||
/>
|
||||
</Suspense>
|
||||
}
|
||||
/>
|
||||
|
||||
<PageRoute
|
||||
path={TelemetryRoutePath[PageMap.TELEMETRY_EXCEPTIONS_ARCHIVED] || ""}
|
||||
element={
|
||||
<Suspense fallback={Loader}>
|
||||
<TelemetryExceptionsArchived
|
||||
{...props}
|
||||
pageRoute={
|
||||
RouteMap[PageMap.TELEMETRY_EXCEPTIONS_ARCHIVED] as Route
|
||||
}
|
||||
/>
|
||||
</Suspense>
|
||||
}
|
||||
/>
|
||||
|
||||
{/** ---- */}
|
||||
|
||||
<PageRoute
|
||||
path={TelemetryRoutePath[PageMap.TELEMETRY_SERVICES] || ""}
|
||||
element={
|
||||
|
|
@ -317,37 +219,6 @@ const TelemetryRoutes: FunctionComponent<ComponentProps> = (
|
|||
/>
|
||||
</PageRoute>
|
||||
|
||||
{/** Exception View */}
|
||||
|
||||
<PageRoute
|
||||
path={TelemetryRoutePath[PageMap.TELEMETRY_EXCEPTIONS_ROOT] || ""}
|
||||
element={<TelemetryExceptionViewLayout {...props} />}
|
||||
>
|
||||
<PageRoute
|
||||
index
|
||||
element={
|
||||
<Suspense fallback={Loader}>
|
||||
<TelemetryExceptionsUnresolved
|
||||
{...props}
|
||||
pageRoute={RouteMap[PageMap.TELEMETRY_EXCEPTIONS_ROOT] as Route}
|
||||
/>
|
||||
</Suspense>
|
||||
}
|
||||
/>
|
||||
|
||||
<PageRoute
|
||||
path={RouteUtil.getLastPathForKey(PageMap.TELEMETRY_EXCEPTIONS_VIEW)}
|
||||
element={
|
||||
<Suspense fallback={Loader}>
|
||||
<TelemetryViewException
|
||||
{...props}
|
||||
pageRoute={RouteMap[PageMap.TELEMETRY_EXCEPTIONS_VIEW] as Route}
|
||||
/>
|
||||
</Suspense>
|
||||
}
|
||||
/>
|
||||
</PageRoute>
|
||||
|
||||
{/* Trace View */}
|
||||
|
||||
<PageRoute
|
||||
|
|
@ -427,82 +298,6 @@ const TelemetryRoutes: FunctionComponent<ComponentProps> = (
|
|||
}
|
||||
/>
|
||||
|
||||
{/** Telemetry Service Exceptions */}
|
||||
|
||||
<PageRoute
|
||||
path={RouteUtil.getLastPathForKey(
|
||||
PageMap.TELEMETRY_SERVICES_VIEW_EXCEPTIONS_UNRESOLVED,
|
||||
2,
|
||||
)}
|
||||
element={
|
||||
<Suspense fallback={Loader}>
|
||||
<TelemetryExceptionsServiceUnresolved
|
||||
{...props}
|
||||
pageRoute={
|
||||
RouteMap[
|
||||
PageMap.TELEMETRY_SERVICES_VIEW_EXCEPTIONS_UNRESOLVED
|
||||
] as Route
|
||||
}
|
||||
/>
|
||||
</Suspense>
|
||||
}
|
||||
/>
|
||||
|
||||
<PageRoute
|
||||
path={RouteUtil.getLastPathForKey(
|
||||
PageMap.TELEMETRY_SERVICES_VIEW_EXCEPTIONS_RESOLVED,
|
||||
2,
|
||||
)}
|
||||
element={
|
||||
<Suspense fallback={Loader}>
|
||||
<TelemetryExceptionsServiceResolved
|
||||
{...props}
|
||||
pageRoute={
|
||||
RouteMap[
|
||||
PageMap.TELEMETRY_SERVICES_VIEW_EXCEPTIONS_RESOLVED
|
||||
] as Route
|
||||
}
|
||||
/>
|
||||
</Suspense>
|
||||
}
|
||||
/>
|
||||
|
||||
<PageRoute
|
||||
path={RouteUtil.getLastPathForKey(
|
||||
PageMap.TELEMETRY_SERVICES_VIEW_EXCEPTION,
|
||||
2,
|
||||
)}
|
||||
element={
|
||||
<Suspense fallback={Loader}>
|
||||
<TelemetryServiceViewException
|
||||
{...props}
|
||||
pageRoute={
|
||||
RouteMap[PageMap.TELEMETRY_SERVICES_VIEW_EXCEPTION] as Route
|
||||
}
|
||||
/>
|
||||
</Suspense>
|
||||
}
|
||||
/>
|
||||
|
||||
<PageRoute
|
||||
path={RouteUtil.getLastPathForKey(
|
||||
PageMap.TELEMETRY_SERVICES_VIEW_EXCEPTIONS_ARCHIVED,
|
||||
2,
|
||||
)}
|
||||
element={
|
||||
<Suspense fallback={Loader}>
|
||||
<TelemetryExceptionsServiceArchived
|
||||
{...props}
|
||||
pageRoute={
|
||||
RouteMap[
|
||||
PageMap.TELEMETRY_SERVICES_VIEW_EXCEPTIONS_ARCHIVED
|
||||
] as Route
|
||||
}
|
||||
/>
|
||||
</Suspense>
|
||||
}
|
||||
/>
|
||||
|
||||
<PageRoute
|
||||
path={RouteUtil.getLastPathForKey(
|
||||
PageMap.TELEMETRY_SERVICES_VIEW_TRACE,
|
||||
|
|
|
|||
36
Dashboard/src/Utils/Breadcrumbs/ExceptionsBreadcrumbs.ts
Normal file
36
Dashboard/src/Utils/Breadcrumbs/ExceptionsBreadcrumbs.ts
Normal file
|
|
@ -0,0 +1,36 @@
|
|||
import PageMap from "../PageMap";
|
||||
import { BuildBreadcrumbLinksByTitles } from "./Helper";
|
||||
import Dictionary from "Common/Types/Dictionary";
|
||||
import Link from "Common/Types/Link";
|
||||
|
||||
export function getExceptionsBreadcrumbs(
|
||||
path: string,
|
||||
): Array<Link> | undefined {
|
||||
const breadcrumpLinksMap: Dictionary<Link[]> = {
|
||||
...BuildBreadcrumbLinksByTitles(PageMap.EXCEPTIONS, [
|
||||
"Project",
|
||||
"Exceptions",
|
||||
]),
|
||||
...BuildBreadcrumbLinksByTitles(PageMap.EXCEPTIONS_UNRESOLVED, [
|
||||
"Project",
|
||||
"Exceptions",
|
||||
"Unresolved",
|
||||
]),
|
||||
...BuildBreadcrumbLinksByTitles(PageMap.EXCEPTIONS_RESOLVED, [
|
||||
"Project",
|
||||
"Exceptions",
|
||||
"Resolved",
|
||||
]),
|
||||
...BuildBreadcrumbLinksByTitles(PageMap.EXCEPTIONS_ARCHIVED, [
|
||||
"Project",
|
||||
"Exceptions",
|
||||
"Archived",
|
||||
]),
|
||||
...BuildBreadcrumbLinksByTitles(PageMap.EXCEPTIONS_VIEW, [
|
||||
"Project",
|
||||
"Exceptions",
|
||||
"View Exception",
|
||||
]),
|
||||
};
|
||||
return breadcrumpLinksMap[path];
|
||||
}
|
||||
|
|
@ -26,34 +26,6 @@ export function getTelemetryBreadcrumbs(path: string): Array<Link> | undefined {
|
|||
"Metrics",
|
||||
]),
|
||||
|
||||
...BuildBreadcrumbLinksByTitles(PageMap.TELEMETRY_EXCEPTIONS_ARCHIVED, [
|
||||
"Project",
|
||||
"Telemetry",
|
||||
"Exceptions",
|
||||
"Archived",
|
||||
]),
|
||||
|
||||
...BuildBreadcrumbLinksByTitles(PageMap.TELEMETRY_EXCEPTIONS_RESOLVED, [
|
||||
"Project",
|
||||
"Telemetry",
|
||||
"Exceptions",
|
||||
"Resolved",
|
||||
]),
|
||||
|
||||
...BuildBreadcrumbLinksByTitles(PageMap.TELEMETRY_EXCEPTIONS_UNRESOLVED, [
|
||||
"Project",
|
||||
"Telemetry",
|
||||
"Exceptions",
|
||||
"Unresolved",
|
||||
]),
|
||||
|
||||
...BuildBreadcrumbLinksByTitles(PageMap.TELEMETRY_EXCEPTIONS_VIEW, [
|
||||
"Project",
|
||||
"Telemetry",
|
||||
"Exceptions",
|
||||
"View Exception",
|
||||
]),
|
||||
|
||||
...BuildBreadcrumbLinksByTitles(PageMap.TELEMETRY_METRIC_VIEW, [
|
||||
"Project",
|
||||
"Telemetry",
|
||||
|
|
@ -97,55 +69,6 @@ export function getTelemetryBreadcrumbs(path: string): Array<Link> | undefined {
|
|||
"Metrics",
|
||||
]),
|
||||
|
||||
// service exceptions.
|
||||
...BuildBreadcrumbLinksByTitles(
|
||||
PageMap.TELEMETRY_SERVICES_VIEW_EXCEPTIONS,
|
||||
["Project", "Telemetry", "Services", "View Service", "Exceptions"],
|
||||
),
|
||||
|
||||
// service exceptions.
|
||||
...BuildBreadcrumbLinksByTitles(PageMap.TELEMETRY_SERVICES_VIEW_EXCEPTION, [
|
||||
"Project",
|
||||
"Telemetry",
|
||||
"Services",
|
||||
"View Service",
|
||||
"Exceptions",
|
||||
"View Exception",
|
||||
]),
|
||||
|
||||
...BuildBreadcrumbLinksByTitles(
|
||||
PageMap.TELEMETRY_SERVICES_VIEW_EXCEPTIONS_UNRESOLVED,
|
||||
[
|
||||
"Project",
|
||||
"Telemetry",
|
||||
"Services",
|
||||
"View Service",
|
||||
"Exceptions",
|
||||
"Unresolved",
|
||||
],
|
||||
),
|
||||
...BuildBreadcrumbLinksByTitles(
|
||||
PageMap.TELEMETRY_SERVICES_VIEW_EXCEPTIONS_RESOLVED,
|
||||
[
|
||||
"Project",
|
||||
"Telemetry",
|
||||
"Services",
|
||||
"View Service",
|
||||
"Exceptions",
|
||||
"Resolved",
|
||||
],
|
||||
),
|
||||
...BuildBreadcrumbLinksByTitles(
|
||||
PageMap.TELEMETRY_SERVICES_VIEW_EXCEPTIONS_ARCHIVED,
|
||||
[
|
||||
"Project",
|
||||
"Telemetry",
|
||||
"Services",
|
||||
"View Service",
|
||||
"Exceptions",
|
||||
"Archived",
|
||||
],
|
||||
),
|
||||
...BuildBreadcrumbLinksByTitles(PageMap.TELEMETRY_SERVICES_VIEW_TRACES, [
|
||||
"Project",
|
||||
"Telemetry",
|
||||
|
|
|
|||
|
|
@ -11,3 +11,4 @@ export * from "./ServiceCatalogBreadcrumbs";
|
|||
export * from "./CodeRepositoryBreadcrumbs";
|
||||
export * from "./DashboardBreadCrumbs";
|
||||
export * from "./AIAgentTasksBreadcrumbs";
|
||||
export * from "./ExceptionsBreadcrumbs";
|
||||
|
|
|
|||
|
|
@ -13,20 +13,12 @@ enum PageMap {
|
|||
TELEMETRY_METRIC_ROOT = "TELEMETRY_METRIC_ROOT",
|
||||
TELEMETRY_TRACE_ROOT = "TELEMETRY_TRACE_ROOT",
|
||||
TELEMETRY_LOG_ROOT = "TELEMETRY_LOG_ROOT",
|
||||
TELEMETRY_EXCEPTIONS_ROOT = "TELEMETRY_EXCEPTIONS_ROOT",
|
||||
|
||||
TELEMETRY_SERVICES_VIEW_ROOT = "TELEMETRY_SERVICES_VIEW_ROOT",
|
||||
TELEMETRY = "TELEMETRY",
|
||||
TELEMETRY_SERVICES = "TELEMETRY_SERVICES",
|
||||
TELEMETRY_DOCUMENTATION = "TELEMETRY_DOCUMENTATION",
|
||||
|
||||
TELEMETRY_EXCEPTIONS = "TELEMETRY_EXCEPTIONS",
|
||||
TELEMETRY_EXCEPTIONS_UNRESOLVED = "TELEMETRY_EXCEPTIONS_UNRESOLVED",
|
||||
TELEMETRY_EXCEPTIONS_RESOLVED = "TELEMETRY_EXCEPTIONS_RESOLVED",
|
||||
TELEMETRY_EXCEPTIONS_ARCHIVED = "TELEMETRY_EXCEPTIONS_ARCHIVED",
|
||||
TELEMETRY_EXCEPTIONS_VIEW = "TELEMETRY_EXCEPTIONS_VIEW",
|
||||
TELEMETRY_EXCEPTIONS_VIEW_DELETE = "TELEMETRY_EXCEPTIONS_VIEW_DELETE",
|
||||
|
||||
TELEMETRY_TRACES = "TELEMETRY_TRACES",
|
||||
TELEMETRY_TRACE_VIEW = "TELEMETRY_TRACE_VIEW",
|
||||
|
||||
|
|
@ -42,16 +34,6 @@ enum PageMap {
|
|||
// Telemetry - LOGS
|
||||
TELEMETRY_SERVICES_VIEW_LOGS = "TELEMETRY_SERVICE_VIEW_LOGS",
|
||||
|
||||
// Exceptions
|
||||
TELEMETRY_SERVICES_VIEW_EXCEPTIONS = "TELEMETRY_SERVICE_VIEW_EXCEPTIONS",
|
||||
TELEMETRY_SERVICES_VIEW_EXCEPTION = "TELEMETRY_SERVICE_VIEW_EXCEPTION",
|
||||
// Exceptions - Unresolved
|
||||
TELEMETRY_SERVICES_VIEW_EXCEPTIONS_UNRESOLVED = "TELEMETRY_SERVICE_VIEW_EXCEPTIONS_UNRESOLVED",
|
||||
// Exceptions - Resolved
|
||||
TELEMETRY_SERVICES_VIEW_EXCEPTIONS_RESOLVED = "TELEMETRY_SERVICE_VIEW_EXCEPTIONS_RESOLVED",
|
||||
// Exceptions - Archived
|
||||
TELEMETRY_SERVICES_VIEW_EXCEPTIONS_ARCHIVED = "TELEMETRY_SERVICE_VIEW_EXCEPTIONS_ARCHIVED",
|
||||
|
||||
// Traces
|
||||
TELEMETRY_SERVICES_VIEW_TRACES = "TELEMETRY_SERVICE_VIEW_TRACES",
|
||||
TELEMETRY_SERVICES_VIEW_TRACE = "TELEMETRY_SERVICE_VIEW_TRACE",
|
||||
|
|
@ -430,6 +412,15 @@ enum PageMap {
|
|||
AI_AGENT_TASK_VIEW_PULL_REQUESTS = "AI_AGENT_TASK_VIEW_PULL_REQUESTS",
|
||||
AI_AGENT_TASK_VIEW_DELETE = "AI_AGENT_TASK_VIEW_DELETE",
|
||||
|
||||
// Exceptions (standalone, not under Telemetry)
|
||||
EXCEPTIONS_ROOT = "EXCEPTIONS_ROOT",
|
||||
EXCEPTIONS = "EXCEPTIONS",
|
||||
EXCEPTIONS_UNRESOLVED = "EXCEPTIONS_UNRESOLVED",
|
||||
EXCEPTIONS_RESOLVED = "EXCEPTIONS_RESOLVED",
|
||||
EXCEPTIONS_ARCHIVED = "EXCEPTIONS_ARCHIVED",
|
||||
EXCEPTIONS_VIEW_ROOT = "EXCEPTIONS_VIEW_ROOT",
|
||||
EXCEPTIONS_VIEW = "EXCEPTIONS_VIEW",
|
||||
|
||||
// Push Logs in resource views
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -78,10 +78,6 @@ export const TelemetryRoutePath: Dictionary<string> = {
|
|||
[PageMap.TELEMETRY_LOGS]: "logs",
|
||||
[PageMap.TELEMETRY_TRACES]: "traces",
|
||||
[PageMap.TELEMETRY_METRICS]: "metrics",
|
||||
[PageMap.TELEMETRY_EXCEPTIONS]: "exceptions/unresolved",
|
||||
[PageMap.TELEMETRY_EXCEPTIONS_RESOLVED]: "exceptions/resolved",
|
||||
[PageMap.TELEMETRY_EXCEPTIONS_UNRESOLVED]: "exceptions/unresolved",
|
||||
[PageMap.TELEMETRY_EXCEPTIONS_ARCHIVED]: "exceptions/archived",
|
||||
[PageMap.TELEMETRY_SERVICES_VIEW_ROOT]: "services",
|
||||
|
||||
[PageMap.TELEMETRY_METRIC_ROOT]: `metric`,
|
||||
|
|
@ -90,27 +86,26 @@ export const TelemetryRoutePath: Dictionary<string> = {
|
|||
[PageMap.TELEMETRY_TRACE_ROOT]: `traces/view`,
|
||||
[PageMap.TELEMETRY_TRACE_VIEW]: `traces/view/${RouteParams.ModelID}`, // modelID is spanId
|
||||
|
||||
[PageMap.TELEMETRY_EXCEPTIONS_ROOT]: `exceptions`,
|
||||
[PageMap.TELEMETRY_EXCEPTIONS_VIEW]: `exceptions/${RouteParams.ModelID}`,
|
||||
|
||||
[PageMap.TELEMETRY_LOG_ROOT]: `logs`,
|
||||
|
||||
[PageMap.TELEMETRY_SERVICES_VIEW]: `services/${RouteParams.ModelID}`,
|
||||
[PageMap.TELEMETRY_SERVICES_VIEW_DELETE]: `services/${RouteParams.ModelID}/delete`,
|
||||
[PageMap.TELEMETRY_SERVICES_VIEW_LOGS]: `services/${RouteParams.ModelID}/logs`,
|
||||
[PageMap.TELEMETRY_SERVICES_VIEW_EXCEPTION]: `services/${RouteParams.ModelID}/exceptions/${RouteParams.SubModelID}`,
|
||||
[PageMap.TELEMETRY_SERVICES_VIEW_TRACES]: `services/${RouteParams.ModelID}/traces`,
|
||||
[PageMap.TELEMETRY_SERVICES_VIEW_TRACE]: `services/${RouteParams.ModelID}/traces/${RouteParams.SubModelID}`,
|
||||
[PageMap.TELEMETRY_SERVICES_VIEW_METRICS]: `services/${RouteParams.ModelID}/metrics`,
|
||||
[PageMap.TELEMETRY_SERVICES_VIEW_METRIC]: `services/${RouteParams.ModelID}/metrics/view`,
|
||||
[PageMap.TELEMETRY_SERVICES_VIEW_SETTINGS]: `services/${RouteParams.ModelID}/settings`,
|
||||
[PageMap.TELEMETRY_SERVICES_VIEW_DOCUMENTATION]: `services/${RouteParams.ModelID}/documentation`,
|
||||
[PageMap.TELEMETRY_SERVICES_VIEW_EXCEPTIONS]: `services/${RouteParams.ModelID}/exceptions`,
|
||||
};
|
||||
|
||||
// service exceptions.
|
||||
[PageMap.TELEMETRY_SERVICES_VIEW_EXCEPTIONS_ARCHIVED]: `services/${RouteParams.ModelID}/exceptions/archived`,
|
||||
[PageMap.TELEMETRY_SERVICES_VIEW_EXCEPTIONS_UNRESOLVED]: `services/${RouteParams.ModelID}/exceptions/unresolved`,
|
||||
[PageMap.TELEMETRY_SERVICES_VIEW_EXCEPTIONS_RESOLVED]: `services/${RouteParams.ModelID}/exceptions/resolved`,
|
||||
export const ExceptionsRoutePath: Dictionary<string> = {
|
||||
[PageMap.EXCEPTIONS]: "unresolved",
|
||||
[PageMap.EXCEPTIONS_UNRESOLVED]: "unresolved",
|
||||
[PageMap.EXCEPTIONS_RESOLVED]: "resolved",
|
||||
[PageMap.EXCEPTIONS_ARCHIVED]: "archived",
|
||||
[PageMap.EXCEPTIONS_VIEW_ROOT]: "",
|
||||
[PageMap.EXCEPTIONS_VIEW]: `${RouteParams.ModelID}`,
|
||||
};
|
||||
|
||||
export const DashboardsRoutePath: Dictionary<string> = {
|
||||
|
|
@ -1442,71 +1437,12 @@ const RouteMap: Dictionary<Route> = {
|
|||
}`,
|
||||
),
|
||||
|
||||
[PageMap.TELEMETRY_EXCEPTIONS_ROOT]: new Route(
|
||||
`/dashboard/${RouteParams.ProjectID}/telemetry/${
|
||||
TelemetryRoutePath[PageMap.TELEMETRY_EXCEPTIONS_ROOT]
|
||||
}`,
|
||||
),
|
||||
|
||||
[PageMap.TELEMETRY_TRACES]: new Route(
|
||||
`/dashboard/${RouteParams.ProjectID}/telemetry/${
|
||||
TelemetryRoutePath[PageMap.TELEMETRY_TRACES]
|
||||
}`,
|
||||
),
|
||||
|
||||
// Exceptions
|
||||
|
||||
[PageMap.TELEMETRY_EXCEPTIONS]: new Route(
|
||||
`/dashboard/${RouteParams.ProjectID}/telemetry/${
|
||||
TelemetryRoutePath[PageMap.TELEMETRY_EXCEPTIONS]
|
||||
}`,
|
||||
),
|
||||
|
||||
[PageMap.TELEMETRY_EXCEPTIONS_VIEW]: new Route(
|
||||
`/dashboard/${RouteParams.ProjectID}/telemetry/${
|
||||
TelemetryRoutePath[PageMap.TELEMETRY_EXCEPTIONS_VIEW]
|
||||
}`,
|
||||
),
|
||||
|
||||
// Exceptions - Unresolved, Resolved, Archived.
|
||||
[PageMap.TELEMETRY_EXCEPTIONS_UNRESOLVED]: new Route(
|
||||
`/dashboard/${RouteParams.ProjectID}/telemetry/${
|
||||
TelemetryRoutePath[PageMap.TELEMETRY_EXCEPTIONS_UNRESOLVED]
|
||||
}`,
|
||||
),
|
||||
|
||||
[PageMap.TELEMETRY_EXCEPTIONS_RESOLVED]: new Route(
|
||||
`/dashboard/${RouteParams.ProjectID}/telemetry/${
|
||||
TelemetryRoutePath[PageMap.TELEMETRY_EXCEPTIONS_RESOLVED]
|
||||
}`,
|
||||
),
|
||||
|
||||
[PageMap.TELEMETRY_EXCEPTIONS_ARCHIVED]: new Route(
|
||||
`/dashboard/${RouteParams.ProjectID}/telemetry/${
|
||||
TelemetryRoutePath[PageMap.TELEMETRY_EXCEPTIONS_ARCHIVED]
|
||||
}`,
|
||||
),
|
||||
|
||||
// Service Exceptions - Unresolved, Resolved, Archived.
|
||||
|
||||
[PageMap.TELEMETRY_SERVICES_VIEW_EXCEPTIONS_RESOLVED]: new Route(
|
||||
`/dashboard/${RouteParams.ProjectID}/telemetry/${
|
||||
TelemetryRoutePath[PageMap.TELEMETRY_SERVICES_VIEW_EXCEPTIONS_RESOLVED]
|
||||
}`,
|
||||
),
|
||||
|
||||
[PageMap.TELEMETRY_SERVICES_VIEW_EXCEPTIONS_UNRESOLVED]: new Route(
|
||||
`/dashboard/${RouteParams.ProjectID}/telemetry/${
|
||||
TelemetryRoutePath[PageMap.TELEMETRY_SERVICES_VIEW_EXCEPTIONS_UNRESOLVED]
|
||||
}`,
|
||||
),
|
||||
|
||||
[PageMap.TELEMETRY_SERVICES_VIEW_EXCEPTIONS_ARCHIVED]: new Route(
|
||||
`/dashboard/${RouteParams.ProjectID}/telemetry/${
|
||||
TelemetryRoutePath[PageMap.TELEMETRY_SERVICES_VIEW_EXCEPTIONS_ARCHIVED]
|
||||
}`,
|
||||
),
|
||||
|
||||
[PageMap.TELEMETRY_SERVICES_VIEW_ROOT]: new Route(
|
||||
`/dashboard/${RouteParams.ProjectID}/telemetry/${
|
||||
TelemetryRoutePath[PageMap.TELEMETRY_SERVICES_VIEW_ROOT]
|
||||
|
|
@ -1556,19 +1492,6 @@ const RouteMap: Dictionary<Route> = {
|
|||
}`,
|
||||
),
|
||||
|
||||
// view exceptions.
|
||||
[PageMap.TELEMETRY_SERVICES_VIEW_EXCEPTIONS]: new Route(
|
||||
`/dashboard/${RouteParams.ProjectID}/telemetry/${
|
||||
TelemetryRoutePath[PageMap.TELEMETRY_SERVICES_VIEW_EXCEPTIONS]
|
||||
}`,
|
||||
),
|
||||
|
||||
[PageMap.TELEMETRY_SERVICES_VIEW_EXCEPTION]: new Route(
|
||||
`/dashboard/${RouteParams.ProjectID}/telemetry/${
|
||||
TelemetryRoutePath[PageMap.TELEMETRY_SERVICES_VIEW_EXCEPTION]
|
||||
}`,
|
||||
),
|
||||
|
||||
//TELEMETRY_SERVICE_VIEW_TRACES
|
||||
[PageMap.TELEMETRY_SERVICES_VIEW_TRACES]: new Route(
|
||||
`/dashboard/${RouteParams.ProjectID}/telemetry/${
|
||||
|
|
@ -2145,6 +2068,45 @@ const RouteMap: Dictionary<Route> = {
|
|||
AIAgentTasksRoutePath[PageMap.AI_AGENT_TASK_VIEW_DELETE]
|
||||
}`,
|
||||
),
|
||||
|
||||
// Exceptions (standalone menu item)
|
||||
[PageMap.EXCEPTIONS_ROOT]: new Route(
|
||||
`/dashboard/${RouteParams.ProjectID}/exceptions/*`,
|
||||
),
|
||||
|
||||
[PageMap.EXCEPTIONS]: new Route(
|
||||
`/dashboard/${RouteParams.ProjectID}/exceptions/${
|
||||
ExceptionsRoutePath[PageMap.EXCEPTIONS]
|
||||
}`,
|
||||
),
|
||||
|
||||
[PageMap.EXCEPTIONS_UNRESOLVED]: new Route(
|
||||
`/dashboard/${RouteParams.ProjectID}/exceptions/${
|
||||
ExceptionsRoutePath[PageMap.EXCEPTIONS_UNRESOLVED]
|
||||
}`,
|
||||
),
|
||||
|
||||
[PageMap.EXCEPTIONS_RESOLVED]: new Route(
|
||||
`/dashboard/${RouteParams.ProjectID}/exceptions/${
|
||||
ExceptionsRoutePath[PageMap.EXCEPTIONS_RESOLVED]
|
||||
}`,
|
||||
),
|
||||
|
||||
[PageMap.EXCEPTIONS_ARCHIVED]: new Route(
|
||||
`/dashboard/${RouteParams.ProjectID}/exceptions/${
|
||||
ExceptionsRoutePath[PageMap.EXCEPTIONS_ARCHIVED]
|
||||
}`,
|
||||
),
|
||||
|
||||
[PageMap.EXCEPTIONS_VIEW_ROOT]: new Route(
|
||||
`/dashboard/${RouteParams.ProjectID}/exceptions`,
|
||||
),
|
||||
|
||||
[PageMap.EXCEPTIONS_VIEW]: new Route(
|
||||
`/dashboard/${RouteParams.ProjectID}/exceptions/${
|
||||
ExceptionsRoutePath[PageMap.EXCEPTIONS_VIEW]
|
||||
}`,
|
||||
),
|
||||
};
|
||||
|
||||
export class RouteUtil {
|
||||
|
|
|
|||
2
VERSION
2
VERSION
|
|
@ -1 +1 @@
|
|||
9.3.6
|
||||
9.3.7
|
||||
Loading…
Add table
Reference in a new issue