1
0
Fork 0
mirror of https://github.com/portainer/portainer.git synced 2025-07-25 08:19:40 +02:00
portainer/app/react/edge/edge-jobs/ItemView/ItemView.tsx
Chaim Lev-Ari eb6d251a73
Some checks failed
ci / build_images (map[arch:amd64 platform:linux version:]) (push) Has been cancelled
ci / build_images (map[arch:amd64 platform:windows version:1809]) (push) Has been cancelled
ci / build_images (map[arch:amd64 platform:windows version:ltsc2022]) (push) Has been cancelled
ci / build_images (map[arch:arm platform:linux version:]) (push) Has been cancelled
ci / build_images (map[arch:arm64 platform:linux version:]) (push) Has been cancelled
ci / build_images (map[arch:ppc64le platform:linux version:]) (push) Has been cancelled
ci / build_images (map[arch:s390x platform:linux version:]) (push) Has been cancelled
/ triage (push) Has been cancelled
Lint / Run linters (push) Has been cancelled
Test / test-client (push) Has been cancelled
Test / test-server (map[arch:amd64 platform:linux]) (push) Has been cancelled
Test / test-server (map[arch:amd64 platform:windows version:1809]) (push) Has been cancelled
Test / test-server (map[arch:amd64 platform:windows version:ltsc2022]) (push) Has been cancelled
Test / test-server (map[arch:arm64 platform:linux]) (push) Has been cancelled
ci / build_manifests (push) Has been cancelled
feat(edge/jobs): migrate item view to react [EE-2220] (#11887)
2024-06-06 21:07:39 +03:00

75 lines
1.7 KiB
TypeScript

import { ListIcon, WrenchIcon } from 'lucide-react';
import { useIdParam } from '@/react/hooks/useIdParam';
import { useParamState } from '@/react/hooks/useParamState';
import { PageHeader } from '@@/PageHeader';
import { Widget } from '@@/Widget';
import { NavTabs } from '@@/NavTabs';
import { useEdgeJob } from '../queries/useEdgeJob';
import { UpdateEdgeJobForm } from './UpdateEdgeJobForm/UpdateEdgeJobForm';
import { ResultsDatatable } from './ResultsDatatable/ResultsDatatable';
const tabs = [
{
id: 0,
label: 'Configuration',
icon: WrenchIcon,
},
{
id: 1,
label: 'Results',
icon: ListIcon,
},
] as const;
export function ItemView() {
const id = useIdParam();
const [tabId = 0, setTabId] = useParamState('tab', (param) =>
param ? parseInt(param, 10) : 0
);
const edgeJobQuery = useEdgeJob(id);
if (!edgeJobQuery.data) {
return null;
}
const edgeJob = edgeJobQuery.data;
return (
<>
<PageHeader
title="Edge job details"
breadcrumbs={[{ label: 'Edge jobs', link: 'edge.jobs' }, edgeJob.Name]}
/>
<div className="row">
<div className="col-sm-12">
<Widget>
<Widget.Body>
<NavTabs
selectedId={tabId}
onSelect={(id) => {
setTabId(id);
}}
options={tabs}
/>
{tabId === tabs[0].id && <UpdateEdgeJobForm edgeJob={edgeJob} />}
{tabId === tabs[1].id && (
<div className="mt-4">
<ResultsDatatable jobId={edgeJob.Id} />
</div>
)}
</Widget.Body>
</Widget>
</div>
</div>
</>
);
}