|
| 1 | +import { type LoaderFunctionArgs } from "@remix-run/node"; |
1 | 2 | import type { TaskTriggerSource } from "@trigger.dev/database"; |
| 3 | +import { useCallback, useEffect, useMemo, useRef, useState } from "react"; |
| 4 | +import ReactGridLayout from "react-grid-layout"; |
| 5 | +import { typedjson, useTypedLoaderData } from "remix-typedjson"; |
| 6 | +import { z } from "zod"; |
| 7 | +import { PageBody, PageContainer } from "~/components/layout/AppLayout"; |
| 8 | +import { LogsTaskFilter } from "~/components/logs/LogsTaskFilter"; |
| 9 | +import { type WidgetData } from "~/components/metrics/QueryWidget"; |
| 10 | +import { QueuesFilter } from "~/components/metrics/QueuesFilter"; |
| 11 | +import { ScopeFilter } from "~/components/metrics/ScopeFilter"; |
| 12 | +import { TitleWidget } from "~/components/metrics/TitleWidget"; |
| 13 | +import { CreateDashboardPageButton } from "~/components/navigation/DashboardDialogs"; |
| 14 | +import { NavBar, PageAccessories, PageTitle } from "~/components/primitives/PageHeader"; |
| 15 | +import { TimeFilter } from "~/components/runs/v3/SharedFilters"; |
2 | 16 | import { $replica } from "~/db.server"; |
| 17 | +import { useEnvironment } from "~/hooks/useEnvironment"; |
| 18 | +import { useOrganization } from "~/hooks/useOrganizations"; |
| 19 | +import { useProject } from "~/hooks/useProject"; |
| 20 | +import { useSearchParams } from "~/hooks/useSearchParam"; |
3 | 21 | import { findProjectBySlug } from "~/models/project.server"; |
4 | 22 | import { findEnvironmentBySlug } from "~/models/runtimeEnvironment.server"; |
5 | 23 | import { getAllTaskIdentifiers } from "~/models/task.server"; |
6 | | -import { requireUser } from "~/services/session.server"; |
7 | | -import { EnvironmentParamSchema } from "~/utils/pathBuilder"; |
8 | 24 | import { |
9 | 25 | type LayoutItem, |
10 | 26 | type Widget, |
11 | 27 | MetricDashboardPresenter, |
12 | 28 | } from "~/presenters/v3/MetricDashboardPresenter.server"; |
13 | | -import { type LoaderFunctionArgs } from "@remix-run/node"; |
14 | | -import { typedjson, useTypedLoaderData } from "remix-typedjson"; |
15 | | -import { PageBody, PageContainer } from "~/components/layout/AppLayout"; |
16 | | -import { NavBar, PageTitle } from "~/components/primitives/PageHeader"; |
17 | | -import { z } from "zod"; |
18 | | -import { useCallback, useEffect, useMemo, useRef, useState } from "react"; |
| 29 | +import { requireUser } from "~/services/session.server"; |
19 | 30 | import { cn } from "~/utils/cn"; |
20 | | -import ReactGridLayout from "react-grid-layout"; |
21 | | -import { MetricWidget } from "../resources.metric"; |
22 | | -import { TitleWidget } from "~/components/metrics/TitleWidget"; |
23 | | -import { useOrganization } from "~/hooks/useOrganizations"; |
24 | | -import { useProject } from "~/hooks/useProject"; |
25 | | -import { useEnvironment } from "~/hooks/useEnvironment"; |
26 | | -import { TimeFilter } from "~/components/runs/v3/SharedFilters"; |
27 | | -import { LogsTaskFilter } from "~/components/logs/LogsTaskFilter"; |
28 | | -import { ScopeFilter } from "~/components/metrics/ScopeFilter"; |
29 | | -import { QueuesFilter } from "~/components/metrics/QueuesFilter"; |
30 | | -import { useCurrentPlan } from "../_app.orgs.$organizationSlug/route"; |
31 | | -import { useSearchParams } from "~/hooks/useSearchParam"; |
32 | | -import { type WidgetData } from "~/components/metrics/QueryWidget"; |
| 31 | +import { EnvironmentParamSchema } from "~/utils/pathBuilder"; |
33 | 32 | import { QueryScopeSchema } from "~/v3/querySchemas"; |
| 33 | +import { useCurrentPlan } from "../_app.orgs.$organizationSlug/route"; |
| 34 | +import { MetricWidget } from "../resources.metric"; |
34 | 35 |
|
35 | 36 | const ParamSchema = EnvironmentParamSchema.extend({ |
36 | 37 | dashboardKey: z.string(), |
@@ -82,10 +83,21 @@ export default function Page() { |
82 | 83 | possibleTasks, |
83 | 84 | } = useTypedLoaderData<typeof loader>(); |
84 | 85 |
|
| 86 | + const organization = useOrganization(); |
| 87 | + const project = useProject(); |
| 88 | + const environment = useEnvironment(); |
| 89 | + |
85 | 90 | return ( |
86 | 91 | <PageContainer> |
87 | 92 | <NavBar> |
88 | 93 | <PageTitle title={title} /> |
| 94 | + <PageAccessories> |
| 95 | + <CreateDashboardPageButton |
| 96 | + organization={organization} |
| 97 | + project={project} |
| 98 | + environment={environment} |
| 99 | + /> |
| 100 | + </PageAccessories> |
89 | 101 | </NavBar> |
90 | 102 | <PageBody scrollable={false}> |
91 | 103 | <div className="h-full"> |
|
0 commit comments