Skip to content

Commit 3d288e8

Browse files
minor fixes
1 parent 005e0c4 commit 3d288e8

File tree

5 files changed

+38
-29
lines changed

5 files changed

+38
-29
lines changed
+3-3
Original file line numberDiff line numberDiff line change
@@ -3,9 +3,9 @@
33
import { Card, CardContent, CardDescription, CardHeader, CardTitle } from "@/components/ui/card";
44
import { Tables } from "@/lib/database.types";
55
import { motion } from "framer-motion";
6-
import { RunsTable } from "./RunsTable";
6+
import { AllRunsTable } from "./AllRunsTable";
77

8-
export default function RunsDetails({ runs, project }: { runs: Tables<'digger_runs'>[], project: Tables<'projects'> }) {
8+
export default function AllRunsDetails({ runs, project }: { runs: Tables<'digger_runs'>[], project: Tables<'projects'> }) {
99
return (
1010
<motion.div
1111
initial={{ opacity: 0, y: 10 }}
@@ -32,7 +32,7 @@ export default function RunsDetails({ runs, project }: { runs: Tables<'digger_ru
3232
animate={{ opacity: 1 }}
3333
transition={{ duration: 0.15, delay: 0.2 }}
3434
>
35-
<RunsTable runs={runs} projectSlug={project.slug} />
35+
<AllRunsTable runs={runs} projectSlug={project.slug} />
3636
</motion.div>
3737
</CardContent>
3838
</Card>
+16-6
Original file line numberDiff line numberDiff line change
@@ -4,26 +4,36 @@ import { AnimatePresence, motion } from "framer-motion";
44
import { Activity } from "lucide-react";
55
import moment from "moment";
66
import Link from "next/link";
7+
import { runStageEnum } from "./enums";
78

89
export type StatusColor = {
910
[key: string]: string;
1011
};
1112

13+
const statusOrder = [
14+
runStageEnum.running,
15+
runStageEnum.queued,
16+
runStageEnum.pending_approval,
17+
runStageEnum.pending_apply,
18+
runStageEnum.succeeded,
19+
runStageEnum.rejected,
20+
runStageEnum.failed
21+
];
22+
1223
export const statusColors: StatusColor = {
1324
queued: 'bg-yellow-200/50 text-yellow-800 dark:bg-yellow-900/50 dark:text-yellow-200',
14-
'pending_approval': 'bg-blue-200/50 text-blue-800 dark:bg-blue-900/50 dark:text-blue-200',
25+
pending_approval: 'bg-blue-200/50 text-blue-800 dark:bg-blue-900/50 dark:text-blue-200',
1526
running: 'bg-purple-200/50 text-purple-800 dark:bg-purple-900/50 dark:text-purple-200',
16-
approved: 'bg-green-200/50 text-green-800 dark:bg-green-900/50 dark:text-green-200',
27+
pending_apply: 'bg-green-200/50 text-green-800 dark:bg-green-900/50 dark:text-green-200',
1728
succeeded: 'bg-green-200/50 text-green-800 dark:bg-green-900/50 dark:text-green-200',
1829
failed: 'bg-red-200/50 text-red-800 dark:bg-red-900/50 dark:text-red-200',
1930
};
2031

21-
const statusOrder = ['running', 'queued', 'pending_approval', 'approved', 'succeeded', 'failed'];
2232

23-
export const RunsTable = ({ runs, projectSlug }: { runs: Tables<'digger_runs'>[], projectSlug: string }) => {
33+
export const AllRunsTable = ({ runs, projectSlug }: { runs: Tables<'digger_runs'>[], projectSlug: string }) => {
2434
const sortedRuns = [...runs].sort((a, b) => {
25-
const statusA = statusOrder.indexOf(a.status.toLowerCase());
26-
const statusB = statusOrder.indexOf(b.status.toLowerCase());
35+
const statusA = statusOrder.indexOf(a.status.toLowerCase() as runStageEnum);
36+
const statusB = statusOrder.indexOf(b.status.toLowerCase() as runStageEnum);
2737
if (statusA !== statusB) return statusA - statusB;
2838
return moment(b.created_at).valueOf() - moment(a.created_at).valueOf();
2939
});
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
export enum runStageEnum {
2+
running = 'running',
3+
queued = 'queued',
4+
pending_approval = 'pending_approval',
5+
pending_apply = 'pending_apply',
6+
succeeded = 'succeeded',
7+
rejected = 'rejected',
8+
failed = 'failed',
9+
}

src/app/(dynamic-pages)/(authenticated-pages)/(application-pages)/project/[projectSlug]/(specific-project-pages)/page.tsx

+2-2
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ export async function generateMetadata({
2424

2525

2626
import { getRunsByProjectId } from "@/data/user/runs";
27-
import RunDetails from "./RunDetails";
27+
import AllRunsDetails from "./AllRunsDetails";
2828

2929
// const dummyRuns: Run[] = [
3030
// {
@@ -96,7 +96,7 @@ export default async function ProjectPage({ params }: { params: unknown }) {
9696

9797
return (
9898
<div className="flex flex-col space-y-4 max-w-5xl mt-2">
99-
<RunDetails
99+
<AllRunsDetails
100100
project={project}
101101
runs={runs}
102102
/>

src/app/(dynamic-pages)/(authenticated-pages)/(application-pages)/project/[projectSlug]/runs/[runId]/ProjectRunDetails.tsx

+8-18
Original file line numberDiff line numberDiff line change
@@ -13,9 +13,7 @@ import { CheckCircle2, Clock, GitPullRequest, Loader2, Play, XCircle } from 'luc
1313
import Image from 'next/image';
1414
import { useRouter } from 'next/navigation';
1515
import React, { useEffect, useState } from 'react';
16-
import { statusColors } from "../../(specific-project-pages)/RunsTable";
17-
18-
type RunStage = 'pending_approval' | 'pending_apply' | 'rejected' | 'applied';
16+
import { statusColors } from "../../(specific-project-pages)/AllRunsTable";
1917

2018

2119
const logEntries = [
@@ -75,7 +73,6 @@ const logEntries = [
7573
{ time: "2024-07-27T14:33:29Z", author: "Siddharth Ponnapalli", title: "Configured EC2 instance user data for automation" }
7674
];
7775

78-
7976
function RenderContent({
8077
activeStage,
8178
run,
@@ -128,12 +125,11 @@ export const ProjectRunDetails: React.FC<{
128125
}> = ({ run, loggedInUser, isUserOrgAdmin }) => {
129126
const router = useRouter();
130127
const [activeStage, setActiveStage] = useState<'plan' | 'apply'>('plan');
131-
const [applyLogs, setApplyLogs] = useState<string[]>([]);
132128

133129
useEffect(() => {
134130
if (run.status === 'pending_apply') {
135131
const timer = setTimeout(async () => {
136-
await changeRunStatus(run.id, 'applied');
132+
await changeRunStatus(run.id, 'succeeded');
137133
setActiveStage('apply');
138134
router.refresh();
139135
}, 5000);
@@ -142,12 +138,6 @@ export const ProjectRunDetails: React.FC<{
142138
}
143139
}, [run.status, run.id, router]);
144140

145-
useEffect(() => {
146-
if (run.apply_logs) {
147-
setApplyLogs(run.apply_logs.split('\n'));
148-
}
149-
}, [run.apply_logs]);
150-
151141
const { mutate: approveMutation, isLoading: isApproving } = useSAToastMutation(
152142
async () => await approveRun(run.id, loggedInUser.id),
153143
{
@@ -199,7 +189,7 @@ export const ProjectRunDetails: React.FC<{
199189
</CardContent>
200190

201191
<div className="space-y-2 flex-grow pt-8">
202-
<RunStage
192+
<RunStageSidebarItem
203193
icon={<GitPullRequest />}
204194
name="Plan"
205195
isActive={activeStage === 'plan'}
@@ -221,11 +211,11 @@ export const ProjectRunDetails: React.FC<{
221211
</CardContent>
222212
</Card>
223213
)}
224-
<RunStage
214+
<RunStageSidebarItem
225215
icon={<Play />}
226216
name="Apply"
227217
isActive={activeStage === 'apply'}
228-
isComplete={run.status === 'applied'}
218+
isComplete={run.status === 'succeeded'}
229219
isDisabled={run.status === 'pending_approval' || run.status === 'rejected'}
230220
onClick={() => setActiveStage('apply')}
231221
/>
@@ -242,13 +232,13 @@ export const ProjectRunDetails: React.FC<{
242232
</motion.div>
243233
)}
244234
</div>
245-
{run.is_approved && run.status !== 'rejected' || 'pending_approval' && (
235+
{run.status === 'succeeded' && (
246236
<T.Small className="flex items-center"><CheckCircle2 className="size-5 text-green-500 mr-2" /> Approved by: </T.Small>
247237
)}
248238
{run.status === 'rejected' && (
249239
<p className="flex items-center"><XCircle className="text-red-500 mr-2" /> Rejected by: </p>
250240
)}
251-
{(run.status === 'pending_apply' || run.status === 'applied' || run.status === 'rejected') && (
241+
{(run.status === 'succeeded' || run.status === 'rejected') && (
252242
<motion.div
253243
className="pt-4 mt-auto"
254244
initial={{ opacity: 0, y: 50 }}
@@ -312,7 +302,7 @@ export const ProjectRunDetails: React.FC<{
312302
);
313303
};
314304

315-
const RunStage: React.FC<{
305+
const RunStageSidebarItem: React.FC<{
316306
icon: React.ReactNode,
317307
name: string,
318308
isActive: boolean,

0 commit comments

Comments
 (0)