1
0
Fork 0
mirror of https://github.com/portainer/portainer.git synced 2025-08-07 14:55:27 +02:00

feat(edge/jobs): migrate item view to react [EE-2220] (#11887)
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

This commit is contained in:
Chaim Lev-Ari 2024-06-06 21:07:39 +03:00 committed by GitHub
parent 62c2bf86aa
commit eb6d251a73
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
44 changed files with 778 additions and 886 deletions

View file

@ -0,0 +1,75 @@
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>
</>
);
}