1
0
mirror of https://github.com/yldio/copilot.git synced 2024-09-21 13:53:51 +03:00
copilot/frontend/src/routing.js
JUDIT GRESKOVITS 51b0744bcc Adding alt router
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
2017-04-05 15:38:03 +01:00

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;