mirror of
https://github.com/yldio/copilot.git
synced 2024-09-21 13:53:51 +03:00
51b0744bcc
Setting up example routing Adding routing spike Topology proof of concept Add breadcrumb Add sections menu Add App wrapper Rebase and remove menu placeholder Sort out services routes Add all exisiting routes Linting Tests Remove bold font Change services topology and list pathnames Remove console.logs Rebuild routing for clarity and flatter dom structure Simplify strings and /create instead of /~create for new billing Rebuild routing for clarity and flatter dom structure
158 lines
4.9 KiB
JavaScript
158 lines
4.9 KiB
JavaScript
import React from 'react';
|
|
import {
|
|
BrowserRouter,
|
|
Redirect,
|
|
Route,
|
|
Switch
|
|
} from 'react-router-dom';
|
|
|
|
import App from '@containers/app';
|
|
import Header from '@containers/header';
|
|
|
|
import {
|
|
Breadcrumb,
|
|
Menu,
|
|
Org
|
|
} from '@containers/navigation';
|
|
|
|
import {
|
|
OrgPeople,
|
|
OrgSettings
|
|
} from '@containers/org';
|
|
|
|
import {
|
|
ProjectsList,
|
|
ProjectsNewProject,
|
|
ProjectsNewProjectBilling,
|
|
ProjectsNewProjectNewBilling
|
|
} from '@containers/projects';
|
|
|
|
import {
|
|
ProjectFeed,
|
|
ProjectInstances,
|
|
ProjectManifest,
|
|
// ProjectPeople,
|
|
ProjectRollback,
|
|
ProjectSettings
|
|
} from '@containers/project';
|
|
|
|
import {
|
|
ServicesTopology,
|
|
ServicesList,
|
|
ServicesView
|
|
} from '@containers/services';
|
|
|
|
import {
|
|
ServiceActivityFeed,
|
|
ServiceFirewall,
|
|
ServiceInstances,
|
|
ServiceMetrics,
|
|
ServiceNetworks,
|
|
ServiceManifest,
|
|
ServiceSummary,
|
|
ServiceMetadata
|
|
} from '@containers/service';
|
|
|
|
const orgRedirect = (p) => (
|
|
<Redirect to={`${p.location.pathname}/projects`} />
|
|
);
|
|
|
|
const projectRedirect = (p) => (
|
|
<Redirect to={`${p.location.pathname}/services-topology`} />
|
|
);
|
|
|
|
const servicesRedirect = (p) => (
|
|
<Redirect to={`${p.location.pathname}-topology`} />
|
|
);
|
|
|
|
const serviceRedirect = (p) => (
|
|
<Redirect to={`${p.location.pathname}/summary`} />
|
|
);
|
|
|
|
const emptyRoute = (p) => {
|
|
return null;
|
|
};
|
|
|
|
const orgPath = '/:org';
|
|
const projectPath = `${orgPath}/projects/:project`;
|
|
const servicePath = `${projectPath}/services/:service`;
|
|
|
|
/* eslint-disable */
|
|
const Router = (
|
|
<BrowserRouter>
|
|
<App>
|
|
<Route path='/' component={Header} />
|
|
|
|
{/* Navigation */}
|
|
<Route path={orgPath} component={Org} />
|
|
<Switch>
|
|
<Route path={`${orgPath}/projects/~create`} render={emptyRoute} />
|
|
|
|
<Route path={servicePath} component={Breadcrumb} />
|
|
<Route path={projectPath} component={Breadcrumb} />
|
|
<Route path={orgPath} component={Breadcrumb} />
|
|
</Switch>
|
|
<Switch>
|
|
<Route path={`${orgPath}/projects/~create`} render={emptyRoute} />
|
|
|
|
<Route path={servicePath} component={Menu} />
|
|
<Route path={projectPath} component={Menu} />
|
|
<Route path={orgPath} component={Menu} />
|
|
</Switch>
|
|
|
|
{/* Projects */}
|
|
<Route path={orgPath} exact render={orgRedirect} />
|
|
<Route path={`${orgPath}/projects`} exact component={ProjectsList} />
|
|
<Switch>
|
|
{/* Redirect to services only for project root */}
|
|
{/* Projects - New Project */}
|
|
<Route path={`${orgPath}/projects/~create/billing/create`} component={ProjectsNewProjectNewBilling} />
|
|
<Route path={`${orgPath}/projects/~create/billing`} component={ProjectsNewProjectBilling} />
|
|
<Route path={`${orgPath}/projects/~create`} component={ProjectsNewProject} />
|
|
{/* Project */}
|
|
<Route path={projectPath} exact render={projectRedirect} />
|
|
</Switch>
|
|
|
|
{/* Project / Feed */}
|
|
<Route path={`${projectPath}/project-feed`} component={ProjectFeed} />
|
|
{/* Project / Services */}
|
|
<Route path={`${projectPath}/services`} render={servicesRedirect} />
|
|
<Route path={`${projectPath}/services-topology`} exact component={ServicesView} />
|
|
<Route path={`${projectPath}/services-topology`} exact component={ServicesTopology} />
|
|
<Route path={`${projectPath}/services-list`} exact component={ServicesView} />
|
|
<Route path={`${projectPath}/services-list`} exact component={ServicesList} />
|
|
{/* Project / Instances */}
|
|
<Route path={`${projectPath}/instances`} component={ProjectInstances} />
|
|
{/* Project / Rollback */}
|
|
<Route path={`${projectPath}/rollback`} component={ProjectRollback} />
|
|
{/* Project / Manifest */}
|
|
<Route path={`${projectPath}/manifest`} component={ProjectManifest} />
|
|
{/* Project / Settings */}
|
|
<Route path={`${projectPath}/settings`} component={ProjectSettings} />
|
|
|
|
{/* Service */}
|
|
{/* Redirect to services only for service root */}
|
|
<Route path={servicePath} render={serviceRedirect} />
|
|
<Route path={`${servicePath}/activity-feed`} component={ServiceActivityFeed} />
|
|
<Route path={`${servicePath}/firewall`} component={ServiceFirewall} />
|
|
{/* Instances */}
|
|
<Route path={`${servicePath}/instances`} component={ServiceInstances} />
|
|
{/* Metrics */}
|
|
<Route path={`${servicePath}/metrics`} component={ServiceMetrics} />
|
|
<Route path={`${servicePath}/networks`} component={ServiceNetworks} />
|
|
<Route path={`${servicePath}/service-manifest`} component={ServiceManifest} />
|
|
<Route path={`${servicePath}/summary`} component={ServiceSummary} />
|
|
<Route path={`${servicePath}/tags-metadata`} component={ServiceMetadata} />
|
|
|
|
{/* People - TODO This route is broken */}
|
|
<Route path={`${orgPath}/people`} exact component={OrgPeople} />
|
|
|
|
{/* Settings */}
|
|
<Route path={`${orgPath}/settings`} exact component={OrgSettings} />
|
|
|
|
</App>
|
|
</BrowserRouter>
|
|
);
|
|
/* eslint-enable */
|
|
export default Router;
|