Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

init view #395

Merged
merged 25 commits into from
Mar 25, 2025
Merged
Show file tree
Hide file tree
Changes from 8 commits
Commits
Show all changes
25 commits
Select commit Hold shift + click to select a range
d1c7d4a
init view
jsbroks Mar 18, 2025
0ebe530
add more layout
jsbroks Mar 18, 2025
5247825
cleanup spacing
jsbroks Mar 18, 2025
53077e8
clean up
jsbroks Mar 18, 2025
b90e902
rebase
adityachoudhari26 Mar 18, 2025
8cc3d1a
cardify
adityachoudhari26 Mar 18, 2025
0d0b57c
more org
adityachoudhari26 Mar 18, 2025
9b8b938
fix: Init env deploymen stats query on overview page (#400)
adityachoudhari26 Mar 19, 2025
5b1ade0
fix: Init telemetry query (#401)
adityachoudhari26 Mar 19, 2025
7631712
fix: Cleanup and comments
adityachoudhari26 Mar 19, 2025
6ff784e
nit
adityachoudhari26 Mar 19, 2025
aed94c0
fix: Populate environment policy page (#403)
adityachoudhari26 Mar 20, 2025
869bd9b
fix: Add desired version telemetry query (#402)
adityachoudhari26 Mar 20, 2025
2321e5c
cleanup border style
jsbroks Mar 21, 2025
09cb1c6
Merge branch 'main' into new-environments-view
jsbroks Mar 21, 2025
5455b19
fix: Distro bar ui cleanup (#405)
adityachoudhari26 Mar 21, 2025
8c1b00c
fill out more data
jsbroks Mar 21, 2025
871669e
clean up resources view
jsbroks Mar 21, 2025
029e5ac
fix: Env resources view (#407)
adityachoudhari26 Mar 22, 2025
1544b38
fix: Env deployments tab & scope resources to workspace (#409)
adityachoudhari26 Mar 24, 2025
b33a3dc
rabbit cleanup
adityachoudhari26 Mar 24, 2025
be0dbff
table filters and sortable
adityachoudhari26 Mar 24, 2025
ef137cf
fix: Add summary cards (#413)
adityachoudhari26 Mar 25, 2025
148bb6f
fix: Resource filter is configurable (#414)
adityachoudhari26 Mar 25, 2025
fb36503
cleanup
adityachoudhari26 Mar 25, 2025
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
@@ -0,0 +1,59 @@
"use client";

import type React from "react";
import { useState } from "react";
import { useParams, usePathname, useRouter } from "next/navigation";

import { Tabs, TabsList, TabsTrigger } from "@ctrlplane/ui/tabs";

import { urls } from "~/app/urls";

export const EnvironmentTabs: React.FC = () => {
const { workspaceSlug, systemSlug, environmentId } = useParams<{
workspaceSlug: string;
systemSlug: string;
environmentId: string;
}>();

const environmentUrls = urls
.workspace(workspaceSlug)
.system(systemSlug)
.environment(environmentId);
const baseUrl = environmentUrls.baseUrl();
const overviewUrl = environmentUrls.overview();
const deploymentsUrl = environmentUrls.deployments();
const resourcesUrl = environmentUrls.resources();
const policiesUrl = environmentUrls.policies();

const pathname = usePathname();
const getInitialTab = () => {
if (pathname === policiesUrl) return "policies";
if (pathname === resourcesUrl) return "resources";
if (pathname === deploymentsUrl) return "deployments";
if (pathname === baseUrl) return "overview";
return "overview";
};

const [activeTab, setActiveTab] = useState(getInitialTab());

const router = useRouter();

const onTabChange = (value: string) => {
if (value === "overview") router.push(overviewUrl);
if (value === "deployments") router.push(deploymentsUrl);
if (value === "resources") router.push(resourcesUrl);
if (value === "policies") router.push(policiesUrl);
setActiveTab(value);
};

return (
<Tabs value={activeTab} onValueChange={onTabChange} className="w-full">
<TabsList className="mb-4">
<TabsTrigger value="overview">Overview</TabsTrigger>
<TabsTrigger value="deployments">Deployments</TabsTrigger>
<TabsTrigger value="resources">Resources</TabsTrigger>
<TabsTrigger value="policies">Policies</TabsTrigger>
</TabsList>
</Tabs>
);
};
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
import { DeploymentsCard } from "~/app/[workspaceSlug]/(app)/_components/deployments/Card";

export default async function DeploymentsPage(props: {
params: Promise<{ environmentId: string }>;
}) {
const { environmentId } = await props.params;

return (
<div className="container m-8 mx-auto">
<DeploymentsCard environmentId={environmentId} />
</div>
);
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
import { redirect } from "next/navigation";

export default function PoliciesPage(props: {
params: {
workspaceSlug: string;
systemSlug: string;
environmentId: string;
};
}) {
return redirect(
`/${props.params.workspaceSlug}/systems/${props.params.systemSlug}/environments/${props.params.environmentId}/policies/approval`,
);
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
import { notFound } from "next/navigation";

import { api } from "~/trpc/server";
import { EditFilterForm } from "./EditFilterForm";

export default async function ResourcesPage(props: {
params: Promise<{ workspaceSlug: string; environmentId: string }>;
}) {
const params = await props.params;
const workspace = await api.workspace.bySlug(params.workspaceSlug);
if (workspace == null) notFound();

const environment = await api.environment.byId(params.environmentId);
if (environment == null) notFound();

return (
<div className="container m-8 mx-auto">
<EditFilterForm environment={environment} workspaceId={workspace.id} />
</div>
);
}
Loading
Loading