Adds routing stubs for Applications

This commit is contained in:
Alex Corey 2020-06-08 11:55:21 -04:00
parent feb9c5700c
commit 0df4047d3d
15 changed files with 135 additions and 29 deletions

View File

@ -1,6 +1,6 @@
import { t } from '@lingui/macro';
import Applications from './screens/Application';
import Applications from './screens/Applications';
import Credentials from './screens/Credential';
import CredentialTypes from './screens/CredentialType';
import Dashboard from './screens/Dashboard';
@ -138,7 +138,7 @@ function getRouteConfig(i18n) {
screen: InstanceGroups,
},
{
title: i18n._(t`Integrations`),
title: i18n._(t`Applications`),
path: '/applications',
screen: Applications,
},

View File

@ -1,26 +0,0 @@
import React, { Component, Fragment } from 'react';
import { withI18n } from '@lingui/react';
import { t } from '@lingui/macro';
import {
PageSection,
PageSectionVariants,
Title,
} from '@patternfly/react-core';
class Applications extends Component {
render() {
const { i18n } = this.props;
const { light } = PageSectionVariants;
return (
<Fragment>
<PageSection variant={light} className="pf-m-condensed">
<Title size="2xl">{i18n._(t`Applications`)}</Title>
</PageSection>
<PageSection />
</Fragment>
);
}
}
export default withI18n()(Applications);

View File

@ -0,0 +1,26 @@
import React from 'react';
import { Route, Switch, Redirect } from 'react-router-dom';
import ApplicationEdit from '../ApplicationEdit';
import ApplicationDetails from '../ApplicationDetails';
function Application() {
return (
<>
<Switch>
<Redirect
from="/applications/:id"
to="/applications/:id/details"
exact
/>
<Route path="/applications/:id/edit">
<ApplicationEdit />
</Route>
<Route path="/applications/:id/details">
<ApplicationDetails />
</Route>
</Switch>
</>
);
}
export default Application;

View File

@ -0,0 +1 @@
export { default } from './Application';

View File

@ -0,0 +1,15 @@
import React from 'react';
import { Card, PageSection } from '@patternfly/react-core';
function ApplicatonAdd() {
return (
<>
<PageSection>
<Card>
<div>Applications Add</div>
</Card>
</PageSection>
</>
);
}
export default ApplicatonAdd;

View File

@ -0,0 +1 @@
export { default } from './ApplicationAdd';

View File

@ -0,0 +1,11 @@
import React from 'react';
import { Card, PageSection } from '@patternfly/react-core';
function ApplicationDetails() {
return (
<PageSection>
<Card>Application Details</Card>
</PageSection>
);
}
export default ApplicationDetails;

View File

@ -0,0 +1 @@
export { default } from './ApplicationDetails';

View File

@ -0,0 +1,11 @@
import React from 'react';
import { Card, PageSection } from '@patternfly/react-core';
function ApplicationEdit() {
return (
<PageSection>
<Card>Application Edit</Card>
</PageSection>
);
}
export default ApplicationEdit;

View File

@ -0,0 +1 @@
export { default } from './ApplicationEdit';

View File

@ -0,0 +1,49 @@
import React, { useState, useCallback } from 'react';
import { withI18n } from '@lingui/react';
import { t } from '@lingui/macro';
import { Route, Switch } from 'react-router-dom';
import ApplicationsList from './ApplicationsList';
import ApplicationAdd from './ApplicationAdd';
import Application from './Application';
import Breadcrumbs from '../../components/Breadcrumbs';
function Applications({ i18n }) {
const [breadcrumbConfig, setBreadcrumbConfig] = useState({
'/applications': i18n._(t`Applications`),
'/applications/add': i18n._(t`Create New Application`),
});
const buildBreadcrumbConfig = useCallback(
application => {
if (!application) {
return;
}
setBreadcrumbConfig({
'/applications': i18n._(t`Applications`),
'/applications/add': i18n._(t`Create New Application`),
[`/application/${application.id}`]: `${application.name}`,
});
},
[i18n]
);
return (
<>
<Breadcrumbs breadcrumbConfig={breadcrumbConfig} />
<Switch>
<Route path="/applications/add">
<ApplicationAdd />
</Route>
<Route path="/applications/:id">
<Application setBreadcrumb={buildBreadcrumbConfig} />
</Route>
<Route path="/applications">
<ApplicationsList />
</Route>
</Switch>
</>
);
}
export default withI18n()(Applications);

View File

@ -21,7 +21,7 @@ describe('<Applications />', () => {
test('initially renders without crashing', () => {
expect(pageWrapper.length).toBe(1);
expect(pageSections.length).toBe(2);
expect(pageSections.length).toBe(1);
expect(title.length).toBe(1);
expect(title.props().size).toBe('2xl');
expect(pageSections.first().props().variant).toBe('light');

View File

@ -0,0 +1,15 @@
import React from 'react';
import { Card, PageSection } from '@patternfly/react-core';
function ApplicationsList() {
return (
<>
<PageSection>
<Card>
<div>Applications List</div>
</Card>
</PageSection>
</>
);
}
export default ApplicationsList;

View File

@ -0,0 +1 @@
export { default } from './ApplicationsList';