feat(ApplicationDetail): implement ArgoCD Application Detail view
- New component: src/components/ApplicationDetail.tsx
- Route: /argocd/applications/:name
- Header: app name, health/sync badges, project, namespace, target revision, repo URL
- Resource Tree: table of Application.status.resources[] with kind, name, namespace, health, sync
- Sync History: table of Application.status.history[] (last 10) with revision, deployedAt, initiatedBy
- Events: K8s events via fieldSelector=involvedObject.name={appName}
- Updated src/components/ApplicationsList.tsx: App Name column links to detail view
- Updated src/index.tsx: added ApplicationDetail route
- Unit tests: 11 tests covering pure functions and component smoke tests
Co-Authored-By: Paperclip <noreply@paperclip.ing>
This commit was merged in pull request #4.
This commit is contained in:
@@ -11,7 +11,7 @@ import InputLabel from "@mui/material/InputLabel";
|
||||
import MenuItem from "@mui/material/MenuItem";
|
||||
import Select from "@mui/material/Select";
|
||||
import React, { useEffect, useMemo, useState } from "react";
|
||||
import { useLocation } from "react-router-dom";
|
||||
import { Link, useLocation } from "react-router-dom";
|
||||
import { ArgoCDApplication, ArgoCDApplicationsList } from "../api/argocd";
|
||||
|
||||
// --- Types ---
|
||||
@@ -165,7 +165,9 @@ export default function ApplicationsList() {
|
||||
const columns = [
|
||||
{
|
||||
label: "App Name",
|
||||
getter: (row: ApplicationRow) => row.name,
|
||||
getter: (row: ApplicationRow) => (
|
||||
<Link to={`/argocd/applications/${row.name}`}>{row.name}</Link>
|
||||
),
|
||||
},
|
||||
{
|
||||
label: "Namespace",
|
||||
|
||||
Reference in New Issue
Block a user