diff --git a/src/Api/api.ts b/src/Api/api.ts index 89654f9c5..c54f0837b 100644 --- a/src/Api/api.ts +++ b/src/Api/api.ts @@ -38,6 +38,8 @@ export enum Endpoint { adoptionRate = '/api/tower-analytics/v1/adoption_rate/', ROI = '/api/tower-analytics/v1/roi_templates/', costEffortROI = '/api/tower-analytics/v1/roi_cost_effort_data/', + // eslint-disable-next-line @typescript-eslint/no-duplicate-enum-values + deployment = '/api/tower-analytics/v1/aap_clusters/', plans = '/api/tower-analytics/v1/plans/', plan = '/api/tower-analytics/v1/plan/', sendEmail = 'api/tower-analytics/v1/send_email/', @@ -179,6 +181,9 @@ export const readOrgOptions = (params: Params): Promise => export const readHostExplorerOptions = (params: Params): Promise => post(Endpoint.hostExplorerOptions, params); +export const readDeployment = (id: number): Promise => + get(`${Endpoint.deployment}${id}/`); + export const readPlans = (params: ParamsWithPagination): Promise => postWithPagination(Endpoint.plans, params); diff --git a/src/Containers/ClusterLists/ClusterDetails.js b/src/Containers/ClusterLists/ClusterDetails.js new file mode 100644 index 000000000..ab0c08d03 --- /dev/null +++ b/src/Containers/ClusterLists/ClusterDetails.js @@ -0,0 +1,88 @@ +import { DescriptionList } from '@patternfly/react-core/dist/dynamic/components/DescriptionList'; +import { PageSection } from '@patternfly/react-core/dist/dynamic/components/Page'; +import PropTypes from 'prop-types'; +import React from 'react'; +// import React, { useEffect } from 'react'; +import styled from 'styled-components'; +// import { readDeployment } from '../../Api'; +// import ApiErrorState from '../../Components/ApiStatus/ApiErrorState'; +// import useRequest from '../../Utilities/useRequest'; +import { PageDetail } from '../../framework/PageDetails/PageDetail'; + +const ClusterDetails = (id) => { + const orientation = 'vertical'; + const numberOfColumns = 'multiple'; + const disablePadding = false; + const isCompact = false; + + // Makes an API call to the deployments endpoint with the specific id passed + // const { + // result: { deployment }, + // isSuccess: dataSuccess, + // error: dataError, + // request: fetchEndpoints, + // } = useRequest(readDeployment, { + // deployment: {}, + // rbac: { + // perms: {}, + // }, + // }); + + // useEffect(() => { + // fetchEndpoints(id.id); + // }, [id]); + + return ( + <> + {/* {dataError && } */} + {/* {dataSuccess && ( */} + + + {id.id} + + + {/* )} */} + + ); +}; + +const PageSectionStyled = styled(PageSection)` + background-color: transparent; +`; + +ClusterDetails.propTypes = { + id: PropTypes.number.isRequired, +}; + +export default ClusterDetails; diff --git a/src/Containers/ClusterLists/ClusterPage.js b/src/Containers/ClusterLists/ClusterPage.js new file mode 100644 index 000000000..4ca99f127 --- /dev/null +++ b/src/Containers/ClusterLists/ClusterPage.js @@ -0,0 +1,47 @@ +import { Tab } from '@patternfly/react-core/dist/dynamic/components/Tabs'; +import { TabTitleText } from '@patternfly/react-core/dist/dynamic/components/Tabs'; +import { Tabs } from '@patternfly/react-core/dist/dynamic/components/Tabs'; +import { CaretLeftIcon } from '@patternfly/react-icons'; +import React from 'react'; +import { useLocation, useParams } from 'react-router-dom'; +import { PageHeader } from '../../framework/PageHeader'; +import ClusterDetails from './ClusterDetails'; + +const ClusterPage = () => { + const { id } = useParams(); + const location = useLocation(); + + const [activeTabKey, setActiveTabKey] = React.useState(1); + const handleTabClick = (event, tabIndex) => { + setActiveTabKey(tabIndex); + }; + return ( +
+ + + + + {'Back to Clusters List'} + + } + href={location.pathname.slice(0, location.pathname.lastIndexOf('/'))} + /> + Details} + aria-label='Default content - users' + > + + + Resources}> + {'Resources'} + + +
+ ); +}; + +export default ClusterPage; diff --git a/src/Containers/ClusterLists/ClustersList.js b/src/Containers/ClusterLists/ClustersList.js index 8059e2534..1b05d84c3 100644 --- a/src/Containers/ClusterLists/ClustersList.js +++ b/src/Containers/ClusterLists/ClustersList.js @@ -7,6 +7,7 @@ import MinusCircleIcon from '@patternfly/react-icons/dist/dynamic/icons/minus-ci import PlusCircleIcon from '@patternfly/react-icons/dist/dynamic/icons/plus-circle-icon'; import PropTypes from 'prop-types'; import React, { useEffect } from 'react'; +import { Link } from 'react-router-dom'; import { readJobExplorer, readJobExplorerOptions } from '../../Api'; import ApiErrorState from '../../Components/ApiStatus/ApiErrorState'; import JobStatus from '../../Components/JobStatus'; @@ -74,15 +75,7 @@ const ClustersList = ({ activeClusters }) => { type: 'text', cell: (item) => , value: (item) => { - return ( - - {`${item.id.id} - ${item.id.template_name}`} - - ); + return {`${item.id.template_name}`}; }, }, { diff --git a/src/Routes.tsx b/src/Routes.tsx index f6b1c3f4e..a12323768 100644 --- a/src/Routes.tsx +++ b/src/Routes.tsx @@ -45,6 +45,9 @@ const components = { [Paths.clusterList]: asyncComponent( () => import('./Containers/ClusterLists/ClusterListsPage') ), + [Paths.clusterListDetails]: asyncComponent( + () => import('./Containers/ClusterLists/ClusterPage') + ), }; export const AnalyticsRoutes: FunctionComponent> = () => { diff --git a/src/paths.ts b/src/paths.ts index d8da78951..8a6eb09a8 100644 --- a/src/paths.ts +++ b/src/paths.ts @@ -13,5 +13,6 @@ export const Paths = { reportsDetails: '/reports/:slug', reportsAutomationCalculator: '/reports/automation_calculator', clusterList: '/cluster-list', + clusterListDetails: '/cluster-list/:id', }; export const prefixPath = '/ansible/automation-analytics/';